Python项目之学生管理系统

简介: Python项目之学生管理系统

引言

Hallo,大家好!首先今天是1024,程序员节快乐!看到这个标题,是不是狂喜一阵?《学生管理系统》、《图书馆管理系统》等等一系列管理系统一直是各高校大作业的热门,好消息是这篇文章可以很大程度地帮助你哦!这篇文章很早就想写了,一直因为各种事情拖拖拖(主要是因为自己懒),正好今天程序员节,用这篇文章纪念2022年10月24日,自己的第一个程序员节吧!

一 、学习目标

  • 了解面向对象开发过程中类内部功能的分析方法
  • 了解常用的系统功能
  • 添加
  • 删除
  • 修改
  • 查询

二、系统需求

使用面向对象编程思想完成学员管理系统的开发,具体如下:

  • 系统要求:学员数据存储在文件
  • 系统功能:添加学员、删除学员、修改学员信息、显示所有学员信息、保存学员信息及退出系统等功能

三、准备程序文件

3.1分析

  • 角色分析
  • 学员
  • 管理系统
  • 工作中一些注意事项
  • 为了方便维护代码,一般一个角色一个程序文件
  • 项目要有主程序入口,习惯为main.py

3.2创建程序文件

创建项目目录,例如:StudentManagerSystem

程序文件如下:

  • 程序入口文件:main.py
  • 学员文件:student.py
  • 管理系统文件:managerSystem.py

四、定义学员类(student.py)

4.1需求

  • 学员信息包含:姓名、性别、手机号;
  • 添加__str__魔法方法,方便查看学员对象信息

4.2程序代码

1. #!/usr/bin/env python
2. # -*- coding: UTF-8 -*-
3. """
4. @Project :StudentManagerSystem 
5. @File    :stuednt.py
6. @IDE     :PyCharm 
7. @Author  :咋
8. @Date    :2022/10/22 9:31 
9. """
10. class Stuednt(object):
11. def __init__(self,name,gender,tel):
12.         self.name = name
13.         self.gender = gender
14.         self.tel = tel
15. 
16. def __str__(self):
17. return f"{self.name},{self.gender}"

五、管理系统(managerSystem.py)

5.1需求

  • 存储数据的位置:文件(student.data)
  • 加载文件数据
  • 修改数据后保存到文件
  • 存储数据的形式:列表存储学院对象
  • 系统功能
  • 添加学员
  • 删除学员
  • 修改学员
  • 查询学员信息
  • 显示所有学员信息
  • 保存学员信息
  • 退出系统

5.2管理系统框架

5.2.1需求

系统功能循环使用,用户输入不同的功能序号执行不同的功能。

5.2.2步骤

  • 定义程序入口函数
  • 加载数据
  • 显示功能菜单
  • 用户输入功能序号
  • 根据用户输入的功能序号执行不同的功能
  • 定义系统功能函数,添加、删除学员等
1. class StudentManager(object):
2. def __init__(self):
3. # 存储数据所用的列表
4.         self.student_list = []
5. 
6. # 一. 程序入口函数,启动程序后执行的函数
7. def run(self):
8. # 1. 加载学员信息
9.         self.load_student()
10. 
11. while True:
12. # 2. 显示功能菜单
13.             self.show_menu()
14. 
15. # 3. 用户输入功能序号
16.             menu_num = int(input('请输入您需要的功能序号:'))
17. 
18. # 4 根据用户输入的功能序号执行不同的功能
19. if menu_num == 1:
20. # 添加学员
21.                 self.add_student()
22. elif menu_num == 2:
23. # 删除学员
24.                 self.del_student()
25. elif menu_num == 3:
26. # 修改学员信息
27.                 self.modify_student()
28. elif menu_num == 4:
29. # 查询学员信息
30.                 self.search_student()
31. elif menu_num == 5:
32. # 显示所有学员信息
33.                 self.show_student()
34. elif menu_num == 6:
35. # 保存学员信息
36.                 self.save_student()
37. elif menu_num == 7:
38. # 退出系统
39. break
40. 
41. # 二. 定义功能函数
42. # 2.1 显示功能菜单
43.     @staticmethod
44. def show_menu():
45. print('请选择如下功能-----------------')
46. print('1:添加学员')
47. print('2:删除学员')
48. print('3:修改学员信息')
49. print('4:查询学员信息')
50. print('5:显示所有学员信息')
51. print('6:保存学员信息')
52. print('7:退出系统')
53. 
54. # 2.2 添加学员
55. def add_student(self):
56. pass
57. 
58. # 2.3 删除学员
59. def del_student(self):
60. pass
61. 
62. # 2.4 修改学员信息
63. def modify_student(self):
64. pass
65. 
66. # 2.5 查询学员信息
67. def search_student(self):
68. pass
69. 
70. # 2.6 显示所有学员信息
71. def show_student(self):
72. pass
73. 
74. # 2.7 保存学员信息
75. def save_student(self):
76. pass
77. 
78. # 2.8 加载学员信息
79. def load_student(self):
80. pass

