Python综合应用名片管理系统案例详解
本文实例讲述了Python综合应用名片管理系统。分享给大家供大家参考,具体如下:
综合应用已经学习过的知识点:
- 变量
- 流程控制
- 函数
- 模块
开发名片管理系统
系统需求
- 程序启动,显示名片管理系统欢迎界面,并显示功能菜单
************************************************** 欢迎使用【名片管理系统】V1.0 1.新建名片 2.显示全部 3.查询名片 0.退出系统 **************************************************
-
- 用户用数字选择不同的功能
-
- 根据功能选择,执行不同的功能
-
- 用户名片需要记录用户的姓名、电话、QQ、邮件
-
- 如果查询到指定的名片,用户可以选择修改或者删除名片
步骤
- 框架搭建
- 新增名片
- 显示所有名片
- 查询名片
- 查询成功后修改、删除名片
- 让Python程序能够直接运行
01.框架搭建
目标
- 搭建名片管理系统框架结构
- 准备文件,确定文件名,保证能够在需要的位置编写代码
- 编写主运行循环,实现基本的用户输入和判断
1.1文件准备
- 新建cards_main.py保存主程序功能代码
- 程序的入口
- 每一次启动名片管理系统都通过main这个文件启动
- 新建cards_tools.py保存所有名片功能函数
- 将对名片的新增、查询、修改、删除等功能封装在不同的函数中
1.2编写主运行循环
- 在cards_main中添加一个无限循环
whileTrue: #TODO(小明)显示系统菜单 action=input("请选择操作功能:") print("您选择的操作是:%s"%action) #根据用户输入决定后续的操作 ifactionin["1","2","3"]: pass elifaction=="0": print("欢迎再次使用【名片管理系统】") break else: print("输入错误,请重新输入")
字符串判断
ifactionin["1","2","3"]:
ifaction=="1"oraction=="2"oraction=="3":
- 使用in针对列表判断,避免使用or拼接复杂的逻辑条件
- 没有使用int转换用户输入,可以避免一旦用户输入的不是数字,导致程序运行出错
pass
- pass就是一个空语句,不做任何事情,一般用做占位语句
- 是为了保持程序结构的完整性
无限循环
- 在开发软件时,如果不希望程序执行后立即退出
- 可以在程序中增加一个无限循环
- 由用户来决定退出程序的时机
TODO注释
- 在#后跟上TODO,用于标记需要去做的工作
#TODO(作者/邮件)显示系统菜单
1.3在cards_tools中增加四个新函数
defshow_menu(): """显示菜单 """ pass defnew_card(): """新建名片 """ print("-"*50) print("功能:新建名片") defshow_all(): """显示全部 """ print("-"*50) print("功能:显示全部") defsearch_card(): """搜索名片 """ print("-"*50) print("功能:搜索名片")
1.4导入模块
- 在cards_main.py中使用import导入cards_tools模块
importcards_tools
修改while循环的代码如下:
importcards_tools whileTrue: cards_tools.show_menu() action=input("请选择操作功能:") print("您选择的操作是:%s"%action) #根据用户输入决定后续的操作 ifactionin["1","2","3"]: ifaction=="1": cards_tools.new_card() elifaction=="2": cards_tools.show_all() elifaction=="3": cards_tools.search_card() elifaction=="0": print("欢迎再次使用【名片管理系统】") break else: print("输入错误,请重新输入:")
至此:cards_main中的所有代码全部开发完毕!
1.5完成show_menu函数
defshow_menu(): """显示菜单 """ print("*"*50) print("欢迎使用【菜单管理系统】V1.0") print("") print("1.新建名片") print("2.显示全部") print("3.查询名片") print("") print("0.退出系统") print("*"*50)
02.保存名片数据的结构
程序就是用来处理数据的,而变量就是用来存储数据的
-
使用字典记录每一张名片的详细信息
-
使用列表统一记录所有的名片字典
定义名片列表变量 -
在cards_tools文件的顶部增加一个列表变量
#所有名片记录的列表 card_list=[]
注意
- 所有名片相关操作,都需要使用这个列表,所以应该定义在程序的顶部
- 程序刚运行时,没有数据,所以是空列表
03.新增名片
3.1功能分析
- 提示用户依次输入名片信息
- 将名片信息保存到一个字典
- 将字典添加到名片列表
- 提示名片添加完成
3.2实现new_card方法
- 根据步骤实现代码
defnew_card(): """新建名片 """ print("-"*50) print("功能:新建名片") #1.提示用户输入名片信息 name=input("请输入姓名:") phone=input("请输入电话:") qq=input("请输入QQ号码:") email=input("请输入邮箱:") #2.将用户信息保存到一个字典 card_dict={"name":name, "phone":phone, "qq":qq, "email":email} #3.将用户字典添加到名片列表 card_list.append(card_dict) print(card_list) #4.提示添加成功信息 print("成功添加%s的名片"%card_dict["name"])
技巧:在PyCharm中,可以使用SHIFT+F6统一修改变量名
04.显示所有名片
4.1功能分析
- 循环遍历名片列表,顺序显示每一个字典的信息
4.2基础代码实现
defshow_all(): """显示全部 """ print("-"*50) print("功能:显示全部") forcard_dictincard_list: print(card_dict)
- 显示效果不好!
4.3增加标题和使用\t显示
defshow_all(): """显示全部 """ print("-"*50) print("功能:显示全部") #打印表头 fornamein["姓名","电话","QQ","邮箱"]: print(name,end="\t\t") print("") #打印分隔线 print("="*50) forcard_dictincard_list: print("%s\t\t%s\t\t%s\t\t%s"%(card_dict["name"], card_dict["phone"], card_dict["qq"], card_dict["email"]))
4.4增加没有名片记录判断
defshow_all(): """显示全部 """ print("-"*50) print("功能:显示全部") #1.判断是否有名片记录 iflen(card_list)==0: print("提示:没有任何名片记录") return
注意
- 在函数中使用return表示返回
- 如果在return后没有跟任何内容,只是表示该函数执行到此就不再执行后续的代码
05.查询名片
5.1功能分析
- 提示用户要搜索的姓名
- 根据用户输入的姓名遍历列表
- 搜索到指定的名片后,再执行后续的操作
5.2代码实现
- 查询功能实现
defsearch_card(): """搜索名片 """ print("-"*50) print("功能:搜索名片") #1.提示要搜索的姓名 find_name=input("请输入要搜索的姓名:") #2.遍历字典 forcard_dictincard_list: ifcard_dict["name"]==find_name: print("姓名\t\t\t电话\t\t\tQQ\t\t\t邮箱") print("-"*40) print("%s\t\t\t%s\t\t\t%s\t\t\t%s"%( card_dict["name"], card_dict["phone"], card_dict["qq"], card_dict["email"])) print("-"*40) #TODO(小明)针对找到的字典进行后续操作:修改/删除 break else: print("没有找到%s"%find_name)
增加名片操作函数:修改/删除/返回主菜单
defdeal_card(find_dict): """操作搜索到的名片字典 :paramfind_dict:找到的名片字典 """ print(find_dict) action_str=input("请选择要执行的操作" "[1]修改[2]删除[0]返回上级菜单") ifaction=="1": print("修改") elifaction=="2": print("删除")
06.修改和删除
6.1查询成功后删除名片
- 由于找到的字典记录已经在列表中保存
- 要删除名片记录,只需要把列表中对应的字典删除即可
elifaction=="2": card_list.remove(find_dict) print("删除成功")
6.2修改名片
由于找到的字典记录已经在列表中保存
- 要修改名片记录,只需要把列表中对应的字典中每一个键值对的数据修改即可
ifaction=="1": find_dict["name"]=input("请输入姓名:") find_dict["phone"]=input("请输入电话:") find_dict["qq"]=input("请输入QQ:") find_dict["email"]=input("请输入邮件:") print("%s的名片修改成功"%find_dict["name"])
修改名片细化
- 如果用户在使用时,某些名片内容并不想修改,应该如何做呢?——既然系统提供的input函数不能满足需求,那么就新定义一个函数input_card_info对系统的input函数进行扩展
definput_card_info(dict_value,tip_message): """输入名片信息 :paramdict_value:字典原有值 :paramtip_message:输入提示信息 :return:如果输入,返回输入内容,否则返回字典原有值 """ #1.提示用户输入内容 result_str=input(tip_message) #2.针对用户的输入进行判断,如果用户输入了内容,直接返回结果 iflen(result_str)>0: returnresult_str #3.如果用户没有输入内容,返回`字典中原有的值` else: returndict_value
07.LINUX上的Shebang符号(#!)
- #!这个符号叫做Shebang或者Sha-bang
- Shebang通常在Unix系统脚本的中第一行开头使用
- 指明执行这个脚本文件的解释程序
使用Shebang的步骤
-
- 使用which查询python3解释器所在路径
$whichpython3
修改要运行的主python文件,在第一行增加以下内容
#!/usr/bin/python3
修改主python文件的文件权限,增加执行权限
$chmod+xcards_main.py
在需要时执行程序即可
./cards_main.py
关于Python相关内容感兴趣的读者可查看本站专题:《Python函数使用技巧总结》、《Python面向对象程序设计入门与进阶教程》、《Python数据结构与算法教程》、《Python字符串操作技巧汇总》、《Python编码操作技巧总结》及《Python入门与进阶经典教程》
希望本文所述对大家Python程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。