应用抽象类及继承编写程序。输出本科生及研究生的成绩等级。要求:首先设计抽象类student,它包含学生的一些基本信息,包括:姓名、学生类型、三门课程的成绩和成绩的等级等;其次,设计student类的两个子类------本科生类Understudent和 研究生类Graduate,二者在计算成绩等级时有区别,具体见下表,最后创建测试类进行测试
abstract class Student { final static int COURSE_COUNT=3; private String name; private String type; private int[] scores; private String grade; public Student(String name) { this.name=name; } public String getName() { return name; } public void setType(String type) { this.type=type; } public String getType() { return type; } public void setScores(int[] scores) { this.scores=scores; } public int[] getScores() { return scores; } public void setGrade(String grade) { this.grade=grade; } public String getgrade() { return grade; } public abstract String calculateGrade(); } //本科生类 class Undergraduate extends Student{ public Undergraduate(String name,int[] scores) { super(name); this.setType("本科生"); this.setScores(scores); } public String calculateGrade() { int average; int sum=0; int[] scores; scores=this.getScores(); for(int i=0;i<Student.COURSE_COUNT;i++) { sum+=scores[i]; } average=sum/Student.COURSE_COUNT; if(average>=85) { return "优秀"; }else if (average>=75) { return "良好"; }else if(average>=65) { return "中等"; }else if(average>60) { return "及格"; }else { return "不及格"; } } } //研究生类 class Graduate extends Student{ public Graduate(String name,int[] scores) { super(name); this.setType("研究生"); this.setScores(scores); } public String calculateGrade() { int average; int sum=0; int[] scores; scores=this.getScores(); for(int i=0;i<Student.COURSE_COUNT;i++) sum+=scores[i]; average=sum/Student.COURSE_COUNT; if(average>=90) { return "优秀"; }else if (average>=80) { return "良好"; }else if(average>=70) { return "中等"; }else if(average>60) { return "及格"; }else { return "不及格"; } } } //测试类 public class StudentTest{ public static void main(String[] args) { int i; Student[] S=new Student [10]; int[][] scores=new int[10][Student.COURSE_COUNT]; for(i=0;i<=5;i++) { for(int j=0;j<Student.COURSE_COUNT;j++) { scores[i][j]=(int) (Math.random()*61+40); } S[i]=new Undergraduate("本科生"+(i+1),scores[i]); S[i].setGrade(S[i].calculateGrade()); } for(i=5;i<=9;i++) { for(int j=0;j<Student.COURSE_COUNT;j++) { scores[i][j]=(int) (Math.random()*61+40); } S[i]=new Graduate("研究生"+(i-4),scores[i]); S[i].setGrade(S[i].calculateGrade()); } int[] c; for(i=5;i<10;i++) { System.out.println(S[i].getName()+"\t"); System.out.println(S[i].getType()+"\t"); c=S[i].getScores(); for(int j=0;j<Student.COURSE_COUNT;j++) { System.out.println(c[j]+"\t"); } System.out.println(S[i].getgrade()); } } }