關於java中的繼承(老師剛講完繼承,就給我們這麼一道作業)

ComputerSpe.java

/********************************************************************
 * 某学校计算机专业招收研究生,共有三个专业方向:                    *
 * 软件工程专业入学考试科目为:离散数学、软件工程、面向对象设计   *
 * 数据库应用专业入学考试科目为:数据库应用、离散数学     *
 * 网络专业的入学考试科目为:计算机通信、图文设计及优化、离散数学、英语 *
 * 每个学生考试时要填写(考号、姓名、身份证号)       *
 *                  *
 * 实现以下功能:1、采用继承实现类的设计        *
 *     2、分别求出各专业考生的平均成绩、且输出各专业的排名. *
 ********************************************************************/
package extendsTest;

/**
 * @author 杨忠盛
 * @version 1.0 , 2007-3-24
 */
public abstract class ComputerSpe {

 /**存储考生考号*/
 private String stu_No;
 
 /**存储考生姓名*/
 private String stu_Name;
 
 /**存储考生身份证号*/
 private String stu_IDCard;
 
 /**存储考生平均成绩*/
 private double stu_AveGrade;
 
 /**存储考生离散数学的成绩*/
 private double grade_Math;
 
 /**
  * 构造方法,无参
  */
 protected ComputerSpe(){
  
 }
 /**带参构造方法*/
 protected ComputerSpe(String no,String name,String idCard,double mathG){
  
  this.stu_No = no;
  this.stu_Name = name;
  this.stu_IDCard = idCard;
  this.grade_Math = mathG;
 }

 /**
  * @return stu_AveGrade
  */
 public double getStu_AveGrade() {
  return stu_AveGrade;
 }

 /**
  * @param stu_AveGrade 要设置的 stu_AveGrade
  */
 public void setStu_AveGrade(double stu_AveGrade) {
  this.stu_AveGrade = stu_AveGrade;
 }

 /**
  * @return grade_Math
  */
 public double getGrade_Math() {
  return grade_Math;
 }

 /**
  * @param grade_Math 要设置的 grade_Math
  */
 public void setGrade_Math(double grade_Math) {
  this.grade_Math = grade_Math;
 }
 
 /**
  * @param stu_IDCard 要设置的 stu_IDCard
  */
 public void setStu_IDCard(String stu_IDCard) {
  this.stu_IDCard = stu_IDCard;
 }

 /**
  * @return stu_Name
  */
 public String getStu_Name() {
  return stu_Name;
 }

 /**
  * @param stu_Name 要设置的 stu_Name
  */
 public void setStu_Name(String stu_Name) {
  this.stu_Name = stu_Name;
 }

 /**
  * @return stu_No
  */
 public String getStu_No() {
  return stu_No;
 }

 /**
  * @param stu_No 要设置的 stu_No
  */
 public void setStu_No(String stu_No) {
  this.stu_No = stu_No;
 }
 
 /**
  * 求考试平均成绩
  */
 public abstract double countAve();
 
 /**
  * 按平均成绩排名
  */
 public void sort(ComputerSpe[] spe){
  
  /**插入法排序*/
  for(int i=0;i<spe.length;i++){
   int j;
   ComputerSpe temp  =spe[i];
   for(j=i;j>0 && spe[j-1].getStu_AveGrade()<temp.getStu_AveGrade();j--){
    
    spe[j] = spe[j-1];
   }
   spe[j] = temp;
  }
 }
 
 /**
  * 显示考生信息
  */
 public abstract void display();

 /**
  * @return stu_IDCard
  */
 public String getStu_IDCard() {
  return stu_IDCard;
 }

}


 SoftPro_Spe.java(软件工程专业)

/**
 * 软件工程专业
 */
package extendsTest;

/**
 * @author 杨忠盛
 * @version 1.0 , 2007-3-24
 */
public class SoftPro_Spe extends ComputerSpe{

 /**存储软件工程科目成绩*/
 private double grade_Soft;
 
 /**存储面向对象设计科目成绩*/
 private double grade_Oop;
 
 /**
  * 构造方法
  */
 protected SoftPro_Spe(){
  
 }
 
 protected SoftPro_Spe(String no,String name,String idCard,double mathG,double softG,double oopG){
  super(no,name,idCard,mathG);
  this.grade_Soft = softG;
  this.grade_Oop = oopG;
 }

