python初学项目实战——名片管理系统(一)
本文章是记录自己学习python的过程,起到一个笔记的作用,主要是实现名片管理项目中新建名片、查看全部名片、以及查询名片并对所查询的名片进行修改、删除等简单操作。后续还会增加保存数据、对输入的数据进行格式限制:例如邮箱的格式、手机号只允许输入0-9的11位数字,增加面向对象等功能
此文件是对各个功能进行定义,主要定义了新建名片功能、查看全部名片功能、查询名片功能、对查询名片进行修改、删除的定义以及对input功能扩展来实现回车不进行修改返回默认值操作。
其中修改名片功能中使用了传参,
find_dict['name'] = input_card_info(find_dict.get('name'),"请输入修改后的姓名[不修改直接回车]:")
其中将“find_dict.get('name'),"请输入修改后的姓名[不修改直接回车]”实参 传参到调用函数 “ input_card_info(dict_value, msg)”中,“find_dict.get('name')”传入到形参dict_value中,"请输入修改后的姓名[不修改直接回车]”传参到msg中;
#当前文件负责各个功能函数的实现和定义
#当前文件负责定义函数,不负责调用
#实现功能:显示菜单、新建名片、显示全部名片、查询名片、修改名片、删除名片、返回上一级#定义全局变量 名片列表
card_list= []#定义显示菜单功能函数def show_menu():"""当前函数实现显示菜单函数"""print("")print("*" * 50)print("欢迎使用[名片管理系统] v1.0")print("")#空行print("1. 新建名片")print("2. 显示全部")print("3. 查询名片")print("")#空行print("0. 退出系统")print("*" * 50)print("")#定义新建名片功能函数
def new_card():"""当前函数实现了新建名片功能:return:"""print("[功能]——新建名片")# 1.获取用户输入信息name_str = input("请输入姓名:")sex_str = input("请输入性别:")phone_str = input("请输入电话:")qq_str = input("请输入QQ号:")Email_str = input("请输入邮箱:")# 2.将获取的输入信息保存到字典中new_dict = {'name':name_str,'sex':sex_str,'phone':phone_str,'qq':qq_str,'Email':Email_str }# 3.将字典添加到列表中card_list.append(new_dict)# 4.打印提示,新建新建名片成功print(" 新建 名片成功!","姓名是:%s " %name_str)print("名片列表,card_list:",card_list)
#定义显示全部名片功能函数
def show_all_card():"""当前函数实现显示全部名片的功能:return:"""#pass #pass是占位符,起到完善语法结构的作用,不输入任何内容print("[功能]——显示全部名片")#0.先判断名片列表中有没有数据,若无数据,提示新建名片,# 并且代码不在向下执行 用return终止函数运行if len(card_list) <= 0:print("当前名片列表中没有数据,请新建名片")return#1.先打印表头print("-" * 70)print("姓名".ljust(10),"性别".ljust(10),"电话".ljust(10),"qq".ljust(10),"邮箱".ljust(10),sep="\t\t") #sep="\t\t"每个数据之间两个tap键插入print("-" * 70)#2.按照格式打印表格里数据(把名片列表中的数据打印出来)for item in card_list: #临时变量item 获取的是列表中的一个个字典print(item.get('name').ljust(10),item.get('sex').ljust(10),item.get('phone').ljust(10),item.get('qq').ljust(10),item.get('Email').ljust(10),sep="\t\t")#定义查询名片功能函数
def search_card():"""当前函数实现查询语法名片的功能:return:"""#passprint("[功能]——查询名片")#1.获取用户要查询的姓名find_name = input("请输入你要查询的姓名:")#2.拿着要查询的姓名到名片列表中查找for item in card_list:# 临时变量item获取的是列表中一个个字典if item.get('name') == find_name:#3.如果找到,打印提示找到的的信息print("以及找到姓名是:%s 的信息了" % item.get('name'))#打印表头print("-" * 70)print("姓名".ljust(10), "性别".ljust(10), "电话".ljust(10), "qq".ljust(10), "邮箱".ljust(10),sep="\t\t") # sep="\t\t"每个数据之间两个tap键插入print("-" * 70)#打印表格里的数据print(item.get('name').ljust(10),item.get('sex').ljust(10),item.get('phone').ljust,item.get('qq').ljust(10),item.get('Email').ljust(10), sep="\t\t")#调用对名片的操作选择函数deal_card(item)#以及找到人物信息,退出循环break#4.如果没有找到,提示没有找到这个人物的信息else:print("没有找到姓名为: %s 的信息,请核对后重新输入!" % find_name)#对当前名片进行操作选择函数
def deal_card(find_dict):"""当前函数对名片进行操作选择的功能:修改、删除、返回上一级:return:"""#获取用户输入信息op = input("请输入对名片的操作选择:[1.修改 2.删除 0.返回上一级]")print("请输入您的选择:")#根据用户的输入信息进行判断if op == "1":#若用户输入”1“,修改名片print("[功能]————修改名片")#1.获取修改后的信息#2.将获取到修改后的数据 替换字典的key对于的value的值find_dict['name'] = input_card_info(find_dict.get('name'),"请输入修改后的姓名[不修改直接回车]:")find_dict['sex'] = input_card_info(find_dict.get('sex'),"请输入修改后的性别[不修改直接回车]:")find_dict['phone'] = input_card_info(find_dict.get('phone'),"请输入修改后的手机号[不修改直接回车]:")find_dict['qq'] = input_card_info(find_dict.get('qq'),"请输入修改后的qq[不修改直接回车]:")find_dict['Email'] = input_card_info(find_dict.get('Email'),"请输入修改后的邮箱[不修改直接回车]:")#3.打印修改名片成功print("名片修改成功")elif op == "2":#若用户输入”2“,删除名片print("[功能]————删除名片")#把名片列表中的字典删除card_list.remove(find_dict)#提示删除成功print("删除名片成功")elif op == "0":#若用户输入”0“,返回上一级print("[功能]————返回上一级")# 提前结束函数运行returnelse:#若用户输入其他,提示”输入有误“print("您的输入有误,请重新输入")def input_card_info(dict_value, msg):"""当前函数对input()函数进行功能扩充:param msg::return:"""# 1.使用input()函数获取用户的输入信息info = input(msg)# 2.对用户的输入信息进行判断# 3.若有input有输入信息,把输入的信息返回给字典的key对应的valueif len(info) > 0:return info# 4.若用户没有输入信息,不能返回空字符串,把字典默认值返回else:return dict_value
这个文件是用来调用定义的功能函数,再次文件运行即可。
#当前文件card.main.py是总控中心,不负责实现各种功能,是负责调度各种功能函数的
#所有功能函数都由其来调度
#1.导入工具包
import cards_tool
#添加死循环,让菜单重复显示
while True:#2.使用工具包中的工具 模块名.函数名()# 显示菜单功能函数cards_tool.show_menu()#对于循环次数不确定时,可以使用死循环,#但是死循环中必须要有退出条件,死循环可以用break来打破#获取用户的输入选择option = input("请输入您的选择:") #input函数输入的都是字符串#print(option)#print(type(option))#根据用户的输入选择进行判断if option in ["1","2","3"]:#对option的值进行进一步判断if option == "1":#用户想要新建名片cards_tool.new_card()elif option == "2":#用户想要显示全部名片cards_tool.show_all_card()else:#用户想要查询名片cards_tool.search_card()elif option == "0":print("欢迎使用名片管理系统")print("欢迎再次使用")#当用户输入"0",想要退出名片管理系统,break跳出死循环breakelse:print("您的输入有误,请核对后重新输入")
print(">>>>名片管理系统程序结束<<<")
python初学项目实战——名片管理系统(一)相关推荐
- 微项目:名片管理系统
名片管理系统是一个检验Python初学者入门的实战小项目,它覆盖了Python程序设计的一些基础知识,其中包括有模块.输入/输出.while语句.if-elif-else语句.for循环语句.占位符/ ...
- python爬虫项目-33个Python爬虫项目实战(推荐)
今天为大家整理了32个Python爬虫项目. 整理的原因是,爬虫入门简单快速,也非常适合新入门的小伙伴培养信心.所有链接指向GitHub,祝大家玩的愉快~O(∩_∩)O WechatSogou [1] ...
- python智慧城市_智慧城市背景下Python机器学习项目实战案例分享
首先,何为智慧城市?智慧城市的"智慧"源自何处? 智慧城市的特征在于运用大数据和数字技术提高居民生活质量. 机构获得的数据越全面.越实时,它们就越有能力观测事件发生的详情.分析需求 ...
- python人工智能项目实例-python人工智能项目实战,PDF+源码
原标题:python人工智能项目实战,PDF+源码 <python人工智能项目 Intelligent Projects Using Python> 实施机器学习和深度学习方法,使用Pyt ...
- 智慧城市背景下Python机器学习项目实战案例分享
首先,何为智慧城市?智慧城市的"智慧"源自何处? 智慧城市的特征在于运用大数据和数字技术提高居民生活质量. 机构获得的数据越全面.越实时,它们就越有能力观测事件发生的详情.分析需求 ...
- python爬虫知网实例-33个Python爬虫项目实战(推荐)
今天为大家整理了32个Python爬虫项目. 整理的原因是,爬虫入门简单快速,也非常适合新入门的小伙伴培养信心.所有链接指向GitHub,祝大家玩的愉快~O(∩_∩)O WechatSogou [1] ...
- python金融实战 源代码_穆棱市seo总代直销python金融量化营业实战课程 python量化项目实战源码+课件+视频...
python金融量化生意实战课程 python量化项目实战源码+课件+视频 1. 自愿化生意综述 重要实质: 课程实质综述,自愿化/算法生意先容,python正在自愿生意中的使用简介 2. 量化生意体 ...
- python爬虫项目实战教学视频_('[Python爬虫]---Python爬虫进阶项目实战视频',)
爬虫]---Python 爬虫进阶项目实战 1- Python3+Pip环境配置 2- MongoDB环境配置 3- Redis环境配置 4- 4-MySQL的安装 5- 5-Python多版本共存配 ...
- Java项目实战---歌曲管理系统
Java项目实战-歌曲管理系统 声明:本人仅整理了代码,方便大家进行调试优化,功能上还存在很多纰漏,欢迎大家评论区讨论 代码原地址放于文章末尾 一.实验目的: 掌握类的定义,JAVA应用程序的设计与实 ...
- Vue项目实战 —— 后台管理系统( pc端 ) 第三篇
前期回顾 Vue项目实战 -- 后台管理系统( pc端 ) 第二篇_0.活在风浪里的博客-CSDN博客前期回顾 Vue项目实战 -- 后台管理系统( pc端 ) 第一篇 _0.活在风浪里 ...
最新文章
- es6 语法 (Proxy和Reflect 的对比)
- Asp.NET获取文件及其路径
- linux 以太网转wifi,LINUX-网络 - (以太网和WIFI无线)
- 新编辑神器,可以在终端运行 Jupyter Notebook 了!
- 设计高效sql一般经验谈
- SQL Server 中 EXEC 与 SP_EXECUTESQL 的区别
- Unity 开发和配置
- vue 实现页面静态化
- 如何修改Oracle并发连接数的设置
- 深度学习 --- 随机神经网络详解(玻尔兹曼机学习算法、运行算法)
- pcl命名空间:segmentation/extract_clusters.h与segmentation/imp/extract_clusters.hpp
- 软件架构图该怎么画?架构设计如何标准化?
- 图片转文字、视频转文字 超赞网页分享
- 四叶草云演-CTF04# 后台管理系统
- Mysql删除数据什么情况下会释放空间
- ubuntu与centos哪个更适合做服务器。
- 怎么做一名合格的测试工程师
- oracle join 优化询,oracle中优化left join的工作心得
- STC8H库函数使用笔记
- 阿里会成为下一个谷歌?谁才是Google真正的挑战者