Python二次学习打卡第四天——用面向对象写名片管理系统

第四天——实战演练

以面向对象的方法写名片管理系统,思路如下:

  1. 创建名片类
  2. 创建系统管理类
  3. 在系统管理类中实现操作功能
  4. 程序运行后,除非用户自己选择退出系统,否则重复执行功能

操作功能如下:

  • 添加名片
  • 删除名片
  • 修改名片
  • 查询名片
  • 退出系统

代码如下:

# 构建名片类
class BusinessCard(object):
    """名片类"""
    # 初始化属性
    def __init__(self, name, qq, weixin, address):
        self.name = name
        self.qq = qq
        self.weixin = weixin
        self.address = address


# 创建系统管理类
class MySystem(object):
    """名片管理系统"""
    # 初始化属性
    def __init__(self):
        self.card_infors = []

    # 打印主菜单
    def print_munu(self):
        print("=" * 50)
        print("名片管理系统 V0.01")
        print("1, 添加一个新的名片")
        print("2, 删除一个名片 ")
        print("3,  修改一个名片")
        print("4,  查询一个名片")
        print("5,  显示所有名片")
        print("6,  退出系统 ")
        print("=" * 50)

    # 添加一个新的名片
    def add_new_card_infor(self):
        new_name = input("请输入新的名字")
        new_qq = input("请输入新的QQ")
        new_weixin = input("请输入新的微信")
        new_address = input("请输入新的地址")
        # 定义一个新的对象,用来储存一个新的名片
        new_infor = BusinessCard(new_name, new_qq, new_weixin, new_address)
        # 将一个字典添加到列表中
        self.card_infors.append(new_infor)
        print("添加成功!")

    # 根据姓名查找名片
    def find_card_by_name(self, name):
        # 默认没有找到
        find_flag = None
        for temp in self.card_infors:
            if name == temp.name:
                # 表示找到了
                find_flag = temp
                break
        return find_flag

    # 查询名片
    def find_card_infor(self):
        find_name = input("请输入要查找的姓名")
        find_flag = self.find_card_by_name(find_name)
        # 判断是否找到
        if find_flag == None:
            print("查无此人。。。。")
        else:
            print("找到了!")
            print("姓名\tQQ\t微信\t地址" )
            print("%s\t%s\t%s\t%s" % (find_flag.name, find_flag.qq, find_flag.weixin, find_flag.address))

    # 删除名片
    def delete_card_infors(self):
        find_name = input("请输入要删除信息的姓名")
        find_flag = self.find_card_by_name(find_name)
        # 判断是否找到
        if find_flag == None:
            print("查无此人,删除失败")
        else:
            self.card_infors.remove(find_flag)
            print("删除成功!")

    # 修改名片
    def update_card_infor(self):
        find_name = input("请输入要更新信息的名字:")
        find_flag = self.find_card_by_name(find_name)
        # 判断是否找到
        if find_flag == None:
            print("查无此人,修改失败")
        else :
            new_qq = input("请输入新的QQ:")
            new_weixin = input("请输入新的微信:")
            new_address = input("请输入新的地址:")
            find_flag.qq = new_qq
            find_flag.weixin = new_weixin
            find_flag.address = new_address
            print("修改成功!")

    # 显示所有名片
    def show_all_infor(self):
        print("姓名\tQQ\t微信\t地址")
        for temp in self.card_infors:
            print("%s\t%s\t%s\t%s" % (temp.name, temp.qq, temp.weixin, temp.address))

    # 定义开始
    def begin(self):
        while True:
            # 获取用户的输入选择
            num = int(input("\n请输入操作序号:"))
            # 根据输入数据做相应处理
            if num == 1:
                self.add_new_card_infor()
            elif num == 2:
                self.delete_card_infors()
            elif num == 3:
                self.update_card_infor()
            elif num == 4:
                self.find_card_infor()
            elif num == 5:
                self.show_all_infor()
            elif num == 6:
                break
            else:
                print("输入有误,请重新输入!")


# 构建主函数
if __name__ == '__main__':

    mySystem = MySystem()
    mySystem.print_munu()
    mySystem.begin()

结语

如果愿意点个赞,加个关注的话,梦码在这里感激不尽,你小小的行为,确实对我成长路上的巨大鼓励

原创文章 6 获赞 10 访问量 888

猜你喜欢

转载自blog.csdn.net/qq_45724216/article/details/106123271
今日推荐