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.pswp.cn/news/167259.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/167259.shtml
英文地址,請注明出處:http://en.pswp.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…