名片管理系统

系统需求

  • 程序启动,显示名片管理系统欢迎界面,并显示功能菜单
**************************************************
欢迎使用【名片管理系统】V1.01. 新建名片
2. 显示全部
3. 查询名片0. 退出系统
**************************************************
  • 用户用数字选择不同的功能
  • 根据功能选择,执行不同的功能
  • 用户名片需要记录用户的 姓名、电话、QQ、邮件
  • 如果查询到指定的名片,用户可以选择 修改 或者 删除 名片
  • 信息保存本地

需求分析

  • 采用分文件的方式进行开发,主文件cards_main.py复杂业务逻辑,cards_tool.py文件负责具体的功能实现。
  • 新建名片、显示全部、查询名片 对应相应的功能函数。如果代码过长,再进行拆分。
  • 数据结构的选择?一条名片包含多个键值对采用字典数据类型,所有名片信息 采用列表数据结构。
  • 保证名片信息的本地保存和读取使用python的文件操作,进入名片系统先对名信息文件进行读取,在退出名片系统时,将所有名片信息重新写入到名片文件中。

代码实现

代码很简洁,注释太多 容易凌乱。

cards_main.py

import cards_tool
# 主业务逻辑
cards_tool.read_card()# 1.显示用户主界面
while True:cards_tool.show_menu()menu_str = input("请选择执行的操作:")print("您选择的功能:%s" % menu_str)if menu_str == "1":cards_tool.create_card()elif menu_str == "2":cards_tool.show_card_all()elif menu_str == "3":cards_tool.search_card()elif menu_str == "0":cards_tool.write_card()breakelse:print("输入有误,请重新输入")

cards_tool.py

import os
card_info_all = [] # 所有名片信息
# 名片管理 具体功能
def write_card():"""退出系统时,将名片信息保存到文件夹中"""f = open("E:\\workspace_python\\FirstDemo\\名片管理系统.txt", "w")f.write(str(card_info_all))f.close()def read_card():"""进入系统时,将名片信息加载到内存中"""is_exist = os.path.exists("E:\\workspace_python\\FirstDemo\\名片管理系统.txt")if is_exist:# 文件存在将信息加载到内存中f = open("E:\\workspace_python\\FirstDemo\\名片管理系统.txt","r")global card_info_allcard_info_all = eval(f.read())# print(card_info_all)f.close()else:# 没有文件创建空文件f = open("E:\\workspace_python\\FirstDemo\\名片管理系统.txt", "w")f.close()print(is_exist)def show_menu():"""主菜单页面展示"""print("*"*30)print("欢迎使用[命名管理系统] v1.0")print()print("1.新建名片")print("2.显示全部")print("3.查询名片")print()print("0.退出系统")print("*"*30)def create_card():"""新建名片"""print("功能:新建名片")name = input("请输入姓名:")phone = input("请输入电话:")qq = input("请输入qq号:")email = input("请输入邮箱:")card_info = {"name":name,"phone":phone, "qq":qq, "email":email}card_info_all.append(card_info)print("添加%s的名片成功" % name)def show_card_all():"""显示所有名片"""print("功能:显示全部")if not len(card_info_all):print("没有任何名片")returnprint("name".ljust(14),"phone".ljust(14),"qq".ljust(14),"email".ljust(14),sep="")print("-"*56)for card in card_info_all:print(card["name"].ljust(14),card["phone"].ljust(14),card["qq"].ljust(14),card["email"].ljust(14),sep="")print("-"*56)def search_card():"""查询名片"""print("功能:查询名片")name = input("请输入查询的姓名:")for card in card_info_all:if name == card["name"]:print("name".ljust(14), "phone".ljust(14), "qq".ljust(14), "email".ljust(14), sep="")print("-" * 56)print(card["name"].ljust(14), card["phone"].ljust(14), card["qq"].ljust(14), card["email"].ljust(14),sep="")# 名片高级处理set_card(card)break;else:print("没有找到%s" % name)def set_card(card):"""名片的高级设置"""while True:menu = input("请输入对名片的操作:1.修改/ 2.删除/ 0.返回上一级")if menu == "1":name = input("请输入姓名:")phone = input("请输入电话:")qq = input("请输入qq号:")email = input("请输入邮箱:")card["name"] = namecard["phone"] = phonecard["qq"] = qqcard["email"] = emailprint("%s 的名片修改成功" % name)returnelif menu == "2":card_info_all.remove(card)print("删除名片成功")returnelif menu == "0":returnelse:print("输入有误,请重新输入")

代码运行结果

练习总结

这个小练习主要是对python基础知识的综合运用,入手python 这些基本知识一定要掌握,有过其他编程语言经验的小伙伴是不是感觉很简单。

