【疫情信息管理系统Python版】

1.入门菜鸟版

epidemic_manager_system_v1.py

"""
    疫情信息管理系统v1
    epidemic manager system
        显示菜单
        选择菜单
        添加疫情
        显示疫情
        ...
"""
list_epidemic = []  # 一定在循环前,创建一个列表;若在循环中,则是创建多个列表
while True:
    # 1. 显示菜单
    print("按1键添加疫情")
    print("按2键显示疫情")
    print("按3键删除疫情")
    print("按4键修改疫情")
    print("按5键退出系统")
    # 2. 选择菜单
    number = input("请输入数字:")
    if number == "1":
        dict_epidemic = {
            "name": input("请输入疫情名称:"),
            "num": int(input("请输入疫情人数:"))
        }
        list_epidemic.append(dict_epidemic)
        print("输入成功!\n")
    elif number == "2":
        for item in list_epidemic:
            print("疫情名称疫情是%s,疫情人数是%s" % (item["name"], item["num"]))
        print()
    elif number == "3":
        epidemic_name = input("请输入要删除的疫情名称:")
        for i in range(len(list_epidemic)):
            if list_epidemic[i]["name"] == epidemic_name:
                del list_epidemic[i]
                print("删除成功!\n")
                break
            else:
                print("未找到要删除的目标!\n")

    elif number == "4":
        name = input("请输入要修改的疫情名称:")
        for item in list_epidemic:
            if item["name"] == name:
                item["name"] = input("请输入修改后的疫情名称:")
                item["num"] = input("请输入修改后的疫情人数:")
                print("修改成功!\n")
                break
            else:
                print("未找到要修改的目标!\n")

    elif number == "5":
        print("已退出系统!\n")
        break
    else:
        print("不存在该选项!!!\n")

2.函数版

epidemic_manager_system_v2.py

"""
    疫情信息管理系统v2
"""
list_epidemic = []


def display_menu():
    """显示菜单"""
    print("按1键添加疫情")
    print("按2键显示疫情")
    print("按3键删除疫情")
    print("按4键修改疫情")


def select_menu():
    """选择菜单"""
    number = input("请输入数字:")
    if number == "1":
        add_epidemic()
    elif number == "2":
        display_epidemic()
    elif number == "3":
        delete_epidemic()
    elif number == "4":
        change_epidemic()


def change_epidemic():
    name = input("请输入需要修改的读取名称:")
    for item in list_epidemic:
        if item["name"] == name:
            item["name"] = input("请输入地区名称:")
            item["new"] = int(input("请输入新增人数:"))
            item["now"] = int(input("请输入现有人数:"))
            break


def delete_epidemic():
    name = input("请输入需要删除的地区名称:")
    for i in range(len(list_epidemic)):
        if list_epidemic[i]["name"] == name:
            del list_epidemic[i]
            break  # 不停会报错


def display_epidemic():
    for item in list_epidemic:
        print("%s的主演是%s,热度是%s" % (item["name"], item["actor"], item["index"]))


def add_epidemic():
    dict_epidemic = {
        "name": input("请输入地区名称:"),
        "new": int(input("请输入新增人数:")),
        "now": int(input("请输入现有人数:"))
    }
    list_epidemic.append(dict_epidemic)


while True:
    display_menu()
    select_menu()

3.类版

epidemic_manager_system_v3.py

 """
    疫情信息管理系统v3
"""
list_epidemic = []  # type:list[EpidemicInformation]


class EpidemicInformation:

    def __init__(self, name, new=0, now=0):
        self.name = name
        self.new = new
        self.now = now

    def display(self):
        print("%s地区新增%s,现在是%s" % (self.name, self.new, self.now))


def display_menu():
    """显示菜单"""
    print("按1键添加疫情")
    print("按2键显示疫情")
    print("按3键删除疫情")
    print("按4键修改疫情")


def select_menu():
    """选择菜单"""
    number = input("请输入数字:")
    if number == "1":
        add_epidemic()
    elif number == "2":
        display_epidemic()
    elif number == "3":
        delete_epidemic()
    elif number == "4":
        change_epidemic()


def change_epidemic():
    name = input("请输入需要修改的读取名称:")
    for item in list_epidemic:
        if item.name == name:
            item.name = input("请输入地区名称:")
            item.new = int(input("请输入新增人数:"))
            item.now = int(input("请输入现有人数:"))
            break


