用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 相关文章推荐
在类Unix系统上开始Python3编程入门
Aug 20 Python
numpy自动生成数组详解
Dec 15 Python
Python三种遍历文件目录的方法实例代码
Jan 19 Python
Zookeeper接口kazoo实例解析
Jan 22 Python
mac下如何将python2.7改为python3
Jul 13 Python
对Python信号处理模块signal详解
Jan 09 Python
浅谈Python 列表字典赋值的陷阱
Jan 20 Python
如何运行.ipynb文件的图文讲解
Jun 27 Python
Pandas 解决dataframe的一列进行向下顺移问题
Dec 27 Python
Python2及Python3如何实现兼容切换
Sep 01 Python
PyCharm最新激活码(2020/10/27全网最新)
Oct 27 Python
python中Pyqt5使用Qlabel标签播放视频
Apr 22 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
linux下使用crontab实现定时PHP计划任务失败的原因分析
2014/07/05 PHP
thinkphp在低版本Nginx 下支持PATHINFO的方法分享
2016/05/27 PHP
PHP 数组遍历foreach语法结构及实例
2016/06/13 PHP
php读取出一个文件夹及其子文件夹下所有文件的方法示例
2017/06/15 PHP
PHP性能测试工具xhprof安装与使用方法详解
2018/04/29 PHP
PHP8.0新功能之Match表达式的使用
2020/07/19 PHP
JavaScript的变量作用域深入理解
2009/10/25 Javascript
js获取和设置属性的方法
2014/02/20 Javascript
JS JQUERY实现滚动条自动滚到底的方法
2015/01/09 Javascript
js实现简单的左右两边固定广告效果实例
2015/04/10 Javascript
JS实现CheckBox复选框全选、不选或全不选功能
2020/07/28 Javascript
assert()函数用法总结(推荐)
2017/01/25 Javascript
js模拟支付宝密码输入框
2017/04/11 Javascript
Three.js实现绘制字体模型示例代码
2017/09/26 Javascript
基于 Vue.js 2.0 酷炫自适应背景视频登录页面实现方式
2018/01/17 Javascript
node.js通过axios实现网络请求的方法
2018/03/05 Javascript
详解node字体压缩插件font-spider的用法
2018/09/28 Javascript
vue2.0 路由模式mode="history"的作用
2018/10/18 Javascript
js form表单input框限制20个字符,10个汉字代码实例
2019/04/12 Javascript
判断文字超过2行添加展开按钮,未超过则不显示,溢出部分显示省略号
2019/04/28 Javascript
Echarts地图添加引导线效果(labelLine)
2019/09/30 Javascript
Python实现求数列和的方法示例
2018/01/12 Python
详解Python传入参数的几种方法
2019/05/16 Python
Mac 使用python3的matplot画图不显示的解决
2019/11/23 Python
python 通过邮件控制实现远程控制电脑操作
2020/03/16 Python
Python函数的迭代器与生成器的示例代码
2020/06/18 Python
python的dict判断key是否存在的方法
2020/12/09 Python
求高于平均分的学生学号及成绩
2016/09/01 面试题
优秀幼教自荐信
2014/02/03 职场文书
好学生评语大全
2014/05/05 职场文书
银行委托书范本
2014/09/28 职场文书
2014年小班保育员工作总结
2014/12/23 职场文书
音乐剧猫观后感
2015/06/04 职场文书
关于国庆节的广播稿
2015/08/19 职场文书
jQuery实现广告显示和隐藏动画
2021/07/04 jQuery
python数字图像处理:图像的绘制
2022/06/28 Python