本地居民生活缴费包括水费和燃气费,类层次结构如UML类图所示:

(1) 定义抽象缴费单类Bill,属性volumn为基本用量,“#”表示protected,getBill()为计算账单额的抽象方法。
(2) 实现GasBill类,定义居民燃气缴费单类,其中getBill()方法可以根据缴费率rate,以及用量volumn,计算燃气缴费额,并返回。
(3) 实现WaterBill类,定义居民用水缴费单类,其中getBill()方法可以根据阶梯水价rate,以及用量volumn,计算水费缴费额,并返回。
(4) 编写用户程序。创建某个居民缴费单数组,该数组包括三笔缴费单信息,第一笔缴费单是燃气用量40立方米的缴费单,第二笔是水用量为30立方米的缴费单,第三笔是水用量为200立方米的缴费单,请计算该居民的燃气和用水缴费单总额,并输出结果。
(5) 说明:燃气费(率)按本地普通居民燃气费2.28元/立方米计算。
燃气缴费总额=燃气费率 * 燃气总用量。
水费(率)按本地阶梯水价计算,如表1所示。
水缴费总额 = 各阶梯水费之和
每阶梯水费额 = 每阶梯水价 * 本阶梯水用量
表1 本地居民用水阶梯水价表
| 用水阶梯 | 每户年用水量(立方米) |水价(元/立方米)
(含自来水费、水资源费、污水处理费)
|第一阶梯| 0-180(含)| 5.00
| 第二阶梯 | 181-260(含) |7.00
第三阶梯 260以上 9.00
代码如下:
Bill类:

public abstract class Bill {protected double volumn;public abstract double getBill();//计算账单额的抽象方法/*public Bill(double volumn) {this.volumn = volumn;}*/     //也可以使子类直接继承父类的方法,但题上所给UML类图中,没有该方法,故此处不用
}

GasBill类:

public class GasBill extends Bill {private double rate = 2.28;public GasBill(double volumn) {//super(volumn); 继承父类volumn(与父类中注释的方法相应)this.volumn = volumn;}public double getVolumn() {return volumn;}public void setVolumn(double volumn) {this.volumn = volumn;}public double getBill() {return rate * volumn;}                             //煤气费账单数额
}

WaterBill类:

public class WaterBill extends Bill {private double[] rate = {5, 7, 9};  //用数组定义每阶梯水费public WaterBill(double volumn) {//super(volumn); 继承父类volumn(与父类中注释的方法相应)this.volumn = volumn;}public double getVolumn() {return volumn;}public void setVolumn(double volumn) {this.volumn = volumn;}public double getBill() {if(volumn > 0 && volumn <= 180) {return rate[0] * volumn;}else if(volumn > 180 && volumn <= 260) {return rate[0] * 180 + rate[1] * (volumn - 180);}else {return rate[0] * 180 + rate[1] * 260 + rate[2] * (volumn - 260);}}     //分阶梯计算水费
}

用户类:

public class User {public static void main(String[] args) {Bill[] userBill = {new GasBill(40),new WaterBill(30),new WaterBill(200)};   //创建某居民缴费单数组System.out.println("该居民的燃气和用水缴费单总额为" + (userBill[0].getBill() + userBill[1].getBill() + userBill[2].getBill()) + "元");}
}

Java实验二——燃气和用水缴费相关推荐

  1. 20175212童皓桢 Java实验二-面向对象程序设计实验报告

    20175212童皓桢 Java实验二-面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设 ...

  2. 云南大学软件学院java实验九_云南大学软件学院Java实验二

    云南大学软件学院 实验报告 姓名:学号:班级:日期:成绩: JAVA实验二 一.实验目的: 进一步熟悉JAVA编译环境,编译三个简单的JAVA程序,熟悉JAVA语言. 二.实验要求: 1. Write ...

  3. java实验二_Java实验2

