avg:分别统计学生或课程
get song Java:输出song的Java成绩
sort C:输出所有学生在C课程下的排名
new:重新输入学生的成绩
首先应定义静态变量:
static String[] student={"zhang","wang","li","zhao","liu","song"};
static String[] courses={"C","Java","mySQL","Linux","HTMl"};//
static int[][] score=new int[6][5];//静态变量储存在静态存储区
然后定义一个求平均数的方法avg
public void avg()
{
String sonn;
Scanner sonm=new Scanner(System.in);
sonn= sonm.nextLine();//输入String变量
if("C".equals(sonn)||"Java".equals(sonn)||"mySQL".equals(sonn)||"Linux".equals(sonn)||"HTML".equals(sonn))
{
avgcou(sonn);//若string变量为课程名,执行此方法
}
else if("zhang".equals(sonn)||"wang".equals(sonn)||"li".equals(sonn)||"zhao".equals(sonn)||"liu".equals(sonn)||"song".equals(sonn))
{
avgstu(sonn);//若string变量为学生名,执行此方法
}
else若string变量既不是学生名也不是课程名,执行此方法
System.out.println("你输入的既不是课程名,也不是学生名");
}
avgcou方法:
public void avgcou(String son)
{
double sum=0.0;
int i=0,j=0;
for(i=0;i<5;i++)//
{
if(courses[i].equals(son))//逐个判断输入课程名在数组中的位置
{
for(j=0;j<6;j++)
{
sum+=score[j][i];//根据输入课程名累加学生成绩
}
break;
}
}
System.out.print(son+"的平均分是:");
System.out.printf("%.2fn",sum/6);//实型输出平均数
}
avgstu方法:
public void avgstu(String son)
{
double sum=0.0;
int i=0,j=0;
for(i=0;i<6;i++)
{
if(student[i].equals(son))//逐个判断输入学生名在数组中的位置
{
for(j=0;j<5;j++)
{
sum+=score[i][j];//根据输入学生名累加课程成绩
}
break;
}
}
System.out.print(son+"的平均分是:");
System.out.printf("%.2fn",sum/5);//实型输出平均数
}
get方法:
public void get()
{
int i=0,j=0,k=0;
String sonn,son2;
Scanner sonm=new Scanner(System.in);
sonn= sonm.nextLine();//将学生的名赋值给String变量
son2= sonm.nextLine();//将课程的名赋值给String变量
if("zhang".equals(sonn)||"wang".equals(sonn)||"li".equals(sonn)||"zhao".equals(sonn)||"liu".equals(sonn)||"song".equals(sonn))//判断输入是否为学生名
{
for(j=0;j<6;j++)
{
if(student[j].equals(sonn))
break;
}
for(i=0;i<5;i++)
{
if(courses[i].equals(son2))
{
System.out.print(student[j]+"的"+courses[i]+"的成绩是:");System.out.println(score[j][i]);k=1;
}
}
if(k==0)//若输入课程名不存在,则执行以下语句
System.out.println(sonn+"没有"+son2+"这门课程");
}
else//若输入学生名不存在,则执行以下语句
System.out.println("没有"+sonn+"这个人");
}
sort方法:
public void sort()
{
int[] a=new int[6];//用于排序学生的成绩
String[] b=new String[6];//用于排序学生的名
String c;
int i=0,j=0,t=0;
String sonn;
Scanner sonm=new Scanner(System.in);
sonn= sonm.nextLine();
if("C".equals(sonn)||"Java".equals(sonn)||"mySQL".equals(sonn)||"Linux".equals(sonn)||"HTML".equals(sonn))//判断输入的课程名是否存在
{
for(i=0;i<5;i++)
{
if(courses[i].equals(sonn))
{
break;//保留课程在数组中的位置
}
}
for(j=0;j<6;j++)
a[j]=score[j][i];//将score数组中存储的成绩赋给a[],用于交换
for(j=0;j<6;j++)
b[j]=student[j];//将student数组中存储的学生名赋给b[],用于交换
for(i=0;i<5;i++)
for(j=i+1;j<6;j++)
if(a[i]>a[j])//交换数值
{
t=a[i];a[i]=a[j];a[j]=t;
c=b[i];b[i]=b[j];b[j]=c;
}
System.out.println("名次 姓名 "+sonn);
for(i=0;i<6;i++)//输出表格
{
System.out.print(i+1);//输出序号
System.out.printf(" %-8s",b[i]);//“%-8”加负号表示左对齐,最小八位长度,不足八位向右补空格,不加默认右对齐,不足八位向左补空格
System.out.println(a[i]);//输出成绩
}
}
else
System.out.println("没有这门课程");
}
main方法:
public static void main(String[] args)
{
String son1;
M416 inn=new M416();
inn.shiyongsuoming();
inn.shuru();
Scanner son=new Scanner(System.in);
while(true)//循环,可反复输入
{
System.out.print("请输入命令:");
son1= son.nextLine();
if("avg".equals(son1))//若输入avg,则执行
{
inn.avg();
}
if("get".equals(son1))//若输入get,则执行
{
inn.get();
}
if("sort".equals(son1))//若输入sort,则执行
inn.sort();
if("exit".equals(son1))//若输入exit,则执行
{
System.out.printf("退出查询系统,byebye!");
break;
}
if("new".equals(son1))//重新给score数组赋值
{
inn.shuru();
}
}
}
代码如下:
import java.util.Scanner;
public class M416
{
static String[] student={"zhang","wang","li","zhao","liu","song"};
static String[] courses={"C","Java","mySQL","Linux","HTMl"};//
static int[][] score=new int[6][5];
public void avgcou(String son)
{
double sum=0.0;
int i=0,j=0;
for(i=0;i<5;i++)//
{
if(courses[i].equals(son))//逐个判断输入课程名在数组中的位置
{
for(j=0;j<6;j++)
{
sum+=score[j][i];//根据输入课程名累加学生成绩
}
break;
}
}
System.out.print(son+"的平均分是:");
System.out.printf("%.2fn",sum/6);//实型输出平均数
}
public void avgstu(String son)
{
double sum=0.0;
int i=0,j=0;
for(i=0;i<6;i++)
{
if(student[i].equals(son))//逐个判断输入学生名在数组中的位置
{
for(j=0;j<5;j++)
{
sum+=score[i][j];//根据输入学生名累加课程成绩
}
break;
}
}
System.out.print(son+"的平均分是:");
System.out.printf("%.2fn",sum/5);//实型输出平均数
}
public void shuru()
{
System.out.println("请输入学生的各科成绩,每行按科目顺序输入该学生的各科成绩,每输入一项成绩空一格,输入完后回车进入下一名学生的成绩输入,直至输入结束:");
int i=0,j=0;
Scanner inn=new Scanner(System.in);
for(i=0;i<6;i++)
for(j=0;j<5;j++)
score[i][j]=inn.nextInt();
}
public void avg()
{
String sonn;
Scanner sonm=new Scanner(System.in);
sonn= sonm.nextLine();//输入String变量
if("C".equals(sonn)||"Java".equals(sonn)||"mySQL".equals(sonn)||"Linux".equals(sonn)||"HTML".equals(sonn))
{
avgcou(sonn);//若string变量为课程名,执行此方法
}
else if("zhang".equals(sonn)||"wang".equals(sonn)||"li".equals(sonn)||"zhao".equals(sonn)||"liu".equals(sonn)||"song".equals(sonn))
{
avgstu(sonn);//若string变量为学生名,执行此方法
}
else若string变量既不是学生名也不是课程名,执行此方法
System.out.println("你输入的既不是课程名,也不是学生名");
}
public void get()
{
int i=0,j=0,k=0;
String sonn,son2;
Scanner sonm=new Scanner(System.in);
sonn= sonm.nextLine();//将学生的名赋值给String变量
son2= sonm.nextLine();//将课程的名赋值给String变量
if("zhang".equals(sonn)||"wang".equals(sonn)||"li".equals(sonn)||"zhao".equals(sonn)||"liu".equals(sonn)||"song".equals(sonn))//判断输入是否为学生名
{
for(j=0;j<6;j++)
{
if(student[j].equals(sonn))
break;
}
for(i=0;i<5;i++)
{
if(courses[i].equals(son2))
{
System.out.print(student[j]+"的"+courses[i]+"的成绩是:");System.out.println(score[j][i]);k=1;
}
}
if(k==0)//若输入课程名不存在,则执行以下语句
System.out.println(sonn+"没有"+son2+"这门课程");
}
else//若输入学生名不存在,则执行以下语句
System.out.println("没有"+sonn+"这个人");
}
public void sort()
{
int[] a=new int[6];//用于排序学生的成绩
String[] b=new String[6];//用于排序学生的名
String c;
int i=0,j=0,t=0;
String sonn;
Scanner sonm=new Scanner(System.in);
sonn= sonm.nextLine();
if("C".equals(sonn)||"Java".equals(sonn)||"mySQL".equals(sonn)||"Linux".equals(sonn)||"HTML".equals(sonn))//判断输入的课程名是否存在
{
for(i=0;i<5;i++)
{
if(courses[i].equals(sonn))
{
break;//保留课程在数组中的位置
}
}
for(j=0;j<6;j++)
a[j]=score[j][i];//将score数组中存储的成绩赋给a[],用于交换
for(j=0;j<6;j++)
b[j]=student[j];//将student数组中存储的学生名赋给b[],用于交换
for(i=0;i<5;i++)
for(j=i+1;j<6;j++)
if(a[i]>a[j])//交换数值
{
t=a[i];a[i]=a[j];a[j]=t;
c=b[i];b[i]=b[j];b[j]=c;
}
System.out.println("名次 姓名 "+sonn);
for(i=0;i<6;i++)//输出表格
{
System.out.print(i+1);//输出序号
System.out.printf(" %-8s",b[i]);//“%-8”加负号表示左对齐,最小八位长度,不足八位向右补空格,不加默认右对齐,不足八位向左补空格
System.out.println(a[i]);//输出成绩
}
}
else
System.out.println("没有这门课程");
}
public void shiyongsuoming()//使用说明
{
System.out.println("使用说明:");
System.out.println("每输入一个不用空格隔开的名称则按Enter键,大小写要区分");
System.out.println("1.查询平均分:输入avg按回车,再输入学生姓名或课程名,并回车,即可输出该学生的各科平均分或该科目的平均分");
System.out.println("2.查询学生单科成绩:输入get按回车,再输入要查询的学生姓名,并回车,再输入要查询的单科成绩,即可输出该学生的该科成绩");
System.out.println("3.查询所有学生在某科下的排名:输入sort按回车,在输入要查询的课程名,并回车,即可输出所有学生在该科下的排名");
System.out.println("4.若想重新输入学生成绩,输入new并回车");
System.out.println("5.若想退出,输入exit并回车");
System.out.println();
}
public static void main(String[] args)
{
String son1;
M416 inn=new M416();
inn.shiyongsuoming();//使用说明
inn.shuru();//输入成绩
Scanner son=new Scanner(System.in);
while(true)//循环,可反复输入
{
System.out.print("请输入命令:");
son1= son.nextLine();
if("avg".equals(son1))//若输入avg,则执行
{
inn.avg();
}
if("get".equals(son1))//若输入get,则执行
{
inn.get();
}
if("sort".equals(son1))//若输入sort,则执行
inn.sort();
if("exit".equals(son1))//若输入exit,则执行
{
System.out.printf("退出查询系统,byebye!");
break;
}
if("new".equals(son1))//重新给score数组赋值
{
inn.shuru();
}
}
}
static
{
System.out.println("欢迎使用学生成绩查询系统!");//先于main方法被执行
}
}



