python函数(三)———学员管理系统
一、系统程序步骤分析
1、显示功能界面
2、用户输入功能序号
3、根据用户输入的功能序号,执行不同功能(函数)
3.1、定义函数
3.2、调用函数
二、显示功能界面
1、显示功能界面
与ATM机相同,我们需要罗列出所需的功能:
例如:
1、添加学员;2、删除学员;3、修改学员;4、查询学员;5、显示所有学员;
6、退出系统
以上大概是一个学员管理系统所需要的功能;
我们需要创建学员管理系统的功能界面,即自定义函数,使用print分别输出各个功能,在有需要的地方调用函数,如:
def info_print():print('请选择功能---------')print('1、添加学员')print('2、删除学员')print('3、修改学员')print('4、查询学员')print('5、显示所有学员')print('6、退出系统')print('-'*20)
print('-'*20):这里我们使用20个-将显示功能界面进行分隔
然后在pycharm中我们调用函数 info_print,如图:


2、用户输入功能序号
进入显示功能界面后,需要用户根据自己所需进行选择功能,所以需要使用input函数
例如:
user_num=input('请输入功能序号')
注意:在学习input函数时我们说过,我们使用input函数输入的任何数据都会以字符串的数据类型进行输出,所以我们需要进行数据类型转换,https://blog.csdn.net/2502_92510577/article/details/148928305?spm=1001.2014.3001.5501
数据类型转换在这一期中有详细介绍,如有需要大家可自行查阅
user_num=int(input('请输入功能序号:'))
我们通过int(input('请输入功能序号:'))将字符串数据类型转换为整数型数据类型
然后我们运行程序检查程序是否完整

3、按照用户输入的功能序号,执行不同功能
根据输入的序号不同,需要使程序执行不同的功能:例如
如果输入1,则执行添加功能,如果输入2,则执行删除功能.......
这里需要使用到多重判断,即if条件判断语句:
if user_num==1:print('添加')
if user_num==2:print('删除')
if user_num==3:print('修改')
if user_num==4:print('查询')
if user_num==5:print('显示所有学员')
if user_num==6:print('退出')
我们运行程序,然后随机输入一个序号检查程序是否正常运行:

如图,我们输入1,然后控制台成功返回“添加”,但是我们发现,我们输出一个功能序号后程序自动退出代码了,根本不需要6-退出系统这个功能。
但是我们在任意一个系统中选择功能后并不会直接退出系统,所以我们需要让系统的功能进行循环使用,知道用户输入6主动退出系统为之。
简单说就是我们在系统中选择了一个功能后还需要继续选择其他功能,知道选择6后才会退出系统
这里介绍一个新的函数——while True
我们将代码全部缩进函数while True后,功能就可以循环使用


