
写在开头:自用-----06-文件名片管理系统中有详细代码(无数据库)
课程:B站
已经学习过的知识点:
变量
流程控制
函数
模块
系统需求1.程序启动,显示名片管理系统欢迎界面,并显示功能菜单
插入1图
2.用户用数字选择不同的功能
3.用户名片需要记录用户的姓名,电话,QQ,邮件
4.如果查询到指定名片,用户可以选择修改或者删除名片
01.框架搭建1.准备文件,确定文件名,保证能够 在需要的位置编写代码
2.编写 主运行循环,实现基本的 用户输入和判断
1.1 文件准备1. 新建 card_main.py 保存 主程序功能代码
程序的入口
每次启动名片管理系统都通过 mian 这个文件启动
2. 新建 card_tools.py 不保存所有名片功能函数
将对名片的新增,查询,删除等功能封装在不同的函数中
1.2 编写主运行循环在 card_main 中添加一个无限循环
①用户输入 判断 和 pass 关键字
action_str = input("请选择希望执行的 *** 作:")
print("您选择的 *** 作是【%s】" % action_str)
# 1,2,3 针对名片的 *** 作
if action_str in ["1","2","3"]:
# 如果在开发程序时,不希望立刻编写分支内部的代码
# 可以使用 pass 关键字,表示一个占位符,能够保证程序代码结构正确
# 程序运行时, pass 不会执行任何 *** 作
pass
# 0 退出系统
elif action_str == "0":
pass
# 其他内容输入错误,需要提示用户
else:
print("您输入的不正确,请重新选择")
②无限循环——保证用户能够重复选择需要的 *** 作
# 无限循环,由用户决定什么时候退出循环
while True:
action_str = input("请选择希望执行的 *** 作:")
print("您选择的 *** 作是【%s】" % action_str)
# 1,2,3 针对名片的 *** 作
if action_str in ["1","2","3"]:
# 如果在开发程序时,不希望立刻编写分支内部的代码
# 可以使用 pass 关键字,表示一个占位符,能够保证程序代码结构正确
# 程序运行时, pass 不会执行任何 *** 作
pass
# 0 退出系统
elif action_str == "0":
print("欢迎再次使用名片管理系统!")
break
# pass
# 其他内容输入错误,需要提示用户
else:
print("您输入的不正确,请重新选择")
③ if 循环嵌套,判断用户具体 *** 作,预留代码位置
if action_str in ["1","2","3"]:
#新增名片
if action_str == "1":
pass
#显示全部
elif action_str == "2":
pass
#查询名片
elif action_str == "3":
pass
# 如果在开发程序时,不希望立刻编写分支内部的代码
# 可以使用 pass 关键字,表示一个占位符,能够保证程序代码结构正确
# 程序运行时, pass 不会执行任何 *** 作
# pass
④显示欢迎界面和功能菜单---在 cards_tools.py 文件中定义show_menu()
def show_menu():
"""显示菜单"""
print("*" * 50)
print("欢迎使用【名片管理系统】V 1.0")
print("")
print("1. 新增名片")
print("2. 显示全部")
print("3. 搜索名片")
print("")
print("0. 退出系统")
print("*" * 50)
⑤在 cards_main.py 文件中引入
import cards_tools
#无限循环,由用户主动决定什么时候退出循环
while True:
# 显示功能菜单
cards_tools.show_menu()
action_str = input("请选择希望执行的 *** 作:")
print("您选择的 *** 作是【%s】" %action_str)
⑥准备名片 *** 作函数,修改 cards_main.py 文件中的函数调用(将pass 关键字 替换为函数调用)
#1,2,3针对名片的 *** 作
if action_str in ["1","2","3"]:
# 新增名片
if action_str == "1":
cards_tools.new_card()
# 显示全部
elif action_str == "2":
cards_tools.show_all()
# 查询名片
elif action_str == "3":
cards_tools.search_card()
cards_tools.py 文件中
def new_card():
"""新增名片"""
print("新增名片")
def show_all():
"""显示所有名片"""
print("*" * 50)
print("搜索名片")
def search_card():
print("搜索名片")
02.保存名片的数据结构
程序就是用来处理数据的,而变量就是用来存储数据的
使用 字典 记录 每一张名片 的详细信息
使用 列表 统一记录所有的 名片字典
定义名片列表变量
在 card_tools 文件的顶部增加一个 列表变量
#记录所有名片字典 card_list = []
注意:
1.所有名片相关 *** 作,都需要使用这个列表,所以应该定义在程序的顶部
2.程序刚运行时,没有数据,所以是 空列表
03.新增名片功能的实现1. 提示用户输入名片的详细信息
2. 使用用户输入的信息建立一个名片字典
3. 将名片字典添加到列表中
4. 提示用户添加成功
def new_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 的名片成功!" %name )
04.显示全部
4.1 遍历列表显示字典明细
# 打印表头
for name in ["姓名","电话","QQ","邮箱"]:
print(name, end="tt")
print("")
# 打印分割线
print("=" * 50)
#遍历名片列表依次输出字典信息
for card_dict in card_list:
print("%stt%stt%stt%s" %(card_dict["name"],
card_dict["phone"],
card_dict["qq"],
card_dict["email"]))
4.2 判断列表数量,没有名片直接返回
#判断是否存在名片记录,如果没有,提示用户并且返回
if len(card_list) == 0:
print("当前没有任何的名片记录,请使用新增名片功能添加名片!")
# return 可以返回一个函数的执行结果
# 下方的代码不会执行
# 如果 return 后面没有任何内容,表示会返回到调用函数的位置
#并且不返回任何结果
return
05.查询名片
5.1 查询功能的实现
def search_card():
print("搜索名片")
# 1.提示用户输入要搜索的姓名
find_name = input("请输入要搜索的姓名;")
# 2.遍历名片列表,查询要搜索的姓名,如果没有找到,需要提示用户
for card_dict in card_list:
if card_dict["name"] == find_name:
print("姓名tt电话ttQQtt邮箱")
print("*" * 50)
print("%stt%stt%stt%s" %(card_dict["name"],
card_dict["phone"],
card_dict["qq"],
card_dict["email"]))
# TODO 针对找到的名片记录进行修改/删除 *** 作
break
else:
print("抱歉,没有找到!")
5.2 针对用户的选择,增加判断分支
5.3 删除名片def deal_card(find_dict): # 1. 接收用户选择的 *** 作 action_str = input("请选择要执行的 *** 作 【1】修改 【2】删除 " "0 返回上级菜单") # 2.增加判断分支 if action_str == "1": print("修改名片") elif action_str == "2": print("删除名片") # pass
elif action_str == "2":
card_list.remove(find_dict)
print("删除名片成功!")
5.4 修改名片
5.4.1 直接对字典的值进行修改
5.4.2 细化修改名片的功能,准备新的输入函数if action_str == "1":
find_dict["name"] = input("姓名:")
find_dict["phone"] = input("电话:")
find_dict["qq"] = input("QQ:")
find_dict["email"] = input("邮箱:")print("修改名片成功!")
def input_card_info(dict_value,tip_message):
# 1.提示用户输入的内容
result_str = input(tip_message)
# 2.针对用户的输入进行判断,如果用户输入了内容
if len(result_str) > 0:
return result_str
# 3.直接返回该内容,否则返回 “字典中原有的值”
else:
return dict_value
# 在 card_tools.py 文件的 deal_card()的 if分支中,修改input()函数
# 2.增加判断分支 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"],"邮箱:") print("修改名片成功!")
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)