名片管理系统
思路:
使用字典包括每张名片的信息, 例如 {'name': '张三', 'tel': '123', 'qq': '321'}
使用列表包含所有名片的信息, 如:
user_list = [
{'name': '张三', 'tel': '123', 'qq': '321'},
{'name': 'lisi', 'tel': '666', 'qq': '999'},
{'name': 'jack', 'tel': '888', 'qq': '233'}
]
系统包含的操作:
1.添加名片
信息由控制台输入即可,包含信息有用户名,手机号, QQ号
**注意:**名片的用户名不能重复, 如果添加是重复了要提示`用户名已被占用`让其重新输入
2.删除名片
根据名称name删除名片, 并询问是否确定删除
**注意:** 判断是否名片在名片中
3. 修改名片
先根据名片在列表中的编号 让用户选择名片, 再提示输入要哪个键的值 再提示让其输入新值 进而完成修改、
4. 根据名称查询名片
5. 显示所有的名片信息
6. 退出系统
询问是否退出 确定的情况下才退出
代码实现
cards_list = [
{'name': '张三', 'tel': '123', 'qq': '321'},
{'name': 'liSi', 'tel': '666', 'qq': '999'},
{'name': 'jack', 'tel': '888', 'qq': '233'}
]
def panel():
print('*' * 25, '名片管理系统', '*' * 25)
print("┏", "━" * 45, "┓", sep='')
print("┃本系统包含的操作:")
print("┃ 1.添加名片", " 4.依名称查询名片")
print("┃ 2.删除名片", " 5.显示所有的名片信息 ")
print("┃ 3.修改名片", " 6.退出系统")
print("┃系统提示: 输入操作前的标号即可完成相应操作!")
print("┗", "━" * 45, "┛", sep='')
def add_business_card():
try:
while 1:
name = input("添加名片功能运行中\n请输入你添加名片的姓名:\n>>>")
if name not in get_name_list:
break
print("输入的用户名重复,请重新输入")
tel = input("请输入你添加名片的电话:\n>>>")
qq = input("请输入你添加名片的QQ号:\n>>>")
card_dict = dict(name=name, tel=tel, qq=qq)
cards_list.append(card_dict)
print("添加名片成功返回主菜单")
except Exception:
print("系统进行添加名片功能发生未知错误,现已重启!")
dayin = '''
┏━━━━━━┓━━━━━━━━━┓
┃姓名: {}
┣━━━━━━╋━━━━━━━━━┫
┃手机: {}
┣━━━━━━╋━━━━━━━━━┫
┃QQ号: {}
┗━━━━━━┛━━━━━━━━━┛
'''
def all_business_card():
for card in cards_list:
print(dayin.format(card["name"], card["tel"], card["qq"]))
def delete_business_card():
try:
name = input("删除名片功能运行中\n请输入你要删除名片的姓名:\n>>>")
if name not in get_name_list:
print("你要删除的名片不存在")
n = get_name_list.index(name)
if 'y' == input("请问您真的要删除吗:(输入y确认删除)\n>>>"):
cards_list.pop(n)
print("删除名片成功返回主菜单")
return
print("名片尚未删除")
except Exception:
print("系统进行添加名片功能发生未知错误,现已重启!")
def modify_business_card():
for k, name in enumerate(get_name_list):
print("用户编号:%s, 用户名:%s" % (k + 1, name))
try:
n = int(input("修改名片功能运行中\n请输入你要修改名片的编号:\n>>>"))
if not (1 <= n <= len(get_name_list)):
print("你要删除的名片不存在")
modify_business_card()
return None
while 1:
name = input("添加名片功能运行中\n请输入你添加名片的姓名:\n>>>")
if name not in get_name_list:
break
print("输入的用户名重复,请重新输入")
tel = input("请输入你添加名片的电话:\n>>>")
qq = input("请输入你添加名片的QQ号:\n>>>")
card_dict = dict(name=name, tel=tel, qq=qq)
cards_list[n - 1] = card_dict
print("修改名片成功返回主菜单")
except Exception:
print("系统进行修改名片功能发生未知错误,现已重启!")
def name_find_card():
try:
while 1:
name = input("查询名片功能运行中\n请输入你要查询名片的姓名:\n>>>")
if name not in get_name_list:
print("输入的用户名错误,请重新输入")
continue
break
for k, user in enumerate(get_name_list):
if user == name:
card_dict = cards_list[k]
print(dayin.format(card_dict["name"], card_dict["tel"], card_dict["qq"]))
print("查询名片成功返回主菜单")
except Exception:
print("系统进行查询名片功能发生未知错误,现已重启!")
if __name__ == '__main__':
while 1:
get_name_list = list(map(lambda a: a["name"], cards_list))
panel()
cz = 0
try:
cz = int(input("请输入要完成操作的标号(1-6):\n>>>"))
except (ValueError, ArithmeticError):
print("程序发生了数字格式异常,你的输入有误请重新输入")
if cz == 1:
add_business_card()
elif cz == 2:
delete_business_card()
elif cz == 3:
modify_business_card()
elif cz == 4:
name_find_card()
elif cz == 5:
all_business_card()
elif cz == 6:
if 'y' == input("请问您真的要退出吗:(输入y确认退出)\n>>>"):
print("退出系统成功,谢谢你的使用")
break
else:
print("你的输入有误请重新输入")
实现效果
************************* 名片管理系统 *************************
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃本系统包含的操作:
┃ 1.添加名片 4.依名称查询名片
┃ 2.删除名片 5.显示所有的名片信息
┃ 3.修改名片 6.退出系统
┃系统提示: 输入操作前的标号即可完成相应操作!
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
请输入要完成操作的标号(1-6):
>>>
功能简单示例:
>>>1
添加名片功能运行中
请输入你添加名片的姓名:
>>>斗破苍穹
请输入你添加名片的电话:
>>>1234242
请输入你添加名片的QQ号:
>>>74231561
添加名片成功返回主菜单
思考与改进
可以使用本地文件存储或者使用数据库保存每次操作的信息, 和操作后名片的信息