5.3各功能的实现

5.3.1添加学员功能

  • 需求:用户输入学员姓名、性别、手机号,将学员添加到系统
  • 步骤
  • 用户输入姓名、性别、手机号
  • 创建该学员对象
  • 将该学员对象添加到列表
  • 代码
1. # 添加学员函数内部需要创建学员对象,故先导入student模块
2. from student import *
3. 
4. 
5. class StudentManager(object):
6.         ......
7. 
8. # 2.2 添加学员
9. def add_student(self):
10. # 1. 用户输入姓名、性别、手机号
11.         name = input('请输入您的姓名:')
12.         gender = input('请输入您的性别:')
13.         tel = input('请输入您的手机号:')
14. 
15. # 2. 创建学员对象:先导入学员模块,再创建对象
16.         student = Student(name, gender, tel)
17. 
18. # 3. 将该学员对象添加到列表
19.         self.student_list.append(student)
20. 
21. # 打印信息
22. print(self.student_list)
23. print(student)

5.3.2删除学员功能

  • 需求:用户输入目标学员姓名,如果学员存在则删除该学员。
  • 步骤
  • 用户输入目标学员姓名
  • 遍历学员数据列表,如果用户输入的学员姓名存在则删除,否则则提示该学员不存在。
  • 代码
1. # 2.3 删除学员:删除指定姓名的学员
2. def del_student(self):
3. # 1. 用户输入目标学员姓名
4.     del_name = input('请输入要删除的学员姓名:')
5. 
6. # 2. 如果用户输入的目标学员存在则删除,否则提示学员不存在
7. for i in self.student_list:
8. if i.name == del_name:
9.             self.student_list.remove(i)
10. break
11. else:
12. print('查无此人!')
13. 
14. # 打印学员列表,验证删除功能
15. print(self.student_list)

5.3.3修改学员功能

  • 需求:用户输入目标学员姓名,如果学员存在则修改该学员信息。
  • 步骤
  • 用户输入目标学员姓名;
  • 遍历学员数据列表,如果用户输入的学员姓名存在则修改学员的姓名、性别、手机号数据,否则则提示该学员不存在。
  • 代码
1. # 2.4 修改学员信息
2. def modify_student(self):
3. # 1. 用户输入目标学员姓名
4.     modify_name = input('请输入要修改的学员的姓名:')
5. # 2. 如果用户输入的目标学员存在则修改姓名、性别、手机号等数据,否则提示学员不存在
6. for i in self.student_list:
7. if i.name == modify_name:
8.             i.name = input('请输入学员姓名:')
9.             i.gender = input('请输入学员性别:')
10.             i.tel = input('请输入学员手机号:')
11. print(f'修改该学员信息成功,姓名{i.name},性别{i.gender}, 手机号{i.tel}')
12. break
13. else:
14. print('查无此人!')

5.3.4查询学员功能

  • 需求:用户输入目标学员姓名,如果学员存在则打印该学员信息
  • 步骤
  • 用户输入目标学员姓名
  • 遍历学员数据列表,如果用户输入的学员姓名存在则打印学员信息,否则提示该学员不存在。
  • 代码
1. # 2.5 查询学员信息
2. def search_student(self):
3. # 1. 用户输入目标学员姓名
4.     search_name = input('请输入要查询的学员的姓名:')
5. 
6. # 2. 如果用户输入的目标学员存在,则打印学员信息,否则提示学员不存在
7. for i in self.student_list:
8. if i.name == search_name:
9. print(f'姓名{i.name},性别{i.gender}, 手机号{i.tel}')
10. break
11. else:
12. print('查无此人!')

5.3.5显示所有学员信息功能

  • 打印所有学员信息
  • 步骤
  • 遍历学员数据列表,打印所有学员信息
  • 代码
1. # 2.6 显示所有学员信息
2. def show_student(self):
3. print('姓名\t性别\t手机号')
4. for i in self.student_list:
5. print(f'{i.name}\t{i.gender}\t{i.tel}')

5.3.6保存学员信息功能

  • 需求:将修改后的学员数据保存到存储数据的文件。
  • 步骤
  • 打开文件
  • 文件写入数据
  • 关闭文件
  • 代码
