用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中django框架通过正则搜索页面上email地址的方法
Mar 21 Python
Python运算符重载详解及实例代码
Mar 07 Python
利用 python 对目录下的文件进行过滤删除
Dec 27 Python
Python初学者需要注意的事项小结(python2与python3)
Sep 26 Python
python使用for循环计算0-100的整数的和方法
Feb 01 Python
Python中新式类与经典类的区别详析
Jul 10 Python
sklearn-SVC实现与类参数详解
Dec 10 Python
Python3实现mysql连接和数据框的形成(实例代码)
Jan 17 Python
Python实现桌面翻译工具【新手必学】
Feb 12 Python
详解Python修复遥感影像条带的两种方式
Feb 23 Python
Python3 hashlib密码散列算法原理详解
Mar 30 Python
浅析Python实现DFA算法
Jun 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
世界收音机发展史
2021/03/01 无线电
destoon复制新模块的方法
2014/06/21 PHP
关于Ext中form移除textfield方法:hide(),setVisible(false),remove()
2010/12/02 Javascript
javascript写的日历类(基于pj)
2010/12/28 Javascript
A标签中通过href和onclick传递的this对象实现思路
2013/04/19 Javascript
js实现广告漂浮效果的小例子
2013/07/02 Javascript
jquery设置按钮停顿3秒不可用
2014/03/07 Javascript
jquery通过load获取文件的内容并跳到锚点的方法
2015/01/29 Javascript
JavaScript使用二分查找算法在数组中查找数据的方法
2015/04/07 Javascript
AngularJS延迟加载html template
2016/07/27 Javascript
Js动态设置rem来实现移动端字体的自适应代码
2016/10/14 Javascript
原生js实现返回顶部缓冲效果
2017/01/18 Javascript
VueJs组件prop验证简单介绍
2017/09/12 Javascript
关于HTTP传输中gzip压缩的秘密探索分析
2018/01/12 Javascript
微信小程序http连接访问解决方案的示例
2018/11/05 Javascript
微信小程序--特定区域滚动到顶部时固定的方法
2019/04/28 Javascript
JavaScript中交换值的10种方法总结
2020/08/18 Javascript
three.js 实现露珠滴落动画效果的示例代码
2021/03/01 Javascript
python标准算法实现数组全排列的方法
2015/03/17 Python
Python中splitlines()方法的使用简介
2015/05/20 Python
python snownlp情感分析简易demo(分享)
2017/06/04 Python
Python字典数据对象拆分的简单实现方法
2017/12/05 Python
Python操作列表常用方法实例小结【创建、遍历、统计、切片等】
2019/10/25 Python
Python中的X[:,0]、X[:,1]、X[:,:,0]、X[:,:,1]、X[:,m:n]和X[:,:,m:n]
2020/02/13 Python
CSS3中颜色线性渐变实战
2015/07/18 HTML / CSS
Burt’s Bees英国官网:世界领先的天然个人护理品牌
2020/08/17 全球购物
某个公司的Java笔面试题
2016/03/11 面试题
酒鬼酒广告词
2014/03/21 职场文书
竞聘演讲稿开场白
2014/08/25 职场文书
关于运动会广播稿200字
2014/10/08 职场文书
社保缴纳证明申请书
2014/11/03 职场文书
先进个人主要事迹范文
2015/11/04 职场文书
高效课堂教学反思
2016/02/24 职场文书
golang中实现给gif、png、jpeg图片添加文字水印
2021/04/26 Golang
在Centos 8.0中安装Redis服务器的教程详解
2022/03/21 Redis
Golang 遍历二叉树
2022/04/19 Golang