Python日常筆記(20) - 基礎鞏固

面向對象學員管理系統

添加
刪除
修改
查詢

系統需求

使用面向對象編程思想完成學員管理系統的開發
學員數據儲存在文件中
系統功能:添加學員信息,刪除學員信息,修改學員信息,查詢學員信息,顯示學員信息,保存學員信息,退出系統
注意:爲了方便維護代碼,一般一個角色一個程序文件,項目入口程序,習慣爲main.py

創建程序文件

創建目錄名稱:StudentManangerSystem
程序文件名稱:入口文件-main.py,學員文件-student.py,管理系統文件-mananagerSystem.py

Student.py

class Student(object):
   def __init__(self, name, age, no):
       self.name = name
       self.age = age
       self.no = no

   def __str__(self):
       return f"{self.name},{self.age},{self.no}"

功能實現步驟
存儲數據的位置:student.data
加載數據
修改數據後保存文件
存儲數據形式:列表存儲學員對象
系統功能

添加學員
刪除學員
修改學員
查詢學員
顯示所有學員
保存學員

  1. 加載數據
  2. 顯示功能菜單
  3. 用戶輸入功能序號執行不同的功能
  4. 定義系統功能函數,添加,刪除學員等

序號功能列表

  1. 輸入1表示添加學員功能
  2. 輸入2表示刪除學員功能
  3. 輸入3表示修改學員功能
  4. 輸入4表示查詢學員功能
  5. 輸入5表示顯示所有學員
  6. 輸入6表示保存學員信息
  7. 輸入7表示退出系統

mananagerSystem.py代碼如下:

from student import *

class MananagerSystem(object):
   def __init__(self):
       self.studenData = []
   def run(self):

# 加載學員信息
 self.loadStudents()
       while True:
           # 顯示功能序號
           self.showNumber()
           # 輸入序號
           num = input("請輸入功能序號:")

           # 輸入1表示添加學員功能
           if num == "1":
               self.addStudent()
           # 輸入2表示刪除學員功能
           elif num == "2":
               self.delStudent()
           # 輸入3表示修改學員功能
           elif num == "3":
               self.updateStudent()
           # 輸入4表示查詢學員功能
           elif num == "4":
               self.searchStudent()
           # 輸入5表示顯示所有學員
           elif num == "5":
               self.showStudent()
           # 輸入6表示保存學員信息
           elif num == "6":
               self.saveStudent()
           # 輸入7表示退出系統
           elif num == "7":
               break

   def showNumber(self):
       print("功能序號描述:")
       print("\t1.添加學員")
       print("\t2.刪除學員功能")
       print("\t3.修改學員功能")
       print("\t4.查詢學員功能")
       print("\t5.顯示所有學員")
       print("\t6.保存學員信息")
       print("\t7.退出系統")

   # 添加學員
   def addStudent(self):
       pass
   # 刪除學員功能
   def delStudent(self):
       pass
   # 修改學員功能
   def updateStudent(self):
       pass
   # 查詢學員功能
   def searchStudent(self):
       pass
   # 顯示所有學員
   def showStudent(self):
       pass
   # 保存學員信息
   def saveStudent(self):
       pass

# 加載學員信息

def loadStudents(self):

pass

後續就開始補全各個功能代碼.

添加功能

用戶輸入姓名,性別,學號
創建學員對象
將該學員對象添加到列表

# 添加學員
def addStudent(self):
   name = input("請輸入學員名稱:")
   age = input("請輸入學員年齡:")
   no = input("請輸入學員學號:")
   stu = Student(name, age, no)

刪除學員功能
用戶輸入學員姓名
遍歷學員數據列表
如果用戶輸入的學員姓名存在則刪除,如果不存在提示學員不存在

# 刪除學員功能
def delStudent(self):
   name = input("請輸入學員名稱:")
   for stu in self.studenData:
       if stu.name == name:
           self.studenData.remove(stu)
           print("刪除成功")
           break
   else:
       print("學員不存在")

修改學員信息

用戶輸入目標學員姓名,遍歷學員數據列表,如果用戶學員存在則修改姓名,年齡,學號,否則提示該學員不存在

# 修改學員功能
def updateStudent(self):
   name = input("請輸入學員名稱:")
   for stu in self.studenData:
       if stu.name == name:
           yes = input(f"需要修改的學員信息:{stu.name},{stu.age},{stu.no},是否繼續修改,是:y,否:其它")
           if yes == "y":
               name = input("請輸入學員名稱:")
               age = input("請輸入學員年齡:")
               no = input("請輸入學員學號:")
               stu.name = name
               stu.age = age
               stu.no = no
           break
   else:
       print("學員不存在")

查詢學員信息

用戶輸入學員名稱,遍歷數據列表,如果學員存在則打印,如果不存在則打印學員不存在

# 查詢學員功能
def searchStudent(self):
   name = input("請輸入學員名稱:")
   for stu in self.studenData:
       if stu.name == name:
           print(f"需要修改的學員信息:{stu.name},{stu.age},{stu.no},是否繼續修改,是:y,否:其它")
           break
   else:
       print("學員不存在")

顯示所有學員信息

遍歷列表,循環打印學員信息

# 顯示所有學員
def showStudent(self):
   print(f"姓名\t性別\t手機號")
   for stu in self.studenData:
       print(f"{stu.name}\t{stu.age}\t{stu.no}")

保存學員信息

打開文件,文件寫入數據,關閉文件,保存文件時可以使用列表推導式將實體對象推到成字典類型,__dict__這個屬性是可以將實體對象變爲字典類型

# 保存學員信息
def saveStudent(self):
   try:
       f = open("student.data", "w")
   except Exception as error:
       print(error)
   else:
       # 列表推導式將實體對象推到成字典類型
       stu_list = [stu.__dict__ for stu in self.studenData]
       print(stu_list)
       print(str(stu_list))
       # 將列表對象轉換成string類型
       f.write(str(stu_list))
   finally:
       f.close()

加載學員

打開文件如果文件不存在則創建文件,如果文件存在,然後讀取數據,將數據轉換成字典類型的序列,然後展示

# 加載學員信息
def loadStudents(self):
   try:
       # 讀取數據
       f = open("student.data", "r")
   except:
       f = open("student.data", "w")
   else:
       stu_list = f.read()
       # 將讀取出來的數據轉換成字典類型的序列
       new_list = eval(stu_list)
       # 再將字典序列推導式成對象序列展示
       self.studenData = [Student(stu["name"],stu["age"],stu["no"]) for stu in new_list]
   finally:
       f.close()

作者:阿超
原創公衆號:『Python日常筆記』,專注於 Python爬蟲等技術棧和有益的程序人生,會將一些平時的日常筆記都慢慢整理起來,也期待你的關注和阿超一起學習,公衆號回覆【csdn】優質資源。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章