 /**
  * 实现求平均成绩
  */
 public double countAve() {
  //取平均成绩的两位小数
  super.setStu_AveGrade((double)((int)((super.getGrade_Math()+this.grade_Oop+this.grade_Soft)*100/3))/100);
  return super.getStu_AveGrade();
 }
 
 /**
  * 实现按平均成绩排名
  */
 public void sort_Ave(SoftPro_Spe[] soft){
  
  super.sort(soft);
 }
 
 /**
  * 实现考生信息显示
  */
 //头部信息显示
 public void headDisplay(){
  System.out.println("****************************************************软件工程专业考生信息**********************************************************/n");
  System.out.println("考生号/t/t考生姓名/t/t考生身份证号/t/t离散数学/t/t软件工程/t/t面向对象设计/t/t平均成绩" );
 }
 //详细信息显示
 public void display(){
  
  System.out.println(super.getStu_No()+"/t/t"+super.getStu_Name()+"/t/t"+super.getStu_IDCard()+"/t/t/t"+
    super.getGrade_Math()+"/t/t"+this.grade_Soft+"/t/t"+this.grade_Oop+"/t/t/t"+super.getStu_AveGrade());
 }
}


DataUse_Spe.java(数据库应用专业)

/**
 * 数据库应用专业
 */
package extendsTest;

/**
 * @author 杨忠盛
 * @version 1.0 , 2007-3-24
 */
public class DataUse_Spe extends ComputerSpe{

 /**存储数据库应用科目成绩*/
 private double grade_Data;
 
 /**
  * 构造方法
  */
 //带参
 protected DataUse_Spe(String no,String name,String idCard,double mathG,double DataG){
  
  super(no,name,idCard,mathG);
  this.grade_Data = DataG;
 }
 //无参
 protected DataUse_Spe() {
  
 }

 /**
  * 实现求平均成绩
  */
 public double countAve() {
  //取平均成绩的两位小数
  super.setStu_AveGrade((double)((int)((super.getGrade_Math()+this.grade_Data)*100/2))/100);
  return super.getStu_AveGrade();
 }
 
 /**
  * 实现按平均成绩排名
  */
 public void sort_Ave(DataUse_Spe[] data){
  
  super.sort(data);
 }
 
 /**
  * 实现考生信息显示
  */
 //头部信息显示
 public void headDisplay(){
  System.out.println("/n****************************************************数据库应用专业考生信息**********************************************************/n");
  System.out.println("考生号/t/t考生姓名/t/t考生身份证号/t/t离散数学/t/t数据库应用/t/t平均成绩" );
 }
 //详细信息显示
 public void display(){
  
  System.out.println(super.getStu_No()+"/t/t"+super.getStu_Name()+"/t/t"+super.getStu_IDCard()+"/t/t/t"+
    super.getGrade_Math()+"/t/t"+this.grade_Data+"/t/t/t"+super.getStu_AveGrade());
 }
}


NetWork_Spe.java(网络工程专业)

/**
 * 网络专业
 */
package extendsTest;

/**
 * @author 杨忠盛
 * @version 1.0 , 2007-3-24
 */
public class NetWork_Spe extends ComputerSpe{

 /**存储计算机通信科目成绩*/
 private double grade_Com;
 
 /**存储图文设计及优化科目成绩*/
 private double grade_Pic;
 
 /**存储英语科目成绩*/
 private double grade_Eng;
 
 /**
  * 构造方法
  */
 //无参
 protected NetWork_Spe(){
  
 }
 //带参
 protected NetWork_Spe(String no,String name,String idCard,double mathG,double comG,double picG,double engG){
  
  super(no,name,idCard,mathG);
  this.grade_Com = comG;
  this.grade_Pic = picG;
  this.grade_Eng = engG;
 }
 
 /**
  * 实现求平均成绩
  */
 public double countAve() {
  //取平均成绩的两位小数
  super.setStu_AveGrade((double)((int)((super.getGrade_Math()+this.grade_Com+this.grade_Pic+this.grade_Eng)*100/4))/100);
  return super.getStu_AveGrade();
 }
 
 /**
  * 实现按平均成绩排名
  */
 public void sort_Ave(NetWork_Spe[] net){
  
  super.sort(net);
 }
 
