用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中利用sorted()函数排序的简单教程
Apr 27 Python
Python实现从URL地址提取文件名的方法
May 15 Python
基于python的Tkinter实现一个简易计算器
Dec 31 Python
玩转python爬虫之cookie使用方法
Feb 17 Python
Python判断列表是否已排序的各种方法及其性能分析
Jun 20 Python
python编程实现归并排序
Apr 14 Python
基于MTCNN/TensorFlow实现人脸检测
May 24 Python
对numpy中shape的深入理解
Jun 15 Python
基于Python开发chrome插件的方法分析
Jul 07 Python
解决Pycharm界面的子窗口不见了的问题
Jan 17 Python
python利用Opencv实现人脸识别功能
Apr 25 Python
python利用xlsxwriter模块 操作 Excel
Oct 14 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
当年上海收录机产品生产,进口和价格情况
2021/03/04 无线电
php下实现在指定目录搜索指定类型文件的函数
2008/10/03 PHP
获取PHP警告错误信息的解决方法
2013/06/03 PHP
二进制交叉权限微型php类分享
2014/02/07 PHP
PHP中类属性与类静态变量的访问方法示例
2016/07/13 PHP
Yii框架参数化查询中IN查询只能查询一个的解决方法
2017/05/20 PHP
PHP中抽象类,接口功能、定义方法示例
2019/02/26 PHP
js 蒙版进度条(结合图片)
2010/03/10 Javascript
javascript模拟实现C# String.format函数功能代码
2013/11/25 Javascript
JQuery弹出炫丽对话框的同时让背景变灰色
2014/05/22 Javascript
javascript自定义的addClass()方法
2014/05/28 Javascript
使用mouse事件实现简单的鼠标经过特效
2015/01/30 Javascript
js实现随屏幕滚动的带缓冲效果的右下角广告代码
2015/09/04 Javascript
跟我学习javascript的undefined与null
2015/11/17 Javascript
使用BootStrapValidator完成前端输入验证
2016/09/28 Javascript
JS中from 表单序列化提交的代码
2017/01/20 Javascript
JS对象深度克隆实例分析
2017/03/16 Javascript
Vue.js如何实现路由懒加载浅析
2017/08/14 Javascript
JavaScript生成简单等差数列
2017/11/28 Javascript
vue2.0 实现导航守卫(路由守卫)
2018/05/21 Javascript
微信小程序select下拉框实现效果
2019/05/15 Javascript
Nuxt.js 静态资源和打包的操作
2020/11/06 Javascript
[48:38]DOTA2亚洲邀请赛 3.31 小组赛 B组 Mineski vs Secret
2018/03/31 DOTA
Python中unittest用法实例
2014/09/25 Python
Python函数中的函数(闭包)用法实例
2016/03/15 Python
Python Numpy计算各类距离的方法
2019/07/05 Python
Python+AutoIt实现界面工具开发过程详解
2019/08/07 Python
Python实现元素等待代码实例
2019/11/11 Python
Python with语句和过程抽取思想
2019/12/23 Python
Django实现从数据库中获取到的数据转换为dict
2020/03/27 Python
高中毕业自我鉴定
2013/12/19 职场文书
小学庆六一活动总结
2014/08/28 职场文书
见习报告的格式
2014/10/31 职场文书
集结号观后感
2015/06/08 职场文书
2015年安全生产月工作总结
2015/07/27 职场文书
《检阅》教学反思
2016/02/22 职场文书