抽象类及继承

应用抽象类及继承编写程序。输出本科生及研究生的成绩等级。要求:首先设计抽象类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());
}
}
}
发布了65 篇原创文章 · 获赞 4 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/gl620321/article/details/102863504