1.学生管理系统:
回答思路:学生管理系统分成三大类完成
(1)学生模型类:创建学生对象id ,姓名,年龄,成绩。
(2)学生业务逻辑类:学生的增,删,改,查 保存 等操作。
(3)图形界面类 :显示业务图形,给用户提供选择,连接学生模型类,学生逻辑业务处理类。
#student_manager_system
class StudentModel:
'''
学生模型
'''
def __init__(self, name="", age=0, score=0,id=0):
'''
创建学生对象
:param id: 编号 该学生的唯一标识
:param name: 姓名 str
:param age: 年龄 int
:param score: 成绩 int
'''
self.id = id
self.name = name
self.age = age
self.score = score
class StudentManagerController:
'''
学生管理控制器 处理业务逻辑
'''
__stu_id = 1000
def __init__(self):
self.__stu_list = []
@property
def stu_list(self):
return self.__stu_list
def add_student(self,stu):
#为学生设置id 递增
# StudentManagerController.__stu_id += 1
#stu.id = StudentManagerController.__stu_id
stu.id = self.__generate_id()
#将学生添加到学生列表
self.__stu_list.append(stu)
def __generate_id(self):
StudentManagerController.__stu_id += 1
return StudentManagerController.__stu_id
# 删除学生remove_student
#根据id删除学生
#删除后返回结果 成功True/失败False
def remove_student(self,id):
'''
根据编号删除学生
:param id: 编号
:return: 删除的结果
'''
for item in self.__stu_list:
if item.id == id:
self.__stu_list.remove(item)
return True
return False
def update_student(self,stu):
for item in self.__stu_list:
if item.id == stu.id:
item.name = stu.name
item.age = stu.age
item.score = stu.score
return True
return False
# 根据成绩排序order_by_score。
#你是谁 你要找谁
def order_by_score(self):
for i in range(len(self.__stu_list)-1):
for c in range(i+1,len(self.__stu_list)):
if self.__stu_list[i].score > self.__stu_list[c].score:
self.__stu_list[i],self.__stu_list[c] = self.__stu_list[c],self.__stu_list[i]
class StudentManagerView:
def __init__(self):
self.__manager = StudentManagerController()
def __display_menu(self):
print('+---------------------+')
print('| 1)添加学生信息 |')
print('| 2)显示学生信息 |')
print('| 3)删除学生信息 |')
print('| 4)修改学生信息 |')
print('| 5)按照成绩升序排序 |')
print('+---------------------+')
def __select_menu(self):
option = input('请输入:')
if option == '1':
self.__input_students()
elif option == '2':
self.__output_students(self.__manager.stu_list)
elif option == '3':
self.__delete_student()
elif option == '4':
self.__modify_student()
elif option == '5':
self.__output_student_by_socre()
def main(self):
'''
界面入口
:return:
'''
while True:
self.__display_menu()
self.__select_menu()
# 输入学生__input_students
def __input_students(self):
#收集学生信息
#要求输入 姓名 年龄 成绩
#创建学生对象(姓名 年龄 成绩)
#去控制器找add_student方法
name = input('请输入学生姓名:')
age = int(input('请输入学生年龄:'))
score = int(input('请输入学生成绩:'))
stu = StudentModel(name,age,score)
self.__manager.add_student(stu)
# 输出学生__output_students
def __output_students(self,list):
for item in list:
print(item.name,item.age,item.score,item.id)
# 删除学生__delete_student
def __delete_student(self):
#需要用户输入学生id
#调用管理器对象的删除学生方法
#如果结果为True 显示删除成功
#否则显示删除失败
id = int(input('请输入要删除学生的编号:'))
if self.__manager.remove_student(id):
print('删除成功')
else:
print('删除失败')
#修改学生信息__modify_student
def __modify_student(self):
#收集用户输入的信息保存到对象
#调用管理器的修改学生的方法
id = int(input('请输入要修改学生的编号:'))
name = input('请输入新的学生姓名:')
age = int(input('请输入新的学生年龄:'))
score = int(input('请输入新的学生成绩:'))
stu = StudentModel(name,age,score,id)
if self.__manager.update_student(stu):
print('修改成功')
else:
print('修改失败')
def __output_student_by_socre(self):
self.__manager.order_by_score()
self.__output_students(self.__manager.stu_list)
view = StudentManagerView()
# view.display_menu()
view.main()