目标
用python写一个简单的名片管理系统
提供新增、查找、修改、删除等功能
不涉及文件操作
提示:以下是本篇文章正文内容,下面案例可供参考
一、主函数
while True:
cards_tools.show_menu()
str_input = input("请选择操作:")
if str_input in ["1", "2", "3"]:
if str_input == "1":
cards_tools.new_cards()
elif str_input == "2":
cards_tools.card_all()
elif str_input == "3":
cards_tools.card_search()
else:
print("欢迎再次使用名片管理系统")
break
注意:
1.用字符串接收用户的输入而非数字,防止用户输入其他类型数据而导致程序报错
2.在功能还未写好的函数处,可用pass占位符,保证代码结构完整、可正常调试
3.可在注释中用TODO标记未完成的功能(pycharm左下角查看),完成后及时删除
4.函数开发完成后,即时添加函数注释
二、各功能实现
1.引入函数文件
在主函数文件最上方引入函数模块,如下:
import cards_tools
2.显示主菜单函数
代码如下(示例):
def show_menu():
"""显示主菜单"""
print("*" * 50)
print("[1]新建名片\n[2]查看全部\n"
"[3]查询名片\n[0]退出系统")
print("*" * 50)
3.新建名片函数
代码如下(示例):
card_list = []
def new_cards():
"""新建名片"""
name = input("姓名:")
qq = input("QQ:")
tele = input("电话:")
mail = input("邮箱:")
card_dict = {"str_name": name,
"str_qq": qq,
"str_tele": tele,
"str_mail": mail}
card_list.append(card_dict)
4.显示全部名片函数
代码如下(示例):
def card_all():
"""显示全部"""
if len(card_list) > 0:
# 打印表头
for name in ["姓名", "qq", "电话", "邮箱"]:
print(name, 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["str_name"],
card_dict["str_qq"],
card_dict["str_tele"],
card_dict["str_mail"]))
else:
print("名片列表为空,请新建名片")
5.查询名片函数
代码如下(示例):
def card_search():
"""查询名片"""
str_input = input("请输入查找的姓名:")
for str_name in card_list:
if str_name["str_name"] == str_input:
print("找到了%s" % str_input)
card_deal(str_name)
else:
print("没有找到%s" % str_input)
对查询到的名片进行修改、删除处理
def card_deal(str_name):
"""处理名片
:param str_name: 将查询到的名片进行处理
:return: 返回函数调用的位置
"""
str_1 = input("请选择需要的操作:【1】修改【2】删除【0】返回上级列表")
if str_1 == "1":
str_name["str_name"] = card_deal_info(str_name["str_name"], "姓名:")
str_name["str_qq"] = card_deal_info(str_name["str_qq"], "qq:")
str_name["str_tele"] = card_deal_info(str_name["str_tele"], "电话:")
str_name["str_mail"] = card_deal_info(str_name["str_mail"], "邮箱:")
elif str_1 == "2":
card_list.remove(str_name)
elif str_1 == "0":
return
修改功能优化
要想实现”回车即不修改的功能,避免每次修改时需要重复输入不需要修改的内容,可以将字典中的原值传入函数中,检测用户是否输入内容,若输入则将名片信息修改为输入的内容,若未输入则返回字典中的原值,就相当于没有修改。
def card_deal_info(list_value, tip_message):
"""修改优化,实现回车默认不修改功能
:param list_value: 字典中的原值
:param tip_message: 提示输入信息
:return:
"""
str_2 = input(tip_message)
if len(str_2) > 0:
return str_2 # 修改的新值
else:
return list_value # 字典中的原值
运行效果
备注:
在一个单独的程序中函数定义必须在函数调用之前
在本程序主函数和其他函数分写在两个文件中时,只要在主函数文件最上方引入了函数模块,在其他函数文件中函数定义和引用可以不分先后顺序