应用抽象类及继承编写程序。输出本科生及研究生的成绩等级。要求:首先设计抽象类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());
}
}
}