java接口的应用案例:班级学生信息管理模块的开发

需求:请设计一个班级学生的信息管理模块,学生的数据有:姓名,性别,成绩

功能1:要求打印出来全部学生的信息;

功能2:要求打印出全班同学的平均成绩。

使用两套方案:

1.能打印班级全部学生的信息,能打印班级全部学生的平均分。

2.能打印班级全部学生的信息,包括男女人数,能打印班级全部学生的平均分,除去最高分和最低分。

Student类:

public class Student {
    private String name;
    private char sex;
    private  double score;

    public Student() {
    }

    public Student(String name, char sex, double score) {
        this.name = name;
        this.sex = sex;
        this.score = score;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public char getSex() {
        return sex;
    }

    public void setSex(char sex) {
        this.sex = sex;
    }

    public double getScore() {
        return score;
    }

    public void setScore(double score) {
        this.score = score;
    }
}

ClassManager类 

public class ClassManager {
    private ArrayList<Student> students = new ArrayList<>();
   private StudentOperator studentOperator = new StudentOperator02();
 //private StudentOperator studentOperator = new StudentOperator01();

    public ClassManager() {
//        Student s1 = new Student("小红", '女', 100);
//        students.add(s1);
        students.add(new Student("小红", '女', 100));
        students.add(new Student("小茗", '女', 70));
        students.add(new Student("小晴", '女', 50));
        students.add(new Student("小鸣", '男', 60));
        students.add(new Student("小言", '男', 100));
    }



    public void printInfo(){

        studentOperator.printallInfo(students);
    }
    public void printScore(){
        studentOperator.printallaverageScore(students);
    }
}

StudentOperater接口 

public interface StudentOperator {


    void printallInfo(ArrayList<Student> students);

    void printallaverageScore(ArrayList<Student> students);
}

两个实现类 

public class StudentOperator01  implements  StudentOperator {

    @Override
    public void printallInfo(ArrayList<Student> students) {
        System.out.println("--全部同学信息如下--");
        for (int i = 0; i < students.size(); i++) {
            Student s = students.get(i);
            System.out.println("学生姓名:" + s.getName() + "\t学生性别:"
                    + s.getSex() + "\t学生分数" + s.getScore());
        }
    }

    @Override
    public void printallaverageScore(ArrayList<Student> students) {
        System.out.println("--全部同学平均分如下--");
        double allScore = 0.0;
        for (int i = 0; i < students.size(); i++) {
            Student s = students.get(i);
            allScore += s.getScore();    
        }

System.out.println("全部同学的平均分:" + (allScore/ students.size()));
    }
}

public class StudentOperator02 implements StudentOperator {
    @Override
    public void printallInfo(ArrayList<Student> students) {
        System.out.println("--全部同学信息如下--");
        int count01 = 0;
        int count02 = 0;
        for (int i = 0; i < students.size(); i++) {
            Student s = students.get(i);
            System.out.println("学生姓名:" + s.getName() + "\t学生性别:"
                    + s.getSex() + "\t学生分数" + s.getScore());
         if(s.getSex()=='男') {
             count01++;
         }else{
             count02++;
            }
         }
        System.out.println("男学生人数" + count01 + "\t女学生人数" + count02);
    }

    @Override
    public void printallaverageScore(ArrayList<Student> students) {
        System.out.println("--全部同学平均分如下--");
       // double max = 0.0;
       // double min = 0.0;
        double max = students.get(0).getScore();
        double min =students.get(0).getScore();
        double allScore = 0.0;
        for (int i = 0; i < students.size(); i++) {
            Student s = students.get(i);
            allScore += s.getScore();
          if(s.getScore()>max) {
              max = s.getScore();

          } if(s.getScore()<min){
              min=s.getScore();
            }
        }
        System.out.println("全部同学的平均分(去掉最高和最低):"
                + (allScore-max-min) / (students.size()-2));
    }
}

Test:

public class Test {
    public static void main(String[] args) {
        ClassManager clazz =new ClassManager();
        clazz.printInfo();
        clazz.printScore();
    }
}

1方案运行结果:

 2方案运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值