黑马程序员课程中的综合应用-名片管理系统
笔记
系统要求:
1.程序启动,展示名片管理系统欢迎界面,并显示功能菜单
2.用户用数字选择不同的功能;
3.根据功能选择,执行不同的功能;
4.用户名片需要记录用户的姓名、电话、QQ、邮件;
5.如果查询到执行的名片,用户可以选择修改或者删除名片
步骤
1、框架搭建
2、新增名片
3、显示所有名片
4、查询名片
5、查询成功后修改、删除名片
6、让python程序能够直接运行
TODO注释
在#后面添加todo注释,提示需要做的事情,醒目提示
保存名片数据的结构
使用字典记录每一张名片的详细信息;
使用列表统一记录所有的名片字典
cards_main.py
import cards_toolwhile True:# 无限循环cards_tool.show_menu()action_str = input("请选择希望执行的操作:")print("您选择的操作是【%s】" % action_str)# 1,2,3,针对名片的操作if action_str in ["1","2","3"]:#1.新增名片if action_str == "1":cards_tool.new_card()elif action_str == "2": # 2.显示全部cards_tool.show_all()elif action_str == "3": #3.查询名片cards_tool.search_card()else:passif action_str == "0":break
cards_tool.py
card_list = [] # 用于记录名片字典def show_menu():"""显示菜单"""print("*"*50)print("欢迎使用【名片管理系统】V1.0")print("")print("1.新增名片")print("2.显示全部")print("3.搜索名片")print("")print("0.退出系统")print("*"*50)def new_card():"""新增名片"""print("-" * 50)print("新增名片")# 1.提示用户输入详细的信息name_str = input("请输入姓名:")phone_str = input("请输入电话:")qq_str = input("请输入QQ:")emial_str = input("请输入邮箱:")# 2.使用用户输入的信息,建立一个名片字典card_dict = {"name":name_str,"phone":phone_str,"qq":qq_str,"email":emial_str}# 3.将字典添加到字典中card_list.append(card_dict)print(card_list)# 4.提示用户保存成功print("添加%s的名片成功!" % card_list)def show_all():"""显示所有名片"""print("-" * 50)print("显示所有名片")#判断是否存在名片记录,如果没有,提示用户并返回if len(card_list) == 0:print("当前没有任何的记录,请添加名片")return # 下方的代码不会被执行,返回到调用函数的下方代码# 打印表头for name in ["姓名","电话","QQ","邮箱"]:print(name, end = "\t\t")print(" ")# 打印分割线print("=" * 50)# 遍历名片列表以此输出字典信息for card_dict in card_list:print("%s\t\t%s\t\t%s\t\t%s\t\t" % (card_dict["name"],card_dict["phone"],card_dict["qq"],card_dict["email"]))def search_card():"""搜索名片"""print("-" * 50)print("搜索名片")# 1.提示用户输入要搜索的姓名find_name = input("请输入要搜索姓名:")# 2.遍历名片列表,查询要搜索的姓名,如果没有找到,需要提示用户for card_dict in card_list:if card_dict["name"] == find_name:print("姓名\t\t电话\t\tQQ\t\t邮箱")print("=" * 50)print("%s\t\t%s\t\t%s\t\t%s\t\t" % (card_dict["name"],card_dict["phone"],card_dict["qq"],card_dict["email"]))deal_card(card_dict)breakelse:print("不存在%s" % find_name)def deal_card(find_dict):print(find_dict)action_str = input("请选择要执行的操作 [1] 修改 [2] 删除 [0] 返回主菜单")if action_str == "1":print("修改名片")# 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["qq"],"请输入邮箱:")elif action_str == "2":card_list.remove(find_dict)print("删除名片成功")# 不处理0 的原因,不管咋样都会返回def input_card_info(dict_value,tip_message):"""输入名片信息:param dict_value:字典中原有的值:param tip_message: 输入的提示文字:return:如果用户输入了新的内容,则返回新内容,否则保留原值"""# 1.提示用户输入内容result_str = input(tip_message)# 2.针对用户输入进行判断,如果用户输入内容,直接返回结果if len(result_str) > 0:return result_str# 3.如果用户没有输入内容,返回字典中原有的值else:return dict_value