本篇文章小编给大家分享一下python实现简单的学生成绩管理系统代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。
需求:
代码:
import os filename = 'student.txt' def main(): while True: menu() choice = int(input("请选择:")) if choice in [0,1,2,3,4,5,6,7]: if choice==0: answer = input("你确定要退出吗?y/n") if answer =='y' or answer =='Y': print("谢谢使用!") break else: continue elif choice ==1: insert() elif choice ==2: search() elif choice ==3: delete() elif choice ==4: modify() elif choice ==5: sort() elif choice ==6: total() else: show() # 菜单 def menu(): print("====================学生成绩管理系统=========================") print("======================功能菜单==============================") print("tt1、录入学生信息") print("tt2、查找学生信息") print("tt3、删除学生信息") print("tt4、修改学生信息") print("tt5、排序") print("tt6、统计学生人数") print("tt7、显示所有学生信息") print("tt0、退出系统") print("--------------------------------------------------------------") # 插入 def insert(): student_list=[] while True: id = input('请输入ID(如1001):') if not id: break name = input('请输入姓名:') if not name: break try: english=int(input("input english grade:")) python=int(input("input python grade:")) java=int(input("input java grade:")) except: print("输入成绩无效!重新输入!") continue student = {'id':id,'name':name,'english':english,'python':python,'java':java} student_list.append(student) answer = input("是否继续添加信息!?:'y/n'") if answer == 'y': continue else: break # 调用save函数将其保存在文本当中 save(student_list) print("学生信息录入成功!") # 保存 def save(lst): try: stu_txt = open(filename,'a',encoding='utf-8') except: stu_txt = open(filename,'w',encoding='utf-8') for item in lst: stu_txt.write(str(item)+'n') stu_txt.close() # 搜索 def search(): while True: student_name = input("请输入你要查找的学生姓名:") if student_name: if os.path.exists(filename): with open(filename,'r',encoding='utf-8') as rfile: student_old = rfile.readlines() else: student_old = [] if student_old: d = {} flag = False for item in student_old: d = dict(eval(item)) if d['name'] == student_name: flag = True student_show(d) else: pass else: print("无学生信息,请添加!") if flag: print("查询成功") else: print("查询失败") else: print("没有输入学生姓名!") answer = input("请问是否继续查询:y/n") if answer == "y": continue else: break # 展示个人信息 def student_show(dic): format_title = '{:^6}t{:^12}t{:^8}t{:^10}t{:^10}t{:^8}' print(format_title.format('ID','姓名','英语成绩','python成绩','java成绩','总成绩')) format_data = '{:^6}t{:^12}t{:^8}t{:^10}t{:^10}t{:^8}' print(format_data.format(dic.get('id'), dic.get('name'), dic.get('english'), dic.get('python'), dic.get('java'), int(dic.get('english'))+int(dic.get('python'))+int(dic.get('java')), )) # 删除 def delete(): while True: student_id = input("请输入要删除的学生ID:") if student_id: if os.path.exists(filename): with open(filename,'r',encoding='utf-8') as file: student_old = file.readlines() else: student_old=[] flag = False if student_old: with open(filename,'w',encoding='utf-8') as wfile: d={} for item in student_old: d = dict(eval(item)) if d['id']!=student_id: wfile.write(str(d)+"n") else: flag = True if flag: print(f"{student_id}已经被删除!") else: print(f"{student_id}没有找到!") else: print("无学生信息!") break show() answer = input("是否继续删除?y/n") if answer == 'y': continue else: break else: print("请输入要删除的ID:") continue # 修改 def modify(): while True: student_id = input("请输入要修改的学生ID:") if student_id: if os.path.exists(filename): with open(filename,'r',encoding='utf-8') as file: student_old = file.readlines() else: student_old=[] if student_old: with open(filename,'w',encoding='utf-8') as wfile: d = {} for item in student_old: d = dict(eval(item)) if d['id'] == student_id: answer = input('已经找到该学生信息,是否修改:y/n?') flag = False if answer: d['name']=input("姓名:") d['english']=int(input("english:")) d['python']=int(input("python:")) d['java']=int(input("java:")) wfile.write(str(d)+"n") flag = True else: wfile.write(str(d)+"n") break else: wfile.write(str(d)+"n") if flag: print("修改成功!") else: print("修改失败!") else: print("无学生信息,请添加") answer = input("请问是否继续修改?y/n") if answer == "y": continue else: break else: print("输入错误!") # 排序 def sort(): while True: if os.path.exists(filename): with open(filename,'r',encoding='utf-8') as file: student_old = file.readlines() student_new = [] d={} for item in student_old: d=dict(eval(item)) student_new.append(d) asc_and_desc = int(input("怎么排序:0 升序 1 降序:")) choice = int(input("按照什么排序:1 english 2 python 3 java 0 总成绩:")) if choice == 1: student_new.sort(key=lambda x:int(x['english']),reverse=asc_and_desc) elif choice == 2: student_new.sort(key=lambda x:int(x['python']),reverse=asc_and_desc) elif choice == 3: student_new.sort(key=lambda x:int(x['java']),reverse=asc_and_desc) elif choice == 0: student_new.sort(key=lambda x:int(x['english'])+int(x['python'])+int(x['java']),reverse=asc_and_desc) else: print("输入有误") sort() else: print("无学生信息") format_title = '{:^6}t{:^12}t{:^8}t{:^10}t{:^10}t{:^8}' print(format_title.format('ID','姓名','英语成绩','python成绩','java成绩','总成绩')) format_data = '{:^6}t{:^12}t{:^8}t{:^10}t{:^10}t{:^8}' for dic in student_new: print(format_data.format(dic.get('id'), dic.get('name'), dic.get('english'), dic.get('python'), dic.get('java'), int(dic.get('english'))+int(dic.get('python'))+int(dic.get('java')), )) answer = input("请问是否继续排序?y/n") if answer == "y": continue else: break # 总人数 def total(): if os.path.exists(filename): with open(filename,'r',encoding='utf-8') as file: student_old = file.readlines() print('一共有',len(student_old),'名学生!') else: print("无人员资料") import msvcrt msvcrt.getch() # 展示 def show(): if os.path.exists(filename): with open(filename,'r',encoding='utf-8') as file: student_old = file.readlines() d = {} students = [] for item in student_old: d = dict(eval(item)) students.append(d) else: print("没有信息!") if len(students): format_title = '{:^6}t{:^12}t{:^8}t{:^10}t{:^10}t{:^8}' print(format_title.format('ID','姓名','英语成绩','python成绩','java成绩','总成绩')) format_data = '{:^6}t{:^12}t{:^8}t{:^10}t{:^10}t{:^8}' for dic in students: print(format_data.format(dic.get('id'), dic.get('name'), dic.get('english'), dic.get('python'), dic.get('java'), int(dic.get('english'))+int(dic.get('python'))+int(dic.get('java')), )) else: print("无人员信息!") import msvcrt msvcrt.getch() if __name__ == '__main__': main()