# -*- 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()