python视频学习笔记6(名片管理系统开发)
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(名片管理系统开发)的更多相关文章
- python视频学习笔记3(循环)
一.程序的三大流程 二.while 初始条件设置 —— 通常是重复执行的 计数器 while 条件(判断 计数器 是否达到 目标次数): 条件满足时,做的事情1 条件满足时,做的事情2 条件满足时,做 ...
- python视频学习笔记5(高级变量的类型)
知识点回顾: Python 中数据类型可以分为 **数字型** 和 **非数字型*** 数字型 * 整型 (`int`) * 浮点型(`float`) * 布尔型(`bool`) * 真 `True` ...
- python视频学习笔记2(if)
一.if语句1.比较运算符,if语句语法 # 1. 输入用户年龄# 2. 判断是否满 18 岁 (**>=**)# 3. 如果满 18 岁,允许进网吧嗨皮# 4. 如果未满 18 岁,提示回家写 ...
- python视频学习笔记4(函数)
函数中return和print的区别,没有return会默认返回None值 函数定义:所谓**函数**,就是把 **具有独立功能的代码块** 组织为一个小模块,在需要的时候 **调用** 1.函数的步 ...
- Python Click 学习笔记(转)
原文链接:Python Click 学习笔记 Click 是 Flask 的团队 pallets 开发的优秀开源项目,它为命令行工具的开发封装了大量方法,使开发者只需要专注于功能实现.恰好我最近在开发 ...
- Python Flask学习笔记之Hello World
Python Flask学习笔记之Hello World 安装virtualenv,配置Flask开发环境 virtualenv 虚拟环境是Python解释器的一个私有副本,在这个环境中可以安装私有包 ...
- Spring MVC 学习笔记12 —— SpringMVC+Hibernate开发(1)依赖包搭建
Spring MVC 学习笔记12 -- SpringMVC+Hibernate开发(1)依赖包搭建 用Hibernate帮助建立SpringMVC与数据库之间的联系,通过配置DAO层,Service ...
- 【原】Learning Spark (Python版) 学习笔记(三)----工作原理、调优与Spark SQL
周末的任务是更新Learning Spark系列第三篇,以为自己写不完了,但为了改正拖延症,还是得完成给自己定的任务啊 = =.这三章主要讲Spark的运行过程(本地+集群),性能调优以及Spark ...
- VSTO 学习笔记(十一)开发Excel 2010 64位自定义公式
原文:VSTO 学习笔记(十一)开发Excel 2010 64位自定义公式 Excel包含很多公式,如数学.日期.文本.逻辑等公式,非常方便,可以灵活快捷的对数据进行处理,达到我们想要的效果.Exce ...
随机推荐
- 注解方式实现AOP编程
步骤: 1) 先引入aop相关jar文件 (aspectj aop优秀组件) spring-aop-3.2.5.RELEASE.jar [spring3.2源码] aopal ...
- 小D课堂 - 新版本微服务springcloud+Docker教程_4-01 常用的服务间调用方式讲解
笔记 第四章 服务消费者ribbon和feign实战和注册中心高可用 1.常用的服务间调用方式讲解 简介:讲解常用的服务间的调用方式 RPC: 远程过程调用,像调用本地 ...
- java序列化与反序列化操作redis
笔者在使用SSM框架项目部分功能进行测试需要使用到对象的序列化与反序列化 第一种方式:jackson Demo package com.dznfit.service; import com.dznf ...
- *Scala API - 并发编程
- 如何访问pod(6)
一.通过 Service 访问 Pod: 我们不应该期望 Kubernetes Pod 是健壮的,而是要假设 Pod 中的容器很可能因为各种原因发生故障而死掉.Deployment 等 control ...
- axios中的qs介绍
首先qs是一个npm仓库所管理的包,可通过npm install qs命令进行安装. 地址: https://www.npmjs.com/package/qs qs.parse().qs.string ...
- ARB扩展与标准OpenGL的关系
由于OpenGL的标准更新不是很频繁,因此,当某种技术应用流行起来时,显卡厂商为了支持该技术,会使用自己的扩展来实现该功能.但是不同厂商如果有不同的实现,那么程序编写将会异常繁琐.因此多个厂商共同协商 ...
- mybatis resultMap 子元素
resultMap constructor - 类在实例化时,用来注入结果到构造方法中 idArg - ID 参数;标记结果作为 ID 可以帮助提高整体效能 arg - 注入到构造方法的一个普通结果 ...
- 【C/C++开发】【VS开发】win32位与x64位下各类型长度对比
64 位的优点:64 位的应用程序可以直接访问 4EB 的内存和文件大小最大达到4 EB(2 的 63 次幂):可以访问大型数据库.本文介绍的是64位下C语言开发程序注意事项. 1. 32 位和 64 ...
- Docker 运行hello world
Docker 允许你在容器内运行应用程序, 使用 docker run 命令来在容器内运行一个应用程序. 输出Hello world docker run ubuntu:15.10 /bin/echo ...