PTA-6-312 使用多态实现图书馆计算罚金功能

题目:

图书馆提供给读者借阅服务,包括借阅书籍及音像制品。如果借阅超时需要缴纳罚金。对于不同类型的书籍和音像制品罚款规则不同。

成人书籍:允许借阅的时间是21天,每超时1天,需要缴纳罚金2元;如果超时3天以上,超出的每天需要缴纳罚金5元。 、

儿童书籍:允许借阅的时间是21天,每超时1天,需要缴纳罚金1元。

音像制品(CD或DVD):允许借阅的时间是14天,每超时1天,需要缴纳罚金5元;如果超时3天以上,超出的每天需要缴纳罚金10元。

每位读者可以一次借阅多本书和多张CD或DVD,请通过多态实现计算罚金的功能。

类的定义:

(1)定义父类 Book,属性包括名称、借阅期限。定义方法calFines(int borrowDays)。
(2)定义子类AdultBook、KidBook及Disc。它们分别继承自Book类。根据图书馆借阅超时缴纳罚金的规则,重写父类的calFines()方法。
(3)定义借阅者类Customer。在该类中定义方法calTotalFines(Book books[],int borrowDays),计算总罚金。

裁判测试程序样例:

//请完成类的定义
public class Main {public static void main(String[] args) {// TODO Auto-generated method stubScanner scan=new Scanner(System.in);Book[] books=new Book[5];books[0]=new AdultBook("半小时漫画中国史");books[1]=new AdultBook("博弈论");books[2]=new KidBook("法布尔昆虫记");books[3]=new KidBook("最好的朋友");books[4]=new Disc("白雪公主");Customer customer=new Customer();int borrowDays=scan.nextInt();double fines=customer.calTotalFines(books, borrowDays);System.out.println("您共归还书籍"+books.length+"本");for(int i=0;i<books.length;i++)System.out.println((i+1)+" "+books[i].getName());System.out.println("借阅时间:"+borrowDays+"天");if(fines>0)System.out.println("共需缴纳罚金:"+fines+"元");elseSystem.out.println("借阅书籍未超期");scan.close();}}/* 请在这里填写答案 */

根据题目要求,代码实现如下:

import java.util.Scanner;class Book {String name;int borrowDays;public double calFines(int borrowDays) {return 0.0;}public String getName() {return name;}
}
class AdultBook extends Book {public AdultBook(String name) {this.name=name;}@Overridepublic double calFines(int borrowDays) {if(borrowDays<=21)return 0;else if(borrowDays-21<=3)return (borrowDays-21)*2;elsereturn (borrowDays-21)*5-3*3;}
}class KidBook extends Book {public KidBook(String name) {this.name=name;}public double calFines(int borrowDays) {if(borrowDays<=21)return 0;elsereturn borrowDays-21;}
}
class Disc extends Book {public Disc(String name) {this.name=name;}public double calFines(int borrowDays) {if(borrowDays<=14)return 0;else if(borrowDays-14<=3)return (borrowDays-14)*5;elsereturn (borrowDays-14)*10-5*3;}
}class Customer extends Book{public double calTotalFines(Book books[],int borrowDays) {double sum = 0;for (int i = 0;i<books.length;i++) {sum += books[i].calFines(borrowDays);}return sum;}
}

以上就是 PTA-6-312 使用多态实现图书馆计算罚金功能 的全部内容了,希望能对你有所帮助!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/167259.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue中 mixin用法

在Vue.js中&#xff0c;mixin是一种可以在多个组件之间共享Vue组件选项的灵活方式。mixin对象可以包含任何组件选项。当组件使用mixin时&#xff0c;所有mixin对象的选项将被“混合”到该组件的选项中。 使用mixin的一个主要优点是可以在多个组件之间重用和共享代码。这可以帮…

SSM大学生社团信息管理系统-99953,(免费领取源码)计算机毕业设计选题开题+程序定制+论文书写+答辩ppt书写 包售后 全流程

SSM大学生社团信息管理系统APP 摘 要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;高校当然也不能排除在外。大学生社团信息管理系统APP是以实际运用为开发背景&#xff0c…

CMake中常见的预定义变量

文章目录 CMake常见的预定义变量CMake variables官方文档 CMake常见的预定义变量 在 CMake 中&#xff0c;有一些常见的预定义变量&#xff0c;它们提供了有关项目、目录结构和构建环境的信息。这些变量可用于设置路径、传递参数、以及进行其他与构建过程相关的操作。 以下是…

Rust语言入门教程(五) - 流控制语句

if 表达式 在Rust中&#xff0c; if语句的判断条件不需要用( )括起来&#xff0c; 它会认为所有在if 和 {之间的表达式就是判断条件&#xff0c;例如&#xff1a; if num 5 {msg "five"; }判断条件的表达式必须返回一个bool型的值&#xff0c; 因为Rust是一个不喜…

[C/C++]数据结构 循环队列

前言: 队列是一种具有先进先出特性的结构,但是当数据出队列以后,前面的空间就无法再次利用了,循环队列就可以解决这个问题 一:概念及结构: 1.循环队列概念 循环队列是一种线性数据结构&#xff0c;其操作表现基于 FIFO&#xff08;先进先出&#xff09;原则并且队尾被连接在队…

颠覆与创新:算法备案的双重挑战

随着数字时代的迅猛发展&#xff0c;算法已经成为了企业创新和竞争的关键因素。然而&#xff0c;伴随着算法的广泛应用&#xff0c;数据隐私、法规合规等问题也愈发凸显&#xff0c;给企业带来了双重挑战。本文将深入探讨这一话题&#xff0c;探讨算法备案如何在颠覆与创新之间…

IDEA、PHPSTORM 在命令行中进行 PHP debug

然在终端执行控制器的方法php yii test/ab 即可看到触发debug 调试

视频剪辑技巧:多个视频合并新篇章,高效视频剪辑,创造无限可能

在数字媒体时代&#xff0c;视频剪辑已经成为一项重要的技能。多个视频合并是一种将多个视频片段合并成一个完整视频的技巧。这种技巧可以将不同的视频片段组合在一起&#xff0c;制作出独特且具有吸引力的视频内容。现在一起操作下云炫AI智剪如何批量合并视频的操作吧。 一、准…

友思特分享 | Neuro-T:零代码自动深度学习训练平台

来源&#xff1a;友思特 智能感知 友思特分享 | Neuro-T&#xff1a;零代码自动深度学习训练平台 欢迎关注虹科&#xff0c;为您提供最新资讯&#xff01; 工业自动化、智能化浪潮涌进&#xff0c;视觉技术在其中扮演了至关重要的角色。在汽车、制造业、医药、芯片、食品等行业…

针对CSP-J/S的每日一练:Day 11

一、审题 题目描述 给定两个大小分别为 m m m 和 n n n 的正序&#xff08;从小到大&#xff09;数组 n u m s 1 nums1 nums1 和 n u m s 2 nums2 nums2。请你找出并返回这两个正序数组的中位数。 算法的时间复杂度应该为 O ( l o g ( m n ) ) O(log (mn)) O(log(mn)) 。…

初学vue3与ts:路由跳转带参数

index-router <!-- 路由跳转 --> <template><div><div class"title-sub flex"><div>1、用router-link跳转带参数id1&#xff1a;</div><router-link to"./link?id1"><button>点我跳转</button>&…

maven 将Jar包安装到本地仓库

window系统&#xff1a; 注意事项&#xff1a;在windows中&#xff0c;使用mvn指令将jar安装到本地仓库时&#xff0c;一定要将相关资源使用“"”包裹上&#xff0c;不然会报下面的错&#xff1a; mvn install:install-file "-DfileD:\BaiduNetdiskDownload\qianzixi…

管道在Vue和Angular中的作用及React的替代方案

管道在Vue和Angular中的作用及React的替代方案 前言管道起源管道特点 前端中管道概念和作用概念作用 React关于管道的替代方案Vue和Angular管道的区别 前言 本文主要讲解管道在Vue和Angular中有哪些作用以及React对于管道概念的替代方案是什么。 管道起源 计算机中的Pipline…

PHP5.3 + Apache2.2 + Xdebug2.1.2环境并集成至PHPStrom全流程(解决使用最好的语言前的痛点问题)

文章目录 问题背景安装流程PHP安装配置PHPApache安装及配置PHPStrom集成PHP环境进行PHP开发 问题背景 由于公司陈旧项目的重新启动&#xff0c;现需要对该项目开发微信登录模块&#xff0c;本人是写 Java 的&#xff0c;但本着程序员终身学习、不惧新事物的特点&#xff0c;现…

NX二次开发UF_CSYS_set_wcs_display 函数介绍

文章作者&#xff1a;里海 来源网站&#xff1a;https://blog.csdn.net/WangPaiFeiXingYuan UF_CSYS_set_wcs_display Defined in: uf_csys.h int UF_CSYS_set_wcs_display(int display_status ) overview 概述 Set display of work coordinate system. 展示工作坐标系。 …

Android 11.0 默认开启USB调试功能

Android 11.0 默认开启USB调试功能 近来收到项目反馈需求想要默认开启USB调试功能&#xff0c;默认开启USB调试功能主要是在UsbDebuggingActivity.java文件中实现&#xff0c;具体修改参照如下&#xff1a; /vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/and…

状态模式 (State Pattern)

定义 状态模式&#xff08;State Pattern&#xff09;是一种行为型设计模式&#xff0c;它允许一个对象在其内部状态改变时改变它的行为。这种模式将每个状态的行为封装到对应的状态类中&#xff0c;使得上下文&#xff08;Context&#xff09;的行为随着其内部状态的改变而改…

公众号违禁词及违规行为汇总

1、微信官方发布《微信公众平台关于清理集赞行为的公告》&#xff0c;全面禁止公众账号“集赞”玩法。 微信对违反微信用户协议和公众平台协议的公众号处理机制是&#xff0c;公众号累计发现一次有集赞行为&#xff0c;封号7天&#xff1b;公众号累计发现二次有集赞行为&#…

面试:ShardingSphere问题

文章目录 什么是ShardingSphere&#xff0c;它的主要功能是什么&#xff1f;ShardingSphere的核心模块有哪些&#xff1f;他们是如何工作的&#xff1f;ShardingSphere 的读写分离是如何实现的&#xff1f;如何配置ShardingSphere的数据分片策略&#xff1f;ShardingSphere支持…

【运维面试100问】(六)buffer和cache的区别

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》&#xff1a;python零基础入门学习 《python运维脚本》&#xff1a; python运维脚本实践 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8…