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

新乡建设网站空壳网站数据

新乡建设网站,空壳网站数据,pathon做网站,山东省建设备案网站审批表📋 编程基础第一期《8-30》–通讯录管理系统 📑 项目介绍 在信息化时代,高效管理个人或团队联系人信息变得尤为重要。本文将带您实现一个基于Python的通讯录管理系统,该系统采用字典数据结构和JSON文件存储,实现了联系…

📋 编程基础第一期《8-30》–通讯录管理系统

📑 项目介绍

在信息化时代,高效管理个人或团队联系人信息变得尤为重要。本文将带您实现一个基于Python的通讯录管理系统,该系统采用字典数据结构和JSON文件存储,实现了联系人的增删改查等核心功能。这个项目非常适合Python初学者巩固基础知识,同时也是一个实用的小工具。

🌟 功能特点

  • 添加联系人:录入姓名、电话、邮箱、地址等信息
  • 删除联系人:根据姓名查找并删除指定联系人
  • 修改联系人:更新已有联系人的信息
  • 查询联系人:根据姓名精确查找联系人
  • 显示所有联系人:以列表形式展示所有联系人
  • 数据持久化:自动保存到JSON文件,程序重启后数据不丢失

💻 完整代码实现

import json
import osCONTACTS_FILE = "contacts.json"def load_contacts():"""加载通讯录数据"""if os.path.exists(CONTACTS_FILE):with open(CONTACTS_FILE, 'r') as f:return json.load(f)return []def save_contacts(contacts):"""保存通讯录数据"""with open(CONTACTS_FILE, 'w') as f:json.dump(contacts, f, indent=4)def input_contact_info():"""输入联系人信息"""return {"name": input("请输入姓名:").strip(),"phone": input("请输入电话:").strip(),"email": input("请输入邮箱:").strip(),"address": input("请输入地址:").strip()}def add_contact(contacts):"""添加联系人"""new_contact = input_contact_info()contacts.append(new_contact)save_contacts(contacts)print("联系人添加成功!")def find_contacts_by_name(contacts, name):"""根据姓名查找联系人"""return [(i, c) for i, c in enumerate(contacts) if c["name"].lower() == name.lower()]def delete_contact(contacts):"""删除联系人"""name = input("请输入要删除的联系人姓名:").strip()matches = find_contacts_by_name(contacts, name)if not matches:print("未找到相关联系人。")returnprint("找到以下联系人:")for idx, (i, c) in enumerate(matches):print(f"{idx + 1}. {c['name']} | {c['phone']} | {c['email']}")try:choice = int(input("请选择要删除的序号(0取消):"))if 1 <= choice <= len(matches):del contacts[matches[choice - 1][0]]save_contacts(contacts)print("删除成功!")elif choice != 0:print("无效的序号")except ValueError:print("输入错误,请输入数字")def modify_contact(contacts):"""修改联系人"""name = input("请输入要修改的联系人姓名:").strip()matches = find_contacts_by_name(contacts, name)if not matches:print("未找到相关联系人。")returnprint("找到以下联系人:")for idx, (i, c) in enumerate(matches):print(f"{idx + 1}. {c['name']} | {c['phone']} | {c['email']}")try:choice = int(input("请选择要修改的序号(0取消):"))if 1 <= choice <= len(matches):index = matches[choice - 1][0]old_contact = contacts[index]print("请输入新信息(留空保持不变)")new_info = input_contact_info()# 保留未修改的字段for key in new_info:if not new_info[key]:new_info[key] = old_contact[key]contacts[index] = new_infosave_contacts(contacts)print("修改成功!")elif choice != 0:print("无效的序号")except ValueError:print("输入错误,请输入数字")def search_contact(contacts):"""查询联系人"""name = input("请输入要查询的姓名:").strip()matches = find_contacts_by_name(contacts, name)if not matches:print("未找到相关联系人")returnprint(f"找到 {len(matches)} 条结果:")for i, c in matches:print(f"姓名:{c['name']}")print(f"电话:{c['phone']}")print(f"邮箱:{c['email']}")print(f"地址:{c['address']}\n")def display_contacts(contacts):"""显示所有联系人"""if not contacts:print("通讯录为空")returnprint("\n所有联系人:")for idx, contact in enumerate(contacts, 1):print(f"{idx}. {contact['name']} | {contact['phone']} | {contact['email']}")def show_menu():"""显示主菜单"""print("\n通讯录管理系统")print("1. 添加联系人")print("2. 删除联系人")print("3. 修改联系人")print("4. 查询联系人")print("5. 显示所有联系人")print("6. 退出系统")def main():contacts = load_contacts()while True:show_menu()choice = input("请选择操作(1-6):").strip()if choice == '1':add_contact(contacts)elif choice == '2':delete_contact(contacts)elif choice == '3':modify_contact(contacts)elif choice == '4':search_contact(contacts)elif choice == '5':display_contacts(contacts)elif choice == '6':print("感谢使用,再见!")breakelse:print("无效的输入,请重新选择")if __name__ == "__main__":main()

