# -*- coding = utf-8 -*- # @Time : 2021/10/29 9:08 # @Author : 海绵摆摆嘉心糖 # @File : 03.学生管理系统.py # @Software : PyCharm import os # 定义一个存储学生的列表 stu_list = [] file_name = "student_info" def show_meun(): print("1.添加学生") print("2.删除学生") print("3.修改学生信息") print("4.查询单个学生信息") print("5.查询所有的学生信息") print("6.保存并退出") def file_read(): # 全局变量内部使用 需要全局化 之后 stu_list 在函数内部可以修改 global stu_list # 判断这个文件是否存在 if os.path.exists(file_name): # 打开这个文件 f = open(file_name, "r", encoding="utf-8") # 读取文件 while True: # 每次读一行 stu_info = f.readline() # 判断文件中是否有数据 if stu_info: # 将数据转换为字典,追加到 stu_list 中 stu_list.append(eval(stu_info)) else: break f.close() else: print(f"{file_name}不存在,是否需要创建?") while True: yn = input("创建请输入:y 不需要请输入 n") if yn == "y": f = open(file_name, "w") f.close() print("文件创建成功,请重新启动程序以继续操作") break elif yn == "n": print("再见!!!") break else: continue def insert_student(): name = input("请输入学生的姓名:") for stu in stu_list: if stu['name'] == name: print(f"{name}已存在") return age = input(f"请输入{name}的年龄:") sex = input(f"请输入{name}的性别:") # 将学生的信息转化为字典保存 stu_dict = {'name': name, 'age': age, 'sex': sex} # 将 stu_dict 追加到 stu_list 中 stu_list.append(stu_dict) def remove_student(): name = input("请输入你所要删除的学生的名字:") for stu in stu_list: if stu['name'] == name: stu_list.remove(stu) else: print(f"没有{name}这个信息") def updata_student(): name = input("请输入你要修改的学生的姓名:") for stu in stu_list: if stu['name'] == name: while True: number = int(input("请输入你要修改的内容:\n0.退出\t1.姓名\t2.年龄\t3.性别")) if number == 0: break elif number == 1: stu['name'] = input("请输入你要修改的名字:") elif number == 2: stu['age'] = int(input("请输入你要修改的年龄:")) elif number == 3: stu['sex'] = input("请输入你要修改的性别:") else: print("你输入的信息有误") else: print(f"{name}不存在") def search_student(): name = input("请输入你要查询的学生的姓名:") for stu in stu_list: if stu['name'] == name: print(f"姓名:\t{stu['name']}\n年龄:\t{stu['age']}\n性别:\t{stu['sex']}") else: print(f"抱歉!没有{name}") def show_all_student(): print("姓名\t年龄\t性别") for stu in stu_list: print(f"{stu['name']}\t{stu['age']}\t\t{stu['sex']}") pass def save_student(): f = open(file_name, "w", encoding="utf-8") for stu in stu_list: f.write(f"{str(stu)}\n") f.close() def load_file(): pass def main(): # 将文件中的学生信息读取出来放入 stu_list 中 file_read() while True: # 首页选项函数 show_meun() # 按照提示进行操作 opt = input("请输入你操作的序号:") if opt == "1": # 插入学生信息 insert_student() elif opt == "2": # 删除学生信息 remove_student() elif opt == "3": # 修改学生信息 updata_student() elif opt == "4": # 查询单个学生信息 search_student() elif opt == "5": # 查询所有学生信息 show_all_student() elif opt == "6": # 保存并退出 save_student() break else: print("你输入的信息有误,请重新输入") continue # 表示只能当前程序执行下面代码 # 当本文件被其他文件执行,则不会执行这里的代码 # 起到保护本文件的作用 if __name__ == '__main__': main()