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

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

目录

一、题目要求

 二、设计思路

(2)代表课程的类——Course类

(3)具体功能实现类——Function类

(4)测试类——Test类

三、代码实现

(1)Student.java文件

(2)Course.java文件

(3)Function.java文件

(4)Test.java文件


一、题目要求

        编写一个学生成绩管理系统。学生的属性包括学号、姓名、年龄等。每个学生要学习若干课程,每门课程有平时成绩、其中考试成绩、实习成绩、期末考试成绩以及总评成绩等多个成绩,其中平时成绩的数目不定(因为不同课程的教师布置的平时作业不同),而总评成绩是其它成绩的平均值。请先设计合理的类存放这些信息,然后设计程序完成以下功能:

1.列出某个学生的所有成绩

2.列出某门课程每个学生的总评成绩,及所有学生总评成绩的总评分

3.分区段统计某门课程的学生总评成绩,例如60分以下的学生人数、60至70分的学生人数等

运行效果:

 二、设计思路

(1)存放学生信息的类——Student类

属性:姓名、学号、年龄、所学课程集合

操作:构造方法,设置课程,查看自身信息,获得和重置学生的某一个信息的方法

(2)代表课程的类——Course类

属性:课程名、平时成绩、期中成绩、实习成绩、期末成绩、总评成绩

操作:构造方法、所有属性的get/set方法、toString方法(返回代表自身信息的字符串方法)

(3)具体功能实现类——Function类

属性:学生集合

操作:根据名字搜索学生信息、列出某门课程每个学生的总评成绩,及所有学生总评成绩的总评分、分区段统计某门课程的学生总评成绩,例如60分以下的学生人数、60至70分的学生人数等。

(4)测试类——Test类

功能:创建系统菜单

1:创建学生集合,学生信息可以从键盘输入也可以直接在函数中初始化,在这里选择从键盘输入

2:查询学生信息

3:列出某门课程每个学生的总评成绩,及所有学生总评成绩的总评分

4:分区段统计某门课程的学生总评成绩,例如60分以下的学生人数、60至70分的学生人数等

5:退出系统

三、代码实现

(1)Student.java文件

package 学生管理系统;
import java.util.Scanner;public class Student {private int age;private String id;private String Sname;private Course[] courselist;private int coursenum = 0;private static final int Maxcoursenum = 10;Scanner sc = new Scanner(System.in);//构造方法public Student(String Sname) {courselist = new Course[Maxcoursenum];boolean flag=true;String course;this.Sname=Sname;System.out.println("请输入学号:");this.id=sc.next();System.out.println("请输入年龄:");this.age=sc.nextInt();while(coursenum<Maxcoursenum) {flag=true;System.out.println("请输入所修课程:(输入end结束)");course=sc.next();if("end".equals(course)) {break;}else {for(int i=0;i<coursenum;i++) {if(courselist[i].GetCname().equals(course)) {System.out.println("课程已存在");	flag=false;}}if(flag==true) {courselist[coursenum]=new Course(course);this.coursenum++;}			}}System.out.println("学生:"+this.Sname+"创建成功");System.out.println("共修"+this.coursenum+"门课程");}//设置课程public boolean SetCourse() {String Cname;Cname=sc.next();System.out.println("请输入课程名:");for(int i=0;i<this.coursenum;i++) {if(courselist[i].GetCname().equals(Cname)) {System.out.println("课程已存在");return false;}}Course course = new Course(Cname);courselist[coursenum]=course;coursenum++;return true;}//查看自身信息public void GetMessasge() {System.out.println("该学生的成绩是:");for(int i=0;i<this.coursenum;i++) {System.out.println(courselist[i].toString());}}//重置学生姓名public void SetSname() {String new_name;System.out.println("请输入学生姓名:");new_name=sc.next();this.Sname=new_name;System.out.println("姓名修改成功");}//获得学生姓名public String GetName() {return this.Sname;}//重置学生年龄public void SetAge() {int new_age;System.out.println("请输入学生年龄:");new_age=sc.nextInt();this.age=new_age;System.out.println("年龄修改成功");}//获得学生年龄public int GetAge() {return this.age;}//重置学生学号public void SetId() {String new_id;System.out.println("请输入学生学号:");new_id=sc.next();this.id=new_id;System.out.println("学号修改成功");}//获得学生学号public String GetId() {return this.id;}//获得学生所修课程public Course[] GetCourse() {return this.courselist;}//获得学生所修课程数目public int GetCourseNum() {return this.coursenum;}
}

