快看點丨Python之面向對象版學員管理系統

2022-12-23 10:18:40 來源:51CTO博客


【資料圖】

一、系統需求

使??向對象編程思想完成學員管理系統的開發,具體如下:系統要求:學員數據存儲在?件中系統功能:添加學員、刪除學員、修改學員信息、查詢學員信息、顯示所有學員信息、保存學員信息及退出系統等功能。

二、準備程序?件

1、分析

??分析    學員    管理系統?作中注意事項1. 為了?便維護代碼,?般?個???個程序?件;2. 項?要有主程序??,習慣為 main.py

2、創建程序?件

創建項??錄,例如: StudentManagerSystem程序?件如下:程序???件:main.py學員?件:student.py管理系統?件:managerSystem.py

三、書寫程序

1、student.py

需求:學員信息包含:姓名、性別、?機號;添加 __str__ 魔法?法,?便查看學員對象信息class Student(object): def __init__(self, name, gender, tel):     self.name = name     self.gender = gender     self.tel = tel def __str__(self):     return f"{self.name}, {self.gender}, {self.tel}"

2、managerSystem.py

需求:存儲數據的位置:?件(student.data)    加載?件數據    修改數據后保存到?件存儲數據的形式:列表存儲學員對象系統功能    添加學員    刪除學員    修改學員    查詢學員信息    顯示所有學員信息    保存學員信息    退出系統

2.1 定義類

class StudentManager(object): def __init__(self):     # 存儲數據所?的列表     self.student_list = []

2.2 管理系統框架

需求:系統功能循環使?,?戶輸?不同的功能序號執?不同的功能。步驟   定義程序??函數       加載數據       顯示功能菜單       ?戶輸?功能序號       根據?戶輸?的功能序號執?不同的功能   定義系統功能函數,添加、刪除學員等   class StudentManager(object): def __init__(self):     # 存儲數據所?的列表     self.student_list = [] # ?. 程序??函數,啟動程序后執?的函數 def run(self):     # 1. 加載學員信息     self.load_student()     while True:         # 2. 顯示功能菜單         self.show_menu()         # 3. ?戶輸?功能序號         menu_num = int(input("請輸?您需要的功能序號:"))         # 4 根據?戶輸?的功能序號執?不同的功能         if menu_num == 1:             # 添加學員             self.add_student()         elif menu_num == 2:             # 刪除學員             self.del_student()         elif menu_num == 3:             # 修改學員信息             self.modify_student()         elif menu_num == 4:             # 查詢學員信息             self.search_student()         elif menu_num == 5:             # 顯示所有學員信息             self.show_student()         elif menu_num == 6:             # 保存學員信息             self.save_student()         elif menu_num == 7:             # 退出系統             break # ?. 定義功能函數 # 2.1 顯示功能菜單 @staticmethod def show_menu():     print("請選擇如下功能-----------------")     print("1:添加學員")     print("2:刪除學員")     print("3:修改學員信息")     print("4:查詢學員信息")     print("5:顯示所有學員信息")     print("6:保存學員信息")     print("7:退出系統") # 2.2 添加學員 def add_student(self):     pass # 2.3 刪除學員 def del_student(self):     pass # 2.4 修改學員信息 def modify_student(self):     pass # 2.5 查詢學員信息 def search_student(self):     pass # 2.6 顯示所有學員信息 def show_student(self):     pass # 2.7 保存學員信息 def save_student(self):     pass # 2.8 加載學員信息 def load_student(self):     pass

3、main.py

# 1. 導?managerSystem模塊from managerSystem import *# 2. 啟動學員管理系統if __name__ == "__main__": student_manager = StudentManager() student_manager.run()

4、定義系統功能函數

4.1 添加功能

需求:?戶輸?學員姓名、性別、?機號,將學員添加到系統。步驟    ?戶輸?姓名、性別、?機號    創建該學員對象    將該學員對象添加到列表代碼# 添加學員函數內部需要創建學員對象,故先導?student模塊from student import *class StudentManager(object): ...... # 2.2 添加學員 def add_student(self):     # 1. ?戶輸?姓名、性別、?機號     name = input("請輸?您的姓名:")     gender = input("請輸?您的性別:")     tel = input("請輸?您的?機號:")     # 2. 創建學員對象:先導?學員模塊,再創建對象     student = Student(name, gender, tel)     # 3. 將該學員對象添加到列表     self.student_list.append(student)         # 打印信息     print(self.student_list)     print(student)

4.2 刪除學員

