当前位置: 首页 > 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…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型&#xff1a;架构设计与关键步骤 在当今数字化转型的浪潮中&#xff0c;大语言模型&#xff08;LLM&#xff09;已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中&#xff0c;不仅可以优化用户体验&#xff0c;还能为业务决策提供…...

python/java环境配置

环境变量放一起 python&#xff1a; 1.首先下载Python Python下载地址&#xff1a;Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个&#xff0c;然后自定义&#xff0c;全选 可以把前4个选上 3.环境配置 1&#xff09;搜高级系统设置 2…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列&#xff0c;以便知晓哪些列包含有价值的数据&#xff0c;…...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行&#xff01; sudo su - 1. CentOS 系统&#xff1a; yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝

目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为&#xff1a;一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...

Qemu arm操作系统开发环境

使用qemu虚拟arm硬件比较合适。 步骤如下&#xff1a; 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载&#xff0c;下载地址&#xff1a;https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...

Python 训练营打卡 Day 47

注意力热力图可视化 在day 46代码的基础上&#xff0c;对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...

第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10+pip3.10)

第一篇&#xff1a;Liunx环境下搭建PaddlePaddle 3.0基础环境&#xff08;Liunx Centos8.5安装Python3.10pip3.10&#xff09; 一&#xff1a;前言二&#xff1a;安装编译依赖二&#xff1a;安装Python3.10三&#xff1a;安装PIP3.10四&#xff1a;安装Paddlepaddle基础框架4.1…...