Python——面向對象,簡易學生信息管理系統


一、概述

 

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM