Python利用字典和列表實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)
本文將利用Python中的字典和列表實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)
文件的存放格式采用的是python自帶的pickle模塊,需要新建course.txt和student.txt供程序讀寫。
下面是示例代碼
import pickle # 從文件中讀取學(xué)生信息并返回 def readStudent(): with open("student.txt",'rb') as f: try: return pickle.load(f) #讀取失敗,說明讀取的文件為空,返回空列表即可 except EOFError: return [] # 保存學(xué)生信息student_list到文件student.txt中 def saveStudent(student_list): with open("student.txt",'wb') as f: pickle.dump(student_list, f) # 增加學(xué)生信息 def addStudent(student_list): id = input("請(qǐng)輸入要增加的學(xué)生學(xué)號(hào):") name = input("請(qǐng)輸入要增加的學(xué)生姓名:") sex = input("請(qǐng)輸入要增加的學(xué)生性別:") specialty = input("請(qǐng)輸入要增加的學(xué)生專業(yè)班級(jí):") # 把這4個(gè)數(shù)據(jù)裝入字典student中 student = {"學(xué)號(hào)":id, "姓名":name, "性別":sex, "專業(yè)班級(jí)":specialty} # 把字典student添加到列表student_list中 student_list.append(student) # 刪除學(xué)生信息 def deleteStudent(student_list): id = input("請(qǐng)輸入要?jiǎng)h除的學(xué)生學(xué)號(hào):") for i in range(0, len(student_list)): # student_list[i]是一個(gè)字典 if student_list[i]["學(xué)號(hào)"] == id: # 刪除student_list中的第i個(gè)字典 student_list.pop(i) print("刪除成功!") return # 結(jié)束函數(shù) print("刪除失敗,未查詢到該學(xué)生。") # 修改學(xué)生信息 def modifyStudent(student_list): id = input("請(qǐng)輸入要修改的學(xué)生學(xué)號(hào):") for i in range(0, len(student_list)): if student_list[i]["學(xué)號(hào)"] == id: id = input("請(qǐng)輸入修改后的學(xué)生學(xué)號(hào):") name = input("請(qǐng)輸入修改后的姓名:") sex = input("請(qǐng)輸入修改后的性別:") specialty = input("請(qǐng)輸入修改后的專業(yè)班級(jí):") # 把這4個(gè)數(shù)據(jù)裝入字典student中 student = {"學(xué)號(hào)":id, "姓名":name, "性別":sex, "專業(yè)班級(jí)":specialty} # 用student替換student_list中的第i個(gè)字典 student_list[i] = student print("修改成功!") return # 結(jié)束函數(shù) print("修改失敗,未查詢到該學(xué)生。") # 顯示所有學(xué)生信息 def showStudent(student_list): print("學(xué)號(hào)\t\t姓名\t\t性別\t\t專業(yè)班級(jí)") for student in student_list: print("%s\t\t%s\t\t%s\t\t%s" %(student["學(xué)號(hào)"], student["姓名"], student["性別"], student["專業(yè)班級(jí)"])) # 從文件中讀取學(xué)生成績(jī)信息 def readCourse(): with open("course.txt",'rb') as f: try: return pickle.load(f) #讀取失敗,說明讀取的文件為空,返回空列表即可 except EOFError: return [] # 保存學(xué)生成績(jī)信息course_list到文件course.txt中 def saveCourse(course_list): with open("course.txt",'wb') as f: pickle.dump(course_list, f) # 增加學(xué)生成績(jī)信息 def addCourse(course_list): id = input("請(qǐng)輸入要增加的學(xué)生學(xué)號(hào):") english = int(input("請(qǐng)輸入該學(xué)生的英語成績(jī):")) math = int(input("請(qǐng)輸入該學(xué)生的數(shù)學(xué)成績(jī):")) computer = int(input("請(qǐng)輸入該學(xué)生的計(jì)算機(jī)成績(jī):")) chemistry = int(input("請(qǐng)輸入該學(xué)生的化學(xué)成績(jī):")) PE = int(input("請(qǐng)輸入該學(xué)生的體育成績(jī):")) # 把這6個(gè)數(shù)據(jù)裝入字典course中 course = {"學(xué)號(hào)":id, "英語":english, "數(shù)學(xué)":math, "計(jì)算機(jī)":computer, "化學(xué)":chemistry, "體育":PE} # 把字典course添加到列表course_list中 course_list.append(course) # 刪除學(xué)生成績(jī)信息 def deleteCourse(course_list): id = input("請(qǐng)輸入要?jiǎng)h除的學(xué)生學(xué)號(hào):") for i in range(0, len(course_list)): # course_list[i]是一個(gè)字典 if course_list[i]["學(xué)號(hào)"] == id: # 刪除列表中的第i個(gè)字典 course_list.pop(i) print("刪除成功!") return #結(jié)束函數(shù) print("刪除失敗,未查詢到該學(xué)生成績(jī)。") # 修改學(xué)生成績(jī)信息 def modifyCourse(course_list): id = input("請(qǐng)輸入要修改的學(xué)生學(xué)號(hào):") for i in range(0, len(course_list)): if course_list[i]["學(xué)號(hào)"] == id: id = input("請(qǐng)輸入修改后的學(xué)生學(xué)號(hào):") english = int(input("請(qǐng)輸入修改后的英語成績(jī):")) math = int(input("請(qǐng)輸入修改后的數(shù)學(xué)成績(jī):")) computer = int(input("請(qǐng)輸入修改后的計(jì)算機(jī)成績(jī):")) chemistry = int(input("請(qǐng)輸入修改后的化學(xué)成績(jī):")) PE = int(input("請(qǐng)輸入修改后的體育成績(jī):")) # 把這6個(gè)數(shù)據(jù)裝入字典course中 course = {"學(xué)號(hào)":id, "英語":english, "數(shù)學(xué)":math, "計(jì)算機(jī)":computer, "化學(xué)":chemistry, "體育":PE} # 用dict替換舊的數(shù)據(jù) course_list[i] = course print("修改成功!") return #結(jié)束函數(shù) print("修改失敗,未查詢到該學(xué)生成績(jī)。") # 顯示學(xué)生成績(jī)信息 def showCourse(course_list): print("學(xué)號(hào)\t\t英語\t\t數(shù)學(xué)\t\t計(jì)算機(jī)\t\t化學(xué)\t\t體育") for course in course_list: print("%s\t\t%d\t\t%d\t\t%d\t\t%d\t\t%d" %(course["學(xué)號(hào)"], course["英語"], course["數(shù)學(xué)"], course["計(jì)算機(jī)"], course["化學(xué)"], course["體育"])) # 通過姓名查詢?cè)撋某煽?jī)信息 def searchScoreByName(student_list, course_list): name = input("請(qǐng)輸入學(xué)生姓名:") id = "未查詢到" for stu in student_list: if stu["姓名"] == name: id = stu["學(xué)號(hào)"] break if id == "未查詢到": print("未查詢到該學(xué)生信息。") return #結(jié)束函數(shù) for course in course_list: if course["學(xué)號(hào)"] == id: print("查詢成功!該學(xué)生信息如下:") print("學(xué)號(hào)\t\t英語\t\t數(shù)學(xué)\t\t計(jì)算機(jī)\t\t化學(xué)\t\t體育") print("%s\t\t%d\t\t%d\t\t%d\t\t%d\t\t%d" %(course["學(xué)號(hào)"], course["英語"], course["數(shù)學(xué)"], course["計(jì)算機(jī)"], course["化學(xué)"], course["體育"])) return #結(jié)束程序 print("未查詢到該學(xué)生成績(jī)信息。") # 查詢某門課程得分最高的學(xué)生信息 def searchStudentByHighScore(student_list, course_list): courseName = input("請(qǐng)輸入課程名稱:") # 按這門課程冒泡排序 for i in range(0, len(course_list)-1): for j in range(0, len(course_list)-1-i): if course_list[j][courseName] < course_list[j+1][courseName]: course_list[j], course_list[j+1] = course_list[j+1], course_list[j] id = course_list[0]["學(xué)號(hào)"] for student in student_list: if student["學(xué)號(hào)"] == id: print("查找成功!") print("學(xué)號(hào)\t\t姓名\t\t性別\t\t專業(yè)班級(jí)") print("%s\t\t%s\t\t%s\t\t%s" %(student["學(xué)號(hào)"], student["姓名"], student["性別"], student["專業(yè)班級(jí)"])) return print("未查找到該學(xué)生信息。") # 輸出某門課的平均成績(jī) def outputAverageScore(course_list): courseName = input("請(qǐng)輸入課程名稱:") sum = 0 for course in course_list: sum += course[courseName] print("%s平均成績(jī)?yōu)?.2f" %(courseName, sum/len(course_list))) # 主菜單 def menu(): print("1.增加學(xué)生信息 2.增加成績(jī)信息") print("3.修改學(xué)生信息 4.修改成績(jī)信息") print("5.刪除學(xué)生信息 6.刪除成績(jī)信息") print("7.顯示學(xué)生信息 8.顯示成績(jī)信息") print("9.通過姓名查詢?cè)撋某煽?jī)信息") print("10.查詢某門課程得分最高的學(xué)生信息") print("11.輸出某門課的平均成績(jī)") print("0.保存并退出") # 主函數(shù) def main(): student_list = readStudent() course_list = readCourse() flag = True while flag: menu() choose = input("請(qǐng)輸入選項(xiàng):") while True: # 增加學(xué)生信息 if choose == '1': addStudent(student_list) break # 增加成績(jī)信息 elif choose == '2': addCourse(course_list) break # 修改學(xué)生信息 elif choose == '3': modifyStudent(student_list) break # 修改成績(jī)信息 elif choose == '4': modifyCourse(course_list) break # 刪除學(xué)生信息 elif choose == '5': deleteStudent(student_list) break # 刪除成績(jī)信息 elif choose == '6': deleteCourse(course_list) break # 顯示學(xué)生信息 elif choose == '7': showStudent(student_list) break # 顯示成績(jī)信息 elif choose == '8': showCourse(course_list) break # 通過姓名查詢?cè)撋某煽?jī)信息 elif choose == '9': searchScoreByName(student_list, course_list) break # 查詢某門課程得分最高的學(xué)生信息 elif choose == '10': searchStudentByHighScore(student_list, course_list) break # 輸出某門課的平均成績(jī) elif choose == '11': outputAverageScore(course_list) break # 保存數(shù)據(jù)并退出 elif choose == '0': saveStudent(student_list) saveCourse(course_list) flag = False break else: choose = input("輸入錯(cuò)誤, 請(qǐng)重新輸入:") if __name__=='__main__': main()
到此這篇關(guān)于Python利用字典和列表實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)的文章就介紹到這了,更多相關(guān)Python學(xué)生信息管理系統(tǒng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python 圖像對(duì)比度增強(qiáng)的幾種方法(小結(jié))
這篇文章主要介紹了Python 圖像對(duì)比度增強(qiáng)的幾種方法(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09python爬蟲中PhantomJS加載頁面的實(shí)例方法
在本篇文章里小編給大家整理了關(guān)于python爬蟲中PhantomJS加載頁面的實(shí)例方法,有需要的朋友們可以參考下。2020-11-11Python?Matplotlib中使用plt.savefig存儲(chǔ)圖片的方法舉例
pytorch下保存圖像有很多種方法,但是這些基本上都是基于圖像處理的,將圖像的像素指定一定的維度,下面這篇文章主要給大家介紹了關(guān)于Python?Matplotlib中使用plt.savefig存儲(chǔ)圖片的相關(guān)資料,需要的朋友可以參考下2023-02-02Python用yield from實(shí)現(xiàn)異步協(xié)程爬蟲的實(shí)踐
本文主要介紹了Python用yield from實(shí)現(xiàn)異步協(xié)程爬蟲的實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01Pandas中的unique()和nunique()區(qū)別詳解
Pandas中Series和DataFrame的兩種數(shù)據(jù)類型中都有nunique()和unique()方法,本文詳細(xì)的介紹了兩者的區(qū)別,具有一定的參考價(jià)值,感興趣的可以了解一下2022-08-08