1. # 2.7 保存学员信息
2. def save_student(self):
3. # 1. 打开文件
4.     f = open('student.data', 'w')
5. 
6. # 2. 文件写入学员数据
7. # 注意1:文件写入的数据不能是学员对象的内存地址,需要把学员数据转换成列表字典数据再做存储
8.     new_list = [i.__dict__ for i in self.student_list]
9. # [{'name': 'aa', 'gender': 'nv', 'tel': '111'}]
10. print(new_list)
11. 
12. # 注意2:文件内数据要求为字符串类型,故需要先转换数据类型为字符串才能文件写入数据
13.     f.write(str(new_list))
14. 
15. # 3. 关闭文件
16.     f.close()

5.3.7 加载学员信息功能

  • 需求:每次进入系统后,修改的数据是文件里面的数据
  • 步骤
  • 尝试"r"模式打开学员数据文件,如果文件不存在则以"w"模式打开文件
  • 如果文件存在则读取数据并存储数据
  • 读取数据
  • 转换数据类型为列表并转换列表内的字典为对象
  • 存储学员数据到学员列表
  • 关闭文件
  • 代码
1. # 2.8 加载学员信息
2. def load_student(self):
3. # 尝试以"r"模式打开数据文件,文件不存在则提示用户;文件存在(没有异常)则读取数据
4. try:
5.         f = open('student.data', 'r')
6. except:
7.         f = open('student.data', 'w')
8. else:
9. # 1. 读取数据
10.         data = f.read()
11. 
12. # 2. 文件中读取的数据都是字符串且字符串内部为字典数据,故需要转换数据类型再转换字典为对象后存储到学员列表
13.         new_list = eval(data)
14.         self.student_list = [Student(i['name'], i['gender'], i['tel']) for i in new_list]
15. finally:
16. # 3. 关闭文件
17.         f.close()

六、程序主函数(main.py)

1. # 1. 导入managerSystem模块
2. from managerSystem import *
3. 
4. 
5. # 2. 启动学员管理系统
6. if __name__ == '__main__':
7.     student_manager = StudentManager()
8. 
9.     student_manager.run()

七、完整代码

main.py:

1. from managerSystem import *
2. 
3. if __name__ == "__main__":
4.     student_manager = StudentManager()
5.     student_manager.run()

student.py:

1. #!/usr/bin/env python
2. # -*- coding: UTF-8 -*-
3. """
4. @Project :StudentManagerSystem 
5. @File    :student.py
6. @IDE     :PyCharm 
7. @Author  :咋
8. @Date    :2022/10/22 9:31 
9. """
10. class Student(object):
11. def __init__(self,name,gender,tel):
12.         self.name = name
13.         self.gender = gender
14.         self.tel = tel
15. 
16. def __str__(self):
17. return f"{self.name},{self.gender},{self.tel}"

managerSystem.py:

1. #!/usr/bin/env python
2. # -*- coding: UTF-8 -*-
3. """
4. @Project :StudentManagerSystem 
5. @File    :managerSystem.py
6. @IDE     :PyCharm 
7. @Author  :咋
8. @Date    :2022/10/22 9:32 
9. """
10. from student import *
11. class StudentManager(object):
12. def __init__(self):
13.         self.student_list = []
14. 
15. def run(self):
16.         self.load_student()
17. while True:
18.             self.show_menu()
19.             menu_num = int(input("请输入您需要的功能序号:"))
20. if menu_num == 1:
21.                 self.add_student()
22. elif menu_num == 2:
23.                 self.del_student()
24. elif menu_num == 3:
25.                 self.modify_student()
26. elif menu_num == 4:
27.                 self.search_student()
28. elif menu_num == 5:
29.                 self.show_student()
30. elif menu_num == 6:
31.                 self.save_student()
32. elif menu_num == 7:
33. break
34. else:
35. print("您输入的序号有误,请重新输入!")
36. 
37.     @staticmethod
38. def show_menu():
39. print("请选择如下功能:")
40. print("1.添加学员")
41. print("2.删除学员")
42. print("3.修改学员信息")
43. print("4.查询学员信息")
44. print("5.显示所有学员信息")
45. print("6.保存学员信息")
46. print("7.退出系统")
47. def add_student(self):
48.         name = input("请输入学员的姓名:")
49.         gender = input("请输入学员的性别:")
50.         tel = input("请输入学员的手机号")
51.         student = Student(name, gender, tel)
52.         self.student_list.append(student)
53. def del_student(self):
54.         del_name = input("请输入要删除的学员姓名:")
55. for i in self.student_list:
56. if i.name == del_name:
57.                 self.student_list.remove(i)
58. break
59. else:
60. print("查无此人!")
61. print(self.student_list)
62. 
63. def modify_student(self):
64.         modify_name = input("请输入学员姓名:")
65. for i in self.student_list:
66. if i.name == modify_name:
67.                 i.name = input("请输入更改之后的学员姓名:")
68.                 i.gender = input("请输入更改之后的学员性别:")
69.                 i.tel = input("请输入更改之后的学员手机号:")
70. print(f"修改该学员信息成功,姓名:{i.name},性别:{i.gender},手机号:{i.tel}")
71. break
72. else:
73. print("查无此人!")
74. 
75. def search_student(self):
76.         search_name = input("请输入您要查找的学员的姓名:")
77. for i in self.student_list:
78. if i.name == search_name:
79. print(f"姓名:{i.name},性别:{i.gender},手机号:{i.tel}")
80. break
81. else:
82. print("查无此人!")
83. 
84. def show_student(self):
85. print("姓名\t性别\t手机号")
86. for i in self.student_list:
87. print(f"{i.name}\t{i.gender}\t{i.tel}")
88. 
89. def save_student(self):
90.         f = open("student.data","w")
91.         new_list = [i.__dict__ for i in self.student_list]
92. print(new_list)
93.         f.write(str(new_list))
94.         f.close()
95. 
96. def load_student(self):
97. try:
98.             f = open("student.data","r")
99. except:
100.             f = open("student.data","w")
101. else:
102.             data = f.read()
103.             new_list = eval(data)
104.             self.student_list = [Student(i["name"], i["gender"], i["tel"]) for i in new_list]
105. finally:
106.             f.close()
107.