def delete_epidemic():
    name = input("请输入需要删除的地区名称:")
    for i in range(len(list_epidemic)):
        if list_epidemic[i].name == name:
            del list_epidemic[i]
            break  # 不停会报错


def display_epidemic():
    for item in list_epidemic:
        print("%s的主演是%s,热度是%s" % (item.name, item.new, item.now))


def add_epidemic():
    epidemic = EpidemicInformation(
        input("请输入地区名称:"),
        int(input("请输入新增人数:")),
        int(input("请输入现有人数:"))
    )
    list_epidemic.append(epidemic)


while True:
    display_menu()
    select_menu()

4.MVC架构版

epidemic_manager_system_v4.py

"""
MVC架构
一、录入疫情信息
    view:显示菜单、选择菜单、录入信息
    model:封装地区、新增、现有
    controller:疫情列表、添加信息
二、显示疫情
    view:打印列表中的元素
    model:定义变量的显示格式
三、删除疫情
    view:录入地区,显示成败
    controller:在列表中移除元素
四、修改疫情
    view:录入旧地区,新数据(地区、新增、现有),显示成败
    controller:在列表中更新元素
"""


class EpidemicModel:
    """疫情模型:负责封装疫情信息"""

    def __init__(self, name, new=0, now=0):
        """
        封装地区、新增、现有
        :param name: 地区
        :param new: 新增
        :param now: 现有
        """
        self.name = name
        self.new = new
        self.now = now

    def display(self):
        return ("疫情地区名称为:%s,新增人数为:%s,现有人数为:%s" % (self.name, self.new, self.now))


class EpidemicView:
    """疫情视图:负责处理疫情信息输入/输出等界面逻辑"""

    def __init__(self):
        self.controller = EpidemicController()

    def display_menu(self):
        """显示菜单"""
        print("按1键添加疫情")
        print("按2键显示疫情")
        print("按3键删除疫情")
        print("按4键修改疫情")

    def select_menu(self):
        """选择菜单"""
        number = input("请输入数字:")
        if number == "1":
            self.input_epidemic()
        elif number == "2":
            self.display_epidemic()
        elif number == "3":
            self.delete_epidemic()
        elif number == "4":
            self.change_epidemic()

    def input_epidemic(self):
        """录入信息"""
        epidemic = EpidemicModel(
            input("请输入地区名称:"),
            int(input("请输入新增人数:")),
            int(input("请输入现有人数:"))
        )
        self.controller.add_epidemic(epidemic)

    def display_epidemic(self):
        for item in self.controller.list_epidemic:
            print(item.display())

    def delete_epidemic(self):
        while True:
            name = input("请输入需要删除的地区名称:")
            if self.controller.remove_epidemic(name):
                print("删除成功!")
                break
            else:
                print("删除失败!")

    def change_epidemic(self):
        while True:
            name = input("请输入需要修改的读取名称:")
            epidemic = EpidemicModel(
                input("请输入地区名称:"),
                int(input("请输入新增人数:")),
                int(input("请输入现有人数:"))
            )
            if self.controller.update_epidemic(name, epidemic):
                print("修改成功!")
                break
            else:
                print("修改失败!")


class EpidemicController:
    """疫情控制器:负责处理疫情信息存储/计算等核心逻辑"""

    def __init__(self):
        self.list_epidemic = []  # type:  list[EpidemicModel]

    def add_epidemic(self, new):
        self.list_epidemic.append(new)

    def remove_epidemic(self, name):
        for i in range(len(self.list_epidemic)):
            if self.list_epidemic[i].name == name:
                del self.list_epidemic[i]
                return True
        return False

    def update_epidemic(self, name, epidemic):
        for item in self.list_epidemic:
            if item.name == name:
                item.name = epidemic.name
                item.new = epidemic.new
                item.now = epidemic.now
                return True
            return False


view = EpidemicView()  # ->Controller->[]
while True:
    view.display_menu()
    view.select_menu()

5.私有化版

epidemic_manager_system_v5.py

"""
疫情信息管理系统V5
私有化练习:
私有化疫情信息管理系统
将view所有成员全部私有化,只提供main函数
"""


class EpidemicModel:
    """疫情模型:负责封装疫情信息"""

    def __init__(self, name, new=0, now=0):
        """
        封装地区、新增、现有
        :param name: 地区
        :param new: 新增
        :param now: 现有
        """
        self.name = name
        self.new = new
        self.now = now

    def display(self):
        return ("疫情地区名称为:%s,新增人数为:%s,现有人数为:%s" % (self.name, self.new, self.now))


