当前位置: 首页 > news >正文

接口的综合案例

1.题目要求

2.解题

1.首先我们写一个学生类,用来描述学生的相关信息

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;
}
}

2.接着,写一个StudentOperator接口,表示学生信息管理系统的两个功能。

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

3.然后,写一个StudentOperator接口的实现类StudentOperatorImpl1,采用第1套方案对业务进行实现。

public class StudentOperatorImpl1 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() + ", 性别:" + s.getSex() + ", 成绩:" + s.getScore()); } System.out.println("-----------------------------------------"); } ​ @Override public void printAverageScore(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()); } }

4.接着,再写一个StudentOperator接口的实现类StudentOperatorImpl2,采用第2套方案对业务进行实现。

public class StudentOperatorImpl2 implements StudentOperator{ @Override public void printAllInfo(ArrayList<Student> students) { System.out.println("----------全班全部学生信息如下--------------"); int count1 = 0; int count2 = 0; for (int i = 0; i < students.size(); i++) { Student s = students.get(i); System.out.println("姓名:" + s.getName() + ", 性别:" + s.getSex() + ", 成绩:" + s.getScore()); if(s.getSex() == '男'){ count1++; }else { count2 ++; } } System.out.println("男生人数是:" + count1 + ", 女士人数是:" + count2); System.out.println("班级总人数是:" + students.size()); System.out.println("-----------------------------------------"); } ​ @Override public void printAverageScore(ArrayList<Student> students) { double allScore = 0.0; double max = students.get(0).getScore(); double min = students.get(0).getScore(); for (int i = 0; i < students.size(); i++) { Student s = students.get(i); if(s.getScore() > max) max = s.getScore(); if(s.getScore() < min) min = s.getScore(); allScore += s.getScore(); } System.out.println("学生的最高分是:" + max); System.out.println("学生的最低分是:" + min); System.out.println("平均分:" + (allScore - max - min) / (students.size() - 2)); } }

5.再写一个班级管理类ClassManager,在班级管理类中使用StudentOperator的实现类StudentOperatorImpl1对学生进行操作

public class ClassManager { private ArrayList<Student> students = new ArrayList<>(); private StudentOperator studentOperator = new StudentOperatorImpl1(); ​ public ClassManager(){ students.add(new Student("迪丽热巴", '女', 99)); students.add(new Student("古力娜扎", '女', 100)); students.add(new Student("马尔扎哈", '男', 80)); students.add(new Student("卡尔扎巴", '男', 60)); } ​ // 打印全班全部学生的信息 public void printInfo(){ studentOperator.printAllInfo(students); } ​ // 打印全班全部学生的平均分 public void printScore(){ studentOperator.printAverageScore(students); } }

6.最后,再写一个测试类Test,在测试类中使用ClassMananger完成班级学生信息的管理。

public class Test { public static void main(String[] args) { // 目标:完成班级学生信息管理的案例。 ClassManager clazz = new ClassManager(); clazz.printInfo(); clazz.printScore(); } }
http://www.jsqmd.com/news/641605/

相关文章:

  • 解决网页文本选中后换行符丢失导致段落数统计错误的问题
  • 3个理由告诉你为什么MPC-HC仍是Windows平台最佳媒体播放器
  • 如何快速集成免费实时汇率API到你的应用
  • 智能待办工具推荐支持多端同步提醒很贴心
  • 安卓手机离线运行deepseek大模型:Termux与ollama实战指南
  • 2026执医备考|不踩坑资料清单,小白/在职党直接抄作业 - 品牌测评鉴赏家
  • MongooseIM性能测试实践:如何验证你的XMPP服务器承载能力
  • Halcon深度学习之异常检测
  • AI Agent 如何自我进化?Hermes Agent Self-Evolution 深度解析
  • 测试服务器端口能否访问(使用telnet命令)
  • LED 隧道灯选型避坑:国标检验要求及注意事项
  • 基于fluent的SLM过程模拟技术研究:深度解析案例、热源UDF与粉末导入应用细节
  • 【JAVA基础面经】Java线程中的用户态和内核态
  • 论文ai率太高怎么办?盘点5款好用的降ai率工具(学姐亲测附使用教程)
  • 2026执医培训推荐指南|博主亲测,小白/在职党直接抄作业 - 品牌测评鉴赏家
  • ARCMAP--高效筛选面数据周边指定距离的点数据
  • 基于S7-1200 PLC蒸汽锅炉燃烧控制系统
  • EtherCAT时钟同步避坑指南:为什么你的伺服电机总在147秒抖一下?
  • 植发后想更完美?纹发逆袭新思路,解锁浓密秀发 - 品牌测评鉴赏家
  • Day01-MySQL
  • 如何在Visual Studio中集成WinFlexBison进行词法和语法分析
  • smenu性能优化技巧:让你的选择界面响应更迅速
  • CANdevStudio:免费开源CAN总线仿真工具完全指南
  • 基于Artifactory的Conan私有仓库搭建与配置指南
  • Bricklayer实战项目:构建图片画廊和产品展示页面的完整教程
  • 跨平台ROS通信实战:WSL2与Windows MATLAB的无缝对接
  • OPPO A37/A59刷机全攻略:专业开发版刷机工具+详细图文教程
  • 保姆级教程:用PlatformIO为ESP32-S3 N16R8配置16MB Flash+8MB PSRAM,并跑通第一个测试程序
  • 富士达电梯系列软件升级:Flash Rom 2.0调试软件、PMC 2.34调试维修软件及 E...
  • 五款超实用待办软件桌面集成使用超便捷