学生成绩管理系统(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;}}}}
}

 

 

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

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

相关文章

圆通单号查询,圆通速递物流查询,对需要的单号进行颜色标记

批量查询圆通速递单号的物流信息&#xff0c;并对需要的单号进行颜色标记。 所需工具&#xff1a; 一个【快递批量查询高手】软件 圆通速递单号若干 操作步骤&#xff1a; 步骤1&#xff1a;运行【快递批量查询高手】软件&#xff0c;第一次使用的伙伴记得先注册&#xff0c…

【Java】实现顺序表基本的操作(数据结构)

文章目录 前言顺序表1、打印顺序表2、增加元素3、在任意位置增加元素4、判断是否包含某个元素5、查找某个元素对于的位置6、获取任意位置的元素7、将任意位置的元素设为value8、删除第一次出现的关键字9、获取顺序表长度10、清空顺序表总结 前言 在了解顺序表之前我们要先了解…

Kubernetes集群安装高可用postgresql

Kubernetes集群安装高可用postgresql Bitnami 提供的 postgresql-ha 解决方案是一个预配置的、高可用的 PostgreSQL 集群配置&#xff0c;通常部署在 Kubernetes 环境中。它使用了一些关键技术和组件来实现数据库的高可用性。&#xff0c;Bitnami postgresql-ha 主要采用以下构…

JVM 虚拟机(二)类的生命周期

类的声明周期描述了一个类加载、使用和卸载的整个过程。 一个类的声明周期包括五个阶段&#xff1a;加载、连接、初始化、使用、卸载&#xff0c;其中连接部分分为验证、准备和解析阶段。 加载阶段 加载阶段是第一步是类加载器根据类的全限定名通过不同的渠道以二进制流的方式…

区块链媒体:Web3.0时代的推广创新10爆款策略概览-华媒舍

随着Web3.0时代的到来&#xff0c;互联网推广正经历着一场创新的革命。在这个新的时代背景下&#xff0c;一系列全新的推广策略正在兴起&#xff0c;引领着市场的变革。本文将基于这一背景&#xff0c;为大家介绍Web3.0时代中的10大爆款推广策略概览。 1. 个性化推广 在Web3.0…

【MATLAB】SSA+FFT+HHT组合算法

有意向获取代码&#xff0c;请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 SSAFFTHHT组合算法是一种基于奇异谱分析&#xff08;SSA&#xff09;、快速傅里叶变换&#xff08;FFT&#xff09;和希尔伯特-黄变换&#xff08;HHT&#xff09;的组合算法。 其中&am…

谈谈SQL的优化经验

目录 前言 表设计优化 索引优化 读写分离&#xff0c;主从复制优化 ​编辑sql语句优化 前言 SQL调优在项目中是比较常见的&#xff0c;SQL调优不仅仅包括SQL语句的编写&#xff0c;其中还应包括了数据库的表设计&#xff0c;数据库的配置架构&#xff08;主从复制&#xf…

pure::variants—产品平台化及变体管理工具

产品概述 pure::variants是德国pure-systems公司的产品&#xff0c;其目的是帮助企业实现对产品线的变体管理&#xff0c;提高企业项目资产的复用效率。pure::variants的核心理念是运用产品线管理方法对项目资产&#xff08;项目计划、需求、模型、功能模块、代码、测试用例&am…

如何将 MySQL 数据库转换为 SQL Server

本文解释了为什么组织希望将其 MySQL 数据库转换为 Microsoft SQL 数据库。本文接着详细介绍了尝试转换之前需要记住的事项以及所涉及的方法。专业的数据库转换器工具将帮助您快速将 MySQL 数据库记录转换为 MS SQL Server。 在继续之前&#xff0c;我们先讨论一下 MySQL 到 M…

Linux(centos)学习笔记(初学)

