【java】【作业】定义课程信息;继承和组合练习

简介: 【java】【作业】定义课程信息;继承和组合练习

  • 问题:
  • 定义课程信息类,包含课程编号、课程名称及学生成绩。编程实现对软件工程专业的某班级的所有课程成绩统计,包括平均成绩、最高成绩、最低成绩,并打印成绩等级分布律。


分析


初分析:

父类(课程信息类):三个变量(编号、名称、以及学生成绩)、构造方法默认以及全选的、方法get个set类和display。

子类(对父类的统计及分析):构造方法(关键字super()),方法(平均值、最大最小值以及分布律)


设计


父类(课程信息类):

package HOME8;
public class Course_infor {
  private String number;
  private String name;
  public int[] grades;
  public Course_infor() {
  }
  public Course_infor(String number, String name, int[] grades ) {
    this.number = number;
    this.name = name;
    this.grades = grades;
  }
  public String getNumber() {
    return number;
  }
  public void setNumber(String number) {
    this.number = number;
  }
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  public int[] getGrades() {
    return grades;
  }
  public void setGrades(int[] grades) {
    this.grades = grades;
  }
  public void display() {
    System.out.println("课程编号:"+number+"\n"+ "课程名称:"+name+"\n");
  }
}


子类(对父类的统计及分析)

package HOME8;
public class Statistics extends Course_infor {
  int sum = 0,Max,Min;
  int[] DL = new int[11];
  public Statistics() {
  }
  public Statistics(String number, String name, int[] grades ) {
    super(number,name,grades);
    Min = grades[0];
    Max = grades[0];
  }
  public void average() {
    for(int i = 0;i<grades.length;i++) {
      sum += grades[i];
    }
    System.out.println("平均值:"+(double)sum/grades.length+"\n"); 
  }
  public void Maxgrades() {
    for(int i = 0;i<grades.length;i++) {
          if(Max<grades[i])
          {
            Max = grades[i];
          }
        }
    System.out.println("最大值:"+Max+"\n"); 
  }
  public void Mingrades() {
    for(int i = 0;i<grades.length;i++) {
          if(Min>grades[i])
          {
            Min = grades[i];
          }
        }
    System.out.println("最小值:"+Min+"\n"); 
  }
  public void DL() {
    for(int i = 0;i<grades.length;i++) {
      DL[grades[i]/10]++;
    }
    for(int i=0;i<11;i++) {
      System.out.printf("%d~%d:",10*i,10*(i+1));
      for(int j = 0;j<DL[i];j++) {
        System.out.printf("*");
      }
      System.out.println();
    }
  }
}


测试


测试

点击查看代码

package HOME8;
public class test {
  public static void main(String[] args) {
    Course_infor a = new Course_infor("a","软件工程实践",new int[]{12,14,1,2,21,22,33,44,55,66,77,88,99});
    a.display();
    Statistics b = new Statistics("a","软件工程实践",new int[]{12,14,1,2,21,22,33,44,55,66,77,88,99});
    b.average();
    b.Maxgrades();
    b.Mingrades();
    b.DL();
  }
}

相关文章
|
8天前
|
Oracle Java 关系型数据库
重新定义 Java 对象相等性
本文探讨了Java中的对象相等性问题,包括自反性、对称性、传递性和一致性等原则,并通过LaptopCharger类的例子展示了引用相等与内容相等的区别。文章还介绍了如何通过重写`equals`方法和使用`Comparator`接口来实现更复杂的相等度量,以满足特定的业务需求。
13 3
|
8天前
|
Java 测试技术 编译器
Java零基础-继承详解!
【10月更文挑战第4天】Java零基础教学篇,手把手实践教学!
16 2
|
13天前
|
Java 编译器
在Java中,关于final、static关键字与方法的重写和继承【易错点】
在Java中,关于final、static关键字与方法的重写和继承【易错点】
19 5
|
13天前
|
Java
java继承和多态详解
java继承和多态详解
33 5
|
10天前
|
存储 Java 编译器
Java集合定义其泛型
Java集合定义其泛型
14 1
|
13天前
|
Java 编译器
【一步一步了解Java系列】:子类继承以及代码块的初始化
【一步一步了解Java系列】:子类继承以及代码块的初始化
18 3
|
5天前
|
Java 测试技术 编译器
Java零基础-继承详解!
【10月更文挑战第6天】Java零基础教学篇,手把手实践教学!
12 0
|
监控 Java
Sigar java 服务器信息探针、监控
Sigar java 服务器信息探针、监控
285 0
|
4天前
|
安全 Java UED
Java中的多线程编程:从基础到实践
本文深入探讨了Java中的多线程编程,包括线程的创建、生命周期管理以及同步机制。通过实例展示了如何使用Thread类和Runnable接口来创建线程,讨论了线程安全问题及解决策略,如使用synchronized关键字和ReentrantLock类。文章还涵盖了线程间通信的方式,包括wait()、notify()和notifyAll()方法,以及如何避免死锁。此外,还介绍了高级并发工具如CountDownLatch和CyclicBarrier的使用方法。通过综合运用这些技术,可以有效提高多线程程序的性能和可靠性。
|
4天前
|
缓存 Java UED
Java中的多线程编程:从基础到实践
【10月更文挑战第13天】 Java作为一门跨平台的编程语言,其强大的多线程能力一直是其核心优势之一。本文将从最基础的概念讲起,逐步深入探讨Java多线程的实现方式及其应用场景,通过实例讲解帮助读者更好地理解和应用这一技术。
20 3