Python函数实现学员管理系统
本文实例为大家分享了Python函数实现学员管理系统的具体代码,供大家参考,具体内容如下
这个是一个简单的管理程序
输入姓名,年龄,性别(也可以添加其他类别例如性取向),然后以列表的形式保存(默认为空列表)。功能如下:
文章图片
- 按1添加成员
- 按2删除成员
- 按3修改成员信息(目前不包括姓名但是可以添加)
- 按4检索并打印某个成员的全部信息
- 按5打印全部成员的信息
- 按6退出程序
import timedef main():'''主函數'''while True:sl(),select_function()sl()user_input = input('select your operation: ')ifuser_input == '1':sl(),add_op()elif user_input == '2':sl(),delete_op()elif user_input == '3':sl(),alter_op()elif user_input == '4':sl(),search_op()elif user_input == '5':sl(),print_op()elif user_input == '6':print('\n system quit.')breakelse:sl(),print('\n plz enter correct number.')def select_function():'''顯示系統功能'''print("\n1.add mbr\n2.delete mbr\n3.change info\\n4.check info\n5.prt\'l info\n6.exit sys\n")sl()def store_new_info():a = input('enter name: ').title()b = input('enter age: ').title()c = input('enter gender: ').title()return a,b,cdef add_op():'''添加新人'''name,age,gender = store_new_info()for i in all_info:if name == i['name'].strip():print(f'{name} is existed.retry plz')breakelse:dict_inf = {}dict_inf['name']= namedict_inf['age']= agedict_inf['gender'] = genderall_info.append(dict_inf)print(f'{name} added.')def delete_op():'''刪除已有人物'''del_nam = input('type the name to del:').title()for i in all_info:if del_nam == i['name'].strip():all_info.remove(i)sl(),print(f'{del_nam} is removed.')else:sl(),print(f'no {del_nam} in list now.')def alter_op():'''修改現有人物信息'''alter_nam = input('type the name who needs change: ').title()for i in all_info:if alter_nam != i['name'].strip():continueelse:i['age'] = input('type new age: ')i['gender'] = input('type new gender: ')breakelse:sl(),print(f'no {alter_nam} in list.')def search_op():'''查找某個人物的信息'''se_num = input('type name to search: ').strip().title()for i in all_info:if se_num != i['name'].strip():continueelse:sl(),print(i)breakdef modify_op():'''統一name首字母大寫且左對齊'''b = 0for i in range(len(all_info)): a = len(all_info[i].get('name').strip())b = max(a,b)for i in range(len(all_info)):all_info[i]['name']= all_info[i].get('name').strip().title().ljust(b,' ')all_info[i]['gender'] = all_info[i].get('gender').strip().title().ljust(6,' ')def print_op():'''輸出所有人物的全部信息'''modify_op()for i in all_info:print('\n',i,'\n')def sl():time.sleep(0.5)all_info = []main()
简单解释一下:
- 由于python中没有switch case语句所以这里用if elif代替,实现按键选择功能的需求
- 信息的保存是用列表和字典嵌套实现,即形如 [{},{},{}] 的格式,每个字典里面保存一个人员的信息。
- 函数modify_op()是为了美化显示,实现把所有成员的名字取等长,首字母大写且左对齐输出。例如norn和scotti,后者6个字符前者4个字符,这样就会用空格把norn补为6个字符。函数中大量出现的strip()和title()就是为此才使用的
- 用了一些代码来避免bug,例如排除大小写的影响(vert和VERT),排除重名的可能性,排除选择程序功能时输入1-6之外的字符导致报错,排除各种的死循环等。
- 由于程序没有保存信息到文本文件的功能,所以退出程序之后所有的信息都会消失。因为我是用的是谷歌的云ide,不知道保存文件路径怎么写(/gdrive/file.txt?)。so啥时候自己的电脑能拿来用了就会加上的
推荐阅读
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- MybatisPlus使用queryWrapper如何实现复杂查询
- python学习之|python学习之 实现QQ自动发送消息
- 逻辑回归的理解与python示例
- 孩子不是实现父母欲望的工具——林哈夫
- 一起来学习C语言的字符串转换函数
- C语言字符函数中的isalnum()和iscntrl()你都知道吗
- opencv|opencv C++模板匹配的简单实现
- C语言浮点函数中的modf和fmod详解
- Node.js中readline模块实现终端输入