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开发BeanUtils类解决实体对象间赋值

    Java开发中,BeanUtils类是一个常用的工具类,用于解决Java实体对象间的属性赋值问题。在实际开发中,我们通常需要根据一个实体对象的属性值赋值到另一个实体对象的属性中,BeanUtils类就可以快速实现这个过程。 下面是使用BeanUtils类解决实体对象间属性赋值的完整攻略: 1. 引入依赖 在项目中引入BeanUtils类需要先在pom文件中添…

    Java 2023年5月26日
    00
  • java连接mysql数据库乱码的解决方法

    以下是讲解“java连接mysql数据库乱码的解决方法”的完整攻略。 问题描述 在使用Java连接MySQL数据库时,有时会出现中文乱码的问题。如何解决这个问题呢?下面将会给出详细的解决方法。 解决方法 步骤一:指定编码方式 在连接MySQL数据库之前,需要指定编码方式。可以在连接数据库的URL中添加以下参数: jdbc:mysql://localhost/…

    Java 2023年5月19日
    00
  • Spring之详解bean的实例化

    Spring 之详解bean的实例化 在 Spring 中,Bean 就是应用程序中的对象,是应用程序的基本构成单元。Bean 由 Spring 容器管理,Spring 容器实例化、配置和组装这些 Bean。本文将详细讲解 Spring 中 Bean 的实例化。 Bean 的实例化方式 在 Spring 中,Bean 的实例化方式一般有三种: 构造器实例化 …

    Java 2023年5月26日
    00
  • 标记-清除算法的作用是什么?

    以下是关于标记-清除算法的详细讲解: 什么是标记-清除算法? 标记-清除算法是一种常见的垃圾回收算法,它的原理是在程序运行过程中,标记所有不再使用的内存空间,然后清除这些内存空间,从而回收内存空间。标记清除算法分为两个阶段:标记阶段和清除阶段。 标记阶段 在标记阶段,垃圾回收器会遍历所有的对象,标记所有不再使用的对象。标记的方式通常是在对象头中添加一个标记位…

    Java 2023年5月12日
    00
  • Java SpringBoot高级用法详解

    Java Spring Boot 高级用法详解 简介 Java Spring Boot 是一个基于Spring Framework的开源框架,它可以让我们快速开发Web应用程序。在基本使用之外,Spring Boot还有很多高级用法可以帮助开发人员更加灵活地应对各种复杂情况。 编写自定义starter 自定义starter可以让我们将一些通用代码打包成一个独…

    Java 2023年5月15日
    00
  • JAVA得到数组中最大值和最小值的简单实例

    当我们需要在一个数组中寻找最大值或最小值时,我们可以采用循环遍历数组的方式,比较每一个元素和当前最大或最小值的大小,然后更新最大或最小值。以下是用JAVA实现这个过程的简单实例。 准备工作 首先,我们需要准备一个需要查找的数组。我们可以在代码中手动定义一个数组,例如: int[] myArray = {5, 12, 8, 19, 3, 16}; 或者,也可以…

    Java 2023年5月26日
    00
  • Java基础知识之ByteArrayInputStream流的使用

    Java基础知识之ByteArrayInputStream流的使用 在Java中,InputStream是输入流的抽象类,定义了读取字节流的基本方法和抽象行为。其中,ByteArrayInputStream是InputStream的实现类之一。 ByteArrayInputStream流主要用于从一个字节数组中读取数据。下面将详细介绍ByteArrayInp…

    Java 2023年5月26日
    00
  • window7下Tomcat7.0安装配置方法

    Window7下Tomcat7.0安装配置方法 本文介绍如何在Windows 7下安装配置Tomcat 7.0。 1. 下载Tomcat 7.0 首先,从Tomcat官网下载地址(https://tomcat.apache.org/download-70.cgi)下载Tomcat 7.0二进制发行版。 2. 安装Tomcat 7.0 安装Tomcat 7.0…

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