- 两个文件,分别为
cards_main.py
和cards _tools.py
。实现的功能有新增名片,显示全部名片和查询名片。
大致思路:
- 首先先编辑主函数,确定主函数中的功能。在需要执行该文件后直接显示菜单功能
show_menu
函数,输入要执行的操作,1
:新增名片;2
:显示全部;3
:查询名片;0
:退出系统。再根据四个功能去分别编辑函数的内容。 - 在新增名片函数
new_card
中,先提示该功能为新增名片并提示用户输入信息,随后用字典存储名片信息,再存入列表中。存入后提示存入成功。 - 在显示所有名片函数
show_all
中,首先提示该功能为显示所有名片,再根据当前是否有名片记录来输出,如果没有记录,则提示当前没有名片,需要添加名片并返回结果;如果有记录,首先打印格式化的表头,再依次遍历输出字典内的信息。 - 在搜索名片函数
search_card
中,首先提示用户要搜索的姓名,再遍历名片列表,查询要搜索的姓名,如果没有,则提示用户抱歉没有找到;如果有就输出名字及信息。 - 要针对查找到的名片记录进行修改,新增了一个
deal_card
函数来处理查找到的名片。首先提示要执行的操作是修改,删除还是返回上级菜单,若是修改,则根据提示输入用户的信息,修改成功会提示修改成功;若是删除,则采用remove
删除名片信息。 - 在修改时输入名片信息如何处理:新增函数
input_card_info
,传入字典中原有的值和输入的提示文字,首先提示用户输入内容,再根据用户的输入判断,若是输入了内容,则直接返回结果;若是没有输入,则返回字典原有的值。
代码如下:
import cards_tools
while True:
cards_tools.show_menu()
action_str = input("请选择希望执行的操作:")
print("您选择的操作是【%s】" % action_str)
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()
pass
elif action_str == "0":
print("欢迎再次使用【名片管理系统】")
break
else:
print("您输入的不正确,请重新选择")
card_list = []
def show_menu():
"""显示菜单"""
print("*" * 50)
print("")
print("1.新增名片")
print("2.显示全部")
print("3.搜索名片")
print("")
print("0.退出系统")
print("*" * 50)
def new_card():
"""新增名片"""
print("-" * 50)
print("新增名片")
name_str = input("请输入姓名:")
phone_str = input("请输入电话:")
qq_str = input("请输入QQ:")
email_str = input("请输入邮箱:")
card_dict = {"name": name_str,
"phone": phone_str,
"qq": qq_str,
"email": email_str}
card_list.append(card_dict)
print(card_list)
print("添加 %s 的名片成功!" % name_str)
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" % (card_dict["name"],
card_dict["phone"],
card_dict["qq"],
card_dict["email"]))
def search_card():
"""搜索名片"""
print("-" * 50)
print("搜索名片")
find_name = input("请输入要搜索的姓名:")
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" % (card_dict["name"],
card_dict["phone"],
card_dict["qq"],
card_dict["email"]))
deal_card(card_dict)
break
else:
print("抱歉,没有找到 %s" % find_name)
def deal_card(find_dict):
"""处理查找到的名片
:param find_dict:查找到的名片
"""
print(find_dict)
action_str = input("请选择要执行的操作 "
"1 修改 2 删除 3 返回上级菜单")
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("修改名片成功!")
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)
if len(result_str) > 0:
return result_str
else:
return dict_value
运行过程: