学生成绩管理系统(Java)

news2024/11/27 20:49:35

开发环境: Windows 11 IDEA 2021.3.3


需求:


package com.it.neu;

import java.util.ArrayList;
import java.util.Scanner;

import static java.time.Clock.system;

class Student {      //创建学生类
    private String Stu_name;
    private String Stu_id;

    public Student(String id, String name) {
        this.Stu_id = id;
        this.Stu_name = name;
    }

    public String getStu_name() {
        return Stu_name;
    }

    public void setStu_name(String stu_name) {
        Stu_name = stu_name;
    }

    public String getStu_id() {
        return Stu_id;
    }

    public void setStu_id(String stu_id) {
        Stu_id = stu_id;
    }
}

class Course {       //创建课程类
    private String Course_name;

    public Course(String course_name) {
        this.Course_name = course_name;
    }

    public String getCourse_name() {
        return Course_name;
    }

    public void setCourse_name(String course_name) {
        Course_name = course_name;
    }
}

class Score {        //创建成绩表类
    private int rank;       //序号--代表进入成绩管理系统的位次
    private Student student;
    private Course course;
    private double grade;  //代表成绩的意思

    public Score(int rank, Student student, Course course, double grade) {
        this.rank = rank;
        this.student = student;
        this.course = course;
        this.grade = grade;

    }

    public int getRank() {
        return rank;
    }

    public void setRank(int rank) {
        this.rank = rank;
    }

    public Student getStudent() {
        return student;
    }

    public void setStudent(Student student) {
        this.student = student;
    }

    public Course getCourse() {
        return course;
    }

    public void setCourse(Course course) {
        this.course = course;
    }

    public double getGrade() {
        return grade;
    }

    public void setGrade(double grade) {
        this.grade = grade;
    }
}

class StudentScoreManager {      //创建一个成绩管理的类

    private ArrayList<Score> scores;//新建一个类的数组

    public StudentScoreManager() {
        scores = new ArrayList<>();
    } //初始化这个类成员数组

    //通过调用manager.addScore(score)方法,将score对象添加到scores列表中。
    // 如果这个方法成功执行并返回true,那么score对象就会被添加到scores列表中。
    public boolean addScore(Score score) {
        return scores.add(score); // 将score对象添加到列表中,并返回添加操作的结果
    }


    //删除学生成绩的功能,某一门课//同时判断是否删除成功
    public boolean removeScore(Student student, Course course) {
        for (Score score : scores) {
            if (score.getStudent().getStu_id().equals(student.getStu_id()) && score.getStudent().getStu_name().equals(student.getStu_name()) && score.getCourse().getCourse_name().equals(course.getCourse_name())) {
                scores.remove(score);
                return true;
            }

        }
        return false;
    }

    //实现修改成学生成绩功能
    public boolean changeScore(Student student, Course course, double newGrade) {
        for (Score score : scores) {
            if (score.getStudent().getStu_id().equals(student.getStu_id()) && score.getStudent().getStu_name().equals(student.getStu_name()) && score.getCourse().getCourse_name().equals(course.getCourse_name())) {
                score.setGrade(newGrade);
                return true;
            }
        }
        return false;
    }

    //实现计算某门课平均成绩的功能
    public double getAverageGrade(Course course) {
        double sum = 0;
        int count = 0;
        for (Score score : scores) {
            if (score.getCourse().getCourse_name().equals(course.getCourse_name())) { //找到这门课了
                sum += score.getGrade();
                count++;
            }
        }
        return count > 0 ? sum / count : 0;
    }

    //查找某门课的最高成绩
    public double getHighesrGrade(Course course) {       //某门课的最高成绩
        double higest = 0;
        for (Score score : scores) {
            if (score.getCourse().getCourse_name().equals(course.getCourse_name()) && score.getGrade() > higest) {
                higest = score.getGrade();
            }
        }
        return higest;
    }

    //查找某门课的最低成绩
    public double getLowestGrade(Course course) {
        double lowest = 100;
        for (Score score : scores) {
            if (score.getCourse().getCourse_name().equals(course.getCourse_name()) && score.getGrade() < lowest) {
                lowest = score.getGrade();
            }
        }
        return lowest;
    }

    //实现成绩排序功能
    public void sortScores() {
        scores.sort((s1, s2) -> Double.compare(s2.getGrade(), s1.getGrade()));
    }

