当前位置: 首页 > news >正文

学生成绩管理系统(Java)

开发环境: 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;}}}}
}

 

 

相关文章:

学生成绩管理系统(Java)

开发环境: 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, S…...

Modbus数据采集模块是什么?

随着工业自动化的快速发展&#xff0c;数据采集已成为现代工厂不可或缺的一环。在众多通信协议中&#xff0c;Modbus因其开放、简单、可靠的特点而广受青睐。那么&#xff0c;什么是Modbus数据采集模块&#xff0c;它又有哪些应用呢&#xff1f; 一、什么是Modbus数据采集模块…...

【网络安全】下载并安装 kali 的虚拟机 版本

kali虚拟机版本的下载地址&#xff1a;Get Kali | Kali Linux 下载完成后&#xff0c;解压&#xff0c;双击.vmx打开&#xff0c;即可完成kali在虚拟机中的安装和配置。 默认账户和密码都为kali...

JREBEL 热部署原理

JRebel&#xff08;Java Rebel&#xff09;是一个Java开发工具&#xff0c;它提供了一种在不重启应用服务器的情况下进行Java应用程序的热部署的方式。通过JRebel&#xff0c;开发者可以在修改Java代码后立即看到变化&#xff0c;加速开发和调试过程。 以下是JRebel实现热部署…...

履带吊,笔记

0.前言 履带吊使用了与传统的门桥式起重机不同的技术路线。因为它是移动式设备&#xff0c;所以它的动力是燃油发动机。为了精确调控升降。它的整套动力系统似乎采用了某种液压传动系统。履带吊国内也有生产商。但是下文中&#xff0c;还是从国外的一款产品说起。这款产品的pd…...

WPF转换器Convert

图像名称转换器ImageNameConverter&#xff0c;用于在数据绑定中将图像路径转换为图像文件名。 转换器的代码如下&#xff1a; using System; using System.Globalization; using System.IO; using System.Windows.Data;namespace ImageConverter {public class ImageNameCon…...

【刷题】【力扣牛客】反转链表的五种方式——Java

文章目录 前言方法一&#xff1a;构造新链表&#xff08;构造新节点&#xff09;方法二&#xff1a;构造新链表&#xff08;不构造新节点&#xff09;方法三&#xff1a;递归方法四&#xff1a;双指针方法五&#xff1a;遍历总结 力扣题目链接&#xff1a;206. 反转链表 牛客题…...

使用Java网络编程,窗口,线程,IO,内部类等实现多人在线聊天1.0

1.整体思路 思路图 整体思路如上: 涉及知识点:线程网络编程集合IO等 TCP 协议 2.代码实现过程 服务端 import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import jav…...

相关教程test

第一天 主题&#xff1a;LLM初体验 上午&#xff1a; 一&#xff0c;大模型的发展背景和模型演进 数据增长和算力提升LSTM到BERT到LLM的参数巨变最新paper解读&#xff08;根据授课时间&#xff0c;选择最近的核心paper进行解读&#xff09; 二&#xff0c;大模型核心阶段…...

mysql知识分享(包含安装卸载)(一)

如果博客有错误&#xff0c;请佬指正。 目录 注意&#xff1a;打开cmd时要有管理员身份打开&#xff0c;重要 为何使用数据库&#xff1f; 数据库的相关概念 关系型数据库 关系型数据库设计规则 表&#xff0c;记录&#xff0c;字段 表的关联关系 一对一关联 一对多关系 …...

Google Guava 反射工具使用详解

文章目录 反射类操作方法操作字段操作获取注解 反射 在 Guava 中&#xff0c;反射&#xff08;Reflection&#xff09;模块提供了一些用于简化反射操作的工具类和方法。通过 Guava 的反射模块&#xff0c;您可以方便地进行类、方法、字段的操作、获取注解信息等。下面详细介绍…...

MySql MVCC 详解

注意以下操作都是以InnoDB引擎为操作基准。 一&#xff0c;前置知识准备 1&#xff0c;MVCC简介 MVCC 是多版本并发控制&#xff08;Multiversion Concurrency Control&#xff09;的缩写。它是一种数据库事务管理技术&#xff0c;用于解决并发访问数据库的问题。MVCC 通过创…...

工业机器视觉megauging(向光有光)使用说明书(三,轻量级的visionpro)

下来我们说说第二个相机的添加&#xff1a; 第一步&#xff0c;点击相机二&#xff0c;如下&#xff1a; 第二步&#xff0c;点击&#xff1a;加载工具组.xml&#xff0c;加载toolgroupxml2目录下的&#xff1a;工具组.xml 注意&#xff0c;一个相机只能用一个toolgroupxml,第…...

