import os import re #获取本机用户名,构建student.txt文件名创建在左面 import getpass username=getpass.getuser() print("当前登录用户名"+username) filename="student.txt" filename="C:\\Users\\"+username+"\\Desktop"+"\\"+filename print(filename) def main(): ctrl=True while ctrl: menu() option=input("请选择>>>:") option_str=re.sub("\D","",option) if option_str in ["0","1","2","3","4","5","6","7"]: option_int=int(option_str) if option_int==0: print("你已经退出学生管理系统") ctrl=0 elif option_int==1: insert() elif option_int==2: search() elif option_int==3: delete() elif option_int==4: modify() elif option_int==5: sort() elif option_int==6: total() elif option_int==7: show() def menu(): #first page print( """ 学生信息管理系统 ===============功能菜单=============== | | 1 录入学生信息 | 2 查找学生信息 | 3 删除学生信息 | 4 修改学生信息 | 5 排序 | 6 统计学生总人数 | 7 显示所有学生信息 | 0 退出管理系统 ======================================= 说明:通过数字或↑↓方向键选择菜单 """ ) def insert(): #录入学生信息 studentlist=[] mark=True while mark: id=input("请输入id如(1001):") if not id: break name=input("请输入姓名") if not name: break try: english =int(input("请输入英语成绩")) python = int(input("请输入python成绩")) c = int(input("请输入c语言成绩")) except: print("输入成绩格式无效") continue student={"id":id,"name":name,"english":english,"python":python,"c":c} studentlist.append(student) inputmark=input("是否继续添加(Y/N):") if inputmark=="Y" or inputmark=="y": mark=1 else: mark=0 print(studentlist) save(studentlist) print("学生信息录入完毕") def search(): mark=True student_query=[] while mark: 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") as file: student=file.readlines() for list in student: d=dict(eval(list)) if id is not "": if d["id"]==id: student_query.append(d) elif name is not "": if d["name"]==name: student_query.append(d) show_student(student_query) student_query.clear() inputmark=input("是否继续查询(y/n):") if inputmark =="y" or inputmark=="Y": mark=True else: mark=False else: print("暂未保存数据信息") return def delete(): mark=True while mark: studentid=input("请输入你要删除的学生id,如果输入为空则退出删除") if studentid=="": return 1 if studentid is not "": #此处判断输入是否为空,如果输入有效执行读取信息 if os.path.exists(filename): with open(filename,"r") as rfile: student_old=rfile.readlines() else: #如过为获取到文件内容,则返回空列表。stuent_ol=[]=false student_old=[] ifdel=False if student_old: with open(filename,"w") as wfile: d={} for list in student_old: d=dict(eval(list)) if d['id']!=studentid: wfile.write(str(d)+"\n") #此处相当于读取了所有学生信息,除了id为输入要删除的id以外,其他学生的信息全部重新写入 else: #如果 d['id']!=studentid ,那么ifdel=true,没有写入证明删除成功 ifdel=True if ifdel: print("id号为%s的学生信息已经删除"%studentid) else: print("没有找到id为%s的学生信息"%studentid) else: print("无学生信息") break show() inputmark=input("是否继续删除(Y/N):") if inputmark=="y" or inputmark=='Y': mark=True else: mark=False def modify(): show() if os.path.exists(filename): with open(filename,"r") as rfile: student_old=rfile.readlines() else: return studentid=input("请输入你要修改的学生信息的id:") with open(filename,"w") as wfile: for student in student_old: d=dict(eval(student)) if d['id']==studentid: print("找到该学生id,可以修改信息") while 1: try: d["name"]=input("请输入姓名") d["english"] =int( input("请输入英语成绩")) d["python"] = int(input("请输入python成绩")) d["c"] = int(input("请输入C语言成绩")) except: print("输入信息有误,请重新输入") else: break student=str(d) wfile.write(student+"\n") #修改后的信息写入文件 print("信息修改成功") else: wfile.write(student) #未修改的内容重新写入 mark = input("是否继续修改(Y/N):") if mark == "y" or mark == "Y": modify() else: return 1 def sort(): show() #首先显示全部学生信息 if os.path.exists(filename): with open(filename,"r") as file: student_old=file.readlines() student_new=[] for list in student_old: d=dict(eval(list)) student_new.append(d) #一个列表中的元素为字典,每个元素存储每个学生信息的字典 else: return ascordesc=input("请选择(0升序 / 1降序):") if ascordesc=="0": ascbool=False if ascordesc=="1": ascbool=True else: print("你的输入有误,请重新输入") sort() mode=input("""请选择排序方式(1 按英语成绩排序 2 按python成绩排序 3 按c语言成绩排序 0 按总成绩排序 )""") if mode=="1": student_new.sort(key=lambda x:x["english"],reverse=ascbool) elif mode=="2": student_new.sort(key=lambda x:x["python"],reverse=ascbool) elif mode=="3": student_new.sort(key=lambda x:x["c"],reverse=ascbool) elif mode=="0": student_new.sort(key=lambda x: x["english"]+x["python"]+x["c"], reverse=ascbool) else: print("输入有误,请重新输入") sort() show_student(student_new) def total(): if os.path.exists(filename): with open(filename,"r") as rfile: student_old=rfile.readlines() if student_old: print("一共有%d名学生"%len(student_old)) else: print("还没有录入学生信息") else: print("暂时未保存数据信息") def show(): student_new=[] if os.path.exists(filename): with open(filename,"r") as rfile: student_old=rfile.readlines() for list in student_old: student_new.append(eval(list)) if student_new: show_student(student_new) else: print("暂未找到数据信息") def save(student): try: students_txt=open(filename,"a") except Exception as e: students_txt=open(filename,"w") for info in student: students_txt.write(str(info)+"\n") students_txt.close() def show_student(studentList): if not studentList: print("!!--无数据信息--!!\n") return format_title="{:^6}{:^12}\t{:^8}\t{:^10}\t{:^10}\t{:^10}" print(format_title.format("id","姓名","英语成绩","python成绩","语言成绩","总成绩")) format_data="{:^6}{:^12}\t{:^12}\t{:^12}\t{:^12}\t{:^12}" for info in studentList: print(format_data.format(info.get("id"),info.get("name"),str(info.get("english")), str(info.get("python")),str(info.get("c")), str(info.get("english")+info.get("c")+info.get("python")).center(12) )) main()
当前位置:
首页 > Python基础教程 >
-
python学生管理系统
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式