用python实现名片管理系统


Posted in Python onJune 18, 2020

python的基础练习案例——名片管理系统,一个控制台程序的案例练习,平台为pycharm2017。代码是看着python视频学的时候写的,pycharm运行没有问题。

系统需求

1、程序启动,显示名片管理系统欢迎界面,并显示功能菜单

欢迎使用【名片管理系统】V1.0

1 新建名片
2显示全部
3查询名片

0退出系统

2、用户用数字选择不同的功能

3、根据功能选择,执行不同的功能

4、用户名片需要记录用户的 姓名、电话、QQ、邮件

5、如果查询到指定的名片,用户可以选择 修改 或者 删除 名片

步骤

1.框架搭建

2.新增名片

3.显示所有名片

4.查询名片

5.查询成功后修改、删除名片

6.让 Python 程序能够直接运行

代码:

为了运行方便,将主函数和自定义函数分为两个文件,方便读者。

用python实现名片管理系统

代码如下:

mian:

import cards_tools

# 无线循环,由用户决定什么时候退出循环
while True:

 # 显示功能菜单
 cards_tools.show_menu()
 action_str = input("请选择希望执行的操作:")
 print("你选择的操作是【%s】" % action_str)
 # 1,2,3针对名片的操作
 if action_str in ["1", "2", "3"]:
 # 新增名片
 if action_str == "1":
 cards_tools.new_card()
 # 显示全部
 elif action_str == "2":
 cards_tools.show_all()
 # 查询名片
 elif action_str == "3":
 cards_tools.search_card()
 # 0 退出系统
 elif action_str == "0":
 print("欢迎再次使用【名片管理系统】")
 break
 # 如果在开放程序时,不希望立刻编写分支内部的代码
 # 可以使用pass关键字,表示一个占位符,能够保证程序的代码结构正确
 # 程序运行时,pass关键字不会执行任何的操作!
 # pass
 # 其他内容输入错误,需要提示用户
 else:
 print("你输入不正确,请重新选择!")

tools:

# 记录所有的名片字典
card_list = []


def show_menu():
 """显示菜单"""
 print("*" * 50)
 print("欢迎使用【名片管理系统】V1.0")
 # print("")
 print("1.新增名片")
 print("2.显示全部")
 print("3.搜索名片")
 # print("")
 print("0.退出系统")
 print("*" * 50)


def new_card():
 """新增名片"""
 print("-" * 50)
 print("新增名片")
 # 1.提示用户输入名片的详细信息
 name_str = input("请输入姓名:")
 phone_str = input("请输入电话:")
 qq_str = input("请输入QQ:")
 email_str = input("请输入邮箱:")
 # 2.使用用户输入信息建立给一个名片字典
 card_dict = {"name": name_str,
 "phone": phone_str,
 "QQ": qq_str,
 "email": email_str}
 # 3.将名片字典添加到列表中
 card_list.append(card_dict)
 print(card_list)
 # 4.提示用户添加成功
 print("添加 %s 的名片成功!" % name_str)


def show_all():
 """显示所有名片"""
 print("-" * 50)
 print("显示所有名片")
 # 判断是否存在名片记录,若无,提示用户并返回
 if len(card_list) == 0:
 print("当前没有任何的名片记录,请使用新增功能添加名片!")
 # return可以返回一个函数的执行结果
 # 下方的代码不会被执行
 # 若return后面没有任何内容,表示会返回到调用函数的位置
 # 并且不返回任何结果
 return

 # 打印表头
 for name in ["姓名", "电话", "QQ", "邮箱"]:
 print(name, end="\t\t")
 print("")
 # 打印分隔线
 print("=" * 50)
 # 遍历名片列表依次输出字典信息
 for card_dict in card_list:
 print("%s\t\t%s\t\t%s\t\t%s\t\t" % (card_dict["name"],
 card_dict["phone"],
 card_dict["QQ"],
 card_dict["email"]))


def search_card():
 """搜索名片"""
 print("-" * 50)
 print("搜索名片")
 # 1.提示用户输入要搜索的姓名
 find_name = input("请输入要搜索的姓名:")
 # 2.遍历名片列表,查询要搜索的姓名,如果没有找到需要提示用户。
 for card_dict in card_list:

 if card_dict["name"] == find_name:
 print("姓名\t\t电话\t\tQQ\t\t邮箱")
 print("=" * 50)
 print("%s\t\t%s\t\t%s\t\t%s" % (card_dict["name"],
 card_dict["phone"],
 card_dict["QQ"],
 card_dict["email"]))
 # 针对找到的名片记录执行修改和删除的操作
 deal_card(card_dict)
 break
 else:
 print("抱歉,没有找到%s!" % find_name)


