Java设计学生成绩管理系统

article/2025/9/28 10:06:39

1.1 题目与要求

设计一个学生成绩排名系统

实现以下功能:

(1) 具备对成绩的管理功能(添加、删除、排序);

(2) 具备对成绩的统计功能(最高分,最低分,平均分,及格率等);

(3) 具备按学号、姓名查询成绩的功能;

(4) 具备处理解决学号重复问题 ;

备注:成绩记录以下信息:班级,学号,姓名,四门成绩(百分制)。

1.1.1 作品展示

(1)操作界面如下:

 (2)功能显示:

(3)功能查看(其他功能复制代码自行查看哟)

 

 

1.2 本系统涉及的知识点

(1)Student类 Course类

(2)StudentList类

(3)switch条件语句

(4)集合List的实现类ArrayList

(5)if-else if-else条件语句

(6)while循环和for循环

1.3  放在一个包里面四个类

1.4代码如下

(1).  建立course类

public class Course {//学生成绩,四门成绩构建一个类private int politics;private int math;private int english;private int computer;public Course() {}public Course(int politics, int math, int english, int computer) {this.politics = politics;this.math = math;this.english = english;this.computer = computer;}public int getPolitics() {return politics;}public void setPolitics(int politics) {this.politics = politics;}public int getMath() {return math;}public void setMath(int math) {this.math = math;}public int getEnglish() {return english;}public void setEnglish(int english) {this.english = english;}public int getComputer() {return computer;}public void setComputer(int computer) {this.computer = computer;}}

(2).建立student类

public class Student extends Course{private String classname;private String name;private String number;private Course a;public String getClassname() {return classname;}public void setClassname(String classname) {this.classname = classname;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getNumber() {return number;}public void setNumber(String number) {this.number = number;}public Course getA() {return a;}public void setA(Course a) {this.a = a;}
}

(3)建立studentList类

package CourseDesign;public class StudentList {private String name;private int sum;public StudentList(String name, int sum) {this.name = name;this.sum = sum;}public StudentList() {}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getSum() {return sum;}public void setSum(int sum) {this.sum = sum;}
}

(4)建立studentmanager主类

import java.util.ArrayList;
import java.util.Scanner;public class StudentManager {public static void main(String[] args) {//创建ArrayList集合,储存Student类型变量ArrayList<Student> arry1=new ArrayList<Student>();//创建ArrayList集合,储存Course类型变量ArrayList<Course> arry2=new ArrayList<Course>();//创建ArrayList集合,储存StudentList类型变量ArrayList<StudentList> arry3=new ArrayList<StudentList>();while(true) {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("7 退出");System.out.println("请输入你的选择:");Scanner sc=new Scanner(System.in);int num=sc.nextInt();//switch语句完成相关操作switch(num){case 1://System.out.println("1 添加学生成绩");addStudent(arry1,arry2);break;case 2://System.out.println("2 删除学生成绩");DeleteStudent(arry1);break;case 3://System.out.println("3 对学生成绩排序,并且输出最高成绩和最低成绩");sortStudent(arry1,arry3);break;case 4://System.out.println("4 查看平均分与及格率");averagStudent(arry1,arry2);break;case 5://System.out.println("5 按学号、姓名、或课程名查询成绩");searchStudent(arry1,arry2);break;case 6://System.out.println("查看学生成绩录入结果(无序)");lookStudent(arry1,arry2);break;case 7:System.out.println("谢谢使用");System.exit(0);             //终止当前正在运行的Java虚拟机}}}//添加学生成绩,并且查看录入结果public static void addStudent( ArrayList<Student> arry1,ArrayList<Course> arry2){Scanner o=new Scanner(System.in);System.out.println("请输入要录入几个学生信息");int  num=o.nextInt();for(int j=0;j<num;j++) {System.out.println("第" + (j + 1) + "位同学成绩录入");Scanner sc = new Scanner(System.in);//为了让学号number能够循环外面被访问到,把它定义在循环外面String number;//为了当学号输入重复,程序能回到这里,使用循环while(true) {System.out.println("输入学生学号");number = sc.nextLine();boolean flag = isUsed(arry1, number);if (flag) {System.out.println("学号重复请重新输入");} else {break;}}System.out.println("输入学生姓名");String name = sc.nextLine();System.out.println("输入学生班级");String classmate = sc.nextLine();System.out.println("输入政治成绩");int a = sc.nextInt();System.out.println("输入数学成绩");int b = sc.nextInt();System.out.println("输入英语成绩");int d = sc.nextInt();System.out.println("输入计算机成绩");int e = sc.nextInt();//建立学生对象,把键盘录入的数值赋值给学生成员变量Student stu = new Student();stu.setNumber(number);stu.setName(name);stu.setClassname(classmate);//建立四门成绩对象,把键盘录入的数值赋值给成员变量Course c = new Course();c.setPolitics(a);c.setMath(b);c.setEnglish(d);c.setComputer(e);//将引用变量添加到集合里面arry2.add(c);stu.setA(c);arry1.add(stu);}}//解决学号重复问题public static boolean isUsed(ArrayList<Student> arry1,String number){boolean flag=false;for(int i=0;i<arry1.size();i++){Student stu=arry1.get(i);if(stu.getNumber().equals(number)){flag=true;break;}}return flag;}//删除学生成绩public static void DeleteStudent(ArrayList<Student> arry1){Scanner sc=new Scanner(System.in);System.out.println("请输入要删除学生的学号");String number=sc.nextLine();int index=-1;//设置索引判断学号是否存在for(int i=0;i<arry1.size();i++) {//如果输入的学号和系统学生集合里面的学号有相同的Student s = arry1.get(i);if (s.getNumber().equals(number)) {index=i;break;}}if(index==-1){System.out.println("输入学号不存在,请重新输入");}else{arry1.remove(index);System.out.println("删除学生成功");}}//查看学生录入结果(无序)录入结果public static void lookStudent( ArrayList<Student> arry1,ArrayList<Course> arry2){if(arry1.size()==0){System.out.println("请添加学生成绩,再查寻");}for(int i=0;i<arry1.size();i++ ){Student st=arry1.get(i);Course s=st.getA();System.out.println("-------------------------------------------");System.out.println("班级\t\t\t姓名\t\t学号\t\t计算\t英语\t数学\t政治");System.out.println(st.getClassname()+"\t"+st.getName()+"\t\t"+st.getNumber()+"\t\t"+s.getComputer()+"\t"+s.getEnglish()+"\t"+s.getMath()+"\t"+s.getPolitics());System.out.println("--------------------------------------------");}
}//对学生成绩排序,并且输出最高成绩和最低成绩public static void sortStudent(ArrayList<Student> arry1,ArrayList<StudentList> arry3){//对学生总成绩进行排序//多少个学生排序for(int i=0;i<arry1.size();i++) {StudentList a = new StudentList();int sum=arry1.get(i).getA().getMath()+ arry1.get(i).getA().getEnglish()+ arry1.get(i).getA().getPolitics()+ arry1.get(i).getA().getComputer();String name=arry1.get(i).getName();a.setName(name);a.setSum(sum);arry3.add(a);}int j = 0;while( j<100) {int index=0;int i=0;for ( i = 0; i < arry3.size(); i++) {int max = arry3.get(0).getSum();if (max < arry3.get(i).getSum()) {max = arry3.get(i).getSum();index=i;}}if(j==0) {System.out.println("姓名\t\t总成绩最高分");System.out.println(arry3.get(index).getName()+"\t\t"+arry3.get(index).getSum());}else if((i==arry3.size())&&(i-1)==0){System.out.println("姓名\t\t总成绩最低分");System.out.println(arry3.get(index).getName()+"\t\t"+arry3.get(index).getSum());}else {System.out.println("姓名\t\t总成绩");System.out.println(arry3.get(index).getName() + "\t\t" + arry3.get(index).getSum());}j++;arry3.remove(index);if(arry3.size()==0){break;}}}//按学号、姓名、或课程名查询成绩public static void  searchStudent(ArrayList<Student> arry1,ArrayList<Course> arry2) {Scanner sc = new Scanner(System.in);System.out.println("按学号、姓名、或课程名查询成绩,学号查询请按1,姓名查询请按2");int a = sc.nextInt();if (a == 1) {System.out.println("请输入学号");Scanner s = new Scanner(System.in);String number = s.nextLine();for (int i = 0; i < arry1.size(); i++) {if (arry1.get(i).getNumber().equals(number)) {System.out.println("-------------------------------------------");System.out.println("班级\t\t\t姓名\t\t学号\t\t计算\t英语\t数学\t政治");System.out.println(arry1.get(i).getClassname() + "\t" + arry1.get(i).getName() + "\t\t" + arry1.get(i).getNumber() + "\t\t" + arry2.get(i).getComputer()+ "\t" + arry2.get(i).getEnglish() + "\t" +arry2.get(i).getMath() + "\t" + arry2.get(i).getPolitics());System.out.println("--------------------------------------------");}}} else if (a == 2) {System.out.println("请输入姓名");Scanner c = new Scanner(System.in);String name = c.nextLine();for (int i = 0; i < arry1.size(); i++) {if (arry1.get(i).getName().equals(name)) {System.out.println("-------------------------------------------");System.out.println("班级\t\t\t姓名\t\t学号\t\t计算\t英语\t数学\t政治");System.out.println(arry1.get(i).getClassname() + "\t" + arry1.get(i).getName() + "\t\t" + arry1.get(i).getNumber() + "\t\t" + arry1.get(i).getComputer() + "\t" + arry1.get(i).getEnglish() + "\t" + arry1.get(i).getMath() + "\t" + arry1.get(i).getPolitics());System.out.println("--------------------------------------------");}}}}//查看平均分与及格率public static void averagStudent(ArrayList<Student> arry1,ArrayList<Course> arry2){for(int i=0;i<arry1.size();i++){int flag=0;double l=0;double averag=(arry2.get(i).getComputer()+arry2.get(i).getPolitics()+arry2.get(i).getEnglish()+arry2.get(i).getMath())*1.0/4;if(arry2.get(i).getComputer()<60){flag++;}if (arry2.get(i).getPolitics()<60){flag++;}if(arry2.get(i).getEnglish()<60){flag++;}if(arry2.get(i).getMath()<60){flag++;}l=(4-flag)/4.0;System.out.println("学号\t学生\t平均成绩\t及格率");System.out.println(arry1.get(i).getNumber()+"\t"+arry1.get(i).getName()+"\t"+averag+"\t"+l);}}
}

.


http://chatgpt.dhexx.cn/article/POLOTXu9.shtml

相关文章

Java 学生成绩管理系统

教学管理系统很适合初学者对于所学语言的练习。本文是javaSE 中用文件流写的&#xff0c;这个也可以用数据库写。 分析 这个项目有 1.学生 2.老师 3.教务人员 4.管理员四个角色分别担任不同的任务。 1.学生 有属性 id, 密码&#xff0c;性别&#xff0c;年龄&#xff0c;和一…

Java基础——学生管理系统

用内存存储学生信息。(采用集合的方式&#xff09; 步骤&#xff1a; A. 定义学生类 B. 学生管理系统的主界面的代码编写 C. 学生管理系统的查看所有学生的代码编写 D. 学生管理系统的添加学生的代码编写 E. 学生管理系统的删除学生的代码编写 F. 学生管理系统的修改学生的代码…

学生管理系统(Java版)

学生管理系统&#xff08;Java版&#xff09; 前言&#xff1a;这个是大二做的课设&#xff08;还是学生管理系统…&#xff09;&#xff0c;理论上虽然是4个人一组一起做的&#xff0c;但是&#xff0c;注意这个“但是”&#xff0c;还是我一个人承担了所有…代码和文档基本都…

Java 版学生成绩管理系统,附源码

前言 对于计算机专业的学生来讲&#xff0c;一定对于学生成绩管理系统课程设计十分印象深刻。设计、上机、编码、写报告、答辩等一系列流程&#xff0c;虽然很简单&#xff0c;但也可以综合运用我们所学的一些知识了。 今天就来复习以下这个课题&#xff0c;用 Java SE 来实现…

用Java实现一个学生管理系统(附源码)

目录 一、题目要求 二、设计思路 &#xff08;2&#xff09;代表课程的类——Course类 &#xff08;3&#xff09;具体功能实现类——Function类 &#xff08;4&#xff09;测试类——Test类 三、代码实现 &#xff08;1&#xff09;Student.java文件 &#xff08;2&…

Java实现学生管理系统(完整代码)

案例需求 完成一个综合案例&#xff1a;学生管理系统&#xff01;该系统主要功能如下&#xff1a; 添加学生&#xff1a;通过键盘录入学生信息&#xff0c;添加到集合中 删除学生&#xff1a;通过键盘录入要删除学生的学号&#xff0c;将该学生对象从集合中删除 修改学生&…

Java学生信息管理系统

一、选题设计思想 学生信息管理系统是典型的信息管理系统(MIS)&#xff0c;其开发主要包括后台数据库的建立和维护以及前端应用程序的开发。对于前者要求建立起数据一致性和完整性强、安全性高的数据库&#xff1b;对于后者则要求应用程序具有功能完备、易使用、易维护等特点。…

学生管理系统(Java实现)

一、学生信息管理程序 基本要求&#xff1a; 1&#xff0e;要求实现学生信息的使用添加、查找、删除、修改等几个功能&#xff0c;每个功能模块均能实现从模块中退出&#xff0c;从而完成一个学生管理系统所需功能。 2&#xff0e;要使用结构体来实现对学生信息的存储。 3&am…

【JAVA】学生信息管理系统

目录 前言 一、环境搭建 二、功能实现 1.学生信息类的创建 2.学生信息的添加功能 3.学生信息的删除功能 4.学生信息的修改功能 5.学生信息的查看功能 三、主类的调用 1.界面的搭建 2.学生端和教师端 3.系统和功能的选择 总结 前言 JAVA实现的学生信息管理…

Java 学生管理系统(详解)

文章目录 学生类main方法首界面登录功能选择界面添加学生信息删除学生信息修改学生信息查看学生信息 学号遍历 和 清空控制台方法附&#xff1a;学生管理系统代码Student .JavaMain.JavaFunctionModule.javaExtents.Java 总结 下面会分享我在做这个练习时的一些方法以及程序代码…

【超详细】Java实现学生信息管理系统

项目介绍&#xff1a;用java实现学生信息的管理&#xff0c;其中录入的数据包括&#xff1a;学号、姓名、年龄、居住地等&#xff0c;并且能够实现对学生信息的添加、修改、删除、查看功能。 一、创建项目 1、项目名称&#xff1a;myStudentManager 二、创建包 1、包名称&a…

基于JAVA实现的简易学生信息管理系统(附源码)

一、前言 最近在学习JAVA&#xff0c;这几天跟着网上的视频学完基础知识之后&#xff0c;做了一个学生信息管理系统&#xff0c;写的比较普通&#xff0c;没太大亮点&#xff0c;希望可以给初学者一些参考经验&#xff0c;另外&#xff0c;如有不恰当的地方还请各位指正&am…

java学生管理系统(简单版)

简单实现学生信息添加、删除&#xff0c;修改、查询功能。根据需求&#xff0c;创建一个学生类和学生管理类&#xff0c;用容器存储学生信息&#xff0c;这里用到ArrayList<E>(ArrayList类是一个可动态修改的数组&#xff0c;使用之前需要导包import java.util.ArrayList…

Keil打开工程时,解决“Loading PDSC Debug Description Failed”错误

网上搜到一个方法是&#xff0c;把Keil.STM32Lxxx_DFP.pdsc文件中&#xff0c;删除行“Message(2, "Not a genuine ST Device! Abort connection.");”&#xff0c; 这个方法属于掩耳盗铃&#xff0c;只是不让他弹出错误而已。 正确的解决方法是&#xff0c;安装与…

STM32 Keil新建工程报错“Loading PDSC Debug Description Failed for STMicroelectronics STM32Lxxxxxxx”

在使用STM32L0xx系列和STM32L4xx系列的单片机时都遇到了打开keil工程报“Loading PDSC Debug Description Failed for STMicroelectronics STM32Lxxxxxxx”错误的问题&#xff0c;具体现象和解决方法如下图文所示&#xff1a; 找到keil的Build Output窗口提示的File路径&#x…

解决Keil安装Pack包的“Loading PDSC Debug Description Failed”错误

vision Loading PDSC Debug Description failed for STMicroelectronics STM32F103ZE Disabling usage of PDSC Debug DescriptionSee Build Output for details. connection.");" 具体的错误信息&#xff0c;可以在Build Output中查看&#xff0c;如下图所示。这个…

Disabling usage of PDSC Debug Description

STM32 Keil新建工程报错“Loading PDSC Debug Description Failed for STMicroelectronics STM32Lxxxxxxx” 在使用STM32L0xx系列和STM32L4xx系列的单片机时都遇到了打开keil工程报“Loading PDSC Debug Description Failed for STMicroelectronics STM32Lxxxxxxx”错误的问题…

Loading PDSC Debug Description failed for STMicroelectronics STM32F103ZF Disabling usage of PDSC Deb

用 STM32F103 软件仿真 &#xff0c;还需要下载安装 STM32F103 pack 文件&#xff0c;如果在 MDK 中下载较慢&#xff0c;也可以点击此处下载&#xff0c;下载后双击安装即可。 当Keil新建或者打开工程出现“ Loading PDSC Debug Description failed for STMicroelectronics S…

PD协议

最近在搞PD充电部分&#xff0c;资料记录下&#xff0c;以前搞了很多项目 也记录了很多文档资料&#xff0c;不过感觉平时喜欢乱打开网站&#xff0c;而那些word文档 经常被放在一个文件夹中&#xff0c;一放就好几年。所以开始在csdn记录自己整理的东西。 定义&#xff1a; U…

N32G45导入芯片包出现Cannot install Pack Nationstech.N32G45x_DFP.1.0.4: Cannot find PDSC file at root direct

Cannot install Pack Nationstech.N32G45x_DFP.1.0.4: Cannot find PDSC file at root directory of Pack archive 最近训练营要求用到国产芯片N32G45X系列的芯片&#xff0c;但是在keil中导入芯片包时出现了以下问题&#xff1a; Cannot install Pack Nationstech.N32G45x_DF…