名片管理系统:
main函数实现基本的大框架:
# 主程序
import cards_tools
while True:
# TODO(lilu) 显示功能菜单(提示)
cards_tools.show_menu() # 调用函数
action_str = input("请选择希望执行的操作:")
print("您选择的操作是【%s】" % action_str)
# 1,2,3针对名片的操作
if action_str in ["1", "2", "3"]:
# 判断input输出的是字符串,没有通过int进行转换(因为输入的不一定是数字,一切都有可能)
# 新增名片处理
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#如果在开发程序时,不希望立即执行子程序马上执行
# pass关键字表示一个占位符,能够保证代码结构正确什么都不执行
# 0退出系统
elif action_str == "0":
print("~" * 50)
print("欢迎再次使用【名片管理系统】")
break # 退出本次大循环
# pass
# 其它内容输入错误,需要提示用户
else:
print("您输入的不正确,请重新选择")
子程序:
# 辅助的文件
# 记录所有名片字典
card_list = []
def show_menu():
"""显示菜单 """
print("@" * 50)
print("欢迎使用【名片管理系统】V1.0")
print("1.新增名片")
print("2.显示全部")
print("3.搜索名片")
print("0.退出系统")
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)
# 4.提示用户添加成功
print("添加%s的名片成功" % name_str)
def show_all():
"""显示所有名片"""
print("-"*50)
print("显示所有名片")
#判断是否存在名片记录,提示用户且返回
if len(card_list)==0:
print("当前无任何的名片记录,请使用新增功能添加名片")
#下方的代码不会被执行
#如果return后面没有任何内容,返回到调用函数的位置继续执行
#并且不反悔任何内容
return
#打印表头
for name in ["姓名","电话","qq","邮箱"]:
print(name,end="\t\t\t")
#增加换行,非常重要为了前一个print输出与后一个print输出不在同一行
print(" ")
#打印分割线
print("="*50)
#遍历名片列表依次输出列表的信息
for k in card_list:
print("%s\t\t\t%s\t\t\t%s\t\t\t%s"%(k["name"],
k["phone"],
k["qq"],
k["email"]))#字典的遍历方法
def input_card_info(dict_value,tip_message):#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
#处理名片的函数
def deal_card(find_dict):
"""
处理查找到的名片
:param find_dict:查找到的名片
"""
action_str=input("请选择要执行的操作"
" [1]修改 [2]删除 [0]返回上级菜单")
if action_str=="1":
find_dict["name"]=input_card_info(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 search_card():
"""搜索名片"""
print("*" * 50)
print("搜索名片")
#提示用户输入要搜索的姓名
find_name=input("请输入要搜索的姓名:")
#遍历名片列表,查询要搜索的姓名,如果没有找到,需要提示用户
for i in card_list:
if i["name"]==find_name:
#表头
print("姓名\t\t\t电话\t\t\tqq\t\t\t邮箱")
print("^"*50)
for card_dict in card_list:#card_dict是列表中的字典
print("%s\t\t\t%s\t\t\t%s\t\t\t%s"%(card_dict["name"],
card_dict["phone"],
card_dict["qq"],
card_dict["email"]))
# TODO 针对找到的名片记录执行修改及删除的操作
deal_card(card_dict)
break
else:
print("抱歉没有找到%s"%find_name)
注意:1、先搭建整体大的框架,在一步一步实现小框架
2、思路先标注出来,代码才好实现
3、错误常常有,慢慢调试