🔍 代码解析与知识点

1. 数据存储与序列化

本项目使用JSON格式存储通讯录数据,这体现了几个重要的编程概念:

  • JSON序列化与反序列化:使用json.dump()json.load()实现Python对象与JSON文本的转换
  • 文件操作:使用with语句安全地打开和关闭文件,避免资源泄露
  • 数据持久化:将内存中的数据保存到磁盘,实现程序重启后数据不丢失
# JSON序列化示例
with open(CONTACTS_FILE, 'w') as f:json.dump(contacts, f, indent=4)  # indent参数使JSON格式化输出,提高可读性

2. 数据结构设计

  • 列表存储多个联系人:使用Python列表存储多个联系人记录
  • 字典存储联系人属性:每个联系人使用字典存储,键为属性名,值为属性值
  • 索引与数据的映射:使用列表推导式创建索引与联系人数据的映射关系
# 列表推导式与元组打包示例
return [(i, c) for i, c in enumerate(contacts) if c["name"].lower() == name.lower()]

3. 函数模块化设计

代码采用了高度模块化的设计思想,每个功能都被封装到独立的函数中:

  • 单一职责原则:每个函数只负责一个明确的任务
  • 高内聚低耦合:函数之间通过参数传递数据,减少全局变量
  • 代码复用:如find_contacts_by_name()被多个功能函数复用

4. 用户交互设计

  • 菜单驱动界面:通过数字选项驱动程序流程
  • 输入验证与错误处理:使用try-except捕获可能的输入错误
  • 用户友好提示:提供清晰的操作提示和结果反馈
# 异常处理示例
try:choice = int(input("请选择要修改的序号(0取消):"))# 处理逻辑
except ValueError:print("输入错误,请输入数字")

5. 字符串处理技巧

  • 字符串格式化:使用f-string实现简洁的字符串插值
  • 字符串清理:使用strip()移除输入中的前后空白
  • 大小写不敏感比较:使用lower()实现忽略大小写的字符串比较
# f-string格式化示例
print(f"{idx + 1}. {c['name']} | {c['phone']} | {c['email']}")

🚀 实际应用场景

  1. 个人通讯录管理:整理和管理个人联系人信息
  2. 小型团队联系人共享:在小型团队中共享和维护联系人信息
  3. 学习项目:作为Python初学者的实践项目,巩固基础知识
  4. 原型系统:作为更复杂联系人管理系统的原型或基础

🔧 进阶改进方向

  1. 搜索功能增强:添加模糊搜索、多字段搜索功能
  2. 数据验证:增加电话号码、邮箱格式验证
  3. 分组管理:添加联系人分组功能
  4. 用户界面优化:开发图形用户界面(GUI)
  5. 数据备份与恢复:添加数据备份和恢复功能
  6. 多用户支持:添加用户账户和权限管理

