java学生成绩管理系统设计与实现

Java学生成绩管理系统设计与实现

目标

本篇攻略将介绍如何设计并实现一个简单的Java学生成绩管理系统。该系统需要具有以下功能:

  1. 添加学生信息;
  2. 添加学生的成绩信息;
  3. 根据学生姓名或学号查找学生信息及成绩信息;
  4. 计算学生的总分、平均分及排名。

设计思路

  1. 创建学生类,包括姓名、学号、年级等基本信息;
  2. 创建成绩类,包括学生信息、科目信息、成绩等内容;
  3. 通过map数据结构存储学生信息及成绩信息,以学生姓名或学号作为key;
  4. 实现添加学生信息及成绩信息的方法;
  5. 实现根据学生姓名或学号查找学生信息及成绩信息的方法;
  6. 实现计算学生的总分、平均分及排名的方法。

具体实现

学生类的实现

public class Student {
    private String name;
    private String studentId;
    private String grade;

    public Student(String name, String studentId, String grade) {
        this.name = name;
        this.studentId = studentId;
        this.grade = grade;
    }

    // getter and setter
    ...
}

成绩类的实现

public class Score {
    private Student student;
    private String subject;
    private double score;

    public Score(Student student, String subject, double score) {
        this.student = student;
        this.subject = subject;
        this.score = score;
    }

    // getter and setter
    ...
}

学生信息及成绩信息的存储方式

使用HashMap存储所有学生信息及成绩信息。

private Map<String, List<Score>> studentScoresMap = new HashMap<>();

添加学生信息的方法

public void addStudent(String name, String studentId, String grade) {
    Student student = new Student(name, studentId, grade);
    List<Score> scores = new ArrayList<>();
    studentScoresMap.put(studentId, scores);
}

添加成绩信息的方法

public void addScore(String studentId, String subject, double score) {
    Student student = getStudentById(studentId);
    Score scoreObj = new Score(student, subject, score);
    List<Score> scores = studentScoresMap.get(studentId);
    scores.add(scoreObj);
}

查找学生信息及成绩信息的方法

public List<Score> findScore(String studentId) {
    return studentScoresMap.get(studentId);
}

计算学生的总分、平均分及排名的方法

public void calcStudentScore() {
    List<StudentTotalScore> studentScoreList = new ArrayList<>();
    for (Map.Entry<String, List<Score>> entry : studentScoresMap.entrySet()) {
        double totalScore = 0.0;
        String studentId = entry.getKey();
        List<Score> scores = entry.getValue();
        for (Score score : scores) {
            totalScore += score.getScore();
        }
        StudentTotalScore studentScore = new StudentTotalScore(studentId, totalScore);
        studentScoreList.add(studentScore);
    }
    Collections.sort(studentScoreList, new Comparator<StudentTotalScore>() {
        @Override
        public int compare(StudentTotalScore o1, StudentTotalScore o2) {
            if (o1.getTotalScore() > o2.getTotalScore()) {
                return -1;
            } else if (o1.getTotalScore() == o2.getTotalScore()) {
                return 0;
            }
            return 1;
        }
    });
    for (int i = 0; i < studentScoreList.size(); i++) {
        StudentTotalScore studentScore = studentScoreList.get(i);
        studentScore.setRank(i + 1);
    }
}

示例说明

示例1:添加学生信息及成绩信息

StudentScoreManager manager = new StudentScoreManager();
manager.addStudent("Tom", "202101", "Grade 1");
manager.addStudent("Jerry", "202102", "Grade 1");
manager.addScore("202101", "Java", 90.0);
manager.addScore("202101", "Math", 80.0);
manager.addScore("202102", "Java", 95.0);
manager.addScore("202102", "Math", 85.0);
manager.calcStudentScore();

示例2:查找学生信息及成绩信息