class EpidemicView:
    """疫情视图:负责处理疫情信息输入/输出等界面逻辑"""

    def __init__(self):
        self.controller = EpidemicController()

    def __display_menu(self):
        """显示菜单"""
        print("按1键添加疫情")
        print("按2键显示疫情")
        print("按3键删除疫情")
        print("按4键修改疫情")

    def __select_menu(self):
        """选择菜单"""
        number = input("请输入数字:")
        if number == "1":
            self.__input_epidemic()
        elif number == "2":
            self.__display_epidemic()
        elif number == "3":
            self.__delete_epidemic()
        elif number == "4":
            self.__change_epidemic()

    def __input_epidemic(self):
        """录入信息"""
        epidemic = EpidemicModel(
            input("请输入地区名称:"),
            int(input("请输入新增人数:")),
            int(input("请输入现有人数:"))
        )
        self.controller.add_epidemic(epidemic)

    def __display_epidemic(self):
        for item in self.controller.list_epidemic:
            print(item.display())

    def __delete_epidemic(self):
        while True:
            name = input("请输入需要删除的地区名称:")
            if self.controller.remove_epidemic(name):
                print("删除成功!")
                break
            else:
                print("删除失败!")

    def __change_epidemic(self):
        while True:
            name = input("请输入需要修改的读取名称:")
            epidemic = EpidemicModel(
                input("请输入地区名称:"),
                int(input("请输入新增人数:")),
                int(input("请输入现有人数:"))
            )
            if self.controller.update_epidemic(name, epidemic):
                print("修改成功!")
                break
            else:
                print("修改失败!")

    def main(self):
        while True:
            self.__display_menu()
            self.__select_menu()


class EpidemicController:
    """疫情控制器:负责处理疫情信息存储/计算等核心逻辑"""

    def __init__(self):
        self.list_epidemic = []  # type:  list[EpidemicModel]

    def add_epidemic(self, new):
        self.list_epidemic.append(new)

    def remove_epidemic(self, name):
        for i in range(len(self.list_epidemic)):
            if self.list_epidemic[i].name == name:
                del self.list_epidemic[i]
                return True
        return False

    def update_epidemic(self, name, epidemic):
        for item in self.list_epidemic:
            if item.name == name:
                # item.name = epidemic.name
                # item.new = epidemic.new
                # item.now = epidemic.now
                item.__dict__ = epidemic.__dict__
                return True
            return False


view = EpidemicView()  # ->Controller->[]
view.main()

6.重写版

epidemic_manager_system_v6.py

"""
疫情信息管理系统V6
重写
(1)
    在view类的__display_epidemic方法中,直接打印item
    在model类中重写__str__
(2)
    在controller类的remove_epidemic方法中,用列表的remove删除
    在model类中重写__eq__

"""


class EpidemicModel:
    """疫情模型:负责封装疫情信息"""

    def __init__(self, name, new=0, now=0):
        """
        封装地区、新增、现有
        :param name: 地区
        :param new: 新增
        :param now: 现有
        """
        self.name = name
        self.new = new
        self.now = now

    def __str__(self):
        return ("疫情地区名称为:%s,新增人数为:%s,现有人数为:%s" % (self.name, self.new, self.now))

    def __eq__(self, other):
        """重写比较方法"""
        return self.name == other.name


class EpidemicView:
    """疫情视图:负责处理疫情信息输入/输出等界面逻辑"""

    def __init__(self):
        self.controller = EpidemicController()

    def __display_menu(self):
        """显示菜单"""
        print("按1键添加疫情")
        print("按2键显示疫情")
        print("按3键删除疫情")
        print("按4键修改疫情")

    def __select_menu(self):
        """选择菜单"""
        number = input("请输入数字:")
        if number == "1":
            self.__input_epidemic()
        elif number == "2":
            self.__display_epidemic()
        elif number == "3":
            self.__delete_epidemic()
        elif number == "4":
            self.__change_epidemic()

    def __input_epidemic(self):
        """录入信息"""
        epidemic = EpidemicModel(
            input("请输入地区名称:"),
            int(input("请输入新增人数:")),
            int(input("请输入现有人数:"))
        )
        self.controller.add_epidemic(epidemic)

    def __display_epidemic(self):
        for item in self.controller.list_epidemic:
            print(item)

    def __delete_epidemic(self):
        while True:
            name = input("请输入需要删除的地区名称:")
            if self.controller.remove_epidemic(name):
                print("删除成功!")
                break
            else:
                print("删除失败!")

    def __change_epidemic(self):
        while True:
            name = input("请输入需要修改的读取名称:")
            epidemic = EpidemicModel(
                input("请输入地区名称:"),
                int(input("请输入新增人数:")),
                int(input("请输入现有人数:"))
            )
            if self.controller.update_epidemic(name, epidemic):
                print("修改成功!")
                break
            else:
                print("修改失败!")

    def main(self):
        while True:
            self.__display_menu()
            self.__select_menu()


