这个管理系统主要包括三个部分,1、新建n个名片(包括姓名、电话、QQ、邮箱);2、显示全部名片;3、查询名片(键入要查询的信息,若查到则可以选择指定名片进行修改/删除操作,若未则不)
将下面do_cards.py(第一段代码)和hello_users.py(第二段代码)放在同一文件目录下,运行hello_users.py:
# do_cards.py
class Execute(object):
def __init__(self, data):
self.data = data
def add_new_cards(self, num):
"""
添加名片
:param num: 需要添加的名片个数
:return: 返回名片添加后的结果
"""
index = 1
keys = ['姓名', '电话', 'QQ', '邮箱']
while index <= num:
print('输入第%d个数据:' % index)
new_dict = dict.fromkeys(keys)
for key in new_dict:
new_dict[key] = input(key + '为:')
self.data.append(new_dict)
index += 1
return self.data
def query_card(self, search_name):
"""
查找名片
:param search_name: 需要查找的内容
:return: 返回查找结果(找到/未找到)
"""
find = []
for one_dict in self.data:
for key, value in one_dict.items():
if value == search_name:
find.append(one_dict)
break
if find:
return find
else:
return '未找到'
def delete_cards(self, num: int, search_name):
"""
删除指定序号名片
:param num: 要删除的名片(在列表中的序号)
:param search_name: 查询到的内容
:return: 删除后的数据
"""
item = self.query_card(search_name)
for i in self.data[:]:
if i == item[num]:
self.data.remove(i)
return self.data
def update_cards(self, num, search_name):
"""
更新名片(先删除,后添加)
:param num: 要修改的名片(在列表中的序号)
:param search_name: 需要更新的名片
:return: 更新后的数据
"""
'''
self.delete_cards(num, search_name)
new_data = self.add_new_cards(1)
'''
item = self.query_card(search_name)
for i in self.data:
if i == item[num]:
for key in i:
user_input = input(key + '为(回车不修改):')
if len(user_input) > 0:
i[key] = user_input
return self.data
if __name__ == '__main__':
news = [{'姓名': '小明', '电话': '110', 'QQ': '12345', '邮箱': '12345@qq.com'},
{'姓名': '小花', '电话': '120', 'QQ': '54321', '邮箱': '54321@qq.com'}]
cards = Execute(news)
print(cards.query_card('110'))
print(cards.update_cards(0, '110'))
# print(cards.delete_cards(0, '110'))
# hello_users.py
import do_cards
# keys = ['姓名', '电话', 'QQ', '邮箱'] # 用于新增名片dict
user_list = [] # 存储用户输入的名片
cards = [] # 存储用户查找的名片
with_cards = do_cards.Execute(user_list)
def hello_users():
"""
名片管理系统的主界面
:return:
"""
print('*' * 50)
print('欢迎使用【名片管理系统】')
print('1、新建名片')
print('2、显示全部')
print('3、查询名片')
print('')
print('0、退出系统')
print('*' * 50)
def add_cards():
"""
记录用户的姓名、电话、QQ、邮件
:return:卡片列表
"""
add_num = input('请您输入需要添加用户的个数:')
while not add_num.isdecimal() or len(add_num) < 0 or add_num == '0':
print('输入有误,请重新输入')
add_num = input('请您输入需要添加用户的个数:')
with_cards.add_new_cards(int(add_num))
return user_list
def show_cards(card: list):
"""
显示名片
:param card: 需要显示的内容
:return:
"""
count = 1 # 用于名片序号的展示
# 若存在名片,则显示名片,否则提示用户添加数据
if card:
for m, n in enumerate(card):
# 显示表头
if m == 0:
print('{0:<20}'.format('序号'), end='\t')
for find_key, find_value in n.items():
print('{0:<20}'.format(find_key), end='\t')
print('')
# 显示数据
print('{0:<20}'.format(count), end='\t')
for find_key, find_value in n.items():
print('{0:<20}'.format(find_value), end='\t')
count += 1
print('')
else:
print('暂无数据,请添加数据!')
hello_users()
choice = input('请选择操作功能:')
while choice != '0':
# 若输入有误,则提示用户重新输入
if (choice not in ['0', '1', '2', '3']) or (len(choice) < 1):
while (choice not in ['0', '1', '2', '3']) or (len(choice) < 1):
print('您输入的内容有误,请重新输入!')
choice = input('请选择操作功能:')
else:
print('您选择的操作是:%d' % int(choice))
# 添加数据
if choice == '1':
cards = add_cards()
print('添加成功!')
# 显示所有数据
elif choice == '2':
show_cards(cards)
# 查询数据(修改/删除)
elif choice == '3':
if not cards:
print('暂无数据,请添加数据!')
else:
search_name = input('请输入你要查找的姓名/电话/QQ/邮箱:')
message = with_cards.query_card(search_name) # 获取用户查找的名片
if message == '未找到':
print('未找到内容!')
else:
# 若找到名片,展示找到的名片,并可以选择继续操作
show_cards(message)
edit_choice = input('请选择操作(0:不操作,1:修改名片,2、删除名片):')
while len(edit_choice) < 1 or edit_choice not in ['0', '1', '2']:
print('输入有误,请重新输入')
edit_choice = input('请选择操作(0:不操作,1:修改名片,2、删除名片):')
# 用户根据需求修改/删除指定序号的名片
if edit_choice in ['1', '2']:
num = input('请选择需要修改的名片序号:')
while len(num) < 1 or num > str(len(message)) or num == '0':
print('臣妾做不到啊!')
num = input('请选择需要修改的名片序号:')
else:
if edit_choice == '1':
with_cards.update_cards(int(num)-1, search_name)
print('修改成功!')
elif edit_choice == '2':
with_cards.delete_cards(int(num)-1, search_name)
print('删除成功!')
print('')
hello_users()
choice = input('请选择操作功能:')
else:
print('退出系统!')
欢迎指正!