    public void printScores() {
        sortScores();
        for (Score score : scores) {
            System.out.println(score.getRank() + " " + score.getStudent().getStu_id() + " " + score.getStudent().getStu_name() + " " + score.getCourse().getCourse_name() + " " + score.getGrade());
        }
    }

    public boolean printfixScores(Student student) {
        int count = 0;

        for (Score score : scores) {
            if (score.getStudent().getStu_id().equals(student.getStu_id()) && score.getStudent().getStu_name().equals(student.getStu_name())) {
                System.out.println(score.getCourse().getCourse_name() + "的成绩是" + score.getGrade());
                count++;
            }
        }
        return count > 0 ? true : false;
    }

    //获取scores类list的长度
    public int getScoresLength() {
        return scores.size();
    }
}


public class Work {

    public static void printmenu() {

        System.out.println("---------------------------------------");
        System.out.println("欢迎使用学生成绩管理系统");
        System.out.println("---------------------------------------");
        System.out.println("1. 添加学生成绩");
        System.out.println("2. 删除学生成绩");
        System.out.println("3. 修改学生成绩");
        System.out.println("4. 计算课程平均-最高-最低-成绩");
        System.out.println("5. 查询学生成绩");
        System.out.println("6. 对成绩进行排序并打印所有成绩");
        System.out.println("0. 退出系统");
        System.out.println("---------------------------------------");
        System.out.print("请输入操作序号:");
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        StudentScoreManager manager = new StudentScoreManager();

        while (true) {

            printmenu();

            int opeartion = scanner.nextInt();
            if (opeartion < 0 || opeartion > 6) {
                System.out.println("没有这个选项,请重新选择!");
                continue;
            }
            scanner.nextLine();

            switch (opeartion) {
                case 1: {
                    System.out.println("您正在使用功能一:添加学生成绩");
                    System.out.println("---------------------------------------");
                    System.out.println("请输入学生学号:");
                    String id = scanner.nextLine();
                    System.out.println("请输入学生姓名:");
                    String name = scanner.nextLine();
                    System.out.println("请输入课程名称:");
                    String courseName = scanner.nextLine();
                    System.out.println("请输入成绩:");
                    double grade = scanner.nextDouble();

                    //新建临时类来存储输入的数据
                    Student student = new Student(id, name);
                    Course course = new Course(courseName);
                    Score score = new Score(manager.getScoresLength() + 1, student, course, grade);

                    //将这个临时的数据塞入,manager这个类的scores-list中,
                    if (manager.addScore(score)) {
                        System.out.println("添加成绩数据成功!");
                    } else {
                        System.out.println("添加成绩数据失败!");
                    }

                    // 等待用户按下回车键继续执行
                    System.out.println("按下回车键继续...");
                    scanner.nextLine();
                    break;
                }
                case 2: {
                    System.out.println("您正在使用功能二:删除学生成绩");
                    System.out.println("---------------------------------------");
                    System.out.println("请输入学生学号:");
                    String id = scanner.nextLine();
                    System.out.println("请输入学生姓名:");
                    String name = scanner.nextLine();
                    System.out.println("请输入课程名称:");
                    String courseName = scanner.nextLine();

                    Student student = new Student(id, name);
                    Course course = new Course(courseName);

                    if (manager.removeScore(student, course)) {
                        System.out.println("删除学生成绩成功!");
                    } else {
                        System.out.println("删除学生成绩失败!没有找到此人");
                    }

                    // 等待用户按下回车键继续执行
                    System.out.println("按下回车键继续...");
                    scanner.nextLine();
                    break;
                }
                case 3: {
                    System.out.println("您正在使用功能三:修改学生成绩");
                    System.out.println("---------------------------------------");
                    System.out.println("请输入学生学号:");
                    String id = scanner.nextLine();
                    System.out.println("请输入学生姓名:");
                    String name = scanner.nextLine();
                    System.out.println("请输入课程名称:");
                    String courseName = scanner.nextLine();
                    System.out.println("请输入新的成绩:");
                    double newGrade = scanner.nextDouble();

                    Student student = new Student(id, name);
                    Course course = new Course(courseName);

                    if (manager.changeScore(student, course, newGrade)) {
                        System.out.println("修改学生成绩成功!");
                    } else {
                        System.out.println("修改学生成绩失败!没有找到此人");
                    }

                    break;
                }
                case 4: {
                    System.out.println("您正在使用功能四:计算课程平均-最高-最低-成绩");
                    System.out.println("---------------------------------------");
                    System.out.println("请输入课程名称:");
                    String courseName = scanner.nextLine();

                    Course course = new Course(courseName);
                    double average = manager.getAverageGrade(course);
                    double higest = manager.getHighesrGrade(course);
                    double lowest = manager.getLowestGrade(course);
                    System.out.println(courseName + "的平均成绩为:" + average);
                    System.out.println(courseName + "的最高成绩为:" + higest);
                    System.out.println(courseName + "的最低成绩为:" + lowest);


                    // 等待用户按下回车键继续执行
                    System.out.println("按下回车键继续...");
                    scanner.nextLine();
                    break;
                }
                case 5: {
                    System.out.println("您正在使用功能五:查询学生成绩");
                    System.out.println("---------------------------------------");
                    System.out.println("请输入学生学号:");
                    String id = scanner.nextLine();
                    System.out.println("请输入学生姓名:");
                    String name = scanner.nextLine();

                    Student student = new Student(id, name);
                    if (manager.printfixScores(student)) {
                        //判断的同时可以调用
                    } else {
                        System.out.println("没有找到此人");
                    }

                    // 等待用户按下回车键继续执行
                    System.out.println("按下回车键继续...");
                    scanner.nextLine();
                    break;
                }
                case 6: {
                    System.out.println("您正在使用功能六:对成绩进行排序并打印所有成绩");
                    System.out.println("---------------------------------------");
                    manager.printScores();
                    // 等待用户按下回车键继续执行
                    System.out.println("按下回车键继续...");
                    scanner.nextLine();
                    break;
                }

            }
        }
    }
}

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1291226.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++使用策略模式,减少使用switch...case...