如图,使用while true循环后,我们可以重复选择所需的功能,
我们在下方详细书写退出系统的代码后,是程序直到输入功能6才退出系统
最后我们添加一个else,用于防止用户错误输入1~6以外的其他序列;即:
while True:info_print()user_num=int(input('请输入功能序号:'))if user_num==1:print('添加')if user_num==2:print('删除')if user_num==3:print('修改')if user_num==4:print('查询')if user_num==5:print('显示所有学员')if user_num==6:print('退出') else:print('输入错误')
显示功能界面到这里我们就创建好了,接下来我们详细补充每一个功能的代码
三、定义不同功能的函数
1、添加功能的完整代码
对于学员管理系统,我们需要先判断使用什么数据结构来储存所有的学员信息
对于单个学员,我们需要知道在系统中储存数据并不是单一的储存学员的姓名,还需要储存学员的性别,年龄等其他条件。在这里我们先只储存姓名,性别,年龄三个要素。
而一个姓名对应的性别与年龄,我们可以看作一个字典,而储存所有的学员信息则我们需要使用列表进行储存
所以,将单个学员作为一个字典数据结构,将所有的学员储存在一个列表数据结构中,然后就可以进行添加学员,删除学员等操作
所有功能函数都是操作学员信息,所有储存学员信息应该是一个全局变量,数据类型为列表
需求分析:
1、我们需要接受用户输入的学员信息,并保存
2、判断是否添加学员信息
2.1、如果学员信息已经存在,则报错
2.2、如果学员信息不存在,则准备空字典,将用户输入的数据追加到字典,然后再追加到列表中
3、对应的if条件成立的位置调用该函数
接下来我们完善添加函数功能的代码
首先创建一个列表,用于储存所有的学员信息,我们将变量名命名为info,即:
info=[]
然后我们定义函数,该函数的功能就是用于添加函数,然后在用户需要时调用该函数,使用户完成添加的功能,即:
info=[]def add():"""添加学员"""new_name=input('请输入您的姓名:')new_gender=input('请输入您的性别:')new_age=input('请输入您的年龄:')global infofor i in info:if new_name==i['name']:print('该用户已存在')returninfo_dict={}info_dict['name']=new_nameinfo_dict['gender']=new_genderinfo_dict['age']=new_ageinfo.append(info_dict)print(info)
代码分析
以上代码是我们自定义添加功能函数的完整代码,我们对此进行分析
1、我们自定义函数add——def add():
2、在函数内部添加注释用于解释该自定义函数的功能—— """添加学员"""
3、让用户输入个人信息,分别为:姓名,性别,年龄,
使用input函数接收用户输入的数据,然后使用三个变量储存数据,即:
new_name=input('请输入您的姓名:')
new_gender=input('请输入您的性别:')
new_age=input('请输入您的年龄:')
4、因为我们上方创建的列表为全局变量,因此我们在函数体内部使用global函数进行声明,即:
global info
5、然后对用户输入的信息进行筛选,即使用for函数遍历列表info中的所有字典,当发现用户输入的new_name在列表中存在时,则说明用户信息已经在学员管理系统中存在,则输出“该用户已存在”,并且退出函数——return(注:此时函数体内部下方的代码不会再运行)
for i in info:
if new_name==i['name']:
print('该用户已存在')
return
6、若不存在,则创建字典,用于储存新的学员信息—— info_dict={}
7、将用户输入的信息存入字典中
info_dict['name']=new_name
info_dict['gender']=new_gender
info_dict['age']=new_age
8、将字典存入列表中,则该用户的信息被添加到学员管理系统中
info.append(info_dict)
9、将列表中的学员信息进行打印:
print(info)
添加学员信息的函数我们准备完成后,需要在对应的位置调用函数,即:
if user_num==1:add()continue
当用户选择功能1时,我们调用函数add(),然后我们在pycharm中调用函数,并检查程序是否能正常运行

如图,运行程序后我们调用添加函数功能,成功将用户信息添加到列表中
当我们再次输入相同的用户数据,也成功返回了用户存在的信息。
2、删除功能的完整代码
需求分析
删除系统中的学员信息,首先我们需要在系统中查找到学员的信息
1、用户输入目标学员的姓名
2、检查这个学员是否存在
2.1、如果存在,则在列表中删除学员数据
2.2、如果不存在,则提示用户”该用户不存在“
3、使用对应的if条件成立的位置调用函数
然后我们来观察代码
def del_info():"""删除学员"""del_name=input('请输入您要删除的学员姓名:')global infofor i in info:if del_name==i['name']:info.remove(i)breakelse:print('该学员不存在')print(info)
代码分析
与添加函数代码相同:
1、首先自定义函数——def del_info():
2、在函数体内部添加注释,用于解释该自定义函数的作用—— """删除学员"""
3、让用户输入想要删除的学员信息—— del_name=input('请输入您要删除的学员姓名:')
4、声明info列表为全局变量—— global info
5、遍历info列表中的数据,查找用户输入的学员数据是否在列表中存在—— for i in info:
使用if条件语句进行判断:
如果遍历列表查找到学员信息,则将该数据从列表中删除——即从列表中删除数据:
if del_name==i['name']:
info.remove(i)
break
如果用户输入的学员信息不再存在列表中,则提醒用户该学员不存在:
else:
print('该学员不存在')
6、最后打印列表,检查数据是否删除—— print(info)
最后在对应的位置调用函数,即当用户选择功能2时,我们调用函数
if user_num==2:del_info()continue
我们运行程序,检查代码是否能正常运行:

