2022-05-17 11:39:53 来源 : 软件开发网
一、系统功能
二、系统开发环境
三、实现代码
四、项目打包并生成.exe可执行文件
本文实例为大家分享了python实现简易学生信息管理系统的具体代码,供大家参考,具体内容如下
一、系统功能1.录入学生信息
2.查找学生信息
3.修改学生信息
4.删除学生信息
5.成绩排序
6.统计学生总人数
7.显示所有学生信息
0.退出系统
二、系统开发环境1.操作系统:win7
2.开发工具:PyCharm
3.Python内置模块:os,re
三、实现代码import osfilename="students.txt"def main(): while True: menum() 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 #退出while循环并退出系统 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() #统计学生总人数 elif choice == 7: show() #显示所有学生信息def insert(): student_list=[] #用于存储学生信息,列表每个元素是字典。 while True: id=input("请输入学生ID:") if not id: break name=input("请输入学生姓名:") if not name: break try: Englist=int(input("请输入英语成绩:")) Python=int(input("请输入Python成绩:")) Java=int(input("请输入Java成绩:")) except: print("输入无效,不是整数类型,请重新输入!") continue #将录入的学生信息保存到字典中 student={"id":id,"name":name,"English":Englist,"Python":Python,"Java":Java} #将学生信息添加到列表中 student_list.append(student) answer=input("是否继续添加?(y/n)") if answer=="y" or answer=="Y": continue else: break #将学生信息保存在文件中 save(student_list) print("学生信息录入完毕!") passdef search(): student_query=[] #用列表存储,防止有同名学生。 while True: id="" name="" if os.path.exists(filename): mode=input("按ID查找请输入1,按姓名查找请输入2:") if mode == "1": id=input("请输入要查找的学生ID:") elif mode == "2": name=input("请输入要查找的学生姓名:") else: print("您的输入有误,请重新输入!") search() with open(filename,"r",encoding="utf-8") as rfile: student=rfile.readlines() for item in student: d=dict(eval(item)) if id!="": if d["id"]==id: student_query.append(d) elif name!="": if d["name"]==name: student_query.append(d) #显示查询结果 show_student(student_query) student_query.clear() #清空列表 answer=input("是否要继续查询?(y/n)") if answer=="y" or answer=="Y": continue else: break else: print("暂未保存学生信息。") return passdef 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"id为{student_id}的学生信息已被删除") else: print(f"没有找到ID为{student_id}的学生信息") else: print("无此学生信息") break show() #删完之后重新显示所有学生信息 answer=input("是否继续删除?(y/n)") if answer=="y" or answer=="Y": continue else: break passdef modify(): show() if os.path.exists(filename): #判断文件是否存在 with open(filename,"r",encoding="utf-8") as rfile: student_old=rfile.readlines() else: return #结束函数 student_id=input("请输入要修改信息的学生ID:") with open(filename,"w",encoding="utf-8") as wfile: for item in student_old: d=dict(eval(item)) if d["id"]==student_id: print("找到此学生信息,可以修改。") while True: try: d["name"]=input("请输入学生姓名:") d["English"]=input("请输入English成绩:") d["Python"]=input("请输入Python成绩:") d["Java"]=input("请输入Java成绩:") except: print("您的输入有误请重新输入!") else: break wfile.write(str(d)+"\n") print("修改成功!") else: wfile.write(str(d)+"\n") answer=input("是否继续修改其他学生信息?(y/n)") if answer=="y": modify() passdef sort(): show() if os.path.exists(filename): with open(filename,"r",encoding="utf-8") as rfile: student_list=rfile.readlines() student_new=[] for item in student_list: d=dict(eval(item)) student_new.append(d) else: return asc_or_desc=input("请选择(0:升序,1:降序):") if asc_or_desc=="0": asc_or_desc_bool=False elif asc_or_desc=="1": asc_or_desc_bool=True else: print("您的输入有误,请重新输入!") sort() mode=input("请选择排序方式(0:按总成绩排序,1:按English成绩排序,2:按Python成绩排序,3:按Java成绩排序)") if mode=="0": student_new.sort(key=lambda x: int(x["English"])+int(x["Python"])+int(x["Java"]), reverse=asc_or_desc_bool) elif mode=="1": student_new.sort(key=lambda x:int(x["English"]),reverse=asc_or_desc_bool) elif mode=="2": student_new.sort(key=lambda x: int(x["Python"]), reverse=asc_or_desc_bool) elif mode=="3": student_new.sort(key=lambda x: int(x["Java"]), reverse=asc_or_desc_bool) else: print("您的输入有误,请重新输入!") sort() show_student(student_new) passdef total(): if os.path.exists(filename): with open(filename,"r",encoding="utf-8") as rfile: students=rfile.readlines() if students: print(f"一共有{len(students)}名学生") else: print("还没有录入学生信息!") else: print("暂未保存学生信息......") passdef show(): student_lst=[] if os.path.exists(filename): with open(filename,"r",encoding="utf-8") as rfile: students=rfile.readlines() for item in students: student_lst.append(eval(item)) if student_lst: show_student(student_lst) else: print("暂未保存过数据!") passdef save(stu_list): try: stu_txt=open(filename,"a",encoding="utf=8") except: stu_txt=open(filename,"w",encoding="utf-8") for item in stu_list: stu_txt.write(str(item)+"\n") stu_txt.close()def show_student(lst): if len(lst)==0: print("没有查到学生信息,无数据显示!") return #定义标题显示格式 format_title="{:^6}\t{:^12}\t{:^10}\t{:^10}\t{:^10}\t{:^8}" print(format_title.format("ID","姓名","English成绩","Python成绩","Java成绩","总成绩")) #定义内容显示格式 format_data="{:^6}\t{:^12}\t{:^10}\t{:^18}\t{:^14}\t{:^8}" for item in lst: print(format_data.format(item.get("id"),item.get("name"),item.get("English"),item.get("Python"),item.get("Java"),str(int(item.get("English"))+int(item.get("Python"))+int(item.get("Java"))))) passdef menum(): print("-------------------学生信息管理系统--------------------") print("-----------------------功能菜单------------------------") print(" 1.录入学生信息") print(" 2.查找学生信息") print(" 3.删除学生信息") print(" 4.修改学生信息") print(" 5.成绩排序") print(" 6.统计学生总人数") print(" 7.显示所有学生信息") print(" 0.退出系统") print("------------------------------------------------------")main()
四、项目打包并生成.exe可执行文件1.安装第三方模块,打开dos窗口,输入:pip install PyInstaller并回车,
2.输入:pyinstaller -F 程序文件具体位置,
3.回车后即可在输出内容的倒数第二行看到.exe文件的位置。