cards_main.py主函数

cards_tools.py

----------------------------------------------------------------------------------------------------------------------------------

cards_main.py
"""TODO 显示系统菜单,用于标记需要去做的工作
pass就是一个空语句,不做任何事情,一般用做占位语句
开发步骤思路讲解:
1.准备主模块和子模块。子模块放各种函数(将对名片的 **新增**、**查询**、**修改**、**删除** 等功能封装在不同的函数中
2.main函数先导入子函数模块,实现无限循环,主菜单展示,用户输入,字符串判断
3.子函数中先罗列出各个功能函数名称,而后将子函数安插到main函数中等待调用
4.开发子函数,完成show_menu
5.开发子函数,完成new_card
6.开发子函数,完成show_all
7.开发子函数,完成search_card
8.
"""
import cards_tools #导入要用到的模块
while True:#在开发软件时,如果 **不希望程序执行后** 立即退出,可以在程序中增加一个 **无限循环**
cards_tools.show_menu()#调用子函数中第一个方法
action = input("请选择操作的功能")
print("您选择的操作是:%s"%action)
if action in ["1","2","3"]:
#if action == "1" or action == "2" or action == "3":使用 `in` 针对 **列表** 判断,避免使用 `or` 拼接复杂的逻辑条件
if action =="1":
cards_tools.new_card()
elif action =="2":
cards_tools.show_all()
elif action =="3":
cards_tools.search_card()
elif action == "0":
print("欢迎再次使用")
break#和while一起用表示由用户来决定** 退出程序的时机
else:
print("输出错误,重新输入") -------------------------------------------------------------------------------------------------------------------------------------
cards_tools.py
card_list = []
#程序就是用来处理数据的,而变量就是用来存储数据的
# 使用 **字典** 记录 **每一张名片** 的详细信息,使用 **列表** 统一记录所有的 **名片字典**
# 在 `cards_tools` 文件的顶部增加一个 **列表变量**,所有名片相关操作**,都需要使用这个列表,所以应该 **定义在程序的顶部** def show_menu():
print("*"*50)
print("欢迎使用【菜单管理系统】V1.0")
print("")
print("1. 新建名片")
print("2. 显示全部")
print("3. 查询名片")
print("")
print("0. 退出系统")
print("*" * 50) #增加名片
#1.定义一个列表变量在开头
#2.输入名片信息并保存到一个字典
#3.将字典添加到名片列表
def new_card():
print("-"*50)
print("功能:新建名片")
name = input("请输入姓名:") #提示用户依次输入名片信息
phone = input("请输入电话:")
qq = input("请输入 QQ 号码:")
email = input("请输入邮箱:")
card_dict = {"name":name,
"phone":phone,
"qq":qq,
"email":email}#将名片信息保存到一个字典
card_list.append(card_dict)#将字典添加到名片列表,这个名片列表是空的定义在开头
print(card_list)
print("成功添加%s的名片" % card_dict["name"])#提示名片添加完成 #查看所有名片
#增加标题
#遍历一遍列表
#增加没有名片记录判断
def show_all():
print("-" * 50)
print("功能:显示全部")
if len(card_list)==0:#增加没有名片记录判断
print("提示:没有任何名片记录")
return #如果在 `return` 后没有跟任何内容,只是表示该函数执行到此就不再执行后续的代码
for name in ["姓名", "电话", "QQ", "邮箱"]: # 打印表头
print(name, end="\t\t")#增加标题和使用 `\t` 显示
print("")
print("=" * 50)
for card_dict in card_list: print("%s\t\t%s\t\t%s\t\t%s" % (card_dict["name"],
card_dict["phone"],
card_dict["qq"],
card_dict["email"]))
#搜索名片
#让用户输入需要搜索的姓名
#遍历字典
#搜索成功后开启一个新函数用来修改删除
def search_card():
print("-" * 50)
print("功能:搜索名片")
find_name = input("请输入要搜索的姓名:")# 1. 提示要搜索的姓名
for card_dict in card_list:# 2. 遍历字典
if card_dict["name"] == find_name:
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)
deal_card(card_dict) #3.下方开始定义修改删除的新函数
break
else:
print("没有找到 %s" % find_name) #修改删除名片
#先让用户输入操作
#根据提示来做修改和删除方法
#开启新函数用来优化不想修改名片的功能
def deal_card(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"],"请输入邮箱,回车不修改")#由于找到的字典记录已经在列表中保存,要修改名片记录,只需要把列表中对应的字典中每一个键值对的数据修改即可
elif action_str == "2":
card_list.remove(find_dict) #由于找到的字典记录已经在列表中保存,要删除名片记录,只需要把列表中对应的字典删除即可
print("删除成功") #名片不想修改的情况
#定义原有值和输入值,有哪个返回哪个字段
def input_card_info(dict_value,tip_message):#:param dict_value: 字典原有值:param tip_message: 输入提示信息 :return: 如果输入,返回输入内容,否则返回字典原有值
result_str = input(tip_message) # 1. 提示用户输入内容
if len(result_str) > 0: # 2. 针对用户的输入进行判断,如果用户输入了内容,直接返回结果
return result_str
else:# 3. 如果用户没有输入内容,返回字典中原有的值`
return dict_value

python视频学习笔记6(名片管理系统开发)的更多相关文章

  1. python视频学习笔记3(循环)

    一.程序的三大流程 二.while 初始条件设置 —— 通常是重复执行的 计数器 while 条件(判断 计数器 是否达到 目标次数): 条件满足时,做的事情1 条件满足时,做的事情2 条件满足时,做 ...

  2. python视频学习笔记5(高级变量的类型)

    知识点回顾: Python 中数据类型可以分为 **数字型** 和 **非数字型*** 数字型 * 整型 (`int`) * 浮点型(`float`) * 布尔型(`bool`) * 真 `True` ...

  3. python视频学习笔记2(if)

    一.if语句1.比较运算符,if语句语法 # 1. 输入用户年龄# 2. 判断是否满 18 岁 (**>=**)# 3. 如果满 18 岁,允许进网吧嗨皮# 4. 如果未满 18 岁,提示回家写 ...

  4. python视频学习笔记4(函数)

    函数中return和print的区别,没有return会默认返回None值 函数定义:所谓**函数**,就是把 **具有独立功能的代码块** 组织为一个小模块,在需要的时候 **调用** 1.函数的步 ...

  5. Python Click 学习笔记(转)

    原文链接:Python Click 学习笔记 Click 是 Flask 的团队 pallets 开发的优秀开源项目,它为命令行工具的开发封装了大量方法,使开发者只需要专注于功能实现.恰好我最近在开发 ...

  6. Python Flask学习笔记之Hello World

    Python Flask学习笔记之Hello World 安装virtualenv,配置Flask开发环境 virtualenv 虚拟环境是Python解释器的一个私有副本,在这个环境中可以安装私有包 ...

  7. Spring MVC 学习笔记12 —— SpringMVC+Hibernate开发(1)依赖包搭建

    Spring MVC 学习笔记12 -- SpringMVC+Hibernate开发(1)依赖包搭建 用Hibernate帮助建立SpringMVC与数据库之间的联系,通过配置DAO层,Service ...

  8. 【原】Learning Spark (Python版) 学习笔记(三)----工作原理、调优与Spark SQL

    周末的任务是更新Learning Spark系列第三篇,以为自己写不完了,但为了改正拖延症,还是得完成给自己定的任务啊 = =.这三章主要讲Spark的运行过程(本地+集群),性能调优以及Spark ...

  9. VSTO 学习笔记(十一)开发Excel 2010 64位自定义公式

    原文:VSTO 学习笔记(十一)开发Excel 2010 64位自定义公式 Excel包含很多公式,如数学.日期.文本.逻辑等公式,非常方便,可以灵活快捷的对数据进行处理,达到我们想要的效果.Exce ...

随机推荐

  1. Pattern Evaluation

    对相关性patten质量的常用分析指标有以下这些 其中,X^2 跟 lift不是null-invariant的,也就是说当~A~B项较多时,这两个指标不是很可靠. 据Jiawei Han所言,Kulc ...

  2. 基于SAR对Linux资源的监控shell脚本

    #! /bin/bash ] # $# 传递给脚本或函数的参数个数 then 脚本名称 exit -; fi SLEEP_TIME=$ LOG=$ while true do #线程数 thread_ ...

  3. a lot of attention under the hood

    Because one of the original goals of the Node.js project was to allow developers to easily build app ...

  4. jdk1.8 HashMap & ConcurrentHashMap

    JDK1.8逐字逐句带你理解ConcurrentHashMap https://blog.csdn.net/u012403290 JDK1.8理解HashMap https://blog.csdn.n ...

  5. php上传文件夹

    用过浏览器的开发人员都对大文件上传与下载比较困扰,之前遇到了一个php文件夹上传下载的问题,无奈之下自己开发了一套文件上传控件,在这里分享一下.希望能对你有所帮助. 功能介绍: 树形目录导航.您可以通 ...

  6. docker笔记(2)——docker镜像操作

    操作环境:mac OS 10.14.6 docker版本:10.03.1 终端:iterm2 3.3 时间:2019年8月 docker 镜像,是运行容器的模板,通过pull操作会向指定仓库获取镜像, ...

  7. 无法从路径’NuGet.CommandLine.2.7.1.nupkg’读取包

    visual-studio-2010或者2013 – 在启用Nuget包恢复时出现奇怪的Nuget错误 我右键单击我的VS2010中的解决方案文件并单击Enable NuGet Package Res ...

  8. Error:[$injector:modulerr]错误解决方式

    1.报错信息如下图所示: 问题:目前应用打包之后,在iphone6手机上打开应用白板(打开vconsole发现有如上报错  >>>  测试过多部手机,仅上面的IOS9版本出现问题) ...

  9. My life

    突然想到的好笑的: 1. 世界上一共有10种人,一种是男人,另一种是女人 2. 吐槽一个网站的域名: 你这网站域名取得,跟色情网站似的 明知这是一场意外,你要不要来,明知这是一场重伤害,你会不会来: ...

  10. 批量删除redis的数据

    批量删除redis的数据 # redis-cli -h 192.168.1.17 -p 6379 keys "xiaolang_*"|xargs redis-cli -h 192. ...