Python学生信息管理系统
Toblerone_Wind 人气:0本文将利用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()
加载全部内容