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日

相关文章

  • IntelliJ IDEA 创建 Java 项目及创建 Java 文件并运行的详细步骤

    下面是关于“IntelliJ IDEA 创建 Java 项目及创建 Java 文件并运行的详细步骤”的完整攻略: 步骤一:创建新的Java项目 打开 IntelliJ IDEA,进入欢迎界面,点击 “Create New Project”。 确认左侧栏选择 “Java”,并输入项目的名称,可以任意取。然后点击 “Next”。 在弹出的窗口中选择 “Proje…

    Java 2023年5月20日
    00
  • java中字符串常见的方法及总结

    Java中字符串常见的方法及总结 在Java中,字符串(String)是一个非常常见的数据类型。在日常开发中,字符串的操作是必不可少的。下面我们来总结一下Java中字符串常用的方法。 字符串的创建 在Java中,有几种不同的方式来创建字符串。 直接赋值创建字符串 我们可以直接使用双引号来创建字符串,如下所示: String str1 = "Hell…

    Java 2023年5月26日
    00
  • 如何修改JSON字符串中的敏感信息

    如何修改JSON字符串中的敏感信息 在处理JSON数据时,有时我们需要修改敏感信息,如密码、私密令牌等,以保障数据的安全性。在这里我将讲解如何修改JSON字符串中的敏感信息的完整攻略。 方式一:手动替换 最简单直接的方法就是手动替换,通过查找和替换工具,将JSON字符串中的敏感信息手动修改。例如,需要修改以下JSON字符串中的密码信息: { "us…

    Java 2023年5月27日
    00
  • springData使用QueryDsl的示例代码

    让我来详细讲解一下“Spring Data 使用 Querydsl 的示例代码”的完整攻略。 简介 Querydsl 是一个基于 Java 类型化查询的框架,使得编写类型安全、易于理解的查询变得容易。 Spring Data 是 Spring 框架的一部分,通过提供抽象化的数据存储层来简化对数据访问的开发。Spring Data Querydsl 是 Spr…

    Java 2023年5月20日
    00
  • SpringBoot项目中的视图解析器问题(两种)

    在 Spring Boot 项目中,视图解析器是用于将逻辑视图名称解析为实际视图对象的组件。Spring Boot 支持两种类型的视图解析器:Thymeleaf 和 JSP。本文将介绍这两种视图解析器的使用方法和示例。 Thymeleaf 视图解析器 1. 什么是 Thymeleaf? Thymeleaf 是一种现代化的服务器端 Java 模板引擎,它可以处…

    Java 2023年5月18日
    00
  • eclipse如何clean? java项目进行clean的技巧

    要进行clean操作,首先需要在Eclipse的菜单栏中找到“Project”选项,并在弹出菜单中选择“Clean”。 接下来,在弹出的窗口中选择需要clean的项目,并勾选“Start a build immediately”,最后点击“OK”按钮即可开始执行clean操作。 clean操作的主要作用是清理项目中的临时文件和缓存,以提高系统的稳定性和性能。…

    Java 2023年5月26日
    00
  • 刺激!ChatGPT给我虚构了一本书?

    ChatGPT很强大,可以帮我们处理很多问题,但这些问题的答案的正确性您是否有考证过呢? 昨晚,DD就收到了一个有趣的反馈: 提问:有什么关于数据权限设计的资料推荐吗?ChatGPT居然介绍了一本根本不存在的书《数据权限设计与实现》,作者居然还是我… 那么你在使用ChatGPT的时候,有碰到过类似的问题​吗?在使用AI辅助工作的时候,你是否会对结果进一步…

    Java 2023年5月4日
    00
  • Dockerfile制作官方Tomcat镜像及镜像使用详解

    Dockerfile制作官方Tomcat镜像及镜像使用详解,需要分为两个部分来讲解:制作Tomcat镜像和使用Tomcat镜像。下面我将分别进行详细讲解。 制作Tomcat镜像 制作Tomcat镜像需要用到Dockerfile文件,具体步骤如下: 步骤一:选择合适的基础镜像 由于Tomcat是基于Java开发的应用服务器,因此可以选择Java镜像作为基础镜像…

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