先定义一个学生类
public class Student {
Scanner sc=new Scanner(System.in);
static Student[] stu=new Student[100];
private String name;
private int number;
private static int student_number=0;
private int subject_number=1;
private int average;
Grade[] grade=new Grade[50];
int averageCount()
{
int score=0;
for(int i=1;i<=this.subject_number;i++)
{
score=score+this.grade[i].score;
}
return (score/this.subject_number);
}
public void menu()
{int a;
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("请输入(1~5)其中一个数字");
a=sc.nextInt();
switch(a)
{
case 1:this.add();break;
case 2:this.high();break;
case 3:this.low();break;
case 4:this.printGrade();break;
case 5:System.out.println("exit!");
}
}
private void add() {
int a;
System.out.println("请输入要录入的学生数:");
a=sc.nextInt();
System.out.println("***********请按:学号 学生姓名 学科数 学科科目编号 学科科目 学科成绩 的顺序输入,并以空格结尾**********");
for(int i=Student.student_number+1;i<=Student.student_number+a;i++)
{
stu[i].number=sc.nextInt();
stu[i].name=sc.next();
stu[i].subject_number=sc.nextInt();
for(int f=1;f<=stu[i].subject_number;f++)
{
stu[i].grade[f].num=sc.nextInt();
stu[i].grade[f].name=sc.next();
stu[i].grade[f].score=sc.nextInt();
}
}
System.out.println("您已输入"+a+"名学生的数据");
Student.student_number+=a;
System.out.println("当前共有"+Student.student_number+"名学生的数据");
this.menu();
}
private void high() {
int highest=0;
int[] highstu=new int[10];
int j=0;
for(int i=1;i<=Student.student_number;i++)
{
if (stu[i].averageCount()>=highest)
{
j=1;
highstu[j]=i;
highest=stu[i].averageCount();
}
else if(stu[i].averageCount()==highest)
{
j++;
highstu[j]=i;
}
}
System.out.println("学生中最高平均分为:"+highest);
System.out.println("对应学生为:");
for(int i=1;i<=j;i++)
{
System.out.println(stu[highstu[i]].name+" ");
}
this.menu();
}
private void low() {
int lowest=500;
int[] highstu=new int[10];
int j=0;
for(int i=1;i<=Student.student_number;i++)
{
if (stu[i].averageCount()<=lowest)
{
j=1;
highstu[j]=i;
lowest=stu[i].averageCount();
}
else if(stu[i].averageCount()==lowest)
{
j++;
highstu[j]=i;
}
}
System.out.println("学生中最低平均分为:"+lowest);
System.out.println("对应学生为:");
for(int i=1;i<=j;i++)
{
System.out.println(stu[highstu[i]].name+" ");
}
this.menu();
}
private void printGrade() {
System.out.println("请输入要查询的学生姓名");
String name_input =sc.next();
int i=1;
while(!name_input.equals(stu[i].name))
{i++;}
if (i>Student.student_number)
{
System.out.println("未查询到该学生");
}
else
{
System.out.println("学生"+stu[i].name+"的各项成绩为:");
for(int f=1;f<=stu[i].subject_number;f++)
{
System.out.println("科目"+f+":"+stu[i].grade[f].num+stu[i].grade[f].name+"的成绩为"+stu[i].grade[f].score+"\n");
}
}
this.menu();
};
}
成绩用到的类
public class Grade {
String name;
int num;
int score;
}
主程序
public class StudentSystem {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
Student class1=new Student();
for(int i=0;i<100;i++)
{
stu[i]=new Student();
for(int j=0;j<50;j++)
{
stu[i].grade[j]=new Grade();
}
}
class1.menu();
}
}
以下是操作界面,用到的输入比较直白,而且我不知道怎么用java识别输入的回车或者分号,只能在输入时要求提前输入科目数量