程序正常运行,因为此时在学员系统中没有学员的信息,所以调用删除学员信息会返回该学员不存在
我们使用功能1向列表中添加数据,然后再使用功能2进行删除:

如图,使用功能1向列表中成功添加数据后,在功能2程序运行后info列表中的数据再次被删除,info列表变为空列表。说明功能2删除数据功能成功运行
3、修改学员信息的完整代码
根据功能1与功能2我们可以发现,对于学员信息添加与删除其实就是自定义函数,使其可以对列表中的数据进行添加与删除
同样的对于功能3修改学员信息,我们同样是自定义函数,使其可以完成对列表中数据的修改
需求分析
1、用户输入目标学员姓名
2、检查这个学员是否存在
2.1、如果存在,则修改这位学员的信息
2.2、如果不存在,则报错
3、对应的if条件成立的位置调用函数
我们书写完整代码:
def modify_info():"""修改学员信息"""modify_name=input('请输入要修改的学员的姓名:')global infofor i in info:if modify_name==i['name']:i['name']=input('请输入新的姓名:')breakelse:print('该学员不存在')print(info)
代码分析
1、首先自定义函数——def modify_info():
2、在函数体内部添加注释,解释函数的作用—— """修改学员信息"""
3、用户输入想要修改的学员姓名—— modify_name=input('请输入要修改的学员的姓名:')
4、声明info列表为全局变量—— global info
5、遍历info列表,查看用户需要修改的学员是否存在
若存在,则进行修改学员信息,让用户输入修改后的内容
if modify_name==i['name']:
i['name']=input('请输入新的姓名:')
break
若不存在,则输出学员不存在
else:
print('该学员不存在')
6、打印列表——print(info)
最后在需要的地方调用函数:
if user_num==3:modify_info()
我们在pycharm中运行程序,检查代码能否正常运行:

如图:我们先使用功能1向其中添加了学员”灰太狼“的信息,然后使用功能3进行修改,因为我们输入需要修改的学员为”喜羊羊“,在列表中并不存在,所以返回该学员不存在

我们再次使用功能3进行修改,这次修改灰太狼的数据,程序查找到学员信息,然后我们将其更改为喜羊羊,控制台返回列表中学员信息被成功更改
4、查询学员信息的完整代码
同样,查询学员信息就是从列表中查询数据:
需求分析;
1、用户输入目标学院姓名
2、检查学员是否存在
2.1、如果存在,则显示学员信息
2.2、如果不存在,则报错提示
3、对应的if条件成立的位置调用函数
书写代码:
def search_info():"""查询学员"""search_name=input('请输入您要查询的学员姓名:')global infofor i in info:if search_name==i['name']:print('查询到的学员信息如下:')print(f"该学员的姓名为:{i['name']},该学员的性别为:{i['gender']},该学员的年龄为:{i['age']}")breakelse:print('该学员不存在')print(info)
代码分析
1、自定义函数——def search_info():
2、标注注释——"""查询学员"""
3、用户输入需要查询的学员姓名—— search_name=input('请输入您要查询的学员姓名:')
4、声明info列表为全局变量——global info
5、遍历列表——for i in info:
判断用户查询的学员是否存在:
if search_name==i['name']:
print('查询到的学员信息如下:')
print(f"该学员的姓名为:{i['name']},该学员的性别为:{i['gender']},该学员的年龄为:{i['age']}") break
else:
print('该学员不存在')
6、打印列表—— print(info)
运行程序,检查代码是否出错:

