经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Python » 查看文章
Python函数实现学员管理系统
来源:jb51  时间:2021/7/21 18:17:36  对本文有异议

本文实例为大家分享了Python函数实现学员管理系统的具体代码,供大家参考,具体内容如下

这个是一个简单的管理程序

输入姓名,年龄,性别(也可以添加其他类别例如性取向),然后以列表的形式保存(默认为空列表)。功能如下:

  • 按1添加成员
  • 按2删除成员
  • 按3修改成员信息(目前不包括姓名但是可以添加)
  • 按4检索并打印某个成员的全部信息
  • 按5打印全部成员的信息
  • 按6退出程序

大概就是这样子。下面是代码:

  1. import time
  2.  
  3. def main():
  4. '''主函數'''
  5. while True:
  6. sl(),select_function()
  7. sl()
  8. user_input = input('select your operation: ')
  9. if user_input == '1':
  10. sl(),add_op()
  11. elif user_input == '2':
  12. sl(),delete_op()
  13. elif user_input == '3':
  14. sl(),alter_op()
  15. elif user_input == '4':
  16. sl(),search_op()
  17. elif user_input == '5':
  18. sl(),print_op()
  19. elif user_input == '6':
  20. print('\n system quit.')
  21. break
  22. else:
  23. sl(),print('\n plz enter correct number.')
  24.  
  25.  
  26. def select_function():
  27. '''顯示系統功能'''
  28. print("\n1.add mbr\n2.delete mbr\n3.change info \n4.check info\n5.prt\'l info\n6.exit sys\n")
  29. sl()
  30. def store_new_info():
  31. a = input('enter name: ').title()
  32. b = input('enter age: ').title()
  33. c = input('enter gender: ').title()
  34. return a,b,c
  35.  
  36. def add_op():
  37. '''添加新人'''
  38. name,age,gender = store_new_info()
  39. for i in all_info:
  40. if name == i['name'].strip():
  41. print(f'{name} is existed.retry plz')
  42. break
  43. else:
  44. dict_inf = {}
  45. dict_inf['name'] = name
  46. dict_inf['age'] = age
  47. dict_inf['gender'] = gender
  48. all_info.append(dict_inf)
  49. print(f'{name} added.')
  50.  
  51. def delete_op():
  52. '''刪除已有人物'''
  53. del_nam = input('type the name to del:').title()
  54. for i in all_info:
  55. if del_nam == i['name'].strip():
  56. all_info.remove(i)
  57. sl(),print(f'{del_nam} is removed.')
  58. else:
  59. sl(),print(f'no {del_nam} in list now.')
  60.  
  61. def alter_op():
  62. '''修改現有人物信息'''
  63. alter_nam = input('type the name who needs change: ').title()
  64. for i in all_info:
  65. if alter_nam != i['name'].strip():
  66. continue
  67. else:
  68. i['age'] = input('type new age: ')
  69. i['gender'] = input('type new gender: ')
  70. break
  71. else:
  72. sl(),print(f'no {alter_nam} in list.')
  73.  
  74. def search_op():
  75. '''查找某個人物的信息'''
  76. se_num = input('type name to search: ').strip().title()
  77. for i in all_info:
  78. if se_num != i['name'].strip():
  79. continue
  80. else:
  81. sl(),print(i)
  82. break
  83.  
  84. def modify_op():
  85. '''統一name首字母大寫且左對齊'''
  86. b = 0
  87. for i in range(len(all_info)):
  88. a = len(all_info[i].get('name').strip())
  89. b = max(a,b)
  90. for i in range(len(all_info)):
  91. all_info[i]['name'] = all_info[i].get('name').strip().title().ljust(b,' ')
  92. all_info[i]['gender'] = all_info[i].get('gender').strip().title().ljust(6,' ')
  93.  
  94. def print_op():
  95. '''輸出所有人物的全部信息'''
  96. modify_op()
  97. for i in all_info:
  98. print('\n',i,'\n')
  99.  
  100. def sl():
  101. time.sleep(0.5)
  102.  
  103. all_info = []
  104. 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啥时候自己的电脑能拿来用了就会加上的

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号