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