'''
我的第一个py小程序 名片处理系统
2020 06 09
main.py
'''
#导入功能模块,单词处理每一部分功能
import cards_fun1
while True:
#欢迎页面
cards_fun1.hy()
# 请用户选择
num_input = input("请选择:")
print("您选的是 【%s】"% num_input)
#选择0,退出
if num_input=="0":
print("欢迎再次使用")
break
#选择1,新建名片
elif num_input=="1":
cards_fun1.new_card()
#选择2,显示全部名片
elif num_input=="2":
cards_fun1.show_card()
#选择3,搜索名片
elif num_input=="3":
cards_fun1.search_card()
else :
print("输入错误")
'''功能模块
cards_fun1.py
'''
#列表数据类型,用来保存所有名片信息
cards_list=[] # 可以修改为gl_cards_list[],以示全局变量
"""欢迎页面
"""
def hy():
print("*"*50)
print('''
欢迎使用 名片管理系统
0. 退出
1. 新建名片
2. 显示全部
3. 查询名片
''' )
print("*"*50)
'''新建名片模块
'''
def new_card():
#功能标题
print("-" * 50)
print("新建名片")
#提示输入
name_in=input("请输入名字:")
tel_in=input("请输入电话:")
qq_in=input("请输入qq :")
#放入字典
card_dic={"name":name_in,"tel":tel_in,"qq":qq_in}
#放入列表
cards_list.append(card_dic)
# TODO #提示输入完成
print("-"*50)
print("您输入的名片是:\n名字:%s\t\t\t电话:%s\t\t\tqq:%s" % (card_dic["name"], card_dic["tel"], card_dic["qq"]))
'''显示全部名片模块
'''
def show_card():
print("-" * 50)
print("显示名片")
if cards_list==[]:
print("系统为空")
else :
# 打印分割线
print("-"*50)
#打印表头
for t in ["姓名","电话","qq"]:
print(t,end="\t\t\t")
print("")
# TODO 显示不好看,对不齐!!!
#遍历列表
for x in cards_list:
print("%s\t\t\t%s\t\t\t%s" % (x["name"],x["tel"],x["qq"]))
# 打印分割线
print("-"*50)
'''查询名片功能模块
'''
def search_card():
print("-" * 50)
print("搜索名片")
input_name=input("请输入要搜索的名字:")
for card in cards_list:
if card["name"]==input_name:
print("找到了~")
# 打印表头
for t in ["姓名", "电话", "qq"]:
print(t, end="\t\t\t")
print("")
# 显示搜索结果
print("%s\t\t\t%s\t\t\t%s" % (card["name"], card["tel"], card["qq"]))
#调用名片处理函数
modify_card(card)
#找到退出for循环
break
else:
print("没有找到")
def modify_card(card):
"""#名片处理函数
:param card:搜索到card字典
:return: NULL
"""
#接收输入
inp=input("1: 修改\t2:删除\t3:退出,请选择:")
#选择1 ,修改card
if inp=="1":
#显示标题
print("修改名片")
#没有指针,调用有点不方便
#单独定义函数,区分用户回车与否,如果输入回车不返回字典中的旧值
card["name"]=md_tel(card["name"],"输入回车不修改,请输入名字:")
card["tel"]=md_tel(card["tel"],"输入回车不修改,请输入电话:")
card["qq"]=md_tel(card["tel"],"输入回车不修改,请输入qq:")
#提示修改完成
print("修改完成:")
# 打印表头
for t in ["姓名", "电话", "qq"]:
print(t, end="\t\t\t")
print("")
# 显示修改后的结果
print("%s\t\t\t%s\t\t\t%s" % (card["name"], card["tel"], card["qq"]))
#选择2,删除card
elif inp=="2":
#显示标题
print("删除名片")
delcard=input("1:确认删除 2: 放弃删除")
if delcard=="1":
cards_list.remove(card)
print("已删除!")
#选择3,退出
elif inp=="3":
return
def md_name(old_name,out_str):
"""修改名字,如果回车,不修改
:param old_name: 字典中旧值,即card[name]
:param out_str: 输入提示字符串
:return: 字典中的旧值或用户输入的名字
"""
in_name=input(out_str)
if len(in_name)==0:
return old_name
else :
return in_name
def md_qq(old_qq,out_str):
"""修改qq,如果回车,不修改
:param old_qq: 字典中旧值,即card[qq]
:param out_str: 输入提示字符串
:return:
"""
in_qq=input(out_str)
if len(in_qq)==0:
return old_qq
else :
return in_qq
def md_tel(old_tel,out_str):
"""修改电话,如果回车,不修改
:param old_tel: 字典中旧值,即card[tel]
:param out_str: 输入提示字符串
:return:
"""
in_tel=input(out_str)
if len(in_tel)==0:
return old_tel
else :
return in_tel