接口应用案例(顶级干货!!)

需求:

  • 设计一个班级学生管理模块:学生数据有:姓名、性别、成绩

第一套方案需求:

  • 功能1:需求打印出全班所有学生信息
  • 功能2:打印出全部所有学生成绩的平均分

第二套方案需求:

  • 功能1:打印全班所有学生信息,并包含男女人数
  • 功能2:打印去掉最高分和最低分的全班总成绩平均分

  • 测试类

public class Test {
    public static void main(String[] args) {
        ClassManager class1 = new ClassManager();
        class1.printAllInfo();
        class1.printAveScore();
    }
}
  • 班级管理类(用来进行操作班级信息)

import java.util.ArrayList;
import java.util.List;

public class ClassManager {
        //如果要切换不同方案的方法,初始化不同的接口实现类即可
        StudentOperator so = new StudentOperatorImpl1();
        StudentOperator so = new StudentOperatorImpl2();

        //将学生对象放在一个ArrayList集合中
        ArrayList<Student> students = new ArrayList<>();

        //创建一个无参构造器,在初始化ClassManager对象的时候,学生对象同时被创建
        public ClassManager(){
        students.add(new Student("lkh",'女',60));
        students.add(new Student("wyf",'男',100));
        students.add(new Student("fbb",'女',90));
        students.add(new Student("myy",'女',89));
        }

        //功能1
        public void printAllInfo(){
                so.printAllInfo(students);

        }
        
        //功能2
        public void printAveScore(){
                so.printAveScore(students);
        }
    }
  • 学生操作接口 

import java.util.ArrayList;


public interface StudentOperator {
        void printAllInfo(ArrayList<Student> students);

        void printAveScore(ArrayList<Student> students);
    }
  • 接口实现类1(第1套方案的方法)

import java.util.ArrayList;
import java.util.List;

public class StudentOperatorImpl1 implements StudentOperator {

    @Override
    public void printAllInfo(ArrayList<Student> students) {
        System.out.println("---------班级全部学生信息如下-----------");
        for (Student student : students) {
            System.out.print("姓名:" + student.getName() + "\t\t");
            System.out.print("性别:" + student.getSex()  + "\t\t");
            System.out.println("分数:" + student.getScore());
        }
        System.out.println("-----------------------");
    }

    @Override
    public void printAveScore(ArrayList<Student> students) {

        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()));
        System.out.println("------------------------------");
    }



    }
  • 接口实现类2(第2套方案的方法)

import java.util.ArrayList;

public class StudentOperatorImpl2 implements StudentOperator{
    @Override
    public void printAllInfo(ArrayList<Student> students) {
        int countMale = 0;
        int countFemale = 0;
        for (int i = 0; i < students.size(); i++) {
            Student s = students.get(i);
            System.out.print("姓名:" + s.getName() + "\t\t");
            System.out.print("性别:" + s.getSex()  + "\t\t");
            System.out.println("分数:" + s.getScore());
            if(s.getSex() == '男'){
                countMale++;
            }else {
                countFemale++;
            }
        }
        System.out.println("男生的人数:" + countMale + "\n" + "女生的人数:" + countFemale);
        System.out.println("班级总人数是:" + students.size());
        System.out.println("------------------------");
    }

    @Override
    public void printAveScore(ArrayList<Student> students) {
        int i = 0;
        double maxScore = students.get(0).getScore();
        double minScore = students.get(0).getScore();
        double sumScore = 0.0;
        System.out.println("学生所有成绩如下:");
        for (i = 0; i < students.size(); i++) {
            Student s = students.get(i);

            if(maxScore < s.getScore()) maxScore = s.getScore();
            if(minScore > s.getScore()) minScore = s.getScore();
            sumScore += s.getScore();
            System.out.print(s.getScore() + "\t\n");
        }
        System.out.println("学生最高分是:" + maxScore);
        System.out.println("学生最低分是:" + minScore);
        System.out.println("(去掉最高分和最低分)平均分:" + (sumScore - minScore - maxScore) / (students.size() -2));

    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值