功能概览
**************************************************
欢迎使用【名片管理系统】V1.0
1. 新建名片
2. 显示全部
3. 查询名片
0. 退出系统
**************************************************
文件准备
cards_main.py
:主程序cards_tools.py
:各种子功能函数
cards_main.py
主循环
while True:
action = input("请选择操作功能:")
print("您选择的操作是:%s" % action)
if action in ["1", "2", "3"]:
pass
elif action == "0":
print("欢迎再次使用【名片管理系统】")
break
else:
print("输入错误,请重新输入")
如果在开发程序时,不希望立刻编写分支内部的代码,可以使用 pass
关键字表示一个占位符,不会执行任何的操作,只保证程序的代码结构正确。
if action in ["1", "2", "3"]:
也可以写为
if action == "1" or action == "2" or action == "3":
但是明显变得复杂,所以能用 in
就用 in
,避免用 or
。
TODO 注释
在 #
后跟上 TODO
,用于标记需要去做的工作,如
# TODO(作者/邮件) 显示系统菜单
在 PyCharm 的左下角可以点出 TODO 列表,这样就能很方便地
导入模块
import cards_tools
这样一来,主循环就修改为:
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
函数概览
其中,card_list
作为全局变量使用。
开发程序就是用来处理数据的,所以要事先考虑好数据结构。
show_menu()
之所以专门定义一个函数用来显示功能界面,是为了尽量简化主函数,增加可读性。
print("*" * 50)
print("欢迎使用【名片管理系统】V 1.0")
print("")
print("1. 新增名片")
print("2. 显示全部")
print("3. 搜索名片")
print("")
print("0. 退出系统")
print("*" * 50)
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)
PyCharm 中右键 → Refactor → Rename,可以方便地一次性修改单个变量的所有名字。
show_all()
print("-" * 50)
print("显示所有名片")
if len(card_list) == 0:
print("当前没有任何的名片记录,请使用新增功能添加名片!")
return
for title in ["姓名", "电话", "QQ", "邮箱"]:
print(title, 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"]))
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)
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"], "邮箱:")
print("修改名片成功!")
elif action_str == "2":
card_list.remove(find_dict)
print("删除名片成功!")
input_card_info(dict_value, tip_message)
result_str = input(tip_message)
if len(result_str) > 0:
return result_str
# 如果用户没有输入内容,直接回车,则保持原数据不变
else:
return dict_value