1、内容要求
编写一个学生成绩管理系统。学生的属性包括学号、姓名、年龄等。每个学生要学习若干课程,每门课程有平时成绩、期中考试成绩、期末考试成绩以及总评成绩,其中总评成绩=平时成绩*30%+期中成绩*30%+期末成绩*40%。请先设计合理的类存放这些信息,然后设计程序完成以下功能:
列出某个学生的所有成绩;
列出某门课程每个学生的总评成绩,及所有学生总评成绩的平均值;
分区段统计某门课程的学生总评成绩,例如60分以下的学生人数、60至70分的学生人数等。
功能1:录入学生信息(部分数据录入)
功能2: 查询学生信息
功能3:查询某门课程每个学生总评成绩及平均分
功能4:查询某门课程学生成绩区段
功能5:退出系统
package hello;
import java.util.Scanner;
class Student{
String name;
String sno;
String age;
String crouse[]=new String[5];
public Student(String name,String sno,String age/*,String crouse[]*/)
{
this.name=name;
this.age=age;
this.sno=sno;
//for(int i=0;i<=5;i++)
//this.crouse[i]=crouse[i];
}
//写一个Tostring函数,得到每位同学的信息
public String getno() {
return "学号:"+sno;
}
public String getname() {
return "姓名:"+name;
}
public String getage() {
return "年龄:"+age;
}
public String getno2()
{
return sno;
}
}
class Crouse {
double dailygrade;
double midgrade;
double dograde;
double endgrade;
double sumgrade;
Crouse(double dailygrade,double midgrade,double dograde,double endgrade)//构造方法导入数据
{
this.dailygrade=dailygrade;
this.midgrade=midgrade;
this.dograde=dograde;
this.endgrade=endgrade;
this.sumgrade=this.dailygrade*0.3+this.midgrade*0.3+this.endgrade*0.4;
}
public String getdailygrade() {
return "dailyGrade="+this.dailygrade;
}
public String getmidgrade() {
return "midGrade="+this.midgrade;
}
public String getdograde() {
return "doGrade="+this.dograde;
}
public String getendgrade(){
return "endGrade="+this.endgrade;
}
public String getsumgrade() {
return "sumGrade="+this.sumgrade;
}
double getdailygrade2() {
return this.dailygrade;
}
double getmidgrade2() {
return this.midgrade;
}
double getdograde2() {
return this.dograde;
}
double getendgrade2(){
return this.endgrade;
}
double getsumgrade2() {
return this.sumgrade;
}
}
class Powertrue{
}
public class sd {
static Scanner sc=new Scanner(System.in);
static Scanner sc2=new Scanner(System.in);
public static void main(String[] args) {
int flag=0;
Student []arr1=new Student[5];//定义学生数组
String []arr2=new String[5];//记录课程名称
String []arr3=new String[5];//记录每门课的考核名称
Crouse [][]arr4=new Crouse[5][5];//定义二维课程数组,记录五个人中每个人的五门课程中的四项成绩
arr3[0]="dailygrade";
arr3[1]="midgrade";
arr3[2]="dograde";
arr3[3]="endgrade";
arr2[0]="高数";
arr2[1]="java";
arr2[2]="语文";
arr2[3]="英语";
arr2[4]="计算机";
System.out.print("----学生成绩管理系统----"+"\n");
System.out.print("1.录入学生信息"+"\n"+"2.查询学生信息"+"\n"+"3.查询某门课程每个学生总评成绩及平均分"+"\n"+"4.查询某门课程学生成绩区段"+"\n"+"5.退出系统"+"\n"+"请输入您要选择的功能:");
int n=sc.nextInt();
while(true)
{
switch (n)
{
case 1:
{
for(int i=0;i<=4;i++)
{
System.out.print("正在录入第"+(i+1)+"个学生的信息");
String [] c=new String[3];
System.out.print("姓名:"+"\n");
c[0]=sc.next();
System.out.print("学号:"+"\n");
c[1]=sc.next();
System.out.print("年龄:"+"\n");
c[2]=sc.next();
arr1[i]=new Student(c[0],c[1],c[2]);//将姓名,年龄学号传给Student类中
for(int j=0;j<=4;j++)
{
double grade[]=new double [4];
System.out.print("正在录入第"+(i+1)+"个学生的"+arr2[j]+"成绩"+"\n");
for(int k=0;k<=3;k++)
{
System.out.print("正在录入第"+(i+1)+"个学生的"+arr2[j]+"成绩中的"+arr3[k]+"\n");
grade[k]=sc.nextInt();
}
arr4[i][j]=new Crouse(grade[0],grade[1],grade[2],grade[3]);
}
}
System.out.print("1.录入学生信息"+"\n"+"2.查询学生信息"+"\n"+"3.查询某门课程每个学生总评成绩及平均分"+"\n"+"4.查询某门课程学生成绩区段"+"\n"+"5.退出系统"+"\n"+"请输入您要选择的功能:"+"\n");
n=sc.nextInt();
break;
}
case 2:
System.out.print("请输入你要查询学生的学号"+"\n");
String d=sc2.nextLine();
for(int e=0;e<=4;e++)//5次遍历,去找出与其相等的学号
{
if(d.equals(arr1[e].getno2()))
{
System.out.print(arr1[e].getname()+"\n");
System.out.print(arr1[e].getage()+"\n");
System.out.print(arr1[e].getno()+"\n");
System.out.print("该学生的成绩是:"+"\n");
for(int f=0;f<=4;f++)//这层循环是看这个学生的五门课的成绩
{
System.out.print("Grade ["+"crouse="+arr2[f]+","+arr4[e][f].getdailygrade()+","+arr4[e][f].getmidgrade()+","+arr4[e][f].getdograde()+","+arr4[e][f].getendgrade()+","+arr4[e][f].getsumgrade()+"]"+"\n");
}
}
}
System.out.print("1.录入学生信息"+"\n"+"2.查询学生信息"+"\n"+"3.查询某门课程每个学生总评成绩及平均分"+"\n"+"4.查询某门课程学生成绩区段"+"\n"+"5.退出系统"+"\n"+"请输入您要选择的功能:"+"\n");
n=sc.nextInt();
break;
case 3:
System.out.print("请输入你要查询的课程:"+"\n"+"1.高数"+"\n"+"2.java"+"\n"+"3.语文"+"\n"+"4.英语"+"\n"+"5.计算机");
int crou=sc.nextInt();
double []sum= {0,0,0,0,0};
if(crou==1)
{
System.out.print("高数的学生总评成绩"+"\n");
for(int i=0;i<=4;i++)
{
System.out.print(arr1[i].getname()+"="+arr4[i][0].getsumgrade()+"\n");
sum[0]+=arr4[i][0].getsumgrade2();
}
System.out.print("高数总评平均分:"+sum[0]/5);
}
else if(crou==2)
{
System.out.print("java的学生总评成绩"+"\n");
for(int i=0;i<=4;i++)
{
System.out.print(arr1[i].getname()+"="+arr4[i][1].getsumgrade()+"\n");
sum[1]+=arr4[i][1].getsumgrade2();
}
System.out.print("java总评平均分:"+sum[1]/5);
}
else if(crou==3)
{
System.out.print("语文的学生总评成绩"+"\n");
for(int i=0;i<=4;i++)
{
System.out.print(arr1[i].getname()+"="+arr4[i][2].getsumgrade()+"\n");
sum[2]+=arr4[i][2].getsumgrade2();
}
System.out.print("语文总评平均分:"+sum[2]/5);
}
else if(crou==4)
{
System.out.print("英语的学生总评成绩"+"\n");
for(int i=0;i<=4;i++)
{
System.out.print(arr1[i].getname()+"="+arr4[i][3].getsumgrade()+"\n");
sum[3]+=arr4[i][3].getsumgrade2();
}
System.out.print("英语总评平均分:"+sum[3]/5);
}
else if(crou==5)
{
System.out.print("计算机的学生总评成绩"+"\n");
for(int i=0;i<=4;i++)
{
System.out.print(arr1[i].getname()+"="+arr4[i][4].getsumgrade()+"\n");
sum[4]+=arr4[i][4].getsumgrade2();
}
System.out.print("计算机总评平均分:"+sum[4]/5+"\n");
}
System.out.print("1.录入学生信息"+"\n"+"2.查询学生信息"+"\n"+"3.查询某门课程每个学生总评成绩及平均分"+"\n"+"4.查询某门课程学生成绩区段"+"\n"+"5.退出系统"+"\n"+"请输入您要选择的功能:"+"\n");
n=sc.nextInt();
break;
case 4:
//此功能只列出高数分区段人数;其余同理
int sum1=0,sum2=0,sum3=0;
for(int i=0;i<=4;i++)
{
if(arr4[i][0].getsumgrade2()<=60)
{
sum1+=1;
}
else if(arr4[i][0].getsumgrade2()>60&&arr4[i][0].getsumgrade2()<=70)
{
sum2+=1;
}
else if(arr4[i][0].getsumgrade2()>70&&arr4[i][0].getsumgrade2()<=100)
{
sum3+=1;
}
}
System.out.print("高数成绩低于60分的人数:"+sum1+"\n");
System.out.print("高数成绩高于于60分低于70的人数:"+sum2+"\n");
System.out.print("高数成绩高于70分低于100分的人数:"+sum3+"\n");
System.out.print("1.录入学生信息"+"\n"+"2.查询学生信息"+"\n"+"3.查询某门课程每个学生总评成绩及平均分"+"\n"+"4.查询某门课程学生成绩区段"+"\n"+"5.退出系统"+"\n"+"请输入您要选择的功能:"+"\n");
n=sc.nextInt();
break;
default:
System.out.print("您已安全退出!"+"\n");
flag=1;
break;
}
if(flag==1)
break;
}
}
}
首先要在输入数据之后的效果图,最好输入五个学生,学号按12345来归置