【Java】Java学生信息管理系统(源码)【独一无二】

news2025/1/24 14:42:59

请添加图片描述


👉博__主👈:米码收割机
👉技__能👈:C++/Python语言
👉公众号👈:测试开发自动化【获取源码+商业合作】
👉荣__誉👈:阿里云博客专家博主、51CTO技术博主
👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。


【Java】Java学生信息管理系统(源码)【独一无二】


目录

  • 【Java】Java学生信息管理系统(源码)【独一无二】
  • 一、设计要求
  • 二、设计思路
        • 类设计
        • 主要方法和功能
        • 控制台菜单
        • 文件操作
      • 代码块作用分析


一、设计要求

本系统旨在提供一个学生成绩管理系统,允许用户通过控制台菜单执行各种操作,包括添加、删除、修改和查询学生信息,按科目或总成绩排序学生,统计课程成绩的最高分和最低分,以及计算某班级某课程的优秀率和不及格率。


二、设计思路

类设计

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 学管 ” 获取,拿来即用。👈👈👈

  1. StudentManagementSystem 类

    • 负责管理学生信息,包含学生数据的加载、保存、添加、删除、修改、查询和统计等功能。
  2. Student 类

    • 代表学生对象,包含学生的基本信息(学号、姓名、班级、语文成绩、数学成绩和英语成绩),以及计算总成绩和平均成绩的方法。
主要方法和功能
  1. StudentManagementSystem 类
    • StudentManagementSystem(): 构造函数,初始化学生列表并从文件加载学生信息。
    • loadStudentsFromFile(String filename): 从指定文件加载学生信息并存入学生列表。
    • saveStudentsToFile(String filename): 将学生列表中的信息保存到指定文件。
    • addStudent(Student student): 添加新的学生信息到学生列表并保存到文件。
    • deleteStudent(String studentId): 根据学生学号删除学生信息并保存到文件。
    • updateStudent(Student updatedStudent): 根据学生学号更新学生信息并保存到文件。
    • searchStudents(String keyword): 根据关键字(姓名、学号或班级)查询学生信息。
    • sortStudentsBySubject(String subject): 根据指定科目(语文、数学或英语)的成绩对学生进行排序。
    • sortStudentsByTotalScore(): 根据学生的总成绩对学生进行排序。
    • sortStudentsByAverageScore(): 根据学生的平均成绩对学生进行排序。
    • printCourseStatistics(String course): 打印指定课程的最高分和最低分的学生信息。
    • printClassCourseRates(String className, String course): 打印指定班级在某课程的优秀率和不及格率。

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 学管 ” 获取,拿来即用。👈👈👈

  1. Student 类
    • Student(String id, String name, String className, int chineseScore, int mathScore, int englishScore): 构造函数,初始化学生信息。
    • getId(), getName(), getClassName(), getChineseScore(), getMathScore(), getEnglishScore(), getTotalScore(), getAverageScore(): 各种 getter 方法,用于获取学生的信息。
    • toString(): 将学生信息转换为字符串格式,便于存储和输出。
控制台菜单
  • 主方法 main(String[] args):
    • 提供一个控制台菜单,用户可以选择不同的操作(添加、删除、修改、查询、排序和统计)。
    • 使用 Scanner 类读取用户输入,根据输入调用相应的方法执行操作。
    • 使用 while (true) 循环保持菜单运行,直到用户选择退出。

在这里插入图片描述

文件操作
  • 学生信息存储在一个文本文件 students.txt 中,每行代表一个学生,信息以逗号分隔。
  • loadStudentsFromFilesaveStudentsToFile 方法分别负责从文件加载学生信息和将学生信息保存到文件。

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 学管 ” 获取,拿来即用。👈👈👈

