Java实验二——燃气和用水缴费
本地居民生活缴费包括水费和燃气费,类层次结构如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实验二——燃气和用水缴费相关推荐
- 20175212童皓桢 Java实验二-面向对象程序设计实验报告
20175212童皓桢 Java实验二-面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设 ...
- 云南大学软件学院java实验九_云南大学软件学院Java实验二
云南大学软件学院 实验报告 姓名:学号:班级:日期:成绩: JAVA实验二 一.实验目的: 进一步熟悉JAVA编译环境,编译三个简单的JAVA程序,熟悉JAVA语言. 二.实验要求: 1. Write ...
- java实验二_Java实验2
(1)了解算术运算符.关系和条件运算符.逻辑运算符.位运算符的含义和使用方法. (2)了解表达式的含义和使用方法. 一.实验目的和要求: 实验目的 (1)熟练掌握各种运算符的功能及使用要求. (2)理 ...
- JAVA实验二 面向对象程序设计
一.实验目的 通过编程和上机实验,掌握类和构造方法的定义及创建对象的方法,掌握类的封装及继承原则,正确使用重载和覆盖等多态概念设计可复用方法,熟悉包.接口的使用方法,掌握面向对象的程序设计方法. 二. ...
- java实验二答案天津商业大学,天津商业大学java实验报告
天津商业大学java实验报告答案及运行结果 this.start =start; } public Point getEnd(){ return end; } public void setEnd(P ...
- java实验二答案天津商业大学_天津商业大学信息安全实验一
天津商业大学信息安全实验一 1<信息安全技术>实 验 报 告 书实验名称: 实验一Internet应用风险专 业: 电子商务班 级: 1203班姓 名: 代常发学 号: 20124934指 ...
- Java实验二 计算机 1501 王奕开 18
1.equals()方法 而"=="是比较int,double......等类型的数值是否相等. 2.什么是构造方法?什么是构造方法的重载?下面的程序是否可以通过编译?为什么? ( ...
- Java实验二 货物进销管理系统【简单易懂】
写在前面:这个题目主要通过仔细阅读题目的需求,再通过对文件流以及Vector.ArrayList等容器的控制来完成整个代码体系的构建.因为当时正在学习,对代码的构建逻辑不够规范,思想不够到位的地方也难 ...
- Java实验二 图形界面设计
学院 计算机科学与教育软件学院 年级.专业.班 网络16* 姓名 卟咚君 学号 1606100*** 实验课程名称 Java语言实验 成绩 实验项目名称 图形界面设计 指导老师 ** 一.实验目的 • ...
最新文章
- list group by java_Java List集合实现MySQL Group By功能
- 在Linux程序中输出函数调用栈
- html 怎么设置cooki,怎么设置浏览器接受cookie
- PHP检测远端文件是否存在
- wordpress在新窗口打开留言者链接
- Linux的实际操作:用户管理(删除用户userdel userdel -r)
- java中的foreach用法及总结
- 笔记:windows 2012 安装SQL 2008 群集报错
- Linked List Sorting (链表)
- 手机App都在偷听我说话?窃听疑云全球密布,科技公司连连喊冤
- XmlDataProvider的简单应用
- 使用spring ioc基于纯xml配置模拟crud
- 软件测试---如何选择合适的正交表
- CV520国产兼容应用及说明
- 菜鸟教程php模拟器,史上最强劲的android模拟器命令详解
- cvpr2020 人脸检测与识别_就CVPR2020的来看,目前人工智能的研究热点有哪些进展?未来的研究趋势会有什么变化?...
- 使用插入排序、归并排序对链表进行排序
- 10篇校招/社招面经请你查收~
- 西安软件园:英特尔移动通信西安有限公司
- 给寸照换底色(抠头发)
热门文章
- python-restful-02-组件(序列化\认证)
- ubuntu下安装nmon命令
- 使用驱动器X:中的光盘之前需要将其格式化,是否将其格式化格式化の解决办法
- 【Pyecharts组合图_Bar,利用Page()】
- Problem 2 西行寺幽幽子(spring.cpp/c/pas)
- qlv格式怎么转成FLV格式 工具方法【已解决】
- 【前端动画】实现动画的6种方式
- 企业再造(Re-engineering)(转载)
- 列表table,将合计行进行单元格合并,element-ui
- 网易云音乐为何与口碑合作?“音乐+生活”才更有滋味