本文将利用Python中的字典和列表实现学生信息管理系统
文件的存放格式采用的是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(\"请输入要增加的学生专业班级:\") # 把这4个数据装入字典student中 student = {\"学号\":id, \"姓名\":name, \"性别\":sex, \"专业班级\":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 # 结束函数 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(\"请输入修改后的专业班级:\") # 把这4个数据装入字典student中 student = {\"学号\":id, \"姓名\":name, \"性别\":sex, \"专业班级\":specialty} # 用student替换student_list中的第i个字典 student_list[i] = student print(\"修改成功!\") return # 结束函数 print(\"修改失败,未查询到该学生。\") # 显示所有学生信息 def showStudent(student_list): print(\"学号\\t\\t姓名\\t\\t性别\\t\\t专业班级\") for student in student_list: print(\"%s\\t\\t%s\\t\\t%s\\t\\t%s\" %(student[\"学号\"], student[\"姓名\"], student[\"性别\"], student[\"专业班级\"])) # 从文件中读取学生成绩信息 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(\"请输入该学生的数学成绩:\")) computer = int(input(\"请输入该学生的计算机成绩:\")) chemistry = int(input(\"请输入该学生的化学成绩:\")) PE = int(input(\"请输入该学生的体育成绩:\")) # 把这6个数据装入字典course中 course = {\"学号\":id, \"英语\":english, \"数学\":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 #结束函数 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(\"请输入修改后的数学成绩:\")) computer = int(input(\"请输入修改后的计算机成绩:\")) chemistry = int(input(\"请输入修改后的化学成绩:\")) PE = int(input(\"请输入修改后的体育成绩:\")) # 把这6个数据装入字典course中 course = {\"学号\":id, \"英语\":english, \"数学\":math, \"计算机\":computer, \"化学\":chemistry, \"体育\":PE} # 用dict替换旧的数据 course_list[i] = course print(\"修改成功!\") return #结束函数 print(\"修改失败,未查询到该学生成绩。\") # 显示学生成绩信息 def showCourse(course_list): print(\"学号\\t\\t英语\\t\\t数学\\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[\"数学\"], 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 #结束函数 for course in course_list: if course[\"学号\"] == id: print(\"查询成功!该学生信息如下:\") print(\"学号\\t\\t英语\\t\\t数学\\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[\"数学\"], 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专业班级\") print(\"%s\\t\\t%s\\t\\t%s\\t\\t%s\" %(student[\"学号\"], student[\"姓名\"], student[\"性别\"], student[\"专业班级\"])) return print(\"未查找到该学生信息。\") # 输出某门课的平均成绩 def outputAverageScore(course_list): courseName = input(\"请输入课程名称:\") sum = 0 for course in course_list: sum += course[courseName] print(\"%s平均成绩为%.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.保存并退出\") # 主函数 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 # 保存数据并退出 elif choose == \'0\': saveStudent(student_list) saveCourse(course_list) flag = False break else: choose = input(\"输入错误, 请重新输入:\") if __name__==\'__main__\': main()
© 版权声明
THE END
暂无评论内容