#渗透测试#SRC漏洞挖掘#Python自动化脚本的编写04之通过面向对象编程学生管理信息系统01
免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停止本文章阅读。 #陇羽sec#
目录
系统概述
主要功能模块
类设计
数据库设计
系统实现
系统测试
系统部署
系统设计
主函数的业务流程
代码实现
源码如下
主函数
主函数调用
菜单打印:
录入学生信息
附源码:
系统概述
面向对象编程(OOP)学生管理信息系统是一个用于管理学生信息的软件系统。该系统通过面向对象的方法,将学生、课程、成绩等实体抽象为对象,并通过类和对象的关系来管理这些信息。
主要功能模块
学生信息管理
添加学生信息
修改学生信息
删除学生信息
查询学生信息
课程信息管理
添加课程信息
修改课程信息
删除课程信息
查询课程信息
成绩信息管理
录入学生成绩
修改学生成绩
删除学生成绩
查询学生成绩
类设计
Student类
属性:学号、姓名、性别、出生日期、联系方式
方法:添加学生、修改学生信息、删除学生、查询学生信息
Course类
属性:课程编号、课程名称、学分、授课教师
方法:添加课程、修改课程信息、删除课程、查询课程信息
Grade类
属性:学号、课程编号、成绩
方法:录入成绩、修改成绩、删除成绩、查询成绩
数据库设计
学生表(Student)
字段:学号(主键)、姓名、性别、出生日期、联系方式
课程表(Course)
字段:课程编号(主键)、课程名称、学分、授课教师
成绩表(Grade)
字段:学号(外键)、课程编号(外键)、成绩
系统实现
编程语言选择
可以选择Java、Python、C++等支持面向对象编程的语言。
开发环境
使用Eclipse、IntelliJ IDEA、Visual Studio等集成开发环境。
数据库连接
使用JDBC、SQLAlchemy等数据库连接工具。
系统测试
单元测试
对每个类的方法进行单元测试,确保功能正确。
集成测试
测试各个模块之间的交互,确保系统整体功能正常。
用户测试
邀请用户进行测试,收集反馈并进行改进。
系统部署
部署环境
选择合适的操作系统和服务器,如Linux、Windows Server等。
部署工具
使用Docker、Jenkins等工具进行自动化部署。
维护与更新
定期进行系统维护,修复bug,更新功能。
系统设计
主函数的业务流程
代码实现
''''
1: 技术实现分析
1.数据存储的结构设计student = [
{"name" : "张三" , 'yw' :88,'sx': 90 , 'yy':80}
{"name" : "李四" , 'yw' :88,'sx': 90 , 'yy':80}
]2.实现的技术
循环、列表、字典、函数、字符串、数值3.技术实现的步骤
1运行显示欢迎信息
2打印菜单信息
3用户输入选择的功能
4判断用户的选择,进行相关的操作
添加,删除,查找,显示所有的学生
1,用户输入
#请输入学号
###判断程序是否退出
( 2-4步骤,循环执行)5按平均分排列
6显示学生成绩
7退出程序
'''
源码如下
主函数
def main():
while True:
menm()
n = int(input("请选择: "))
if n in [0, 1, 2, 3, 4, 5, 6, 7, 8]:
if n == 0:
an = input("您确定退出系统吗?y/n: ")
if an.lower() == 'y':
print('谢谢使用!!!')
break # 退出系统
else:
continue
else:
print(f"您选择了操作 {n},请继续其他操作。")
else:
print("无效的选择,请重新输入。")
主函数调用
if __name__ == '__main__':
main()
菜单打印:
def menm():
##打印 菜单
menustr = """
*******************************************
==========欢迎使用学生成绩管理系统===========
【1】录入学生信息
【2】查找学生信息
【3】删除学生信息
【4】修改学生成绩
【5】对学生成绩排序
【6】统计学生信息
【7】显示所有学生信息
【8】########
【0】退出管理系统
*******************************************
"""
print(menustr)
录入学生信息
附源码:
import json
import os
class StudentInfoManager:
"""学生信息管理系统"""
def __init__(self):
self.students = []
self.load_data()
@staticmethod
def print_menu():
"""打印菜单"""
menustr = """
*******************************************
==========欢迎使用学生成绩管理系统===========
【1】录入学生信息
【2】查找学生信息
【3】删除学生信息
【4】修改学生成绩
【5】对学生成绩排序
【6】统计学生信息
【7】显示所有学生信息
【8】##########
【0】退出管理系统
*******************************************
"""
print(menustr)
def check_stu_id(self, stu_id):
"""检验学号是否重复"""
for student in self.students:
if student['stu_id'] == stu_id:
return True
return False
def add_students(self):
"""添加学生信息"""
print("*****添加学生信息******")
stu = {}
while True:
stu['stu_id'] = input("请输入学生学号:")
if self.check_stu_id(stu['stu_id']):
print("学号重复,请重新输入:")
else:
break
stu['stu_name'] = input("请输入学生姓名:")
stu['stu_yw'] = self.validate_score(" 请输入语文成绩:")
stu['stu_sx'] = self.validate_score(" 请输入数学成绩:")
stu['stu_yy'] = self.validate_score(" 请输入英语成绩:")
self.students.append(stu)
print(f"添加成功!学生信息为:{stu}")
def delete_students(self):
"""删除学生信息"""
print('*****删除操作******')
while True:
stu_id = input("请输入要删除的学生号:")
for student in self.students:
if student['stu_id'] == stu_id:
self.students.remove(student)
print(f"学生{stu_id}的信息已删除。")
return
print("未找到该学号的学生,请重新输入。")
def validate_score(self, subject):
"""验证成绩有效性"""
while True:
score = input(subject)
try:
score = float(score)
if 0 <= score <= 100:
return score
else:
print("成绩超出范围,请输入0到100之间的数字。")
except ValueError:
print("输入无效,请输入一个数字。")
def load_data(self):
"""加载数据"""
if os.path.exists('students.json'):
with open('students.json', 'r', encoding='utf-8') as f:
self.students = json.load(f)
else:
self.students = []
def save_data(self):
"""保存数据"""
with open('students.json', 'w', encoding='utf-8') as f:
json.dump(self.students, f, ensure_ascii=False, indent=4)
def find_students(self):
"""查找学生信息"""
stu_id = input("请输入要查找的学生学号:")
for student in self.students:
if student['stu_id'] == stu_id:
print(f"找到学生信息:{student}")
return
print("未找到该学号的学生。")
def modify_scores(self):
"""修改学生成绩"""
stu_id = input("请输入要修改成绩的学生学号:")
for student in self.students:
if student['stu_id'] == stu_id:
student['stu_yw'] = self.validate_score(" 请输入新的语文成绩:")
student['stu_sx'] = self.validate_score(" 请输入新的数学成绩:")
student['stu_yy'] = self.validate_score(" 请输入新的英语成绩:")
print(f"学生成绩已更新:{student}")
return
print("未找到该学号的学生。")
def sort_scores(self):
"""对学生成绩排序"""
sort_key = input("请选择排序依据(yw:语文,sx:数学,yy:英语):")
if sort_key not in ['yw', 'sx', 'yy']:
print("输入有误,请输入'yw','sx'或'yy'。")
return
self.students.sort(key=lambda x: x[f'stu_{sort_key}'], reverse=True)
print("排序完成。")
def statistics_info(self):
"""统计学生信息"""
num_students = len(self.students)
total_scores = {
'yw': sum(student['stu_yw'] for student in self.students),
'sx': sum(student['stu_sx'] for student in self.students),
'yy': sum(student['stu_yy'] for student in self.students),
}
avg_scores = {key: value / num_students for key, value in total_scores.items()}
print(f"学生总数:{num_students}")
print(f"各科总成绩:{total_scores}")
print(f"各科平均成绩:{avg_scores}")
def display_all_students(self):
"""显示所有学生信息"""
for student in self.students:
print(student)
def run(self):
"""运行管理系统"""
while True:
self.print_menu()
choice = input("请输入您的选择:")
if choice == '1':
self.add_students()
elif choice == '2':
self.find_students()
elif choice == '3':
self.delete_students()
elif choice == '4':
self.modify_scores()
elif choice == '5':
self.sort_scores()
elif choice == '6':
self.statistics_info()
elif choice == '7':
self.display_all_students()
elif choice == '0':
self.save_data()
print("退出管理系统。")
break
else:
print("输入有误,请重新输入。")
if __name__ == "__main__":
manager = StudentInfoManager()
manager.run()