Java实现成绩管理系统

1.思路分析实现

  1. 要求一和要求二,一个要求使用顺序表一个使用链表,但又因为这两个都是List的实现类,所以我就使用多态的形式通过一个方法进行实现上面两种内容,需要用什么方法实现就传入什么实现类,形参是List类型。
  2. 创建一个Student的javabean封装,学生的信息。
  3. 实现的增删该查,我都是直接先判断是否符合要求,比如删除的是否需要判断这个要删除的位置是否有效,有效我才进行删除,不能你给我传个位置然后我在越界报错吧。然后在转调list中的方法。
  4. 排序,就自定义了排序规则,按照Student的javabean的成绩排序
  5. 使用swich控制台输入选项,然后对应的选项对应一个功能然后转调方法即可。

代码实现

studentjavabean

package entity;public class Student {private String name;private Integer age;private Integer mark;public Student() {}public Student(String name, Integer age, Integer mark) {this.name = name;this.age = age;this.mark = mark;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public Integer getMark() {return mark;}public void setMark(Integer mark) {this.mark = mark;}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +", mark=" + mark +'}';}
}

1.创建Service(业务层接口)

package service;import entity.Student;import java.util.List;public interface StudentService {/*** 初始化的创建和输出*返回创建好的学生信息集合*/void init();//打印void info();/*** 添加学生信息* @param student 学生信息* @return 是否添加成功*/boolean addStudent(Student student);/*** 修改学生信息* @param index 学生位置* @param student 学生信息* @return 是否修改成功*/boolean updateStudent(int index,Student student);/*** 删除学生信息* @param index 要删除学生的位置* @return 是否删除成功*/boolean deleteStudent(int index);/*** 按照学生成绩排序** @return 排序完的集合*/void sort();/*** 查询学生的最高成绩** @return 返回最高成绩的信息*/Student lookUp();}

2.创建业务层实现类

package service.Impl;import entity.Student;
import service.StudentService;import java.util.Collections;
import java.util.List;public class StudentServiceImpl implements StudentService {private List<Student> students;public StudentServiceImpl(List<Student> students) {this.students = students;}@Overridepublic void init() {students.add(new Student("张三",18,98));students.add(new Student("李四",18,54));students.add(new Student("周小燕",28,92));students.add(new Student("李旭",21,79));students.add(new Student("李想",19,50));for (Student student : students) {System.out.println("姓名为:" + student.getName());System.out.println("年龄为:" + student.getAge());System.out.println("成绩为:" + student.getMark());System.out.println("-------------------------------");}}@Overridepublic void info() {for (Student student : students) {System.out.println("姓名为:" + student.getName());System.out.println("年龄为:" + student.getAge());System.out.println("成绩为:" + student.getMark());System.out.println("-------------------------------");}}@Overridepublic boolean addStudent(Student student) {if (student.getMark() > 100 || student.getMark() < 0){return false;}return students.add(student);}@Overridepublic boolean updateStudent(int index,Student student) {if (index <= 0 || index > students.size()) return false;Student student1 = students.get(index - 1);if (student1 == null){return false;}student1.setAge(student.getAge());student1.setName(student.getName());student1.setMark(student.getMark());return true;}@Overridepublic boolean deleteStudent(int index) {if (index <= 0 || index > students.size()) return false;students.remove(index - 1);return true;}@Overridepublic void sort() {students.sort((a, b) -> {return b.getMark() - a.getMark();});}@Overridepublic Student lookUp() {int max = -1;Student student1 = new Student();for (Student student : students) {if (student.getMark() > max){max = student.getMark();student1 = student;}}return student1;}}

3.打印等细节信息的输出

package info;import entity.Student;
import service.Impl.StudentServiceImpl;
import service.StudentService;import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;public class TestStudent {public TestStudent() {app();}public static void printInfo(){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("任意数字. 退出程序");System.out.println("----------------------------");}public static void studentInfo(List<Student> students) {StudentService studentService = new StudentServiceImpl(students);Scanner scanner = new Scanner(System.in);while(true){printInfo();int x = scanner.nextInt();switch (x){case 1:{//1.初始化studentService.init();break;}case 2:{//2.添加学生Student addStudent = new Student();System.out.println("请输入添加的学生姓名:");addStudent.setName(scanner.next());System.out.println("请输入添加的学生年龄:");addStudent.setAge(scanner.nextInt());System.out.println("请输入添加的学生成绩:");addStudent.setMark(scanner.nextInt());boolean flag = studentService.addStudent(addStudent);if (flag) studentService.info();else System.out.println("添加有误");break;}case 3:{//3.排序studentService.sort();studentService.info();break;}case 4:{//4.修改System.out.println("请输入要修改第几位学生");int index = scanner.nextInt();Student updateStudent = new Student();System.out.println("请输入修改的学生姓名:");updateStudent.setName(scanner.next());System.out.println("请输入修改的学生年龄:");updateStudent.setAge(scanner.nextInt());System.out.println("请输入修改的学生成绩:");updateStudent.setMark(scanner.nextInt());boolean flag = studentService.updateStudent(index, updateStudent);if (flag) studentService.info();else System.out.println("修改有误");break;}case 5:{//5.删除System.out.println("请输入要删除第几位学生");int index = scanner.nextInt();boolean flag = studentService.deleteStudent(index);if (flag) studentService.info();else System.out.println("删除有误");break;}case 6:{//6.查询最高成绩Student student = studentService.lookUp();System.out.println("最高成绩学生的信息如下");System.out.println("姓名为:" + student.getName());System.out.println("年龄为:" + student.getAge());System.out.println("成绩为:" + student.getMark());System.out.println("-------------------------------");break;}default:{//退出系统System.exit(0);}}}}//1.使用顺序表实现public static void arraysList(){List<Student> list = new ArrayList<>();studentInfo(list);}//2.使用链表实现public static void linkedList(){List<Student> list = new LinkedList<>();studentInfo(list);}public static void app() {Scanner sc = new Scanner(System.in);System.out.println("1. 使用顺序表实现");System.out.println("2. 使用链表实现");switch (sc.nextInt()){case 1:{arraysList();break;}case 2:{linkedList();break;}}}
}

启动类

import info.TestStudent;//启动类
public class App {public static void main(String[] args) {new TestStudent();}
}

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

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

相关文章

【学习Day3】计算机基础

✍&#x1f3fb;记录学习过程中的输出&#xff0c;坚持每天学习一点点~ ❤️希望能给大家提供帮助~欢迎点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;指点&#x1f64f; 1.5.4 Cache替换算法 Cache的页面淘汰算法 常用替换算法有&#xff1a; • 随机替换算法RA…

vue3 setup 使用 beforeRouteEnter 组件内路由守卫

vue3 setup 使用 beforeRouteEnter 组件内路由守卫 setup 中只有onBeforeRouteLeave、onBeforeRouteUpdate两个钩子函数&#xff0c; 没有beforeRouteEnter对应的钩子函数&#xff0c;所以无法在setup中直接使用 <script setup> onBeforeRouteLeave((to, from) > {// …

Android基础-性能优化

在Android平台上进行性能优化是确保应用程序高效、稳定且流畅运行的关键过程。以下将详细阐述Android性能优化的各个方面&#xff0c;包括但不限于布局优化、绘制优化、内存管理、网络优化、安装包优化以及针对不同版本的Android系统进行适配等。 一、布局优化 布局优化的核心…

3D软件开发的相关技术

3D开发涉及到广泛的技术和工具&#xff0c;涵盖了多个领域&#xff0c;包括计算机图形学、编程、设计、物理模拟等。以下是3D开发中常用的技术和工具&#xff0c;掌握这些技术需要广泛的知识和实践&#xff0c;项目的成功依赖于对这些技术的有效整合和应用。北京木奇移动技术有…

音视频开发14 FFmpeg 视频 相关格式分析 -- H264 NALU格式分析

H264简介-也叫做 AVC H.264&#xff0c;在MPEG的标准⾥是MPEG-4的⼀个组成部分–MPEG-4 Part 10&#xff0c;⼜叫Advanced Video Codec&#xff0c;因此常常称为MPEG-4 AVC或直接叫AVC。 原始数据YUV,RGB为什么要压缩-知道就行 在⾳视频传输过程中&#xff0c;视频⽂件的传输…

热敏电阻的设计

热敏电阻(NTC)的作用&#xff1a;抑制开机时的浪涌电流。防止开机瞬间产生的浪涌电流损坏后面的元件。 取值依据:根据对开机的脉冲电流&#xff08;浪涌电流&#xff09;小于多少A&#xff1f; 由,这个U是指最大输入电压&#xff0c;I为要求的浪涌电流。 NTC是负温度系数的热…

收银系统源码--商超水果生鲜店收银硬件要怎么选择?

新零售时代&#xff0c;越来越多的商家开始明白&#xff0c;除了要做好店铺定位、店面装潢和商品的设定&#xff0c;还要选购最适合店铺运营需求的收银机和硬件&#xff0c;好的收银机和收银系统可以帮助商家做好收支统计、库存管理、人员配置。客户服务等工作。现在的智能收银…

MySQL 索引使用(二)

本篇继续介绍有关索引的使用。 目录 一、SQL提示 二、单列索引和联合索引 三、覆盖索引 四、前缀索引 五、索引的使用原则 一、SQL提示 我们在使用索引来进行查询时&#xff0c;很有可能会出现一个字段中包含多个索引的情况&#xff0c;例如这里有一个name字段&#xff0c…

从零开始学习Slam-旋转矩阵旋转向量四元组(二)

本文参考&#xff1a;计算机视觉life 仅作笔记用 书接上回&#xff0c;上回不清不楚的介绍了旋转矩阵&旋转向量和四元组 现在回顾一下重点&#xff1a; 本着绕谁谁不变的变则 假设绕z轴旋转θ&#xff0c;旋转矩阵为&#xff1a; 再回顾一下旋转向量的表示以及这个基本记不…

SpringCloud如何实现SSO单点登录?

目录 一、SpringCloud框架介绍 二、什么是SSO单点登录 三、单点登录的必要性 四、SpringCloud如何实现SSO单点登录 一、SpringCloud框架介绍 Spring Cloud是一个基于Spring Boot的微服务架构开发工具集&#xff0c;它整合了多种微服务解决方案&#xff0c;如服务发现、配置…

SpringSecurity6从入门到实战之Filter过滤器回顾

SpringSecurity6从入门到实战之Filter过滤器回顾 如果没有SpringSecurity这个框架,我们应该通过什么去实现客户端向服务端发送请求时,先检查用户是否登录,登录了才能访问.否则重定向到登录页面 流程图如下 官方文档&#xff1a;https://docs.spring.io/spring-security/referen…

Ubuntu (18.04) _Mysql (8.0.X)设置密码强度

首先 查看是否有密码强度插件&#xff1a; SHOW PLUGINS; 如果没有&#xff0c;则安装 install plugin validate_password soname validate_password.so; 再次查看,会看到密码强度插件已开 其次 查看密码强度具体配置 show variables like validate_password%; validate…

【C++】【VScode】常用快捷键

在Visual Studio Code (VSCode) 中&#xff0c;有几个快捷键可以帮助你更高效地编写C代码&#xff0c;特别是与代码提示、自动完成等功能相关的快捷键。这些功能大多数依赖于安装和配置好的C/C扩展&#xff08;通常是由Microsoft提供的&#xff09;。以下是几个有助于代码提示和…

echart扩展插件词云echarts-wordcloud

echart扩展插件词云echarts-wordcloud 一、效果图二、主要代码 一、效果图 二、主要代码 // 安装插件 npm i echarts-wordcloud -Simport * as echarts from echarts; import echarts-wordcloud; //下载插件echarts-wordcloud import wordcloudBg from /components/wordcloudB…

uniapp实现图片上传——支持APP、微信小程序

uniapp实现图片、视频上传 文章目录 uniapp实现图片、视频上传效果图组件templatejs 使用 相关文档&#xff1a; 结合 uView 插件 uni.uploadFile 实现 u-upload uploadfile 效果图 组件 简单封装&#xff0c;还有很多属性…&#xff0c;自定义样式等…根据个人所需调整 te…

Nginx在Docker中的应用:容器化部署与扩展

在当今的云计算和微服务时代&#xff0c;Docker容器技术因其轻量级、可移植性和可扩展性而受到广泛关注。Nginx&#xff0c;作为一个高性能的HTTP和反向代理服务器&#xff0c;也在Docker中找到了其广泛的应用场景。本文将探讨Nginx在Docker中的容器化部署和扩展策略&#xff0…

16:00面试,16:08就出来了,问的问题有点变态。。。

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到8月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降40%…

【C语言】常见的动态内存的错误

前言 在动态内存函数的使用过程中我们可能会遇到一些错误&#xff0c;这里将常见的错误进行总结。 对NULL解引用 请看以下代码&#xff1a; 可以看到&#xff0c;这时我们的malloc开辟是失败的&#xff0c;所以返回的是空指针NULL&#xff0c;而我们却没有进行检查&#xff0…

推荐:4本易发表的优质SSCI期刊,含期刊官网!

01、Risk Management and Healthcare Policy 开源四区&#xff0c;国人发表占比25%&#xff0c;发表量前三的国家分别是中国、埃塞俄比亚和美国。 该期刊对国人友好&#xff0c;年度发文量400多&#xff0c;影响因子3.6。 主要刊发公共卫生相关的文章。 研究者可以围绕居民…

【C++ C#】 C++ 和C# 的混合项目,C++ 文件中有多个 函数和变量 定义了未使用,会影响程序正常执速度吗?

文章目录 1 未使用的函数和变量 是否会影响速度分析1.1 C 未使用的函数和变量&#xff1a;1.2 C# 未使用的函数和变量&#xff1a; 2 影响程序执行速度的其他因素3 如何处理未使用的代码 一个 C 和C# 的混合项目&#xff0c;C 文件中有多个 函数和变量 定义了未使用&#xff0c…