Linux 环境下,jdbc连接mysql问题

1. 下载MySQL的JDBC驱动&#xff1a; 从MySQL官网下载最新的MySQL Connector/J&#xff0c;并将其解压到某个目录&#xff0c;比如/usr/local/mysql/。 2. 将JDBC驱动添加到类路径&#xff1a; 将JDBC驱动添加到类路径&#xff0c;可以使用以下命令&#xff1a; export CLA…...

Python读写txt文件数据

&#x1f388; 博主&#xff1a;一只程序猿子 &#x1f388; 博客主页&#xff1a;一只程序猿子 博客主页 &#x1f388; 个人介绍&#xff1a;爱好(bushi)编程&#xff01; &#x1f388; 创作不易&#xff1a;如喜欢麻烦您点个&#x1f44d;或者点个⭐&#xff01; &#x1f…...

Linux虚假唤醒

为什么会有虚假唤醒一说。Linux内核这么强大&#xff0c;怎么会出现这样的情况&#xff1f;一直以来也很困惑&#xff0c;看了下文链接中的介绍后&#xff0c;豁然开朗。 从计算机设计的角度&#xff0c;如果一层解决不了&#xff0c;那就再多加一层。推算到这里&#xff0c;就…...

倒计时模块复习

经典回顾倒计时 倒计时的基本布局介绍。 一个内容区域和一个输入区域&#xff0c;内容区域进行划分 直接使用flex布局会更快一点。 js代码 我们利用一下模块化思想&#xff0c;直接把获得时间这个功能写成一个函数。方便后续的调用 function getTime() {const date new Date…...

k8s(三): 基本概念-ReplicaSet与Deployment

PeplicaSet ReplicaSet 的目的是维护一组在任何时候都处于运行状态的 Pod 副本的稳定集合&#xff0c;通常用来保证给定数量的、完全相同的 Pod 的可用性。 最佳实践 Deployment 是一个可以拥有 ReplicaSet 并使用声明式方式在服务器端完成对 Pod 滚动更新的对象。 尽管 Rep…...

Linux 的介绍和云服务器上web 程序部署

目录 一.linux的介绍 1.1linux是什么 1.2linux的发展历程 1.3linux发行版 二.Linux环境搭建 2.1阿里云-云服务器配置 2.2使用终端软件连接Linux 三.操作Linux&#xff0c;部署web程序 3.1Linux指令 3.2部署web程序 第一步&#xff1a;认识yum 第二步&#xff1a;安装…...

Oauth2.0 学习

OAuth 2.0 服务器端通常通过验证每次请求中的访问令牌&#xff08;access token&#xff09;的方式来确保其合法性和有效性。以下是一些通常采用的验证方法&#xff1a; Token Validation Endpoint: OAuth 2.0 规范允许实现一个专门的令牌验证端点&#xff0c;称为 Token Valid…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO&#xff1a;支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题&#xff1a;MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者&#xff1a;Yanyuan Chen, Dexuan Xu, Yu Hu…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上&#xff0c;你可以使用apt包管理器来安装NFS服务器。打开终端并运行&#xff1a; sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享&#xff0c;例如/shared&#xff1a; sudo mkdir /shared sud…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销&#xff0c;平衡网络负载&#xff0c;延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出&#xff1a;JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中&#xff0c;随机数的生成看似简单&#xff0c;却隐藏着许多玄机。无论是生成密码、加密密钥&#xff0c;还是创建安全令牌&#xff0c;随机数的质量直接关系到系统的安全性。Jav…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令&#xff0c;在Linux上安装软件&#xff0c;以及如何在Linux上部署一个单体项目&#xff0c;大多数同学都会有相同的感受&#xff0c;那就是麻烦。 核心体现在三点&#xff1a; 命令太多了&#xff0c;记不住 软件安装包名字复杂&…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式&#xff1a;dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一&#xff0c;腐蚀跟膨胀属于反向操作&#xff0c;膨胀是把图像图像变大&#xff0c;而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

JavaScript 数据类型详解

JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型&#xff08;Primitive&#xff09; 和 对象类型&#xff08;Object&#xff09; 两大类&#xff0c;共 8 种&#xff08;ES11&#xff09;&#xff1a; 一、原始类型&#xff08;7种&#xff09; 1. undefined 定…...

C语言中提供的第三方库之哈希表实现

一. 简介 前面一篇文章简单学习了C语言中第三方库&#xff08;uthash库&#xff09;提供对哈希表的操作&#xff0c;文章如下&#xff1a; C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...