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

331 阅读6分钟

image.png


👉博__主👈:米码收割机

👉技__能👈:C++/Python语言

👉公众号👈:测试开发自动化【获取源码+商业合作】

👉荣__誉👈:阿里云博客专家博主、51CTO技术博主

👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。


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


@TOC


一、设计要求

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


二、设计思路

类设计

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

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

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

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

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