class EpidemicController:
    """疫情控制器:负责处理疫情信息存储/计算等核心逻辑"""

    def __init__(self):
        self.list_epidemic = []  # type:  list[EpidemicModel]

    def add_epidemic(self, new):
        self.list_epidemic.append(new)

    def remove_epidemic(self, name):
        model = EpidemicModel(name)
        if model in self.list_epidemic:
            self.list_epidemic.remove(model)
            return True
        return False
        # for i in range(len(self.list_epidemic)):
        #     if self.list_epidemic[i].name == name:
        #         del self.list_epidemic[i]
        #         return True
        # return False

    def update_epidemic(self, name, epidemic):
        for item in self.list_epidemic:
            if item.name == name:
                # item.name = epidemic.name
                # item.new = epidemic.new
                # item.now = epidemic.now
                item.__dict__ = epidemic.__dict__
                return True
            return False


view = EpidemicView()  # ->Controller->[]
view.main()

7.拆分模块版

epidemic_manager_system_v7文件夹

dtl.py

class EpidemicModel:
    """疫情模型:负责封装疫情信息"""

    def __init__(self, name, new=0, now=0):
        """
        封装地区、新增、现有
        :param name: 地区
        :param new: 新增
        :param now: 现有
        """
        self.name = name
        self.new = new
        self.now = now

    def __str__(self):
        return ("疫情地区名称为:%s,新增人数为:%s,现有人数为:%s" % (self.name, self.new, self.now))

    def __eq__(self, other):
        """重写比较方法"""
        return self.name == other.name

usl.py

from bll import EpidemicController
from dtl import EpidemicModel


class EpidemicView:
    """疫情视图:负责处理疫情信息输入/输出等界面逻辑"""

    def __init__(self):
        self.controller = EpidemicController()

    def __display_menu(self):
        """显示菜单"""
        print("按1键添加疫情")
        print("按2键显示疫情")
        print("按3键删除疫情")
        print("按4键修改疫情")

    def __select_menu(self):
        """选择菜单"""
        number = input("请输入数字:")
        if number == "1":
            self.__input_epidemic()
        elif number == "2":
            self.__display_epidemic()
        elif number == "3":
            self.__delete_epidemic()
        elif number == "4":
            self.__change_epidemic()

    def __input_epidemic(self):
        """录入信息"""
        epidemic = EpidemicModel(
            input("请输入地区名称:"),
            int(input("请输入新增人数:")),
            int(input("请输入现有人数:"))
        )
        self.controller.add_epidemic(epidemic)

    def __display_epidemic(self):
        for item in self.controller.list_epidemic:
            print(item)

    def __delete_epidemic(self):
        while True:
            name = input("请输入需要删除的地区名称:")
            if self.controller.remove_epidemic(name):
                print("删除成功!")
                break
            else:
                print("删除失败!")

    def __change_epidemic(self):
        while True:
            name = input("请输入需要修改的读取名称:")
            epidemic = EpidemicModel(
                input("请输入地区名称:"),
                int(input("请输入新增人数:")),
                int(input("请输入现有人数:"))
            )
            if self.controller.update_epidemic(name, epidemic):
                print("修改成功!")
                break
            else:
                print("修改失败!")

    def main(self):
        while True:
            self.__display_menu()
            self.__select_menu()

bll.py

from dtl import EpidemicModel


class EpidemicController:
    """疫情控制器:负责处理疫情信息存储/计算等核心逻辑"""

    def __init__(self):
        self.list_epidemic = []  # type:  list[EpidemicModel]

    def add_epidemic(self, new):
        self.list_epidemic.append(new)

    def remove_epidemic(self, name):
        model = EpidemicModel(name)
        if model in self.list_epidemic:
            self.list_epidemic.remove(model)
            return True
        return False
        # for i in range(len(self.list_epidemic)):
        #     if self.list_epidemic[i].name == name:
        #         del self.list_epidemic[i]
        #         return True
        # return False

    def update_epidemic(self, name, epidemic):
        for item in self.list_epidemic:
            if item.name == name:
                # item.name = epidemic.name
                # item.new = epidemic.new
                # item.now = epidemic.now
                item.__dict__ = epidemic.__dict__
                return True
            return False

