面向對象學員管理系統
添加
刪除
修改
查詢
系統需求
使用面向對象編程思想完成學員管理系統的開發
學員數據儲存在文件中
系統功能:添加學員信息,刪除學員信息,修改學員信息,查詢學員信息,顯示學員信息,保存學員信息,退出系統
注意:爲了方便維護代碼,一般一個角色一個程序文件,項目入口程序,習慣爲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表示查詢學員功能
- 輸入5表示顯示所有學員
- 輸入6表示保存學員信息
- 輸入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】優質資源。