[rootlocalhost~]#:[用户名主机名 当前所在目录]#超级管理员标识 $普通用户的标识 Ctrlshift放大终端字体 Ctrl缩小终端字体 Tab可以补全命令 Ctrlshiftc/V复制粘贴 / &#xff1a;根目录&#xff0c;Linux系统起点 ls&#xff1a; #list列出目录的内容&#xff0c;通常用户查看…

单片机开发常用的软件构架

对于单片机程序来说&#xff0c;大家都不陌生&#xff0c;但是真正使用架构&#xff0c;考虑架构的恐怕并不多&#xff0c;随着程序开发的不断增多&#xff0c;架构是非常必要的。 一、时间片轮询法 介于前后台顺序执行法和操作系统之间的一种程序架构设计方案。该设计方案需能…

Modbus TCP工业RFID读写器的选型要点

Modbus TCP工业RFID读写器是一种采用Modbus TCP通信协议的RFID读写器。它可以通过TCP/IP网络与计算机或其它设备进行通信&#xff0c;实现远程读取和写入RFID标签数据的目的。 与传统的RFID读写器相比&#xff0c;Modbus TCP工业RFID读写器具有更远的读写距离、更高的读写灵敏度…

Flink Flink数据写入Kafka

一、环境准备 官网地址 flink官方集成了通用的 Kafka 连接器&#xff0c;使用时需要根据生产环境的版本引入相应的依赖 <properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><flink.version>1.14.6</flink.version&g…

CCF编程能力等级认证GESP—C++1级—20230611

CCF编程能力等级认证GESP—C1级—20230611 单选题&#xff08;每题 2 分&#xff0c;共 30 分&#xff09;判断题&#xff08;每题 2 分&#xff0c;共 20 分&#xff09;编程题 (每题 25 分&#xff0c;共 50 分)时间规划累计相加 答案及解析单选题判断题编程题1编程题2 单选题…

关于小红书商单变现的一些答疑

AI小红书商单训练营也过去1个月了&#xff0c;今天给大家汇总几个常遇到的问题&#xff0c;希望对大家在运营过程中有所帮助。 1.账号封面是否要统一模版&#xff1f; 为了让账号主页呈现整洁美观的效果&#xff0c;建议统一封面设计&#xff0c;视频开头可以设置一个固定画面…

景联文科技:高质量垂直领域数据集助力AI技术突破

随着人工智能技术的飞速发展&#xff0c;垂直领域数据集在提升模型性能、解决领域问题、推动创新应用以及提升竞争力等方面的重要性日益凸显。 提高模型性能&#xff1a;垂直领域数据集专注于特定任务或领域&#xff0c;使用这些数据集进行训练可以让模型更好地理解和解决特定领…

redis应用-分布式锁

目录 什么是分布式锁 分布式锁的基本实现 引入过期时间 引入校验id 引入lua 引入看门狗 引入redlock算法 什么是分布式锁 在一个分布式系统中,也会涉及到多个节点访问同一个公共资源的情况,此时就需要通过锁来做互斥控制,避免出现类似于"线程安全"的问题. 而…

@Autowired注入多态

如IBizStudyService接口有多个实现类BizStudyServiceImpl和BizStudyServiceExImpl&#xff0c;在Autowired注入时要用Qualifier指定实现类名称。 Autowired Qualifier("BizStudyServiceImpl") private IBizStudyService bizStudyService; 在实现类定义时要加上名称…

【开源】基于Vue和SpringBoot的计算机机房作业管理系统

项目编号&#xff1a; S 017 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S017&#xff0c;文末获取源码。} 项目编号&#xff1a;S017&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 登录注册模块2.2 课程管理模块2.3 课…

【QT】Qt类库的模块

目录 1.Qt基本模块 2.Qt附加模块 3.增值模块 4.技术预览模块 5.Qt工具 1.Qt基本模块 Qt基本模块是Qt在所有平台上的基本功能&#xff0c;它们在所有的开发平台和目标平台上都可用&#xff0c;在Qt5所有版本上是源代码和二进制兼容的。 Qtcore模块是Qt类库的核心&#xff0c;所有…