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. 自定义nagios监控脚本---磁盘检测

    自定义nagios监控脚本---磁盘检测 1. 在客户端上创建脚本/usr/local/nagios/libexec/check_disk.shvim /usr/local/nagios/libexe ...

  2. 解决Ubuntu MySQL服务无法远程登录

    一.10061错误 Ubuntu安装MySQL . sudo apt-get install mysql-server . apt-get isntall mysql-client . sudo ap ...

  3. syslog+rsyslog+logstash+elasticsearch+kibana搭建日志收集

    最近rancher平台上docker日志收集捣腾挺久的,尤其在配置上,特写下记录 Unix/Linux系统中的大部分日志都是通过一种叫做syslog的机制产生和维护的.syslog是一种标准的协议,分 ...

  4. java错误与异常

    java异常处理机制 异常处理机制能让程序在异常发生时,按照代码的预先设定的异常处理逻辑,针对性地处理异常, 让程序尽最大可能恢复正常并继续执行,且保持代码的清晰.Java中的异常可以是函数中的语句执 ...

  5. 一百一十一:CMS系统之后端权限验证功能

    实现方式 使用装饰器的形式,将权限判断加在视图上 声明接口需要什么权限,用户访问接口的时候,判断用户是否有此权限 权限判断,接收权限 def permission_required(permissio ...

  6. 基于Scrapy框架的增量式爬虫

    概述 概念:监测 核心技术:去重 基于 redis 的一个去重 适合使用增量式的网站: 基于深度爬取的 对爬取过的页面url进行一个记录(记录表) 基于非深度爬取的 记录表:爬取过的数据对应的数据指纹 ...

  7. 【转载】oracle中decode函数用法

    1.DECODE的语法:DECODE(value,if1,then1,if2,then2,if3,then3,...,else).表示假设value 等于if1时,DECODE函数的结果返回then1 ...

  8. spring-boot集成8:集成shiro,jwt

    Shrio是一个轻量级的,基于AOP 和 Servlet 过滤器的安全框架.它提供全面的安全性解决方案,同时在 Web 请求级和方法调用级处理身份确认和授权. JWT(JSON Web Token)是 ...

  9. HTMLCollection对象和NodeList对象

    前言 首先我们先来看下面的demo,假如我们需要给所有的li字体变一个颜色. <!DOCTYPE html> <html lang="en"> <he ...

  10. Kubernetes-kubectl The connection to the server localhost:8080 was refused -did you specify

    今天在Kubernetes的从节点上运行命令[kubectl]出现了如下错误: [root@k8snode1 kubernetes]# kubectl get pod The connection t ...