当前位置: 首页 > news >正文

Python高级——实现简单名片管理系统

一、任务要求:

二、代码实现:


class Person:
    def __init__(self,name,phone,qq,address):
        self.name = name
        self.phone = phone
        self.qq = qq
        self.address = address

    def __str__(self):
        return f"姓名:{self.name},联系方式:{self.phone},QQ号:{self.qq},住址:{self.address}"

class CardMenu:
    def __init__(self,file):
        self.file = file
        self.cards = self.load_cards()

    def load_cards(self):
        try:
            with open(self.file,"r",encoding="utf-8") as file:
                lines = file.readlines()
                cards = []
                for line in lines:
                    name,phone,qq,address = line.strip().split(',')
                    cards.append(Person(name,phone,qq,address))
                return cards
        except Exception as e:
            print(f"读取文件时出错:{e}")
            return []

    def save_cards(self):
        try:
            with open(self.file,"w",encoding="utf-8") as file:
                for card in self.cards:
                    file.write(f"{card.name},{card.phone},{card.qq},{card.address}\n")
        except Exception as e:
            print(f"保存文件时出错:{e}")

    def add_card(self,name,phone,qq,address):
        p1 = Person(name,phone,qq,address)
        self.cards.append(p1)
        self.save_cards()
        print("名片添加成功!")

    def del_card(self,name):
        for card in self.cards:
            if card.name == name:
                self.cards.remove(card)
                self.save_cards()
                print("名片删除成功!")
                return
        print("未找到该名片")

    def modify_card(self,name):
        for card in self.cards:
            if card.name == name:
                phone = input("请输入联系方式:")
                qq = input("请输入QQ号:")
                address = input("请输入住址:")
                card.phone = phone
                card.qq = qq
                card.address = address
                self.save_cards()
                print("名片修改成功!")
                return
        print("未找到该名片!")


    def find_card(self,name):
        for card in self.cards:
            if card.name == name:
                print(card)
                return
        print("未找到该名片!")

    def show_cards(self):
        for card in self.cards:
            print(card)


if __name__ == '__main__':
    file = "card.txt"
    CardMenu = CardMenu(file)
    while 1:
        print("-------------名片管理系统-------------")
        print("1.增加一个名片")
        print("2.删除一个名片")
        print("3.修改一个名片")
        print("4.查找一个名片")
        print("5.显示所有名片")
        print("6.退出系统")
        print("-----------------------------------")
        choice = input("请输入选择:")
        if choice == '1':
            name = input("请输入姓名:")
            phone = input("请输入联系方式:")
            qq = input("请输入QQ号:")
            address = input("请输入住址:")
            CardMenu.add_card(name,phone,qq,address)
        elif choice == '2':
            name = input("请输入要删除的名片的姓名:")
            CardMenu.del_card(name)
        elif choice == '3':
            name = input("请输入要修改的名片的姓名:")
            CardMenu.modify_card(name)
        elif choice == '4':
            name = input("请输入要查找的名片的姓名:")
            CardMenu.find_card(name)
        elif choice == '5':
            CardMenu.show_cards()
        elif choice == '6':
            break
        else:
            print("输入选项无效,请重新输入!")

三、结果展示:

-------------名片管理系统-------------
1.增加一个名片
2.删除一个名片
3.修改一个名片
4.查找一个名片
5.显示所有名片
6.退出系统
-----------------------------------
请输入选择:1
请输入姓名:张三
请输入联系方式:123456789
请输入QQ号:123456
请输入住址:abcd
名片添加成功!
-------------名片管理系统-------------
1.增加一个名片
2.删除一个名片
3.修改一个名片
4.查找一个名片
5.显示所有名片
6.退出系统
-----------------------------------
请输入选择:5
姓名:1,联系方式:1,QQ号:1,住址:1
姓名:2,联系方式:3,QQ号:3,住址:3
姓名:张三,联系方式:123456789,QQ号:123456,住址:abcd
-------------名片管理系统-------------
1.增加一个名片
2.删除一个名片
3.修改一个名片
4.查找一个名片
5.显示所有名片
6.退出系统
-----------------------------------
请输入选择:2
请输入要删除的名片的姓名:1
名片删除成功!
-------------名片管理系统-------------
1.增加一个名片
2.删除一个名片
3.修改一个名片
4.查找一个名片
5.显示所有名片
6.退出系统
-----------------------------------
请输入选择:3

请输入要修改的名片的姓名:未找到该名片!
-------------名片管理系统-------------
1.增加一个名片
2.删除一个名片
3.修改一个名片
4.查找一个名片
5.显示所有名片
6.退出系统
-----------------------------------
请输入选择:3
请输入要修改的名片的姓名:2
请输入联系方式:1231231
请输入QQ号:323113
请输入住址:1232131
名片修改成功!
-------------名片管理系统-------------
1.增加一个名片
2.删除一个名片
3.修改一个名片
4.查找一个名片
5.显示所有名片
6.退出系统
-----------------------------------
请输入选择:4
请输入要查找的名片的姓名:2
姓名:2,联系方式:1231231,QQ号:323113,住址:1232131
-------------名片管理系统-------------
1.增加一个名片
2.删除一个名片
3.修改一个名片
4.查找一个名片
5.显示所有名片
6.退出系统
-----------------------------------
请输入选择:6

进程已结束,退出代码为 0

card.txt:

2,1231231,323113,1232131
张三,123456789,123456,abcd

相关文章:

  • 【sql靶场】过滤绕过第26-27a关保姆级教程
  • AVL(平衡二叉树)
  • 【前端】 el-form-item的label由于字数多自行换行调整
  • 常考计算机操作系统面试习题(二)(下)
  • Spring Boot深度解析:从核心原理到最佳实践
  • C语言字符函数,字符串函数以及内存函数
  • 腾讯云大模型知识引擎x deepseek:打造智能服装搭配新体验
  • Kubernetes 故障排查指南
  • Linux启动之__vet_atags
  • 23种设计模式-外观(Facade)设计模式
  • unix网络编程
  • annoy编译安装问题及解决
  • 嵌入式八股文学习笔记——C++学习笔记面向对象相关
  • Python第九章节——异常,模块与包
  • leetcode128.最长连续序列
  • Objects.equals() 和 Object.equals() 的区别:
  • 信号处理中的窗
  • 《Python实战进阶》第30集:Scikit-learn 入门:分类与回归模型
  • Pytest的参数化测试
  • Xamarin.Android实现本地化部署DeepSeek的对话功能
  • 韩代总统李周浩履职
  • “五一”假期首日迎出游高峰:火车站人流“堪比春运”,热门景区门票预订量同比增三成
  • 新华时评:需要“重新平衡”的是美国心态
  • 特朗普加征关税冲击波:美国零售、汽车、航空、科技企业纷纷预警业绩波动
  • 白玉兰奖征片综述丨国产剧集创作的此消彼长
  • 东风着陆场做好各项搜救准备,迎接神舟十九号航天员天外归来