使??向?qū)ο缶幊趟枷胪瓿蓪W(xué)生管理系統(tǒng)的開發(fā),具體需求如下:
系統(tǒng)要求:學(xué)生數(shù)據(jù)存儲在指定?件中
系統(tǒng)功能:添加學(xué)生、刪除學(xué)生、修改學(xué)生信息、查詢學(xué)生信息、顯示所有學(xué)生信息、保存學(xué)生信息及退出系統(tǒng)等功能。
1、準(zhǔn)備文件
創(chuàng)建項(xiàng)目目錄:學(xué)生管理系統(tǒng)
需要py文件:
程序???件:Main.py
學(xué)員?件:Student.py
管理系統(tǒng)?件:StudentManager.py

image.png
2、代碼實(shí)現(xiàn)
Main.py 為項(xiàng)目運(yùn)行入口
from StudentManager import *
if __name__ == '__main__':
studentManager = StudentManager()
studentManager.run()
Student.py
學(xué)生信息包含:姓名、性別、?機(jī)號;所以在初始化方法中設(shè)置屬性
添加 str 魔法?法,?便查看學(xué)生對象信息
class Student():
def __init__(self,name,sex,phone):
self.name = name
self.sex = sex
self.phone = phone
def __str__(self):
return f"{self.name},{self.sex},{self.phone}"
StudentManager.py用于實(shí)現(xiàn)對學(xué)生的各種操作
from Student import *
class StudentManager():
def __init__(self):
self.student_list = []
@staticmethod
def menu():
print('請選擇如下功能-----------------')
print('1:添加學(xué)員')
print('2:刪除學(xué)員')
print('3:修改學(xué)員信息')
print('4:查詢學(xué)員信息')
print('5:顯示所有學(xué)員信息')
print('6:保存學(xué)員信息')
print('7:退出系統(tǒng)')
def run(self):
self.load_student()
while True:
self.menu()
number = int(input("輸入你要選擇的菜單序號:"))
if number == 1:
self.add_student()
elif number == 2:
self.delete_student()
elif number ==3:
self.update_student()
elif number == 4:
self.search_student()
elif number == 5:
self.show_all()
elif number ==6:
self.save_student()
elif number == 7:
break
def add_student(self):
name = input("請輸入學(xué)生姓名:")
sex = input("請輸入學(xué)生性別:")
phone = input("請輸入學(xué)生電話:")
for s in self.student_list:
if s.phone == phone :
print("該學(xué)生已存在~")
break
else:
ss = Student(name, sex, phone)
self.student_list.append(ss)
def update_student(self):
name = input("請輸入學(xué)生姓名:")
for ss in self.student_list:
if name == ss.name:
ss.sex = input("請輸入學(xué)生性別:")
ss.phone = input("請輸入學(xué)生電話:")
print(f"修改學(xué)生{name}的性別為{ss.sex},電話為{ss.phone}")
break
else:
print("查無此人~")
def delete_student(self):
name = input("請輸入要刪除的學(xué)生姓名:")
for ss in self.student_list:
if name == ss.name:
self.student_list.remove(ss)
break
else:
print("查無此人~")
def search_student(self):
name = input("請輸入要查詢的學(xué)生姓名:")
for ss in self.student_list:
if name == ss.name:
print(f"學(xué)生{name}的性別為{ss.sex},電話為{ss.phone}")
break
else:
print("查無此人~")
def show_all(self):
print("姓名\t性別\t電話")
for ss in self.student_list:
print(f"{ss.name}\t{ss.sex}\t{ss.phone}")
def save_student(self):
file = open("student.txt",'w')
#方法一
for ss in self.student_list:
file.write(str(ss.__dict__)+"\n")
# 方法二 ?件寫?的數(shù)據(jù)不能是學(xué)員對象的內(nèi)存地址,需要把學(xué)員數(shù)據(jù)轉(zhuǎn)換成列表字典數(shù)據(jù)再做存儲
# data_list = [s.__dict__ for s in self.student_list]
# print(data_list)
#?件內(nèi)數(shù)據(jù)要求為字符串類型,故需要先轉(zhuǎn)換數(shù)據(jù)類型為字符串才能?件寫?數(shù)據(jù)
# file.write(str(data_list))
file.close()
def load_student(self):
try:
file = open("student.txt","r")
except:
file = open("student.txt","w")
else:
data = file.read()
if len(data)>0:
stu_list = eval(data)
self.student_list = [Student(i['name'],i['sex'],i['phone']) for i in stu_list]
else:
self.student_list =[]
finally:
file.close()