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

请添加图片描述


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


【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. 控制台菜单

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

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

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


  • 28
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
1、把6个java文件保存到同一文件夹,例如C:\Student.然后将6个java文件分别编译生成相应的字节码(.class)文件,然后,用java 解释器运行主类:C:\Student\java StudentManager 2、使用jar.exe把一些文件压缩成JAR文件,来发布我们的应用程序。我们可以把本java应用程序中涉及到的类文件(*.class)压缩成一个JAR文件,例如StudentManager.jar。 首先,用记事本编写一个清单文件(Manifestfiles): Manifest-Version: 1.0 Main-class: StudentManager Created-By: 1.2.2(Sun Microsystems Inc.) 例如,清单文件命名为moon.mf,保存到C:\Student。 注意:在编写清单文件时,在“Manifest-Version:”和“1.0”之间,“Main-class:”和“StudentManager”之间,以及在“Created-By:”和“1.2.2(Sun Microsystems Inc.)”之间必须有且只有一个空格。 然后,如下生成JAR文件: C:\Student\jar cvfm StudentManager.jar moon.mf *.class 其中,参数C表示要生成一个新的JAR文件;f表示要生成的JAR文件的名字,m表示文件清单文件的名字,v表示生成详细输出到标准输出上。具体运行jar命令请查看 现在就可以将StudentManager.jar拷贝到任何一个安装了java运行环境(jdk版本号须高于1.2.2)的计算机上,只要鼠标双击StudentManager.jar文件就可以运行该java应用程序了。 注意在装了WinRAR解压缩软件的机子上可能不能运行,因此,在发布本系统时,还应该建立一个有如下内容的.bat文件(StudentManager.bat),用记事本编写: javaw -jar StudentManager.jar 保存即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

米码收割机

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值