八、总结

  • 函数
  • 定义和调用
  • 参数的使用
  • 面向对象
  • 定义类
  • 创建对象
  • 定义和调用实例属性
  • 定义和调用实例方法
  • 数据类型
  • 列表
  • 增加删除数据
  • 列表推导式
  • 字典
  • 字符串
  • 文件操作
  • 打开文件
  • 读取或写入
  • 关闭文件

虽说这样的简单学生管理系统技术含量并不是很高,但自己做出来还是很有成就感的!如果之后在和Mysql数据关联,用GUI可视化,那么效果会更好哦!那都是后话了,现在我们已经能够自己去编写一个简易版本的学生管理系统,学会了底层代码逻辑及一些细节处理,收获还是很多的!

好啦,今天的分享就到这里啦!感兴趣的小伙伴欢迎评论区交流!

最后附上视频教程:python小项目之学生管理系统

以及一篇优秀markdown笔记:python小项目之学生管理系统笔记


相关文章
|
3天前
|
前端开发 搜索推荐 算法
中草药管理与推荐系统Python+Django网页界面+推荐算法+计算机课设系统+网站开发
中草药管理与推荐系统。本系统使用Python作为主要开发语言,前端使用HTML,CSS,BootStrap等技术和框架搭建前端界面,后端使用Django框架处理应用请求,使用Ajax等技术实现前后端的数据通信。实现了一个综合性的中草药管理与推荐平台。具体功能如下: - 系统分为普通用户和管理员两个角色 - 普通用户可以登录,注册、查看物品信息、收藏物品、发布评论、编辑个人信息、柱状图饼状图可视化物品信息、并依据用户注册时选择的标签进行推荐 和 根据用户对物品的评分 使用协同过滤推荐算法进行推荐 - 管理员可以在后台对用户和物品信息进行管理编辑
34 12
中草药管理与推荐系统Python+Django网页界面+推荐算法+计算机课设系统+网站开发
|
2天前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的摄影网上预约管理系统
基于Python+Vue开发的摄影网上预约管理系统(前后端分离),影楼婚纱摄影,这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的在线摄影预约管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
14 6
基于Python+Vue开发的摄影网上预约管理系统
|
1天前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的新闻管理系统
这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的新闻管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
12 4
基于Python+Vue开发的新闻管理系统
|
5天前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的酒店客房预订管理系统
基于Python+Vue开发的酒店客房预订管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的酒店客房预订管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
24 7
基于Python+Vue开发的酒店客房预订管理系统
|
3天前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的房产销售管理系统
基于Python+Vue开发的房产销售管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的房产销售管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
15 4
基于Python+Vue开发的房产销售管理系统
|
3天前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的美容预约管理系统
基于Python+Vue开发的美容预约管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的美容诊所预约管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
14 3
基于Python+Vue开发的美容预约管理系统
|
4天前
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现智能信用评分系统
使用Python实现智能信用评分系统
31 10
|
5天前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的蛋糕商城管理系统
该项目是基于Python+Vue开发的蛋糕商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的蛋糕商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
14 7
|
5天前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的农产品商城管理系统
该项目是基于Python+Vue开发的农产品商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的农产品商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
17 7
|
6天前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的体育用品商城管理系统
该项目是基于Python+Vue开发的体育用品商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的体育用品销售商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
17 7