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

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 = filenameself.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 contactreturn Nonedef update_contact(self, name, phone=None, email=None):"""更新联系人信息"""for contact in self.contacts:if contact['name'] == name:if phone:contact['phone'] = phoneif email:contact['email'] = emailself.save_contacts()returnprint("联系人不存在!")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("感谢使用联系人管理系统,再见!")breakelse: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.mrgr.cn/news/33876.html

相关文章:

  • 【JAVA毕业设计】基于Vue和SpringBoot的宠物咖啡馆平台
  • Elasticsearch 实战应用:高效搜索与数据分析
  • Hadoop学习--第一章 Hello大数据分布式
  • SCUI Admin + Laravel 整合
  • 【C语言刷力扣】13.罗马数字转整数
  • SharePoint Online共享链接的参数是做什么的?
  • 【漏洞复现】用友 NC-Cloud queryStaffByName Sql注入漏洞
  • 计算机毕业设计PySpark+Scrapy农产品推荐系统 农产品爬虫 农产品商城 农产品大数据 农产品数据分析可视化 PySpark Hadoop
  • 【MySQL】获取最近7天和最近14天的订单数量,使用MySQL详细写出,使用不同的方法
  • 伊丽莎白·赫莉为杂志拍摄一组素颜写真,庆祝自己荣膺全球最性感女人第一名
  • 原子结构与电荷
  • 【Linux 21】线程安全
  • 【最快最简单的排序 —— 桶排序算法】
  • wgan 生成器 光是用噪声生成数据 还是噪声加输入数据
  • 自己开发了一个电脑上滚动背单词的软件
  • 用友ncc 如何解决 组件参照无显示问题
  • 速盾:高防cdn防御的时候会封ip吗?
  • Java 基本数据类型
  • 开启争对目标检测的100类数据集-信息收集
  • 汽车总线之----FlexRay总线
  • 速盾:高防 CDN 怎么屏蔽恶意访问?
  • 2024年中国科技核心期刊目录(自然科学卷)科技统计源核心
  • 《基于Redis 实现的虚拟药房管理方法》
  • 类和对象(2)(重点)
  • 【网络安全】身份认证+wan优化+终端控制
  • 面试速通宝典——1