目录 原理函数类模板函数使用switch...case...不使用switch...case... 知识点decltypestd::remove_reference 原理 函数 #include <iostream> #include <functional> #include <map>void fun1(int a, int b) {std::cout << "fun1 : a "<…

学生成绩的增删改查

接上一篇MySQL数据库与其管理工具Navicat link 1.下载JDBC 可以登录MySQL的官方网站&#xff1a;www.mysql.com&#xff0c;下载JDBC-MySQL数据库驱动&#xff08;JDBC Driver for MySQL&#xff09;下载mysql-connector-java-5.1.40.zip后&#xff0c;将该zip文件解压至硬盘&a…

当使用RSA加密,从手机前端到服务器后端的请求数据存在+

将转成了空格&#xff0c;导致解密出错 将空格转成了

Numpy 实现基尼指数算法的决策树

基尼系数实现决策树 基尼指数 Gini ⁡ ( D ) 1 − ∑ k 1 K ( ∣ C k ∣ ∣ D ∣ ) 2 \operatorname{Gini}(D)1-\sum_{k1}^{K}\left(\frac{\left|C_{k}\right|}{|D|}\right)^{2} Gini(D)1−k1∑K​(∣D∣∣Ck​∣​)2 特征 A A A条件下集合 D D D的基尼指数&#xff1a; Gi…

『VUE3后台—硅谷甄选』

一、准备前期 pnpm create vite

学习Python的未来前景分析

文章目录 前言学python可以干什么如果具备Python编程&#xff0c;能用Python做什么&#xff1a;学Python语言能干什么1.常规软件开发2.科学计算3.自动化运维4.云计算 学python编程对未来的影响关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Py…

2024年江苏省职业院校技能大赛信息安全管理与评估 第二阶段学生组(样卷)

2024年江苏省职业院校技能大赛信息安全管理与评估 第二阶段学生组&#xff08;样卷&#xff09; 竞赛项目赛题 本文件为信息安全管理与评估项目竞赛-第二阶段样题&#xff0c;内容包括&#xff1a;网络安全事件响应、数字取证调查、应用程序安全。 本次比赛时间为180分钟。 …

星钻图形输出

答案&#xff1a; #include <stdio.h> int a 0, b 0; void printLine(int a , int b) //输出一行包含&#xff1a;若干个空格 若干个*&#xff0c;第一&#xff0c;二个参数为空格数和*数&#xff1b; (定义一个星钻输出函数) {while (a--) //打印a个空格{printf(…

小程序左右侧边栏

