python面向对象习题-MVC电脑管理详细过程

文章来源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()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值