目录
(5)显示所有学员功能 show_all_student()
(6)查询学员功能 search_student_by_name()
(9)search_student_by_name()函数经过添加对学员信息的操作功能,以及美化界面之后的代码
(10)show_all_student()经过美化界面之后的代码:
1.题目:
本项目要实现以下功能:
(1)显示所有功能菜单
(2)退出系统功能
(3)新增学员功能
姓名,年龄,性别,手机号码
(4)显示所有学员功能
name age gender tel
(5)查询学员功能
按照姓名查找学员,
-
查到的话,则输出学员的全部信息,并选择你要进行的操作
【1】修改学员信息 【2】删除学员信息 【0】返回上一级目录
-
查不到的话,则提示没有这个学员
2.效果:
(1)项目构架:
(2)显示所有功能菜单
(3)退出系统功能
(4)新增学员功能
(5)显示所有学员功能
(6)查询学员功能
(7)查到学员以后选择对学员要进行的操作
输入 1 为修改学员信息
输入 2 为删除学员信息
输入 0 为返回上一级菜单
(8)把学员信息都对齐,使得界面美观一点
3.思路:
(1)首先这种系统应该分成几个模块来进行
(2)显示所有功能菜单 show_menu()
新增学员请按【1】
显示全部请按【2】
查询学员请按【3】
退出系统请按【0】
(3)退出系统功能
如果用户输入 0 的话:结束程序
(4)新增学员功能 add_student()
如果用户输入 1 的话:提示用户题词输入学员的姓名,年龄,性别,电话号码
把每个学员的信息都保存在一个字典中
把所有学员的信息保存在列表中
采用列表里面套字典的结构:
student_info_lst=[{'name':'zs','age':10,'gender':'男','tel':'123456'},
{'name':'ls','age':32,'gender':'男','tel':'133443256'},.......]
(5)显示所有学员功能 show_all_student()
如果用户输入 2 的话,遍历列表把每个学员的信息打印出来:
for dic in student_info_lst:
name=dic['name']
age=dic['age']
gender=dic['gender]
tel=dic['tel]
print('{}\t{}\t{}\t{}'.format(name,age,gender,tel))
(6)查询学员功能 search_student_by_name()
如果用户输入 3 的话,就提示用户输入要查询的学员的姓名;
- 如果系统里面学员信息的姓名和输入的姓名有一样的话,则输出改名学员的所有信息,并对该名学员的信息进行操作
(修改,删除,返回上一级菜单),此时调用 deal_stuent()函数
- 如果没有,则提示这名学员不存在
(7)处理学员信息功能 deal_student()
1.如果用户输入 1 的话,修改学员信息
调用 modify_student()函数
2.如果用户输入 2的话, 删除学员信息
把该名学员的信息从整个系统的列表中删除 student_info_lst.remove(dic)
3.如果用户输入 0 的话,返回上一级目录
(8)修改学员信息功能 modify_student()
用户输入要修改的信息,并保存在列表中,没有修改的仍然是之前的数据
(9)美化界面,每条信息对齐 alignment()
因为GBK编码和UTF-8编码不同,GBK编码:一个汉字占两个字节,UTF-8编码:一个简单字占3个字节
GBK和UTF-8都是一个字符占一个字节。编码方式不同,肯定在排版上会出现问题
https://blog.csdn.net/g_optimistic/article/details/85310823
接下来是alignment()函数的实现:
首先解决编码问题,把输进去的东西按照GBK编码,获取输入内容的长度,要让每一个数据对齐,我们需要限定一个长度,比如说是20,用20个位置减去输入内容的长度,就是需要输入的空格的个数。
4.代码:
(1)整体框架
while True:
show_menu()
action_str = input('请输入您要选的数字:')
lst = ['0', '1', '2', '3']
if action_str in lst:
if action_str == '1':
add_student()
elif action_str == '2':
show_all_student()
elif action_str == '3':
search_student_by_name()
elif action_str == '0':
print('三位慢走,欢迎下次光临')
break
else:
print('---------输错了,请重新输入------------')
(2)show_menu()
def show_menu():
'''这是显示菜单界面'''
print('------------------欢迎来到名片管理系统--------------------')
print('新增学员请按[1]')
print('显示学员请按[2]')
print('查询学员请按[3]')
print('退出系统请按[0]')
(3)add_student()
student_info_lst = [] # 保存所有学生的信息
'''
[{'name':'zs',.......},
{'name':'ls',.......},
]
'''
def add_student():
'''这是新增学员功能'''
print('-------------这是新增学员功能----------------')
name = input('请输入姓名:')
age = input('请输入年龄:')
gender = input('请输入性别:')
tel = input('请输入手机号码:')
# print(name, age, gender, tel)
# 将用户输入的信息保存到一个字典中
dic = {}
dic['name'] = name
dic['age'] = age
dic['gender'] = gender
dic['tel'] = tel
# print(dic)
# 注意:将用户的信息保存到一个全局变量 student_info_lst 中
# 列表中,让其他功能使用列表中的数据
student_info_lst.append(dic)
# print(lst)
(4)show_all_stuent()
def show_all_student():
print('-----------显示所有的学员功能---------------')
if not student_info_lst:
print('还没有学员呢,请添加学员')
return
# 显示学员信息
# print('name\tage\tgender\tel')
print('name', 16 * ' ', 'age', 17 * ' ', 'gender', 15 * ' ', 'tel')
for dic in student_info_lst:
name = dic['name']
age = dic['age']
gender = dic['gender']
tel = dic['tel']
# print('{}\t{}\t{}\t{}'.format(name, age, gender, tel))
print(name, (20 - len(name)) * ' ', age, (20 - len(name)) * ' ', gender, (20 - len(name)) * ' ', tel,
(20 - len(tel)) * ' ')
(5)search_student_by_name()
def search_student_by_name():
print('--------------欢迎来到查询学员功能----------------')
if student_info_lst:
name = input('请输入要查询的学生的姓名:')
for dic in student_info_lst:
if dic['name'] == name:
# print('name\tage\tgender\tel')
print('name', 16 * ' ', 'age', 17 * ' ', 'gender', 15 * ' ', 'tel')
name = dic['name']
age = dic['age']
gender = dic['gender']
tel = dic['tel']
# print('{}\t{}\t{}\t{}'.format(dic['name'], dic['age'], dic['gender'], dic['tel']))
print(name, (20 - len(name)) * ' ', age, (20 - len(name)) * ' ', gender, (20 - len(name)) * ' ', tel,
(20 - len(tel)) * ' ')
break
else:
print('have not this stuent,please add this student')
add_student()
else:
print('have not atudent,please add student')
add_student()
(6)deal_stuent()
def deal_student(dic):
'''修改和删除学员信息'''
action_str = input('【1】修改 【2】删除 【0】返回上一级菜单,请选择要执行的操作:')
if action_str == '1':
'''修改学员信息'''
# name = input('请输入姓名:')
# age = input('请输入年龄:')
# gender = input('请输入性别:')
# tel = input('请输入手机号码:')
name = modify_student(dic['name'], '请输入姓名:')
age = modify_student(dic['age'], '请输入年龄:')
gender = modify_student(dic['gender'], '请输入性别:')
tel = modify_student(dic['tel'], '请输入手机号码:')
dic['name'] = name
dic['age'] = age
dic['gender'] = gender
dic['tel'] = tel
elif action_str == '2':
'''删除该学员'''
student_info_lst.remove(dic)
# del student_info_lst[dic]
print('-------------删除成功了--------------')
elif action_str == '0':
'''返回上一级菜单'''
pass
(7)modify_student()
def modify_student(old_value, msg):
new_value = input(msg)
if new_value.strip():
'''msg有内容'''
return new_value
else:
'''msg有内容'''
return old_value
(8)alignment()
def alignment(s, space):
'''动态获取长度'''
s1 = s.encode('gbk')
lenght = len(s1)
space = space - lenght
s = s + space * ' '
return s
(9)search_student_by_name()函数经过添加对学员信息的操作功能,以及美化界面之后的代码
其中在search_student_by_name()中调用deal_student()
在deal_student()函数中调用modify_student()
def search_student_by_name():
print('--------------欢迎来到查询学员功能----------------')
if student_info_lst:
name = input('请输入要查询的学生的姓名:')
for dic in student_info_lst: # 获取所有学员
if dic['name'] == name: # 比较学员姓名
# print('name\tage\tgender\tel')
# print('name', 16 * ' ', 'age', 17 * ' ', 'gender', 15 * ' ', 'tel')
name = alignment('name', 15)
age = alignment('age', 15)
gender = alignment('gender', 15)
tel = alignment('tel', 15)
print(name, age, gender, tel)
name = dic['name']
age = dic['age']
gender = dic['gender']
tel = dic['tel']
# print('{}\t{}\t{}\t{}'.format(dic['name'], dic['age'], dic['gender'], dic['tel']))
# print(name, (20 - len(name)) * ' ', age, (20 - len(name)) * ' ', gender, (20 - len(name)) * ' ', tel)
name = alignment(dic['name'], 15)
age = alignment(dic['age'], 15)
gender = alignment(dic['gender'], 15)
tel = alignment(dic['tel'], 15)
print('{}\t{}\t{}\t{}'.format(name, age, gender, tel))
# 修改学员信息
# 需要将学员的信息传递到函数
deal_student(dic)
break
else:
print('have not this stuent')
# add_student()
else:
print('have not atudent,please add student')
add_student()
(10)show_all_student()经过美化界面之后的代码:
def show_all_student():
print('-----------显示所有的学员功能---------------')
if not student_info_lst:
print('还没有学员呢,请添加学员')
return
# 显示学员信息
# print('name\tage\tgender\tel')
# print('name', 16 * ' ', 'age', 17 * ' ', 'gender', 15 * ' ', 'tel')
name = alignment('name', 15)
age = alignment('age', 15)
gender = alignment('gender', 15)
tel = alignment('tel', 15)
print(name, age, gender, tel)
for dic in student_info_lst:
name = dic['name']
age = dic['age']
gender = dic['gender']
tel = dic['tel']
# print('{}\t{}\t{}\t{}'.format(name, age, gender, tel))
# print(name, (20 - len(name)) * ' ', age, (20 - len(name)) * ' ', gender, (20 - len(name)) * ' ', tel)
name = alignment(dic['name'], 15)
age = alignment(dic['age'], 15)
gender = alignment(dic['gender'], 15)
tel = alignment(dic['tel'], 15)
print('{}\t{}\t{}\t{}'.format(name, age, gender, tel))
(11)最后的整体代码:
student_info_lst = [] # 保存所有学生的信息
'''
[{'name':'zs',.......},
{'name':'ls',.......},
]
'''
def show_menu():
'''这是显示菜单界面'''
print('------------欢迎来到学生管理系统--------------')
print('新增学员请按[1]')
print('显示全部请按[2]')
print('查询学员请按[3]')
print('退出系统请按[0]')
def add_student():
'''这是新增学员功能'''
print('-------------这是新增学员功能----------------')
name = input('请输入姓名:')
age = input('请输入年龄:')
gender = input('请输入性别:')
tel = input('请输入手机号码:')
# print(name, age, gender, tel)
# 将用户输入的信息保存到一个字典中
dic = {}
dic['name'] = name
dic['age'] = age
dic['gender'] = gender
dic['tel'] = tel
# print(dic)
# 注意:将用户的信息保存到一个全局变量 student_info_lst 中
# 列表中,让其他功能使用列表中的数据
student_info_lst.append(dic)
# print(lst)
def alignment(s, space):
'''动态获取长度'''
s1 = s.encode('gbk')
lenght = len(s1)
space = space - lenght
s = s + space * ' '
return s
def show_all_student():
print('-----------显示所有的学员功能---------------')
if not student_info_lst:
print('还没有学员呢,请添加学员')
return
# 显示学员信息
# print('name\tage\tgender\tel')
# print('name', 16 * ' ', 'age', 17 * ' ', 'gender', 15 * ' ', 'tel')
name = alignment('name', 15)
age = alignment('age', 15)
gender = alignment('gender', 15)
tel = alignment('tel', 15)
print(name, age, gender, tel)
for dic in student_info_lst:
name = dic['name']
age = dic['age']
gender = dic['gender']
tel = dic['tel']
# print('{}\t{}\t{}\t{}'.format(name, age, gender, tel))
# print(name, (20 - len(name)) * ' ', age, (20 - len(name)) * ' ', gender, (20 - len(name)) * ' ', tel)
name = alignment(dic['name'], 15)
age = alignment(dic['age'], 15)
gender = alignment(dic['gender'], 15)
tel = alignment(dic['tel'], 15)
print('{}\t{}\t{}\t{}'.format(name, age, gender, tel))
def modify_student(old_value, msg):
new_value = input(msg)
if new_value.strip():
'''msg有内容'''
return new_value
else:
'''msg有内容'''
return old_value
def deal_student(dic):
'''修改和删除学员信息'''
action_str = input('【1】修改 【2】删除 【0】返回上一级菜单,请选择要执行的操作:')
if action_str == '1':
'''修改学员信息'''
# name = input('请输入姓名:')
# age = input('请输入年龄:')
# gender = input('请输入性别:')
# tel = input('请输入手机号码:')
name = modify_student(dic['name'], '请输入姓名:')
age = modify_student(dic['age'], '请输入年龄:')
gender = modify_student(dic['gender'], '请输入性别:')
tel = modify_student(dic['tel'], '请输入手机号码:')
dic['name'] = name
dic['age'] = age
dic['gender'] = gender
dic['tel'] = tel
elif action_str == '2':
'''删除该学员'''
student_info_lst.remove(dic)
# del student_info_lst[dic]
print('-------------删除成功了--------------')
elif action_str == '0':
'''返回上一级菜单'''
pass
def search_student_by_name():
print('--------------欢迎来到查询学员功能----------------')
if student_info_lst:
name = input('请输入要查询的学生的姓名:')
for dic in student_info_lst: # 获取所有学员
if dic['name'] == name: # 比较学员姓名
# print('name\tage\tgender\tel')
# print('name', 16 * ' ', 'age', 17 * ' ', 'gender', 15 * ' ', 'tel')
name = alignment('name', 15)
age = alignment('age', 15)
gender = alignment('gender', 15)
tel = alignment('tel', 15)
print(name, age, gender, tel)
name = dic['name']
age = dic['age']
gender = dic['gender']
tel = dic['tel']
# print('{}\t{}\t{}\t{}'.format(dic['name'], dic['age'], dic['gender'], dic['tel']))
# print(name, (20 - len(name)) * ' ', age, (20 - len(name)) * ' ', gender, (20 - len(name)) * ' ', tel)
name = alignment(dic['name'], 15)
age = alignment(dic['age'], 15)
gender = alignment(dic['gender'], 15)
tel = alignment(dic['tel'], 15)
print('{}\t{}\t{}\t{}'.format(name, age, gender, tel))
# 修改学员信息
# 需要将学员的信息传递到函数
deal_student(dic)
break
else:
print('have not this stuent')
# add_student()
else:
print('have not atudent,please add student')
add_student()
while True:
show_menu()
action_str = input('请输入您要选的数字:')
lst = ['0', '1', '2', '3']
if action_str in lst:
if action_str == '1':
'''添加新增学员'''
add_student()
elif action_str == '2':
'''显示所有学员信息'''
show_all_student()
elif action_str == '3':
'''查询学员'''
search_student_by_name()
elif action_str == '0':
'''退出系统'''
print('三位慢走,欢迎下次光临')
break
else:
print('---------输错了,请重新输入------------')