需求:对学生信息(姓名、年龄、分数)进行添加、显示、删除、修改和根据分数排序五个操作。
主要是分成三个类来做:数据模型、逻辑控制、界面视图。
class Student:
#数据模型
def __init__(self,name='',age=0,score=0,id=0):
self.id=id
self.name=name
self.age=age
self.score=score
class Work:
#逻辑控制
__init_id=1000
def __init__(self):
self.__stu_list=[]
@property
def stu_list(self):
return self.__stu_list
def add_stu(self,stu_info):
stu_info.id=self.__get_id()
self.stu_list.append(stu_info)
def __get_id(self):
Work.__init_id+=1
return Work.__init_id
def remove_stu(self,id_value):
#删除学生
for i in self.__stu_list:
if i.id==id_value:
self.__stu_list.remove(i)
return True#删除成功
return False#删除失败
def update_stu(self,stu_info):
#根据编号修改信息
for i in self.stu_list:
if i.id==stu_info.id:
i.name=stu_info.name
i.age=stu_info.age
i.score=stu_info.score
return True
return False
def sort_stu(self):
#按照分数降序排序
for i in range(len(self.stu_list)-1):
for j in range(i+1,len(self.stu_list)):
if self.stu_list[i].score<self.stu_list[j].score:
self.stu_list[i],self.stu_list[j]\
=self.stu_list[j],self.stu_list[i]
class View:
#界面视图
def __init__(self):
self.manager=Work()
def __display_menu(self):
print('(1)添加')
print('(2)显示')
print('(3)删除')
print('(4)修改')
print('(5)排序')
def __select_menu(self):
a=int(input('请选择:'))
if a==1:
self.__input_stu()
elif a==2:
self.__output_stu()
elif a==3:
self.__delete_stu()
elif a==4:
self.__modify_stu()
elif a==5:
self.sort_student()
def main(self):
while True:
self.__display_menu()
self.__select_menu()
def __input_stu(self):
name=input('请输入姓名')
age=int(input('请输入年龄'))
score=int(input('请输入分数'))
stu=Student(name,age,score)
self.manager.add_stu(stu)
def __output_stu(self):
for i in self.manager.stu_list:
print(i.id,i.name,i.age,i.score)
def __delete_stu(self):
b=int(input('请输入编号'))
self.manager.remove_stu(b)
def __modify_stu(self):
stu=Student()
stu.id=int(input('请输入编号'))
stu.name=input('请输入新姓名')
stu.age=int(input('请输入新年龄'))
stu.score=int(input('请输入新分数'))
self.manager.update_stu(stu)
def sort_student(self):
self.manager.sort_stu()
v=View()
v.main()