代码块作用分析

  1. StudentManagementSystem 构造函数

    • 初始化学生列表,并调用 loadStudentsFromFile 方法从文件加载学生信息。
  2. loadStudentsFromFile 方法

    • 从指定的文本文件读取学生信息,将其转换为 Student 对象并添加到学生列表中。

          // 从文件加载学生信息
          private void loadStudentsFromFile(String filename) {
              try (BufferedReader reader = new BufferedReader(new FileReader(filename))) {
                  String line;
                  while ((line = reader.readLine()) != null) {
                      String[] parts = line.split(",");
                      students.add(new Student(parts[0], parts[1], parts[2], Integer.parseInt(parts[3]), Integer.parseInt(parts[4]), Integer.parseInt(parts[5])));
                  }
              } catch (IOException e) {
                  e.printStackTrace();
              }
          }
      

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 学管 ” 获取,拿来即用。👈👈👈

  1. saveStudentsToFile 方法

    • 将学生列表中的每个 Student 对象转换为字符串格式,并写入到指定的文本文件中。
  2. addStudent 方法

    • 添加新的学生信息到学生列表中,并保存更新后的列表到文件。

          // 添加学生信息
          public void addStudent(Student student) {
              students.add(student);
              saveStudentsToFile("students.txt");
          }
      
      

在这里插入图片描述

  1. deleteStudent 方法
    • 根据学生学号从学生列表中删除相应的学生,并保存更新后的列表到文件。

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 学管 ” 获取,拿来即用。👈👈👈

  1. updateStudent 方法

    • 根据学生学号更新学生信息,并保存更新后的列表到文件。
      在这里插入图片描述
  2. searchStudents 方法

    • 根据关键字在学生列表中查询匹配的学生信息,并返回查询结果。

          // 修改学生信息
          public void updateStudent(Student updatedStudent) {
              for (int i = 0; i < students.size(); i++) {
                  if (students.get(i).getId().equals(updatedStudent.getId())) {
                      students.set(i, updatedStudent);
                      break;
                  }
              }
              saveStudentsToFile("students.txt");
          }
      

在这里插入图片描述

  1. sortStudentsBySubject 方法
    • 根据指定科目的成绩对学生进行排序,并返回排序后的列表。

在这里插入图片描述

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 学管 ” 获取,拿来即用。👈👈👈

  1. sortStudentsByTotalScore 方法
    • 根据学生的总成绩对学生进行排序,并返回排序后的列表。

在这里插入图片描述

  1. sortStudentsByAverageScore 方法
    • 根据学生的平均成绩对学生进行排序,并返回排序后的列表。
          // 根据总成绩排序
          public List<Student> sortStudentsByTotalScore() {
              return students.stream()
                      .sorted(Comparator.comparingInt(Student::getTotalScore).reversed())
                      .collect(Collectors.toList());
          }
      

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 学管 ” 获取,拿来即用。👈👈👈

  1. printCourseStatistics 方法
    • 打印指定课程的最高分和最低分的学生信息。

在这里插入图片描述

  1. printClassCourseRates 方法

    • 打印指定班级在某课程的优秀率和不及格率。
          public void printCourseStatistics(String course) {
              Optional<Student> maxStudent, minStudent;
              switch (course) {
                  case "语文":
                      maxStudent = students.stream().max(Comparator.comparingInt(Student::getChineseScore));
                      minStudent = students.stream().min(Comparator.comparingInt(Student::getChineseScore));
                      break;
                  case "数学":
                      maxStudent = students.stream().max(Comparator.comparingInt(Student::getMathScore));
                      minStudent = students.stream().min(Comparator.comparingInt(Student::getMathScore));
                      break;
                  case "英语":
                      maxStudent = students.stream().max(Comparator.comparingInt(Student::getEnglishScore));
                      minStudent = students.stream().min(Comparator.comparingInt(Student::getEnglishScore));
                      break;
                  default:
                      return;
              }
              if (maxStudent.isPresent() && minStudent.isPresent()) {
                  System.out.println("最高分学生: " + maxStudent.get());
                  System.out.println("最低分学生: " + minStudent.get());
              }
          }
      
      
  2. 控制台菜单

    • 提供用户交互界面,允许用户通过选择菜单项执行不同的操作。

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 学管 ” 获取,拿来即用。👈👈👈

本学生成绩管理系统通过文件读写、集合操作和控制台交互,实现了学生信息的管理和查询功能。通过合理的类设计和方法分工,代码结构清晰,功能实现明确,方便后续的扩展和维护。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1977865.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot项目详细整合邮箱服务

