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

AI教你学Python 第17天 :小项目联系人管理系统

项目概述

1. 项目目标

本项目旨在创建一个简单的联系人管理系统,具备以下功能:

  • 添加新联系人
  • 删除联系人
  • 查找联系人
  • 更新联系人信息
  • 列出所有联系人

2. 技术栈

  • 编程语言:Python
  • 数据存储:使用 JSON 文件存储联系人信息

3. 项目结构

contact_manager/
├── contacts.json
└── contact_manager.py

详细功能实现

1. 数据结构设计

我们将使用 JSON 格式来存储联系人信息。每个联系人的信息将包括以下字段:

  • name:姓名
  • phone:电话
  • email:邮箱
示例 JSON 文件 (contacts.json)
[
    {
        "name": "John Doe",
        "phone": "123-456-7890",
        "email": "johndoe@example.com"
    },
    {
        "name": "Jane Smith",
        "phone": "098-765-4321",
        "email": "janesmith@example.com"
    }
]

2. 核心代码

2.1 导入库

首先,我们需要导入必要的库:

import json
import os
2.2 定义联系人管理类

创建一个 ContactManager 类来管理联系人,包括添加、删除、查找、更新和列出联系人等功能。

class ContactManager:
    def __init__(self, filename='contacts.json'):
        self.filename = filename
        self.load_contacts()

    def load_contacts(self):
        """加载联系人数据"""
        if os.path.exists(self.filename):
            with open(self.filename, 'r') as f:
                self.contacts = json.load(f)
        else:
            self.contacts = []

    def save_contacts(self):
        """保存联系人数据"""
        with open(self.filename, 'w') as f:
            json.dump(self.contacts, f, indent=4)

    def add_contact(self, name, phone, email):
        """添加新联系人"""
        contact = {"name": name, "phone": phone, "email": email}
        self.contacts.append(contact)
        self.save_contacts()

    def delete_contact(self, name):
        """删除联系人"""
        self.contacts = [c for c in self.contacts if c['name'] != name]
        self.save_contacts()

    def find_contact(self, name):
        """查找联系人"""
        for contact in self.contacts:
            if contact['name'] == name:
                return contact
        return None

    def update_contact(self, name, phone=None, email=None):
        """更新联系人信息"""
        for contact in self.contacts:
            if contact['name'] == name:
                if phone:
                    contact['phone'] = phone
                if email:
                    contact['email'] = email
                self.save_contacts()
                return
        print("联系人不存在!")

    def list_contacts(self):
        """列出所有联系人"""
        return self.contacts
2.3 主程序

入口点,为用户提供交互界面。

def main():
    manager = ContactManager()

    while True:
        print("\n欢迎来到联系人管理系统")
        print("1. 添加联系人")
        print("2. 删除联系人")
        print("3. 查找联系人")
        print("4. 更新联系人信息")
        print("5. 列出所有联系人")
        print("6. 退出")

        choice = input("请选择操作: ")

        if choice == '1':
            name = input("输入姓名: ")
            phone = input("输入电话: ")
            email = input("输入邮箱: ")
            manager.add_contact(name, phone, email)
            print("联系人已添加!")

        elif choice == '2':
            name = input("输入姓名: ")
            manager.delete_contact(name)
            print("联系人已删除!")

        elif choice == '3':
            name = input("输入姓名: ")
            contact = manager.find_contact(name)
            if contact:
                print(contact)
            else:
                print("联系人未找到!")

        elif choice == '4':
            name = input("输入姓名: ")
            phone = input("输入新电话 (留空则不更新): ")
            email = input("输入新邮箱 (留空则不更新): ")
            manager.update_contact(name, phone if phone else None, email if email else None)
            print("联系人信息已更新!")

        elif choice == '5':
            contacts = manager.list_contacts()
            for contact in contacts:
                print(contact)

        elif choice == '6':
            print("感谢使用联系人管理系统,再见!")
            break

        else:
            print("无效选项,请重新选择!")

if __name__ == "__main__":
    main()

3. 代码流程图

以下是代码的运行流程图,展示了各个功能之间的关系:

              +-----------------+
              |   主程序开始    |
              +--------+--------+
                       |
                 +-----v-----+
                 |  显示菜单  |
                 +-----+-----+
                       |
         +-------------+-------------+
         |             |             |
   +-----v-----+ +-----v-----+ +-----v-----+
   | 添加联系人 | | 删除联系人 | | 查找联系人 |
   +-----+-----+ +-----+-----+ +-----+-----+
         |             |             |
         |             |             |
   +-----v-----+ +-----v-----+ +-----v-----+
   | 更新联系人  | | 列出联系人 | |  退出程序  |
   +-------------+ +-------------+ +-------------+

4. 练习题

练习 1

在现有的代码中添加一个功能,使用户可以通过电话号码查找联系人。

练习 2

扩展联系人管理系统,允许用户导入和导出联系人数据到 CSV 文件。

练习 3

优化用户输入,增加数据验证,以确保输入的电话和邮箱格式正确。

5. 项目总结

这个简单的联系人管理系统展示了 Python 的基础应用,包括类的使用、文件I/O,以及基础的列表和字典操作。在学习过程中,您将掌握如何设计一个易用的命令行界面,处理用户输入,并对数据进行基本管理。

通过本项目的实现,您还将了解到如何使用 JSON 进行数据存储,这是现代应用程序中常见的需求。随着您对 Python 的进一步理解,建议您尝试为项目增加更多高级特性,例如使用数据库存储联系人信息,或是创建图形用户界面 (GUI)。

6. 参考资源

  • Python 官方文档
  • JSON 数据格式
  • Python 文件 I/O

希望这个详细的项目描述和示例代码能帮助您深入理解 Python 编程!如果您有任何问题或需要进一步的帮助,请随时告诉我。


怎么样今天的内容还满意吗?再次感谢观众老爷的观看。
最后,祝您早日实现财务自由,还请给个赞,谢谢!


http://www.kler.cn/news/315692.html

相关文章:

  • 小程序-模板与配置
  • 乱弹篇(53)丹桂未飘香
  • Excel常用函数大全
  • DAPP智能合约系统开发
  • 【计算机网络 - 基础问题】每日 3 题(十八)
  • SecureCRT下载
  • 如何在 MySQL Workbench 中修改表数据并保存??
  • 记一次Meilisearch轻量级搜索引擎使用
  • 蓝桥杯1.小蓝的漆房
  • 网络安全等保培训 ppt
  • 循环单链表来表示队列
  • Qt Debugging帮助文档
  • Packet Tracer - 配置编号的标准 IPv4 ACL(两篇)
  • jQuery 入口函数 详解
  • IT行业中的工作生活平衡探讨
  • Android 内核开发之—— repo 使用教程
  • Kotlin 函数和变量(四)
  • 双向链表:实现、操作与分析【算法 17】
  • 【Fastapi】参数获取,json和query
  • 深度学习02-pytorch-05-张量的索引操作
  • 2024 年最新前端ES-Module模块化、webpack打包工具详细教程(更新中)
  • Android 车载应用开发指南 - CarService 详解(下)
  • 在Spring Boot中实现多环境配置
  • 汽车总线之----FlexRay总线
  • LeetCode_sql_day31(1384.按年度列出销售总额)
  • C# 委托与事件 观察者模式
  • Java项目实战II基于Java+Spring Boot+MySQL的植物健康系统(开发文档+源码+数据库)
  • 设计模式之复合模式
  • 高级java每日一道面试题-2024年9月16日-框架篇-Spring MVC和Struts的区别是什么?
  • Redis发布和订阅