(2)Course.java文件

package 学生管理系统;
import java.util.Scanner;public class Course {private String Cname;private int dailyGrade;private int doGrade;private int midGrade;private int endGrade;private double sumGrade;Scanner sc = new Scanner(System.in);//初始化public Course(String Cname) {	this.Cname=Cname;System.out.println("请输入平时成绩:");this.dailyGrade=sc.nextInt();System.out.println("请输入实践成绩:");this.doGrade=sc.nextInt();System.out.println("请输入期中成绩:");this.midGrade=sc.nextInt();System.out.println("请输入期末成绩:");this.endGrade=sc.nextInt();this.sumGrade=(this.dailyGrade+this.doGrade+this.midGrade+this.endGrade)/4;}//获得课程名public String GetCname() {return this.Cname;}//修改课程名public void SetName() {System.out.println("请输入新的课程名:");this.Cname=sc.next();System.out.println("课程名修改成功");}//获得平时成绩public int GetDailyGrade() {return this.dailyGrade;}//修改平时成绩public void SetDailyGrade() {System.out.println("请输入新的平时成绩:");this.dailyGrade=sc.nextInt();System.out.println("平时成绩修改成功");}//获得实践成绩public int GetDoGrade() {return this.doGrade;}//修改实践成绩public void SetDoGrade() {System.out.println("请输入新的实践成绩:");this.doGrade=sc.nextInt();System.out.println("实践成绩修改成功");}//获得期中成绩public int GetMidGrade() {return this.midGrade;}//修改期中成绩public void SetMidGrade() {System.out.println("请输入新的期中成绩:");this.midGrade=sc.nextInt();System.out.println("期中成绩修改成功");}//获得期末成绩public int GetEndGrade() {return this.endGrade;}//修改期末成绩public void SetEndGrade() {System.out.println("请输入新的实践成绩:");this.endGrade=sc.nextInt();System.out.println("实践成绩修改成功");}//获得总评成绩public double GetSumGrade() {return this.sumGrade;}//以字符串的形式返回自身信息public String toString() {return ("Grade [course="+this.Cname+",dailyGrade="+this.dailyGrade+",doGrade="+this.doGrade+",midGrade="+this.midGrade+",endGrade="+this.endGrade+",sumGrade="+this.sumGrade+"]");}
}

(3)Function.java文件

package 学生管理系统;
import java.util.Scanner;public class Function {private Student[] studentlist;private int studentnum=0;Scanner sc=new Scanner(System.in);public Function() {studentlist=new Student[100];}//添加学生public boolean AddStudent() {String name;System.out.println("请输入学生姓名:");name=sc.next();for(int i=0;i<studentnum;i++) {if(studentlist[i].GetName().equals(name)) {System.out.println("学生已存在!");return false;}}		studentlist[studentnum]=new Student(name);studentnum++;return true;}//根据名字搜索学生信息public void GetStuByName(String Sname) {boolean flag=false;for(int i=0;i<studentnum;i++) {if(studentlist[i].GetName().equals(Sname)) {studentlist[i].GetMessasge();flag=true;}}if(flag==false) {System.out.println("学生不存在!");}}//列出某门课程每个学生的总评成绩和所有学生的总评成绩的总评分(平均值)public void GetSumByCname(String Cname) {int sumgrade=0;int sum=0;for(int i=0;i<studentnum;i++) {for(int j=0;j < studentlist[i].GetCourseNum();j++) {if(studentlist[i].GetCourse()[j].GetCname().equals(Cname)) {System.out.println(studentlist[i].GetName()+"的总评分是"+studentlist[i].GetCourse()[j].GetSumGrade());sumgrade+=studentlist[i].GetCourse()[j].GetSumGrade();sum+=1;break;}}}if(sum==0) {System.out.println("没有学生选修该课程!");}else {System.out.println("所有学生的总评成绩的总评分为:"+sumgrade/sum);}}//分区段统计某门课程学生的总评成绩public void GetSumByCnameAndSector(String Cname) {boolean flag=false;int[] grade=new int[5];for(int i=0;i<studentnum;i++) {for(int j=0;j < studentlist[i].GetCourse().length;j++) {if(studentlist[i].GetCourse()[j].GetCname().equals(Cname)) {System.out.println("学生"+studentlist[i].GetName()+"的总评成绩为"+studentlist[i].GetCourse()[j].GetSumGrade());flag=true;if(studentlist[i].GetCourse()[j].GetSumGrade()<60) {grade[0]+=1;break;}if(studentlist[i].GetCourse()[j].GetSumGrade()<70) {grade[1]+=1;break;}if(studentlist[i].GetCourse()[j].GetSumGrade()<80) {grade[2]+=1;break;}if(studentlist[i].GetCourse()[j].GetSumGrade()<90) {grade[3]+=1;break;}if(studentlist[i].GetCourse()[j].GetSumGrade()<100) {grade[4]+=1;break;}}}}if(flag==true) {System.out.println("60分以下的有"+grade[0]+"人");System.out.println("60~70分以下的有"+grade[1]+"人");System.out.println("70~80分以下的有"+grade[2]+"人");System.out.println("80~90分以下的有"+grade[3]+"人");System.out.println("90分以上的有"+grade[4]+"人");}else {System.out.println("没有学生选修该课程!");}}
}

(4)Test.java文件

package 学生管理系统;
import java.util.Scanner;public class Test {public static void main(String[] args) {boolean flag=true;String Sname;String Cname;Scanner sc = new Scanner(System.in);Function clbum=new Function();int choice;while(flag==true) {try {System.out.println("请选择服务:1.添加学生 2.列出某个学生的所有成绩 3.列出某门课程的总评分 4.分区段统计某门课程的学生总评成绩 5.退出");choice = sc.nextInt();switch(choice) {case 1:if(clbum.AddStudent()==true) {System.out.println("添加成功");}else {System.out.println("添加失败!");}break;case 2:					System.out.println("请输入学生姓名:");Sname=sc.next();clbum.GetStuByName(Sname);break;case 3:					System.out.println("请输入课程名称:");Cname=sc.next();clbum.GetSumByCname(Cname);break;case 4:System.out.println("请输入课程名称:");Cname=sc.next();clbum.GetSumByCnameAndSector(Cname);break;case 5:flag=false;break;default:System.out.println("1");System.out.println("输入不符合要求!");break;}}catch(Exception e) {System.out.println("输入不符合要求!");sc = new Scanner(System.in);}}}
}

如果有疑问欢迎在评论区交流或私聊我哦


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

相关文章

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…

SDP简介

1 概述 SDP制订的目的是描述多媒体会话&#xff0c;如会话通知、会话邀请或其他发起多媒体会话的形式。 SDP是纯粹的会话的描述格式而不是一个传输协议。它可以使用不同的传输协议&#xff0c;包括会话通知协议&#xff08;SAP&#xff09;、会话初始协议&#xff08;SIP&…

MDK5/KeiluVsion5安装报错“Download of PDSC index file failed”

一、原因一分析&#xff1a; 1.先从字面分析&#xff1a;Download of PDSC index file failed中文意思是PDSC这个索引文件下载错误。首先我们要知道&#xff0c;刚开始安装软件或当你进入Pack Installer界面时&#xff0c;软件会从Keil官网更新下载keil软件所需要的一些芯片包…

Keil5 “Loading PDSC Debug Description Failed for STMicroelectronics STM32Hxxxxxxx”解决办法

最近在学习STM32H750&#xff0c;但是在创建工程的时候就发现了一个问题&#xff0c;如图所示&#xff1a; 虽然不清楚这个问题是否会影响后面编译和烧录&#xff0c;但是感觉有这种警告还是不爽的&#xff0c;所以这里记录一下。 按照这个路径&#xff0c;找到这个pdsc后缀的…

打开Keil.STM32F4xx_DFP.2.13.0提示Cannot copy PDSC file to Download

打开Keil.STM32F4xx_DFP.2.13.0提示Cannot copy PDSC file to “Download” folder 一、问题&#xff1a; keil5安装好后直接安装添加.pack时提示Cannot copy PDSC file to “Download” folder。以为是版本问题或者keil4等在同一个盘中&#xff0c;下了好几个版本又分盘安装&…

sdp详解

SDP文件解析 一、SDP协议介绍 SDP 完全是一种会话描述格式 ― 它不属于传输协议 ― 它只使用不同的适当的传输协议&#xff0c;包括会话通知协议&#xff08;SAP&#xff09;、会话初始协议&#xff08;SIP&#xff09;、实时流协议&#xff08;RTSP&#xff09;、MIME 扩展协…