J015_班级学生信息管理模块(接口应用案例)

2024-04-14 19:44

本文主要是介绍J015_班级学生信息管理模块(接口应用案例),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Student

package com.itheima.d4_interfacecase1;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;}
}

StudentOperator

package com.itheima.d4_interfacecase1;import java.util.ArrayList;public interface StudentOperator {void printAllInfo(ArrayList<Student> students);void printAverageScore(ArrayList<Student> students);
}

StudentOperatorImpl1

package com.itheima.d4_interfacecase1;import java.util.ArrayList;public class StudentOperatorImpl1 implements StudentOperator{//输出全班学生信息@Overridepublic 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("-------------------------------------------");}//打印班级平均分@Overridepublic void printAverageScore(ArrayList<Student> students) {double averageSource = 0.0;for (int i = 0; i < students.size(); i++) {Student s = students.get(i);averageSource += s.getScore();}System.out.println("平均分:" + averageSource/students.size());}
}

StudentOperatorImpl2

package com.itheima.d4_interfacecase1;import java.util.ArrayList;public class StudentOperatorImpl2 implements StudentOperator{@Overridepublic void printAllInfo(ArrayList<Student> students) {//记录男生人数int count1 = 0;//记录女生人数int count2 = 0;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());if (s.getSex() == '男') {count1 ++;}else {count2 ++;}}System.out.println("男生人数为:" + count1 + ",女生人数为:" + count2);System.out.println("总人数为:" + students.size());System.out.println("-------------------------------------------");}@Overridepublic void printAverageScore(ArrayList<Student> students) {double averageSource = 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);averageSource += s.getScore();if (s.getScore() > max) {max = s.getScore();}if (s.getScore() < min) {min = s.getScore();}}System.out.println("最高分为:" + max + "最低分为:" + min);System.out.println("平均分:" + (averageSource - max - min) / (students.size() - 2));}
}

ClassManger

package com.itheima.d4_interfacecase1;import java.util.ArrayList;public class ClassManger {private ArrayList<Student> students = new ArrayList<>();private StudentOperator operator = new StudentOperatorImpl2();public ClassManger() {students.add(new Student("迪丽热巴",'女',99));students.add(new Student("古力娜扎",'女',99.9));students.add(new Student("黑八可",'男',80));students.add(new Student("小白白",'男',70));}//打印学生全部信息public void printInfo() {operator.printAllInfo(students);}//打印学生平均分public void printAveScore(){operator.printAverageScore(students);}
}

Test

package com.itheima.d4_interfacecase1;public class Test {public static void main(String[] args) {//完成班级学生信息管理模块案例ClassManger clas = new ClassManger();clas.printInfo();clas.printAveScore();}
}

这篇关于J015_班级学生信息管理模块(接口应用案例)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/903842

相关文章

MySQL中C接口的实现

《MySQL中C接口的实现》本节内容介绍使用C/C++访问数据库,包括对数据库的增删查改操作,主要是学习一些接口的调用,具有一定的参考价值,感兴趣的可以了解一下... 目录准备mysql库使用mysql库编译文件官方API文档对象的创建和关闭链接数据库下达sql指令select语句前言:本节内容介绍使用C/

Python sys模块的使用及说明

《Pythonsys模块的使用及说明》Pythonsys模块是核心工具,用于解释器交互与运行时控制,涵盖命令行参数处理、路径修改、强制退出、I/O重定向、系统信息获取等功能,适用于脚本开发与调试,需... 目录python sys 模块详解常用功能与代码示例获取命令行参数修改模块搜索路径强制退出程序标准输入

Python pickle模块的使用指南

《Pythonpickle模块的使用指南》Pythonpickle模块用于对象序列化与反序列化,支持dump/load方法及自定义类,需注意安全风险,建议在受控环境中使用,适用于模型持久化、缓存及跨... 目录python pickle 模块详解基本序列化与反序列化直接序列化为字节流自定义对象的序列化安全注

利用Python操作Word文档页码的实际应用

《利用Python操作Word文档页码的实际应用》在撰写长篇文档时,经常需要将文档分成多个节,每个节都需要单独的页码,下面:本文主要介绍利用Python操作Word文档页码的相关资料,文中通过代码... 目录需求:文档详情:要求:该程序的功能是:总结需求:一次性处理24个文档的页码。文档详情:1、每个

Java中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例解析

《Java中的分布式系统开发基于Zookeeper与Dubbo的应用案例解析》本文将通过实际案例,带你走进基于Zookeeper与Dubbo的分布式系统开发,本文通过实例代码给大家介绍的非常详... 目录Java 中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例一、分布式系统中的挑战二

Java 缓存框架 Caffeine 应用场景解析

《Java缓存框架Caffeine应用场景解析》文章介绍Caffeine作为高性能Java本地缓存框架,基于W-TinyLFU算法,支持异步加载、灵活过期策略、内存安全机制及统计监控,重点解析其... 目录一、Caffeine 简介1. 框架概述1.1 Caffeine的核心优势二、Caffeine 基础2

Java 中的 equals 和 hashCode 方法关系与正确重写实践案例

《Java中的equals和hashCode方法关系与正确重写实践案例》在Java中,equals和hashCode方法是Object类的核心方法,广泛用于对象比较和哈希集合(如HashMa... 目录一、背景与需求分析1.1 equals 和 hashCode 的背景1.2 需求分析1.3 技术挑战1.4

python pymodbus模块的具体使用

《pythonpymodbus模块的具体使用》pymodbus是一个Python实现的Modbus协议库,支持TCP和RTU通信模式,支持读写线圈、离散输入、保持寄存器等数据类型,具有一定的参考价值... 目录一、详解1、 基础概念2、核心功能3、安装与设置4、使用示例5、 高级特性6、注意事项二、代码示例

使用Node.js和PostgreSQL构建数据库应用

《使用Node.js和PostgreSQL构建数据库应用》PostgreSQL是一个功能强大的开源关系型数据库,而Node.js是构建高效网络应用的理想平台,结合这两个技术,我们可以创建出色的数据驱动... 目录初始化项目与安装依赖建立数据库连接执行CRUD操作查询数据插入数据更新数据删除数据完整示例与最佳

Java中实现对象的拷贝案例讲解

《Java中实现对象的拷贝案例讲解》Java对象拷贝分为浅拷贝(复制值及引用地址)和深拷贝(递归复制所有引用对象),常用方法包括Object.clone()、序列化及JSON转换,需处理循环引用问题,... 目录对象的拷贝简介浅拷贝和深拷贝浅拷贝深拷贝深拷贝和循环引用总结对象的拷贝简介对象的拷贝,把一个