需求:?戶輸??標學員姓名,如果學員存在則刪除該學員。步驟    ?戶輸??標學員姓名    遍歷學員數據列表,如果?戶輸?的學員姓名存在則刪除,否則則提示該學員不存在。代碼# 2.3 刪除學員:刪除指定姓名的學員 def del_student(self):     # 1. ?戶輸??標學員姓名     del_name = input("請輸?要刪除的學員姓名:")         # 2. 如果?戶輸?的?標學員存在則刪除,否則提示學員不存在     for i in self.student_list:         if i.name == del_name:             self.student_list.remove(i)             break     else:         print("查?此?!")     # 打印學員列表,驗證刪除功能     print(self.student_list)

4.3 修改學員信息

需求:?戶輸??標學員姓名,如果學員存在則修改該學員信息。步驟    ?戶輸??標學員姓名;    遍歷學員數據列表,如果?戶輸?的學員姓名存在則修改學員的姓名、性別、?機號數據,否則則提示該學員不存在。代碼# 2.4 修改學員信息 def modify_student(self):     # 1. ?戶輸??標學員姓名     modify_name = input("請輸?要修改的學員的姓名:")     # 2. 如果?戶輸?的?標學員存在則修改姓名、性別、?機號等數據,否則提示學員不存在     for i in self.student_list:         if i.name == modify_name:             i.name = input("請輸?學員姓名:")             i.gender = input("請輸?學員性別:")             i.tel = input("請輸?學員?機號:")             print(f"修改該學員信息成功,姓名{i.name},性別{i.gender}, ?機號{i.tel}")             break     else:         print("查?此?!")

4.5 查詢學員信息

需求:?戶輸??標學員姓名,如果學員存在則打印該學員信息步驟    ?戶輸??標學員姓名    遍歷學員數據列表,如果?戶輸?的學員姓名存在則打印學員信息,否則提示該學員不存在。代碼# 2.5 查詢學員信息 def search_student(self):     # 1. ?戶輸??標學員姓名     search_name = input("請輸?要查詢的學員的姓名:")     # 2. 如果?戶輸?的?標學員存在,則打印學員信息,否則提示學員不存在     for i in self.student_list:         if i.name == search_name:             print(f"姓名{i.name},性別{i.gender}, ?機號{i.tel}")             break     else:         print("查?此?!")

4.6 顯示所有學員信息

打印所有學員信息步驟    遍歷學員數據列表,打印所有學員信息代碼# 2.6 顯示所有學員信息 def show_student(self):     print("姓名\t性別\t?機號")     for i in self.student_list:         print(f"{i.name}\t{i.gender}\t{i.tel}")

4.7 保存學員信息

需求:將修改后的學員數據保存到存儲數據的?件。步驟    打開?件    ?件寫?數據    關閉?件思考1. ?件寫?的數據是學員對象的內存地址嗎?2. ?件內數據要求的數據類型是什么?拓展 __dict__class A(object): a = 0 def __init__(self): self.b = 1aa = A()# 返回類內部所有屬性和?法對應的字典print(A.__dict__)# 返回實例屬性和值組成的字典print(aa.__dict__)代碼# 2.7 保存學員信息 def save_student(self):     # 1. 打開?件     f = open("student.data", "w")     # 2. ?件寫?學員數據     # 注意1:?件寫?的數據不能是學員對象的內存地址,需要把學員數據轉換成列表字典數據再做存儲     new_list = [i.__dict__ for i in self.student_list]     # [{"name": "aa", "gender": "nv", "tel": "111"}]     print(new_list)     # 注意2:?件內數據要求為字符串類型,故需要先轉換數據類型為字符串才能?件寫?數據     f.write(str(new_list))     # 3. 關閉?件     f.close()

4.8 加載學員信息

需求:每次進?系統后,修改的數據是?件??的數據步驟    嘗試以 "r" 模式打開學員數據?件,如果?件不存在則以 "w" 模式打開?件    如果?件存在則讀取數據并存儲數據        讀取數據        轉換數據類型為列表并轉換列表內的字典為對象        存儲學員數據到學員列表    關閉?件代碼# 2.8 加載學員信息 def load_student(self):     # 嘗試以"r"模式打開數據?件,?件不存在則提示?戶;?件存在(沒有異常)則讀取數據     try:         f = open("student.data", "r")     except:         f = open("student.data", "w")     else:         # 1. 讀取數據         data = f.read()         # 2. ?件中讀取的數據都是字符串且字符串內部為字典數據,故需要轉換數據類型再轉換字典為對象后存儲到學員列表         new_list = eval(data)         self.student_list = [Student(i["name"], i["gender"], i["tel"]) for i in new_list]     finally:         # 3. 關閉?件         f.close()

標簽: 管理系統 存儲數據

上一篇:焦點要聞:嵌入式:交換指令之SWP,MRS,MSR
下一篇:消息!腳本2分鐘實現電話短信報警