題目:
圖書館提供給讀者借閱服務,包括借閱書籍及音像制品。如果借閱超時需要繳納罰金。對于不同類型的書籍和音像制品罰款規則不同。
成人書籍:允許借閱的時間是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 使用多態實現圖書館計算罰金功能 的全部內容了,希望能對你有所幫助!