📚 学习要点总结

  1. Python基础语法:函数定义、条件语句、循环结构
  2. 数据结构应用:列表、字典、元组的灵活使用
  3. 文件操作:读写文件、异常处理
  4. JSON处理:序列化与反序列化
  5. 函数式编程:列表推导式、函数封装
  6. 用户交互设计:输入处理、菜单设计、反馈机制

通过这个项目,您不仅可以掌握Python编程的基础知识,还能学习到软件设计的核心概念和最佳实践。无论是作为学习案例还是实用工具,这个通讯录管理系统都能满足您的需求。

后期会改写成django框架的形式完成这个小项目,实现界面化

今日分享语录

你的孤独,虽败犹荣


文章转载自:

http://s97eInRT.nrkLh.cn
http://Qo1fuT24.nrkLh.cn
http://lCJ6QsbS.nrkLh.cn
http://xtESQBzY.nrkLh.cn
http://2gmdZvkh.nrkLh.cn
http://kxT5hdWk.nrkLh.cn
http://bfAsdovC.nrkLh.cn
http://Wfz01sbZ.nrkLh.cn
http://48OT8886.nrkLh.cn
http://Lr1PMxzt.nrkLh.cn
http://u5xY5QJY.nrkLh.cn
http://yMdNfg7H.nrkLh.cn
http://K8Qb1zI5.nrkLh.cn
http://jDnMn3SO.nrkLh.cn
http://W4Z7Jjm8.nrkLh.cn
http://sjwW3URR.nrkLh.cn
http://dt7DzzeA.nrkLh.cn
http://gUsc9mFB.nrkLh.cn
http://p3iErFE2.nrkLh.cn
http://lKpQ9aw1.nrkLh.cn
http://RxZUqWlb.nrkLh.cn
http://E0g5wHVO.nrkLh.cn
http://277XystP.nrkLh.cn
http://GCms08NJ.nrkLh.cn
http://gpTs3bkW.nrkLh.cn
http://foplul14.nrkLh.cn
http://aHnYPd2o.nrkLh.cn
http://AqeQJMI5.nrkLh.cn
http://7nI9ivRC.nrkLh.cn
http://uonyQDjN.nrkLh.cn
http://www.dtcms.com/wzjs/698521.html

相关文章:

  • 专门做眼镜的网站网络推广是干嘛的
  • 网站策划书优势怎么分析广州11个区排名
  • asp.net网站开发模板做网站建设的电话销售
  • 客户为什么需要建站服务做怎样的网站能赚钱
  • 佛山网站优化效果代理网址域名
  • 中卫市网站开发制作公司名称注册规定
  • 中国建设监理协会网站继续教育系统情感营销的十大案例
  • 网站开发与设计的总体思想高端网站建设大概多少费用
  • 单位网站建设必要性填手机号的广告
  • 柳市做网站建设苏州微网站开发
  • 怎么给自己制作一个网站网站开发服务 退款
  • 山东网站建设网河南省汝州文明建设门户网站
  • 怎么做自己的门户网站知名设计品牌有哪些
  • 基于php网站开发设计Wordpress菜单的页面不显示
  • 上海网站建设外包公司名注册查询网站
  • 网站建设的科目女生学计算机难吗
  • 绍兴做网站服务电子商务网站成本
  • 合肥住房城乡建设部的网站网站备案注册
  • 合肥网站建设与设计win10怎么做网站
  • 如何提高网站开发效率长沙网站关键词优化
  • 品牌网站建设可信大蝌蚪php大型网站开发书籍
  • 大型网站开发流程和步骤怎么做弹幕视频网站
  • php网站后台验证码不显示网站建设类公
  • 单页面推广网站模版做电商需要知道的几个网站吗
  • 长春做网站哪家好wordpress快讯插件
  • 湛江网站建设制作价格做网站用的字体
  • 不同的网站 做301windows搭建网站开发
  • 中山网站建设如何青浦区网站建设
  • 做美食下载什么网站新浪sae搭建wordpress
  • 家居网站 模板中国十大门窗品牌