Python3.6.5
用Python编写的名片管理系统,能够实现基本的增删改查。但是在修改名片时,如果有相同姓名的话,仅会显示最早存入栈内的字典。
想要修改相同姓名的信息,只能先更改其中一个相同名的姓名,再重新搜索自己想要更改的名片进行更改:两个张三在系统中姓名相同,假设一个是A,一个是B,要想修改B的信息,可以先修改A的名字改为XXX(尽量改成字母,这样的话,待会在搜索A将其姓名改回来的时候不容易与其他姓名冲突),然后修改B的信息。。。。。
(emmmm修改比较麻烦,刚入门,,想了半天没想出来,路过的大神可以指点一下怎么更简单点)
#1. 打印功能提示
print("="*50)
print(" 名片管理系统 V0.01")
print(" 1. 添加一个新的名片")
print(" 2. 删除一个名片")
print(" 3. 修改一个名片")
print(" 4. 查询一个名片")
print(" 5. 显示所有的名片")
print(" 6. 退出系统")
print("="*50)
#用来存储名片
card_infors = []
while True:
#2. 获取用户的输入
num = int(input("请输入操作序号:"))
#3. 根据用户的数据执行相应的功能
if num==1:
new_name = input("请输入新的名字:")
new_qq = input("请输入新的QQ:")
new_weixin = input("请输入新的微信:")
new_addr = input("请输入新的住址:")
#定义一个新的字典,用来存储一个新的名片
new_infor = {}
new_infor['name'] = new_name
new_infor['qq'] = new_qq
new_infor['weixin'] = new_weixin
new_infor['addr'] = new_addr
#将一个字典,添加到列表中
card_infors.append(new_infor)
#print(card_infors)# for test
elif num==2:
del_name = input("请输入你要删除人的姓名:")
遍历名片存储列表
for temp in card_infors:
#根据姓名相同进行查找
if del_name == temp["name"]:
card_infors.remove(temp)
print("删除成功。")
break
else:
print("查无此人!")
elif num==3:
same_name = input("请输入你要修改人的名字:")
find_flag = 0#默认表示没有找到
for temp in card_infors:
if same_name == temp["name"]:
print("姓名\tQQ\t微信\t住址")
print("%s\t%s\t%s\t%s"%(temp['name'], temp['qq'], temp['weixin'], temp['addr']))
find_flag=1#表示找到了
old_temp = input("请输入要修改的信息名称(姓名/qq/weixin/addr)或者输入'q'退出查询操作:")
while True:
if (old_temp=='姓名' or old_temp=='qq' or old_temp=='weixin' or old_temp=='addr')and old_temp!='q':
new_temp = input("请输入修改后的新信息:")
temp[old_temp]=new_temp
print("修改成功:")
print("修改后%s的信息:"%temp['name'])
print("姓名\tQQ\t微信\t住址")
print("%s\t%s\t%s\t%s"%(temp['name'], temp['qq'], temp['weixin'], temp['addr']))
break
elif old_temp=='q':
break
else:
old_temp=input("请输入正确的信息名称或者输入’q'键退出修改操作")
continue
#判断是否找到了
if find_flag == 0:
print("查无此人....")
elif num==4:
find_name = input("请输入要查找的姓名:")
find_flag = 0#默认表示没有找到
for temp in card_infors:
if find_name == temp["name"]:
print("姓名\tQQ\t微信\t住址")
print("%s\t%s\t%s\t%s"%(temp['name'], temp['qq'], temp['weixin'], temp['addr']))
find_flag=1#表示找到了
# break
# else:
# print("查无此人....")
#判断是否找到了
if find_flag == 0:
print("查无此人....")
elif num==5:
print("姓名\tQQ\t微信\t住址")
for temp in card_infors:
print("%s\t%s\t%s\t%s"%(temp['name'], temp['qq'], temp['weixin'], temp['addr']))
elif num==6:
break
else:
print("输入有误,请重新输入")
print("")