main.py

from usl import EpidemicView

if __name__ == "__main__":
    view = EpidemicView()  # ->Controller->[]
    view.main()

8.异常处理版

epidemic_manager_system_v8文件夹

dtl.py

class EpidemicModel:
    """疫情模型:负责封装疫情信息"""

    def __init__(self, name, new=0, now=0):
        """
        封装地区、新增、现有
        :param name: 地区
        :param new: 新增
        :param now: 现有
        """
        self.name = name
        self.new = new
        self.now = now

    def __str__(self):
        return ("疫情地区名称为:%s,新增人数为:%s,现有人数为:%s" % (self.name, self.new, self.now))

    def __eq__(self, other):
        """重写比较方法"""
        return self.name == other.name


usl.py

"""
异常处理
    对view中int(input())的代码进行异常处理
    对controller中删除的代码进行异常处理
"""
from bll import EpidemicController
from dtl import EpidemicModel


class EpidemicView:
    """疫情视图:负责处理疫情信息输入/输出等界面逻辑"""

    def __init__(self):
        self.controller = EpidemicController()

    def __get_number(self, message):
        """获取数字"""
        while True:
            try:
                number = int(input(message))
                return number
            except ValueError:
                print("输入有误,请重新输入")

    def __display_menu(self):
        """显示菜单"""
        print("按1键添加疫情")
        print("按2键显示疫情")
        print("按3键删除疫情")
        print("按4键修改疫情")

    def __select_menu(self):
        """选择菜单"""
        number = input("请输入数字:")
        if number == "1":
            self.__input_epidemic()
        elif number == "2":
            self.__display_epidemic()
        elif number == "3":
            self.__delete_epidemic()
        elif number == "4":
            self.__change_epidemic()

    def __input_epidemic(self):
        """录入信息"""
        epidemic = EpidemicModel(
            input("请输入地区名称:"),
            # int(input("请输入新增人数:")),
            # int(input("请输入现有人数:"))
            self.__get_number("请输入新增人数:"),
            self.__get_number("请输入现有人数:")
        )
        self.controller.add_epidemic(epidemic)

    def __display_epidemic(self):
        for item in self.controller.list_epidemic:
            print(item)

    def __delete_epidemic(self):
        while True:
            name = input("请输入需要删除的地区名称:")
            if self.controller.remove_epidemic(name):
                print("删除成功!")
                break
            else:
                print("删除失败!")

    def __change_epidemic(self):
        while True:
            name = input("请输入需要修改的读取名称:")
            epidemic = EpidemicModel(
                input("请输入地区名称:"),
                # int(input("请输入新增人数:")),
                # int(input("请输入现有人数:"))
                self.__get_number("请输入新增人数:"),
                self.__get_number("请输入现有人数:")
            )
            if self.controller.update_epidemic(name, epidemic):
                print("修改成功!")
                break
            else:
                print("修改失败!")

    def main(self):
        while True:
            self.__display_menu()
            self.__select_menu()

bll.py

from dtl import EpidemicModel


class EpidemicController:
    """疫情控制器:负责处理疫情信息存储/计算等核心逻辑"""

    def __init__(self):
        self.list_epidemic = []  # type:  list[EpidemicModel]

    def add_epidemic(self, new):
        self.list_epidemic.append(new)

    def remove_epidemic(self, name):
        # model = EpidemicModel(name)
        # if model in self.list_epidemic:
        #     self.list_epidemic.remove(model)
        #     return True
        # return False
        try:
            self.list_epidemic.remove(EpidemicModel(name))
            return True
        except ValueError:
            return False

    def update_epidemic(self, name, epidemic):
        for item in self.list_epidemic:
            if item.name == name:
                item.__dict__ = epidemic.__dict__
                return True
            return False

main.py

"""
异常处理
    适用性:解决逻辑错误,而非语法错误
    价值:保障程序能够按照既定的流程执行,不紊乱
"""
from usl import EpidemicView

if __name__ == "__main__":
    view = EpidemicView()  # ->Controller->[]
    view.main()

9.持久化存储数据版

epidemic_manager_system_v9文件夹

dtl.py

