案例:pychon學生資訊管理系統
阿新 • • 發佈:2022-03-29
import json """ 學生資訊管理系統 功能:檢視學生資料列表,能修改學生資料,能刪除資料,能新增資料,能退出管理系 """ # 學生資訊的儲存列表 student_list = [] """先到檔案中讀取資料儲存變數student_list中""" import os if os.path.isfile("student.txt"): # 注意:第一次使用,手動建立這個檔案,以後可以通過 os模組提供的操作,就可以判斷該檔案是否存在 with open("student.txt", "r") as f: content = f.read() if content: student_list = json.loads(content) else: # 如果檔案不存在,則使用w模式建立檔案 with open("student.txt", "w") as f: pass while True: """1. 顯示選單""" print("* " * 15) print("* 歡迎來到XX學生資訊管理系統。") print("*") print("* 1. 新增學生資訊") print("* 2. 檢視學生資訊") print("* 3. 修改學生資訊") print("* 4. 刪除學生資訊") print("* 5. 退出資訊系統") print("* " * 15) print() action = int(input("請輸入要進行的操作序號(1·5):")) if action == 1: """新增""" print("請輸入要錄入系統的學生資訊...") name = input("姓名:") age = input("年齡:") sex = input("性別:") mobile = input("聯絡電話:") # 把學生資訊往student_list進行追加 student_list.append({ "name": name, "age": age, "sex": sex, "mobile": mobile, }) print(f"student_list={student_list}") # 新增學生資料以後,自動儲存一份到檔案中 if len(student_list) > 0: content = json.dumps(student_list) # 把列表轉換成字串 with open("student.txt", "w") as file: file.write(content) elif action == 2: """檢視""" for index, item in enumerate(student_list): print(f"序號: {index+1}\t\t姓名: {item['name']}\t\t年齡: {item['age']}\t\t性別: {item['sex']}\t\t聯絡電話: {item['mobile']}") print("- " * 15) elif action == 3: """修改""" for index, item in enumerate(student_list): print(f"序號: {index+1}\t\t姓名: {item['name']}\t\t年齡: {item['age']}\t\t性別: {item['sex']}\t\t聯絡電話: {item['mobile']}") print("- " * 15) num = int(input("請輸入要更新的學生資訊序號(如果部分資訊不修改,可以不填寫留空):")) name = input(f"姓名({student_list[num-1]['name']}):") age = input(f"年齡({student_list[num-1]['age']}):") sex = input(f"性別({student_list[num-1]['sex']}):") mobile = input(f"聯絡電話({student_list[num-1]['mobile']}):") # 更新資料 data = student_list[num-1] # data與student_list[num-1]是引用關係,所以data被改動,就表示student_list[num-1]被改動了 if name: data["name"] = name if age: data["age"] = age if sex: data["sex"] = sex if mobile: data["mobile"] = mobile if len(student_list) > 0: content = json.dumps(student_list) # 把列表轉換成字串 with open("student.txt", "w") as file: file.write(content) elif action == 4: for index, item in enumerate(student_list): print(f"序號: {index+1}\t\t姓名: {item['name']}\t\t年齡: {item['age']}\t\t性別: {item['sex']}\t\t聯絡電話: {item['mobile']}") print("- " * 15) text = input("請輸入要刪除的學生資訊序號(如果要一次性刪除多個,序號之間使用空格隔開):") if text: num_list = text.split(" ") # 刪除成員 num_list.sort(reverse=True) for num in num_list: num = int(num) student_list.pop(num - 1) # 刪除操作會導致資料減少,最少的情況是沒有資料,所以這裡不能判斷student_list content = json.dumps(student_list) # 把列表轉換成字串 with open("student.txt", "w") as file: file.write(content) else: print("成功退出系統中....") break print() print()