版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Java程序設(shè)計(jì)項(xiàng)目化教程項(xiàng)目三綜合實(shí)訓(xùn)模擬貸款1.實(shí)例內(nèi)容設(shè)計(jì)一個(gè)貸款類Loan,Loan類包含貸款年利率(annuallnterestRate)、貸款年限(numberOfYears)、貨款額(loanAmount)、貸款日期(loanDate)成員變量,還包含獲取和設(shè)置貸款年利率、貸款年限、貸款額的方法,以及貸款的月支付額和總支付額的方法,此外,還需要計(jì)算貸款的月支付額和總支付額。設(shè)置默認(rèn)構(gòu)造方法(不帶參數(shù),使用默認(rèn)值初始化成員變量)和帶4個(gè)參數(shù)的構(gòu)造方法。2.實(shí)例目的1)進(jìn)一步熟悉類的成員變量和成員方法的定義。2)進(jìn)一步熟悉對象的創(chuàng)建與使用方法。3)進(jìn)一步熟悉包的創(chuàng)建與引用方法。4)進(jìn)一步了解類的訪問權(quán)限。3.任務(wù)要求1)設(shè)計(jì)Loan類(1)構(gòu)造方法。默認(rèn)構(gòu)造方法:不帶參數(shù),設(shè)置默認(rèn)的年利率為2.5%,貸款年限為1年,貸款金額為1000元,貸款日期為創(chuàng)建對象時(shí)的當(dāng)前日期。帶參數(shù)的構(gòu)造方法:貸款年利率、貸款年限和貸款金額作為參數(shù),并相應(yīng)地初始化成員變量,貸款日期同樣設(shè)置為當(dāng)前日期。(2)訪問器方法(Getter和Setter)。為每個(gè)私有成員變量提供公共的get和set方法,loanDate只提供get方法(貸款日期在創(chuàng)建后不應(yīng)修改)。(3)計(jì)算方法。publicdoublegetMonthlyPayment():計(jì)算并返回月支付額。publicdoublegetTotalPayment():計(jì)算并返回總支付額。(4)計(jì)算公式:月利率monthlyInterestRate=annualInterestRate/1200月支付額monthlyPayment=loanAmount*monthlyInterestRate/(1-(1/Math.pow(1+monthlyInterestRate,numberOfYears*12)))總支付額totalPayment=monthlyPayment*numberOfYears*122)編寫測試類(1)包聲明:將測試類放入一個(gè)合適的包中,例如com.example.test。(2)導(dǎo)入Loan類:使用import語句導(dǎo)入Loan類。(3)類命名:命名測試類為LoanTest。(4)主要功能:提示用戶輸入:貸款金額、年利率(例如,輸入7.5表示年利率為7.5%)、貸款年限創(chuàng)建Loan對象:使用用戶輸入的數(shù)據(jù)創(chuàng)建一個(gè)Loan對象。顯示結(jié)果:貸款日期月支付額(保留兩位小數(shù))總支付額(保留兩位小數(shù))3)挑戰(zhàn)(1)擴(kuò)展功能:在Loan類中添加方法,允許用戶根據(jù)不同的貸款方案(例如,不同的還款方式)計(jì)算月支付額。(2)圖形用戶界面:使用Swing或JavaFX創(chuàng)建一個(gè)簡單的圖形界面,方便用戶輸入數(shù)據(jù)和查看結(jié)果。數(shù)據(jù)驗(yàn)證:增強(qiáng)程序的健壯性,對用戶輸入的數(shù)據(jù)進(jìn)行嚴(yán)格的驗(yàn)證和錯(cuò)誤處理。4.功能設(shè)計(jì)與實(shí)現(xiàn):1)基礎(chǔ)功能實(shí)現(xiàn)首先,完成Loan類的基本功能,包括貸款的構(gòu)造方法、訪問器方法、計(jì)算月支付額和總支付額的方法。接著,實(shí)現(xiàn)LoanTest測試類,提示用戶輸入并展示計(jì)算結(jié)果。包的創(chuàng)建,例如在已有ch3的包下面創(chuàng)建一個(gè)包名叫l(wèi)oan,在loan包中創(chuàng)建一個(gè)類Loan。Loan類代碼:packagech3.loan;importjava.util.Date;publicclassLoan{//成員變量privatedoubleannualInterestRate;//年利率privateintnumberOfYears;//貸款年限privatedoubleloanAmount;//貸款金額privateDateloanDate;//貸款日期//默認(rèn)構(gòu)造方法publicLoan(){this.annualInterestRate=2.5;//默認(rèn)年利率2.5%this.numberOfYears=1;//默認(rèn)貸款年限1年this.loanAmount=1000;//默認(rèn)貸款金額1000元this.loanDate=newDate();//當(dāng)前日期}//帶參數(shù)的構(gòu)造方法publicLoan(doubleannualInterestRate,intnumberOfYears,doubleloanAmount){this.annualInterestRate=annualInterestRate;this.numberOfYears=numberOfYears;this.loanAmount=loanAmount;this.loanDate=newDate();//當(dāng)前日期}//Getter和Setter方法publicdoublegetAnnualInterestRate(){returnannualInterestRate;}publicvoidsetAnnualInterestRate(doubleannualInterestRate){this.annualInterestRate=annualInterestRate;}publicintgetNumberOfYears(){returnnumberOfYears;}publicvoidsetNumberOfYears(intnumberOfYears){this.numberOfYears=numberOfYears;}publicdoublegetLoanAmount(){returnloanAmount;}publicvoidsetLoanAmount(doubleloanAmount){this.loanAmount=loanAmount;}publicDategetLoanDate(){returnloanDate;}//計(jì)算月支付額publicdoublegetMonthlyPayment(){doublemonthlyInterestRate=annualInterestRate/1200;returnloanAmount*monthlyInterestRate/(1-(1/Math.pow(1+monthlyInterestRate,numberOfYears*12)));}//計(jì)算總支付額publicdoublegetTotalPayment(){returngetMonthlyPayment()*numberOfYears*12;}}LoanTest測試類packagech3.loan;importch3.loan.Loan;importjava.util.Scanner;publicclassLoanTest{publicstaticvoidmain(String[]args){Scannerinput=newScanner(System.in);//提示用戶輸入貸款信息System.out.print("請輸入貸款金額:");doubleloanAmount=input.nextDouble();System.out.print("請輸入年利率(例如7.5表示7.5%):");doubleannualInterestRate=input.nextDouble();System.out.print("請輸入貸款年限:");intnumberOfYears=input.nextInt();//創(chuàng)建Loan對象Loanloan=newLoan(annualInterestRate,numberOfYears,loanAmount);//輸出貸款信息System.out.println("貸款日期:"+loan.getLoanDate());System.out.printf("月支付額:%.2f\n",loan.getMonthlyPayment());System.out.printf("總支付額:%.2f\n",loan.getTotalPayment());}}功能解釋Loan類:成員變量:貸款年利率、貸款年限、貸款金額和貸款日期。默認(rèn)構(gòu)造方法:初始化一些默認(rèn)值(年利率2.5%,貸款年限1年,貸款金額1000元,貸款日期為當(dāng)前日期)。帶參數(shù)的構(gòu)造方法:用于根據(jù)用戶輸入的數(shù)據(jù)初始化貸款年利率、貸款年限和貸款金額,貸款日期同樣設(shè)置為當(dāng)前日期。訪問器方法:為每個(gè)成員變量提供了getter和setter方法,loanDate只有g(shù)etter方法。計(jì)算方法:getMonthlyPayment()和getTotalPayment()計(jì)算并返回月支付額和總支付額。LoanTest類:提示用戶輸入貸款金額、年利率和貸款年限。創(chuàng)建Loan對象,并通過該對象計(jì)算月支付額和總支付額。打印輸出貸款日期、月支付額和總支付額。3)擴(kuò)展功能(1)擴(kuò)展功能:不同貸款方案的月支付額計(jì)算例如,可以根據(jù)不同的還款方式計(jì)算月支付額,比如等額本金或等額本息。以下是基于等額本息的計(jì)算(已經(jīng)在原代碼中實(shí)現(xiàn))。如果要添加其他方式,可以通過修改Loan類來實(shí)現(xiàn)。(2)圖形界面:使用Swing創(chuàng)建GUI可以為用戶提供一個(gè)簡單的圖形界面,方便輸入貸款信息并查看計(jì)算結(jié)果。下面是一個(gè)使用Swing實(shí)現(xiàn)的GUI示例:packagech3.loan;importjavax.swing.*;importjava.awt.*;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;publicclassLoanCalculatorGUIextendsJFrame{/** *提供一個(gè)簡單的圖形界面,方便輸入貸款信息并查看計(jì)算結(jié)果。 */ privatestaticfinallongserialVersionUID=3203510506760817375L; privateJTextFieldloanAmountField,annualInterestRateField,yearsField;privateJTextArearesultArea;publicLoanCalculatorGUI(){setTitle("貸款計(jì)算器");setSize(400,300);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);JPanelpanel=newJPanel();panel.setLayout(newGridLayout(5,2));JLabelloanAmountLabel=newJLabel("貸款金額:");JLabelannualInterestRateLabel=newJLabel("年利率:");JLabelyearsLabel=newJLabel("貸款年限:");JLabelresultLabel=newJLabel("計(jì)算結(jié)果:");loanAmountField=newJTextField();annualInterestRateField=newJTextField();yearsField=newJTextField();resultArea=newJTextArea(5,20);JButtoncalculateButton=newJButton("計(jì)算");panel.add(loanAmountLabel);panel.add(loanAmountField);panel.add(annualInterestRateLabel);panel.add(annualInterestRateField);panel.add(yearsLabel);panel.add(yearsField);panel.add(resultLabel);panel.add(resultArea);panel.add(newJLabel());panel.add(calculateButton);add(panel);setLocationRelativeTo(null);calculateButton.addActionListener(newActionListener(){@OverridepublicvoidactionPerformed(ActionEvente){doubleloanAmount=Double.parseDouble(loanAmountField.getText());doubleannualInterestRate=Double.parseDouble(annualInterestRateField.getText());intyears=Integer.parseInt(yearsField.getText());Loanloan=newLoan(annualInterestRate,years,loanAmount);resultArea.setText("貸款日期:"+loan.getLoanDate()+"\n");resultArea.append(String.format("月支付額:%.2f\n",loan.getMonthlyPayment()));resultArea.append(String.format("總支付額:%.2f\n",loan.getTotalPayment()));}});}publicstaticvoidmain(String[]args){SwingUtilities.invokeLater(newRunnable(){@Overridepublicvoidrun(){newLoanCalculatorGUI().setVisible(true);}});}}4)數(shù)據(jù)驗(yàn)證(擴(kuò)展功能)在圖形界面中,用戶輸入的數(shù)據(jù)需要進(jìn)行驗(yàn)證,以確保輸入正確。如果用戶輸入無效的數(shù)據(jù)(例如負(fù)數(shù)或非數(shù)字),應(yīng)顯示錯(cuò)誤消息并提示重新輸入。例如,可以通過try-catch語句來捕獲輸入錯(cuò)誤,并使用JOptionPane彈出對話框進(jìn)行提示:try{doubleloanAmount=Double.parseDouble(loanAmountField.getText());
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 云南省紅河州、文山州2026屆高三上學(xué)期第二次復(fù)習(xí)統(tǒng)一檢測語文試卷(含答案)
- 合肥高新區(qū)AV-1地塊整體定位及物業(yè)發(fā)展建議
- 11月通脹數(shù)據(jù)點(diǎn)評:明年需關(guān)注的兩條宏觀物價(jià)線索
- 2026廣西貴港市桂平市尋旺鄉(xiāng)中心幼兒園招聘專任教師、安保人員3人備考考試題庫及答案解析
- 2026年上半年黑龍江省事業(yè)單位公開招聘(4254人)備考考試試題及答案解析
- 室內(nèi)保潔服務(wù)公司安全管理責(zé)任制度
- 2026山東事業(yè)單位統(tǒng)考東營經(jīng)濟(jì)技術(shù)開發(fā)區(qū)招聘2人備考考試題庫及答案解析
- 職場人際關(guān)系管理制度(3篇)
- 上海市執(zhí)法類公務(wù)員招錄體能測評健康承諾書參考考試題庫及答案解析
- 乳制品設(shè)備管理制度(3篇)
- 四川省樂山市高中高三上學(xué)期第一次調(diào)查研究考試數(shù)學(xué)試題【含答案詳解】
- 物流行業(yè)運(yùn)輸司機(jī)安全駕駛與效率績效評定表
- 2026年及未來5年市場數(shù)據(jù)中國脫硫市場運(yùn)行態(tài)勢及行業(yè)發(fā)展前景預(yù)測報(bào)告
- 中國農(nóng)業(yè)科學(xué)院2026年度第一批統(tǒng)一公開招聘筆試考試參考試題及答案解析
- 飼料運(yùn)輸合同范本
- 廈門灌口中學(xué)2026屆化學(xué)高二第一學(xué)期期末質(zhì)量檢測試題含答案
- 室外看臺座椅安裝施工方案
- 西藏轉(zhuǎn)移就業(yè)課件
- 2025年繩索技術(shù)理論題庫及答案
- 工業(yè)園招商課件
- 護(hù)理帶教老師小講課
評論
0/150
提交評論