用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 相关文章推荐
Perl中著名的Schwartzian转换问题解决实现
Jun 02 Python
pygame实现俄罗斯方块游戏
Jun 26 Python
Python3 利用requests 库进行post携带账号密码请求数据的方法
Oct 26 Python
对python:threading.Thread类的使用方法详解
Jan 31 Python
PyQt4 treewidget 选择改变颜色,并设置可编辑的方法
Jun 17 Python
python中pytest收集用例规则与运行指定用例详解
Jun 27 Python
python yield和Generator函数用法详解
Feb 10 Python
解决django 向mysql中写入中文字符出错的问题
May 18 Python
keras训练曲线,混淆矩阵,CNN层输出可视化实例
Jun 15 Python
python爬取”顶点小说网“《纯阳剑尊》的示例代码
Oct 16 Python
python基于机器学习预测股票交易信号
May 25 Python
tensorflow中的数据类型dtype用法说明
May 26 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编程最快明白》第五讲:php目录、文件操作
2010/11/01 PHP
PHP中空字符串介绍0、null、empty和false之间的关系
2012/09/25 PHP
php excel reader读取excel内容存入数据库实现代码
2012/12/06 PHP
php使用正则表达式获取图片url的方法
2015/01/16 PHP
PHP面相对象中的重载与重写
2017/02/13 PHP
轻松实现php文件上传功能
2017/02/17 PHP
PHP常用字符串输出方法分析(echo,print,printf及sprintf)
2021/03/09 PHP
Javascript条件判断使用小技巧总结
2008/09/08 Javascript
javascript获得服务器端控件的ID的实现代码
2011/12/28 Javascript
JQuery的AJAX实现文件下载的小例子
2013/05/15 Javascript
jquery在项目中做复选框时遇到的一些问题笔记
2013/11/17 Javascript
js实现同一页面多个运动效果的方法
2015/04/10 Javascript
JavaScript实现鼠标滑过图片变换效果的方法
2015/04/16 Javascript
JS实现添加,替换,删除节点元素的方法
2016/06/30 Javascript
jQuery Validate让普通按钮触发表单验证的方法
2016/12/15 Javascript
javascript自执行函数
2017/02/10 Javascript
分享一道关于闭包、bind和this的面试题
2017/02/20 Javascript
基于jquery.page.js实现分页效果
2018/01/01 jQuery
微信小程序methods中定义的方法互相调用的实例代码
2018/08/07 Javascript
解决vue prop传值default属性如何使用,为何不生效的问题
2020/09/21 Javascript
Jquery+javascript实现支付网页数字键盘
2020/12/21 jQuery
在nodejs中创建child process的方法
2021/01/26 NodeJs
Python中的上下文管理器和with语句的使用
2018/04/17 Python
利用pyinstaller将py文件打包为exe的方法
2018/05/14 Python
Python实现的绘制三维双螺旋线图形功能示例
2018/06/23 Python
Python3 安装PyQt5及exe打包图文教程
2019/01/08 Python
用Python将结果保存为xlsx的方法
2019/01/28 Python
Python切图九宫格的实现方法
2019/10/10 Python
Python urllib.request对象案例解析
2020/05/11 Python
英国巧克力贸易公司:Chocolate Trading Company
2017/03/21 全球购物
学生会主席事迹材料
2014/01/28 职场文书
委托书模板
2014/04/04 职场文书
个人先进事迹材料范文
2014/12/29 职场文书
2016入党积极分子党课学习心得体会
2015/10/09 职场文书
MySQL完整性约束的定义与实例教程
2021/05/30 MySQL
Oracle用户管理及赋权
2022/04/24 Oracle