如下图,本次项目主要完成新建名片、显示全部名片、查询对应名片并对对应名片完成相关操作。
名片管理首先可以由main.py以及tools.py组成,main.py主要完成主要功能,tools主要完成选择分支下的功能。
由于每次完成一个选择便再次展示菜单做下一个选择,直至选择退出系统。由此可在main.py中编写个无限循环,在其中嵌套if语句完成各个功能为:
while True :
#显示菜单
action_str = input("请输入您希望进行的操作:")
print("您选择的操作是【%s】" % action_str)
if action_str in ["1","2","3"]:
#新增名片
if action_str =="1":
pass
#显示全部
elif action_str =="2":
pass
#查询名片
elif action_str =="3":
pass
pass
elif action_str == "0":
print("欢迎再次使用【名片管理系统】")
break
else:
print("您的输入不正确,请重新选择")
1.功能菜单显示:调用tools中的show_menu方法显示菜单
def show_menu():
print("*" * 40)
print("欢迎使用【名片管理系统】V1.0")
print("")
print("1.新建名片")
print("2.显示全部")
print("3.查询名片\n")
print("0.退出系统")
print("*" * 40)
2.新增名片
功能分析:名片详细信息以字典形式存储,而后存在列表中
明确功能完成步骤:
1. 提示用户输入名片的详细信息
2. 使用用户输入的信息建立一个名片字典
3. 将字典添加到列表中
4. 提示用户添加成功
def new_card():
"""新增名片"""
print("-" *40)
name=input("请输入姓名:")
phone=input("请输入电话:")
qq = input("请输入QQ:")
email = input("请输入邮箱:")
card_dict = {
"name":name,
"phone":phone,
"qq":qq,
"email":email
}
card_list.append(card_dict)
#print(card_list)
print("添加的【%s】的名片成功" % name)
3.显示所有名片:如果有名片信息则遍历名片列表依次输出字典信息,没有则给提示信息
def show_all():
"""显示所有名片"""
print("-" * 40)
print("功能:显示全部")
if len(card_list)==0:
print("当前暂时还未存在名片记录,请使用新增功能添加名片!")
else:
#打印表头
for name in ["姓名","电话","QQ","邮箱"]:
print(name,end="\t\t")
print("")
print("="*40)
#具体内容
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("-" * 40)
find_name = input("请输入要搜索的姓名:")
for card_dict in card_list :
if card_dict["name"] == find_name :
for name in ["姓名", "电话", "QQ", "邮箱"]:
print(name, end="\t\t")
print("")
print("=" * 40)
# 具体内容
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函数进行名片的相关操作。首先给出提示信息,让用户选择所希望完成的操作,从简单的开始:
def input_card_info(dict_value,tip_message):
#1.提示用户输入内容
input_str = input(tip_message)
#2.针对用户的输入进行判断,如果用户输入了内容,直接返回结果
if len(input_str) >0:
return input_str
#3.如果没输入内容,返回字典中原有的值
else:
return dict_value
def deal_card(find_card):
action=input("请输入对名片的操作:1:修改/2:删除/0:返回上级菜单")
if action =="1":
find_card["name"] = input_card_info(find_card["name"],"姓名:")
find_card["phone"] = input_card_info(find_card["phone"],"电话:")
find_card["qq"] = input_card_info(find_card["qq"],"QQ:")
find_card["email"] = input_card_info(find_card["email"],"邮箱:")
print("修改名片成功")
elif action == "2":
card_list.remove(find_card)
print("删除名片成功")
经过几个测试案例测试,发现可成功运行使用。
以下是完整代码:
mian.py
import tools
while True :
#显示菜单
tools.show_menu()
action_str = input("请输入您希望进行的操作:")
print("您选择的操作是【%s】" % action_str)
if action_str in ["1","2","3"]:
#新增名片
if action_str =="1":
tools.new_card()
#显示全部
elif action_str =="2":
tools.show_all()
#查询名片
elif action_str =="3":
tools.search_card()
elif action_str == "0":
print("欢迎再次使用【名片管理系统】")
break
else:
print("您的输入不正确,请重新选择")
tools.py
card_list=[]
def input_card_info(dict_value,tip_message):
#1.提示用户输入内容
input_str = input(tip_message)
#2.针对用户的输入进行判断,如果用户输入了内容,直接返回结果
if len(input_str) >0:
return input_str
#3.如果没输入内容,返回字典中原有的值
else:
return dict_value
def deal_card(find_card):
action=input("请输入对名片的操作:1:修改/2:删除/0:返回上级菜单")
if action =="1":
find_card["name"] = input_card_info(find_card["name"],"姓名:")
find_card["phone"] = input_card_info(find_card["phone"],"电话:")
find_card["qq"] = input_card_info(find_card["qq"],"QQ:")
find_card["email"] = input_card_info(find_card["email"],"邮箱:")
print("修改名片成功")
elif action == "2":
card_list.remove(find_card)
print("删除名片成功")
def show_menu():
print("*" * 40)
print("欢迎使用【名片管理系统】V1.0")
print("")
print("1.新建名片")
print("2.显示全部")
print("3.查询名片\n")
print("0.退出系统")
print("*" * 40)
def new_card():
"""新增名片"""
print("-" *40)
name=input("请输入姓名:")
phone=input("请输入电话:")
qq = input("请输入QQ:")
email = input("请输入邮箱:")
card_dict = {
"name":name,
"phone":phone,
"qq":qq,
"email":email
}
card_list.append(card_dict)
#print(card_list)
print("添加的【%s】的名片成功" % name)
def show_all():
"""显示所有名片"""
print("-" * 40)
print("功能:显示全部")
if len(card_list)==0:
print("当前暂时还未存在名片记录,请使用新增功能添加名片!")
else:
#打印表头
for name in ["姓名","电话","QQ","邮箱"]:
print(name,end="\t\t")
print("")
print("="*40)
#具体内容
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("-" * 40)
find_name = input("请输入要搜索的姓名:")
for card_dict in card_list :
if card_dict["name"] == find_name :
for name in ["姓名", "电话", "QQ", "邮箱"]:
print(name, end="\t\t")
print("")
print("=" * 40)
# 具体内容
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)