文章来源https://pythonsun.cn/?id=57
"""
--------------computer MVC-----------------
brang: 品牌
memory: 内存大小
sn: 电脑编码(惟一)
cpu: cpu的型号
注:编写流程已标好从第一步到左后一步1,2,3,.....
--------------------------------------------
"""
# 电脑模型类M--(第6步)
class ComputerModel:
def __init__(self, sn="", brang="", memory="", cpu=""):
self.sn = sn
self.brang = brang
self.memory = memory
self.cpu = cpu
# 浏览类V--(第1步)
class ComputerView:
# 创建调用对象--(第7步)
def __init__(self):
self.control = ComputerController()
# 显示按键功能--(第2步)
def display_menu(self):
print("按1添加,按2显示,按3删除,按4更新")
# 选项分支
def display_select(self):
# 选项分支写到输入1--(第4步)
number = int(input("请输入选项:"))
if number == 1:
self.get_new_data()
# 显示数据到输入2--(第15步)
elif number == 2:
self.display_data()
# 显示数据到输入3--(第17步)
elif number == 3:
self.get_delete_data()
# 显示数据到输入4--(第20步)
elif number == 4:
self.get_update_data()
# 循环调用显示选项和选择某一项方法--(第3步)
def main(self):
while True:
self.display_menu()
self.display_select()
if input("输入q退出操作,按其它键据需操作!") == "q":
break
# 获取添加数据,跨类调用添加方法,并将数据传递过去--(第5步)
def get_new_data(self):
# 涉及封装提交数据,要建立M累,编写第6步
data_box = ComputerModel()
data_box.brang = input("请输入电脑品牌:")
data_box.memory = input("请输入内存大小:")
data_box.cpu = input("请输入CPU型号:")
# 涉及夸类调用,创建调用对象,编写第7步,之后建立C类
self.control.add_new(data_box)
# 跨类调用列表显示数据后,返回选项分支--(第16步)
def display_data(self):
for item in self.control.list_data:
print(f"SN编号是:{item.sn},电脑品牌是:{item.brang},内存大小是:{item.memory},cpu型号是:{item.cpu}")
# 获取要删除电脑的SN编号,跨类调用删除方法,返回True或者False--(第18步)
def get_delete_data(self):
sn_num = int(input("输入要删除的电脑SN:"))
if self.control.delete_computer(sn_num):
print(f"删除sn编号为{sn_num}的电脑成功")
else:
print("不存在该编号的电脑.")
# 获取要跟新数据,跨类调用更新方法.-(第21步)
def get_update_data(self):
print("输入要跟新的sn号,及要跟新的电脑数据.")
update_date = ComputerModel()
update_date.sn = int(input("请输入要更新的sn编号:"))
update_date.brang = input("请输入电脑品牌新数据:")
update_date.memory = input("请输入内存大小新数据:")
update_date.cpu = input("请输入CPU型号新数据:")
#判断返回数据
if self.control.update_computer(update_date):
print("电脑数据更新成功")
else:
print("更新失败,不存在改SN的电脑.")
# 控制类C--(第8步)
class ComputerController:
# 类变量sn起始值--(第10步)
start_sn = 10000
# 创建一个列表对象--(第13步)
def __init__(self):
self.list_data = []
# 添加新电脑方法--(第9步)
def add_new(self, data_box):
# 建立类变量为添加SN,进入第10步,后调用类方法进入11步
ComputerController.get_sn(data_box)
# 添加数据到列表,先创建列表编写13步,进入添加完成,返回V的选项分支--(第14步)
self.list_data.append(data_box)
# 类方法填入data_box的sn值所用--(第11步)
@classmethod
def get_sn(cls, data_box):
data_box.sn = cls.start_sn
cls.start_sn += 1
# 删除一条电脑数据方法,True或False返回18步判断:--(第19步)
def delete_computer(self, sn_num):
for i in range(len(self.list_data)):
if self.list_data[i].sn == sn_num:
del self.list_data[i]
return True
return False
# 更新一条电脑数据方法,返货True或False回21步判断:--(第22步)
def update_computer(self, update_date):
for item in self.list_data:
if item.sn == update_date.sn:
item.__dict__ = update_date.__dict__
return True
return False
# 创建ComputerView类的对象:
dx = ComputerView()
# 调用对象main方法:
dx.main()