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小项目之学生管理系统笔记


相关文章
|
1月前
|
机器学习/深度学习 数据可视化 搜索推荐
基于python的汽车数据可视化、推荐及预测系统
本研究围绕汽车数据可视化、推荐及预测系统展开,结合大数据与人工智能技术,旨在提升用户体验与市场竞争力。内容涵盖研究背景、意义、相关技术如 Python、ECharts、协同过滤及随机森林回归等,探讨如何挖掘汽车数据价值,实现个性化推荐与智能预测,为汽车行业智能化发展提供支持。
|
1月前
|
存储 安全 数据管理
基于python的在线考试系统
本系统基于Python开发,旨在通过信息化手段提升各行业数据管理效率。系统具备良好的安全性、稳定性及可扩展性,支持数据高效处理与决策支持,适用于教育、医疗、旅游等多个领域,助力办公自动化与科学化管理,显著提升工作效率并降低错误率。
|
1月前
|
数据可视化 搜索推荐 大数据
基于python大数据的北京旅游可视化及分析系统
本文深入探讨智慧旅游系统的背景、意义及研究现状,分析其在旅游业中的作用与发展潜力,介绍平台架构、技术创新、数据挖掘与服务优化等核心内容,并展示系统实现界面。
|
1月前
|
存储 监控 API
Python实战:跨平台电商数据聚合系统的技术实现
本文介绍如何通过标准化API调用协议,实现淘宝、京东、拼多多等电商平台的商品数据自动化采集、清洗与存储。内容涵盖技术架构设计、Python代码示例及高阶应用(如价格监控系统),提供可直接落地的技术方案,帮助开发者解决多平台数据同步难题。
|
18天前
|
异构计算 Python
ERROR: pip’s dependency resolver does not currently take into 报错-Python项目依赖冲突的解决方案-优雅草优雅草卓伊凡
ERROR: pip’s dependency resolver does not currently take into 报错-Python项目依赖冲突的解决方案-优雅草优雅草卓伊凡
152 1
|
1月前
|
数据采集 数据可视化 关系型数据库
基于python大数据的电影数据可视化分析系统
电影分析与可视化平台顺应电影产业数字化趋势,整合大数据处理、人工智能与Web技术,实现电影数据的采集、分析与可视化展示。平台支持票房、评分、观众行为等多维度分析,助力行业洞察与决策,同时提供互动界面,增强观众对电影文化的理解。技术上依托Python、MySQL、Flask、HTML等构建,融合数据采集与AI分析,提升电影行业的数据应用能力。
|
1月前
|
数据采集 数据可视化 安全
基于python大数据的天气可视化分析预测系统
本研究探讨基于Python的天气预报数据可视化系统,旨在提升天气数据获取、分析与展示的效率与准确性。通过网络爬虫技术快速抓取实时天气数据,并运用数据可视化技术直观呈现天气变化趋势,为公众出行、农业生产及灾害预警提供科学支持,具有重要的现实意义与应用价值。
|
1月前
|
存储 机器学习/深度学习 关系型数据库
基于python的个人财务记账系统
本研究探讨了基于Python的个人财务记账系统的设计与实现。随着经济快速发展,个人财务管理日益重要,传统手工记账方式效率低且易出错,而现有商业软件功能复杂、缺乏个性化。Python凭借其简洁语法和强大库支持,适用于开发高效、易用的记账系统。系统结合Pyecharts实现数据可视化,利用MySQL进行数据存储,具备自动分类、统计分析、财务报表生成等功能,帮助用户清晰掌握财务状况,合理规划收支,提升财务管理效率。研究具有重要的现实意义和应用前景。
|
1月前
|
存储 JavaScript 关系型数据库
基于python+vue的居家办公系统的设计与实现
本居家办公系统基于B/S架构,采用Python语言及Django框架开发,结合MySQL数据库和Vue.js前端技术,实现家具销售库存的科学化、规范化管理。系统旨在提升办公效率,降低数据错误率,优化信息管理流程,适应多行业信息化发展需求,具有良好的扩展性与实用性。
|
1月前
|
JavaScript 关系型数据库 MySQL
基于python+vue的贫困生资助系统
本文介绍了餐厅点餐系统的开发环境与核心技术,涵盖Python语言、MySQL数据库、Django框架及Vue.js前端技术,详细说明了各项技术的应用与优势,助力系统高效开发与稳定运行。

推荐镜像

更多
下一篇
oss教程