class EpidemicModel:
    """疫情模型:负责封装疫情信息"""

    def __init__(self, name, new=0, now=0):
        """
        封装地区、新增、现有
        :param name: 地区
        :param new: 新增
        :param now: 现有
        """
        self.name = name
        self.new = new
        self.now = now

    def __str__(self):
        return ("疫情地区名称为:%s,新增人数为:%s,现有人数为:%s" % (self.name, self.new, self.now))

    def __eq__(self, other):
        """重写比较方法"""
        return self.name == other.name

    def __repr__(self):
        return 'EpidemicModel("%s",%s,%s)' % (self.name, self.new, self.now)

usl.py

from bll import EpidemicController
from dtl import EpidemicModel


class EpidemicView:
    """疫情视图:负责处理疫情信息输入/输出等界面逻辑"""

    def __init__(self):
        self.controller = EpidemicController()

    def __get_number(self, message):
        """获取数字"""
        while True:
            try:
                number = int(input(message))
                return number
            except ValueError:
                print("输入有误,请重新输入")

    def __display_menu(self):
        """显示菜单"""
        print("按1键添加疫情")
        print("按2键显示疫情")
        print("按3键删除疫情")
        print("按4键修改疫情")

    def __select_menu(self):
        """选择菜单"""
        number = input("请输入数字:")
        if number == "1":
            self.__input_epidemic()
        elif number == "2":
            self.__display_epidemic()
        elif number == "3":
            self.__delete_epidemic()
        elif number == "4":
            self.__change_epidemic()

    def __input_epidemic(self):
        """录入信息"""
        epidemic = EpidemicModel(
            input("请输入地区名称:"),
            self.__get_number("请输入新增人数:"),
            self.__get_number("请输入现有人数:")
        )
        self.controller.add_epidemic(epidemic)

    def __display_epidemic(self):
        for item in self.controller.list_epidemic:
            print(item)

    def __delete_epidemic(self):
        while True:
            name = input("请输入需要删除的地区名称:")
            if self.controller.remove_epidemic(name):
                print("删除成功!")
                break
            else:
                print("删除失败!")

    def __change_epidemic(self):
        while True:
            name = input("请输入需要修改的读取名称:")
            epidemic = EpidemicModel(
                input("请输入地区名称:"),
                self.__get_number("请输入新增人数:"),
                self.__get_number("请输入现有人数:")
            )
            if self.controller.update_epidemic(name, epidemic):
                print("修改成功!")
                break
            else:
                print("修改失败!")

    def main(self):
        while True:
            self.__display_menu()
            self.__select_menu()

bll.py

from dtl import EpidemicModel
from dal import EpidemicDao


class EpidemicController:
    """疫情控制器:负责处理疫情信息存储/计算等核心逻辑"""

    def __init__(self):
        self.__dao = EpidemicDao()  # 加载历史数据
        self.list_epidemic = self.__dao.list_epidemic  # type:  list[EpidemicModel]
        # self.list_epidemic = []  # type:  list[EpidemicModel]

    def add_epidemic(self, new):
        self.list_epidemic.append(new)
        self.__dao.save()

    def remove_epidemic(self, name):
        try:
            self.list_epidemic.remove(EpidemicModel(name))
            self.__dao.save()
            return True
        except ValueError:
            return False

    def update_epidemic(self, name, epidemic):
        for item in self.list_epidemic:
            if item.name == name:
                item.__dict__ = epidemic.__dict__
                self.__dao.save()
                return True
            return False

dal.py

# from pathlib import Path
from dtl import EpidemicModel


class EpidemicDao:
    """数据访问对象"""

    def __init__(self):
        # self.list_epidemic = []
        self.__FILE_NAME = "epidemic_data.txt"  # 字母大写为常量,创建后"不能"修改
        self.list_epidemic = self.load()

    def load(self):
        """加载历史数据"""
        try:
            with open(self.__FILE_NAME, "r", encoding="utf-8") as file:
                return eval(file.read())
        except:
            return []  # 第一次没有历史数据时执行

    def save(self):
        """保存历史数据"""
        with open(self.__FILE_NAME, "w", encoding="utf-8") as file:
            # 内部自动调用列表元素(Model)的__repr__()
            file.write(self.list_epidemic.__repr__())

main.py

"""
    epidemic_manager_system_v9
    使用文件持久化存储数据
    创建dal文件,定义EpidemicDao类,提供load和save方法
    在Controller中调用load和save方法
    再编写load和save方法实现细节
"""
from usl import EpidemicView

if __name__ == "__main__":
    view = EpidemicView()
    view.main()

明明需要实现的功能都一样,但一个比一个复杂QAQ…

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值