前言:
我们将这个项目分成两个模块去写:
1、主模块:主要针对显示界面,后分别调用工具模块中的函数去完善显示界面的选项
2、工具模块:通过创造不同功能的函数,为主模块提供工具
代码实现——工具模块
(为方便阅读,我们先把工具准备好哈)
# 定义一个空列表,可嵌套字典
card_list=[]
# 显示界面
def show_menu():
"""显示菜单"""
print("*"*50)
print("欢迎使用名片管理系统")
print("")
print("1.新增名片")
print("2.显示名片")
print("3.搜素名片")
print("0.退出系统")
print("*"*50)
#添加名片
def new_card():
print("-"*50)
print("新增名片")
# 1.提示用户输入详细信息
name_str=input("请输入姓名")
phone_str=input("请输入电话")
qq_str=input("请输入QQ号")
email_str=input("请输入邮箱号")
# 2.使用用户输入信息建立一个字典
card_dict={"name":name_str,
"phone":phone_str,
"qq":qq_str,
"email":email_str}
# 3.将名片字典添加到列表中
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 s in ["姓名","电话","QQ","邮箱"]:
print(s,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】删除【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("已经删除名片")
# 输入函数升级
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
代码解读:
1.显示界面我们主要有4个功能选项,纯输出
2.添加名片为了遍历方便,我们采用列表嵌套字典的方式
3、为了搜索功能之后可以修改信息,我们可以单独封装一个输入修改的函数
代码实现——主模块
import cards__tools
while True:
# 显示功能菜单1
cards__tools.show_menu()
action_str=input("请输入您的选项")
print("您选择的操作是%s" %action_str)
if action_str in ["1","2","3"]:
# 如果在编写程序时不希望立刻编制代码,则可用pass关键字:
# 表示一个占位符,程序执行时不会执行任何操作
if action_str=="1":
cards__tools.new_card()
elif action_str=="2":
cards__tools.show_all()
elif action_str=="3":
cards__tools.search_card()
elif action_str=="0":
print("欢迎再次使用名片管理系统")
else:
print("您输入的选项不正确,请重新选择")
注:为了使用工具模块的函数,我们在主模块中必须先导包
运行结果(部分):
修改后的: