目录
一、题目要求
二、设计思路
(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);}}}
}
如果有疑问欢迎在评论区交流或私聊我哦