#渗透测试#SRC漏洞挖掘#Python自动化脚本的编写04之通过面向对象编程学生管理信息系统01

server/2024/11/13 11:01:38/

免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停止本文章阅读。                                                              #陇羽sec#

目录

系统概述

主要功能模块

类设计

数据库设计

系统实现

系统测试

系统部署

 系统设计

主函数的业务流程

 代码实现

源码如下

 主函数

 主函数调用

 菜单打印:

录入学生信息

 附源码:


系统概述

面向对象编程(OOP)学生管理信息系统是一个用于管理学生信息的软件系统。该系统通过面向对象的方法,将学生、课程、成绩等实体抽象为对象,并通过类和对象的关系来管理这些信息。

主要功能模块
  1. 学生信息管理

    • 添加学生信息

    • 修改学生信息

    • 删除学生信息

    • 查询学生信息

  2. 课程信息管理

    • 添加课程信息

    • 修改课程信息

    • 删除课程信息

    • 查询课程信息

  3. 成绩信息管理

    • 录入学生成绩

    • 修改学生成绩

    • 删除学生成绩

    • 查询学生成绩

类设计
  1. Student类

    • 属性:学号、姓名、性别、出生日期、联系方式

    • 方法:添加学生、修改学生信息、删除学生、查询学生信息

  2. Course类

    • 属性:课程编号、课程名称、学分、授课教师

    • 方法:添加课程、修改课程信息、删除课程、查询课程信息

  3. Grade类

    • 属性:学号、课程编号、成绩

    • 方法:录入成绩、修改成绩、删除成绩、查询成绩

数据库设计
  1. 学生表(Student)

    • 字段:学号(主键)、姓名、性别、出生日期、联系方式

  2. 课程表(Course)

    • 字段:课程编号(主键)、课程名称、学分、授课教师

  3. 成绩表(Grade)

    • 字段:学号(外键)、课程编号(外键)、成绩

系统实现
  1. 编程语言选择

    • 可以选择Java、Python、C++等支持面向对象编程的语言。

  2. 开发环境

    • 使用Eclipse、IntelliJ IDEA、Visual Studio等集成开发环境。

  3. 数据库连接

    • 使用JDBC、SQLAlchemy等数据库连接工具。

系统测试
  1. 单元测试

    • 对每个类的方法进行单元测试,确保功能正确。

  2. 集成测试

    • 测试各个模块之间的交互,确保系统整体功能正常。

  3. 用户测试

    • 邀请用户进行测试,收集反馈并进行改进。

系统部署
  1. 部署环境

    • 选择合适的操作系统和服务器,如Linux、Windows Server等。

  2. 部署工具

    • 使用Docker、Jenkins等工具进行自动化部署。

  3. 维护与更新

    • 定期进行系统维护,修复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退出程序
'''

源码如下
 主函数
python">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("无效的选择,请重新输入。")
 主函数调用
python">if __name__ == '__main__':main()
 菜单打印:
python">def menm():##打印 菜单menustr = """*******************************************==========欢迎使用学生成绩管理系统===========【1】录入学生信息【2】查找学生信息【3】删除学生信息【4】修改学生成绩【5】对学生成绩排序【6】统计学生信息【7】显示所有学生信息【8】########【0】退出管理系统*******************************************"""print(menustr)
录入学生信息

 附源码:
python">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() 


http://www.ppmy.cn/server/141249.html

相关文章

优选算法第六讲:模拟

优选算法第六讲&#xff1a;模拟 1.替换所有的问号2.提莫攻击3.Z字形变换4.外观数列5.数青蛙 1.替换所有的问号 链接: link class Solution { public:string modifyString(string s) {//遍历字符for(int i 0; i < s.size(); i){if(s[i] ?){for(char ch a; ch < z;…

Webserver(5.4)项目整体

目录 http_conn.hhttp_conn.cpplocker.hmain.cppthreadpool.h编译并创建线程池 http_conn.h #ifndef HTTPCONNECTION_H #define HTTPCONNEVTION_H #include<sys/epoll.h> #include<stdio.h> #include<stdlib.h> #include<unistd.h> #include<signa…

数据分析-41-时间序列预测之机器学习方法XGBoost

文章目录 1 时间序列1.1 时间序列特点1.1.1 原始信号1.1.2 趋势1.1.3 季节性和周期性1.1.4 噪声1.2 时间序列预测方法1.2.1 统计方法1.2.2 机器学习方法1.2.3 深度学习方法2 XGBoost2.1 模拟数据2.2 生成滞后特征2.3 切分训练集和测试集2.4 封装专用格式2.5 模型训练和预测3 参…

ubuntu 安装 mongodb 笔记记录

https://www.mongodb.com/try/download/community 以上是下载地址 查看系统 (base) duyichengduyicheng-computer:~$ cat /proc/version Linux version 6.8.0-48-generic (builddlcy02-amd64-010) (x86_64-linux-gnu-gcc-13 (Ubuntu 13.2.0-23ubuntu4) 13.2.0, GNU ld (GNU …

ZABBIX API获取监控服务器OS层信息

Zabbix 是一款强大的开源监控解决方案,能够通过其 API 接口自动化管理和获取监控数据。在这篇文章中,详细讲解如何通过 Zabbix API 批量获取服务器的系统名称、IP 地址及操作系统版本信息,并将数据保存到 CSV 文件中。本文适合对 Python 编程和 Zabbix 监控系统有一定基础的…

CelebV-Text——从文本生成人脸视频的数据集

概述 近年来&#xff0c;生成模型在根据文本生成和编辑视频方面受到了广泛关注。然而&#xff0c;由于缺乏合适的数据集&#xff0c;生成人脸视频领域仍然是一个挑战。特别是&#xff0c;生成的视频帧质量较低&#xff0c;与输入文本的相关性较弱。在本文中&#xff0c;我们通…

《Python使用sqlite3数据库》

《Python使用sqlite3数据库》 1、连接数据库2、创建游标3、执行SQL语句4、提交更改5、查询数据6、关闭连接 Python可以使用多种数据库&#xff0c;以下是一般步骤和示例&#xff1a; 1、连接数据库 首先要安装对应的数据库驱动。如使用MySQL数据库&#xff0c;要安装pymysql库…

如何安装和配置JDK17

教程目录 零、引言1、新特性概览2、性能优化3、安全性增强4、其他改进5、总结 一、下载安装二、环境配置三、测试验证 零、引言 JDK 17&#xff08;Java Development Kit 17&#xff09;是Java平台的一个重要版本&#xff0c;它带来了许多新特性和改进&#xff0c;进一步提升了…