 /**
  * 实现考生信息显示
  */
 //头部信息显示
 public void headDisplay(){
  System.out.println("/n****************************************************网络工程专业考生信息**********************************************************/n");
  System.out.println("考生号/t/t考生姓名/t/t考生身份证号/t/t离散数学/t/t计算机通信/t/t图文设计及优化/t/t英语/t/t平均成绩" );
 }
 //详细信息显示
 public void display(){
  
  System.out.println(super.getStu_No()+"/t/t"+super.getStu_Name()+"/t/t"+super.getStu_IDCard()+"/t/t/t"+
    super.getGrade_Math()+"/t/t"+this.grade_Com+"/t/t/t"+this.grade_Pic+"/t/t/t"+this.grade_Eng+"/t/t"+super.getStu_AveGrade());
 }
}


Main.java(主函數)

/**
 * 这是主函数,程序的唯一入口
 * 程序代码总行数:442行
 */
package extendsTest;

/**
 * @author 杨忠盛
 * @version 1.0 , 2007-3-24
 */
public class Main {

 /**
  * 构造方法
  */
 protected Main(){
  
 }
 
 /**
  * 程序的唯一入口,main 方法
  * @param args 传递至 main 的参数
  */
 public static void main(String[] args) {
  
  /*******************************头部信息*******************************/
  System.out.println("/t/t/t/t/t/t考生信息(按成绩排名先后显示)");
  System.out.println();
  
  /*******************************软件工程专业******************************/
  /**初始化软件工程专业考生的信息*/
  SoftPro_Spe[] soft = new SoftPro_Spe[3];
  soft[0] = new SoftPro_Spe("Soft01","张三","2007S01",80,86,73);
  soft[1] = new SoftPro_Spe("Soft02","李四","2007S02",100,68,91);
  soft[2] = new SoftPro_Spe("Soft03","王五","2007S03",86,68,75);
  
  SoftPro_Spe softSpe = new SoftPro_Spe();
  
  /**计算每个考生的平均成绩*/
  for(int i=0;i<soft.length;i++){
   soft[i].countAve();
  }

  /**按平均成绩排序*/
  softSpe.sort_Ave(soft);
  
  /**显示详细信息*/
  softSpe.headDisplay();
  for(int j=0;j<soft.length;j++){
   soft[j].display();
  }
  
  /******************************数据库应用专业*****************************/
  /**初始化数据库应用专业考生的信息*/
  DataUse_Spe[] data = new DataUse_Spe[4];
  data[0] = new DataUse_Spe("Data01","张亮亮","2007D01",80,93);
  data[1] = new DataUse_Spe("Data02","李明贺","2007D02",100,98);
  data[2] = new DataUse_Spe("Data03","陈小刚","2007D03",86,68);
  data[3] = new DataUse_Spe("Data04","贾峰","2007D04",86,78);
  
  DataUse_Spe dataSpe = new DataUse_Spe();
  
  /**计算每个考生的平均成绩*/
  for(int i=0;i<data.length;i++){
   data[i].countAve();
  }

  /**按平均成绩排序*/
  dataSpe.sort_Ave(data);
  
  /**显示详细信息*/
  dataSpe.headDisplay();
  for(int j=0;j<data.length;j++){
   data[j].display();
  }
  
  /******************************网络工程专业*****************************/
  /**初始化数据库应用专业考生的信息*/
  NetWork_Spe[] net = new NetWork_Spe[5];
  net[0] = new NetWork_Spe("Net01","杨鹤明","2007N01",89,73,88,68);
  net[1] = new NetWork_Spe("Net02","姜棋","2007N02",65,99,100,98);
  net[2] = new NetWork_Spe("Net03","韩日兵","2007N03",76,86,77,68);
  net[3] = new NetWork_Spe("Net04","郭富强","2007N04",65,79,86,78);
  net[4] = new NetWork_Spe("Net05","吴丽","2007N05",68,78,89,68);
  
  NetWork_Spe netSpe = new NetWork_Spe();
  
  /**计算每个考生的平均成绩*/
  for(int i=0;i<net.length;i++){
   net[i].countAve();
  }

  /**按平均成绩排序*/
  netSpe.sort_Ave(net);
  
  /**显示详细信息*/
  netSpe.headDisplay();
  for(int j=0;j<net.length;j++){
   net[j].display();
  }
 }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值