python3.7保存文件
详解用python实现基本的学生管理系统文件存储版python3这个是升级的版本,比较进阶一点的,相对与之前的文件管理系统,数据只是存储到了内存中,而不是存储到硬盘上,我们想让文件存储到硬盘上的话,一个是存储到文件里,一个是存储到数据库中,存储到数据库中的版本会后续发布,先来看一下文件存储版,是把学生信息存储到了txt文件中,我这里是默认存储到了students.txt文件中,想更改文件名字根据代码修改即可,代码中注释很详细,我也是python初学者,欢迎大家和我交流!
|
""" 学生管理系统(文件存储版) 再原有功能的基础上添加了如下功能: 1.保存学生数据,保存到与python文件同目录下 保存的时候设置编码utf-8 防止乱码 2.删除所有学生信息 3.添加了函数recover_data运行程序先获取数据 文件不存在的话会自行创建并存储一个空列表 """ import os name_list = [] # 存储学生信息字典,学生信息用字典存,再用列表存储字典 # 菜单 def display_menu(): print ( "-" * 30 ) print ( " 学生管理系统 v8.8 " ) print ( "1.添加学生信息" ) print ( "2.删除学生信息" ) print ( "3.修改学生信息" ) print ( "4.查询单个学生信息" ) print ( "5.查询所有学生信息" ) print ( "6.保存学生信息" ) print ( "7.删除所有学生" ) print ( "0.退出系统" ) print ( "-" * 30 ) # 选择序号的获得 def get_choice(): selected_key = input ( "请输入选择的序号:" ) return selected_key # 检查性别是否合法 def check_sex(new_sex): flag = true while flag: if new_sex = = '男' or new_sex = = '女' : flag = false else : new_sex = input ( "输入性别有误,请重新输入(男/女):" ) return new_sex # 检查电话号码是否合法 def check_phone(new_phone): flag = true while flag: if new_phone.isdigit(): flag = false else : new_phone = input ( "您输入的电话号码有误,请重新输入:" ) return new_phone # 检查学号是否重复或者有误 def check_id(new_id): flag = true while flag: # 先检查是不是纯数字再去考虑是否重复的事情,如果不是纯数字直接pass if new_id.isdigit(): for i in range ( len (name_list)): if name_list[i][ 'id' ] = = new_id: new_id = check_id( input ( "您输入的学号重复,请重新输入:" )) flag = false else : new_id = input ( "您输入的学号有误,请重新输入:" ) return new_id # 添加学生信息 def add_name(): new_info = {} new_id = check_id( input ( "请输入学号:" )) new_info[ 'id' ] = new_id new_name = input ( "请输入姓名:" ) new_info[ 'name' ] = new_name new_sex = check_sex( input ( "请输入性别(男/女):" )) new_info[ 'sex' ] = new_sex new_phone = check_phone( input ( "请输入电话号码:" )) new_info[ 'phone' ] = new_phone name_list.append(new_info) print ( "添加成功!" ) # 查询所有学生信息 def find_all(): print ( "=" * 30 ) for name in name_list: print (name[ 'id' ], name[ 'name' ], name[ 'sex' ], name[ 'phone' ]) print ( "=" * 30 ) # 删除学生信息 def del_name(): del_id_is = input ( "请输入要删除的学生学号:" ) flag = false index = 0 for i in range ( len (name_list)): if name_list[i][ 'id' ] = = del_id_is: flag = true index = i break if flag: name_list.pop(index) print ( "删除成功!" ) else : print ( "学生未找到!请检查学号输入是否有误!" ) # 删除所有学生 def del_all(): global name_list flag = input ( "确定要删除吗?(y删除/输入其他字符返回菜单):" ) if flag = = 'y' or flag = = 'y' : name_list = [] print ( "删除成功!" ) else : return # 名字修改细节函数 def choice_of_name(index): while true: choice = input ( "请输入要修改学生的(1.id 2.姓名 3.性别 4.电话号码,5.全部修改):" ) if choice = = '5' : new_id = input ( "请输入新的学号:" ) name_list[index][ 'id' ] = new_id new_name = input ( "请输入新的姓名:" ) name_list[index][ 'name' ] = new_name new_sex = check_sex( input ( "请输入性别(男/女):" )) name_list[index][ 'sex' ] = new_sex new_phone = check_phone( input ( "请输入电话号码:" )) name_list[index][ 'phone' ] = new_phone break elif choice = = '1' : new_id = input ( "请输入新的学号:" ) name_list[index][ 'id' ] = new_id break elif choice = = '2' : new_name = input ( "请输入新的姓名:" ) name_list[index][ 'name' ] = new_name break elif choice = = '3' : new_sex = check_sex( input ( "请输入性别(男/女):" )) name_list[index][ 'sex' ] = new_sex break elif choice = = '4' : new_phone = check_phone( input ( "请输入电话号码:" )) name_list[index][ 'phone' ] = new_phone break else : print ( "输入有误,请重新输入!" ) # 修改学生信息 def re_name(): id_is = input ( "请输入要修改的学生学号:" ) flag = false index = 0 # 先找到要修改的学生的下标 for i in range ( len (name_list)): if name_list[i][ 'id' ] = = id_is: flag = true index = i break if flag: choice_of_name(index) print ( "修改成功!" ) else : print ( "修改失败,学生信息未找到!" ) # 查询单个学生信息 def find_name(): find_id_is = input ( "请输入要查询的学生学号:" ) flag = false index = 0 for i in range ( len (name_list)): if name_list[i][ 'id' ] = = find_id_is: flag = true index = i break if flag: print ( "学生查询到,学生信息为:" ) print (name_list[index][ 'id' ], name_list[index][ 'name' ], name_list[index][ 'sex' ], name_list[index][ 'phone' ]) else : print ( "学生未找到!" ) # 保存学生信息 def save_stu(): students = str (name_list) with open ( "students.txt" , "w" , encoding = "utf-8" ) as f: f.write(students) &nbs
|