如图,我们使用功能1向列表中添加学员”灰太狼“的信息,然后使用功能4进行查找
功能4成功查询到了灰太狼学员的信息
5、显示所有学员信息的完整代码
显示所有学员信息即将列表中的所有数据陈列出来——即打印所有学员的信息
代码实现:
def print_all():"""显示所有学员信息"""for i in info:print(i['name'],i['gender'],i['age'])
打印所有学员信息,我们只需要遍历列表中的数据,然后打印即可
代码分析:
1、自定义函数——def print_all():
2、标注注释—— """显示所有学员信息"""
3、使用for循环遍历列表,然后依次打印数据:
for i in info:
print(i['name'],i['gender'],i['age'])
最后在功能5的地方调用函数即可:
if user_num==5:print_all()continue
运行程序,检查是否有错误:



如图,我们使用三次功能1向列表中添加数据,然后使用功能5,程序将我们三次添加的成员信息全部显示,代码正确
6、退出系统代码
最后就是退出系统代码的实现:
退出系统的代码我们不需要再使用自定义函数来完成。
我们知道再显示功能界面的代码我们是使用了一个while True代码进行循环,所以我们退出循环只需要使用结束循环的break语句
当用户输入功能6时,为了防止用户误触,我们先提示用户是否真的需要退出系统,当再次得到用户确认后,使用break退出循环即完成了退出系统。
代码实现:
elif user_num==6:exit_flag=input('确定要退出吗?yes or no?\n')if exit_flag=='yes':break
代码分析:
1、如果用户选择功能6——elif user_num==6:
2、我们确定用户是否真的需要退出系统,通过询问用户让用户选择yes no
当用户输入yes,则使用break结束循环,退出系统
exit_flag=input('确定要退出吗?yes or no?\n')
if exit_flag=='yes':
break
运行程序检查代码是否有误:

代码正确,系统成功退出
四、学员管理系统的完整代码展示
def info_print():print('请选择功能---------')print('1、添加学员')print('2、删除学员')print('3、修改学员')print('4、查询学员')print('5、显示所有学员')print('6、退出系统')print('-'*20)info=[]def add():"""添加学员"""new_name=input('请输入您的姓名:')new_gender=input('请输入您的性别:')new_age=input('请输入您的年龄:')global infofor i in info:if new_name==i['name']:print('该用户已存在')returninfo_dict={}info_dict['name']=new_nameinfo_dict['gender']=new_genderinfo_dict['age']=new_ageinfo.append(info_dict)print(info)def del_info():"""删除学员"""del_name=input('请输入您要删除的学员姓名:')global infofor i in info:if del_name==i['name']:info.remove(i)breakelse:print('该学员不存在')print(info)def modify_info():"""修改学员信息"""modify_name=input('请输入要修改的学员的姓名:')global infofor i in info:if modify_name==i['name']:i['name']=input('请输入新的姓名:')breakelse:print('该学员不存在')print(info)def search_info():"""查询学员"""search_name=input('请输入您要查询的学员姓名:')global infofor i in info:if search_name==i['name']:print('查询到的学员信息如下:')print(f"该学员的姓名为:{i['name']},该学员的性别为:{i['gender']},该学员的年龄为:{i['age']}")breakelse:print('该学员不存在')print(info)def print_all():"""显示所有学员信息"""for i in info:print(i['name'],i['gender'],i['age'])while True:info_print()user_num=int(input('请输入功能序号:'))if user_num==1:add()continueif user_num==2:del_info()continueif user_num==3:modify_info()continueif user_num==4:search_info()continueif user_num==5:print_all()continueelif user_num==6:exit_flag=input('确定要退出吗?yes or no?\n')if exit_flag=='yes':breakelse:print('错误')
五、总结
学员管理系统的代码书写是对自定义函数以及前面所学的所有内容的一个总结,其中用到的所有知都是之前我们所介绍过的
其中除了自定义函数的使用,最多的是对列表与字典中的常见操作的使用
包含向列表中添加、删除数据等
如果大家对之前的知识不了解,可以查看小编之前的内容
此外,因为马上要进行英语四六级的考试,所以小编的更新速度缓慢,待四六级考试结束后小编会加快更新速度,希望大家谅解
