学生信息系统(json模块解决数据持久化)
将学生管理的案例,学生信息由原来的只有姓名,拓展为包含,姓名,年龄,两个属性;完成对应的增、删、查、改,操作
import json,os,time,sys student_list = [] File_path = 'name.txt' #从文件中读取之前存储的数据(考虑是否有对应文件的问题,要做文件是否存在的判断),然后将读取到的数据存储到列表 def dataRead(filepath): # 判断filepath这个路径对应的文件是否存在: if os.path.exists(filepath): print('找到提取文件') f1 = open(filepath,'r',encoding='utf-8') global student_list student_list = json.load(f1) print('学生信息',student_list) f1.close() print('读取数据成功') else: print('文件不存在') def addStudent(): name = input('请输入学生姓名:') age = int(input('请输入学生年龄:')) stu_dict = { 'name':name, 'age':age } student_list.append(stu_dict) print('学生信息添加成功,1秒后自动返回主菜单\n\n\n') time.sleep(1) def delStudent(): name = input('请输入要删除的学生姓名:') for stu in student_list: if name == stu['name']: student_list.remove(stu) print('删除成功') else: print('该学生信息不存在') def updateStudent(): name = input("请输入要修改的学生姓名:") for stu in student_list: if name == stu['name']: new_name = input("请输入修改后的姓名:") new_age = eval(input("请输入修改后的年龄:")) stu['name'] = new_name stu['age'] = new_age print('修改成功') break else: print('该学生信息不存在') # name = input('请输入要修改的学生姓名:') # age = int(input('请输入修改学生的年龄:')) # new_dict = {'name':name,'age':age} # if new_dict in student_list : # index = student_list.index(new_dict) # # new_name = input('请输入修改后的学生姓名:') # new_age = int(input('请输入修改后的学生年龄:')) # # # student_list[index]['name'] = new_name # student_list[index]['age'] = new_age # print('修改成功') # else: # # print('该学生信息不存在') def queryStudent(): name = input('请输入要查询的学生姓名:') for stu in student_list: if name == stu['name']: print('学生信息:',stu) break else: print('该学生信息不存在') def showAll(): print('所有学生信息如下:') for stu in student_list: print('姓名:{},年龄:{}'.format(stu.get('name'),stu.get('age'))) def systemExit(): dataWrite(File_path) print('谢谢使用') sys.exit() #将列表中的数据写入文件 def dataWrite(filepath): f = open(filepath,'w',encoding='utf-8') json.dump(student_list,f) f.close() print('数据写入成功') #从文件中加载数据 dataRead(File_path) while True: print('1.添加学生') print('2.删除学生') print('3.修改学生') print('4.查询学生') print('5.展示所有') print('6.退出系统') num = input('请输入1-6的数字进入相应功能:') print('------'*6) if num == '1': addStudent() elif num == '2': delStudent() elif num == '3': updateStudent() elif num == '4': queryStudent() elif num == '5': showAll() elif num == '6': systemExit() else: print('输入有误')
所思及所学
学而不思则罔,思而不学则殆!
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 后端思维之高并发处理方案
· 理解Rust引用及其生命周期标识(下)
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· 后端思维之高并发处理方案
· 千万级大表的优化技巧
· 在 VS Code 中,一键安装 MCP Server!
· 10年+ .NET Coder 心语 ── 继承的思维:从思维模式到架构设计的深度解析
· 想让你多爱自己一些的开源计时器