List<Score> scores = manager.findScore("202101");
for (Score score : scores) {
    System.out.println(score.getSubject() + ": " + score.getScore());
}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java学生成绩管理系统设计与实现 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • Java全局异常处理器实现过程解析

    Java全局异常处理器实现过程解析 在Java开发中,异常处理是一个重要的话题。在程序运行时,如果发生异常,则需要对其进行处理以避免程序崩溃。为了方便管理和处理程序中的异常,开发人员可以通过实现全局异常处理器来捕获并处理程序中的异常。以下是Java全局异常处理器实现过程的详细攻略。 1. 实现ExceptionHandler接口 Java提供了Excepti…

    Java 2023年5月27日
    00
  • java开发https请求ssl不受信任问题解决方法

    Java开发HTTPS请求SSL不受信任问题解决方法 在进行Java开发时,我们经常会涉及到请求HTTPS接口的情况。但是,在请求HTTPS接口时,我们有时会遇到SSL证书不受信任的问题,这会导致我们无法正确进行HTTPS请求。本文将详细讲解如何解决Java开发中HTTPS请求SSL不受信任的问题。 问题描述 在使用Java进行HTTPS请求时,如果SSL证…

    Java 2023年6月15日
    00
  • 浅谈Maven的安装及修改为阿里云下载依赖

    下面是详细的“浅谈Maven的安装及修改为阿里云下载依赖”的完整攻略。 一、Maven的安装 下载Maven:打开官方网站 https://maven.apache.org/download.cgi 找到最新的 Maven 安装包,选择apache-maven-x.x.x-bin.zip下载。 安装Maven:将下载的 Maven 安装包解压到指定目录下(如…

    Java 2023年5月20日
    00
  • JavaSwing基础之Layout布局相关知识详解

    JavaSwing是用于开发桌面应用程序的一套GUI工具包,其中Layout布局是Swing中常用的一种布局方式。此篇文章将详细讲解Layout布局的相关知识,为JavaSwing的使用提供帮助。 布局方式 Swing提供了多种布局方式,其中常见的有FlowLayout、BorderLayout、GridLayout、GridBagLayout、BoxLay…

    Java 2023年5月26日
    00
  • java中main函数你知道多少

    下面是关于“java中main函数”的详细讲解攻略: 什么是main函数 在Java语言中,main函数是一个特殊的函数,是程序的入口,也是程序开始执行的地方。每个Java程序都需要有一个main函数,没有main函数的程序是无法运行的。main函数的定义如下: public static void main(String[] args) { // 程序代码…

    Java 2023年5月23日
    00
  • 使用spring工厂读取property配置文件示例代码

    首先,需要创建一个property配置文件,我们以”config.properties”为例,文件内容如下: database.url=jdbc:mysql://localhost:3306/mydatabase database.username=root database.password=123456 接下来,我们需要在spring的配置文件中引入该p…

    Java 2023年5月23日
    00
  • Springboot整合多数据源代码示例详解

    下面我将为您详细讲解“Springboot整合多数据源代码示例详解”的完整攻略。 一、Spring Boot整合多数据源的背景 在实际的开发过程中,经常会遇到需要使用多个数据源的情况,比如我们的应用程序需要连接多个数据库,或者需要连接主从分离的数据库等等,这种情况下我们就需要使用 Spring Boot 来整合多个数据源,以方便我们的应用程序能够更好地管理和…

    Java 2023年5月20日
    00
  • Java源码跟踪阅读技巧【值得收藏】

    Java源码跟踪阅读技巧攻略 介绍 当我们学习和使用Java编程语言时,不可避免地需要阅读一些Java类库或框架的源代码。源代码阅读是提高我们自身编程能力和深入理解设计思路的重要手段。本攻略将分享几个常用的Java源码跟踪阅读技巧,帮助我们更好地阅读和理解Java源代码。 技巧一:使用IDE调试工具 大部分的Java IDE都提供了方便的代码调试工具,可以让…

    Java 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部