"""
学生管理器系统
"""
class StudentModel:
"""
学生数据模型类
"""
def __init__(self, name="", age=0, score=0, id=0):
"""
创建学生对象
:param id: 编号
:param name: 姓名
:param age: 年龄
:param score: 成绩
"""
self.id = id
self.name = name
self.age = age
self.score = score
@property
def id(self):
return self.__id
@id.setter
def id(self, value):
self.__id = value
@property
def name(self):
return self.__name
@name.setter
def name(self, value):
self.__name = value
@property
def age(self):
return self.__age
@age.setter
def age(self, value):
self.__age = value
@property
def score(self):
return self.__score
@score.setter
def score(self, value):
self.__score = value
class StudentManagerController:
"""
学生逻辑控制器
"""
def __init__(self):
self.__list_stu = []
@property
def list_stu(self):
return self.__list_stu
def add_student(self, stu):
"""
添加新学生
:param stu: 需要添加的学生对象
"""
stu.id = self.__generate_id()
self.__list_stu.append(stu)
def __generate_id(self):
# 生成编号的需求:新编号,比上次添加的对象编号多1.
return self.__list_stu[-1].id + 1 if len(self.__list_stu) > 0 else 1
def order_by_score(self, stu):
"""
根据成绩降序排列
:return:
"""
pass
def remove_student(self, id):
"""
删除学生
:param id:
:return:
"""
for stu in self.list_stu:
if stu.id == id:
self.list_stu.remove(stu)
return True # 表示删除成功
return False # 表示删除失败
def update_student(self, stu):
"""
更新学生信息
:return:
"""
for item in self.__list_stu:
if item.id == stu.id:
item.name = stu.name
item.score = stu.score
item.age = stu.age
return True
return False
class StudentManagerView:
"""
界面视图类
"""
def __init__(self):
# 创建逻辑控制器对象
self.__manager = StudentManagerController()
def __input_students(self):
# 1. 在控制台中录入学生信息,存成学生对象StudentModel.
stu = StudentModel()
stu.name = input("请输入姓名:")
stu.age = int(input("请输入年龄:"))
stu.score = int(input("请输入成绩:"))
# 2. 调用逻辑控制器的add_student方法
self.__manager.add_student(stu)
print(self.__manager)
def __output_students(self, list_target):
"""
显示学生列表信息
:return:
"""
# for stu in self.__manager.list_stu:
for stu in list_target:
# print(stu)
print("%d -- %s -- %d -- %d" % (stu.id, stu.name, stu.age, stu.score))
def __output_student_by_score(self):
"""
根据成绩显示所有学生信息
:return:
"""
list_target = self.__manager.order_by_score()
self.__output_students(list_target)
def __delete_student(self):
id = int(input("请输入需要删除的学生编号:"))
if self.__manager.remove_student(id):
print("删除成功")
else:
print("删除失败")
def __modify_student(self):
"""
修改学生信息
:return:
"""
stu = StudentModel()
stu.id = int(input("请输入需要修改的学生编号:"))
stu.name = input("请输入姓名:")
stu.age = int(input("请输入年龄:"))
stu.score = int(input("请输入成绩:"))
if self.__manager.update_student(stu):
print("修改成功")
else:
print("更新失败")
def __display_menu(self):
"""
显示菜单
:return:
"""
print("1) 添加学生")
print("2) 显示学生")
print("3) 删除学生")
print("4) 修改学生")
print("5) 按照成绩降序排列")
def __select_menu(self):
"""
选择菜单
:return:
"""
number = input("请输入选项:")
if number == "1":
self.__input_students()
elif number == "2":
self.__output_students(self.__manager.list_stu)
elif number == "3":
self.__delete_student()
elif number == "4":
self.__modify_student()
elif number == "5":
self.__output_student_by_score()
def main(self):
"""
界面入口方法
:return:
"""
while True:
self.__display_menu()
self.__select_menu()
view = StudentManagerView()
view.main()
sort = []
j = 0
for i in range(0, len(self.all)):
#采集总成绩
self.total.append(self.all[i][5])
#对总成绩里面的信息进行排序
self.total.sort(reverse=True)
while j < len(self.all):
for i in self.all:
#遍历数组寻找与总成绩中相同的元素
if i[5] == self.total[j]:
#按从高到低添加到排序数据里
sort.append(i)
j += 1
init2 = ["学号", "姓名", "语文成绩", "数学成绩", "英语成绩", "成绩总和"]
for i in init2:
print("%-10s" % i, end="")
print()
for i in sort:
for j in i:
print("%-12s" % j, end="", )
print()
Python学生成绩管理系统_有空多写数学的博客-CSDN博客_python学生成绩管理系统