def deal_card(find_dict):
 """处理查找到的名片

 :param find_dict:查找到的名片
 """
 print(find_dict)
 action_str = input("请选择要执行的操作 "
 "[1]修改 [2]删除 [0]返回上级菜单")
 if action_str == "1":
 find_dict["name"] = input_card_info(find_dict["name"], "姓名:")
 find_dict["phone"] = input_card_info(find_dict["phone"], "电话:")
 find_dict["QQ"] = input_card_info(find_dict["QQ"], "qq:")
 find_dict["email"] = input_card_info(find_dict["email"], "email: ")

 print("修改名片成功")
 if action_str == "2":
 card_list.remove(find_dict)
 print("删除名片成功")


def input_card_info(dict_value, tip_message):
 """输入名片信息

 :param dict_value:字典中原有的值
 :param tip_message:输入的提示文字
 :return:如果用户输入内容,就返回内容,否则返回字典中原有的值
 """
 # 1.提示用户输入内容
 result_str = input(tip_message)
 # 2.针对用户的输入进行判断,如果用户输入了内容,直接返回结果
 if len(result_str) > 0:
 return result_str
 # 如果用户没有输入内容,返回字典中原有的值
 else:
 return dict_value

更多学习资料请关注专题《管理系统开发》。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
利用python获得时间的实例说明
Mar 25 Python
Python multiprocessing模块中的Pipe管道使用实例
Apr 11 Python
Python实现多线程HTTP下载器示例
Feb 11 Python
Python生成8位随机字符串的方法分析
Dec 05 Python
Python简单读写Xls格式文档的方法示例
Aug 17 Python
selenium获取当前页面的url、源码、title的方法
Jun 12 Python
django框架基于模板 生成 excel(xls) 文件操作示例
Jun 19 Python
django框架模板中定义变量(set variable in django template)的方法分析
Jun 24 Python
python粘包问题及socket套接字编程详解
Jun 29 Python
python批量图片处理简单示例
Aug 06 Python
tensorflow实现在函数中用tf.Print输出中间值
Jan 21 Python
Python实现实时数据采集新型冠状病毒数据实例
Feb 04 Python
Python 为什么推荐蛇形命名法原因浅析
Jun 18 #Python
python退出循环的方法
Jun 18 #Python
keras实现多GPU或指定GPU的使用介绍
Jun 17 #Python
Python字符串格式化常用手段及注意事项
Jun 17 #Python
python代码区分大小写吗
Jun 17 #Python
python代码中怎么换行
Jun 17 #Python
Python bisect模块原理及常见实例
Jun 17 #Python
You might like
php中并发读写文件冲突的解决方案
2013/10/25 PHP
PHP文件上传、客户端和服务器端加限制、抓取错误信息、完整步骤解析
2017/01/12 PHP
JQUERY THICKBOX弹出层插件
2008/08/30 Javascript
JS 实现导航栏悬停效果
2013/09/23 Javascript
js单例模式的两种方案
2013/10/22 Javascript
js截取小数点后几位的写法
2013/11/14 Javascript
JavaScript使用addEventListener添加事件监听用法实例
2015/06/01 Javascript
jQuery的Cookie封装,与PHP交互的简单实现
2016/10/05 Javascript
jQuery鼠标事件总结
2016/10/13 Javascript
Javascript 两种刷新方法以及区别和适用范围
2017/01/17 Javascript
NodeJS收发GET和POST请求的示例代码
2017/08/25 NodeJs
Angular项目从新建、打包到nginx部署全过程记录
2017/12/09 Javascript
从表单校验看JavaScript策略模式的使用详解
2020/10/17 Javascript
[59:30]VG vs LGD 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.22
2019/09/05 DOTA
[01:16:12]完美世界DOTA2联赛PWL S2 FTD vs Inki 第一场 11.21
2020/11/23 DOTA
Windows和Linux下使用Python访问SqlServer的方法介绍
2015/03/10 Python
python用装饰器自动注册Tornado路由详解
2017/02/14 Python
PyQt5每天必学之创建窗口居中效果
2018/04/19 Python
python 用lambda函数替换for循环的方法
2018/06/09 Python
pycharm远程linux开发和调试代码的方法
2018/07/17 Python
python pygame实现五子棋小游戏
2020/10/26 Python
使用Django搭建网站实现商品分页功能
2020/05/22 Python
pandas map(),apply(),applymap()区别解析
2021/02/24 Python
CSS3绘制不规则图形的一些方法示例
2015/11/07 HTML / CSS
html5使用html2canvas实现浏览器截图的示例
2017/08/31 HTML / CSS
美国伊甸园兄弟种子公司:Eden Brothers
2018/07/01 全球购物
FLOS美国官网:意大利高级照明工艺的传奇
2018/08/07 全球购物
软件测试英文面试题
2012/10/14 面试题
大学生个人简历自我评价
2013/11/16 职场文书
英文版销售经理个人求职信
2013/11/20 职场文书
银行财务部实习生的自我鉴定
2013/11/27 职场文书
大一学生个人总结
2015/02/15 职场文书
2015秋季开学典礼致辞
2015/07/16 职场文书
送给火锅店的创意营销方案!
2019/07/08 职场文书
最新最全的手机号验证正则表达式
2022/02/24 Javascript
一篇文章带你掌握SQLite3基本用法
2022/06/14 数据库