    (1)了解算术运算符.关系和条件运算符.逻辑运算符.位运算符的含义和使用方法. (2)了解表达式的含义和使用方法. 一.实验目的和要求: 实验目的 (1)熟练掌握各种运算符的功能及使用要求. (2)理 ...

  4. JAVA实验二 面向对象程序设计

    一.实验目的 通过编程和上机实验,掌握类和构造方法的定义及创建对象的方法,掌握类的封装及继承原则,正确使用重载和覆盖等多态概念设计可复用方法,熟悉包.接口的使用方法,掌握面向对象的程序设计方法. 二. ...

  5. java实验二答案天津商业大学,天津商业大学java实验报告

    天津商业大学java实验报告答案及运行结果 this.start =start; } public Point getEnd(){ return end; } public void setEnd(P ...

  6. java实验二答案天津商业大学_天津商业大学信息安全实验一

    天津商业大学信息安全实验一 1<信息安全技术>实 验 报 告 书实验名称: 实验一Internet应用风险专 业: 电子商务班 级: 1203班姓 名: 代常发学 号: 20124934指 ...

  7. Java实验二 计算机 1501 王奕开 18

    1.equals()方法 而"=="是比较int,double......等类型的数值是否相等. 2.什么是构造方法?什么是构造方法的重载?下面的程序是否可以通过编译?为什么? ( ...

  8. Java实验二 货物进销管理系统【简单易懂】

    写在前面:这个题目主要通过仔细阅读题目的需求,再通过对文件流以及Vector.ArrayList等容器的控制来完成整个代码体系的构建.因为当时正在学习,对代码的构建逻辑不够规范,思想不够到位的地方也难 ...

  9. Java实验二 图形界面设计

    学院 计算机科学与教育软件学院 年级.专业.班 网络16* 姓名 卟咚君 学号 1606100*** 实验课程名称 Java语言实验 成绩 实验项目名称 图形界面设计 指导老师 ** 一.实验目的 • ...

最新文章

  1. list group by java_Java List集合实现MySQL Group By功能
  2. 在Linux程序中输出函数调用栈
  3. html 怎么设置cooki,怎么设置浏览器接受cookie
  4. PHP检测远端文件是否存在
  5. wordpress在新窗口打开留言者链接
  6. Linux的实际操作:用户管理(删除用户userdel userdel -r)
  7. java中的foreach用法及总结
  8. 笔记:windows 2012 安装SQL 2008 群集报错
  9. Linked List Sorting (链表)
  10. 手机App都在偷听我说话?窃听疑云全球密布,科技公司连连喊冤
  11. XmlDataProvider的简单应用
  12. 使用spring ioc基于纯xml配置模拟crud
  13. 软件测试---如何选择合适的正交表
  14. CV520国产兼容应用及说明
  15. 菜鸟教程php模拟器,史上最强劲的android模拟器命令详解
  16. cvpr2020 人脸检测与识别_就CVPR2020的来看,目前人工智能的研究热点有哪些进展?未来的研究趋势会有什么变化?...
  17. 使用插入排序、归并排序对链表进行排序
  18. 10篇校招/社招面经请你查收~
  19. 西安软件园:英特尔移动通信西安有限公司
  20. 给寸照换底色(抠头发)

热门文章

  1. python-restful-02-组件(序列化\认证)
  2. ubuntu下安装nmon命令
  3. 使用驱动器X:中的光盘之前需要将其格式化,是否将其格式化格式化の解决办法
  4. 【Pyecharts组合图_Bar,利用Page()】
  5. Problem 2 西行寺幽幽子(spring.cpp/c/pas)
  6. qlv格式怎么转成FLV格式 工具方法【已解决】
  7. 【前端动画】实现动画的6种方式
  8. 企业再造(Re-engineering)(转载)
  9. 列表table,将合计行进行单元格合并,element-ui
  10. 网易云音乐为何与口碑合作?“音乐+生活”才更有滋味