一、概述
1.1涉及到的知識點
項目開發:創建項目,創建包,導入包;
面向對象:靜態方法,繼承,內置函數,自定義函數;
數據類型:列表,字典,字符串、列表、字典的轉換和自動生成導向;
異常處理:捕獲異常; 文件操作:讀,寫;
1.2需求分析
(1)思考學員管理系統需要哪些功能?
(2)思考可以將哪些功能對象化?
(3)創建的對象可將功能方法化(函數化)嗎?
二、具體實現
(1)創建項目:StudentManagerSystem;
(2)創建文件:main,managerSystem,student;
(3)在文件內創建具體對象;
Student:基本屬性有name,gender,tel,方法(__str__)返回具體屬性值
managerSystem:屬性依賴於Student,本身無屬性,
功能有:執行函數run,靜態方法show_menu,以及add_stu等增刪改操作
main:創建對象,執行文件
(4)細節要點
確保在相應文件首部中導入正確的包,即使正確,仍可能有警告;
每寫完一個小功能,都要立即進行測試,發現問題及時解決;
注意數據的存儲形式,列表,字符串;
三、總結
這個項目跟着老師做了差不多一周,因為涉及的知識點很多事前面學過但沒有很熟練掌握的,所以有些吃力,加上最近開學,有很任務要完成,勉強每天學一點,效果不是很好,但學了總比沒學好。馬上就要進入mooc學圖形了,不求每天學得很多,能學一點是一點,希望自己可以堅持下去吧!
四、完整源碼
1 # student.py 2 class Student(object): 3 def __init__(self, name, gender, tel): 4 self.name = name 5 self.gender = gender 6 self.tel = tel 7 8 def __str__(self): 9 return f'姓名:{self.name},' \ 10 f'性別:{self.gender},' \ 11 f'手機號:{self.tel}' 12 13 14 # managerSystem.py 15 """ 16 存儲數據:文件(student.data) 17 加載文件數據 18 修改數據后保存到文件 19 存儲形式:list 存儲學員對象 20 系統功能:add,del,modify,find,display,save,exit 21 """ 22 from student import * 23 24 25 class StudentManager(object): 26 def __init__(self): 27 """存儲數據""" 28 self.stu_list = [] 29 30 def run(self): 31 self.load_stu() 32 33 while True: 34 self.show_menu() 35 k = int(input('請輸入功能序號:\n')) 36 if k == 1: 37 self.add_stu() 38 elif k == 2: 39 self.del_stu() 40 elif k == 3: 41 self.modify() 42 elif k == 4: 43 self.find() 44 elif k == 5: 45 self.display() 46 elif k == 6: 47 self.save() 48 elif k == 7: 49 break 50 51 @staticmethod 52 def show_menu(): 53 """顯示功能菜單""" 54 print('請選擇如下功能:') 55 print('1:添加學員') 56 print('2:刪除學員') 57 print('3:修改學員信息') 58 print('4:查詢學員') 59 print('5:顯示全部學員信息') 60 print('6.:保存學員信息') 61 print('7:退出系統') 62 63 def add_stu(self): 64 name = input('請輸入您的姓名:') 65 gender = input('請輸入您的性別:') 66 tel = input('請輸入您的電話號碼:') 67 stu = Student(name, gender, tel) 68 self.stu_list.append(stu) 69 print(self.stu_list, stu) 70 71 def del_stu(self): 72 del_name = input('請輸入要刪除學員姓名:') 73 for i in self.stu_list: 74 if i.name == del_name: 75 self.stu_list.remove(i) 76 break 77 else: 78 print('查無此人。') 79 print(self.stu_list) 80 81 def modify(self): 82 modiy_name = input('請輸入要修改的學員姓名:') 83 for i in self.stu_list: 84 if i.name == modiy_name: 85 i.name = input('請輸入您的姓名:') 86 i.gender = input('請輸入您的性別:') 87 i.tel = input('請輸入您的電話號碼:') 88 print(f'姓名:{i.name},性別:{i.gender},電話號碼:{i.tel}\n' 89 f'修改學員信息成功.') 90 break 91 else: 92 print('該學員不存在!') 93 94 def find(self): 95 find_name = input('請輸入要修改的學員姓名:') 96 for i in self.stu_list: 97 if i.name == find_name: 98 print(f'姓名:{i.name},性別:{i.gender},電話號碼:{i.tel}\n' 99 f'修改學員信息成功.') 100 break 101 else: 102 print('該學員不存在!') 103 104 def display(self): 105 for i in self.stu_list: 106 print(f'姓名:{i.name},' 107 f'性別:{i.gender},' 108 f'電話號碼:{i.tel}\n' 109 f'修改學員信息成功.') 110 111 def save(self): 112 """文件寫入學員數據""" 113 f = open('student.data', 'w') 114 new_list = [i.__dict__ for i in self.stu_list] 115 f.write(str(new_list)) 116 f.close() 117 118 def load_stu(self): 119 try: 120 f = open('student.data', 'r') 121 except: 122 f = open('student.data', 'w') 123 else: 124 data = f.read() 125 126 # 將data字符串轉換為列表類型數據 127 new_list = eval(data) 128 129 # 列表推導式 130 self.stu_list = [Student(i['name'], 131 i['gender'], 132 i['tel'] ) 133 for i in new_list] 134 finally: 135 f.close() 136 137 # main.py 138 from managerSystem import * 139 140 141 if __name__ == '__main__': 142 stu = StudentManager() 143 stu.run()