springboot 版本&#xff1a;2.6.3 Java版本&#xff1a;1.8 一、应用场景 用户注册发送激活邮箱 注册登录时用邮箱接收验证码 用户密码重置 向用户发送相关系统消息 … 二、添加依赖 <!-- 邮箱 --> <dependency><groupId>org.springframework.b…

【单片机毕业设计选题24098】-校园智能绿植浇灌系统

系统功能: 1. 手机通过蓝牙模块显示系统信息 2. OLED模块显示系统信息 3. DHT11采集温湿度 4. 继电器模块控制水泵 5. 按键调节湿度设定阈值 6. 土壤湿度传感器模块采集土壤湿度 7. 光照传感器采集光照值 系统分为手动和自动模式&#xff0c;上电默认为自动模式&#x…

scratch魔法门 2024年6月scratch四级 中国电子学会图形化编程 少儿编程等级考试四级真题和答案解析

目录 scratch魔法门 一、题目要求 1、准备工作 2、功能实现 二、案例分析 1、角色分析 2、背景分析 3、前期准备 三、解题思路 1、思路分析 2、详细过程 四、程序编写 五、考点分析 六、推荐资料 1、入门基础 2、蓝桥杯比赛 3、考级资料 4、视频课程 5、pyt…

2024/8/4 维高-STD60N驱动器(伺服)---客户反馈:电机异响

步进电机 MHS1A86-60B85B &#xff0c;额定电流6A 步骤一&#xff1a;设置额定电流 std60n驱动器拔码全部为off&#xff08;后台设置&#xff09;&#xff0c;伺服后台连上后设置h00-11按电机铭牌进行 设置下额定电流 步骤二&#xff1a;最好设置峰值电流一…

Jenkins未授权访问漏洞

Jenkins未授权访问漏洞 默认情况下 Jenkins面板中用户可以选择执行脚本界面来操作一些系统层命令&#xff0c;攻击者可通过未授权访问漏洞或者暴力破解用户密码等进入后台管理服务&#xff0c;通过脚本执行界面从而获取服务器权限。 漏洞复现 步骤一:使用以下fofa语法进行产品…

GUI:Tkinter(一)

Tkinter文档 一&#xff0c;Tkinter基本流程 1. 创建应用程序主窗口对象 from tkinter import * window Tk() window.mainloop()#开启主循环 2. 在主窗口中&#xff0c;添加各种可视化组件&#xff0c;比如&#xff1a;按钮&#xff08;Button&#xff09;、文本框&#x…

Java中Lambda表达式的使用

Lambda的背景 Lambda表达式是Java SE 8中一个重要的新特性。lambda表达式允许你通过表达式来代替功能接口。 lambda表达式就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体(body,可以是一个表达式或一个代码块)。 Lambda 表达式&#xff08;Lambda expressio…

用户看广告获取密码访问网页内容流量主模式源码

简介&#xff1a; 全开源付费进群流量主模式&#xff0c;用户看广告获取密码访问网页内容&#xff0c;网站生成内容&#xff0c;用户需要浏览内容跳转至小程序&#xff0c;观看广告后获取密码&#xff0c;输入密码查看网页内容。 与之前得9.9付费进群区别就是内容体现在了网页…

【信创】国产操作系统上使用的万能打印驱动 _ 统信 _ 麒麟 _ 中科方德

往期好文&#xff1a;统信UOS服务器离线安装postgresql数据库 Hello&#xff0c;大家好&#xff01;今天给大家带来一款在信创终端操作系统上使用的万能打印驱动——瑞印万能打印驱动。这款驱动程序是国产操作系统下的通用打印驱动程序&#xff0c;具有很高的兼容性和广泛的功能…

图论:1857. 有向图中最大颜色值(拓扑排序+动态规划)

文章目录 1.问题分析2.代码解析2.1 代码步骤1. 初始化数据结构2. 构建图和入度数组3. 初始化队列4. 拓扑排序和动态规划5. 检查是否存在环并返回结果 3. 问题扩展1. 最长路径问题&#xff08;DAG&#xff09;2. 最短路径问题&#xff08;DAG&#xff09;3. 最大路径和问题4. 路…

