(一)功能要求
功能:
1.能循环输入内容
2.展示功能
-1.新增名片
-2.显示全部
-3.查询名片
-0.退出系统
3.让用户输入希望执行的操作 例如输入1,2,3,0
4.新增列表
- 提示用户输入姓名,
- 输入电话
- 输入qq号
- 输入邮箱
- 提示新增名片成功。
5.显示全部
- 将所有的名片打印出来,格式如下:
姓名 电话 QQ 邮箱
zs 110 1337765076 110@qq.com
6.查询名片
- 提示请输入要搜索查找用户的姓名
- 如果用户存在--->显示用户的信息
-提示用户【1】修改 【2】删除 【0】返回上一级菜单,请选择要执行的操作。
-修改操作,可以修改用户名,电话,qq、邮箱。
- 删除操作,将用户删除。
- 返回上一级操作,回到欢迎界面,让用户继续操作。
- 如果用户不存在-->提示查找的用户不存在。
(二)我的思路
(1)一个人有四个信息
(2)建立相应的四个信息列表(姓名列表,电话列表,QQ列表,邮箱列表),各列表同一索引是同一个人的四项信息
(3)添加一个人的信息时,各列表同时append各自的信息
(4)展示全部内容时,根据各列表长度,将各列表同时遍历输出
(5)修改一个人的信息时,用 name.index(想修改的姓名)找到下标,将这一索引给送给各列表进行同时修改
(6)删除同理,同一下标全部删除
(7)返回菜单就重新调用一次函数
(三)代码实现
开始这个对齐函数,keyi可以先不管,对本文影响不大
若想搞明白 那么: https://blog.csdn.net/sinat_38068807/article/details/85804217
# 令输出格式对齐的函数,我们先不理他,先看思路
# 若想搞明白 那么 https://blog.csdn.net/sinat_38068807/article/details/85804217
def align(str1, space, align='left'):
length = len(str1.encode('gbk'))
space = space - length if space > length else 0
if align == 'left':
str1 = str1 + ' '*space
elif align == 'right':
str1 = ' ' * space + str1
elif align == 'center':
str1 = ' ' * (space // 2) + str1 + ' ' * (space - space // 2)
return str1
# 各列表每次添加、删除、展示都会一同操作,同一人的信息在各列表的同一索引
name_lst = []
tel_lst = []
qq_lst = []
mail_lst = []
# 定义为函数方便返回主菜单,需要返回的时候重新调用一次函数就好了
def func():
while True:
print('-1.新增名片\n-2.显示全部\n-3.查询名片\n-0.退出系统') # 展示信息
choice = input('请输入操作序号:\n')
# 判断序号合法
while not ('0' <= choice <= '3'):
choice = input('输入错误,请重新输入:\n')
# 根据序号进行相应功能操作
if choice == '0': # 0.退出系统
print('感谢使用!')
break
elif choice == '1': # 1.新增名片
print('您选择新增列表,请根据提示输入内容')
add_name = input('请输入姓名')
while not add_name: # 姓名合法
add_name = input('姓名不能为空,请重新输入:')
name_lst.append(add_name)
tel_lst.append(input('请输入电话号码:'))
qq_lst.append(input('请输入QQ号:'))
mail_lst.append(input('请输入邮箱:'))
print('新增名片成功。')
elif choice == '2': # 2.显示全部
print(align('姓名',30),align('电话',30),align('QQ',30),align('邮箱',30))
# 每个列表遍历一遍,因为每个列表同一下标就是同一个人的信息
i = 0
while i < len(name_lst):
print(align(name_lst[i],30), align(tel_lst[i],30),
align(qq_lst[i],30), align(mail_lst[i],30))
i += 1
elif choice == '3': # 3.查询名片
find_name = input('请输入要查找的姓名:\n')
while not (find_name in name_lst): # 判断查找姓名输入合法
find_name = input('您输入的客户不存在,请重新输入(输入Q或q退回主菜单):')
if find_name == 'q' or find_name == 'Q': # 为避免用户一直输入不对,可退出
func()
# 找到要查找的名字在姓名列表的索引,然后将各列表对应索引输出
name_index = name_lst.index(find_name)
print(align('姓名', 30), align('电话', 30), align('QQ', 30), align('邮箱', 30))
print(align(name_lst[name_index], 30), align(tel_lst[name_index], 30),
align(qq_lst[name_index], 30), align(mail_lst[name_index], 30))
operate_num = input('您可以进行以下操作:\n【1】修改 【2】删除 '
'【0】返回上一级菜单\n请选择要执行的操作:')
if operate_num == '0': # 【0】返回上一级菜单
func()
elif operate_num == '1': # 【1】修改
aim_name = input('您想要修改谁:')
# 根据名字找到此人信息在各列表中的索引,集体修改各列表同一索引内容
while not(name_lst.index(aim_name)): # 该人不在则提示重新输入
aim_name = input('该人不存在,重新输入或输入Q、q退回主菜单:')
if aim_name == 'q' or aim_name == 'Q':
func()
modified_index = name_lst.index(aim_name)
name_lst[modified_index] = input('姓名修改为:')
while not name_lst[modified_index]:
name_lst[modified_index] = input('姓名不能为空,请重新输入:')
tel_lst[modified_index] = input('电话修改为:')
qq_lst[modified_index] = input('QQ修改为:')
mail_lst[modified_index] = input('邮箱修改为:')
elif operate_num == '2': # 【2】删除
del_name = input('您想要删除谁:')
while not(del_name in name_lst):
del_name = input('该人不存在,重新输入或输入Q、q退回主菜单:')
if del_name == 'q' or del_name == 'Q':
func()
# 根据名字找到此人信息在各列表中的索引,集体删除各列表同一索引内容
del_index = name_lst.index(del_name)
del name_lst[del_index]
del tel_lst[del_index]
del qq_lst[del_index]
del mail_lst[del_index]
func()
来源:CSDN
作者:百雨
链接:https://blog.csdn.net/sinat_38068807/article/details/85801655