python小练习—名片管理系统(增、删、改、查、数据本地保存)相关推荐

  1. python学生姓名添加删除_python-函数-实现学生管理系统,完成对学员的增,删,改,查和退出学生管理系统。...

    实现学生管理系统,完成对学员的增,删,改,查和退出学生管理系统. 要求1:使用一个list用于保存学生的姓名. 要求2:输入0显示所有学员信息,1代表增加,2代表删除,3代表修改,4代表查询,exit ...

  2. 表单的增 删 改 查

    django单表操作 增 删 改 查 一.实现:增.删.改.查 1.获取所有数据显示在页面上 model.Classes.object.all(),拿到数据后,渲染给前端;前端通过for循环的方式,取 ...

  3. properties(map)增.删.改.查.遍历

    import java.util.Map; import java.util.Properties; import java.util.Set;/*** properties(map)增.删.改.查. ...

  4. Python 操作 Elasticsearch 实现 增 删 改 查

    Github 地址:https://github.com/elastic/elasticsearch-py/blob/master/docs/index.rst 官网地址:https://elasti ...

  5. PySpark︱DataFrame操作指南:增/删/改/查/合并/统计与数据处理

    笔者最近需要使用pyspark进行数据整理,于是乎给自己整理一份使用指南.pyspark.dataframe跟pandas的差别还是挺大的. 文章目录 1.-------- 查 -------- -- ...

  6. 学生信息管理系统——JAVA 语言版(主页面+增+删+改+查+退)

    学生信息管理系统 前言 一.问题分析 二.学生信息管理系统程序实现思路 三.Student类的创建 程序思路 Student类代码 四.StudentManager类的创建 程序思路 StudentM ...

  7. pyRedis - 操作指南:增/删/改/查、管道与发布订阅功能

    文章目录 1 redis docker 部署与安装 2 py - redis的使用 2.1 redis的连接 2.2 常规属性查看 2.2.2 关于删除 2.3 STRING 字符串的操作 2.4 H ...

  8. list 增 删 改 查 及 公共方法

    1 # 热身题目:增加名字,并且按q(不论大小写)退出程序 2 li = ['taibai','alex','wusir','egon','女神'] 3 while 1: 4 username = i ...

  9. 简单的php数据库操作类代码(增,删,改,查)

    数据库操纵基本流程为: 1.连接数据库服务器 2.选择数据库 3.执行SQL语句 4.处理结果集 5.打印操作信息 其中用到的相关函数有 •resource mysql_connect ( [stri ...

最新文章

  1. Win10 安装msi 提示2502、2503的错误代码 -- 命令提示符(管理员) -- msiexec /package...
  2. 《SAP CRM管理与实施指南》一一2.3 小结
  3. 双主数据库配置与应用
  4. 5G的频谱效率,到底有多高
  5. Java Instant类
  6. clickhouse 子查询_Clickhouse 查询分布式表子查询 (Distributed Subqueries )
  7. 生成n个从1到M(n = M)之间的不重复的随机数问题(洗扑克牌算法)
  8. 一步一步跟我学习hadoop(5)----hadoop Map/Reduce教程(2)
  9. 常见的大数据误区有哪些
  10. java action url,Java ViewHandler.getActionURL方法代码示例
  11. 声明圆锥体类,实现Area和Volume接口,计算表面积和体积,按体积比较大小。
  12. ftp文件服务器怎么迁移,ftp文件服务器迁移
  13. 【史上最全 | 编程入门指南无标题】
  14. Rasa课程、Rasa培训、Rasa面试系列 金融银行案例Bot Step By Step学习
  15. JDK8新特性之Stream流【小白快速上手,没有技巧全是实操-LOL英雄类讲解不失趣味】
  16. 注解处理器(Annoation Processor)
  17. 4.请编写一个函数void fun(char *tt,int pp[]),统计在tt字符串中“a”到“z”26个字母各自出现的次数,并依次放在pp所指数组中。
  18. java 协方差矩阵_协方差矩阵概念(易理解)
  19. 招商与代理--营销至上
  20. Live Messenger ,Gmail ,Orkut ,Wallop

热门文章

  1. Word2019 mac 16.46beta更新(兼容big sur,适配M1)
  2. java 类 加载 初始化_java类的加载与初始化
  3. js写随机输出7位数代码教程
  4. java redis hash_我爱java系列---【redis中如何存取hash类型的值(key field value)】
  5. QT Core | 信号槽01 - GUI上按钮触发应用程序里某个类的函数
  6. date对象 java_Java_按照指定的日期创建 Date对象
  7. python语言常量_python---01.各类计算机语言,python历史,变量,常量,数据类型,if条件...
  8. Tampermonkey笔记-脚本的搭建和基本使用
  9. MySQL笔记-ibd文件格式初步分析(仅数据块笔记)
  10. MySQL笔记-time类型的使用(hh:mm:ss)及time类型对比