科普文:微服务之Spring Cloud 客户端负载均衡组件LoadBalancer替代Ribbon

概叙 负载均衡 负载均衡的两个基本点&#xff1a; 选择哪个服务器来处理客户端请求。将客户端请求转发出去。 一个核心原理&#xff1a;通过硬件或软件的方式维护一个服务列表清单。当用户发送请求时&#xff0c;会将请求发送给负载均衡器&#xff0c;然后根据负载均衡算法从…

中仕公考:2024年重庆市属事业单位招聘公告

本次公开招聘市属事业单位工作人员218名&#xff0c;报考者可登录重庆市人力资源和社会保障局官网“事业单位公开招聘”栏查阅。 (一)可报考的条件 1.具有中华人民共和国国籍; 2.遵守中华人民共和国宪法和法律&#xff0c;具有良好的品行; 3.身体健康&#xff0c;符合事业单…

OGG同步目标端中文乱码处理

现象说明&#xff1a; 源端字符集&#xff1a;AMERICAN_AMERICA.ZHS16GBK 目标端字符集&#xff1a;AMERICAN_AMERICA.AL32UTF8 源端同步过来的数据显示中文乱码。 查询数据库表中含有乱码的字段&#xff1a; select * from xx.xxxx a where to_char(a.crtopetime,yyyy-mm-…

一些不被人熟知,但又很好用的HTML属性

HTML&#xff08;超文本标记语言&#xff09;具有多种属性&#xff0c;可用于增强我们的网页的结构和功能。 下面我就给大家介绍一下&#xff0c;一些很好用的HTML属性&#xff0c;但是不被人熟知的HTML属性 contenteditable&#xff1a; 这个属性使我们的元素变的可编辑。用…

谷粒商城实战笔记-126-全文检索-ElasticSearch-整合-测试保存

文章目录 一&#xff0c;谷粒商城实战笔记-126-全文检索-ElasticSearch-整合-测试保存1&#xff0c;在Elasticsearch的配置类中增加通用设置2&#xff0c;索引数据3&#xff0c;验证 一&#xff0c;谷粒商城实战笔记-126-全文检索-ElasticSearch-整合-测试保存 1&#xff0c;在…

环境搭建:全面详尽的 MongoDB Shell MongoDB Server介绍、安装、验证与配置指南(以 Windows 系统为主)

环境搭建&#xff1a;全面详尽的 MongoDB Shell & MongoDB Server介绍、安装、验证与配置指南&#xff08;以 Windows 系统为主&#xff09; MongoDB 是一个基于文档的 NoSQL 数据库&#xff0c;以其高性能、灵活性和可扩展性而受到广泛欢迎。本文将带您完成 MongoDB 的安装…

数据结构第十讲:二叉树OJ题

数据结构第十讲&#xff1a;二叉树OJ题 1.单值二叉树2.相同的树3.对称二叉树4. 另一棵树的子树5.二叉树的前序遍历6.二叉树的中序遍历7.二叉树的后序遍历8.二叉树的构建及其遍历9.二叉树选择题9.1二叉树性质19.2二叉树性质29.3二叉树性质三9.4选择题 1.单值二叉树 链接: OJ题链…

Java-----二叉树

1.树型结构 1.1概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看 起来像一棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝下的。它具有以下的特点&#xff1a; 1.有…

本地文件上传

java本地文件上传 1、FileController /*** author: yc* des: 文件接口* date: 2024/8/4 11:11*/ RestController RequestMapping("/file") public class FileController {Resourceprivate FileService fileService;PostMapping("/upload")public Respon…

智能交通(6)——DQN代码复现

伪代码 如算法描述&#xff0c;dqn即深度q网络和记忆池 初始化记忆池和可以容纳的数量N 动作价值函数Q使用随机权重进行初始化。 目标动作价值函数Q′也使用相同的权重进行初始化&#xff0c;即Q′Q。 循环训练M局 初始化和预处理观察到的状态 每局循环训练T步 采用e的概…