项目开发流程:
-
项目开发流程图
项目开发流程 -
不想成为架构师不是好程序员
架构师 - 需求从哪来?
---需求从产品经理来。 - 详细需求文档写什么?
---将需求拆分成一个个具体需求类, - 类里面写什么?
---数据+行为
image.png - 有详细需求后做什么?
---画图,画类的关系图
---看图开发代码,一边看图,一边开发代码。
---一边看图,一边看代码
"""
练习14:封装练习 - 学生管理系统
"""
import operator
class StudentModel:
"""
学生信息模型(封装数据)
"""
def __init__(self, name='', age=0, score=0, stu_id=0):
"""
创建学生对象
:param name: 姓名 str 类型
:param age: 年龄 int 类型
:param score: 分数 int 类型
:param stu_id: 编号(唯一)
"""
self.id = stu_id
self.name = name
self.age = age
self.score = score
class StudentManagerController:
"""
学生管理控制器,负责学生信息操作
"""
# 类变量,表示初始编号
init_id = 1000
def __init__(self):
self.__stu_list = []
@property
def stu_list(self):
"""
学生列表,
:return: 存储学生对象的列表
"""
return self.__stu_list
def add_student(self, stu_info):
"""
添加一个学生信息
:param stu_info: 没有编号的学生信息
:return:
"""
self.__generate_id(stu_info)
self.stu_list.append(stu_info)
def remove_student(self, stu_id):
"""
根据 ID, 删除学生
:param stu_id: 学生编号
:return: 是否删除成功 boolean 类型
"""
for i in range(len(self.stu_list) - 1, -1, -1):
if self.stu_list[i].id == stu_id:
del self.stu_list[i]
return True # 移除成功
return False # 移除失败
def update_student(self, stu_info):
"""
修改学生信息
:param stu_info:
:return:
"""
for item in self.__stu_list:
if item.id == stu_info.id:
item.name = stu_info.name
item.age = stu_info.age
item.score = stu_info.score
return True # 删除成功
return False # 删除失败
@staticmethod
def __generate_id(stu_info):
"""
生成学生编号
:param stu_info: 学生对象信息
:return: 学生对象信息
"""
StudentManagerController.init_id += 1
stu_info.id = StudentManagerController.init_id
def get_stu_list(self):
for item in self.stu_list:
print("ID:%s, 学生:%s, 年龄:%s, 成绩:%s" % (item.id, item.name, item.age, item.score))
class StudentMangerView:
def __init__(self):
self.__manager = StudentManagerController()
@staticmethod
def __display_menu():
print("(1)添加学生")
print("(2)显示学生")
print("(3)删除学生")
print("(4)修改学生")
print("(5)排序学生")
def __select_menu(self):
item = input("请输入:")
if item == "1":
self.__input_student()
elif item == "2":
self.__output_students()
elif item == "3":
self.__remove_student()
elif item == "4":
self.__update_student()
elif item == "5":
self.__sort_student()
def __input_student(self):
name = input("请输入学生姓名:")
age = int(input("请输入学生年龄:"))
scope = int(input("请输入学生分数:"))
self.__manager.add_student(StudentModel(name, age, scope))
def __output_students(self):
student_infos = self.__manager.stu_list
for item in student_infos:
print(item.id, item.name, item.age, item.score)
def __remove_student(self):
s_id = int(input("请输入删除学生编号:"))
res = True if self.__manager.remove_student(s_id) else False
print(res)
def __update_student(self):
s_id = int(input("请输入学生编号:"))
name = input("请输入学生姓名:")
age = input("请输入学生年龄:")
scope = input("请输入学生分数:")
self.__manager.update_student(StudentModel(name, age, scope, s_id))
def __sort_student(self):
student_infos = self.__manager.stu_list
sort_fun = operator.attrgetter('score')
student_infos.sort(key=sort_fun, reverse=True)
for item in student_infos:
print(item.id, item.name, item.age, item.score)
def main(self):
while True:
self.__display_menu()
self.__select_menu()
# manage = StudentManagerController()
# manage.add_student(StudentModel('xiaozan', 18, 99))
# manage.add_student(StudentModel('qiuyu', 18, 88))
# manage.add_student(StudentModel('tianyi', 20, 90))
# print(manage.remove_student(1002))
# manage.update_student(StudentModel('tianyi', 20, 92, 1003))
# manage.get_stu_list()
view = StudentMangerView()
view.main()
网友评论