效果 点击左侧边栏&#xff0c;右侧会定位到对应内容&#xff1b; 右侧滑动&#xff0c;左侧也会显示对应的高亮&#xff1b; 也就是左右联动的效果 项目场景 tocc-app 应急巡检 传入数据: 左侧点击&#xff0c;右侧滚动到对应位置 点击左侧导航条&#xff0c;就计算出右…

JavaScript面向对象编程的奥秘揭秘:掌握核心概念与设计模式

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;JavaScript篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来JavaScript篇专栏内容:JavaScript-面向对象 目录 什么是面向对象&#xff1f; 类与对象的主要区别 创建…

【数据结构】- 详解哈夫曼树(用 C 语言实现哈夫曼树的构造和哈夫曼编码)

目录 一、哈夫曼树的基本概念 二、哈夫曼树的构造算法 2.1 - 哈夫曼树的构造过程 2.2 - 哈夫曼树的存储表示 2.3 - 算法实现 三、哈夫曼编码 3.1 - 哈夫曼编码的主要思想 3.2 - 哈夫曼编码的性质 3.3 - 算法实现 一、哈夫曼树的基本概念 哈夫曼树的定义&#xff0c;涉…

电脑字体大小怎么设置?学会这3个方法,轻松调节!

“感觉我近视又加深了&#xff0c;最近看电脑居然感觉字体有点小。我想把字体放大一点但却不知道应该怎么操作&#xff0c;有没有朋友可以指导一下我呀&#xff1f;” 在我们的日常生活中&#xff0c;电脑已经成为我们获取信息、交流和娱乐的重要工具。字体大小作为电脑显示的基…

厦门基础城建中排水管网作用,助力提升城市韧性

在厦门这个美丽的海滨城市&#xff0c;城市建设与发展日新月异&#xff0c;其中&#xff0c;城市生命线下的排水管网监测系统作为城市基础设施的重要组成部分&#xff0c;对保障城市安全、提升城市品质发挥着关键作用。 对于厦门城市建设中的排水管网监测系统安装策略 1. 合理…

【头歌系统数据库实验】实验2 MySQL软件操作及建库建表建数据

目录 第1关&#xff1a;创建数据库 第2关&#xff1a;创建供应商表S&#xff0c;并插入数据 第3关&#xff1a;创建零件表P&#xff0c;并插入数据 第4关&#xff1a;创建工程项目表J&#xff0c;并插入数据 第5关&#xff1a;创建供应情况表SPJ&#xff0c;并插入数据 …

软件开发文档的内容

软件开发文档是开发过程中用于记录、指导和沟通的重要工具。它可以包含多个文档&#xff0c;每个文档都有其特定的格式和目的。以下是一些常见的软件开发文档及其可能的格式&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#…

模拟目录管理 - 华为OD统一考试(C卷)

OD统一考试(C卷) 分值: 200分 题解: Java / Python / C++ 题目描述 实现一个模拟目录管理功能的软件,输入一个命令序列,输出最后一条命令运行结果。 支持命令: 1)创建目录命令: mkdir 目录名称,如mkdir abc为在当前目录创建abc目录,如果已存在同名目录则不执行任何操作…

HTML程序大全(2):通用注册模版

一、正常情况效果 二、某项没有填写的效果 三、没有勾选同意项的效果 四、代码 <!DOCTYPE html> <html> <head><meta charset"UTF-8"><title>注册</title><style>body {font-family: Arial, sans-serif;background-color…

小航助学题库白名单竞赛考级蓝桥杯等考scratch(16级)(含题库教师学生账号)

需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统&#xff08;含题库答题软件账号&#xff09; 需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统&#xff08;含题库答题软件账号&#xff09;

【重点】【矩阵】48. 旋转图像

题目 参考答案 法1&#xff1a;辅助矩阵 class Solution {public void rotate(int[][] matrix) {int n matrix.length;int[][] newMatrix new int[n][];for (int i 0;i < n; i) {newMatrix[i] matrix[i].clone();}for (int i 0; i < n; i) {for (int j 0; j <…

代码随想录算法训练营第四十四天 _ 动态规划_完全背包问题、518.零钱兑换II、377.组合总和IV。

学习目标&#xff1a; 动态规划五部曲&#xff1a; ① 确定dp[i]的含义 ② 求递推公式 ③ dp数组如何初始化 ④ 确定遍历顺序 ⑤ 打印递归数组 ---- 调试 引用自代码随想录&#xff01; 60天训练营打卡计划&#xff01; 学习内容&#xff1a; 完全背包问题 – 二维dp数组 动…