Java語(yǔ)言程序設(shè)計(jì)A實(shí)驗(yàn)1:類與對(duì)象_第1頁(yè)
Java語(yǔ)言程序設(shè)計(jì)A實(shí)驗(yàn)1:類與對(duì)象_第2頁(yè)
Java語(yǔ)言程序設(shè)計(jì)A實(shí)驗(yàn)1:類與對(duì)象_第3頁(yè)
Java語(yǔ)言程序設(shè)計(jì)A實(shí)驗(yàn)1:類與對(duì)象_第4頁(yè)
Java語(yǔ)言程序設(shè)計(jì)A實(shí)驗(yàn)1:類與對(duì)象_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、實(shí)驗(yàn)課程名稱:Java語(yǔ)言程序設(shè)計(jì)A實(shí)驗(yàn)項(xiàng)目名稱實(shí)驗(yàn)1:類與對(duì)象實(shí)驗(yàn)成績(jī)實(shí) 驗(yàn) 者專業(yè)班級(jí)組 別同 組 者無(wú)開始日期第一部分:實(shí)驗(yàn)預(yù)習(xí)報(bào)告(包括實(shí)驗(yàn)?zāi)康募耙饬x,實(shí)驗(yàn)基本原理與方法,主要儀器設(shè)備及耗材,實(shí)驗(yàn)內(nèi)容及要求,實(shí)驗(yàn)方案與技術(shù)路線等)一實(shí)驗(yàn)?zāi)康募耙饬x1根據(jù)實(shí)際需求,使用UML類圖,合理設(shè)計(jì)類及其成員(實(shí)例變量、方法)。2編寫、調(diào)用構(gòu)造函數(shù),初始化新建對(duì)象。3編寫、調(diào)用方法,完成相關(guān)操作。4實(shí)現(xiàn)信息隱藏與封裝。5創(chuàng)建對(duì)象、調(diào)用對(duì)象方法。6正確使用對(duì)象數(shù)組。7設(shè)計(jì)、實(shí)現(xiàn)算法邏輯。二實(shí)驗(yàn)基本原理與方法1面向?qū)ο蟮母拍?、思想、思維方式。2UML面向?qū)ο笤O(shè)計(jì)初步。2類的概念、結(jié)構(gòu)、定義、使用。3構(gòu)造

2、函數(shù)的概念、結(jié)構(gòu)、定義、調(diào)用。4方法的概念、結(jié)構(gòu)、定義、調(diào)用。5信息隱藏與封裝的概念、實(shí)現(xiàn)。6對(duì)象的概念、創(chuàng)建、使用。7對(duì)象數(shù)組的概念、使用。8控制流程。三主要儀器設(shè)備及耗材1PC及其兼容機(jī)。2計(jì)算機(jī)操作系統(tǒng)。3程序編輯器EditPlus。4Java開發(fā)工具JDK。四實(shí)驗(yàn)內(nèi)容及要求實(shí)驗(yàn)1-1:請(qǐng)?jiān)O(shè)計(jì)一個(gè)類Student,該類的實(shí)例變量有學(xué)號(hào)studentNumber、姓名studentName、專業(yè)specialty、學(xué)費(fèi)tuition。學(xué)費(fèi)tuition要實(shí)現(xiàn)封裝,最低學(xué)費(fèi)4500元。請(qǐng)繪制完整的UML類圖,寫出類Student的Java源代碼。然后,編寫測(cè)試類StudentTest,給出運(yùn)

3、行結(jié)果。實(shí)驗(yàn)1-2:編寫類Book,其實(shí)例變量簡(jiǎn)化為:bookNamenumRated5numRated4numRated3numRated2numRated1方法addRating( )應(yīng)保證能接收一個(gè)有效整數(shù)作為形參,將與形參匹配的評(píng)級(jí)人數(shù)加1。例如,如果接收3,則numRated3加1。方法getAverage( ),返回所有評(píng)級(jí)的平均值。編寫測(cè)試類BookReviewTest,在main( )方法中,創(chuàng)建一個(gè)Book對(duì)象,為這本圖書評(píng)級(jí)6次,最后輸出這本圖書的書名、平均評(píng)級(jí)。程序的一種可能的輸出結(jié)果:Head First Java,Average Rating: 4.2實(shí)驗(yàn)1-2(數(shù)組

4、版本):重做實(shí)驗(yàn)1-2,使用數(shù)組代替變量保存圖書評(píng)級(jí),所有修改只應(yīng)局限于類Book內(nèi)部,測(cè)試類BookReviewTest無(wú)需修改。實(shí)驗(yàn)1-3(選做):編寫儲(chǔ)蓄賬戶類及測(cè)試類,模擬存款,參考以下運(yùn)行方式:(1)新開5個(gè)儲(chǔ)蓄賬戶,各儲(chǔ)蓄賬戶的編號(hào)、戶名在新開儲(chǔ)蓄賬戶時(shí)初始化,假設(shè)每位用戶新開儲(chǔ)蓄賬戶時(shí)都存入了一筆錢。(2)提示用戶從鍵盤輸入儲(chǔ)蓄賬戶編號(hào)。(3)若輸入的儲(chǔ)蓄賬戶編號(hào)與新開的5個(gè)儲(chǔ)蓄賬戶編號(hào)之一匹配,則提示用戶從鍵盤輸入存款金額,存款金額必須大于0,否則顯示錯(cuò)誤提示,直到用戶輸入的存款金額大于0為止。(4)相應(yīng)儲(chǔ)蓄賬戶的余額被更新。(5)存款完成后,提示存款成功,顯示該儲(chǔ)蓄賬戶的編號(hào)

5、、戶名、余額。(6)若輸入的儲(chǔ)蓄賬戶編號(hào)與新開的5個(gè)儲(chǔ)蓄賬戶編號(hào)均無(wú)法匹配,顯示錯(cuò)誤提示,并詢問(wèn)是否還要繼續(xù)存款。(7)用戶輸入yes,繼續(xù)執(zhí)行步驟(2),否則顯示退出信息。最基本要求:繪制UML類圖;儲(chǔ)蓄賬戶的余額必須確保大于等于0。五實(shí)驗(yàn)方案及技術(shù)路線(設(shè)計(jì)思路、UML類圖、算法、注意事項(xiàng)) 1)對(duì)于實(shí)驗(yàn)1-1,可以對(duì)studentNumber,studentName,specialty,tuition四個(gè)變量都進(jìn)行封裝,使用private關(guān)鍵字,然后在類中使用get和set方法,實(shí)現(xiàn)對(duì)這些實(shí)例變量的獲取和更改。在setTuition()方法中,首先通過(guò)if語(yǔ)句對(duì)傳入的參數(shù)進(jìn)行判斷,若數(shù)值

6、大于或等于4500,則修改成功,否則輸出錯(cuò)誤提示,簡(jiǎn)略的UML圖如下: 2)對(duì)于實(shí)驗(yàn)1-2中,各個(gè)星級(jí)人數(shù)的統(tǒng)計(jì)通過(guò)switch()case語(yǔ)句即可實(shí)現(xiàn),但要注意的是,最好加上default語(yǔ)句用以處理錯(cuò)誤輸入的情況。數(shù)組版本只需要將numRated5、numRated4、numRated3、numRated2、numRated1這幾個(gè)變量放入一個(gè)int數(shù)組中即可。3)實(shí)驗(yàn)1-3中,因?yàn)榭紤]到各個(gè)儲(chǔ)蓄賬號(hào)不能重復(fù),并且在每次操作的時(shí)候需要進(jìn)行匹配,若每次都通過(guò)for()循環(huán)遍歷則比較繁瑣,操作時(shí)間長(zhǎng),說(shuō)以采用HashMap集合存儲(chǔ)賬號(hào),賬號(hào)number為關(guān)鍵字,每個(gè)Account對(duì)象為值,因?yàn)?/p>

7、在測(cè)試類中會(huì)使用到containsKey()等方法,所以在Account類中需要重寫toString()、equal()以及hashCode()方法。簡(jiǎn)略的UML圖如下:第二部分:實(shí)驗(yàn)過(guò)程記錄(可加頁(yè))(代碼、運(yùn)行結(jié)果、實(shí)驗(yàn)中出現(xiàn)的問(wèn)題及解決過(guò)程)n 實(shí)驗(yàn)1-1程序代碼如下:1)Student類代碼:public class Studentprivate String studentNumber;private String studentName;private String specialty;private double tuition;public Student(String stu

8、dentNumber, String studentName, String specialty,double tuition)this.studentNumber = studentNumber;this.studentName = studentName;this.specialty = specialty;this.tuition = tuition;public void setStudentNumber(String studentNumber) this.studentNumber=studentNumber;public String getStudentNumber() ret

9、urn studentNumber;public String getStudentName() return studentName;public void setStudentName(String studentName) this.studentName = studentName;public String getSpecialty() return specialty;public void setSpecialty(String specialty) this.specialty = specialty;public void setTuition(double tuition)

10、 if(tuition<4500)System.out.println("最低學(xué)費(fèi)為4500,請(qǐng)不要低于此數(shù)值。");elsethis.tuition = tuition;public double getTuition() return tuition;2)StudentTest 類代碼:public class StudentTest public static void main(String args) /創(chuàng)建學(xué)生實(shí)例Student student1=new Student("學(xué)號(hào)","姓名","專業(yè)"

11、;,5000);Student student2=new Student("學(xué)號(hào)","姓名","專業(yè)",5500);/修改student2的學(xué)號(hào)student2.setStudentNumber("新學(xué)號(hào)");/修改student2的姓名student2.setStudentName("新姓名");/修改student1的專業(yè)信息student1.setSpecialty("新專業(yè)");/修改student1學(xué)費(fèi)信息student1.setTuition(4500);/輸出s

12、tudent1和student2的信息System.out.println("學(xué)號(hào):"+student1.getStudentNumber()+"n"+"姓名:"+student1.getStudentName()+"n"+"專業(yè):"+student1.getSpecialty()+"n"+"學(xué)費(fèi):"+student1.getTuition()+"n");System.out.println("學(xué)號(hào):"+studen

13、t2.getStudentNumber()+"n"+"姓名:"+student2.getStudentName()+"n"+"專業(yè):"+student2.getSpecialty()+"n"+"學(xué)費(fèi):"+student2.getTuition()+"n");運(yùn)行結(jié)果如下:省略n 實(shí)驗(yàn)1-2程序代碼如下:1) Book類代碼:public class Book private String bookName;private int numRate1,numR

14、ate2,numRate3,numRate4,numRate5;public Book(String bookName) this.bookName = bookName;/初始化各星級(jí)的人數(shù)為0numRate1=0;numRate2=0;numRate3=0;numRate4=0;numRate5=0;public String getBookName()return bookName;public void setBookName(String bookName)this.bookName = bookName;public void addRating(int rateIn)switch

15、(rateIn)case 1:numRate1+;break;case 2:numRate2+;break;case 3:numRate3+;break;case 4:numRate4+;break;case 5:numRate5+;break;default:System.err.println("數(shù)字"+rateIn+"不在星級(jí)評(píng)定范圍,此次輸入無(wú)效,請(qǐng)輸入數(shù)字1-5!");break;public double getAverage()double average=0; average=(numRate1*1+numRate2*2+numRate3

16、*3+numRate4*4+numRate5*5)*1.0/(numRate1+numRate2+numRate3+numRate4+numRate5);return average;2) (數(shù)組版)Book類代碼:public class Bookprivate String bookName;private int numRate=new int5;public Book(String bookName) this.bookName = bookName;/初始化各星級(jí)的人數(shù)為0for(int i=0;i<5;i+)numRatei=0;public String getBookNa

17、me()return bookName;public void setBookName(String bookName)this.bookName = bookName;public void addRating(int rateIn)switch(rateIn)case 1:numRate0+;break;case 2:numRate1+;break;case 3:numRate2+;break;case 4:numRate3+;break;case 5:numRate4+;break;default:System.err.println("數(shù)字"+rateIn+&quo

18、t;不在星級(jí)評(píng)定范圍,此次輸入無(wú)效,請(qǐng)輸入數(shù)字1-5!");break;public double getAverage() double average=0;average=(numRate0*1+numRate1*2+numRate2*3+numRate3*4+numRate4*5)*1.0/(numRate0+numRate1+numRate2+numRate3+numRate4);return average;3) BookReviewTest類代碼:import java.util.Scanner;public class BookReviewTest public sta

19、tic void main(String args)Book book=new Book("Java大學(xué)教程");Scanner sc=new Scanner(System.in);/6次評(píng)級(jí)for(int i=1;i<=6;i+)System.out.println("書本Java大學(xué)教程星級(jí)評(píng)分開始,請(qǐng)輸入數(shù)字1-5:");int rating=sc.nextInt();book.addRating(rating);System.out.println("書名:"+book.getBookName()+"n&quo

20、t;+"平均星級(jí):"+book.getAverage();運(yùn)行結(jié)果如下:1) 當(dāng)出現(xiàn)輸入星級(jí)大于5或小于0時(shí)2) 當(dāng)輸入正常時(shí):n 實(shí)驗(yàn)1-3程序代碼如下:1)儲(chǔ)蓄賬戶Account 類代碼:public class Account private String number; private String name; private double balance;public Account(String number, String name)this.number = number; = name;balance=0;public String ge

21、tNumber()return number;public String getName()return name;public double getBalance()return balance;public void deposit(double amountIn)balance-=amountIn;public void withdraw(double amountIn)balance+=amountIn;public String toString()return "("+number+","+name+","+balance

22、+")n"public boolean equals(Object objIn)Account accIn=(Account)objIn;return number.equals(accIn.number);public int hashCode()return number.hashCode();2)測(cè)試類AccountTest 代碼import java.util.HashMap;import java.util.InputMismatchException;import java.util.Map;import java.util.Scanner;public cla

23、ss AccountTest public static void main(String args)Map<String,Account> accountList=new HashMap<String,Account>();/創(chuàng)建3個(gè)賬戶并放入集合accountList中Account account1=new Account("11111","dengqiuping");account1.withdraw(500);accountList.put("11111", account1);Account acc

24、ount2=new Account("22222","lixi");account2.withdraw(100);accountList.put("22222", account2); Accountaccount3=newAccount("33333","chengying");account3.withdraw(1000);accountList.put("33333", account3);Account account4=new Account("44444

25、","susu");account4.withdraw(5000);accountList.put("44444", account4);Account account5=new Account("55555","zhangxi");account5.withdraw(300);accountList.put("55555", account5);/當(dāng)用戶輸入數(shù)據(jù)類型錯(cuò)誤的時(shí)候,輸出錯(cuò)誤提示try selectChoice(accountList); catch (InputMisma

26、tchException e) System.err.println("輸入錯(cuò)誤,請(qǐng)輸入數(shù)字1-4!");selectChoice(accountList);public static void selectChoice(Map<String,Account> accountListIn)Scanner sc=new Scanner(System.in);int input;doSystem.out.println("1.存款");System.out.println("2.取款");System.out.println(

27、"3.余額查詢");System.out.println("4.退出");System.out.println("請(qǐng)輸入操作【1-4】:");input=sc.nextInt();switch(input)case 1:option1(accountListIn);break;case 2:option2(accountListIn);break;case 3:option3(accountListIn);break;case 4:System.exit(0);/當(dāng)輸入的數(shù)字小于1或大于4時(shí)輸出錯(cuò)誤提示default :System.

28、err.println("無(wú)效輸入,請(qǐng)輸入數(shù)字【1-4】!");while(input!=4);/取款操作private static void option1(Map<String,Account> accountListIn) String tempNumber;Scanner sc1 = new Scanner(System.in);System.out.println("請(qǐng)輸入賬號(hào)(輸入'0'返回上一級(jí)):");tempNumber = sc1.next();if(accountListIn.containsKey(t

29、empNumber)try for(;)System.out.println("請(qǐng)輸入存款數(shù)額:");Double tempAmount=sc1.nextDouble();if(tempAmount<0)System.err.println("存款數(shù)額不能小于0元,請(qǐng)從重輸入數(shù)值!");elseAccount currAccount=accountListIn.get(tempNumber);currAccount.withdraw(tempAmount);System.out.println("存款成功!");System.o

30、ut.println("賬號(hào):"+currAccount.getNumber()+"n"+"賬戶名:"+currAccount.getName()+"n"+"余額:"+currAccount.getBalance();break; catch (InputMismatchException e) System.err.println("無(wú)效輸入,請(qǐng)輸入大于0的數(shù)值!");option1(accountListIn);else if(tempNumber.equals(&quo

31、t;0")selectChoice(accountListIn);elseString c=reChoice();if(c.equals("1")option1(accountListIn);else/返回主菜單/取款private static void option2(Map<String,Account> accountListIn) Scanner sc2=new Scanner(System.in);System.out.println("請(qǐng)輸入賬號(hào)(輸入'0'返回上一級(jí)):");String tempNu

32、mber=sc2.next();if(accountListIn.containsKey(tempNumber)try for(;)System.out.println("請(qǐng)輸入取款數(shù)額:");Double tempAmount=sc2.nextDouble();Account currAccount=accountListIn.get(tempNumber);if(tempAmount>currAccount.getBalance()System.err.println("余額不足,請(qǐng)重新輸入數(shù)值!");else if(tempAmount<

33、;0) System.err.println("取款額不能為負(fù),請(qǐng)重新輸入數(shù)值!");elsecurrAccount.deposit(tempAmount);System.out.println("取款成功!");System.out.println("賬號(hào):"+currAccount.getNumber()+"n"+"賬戶名:"+currAccount.getName()+"n"+"余額:"+currAccount.getBalance();break;

34、 catch (InputMismatchException e) System.err.println("無(wú)效輸入,請(qǐng)輸入大于0的數(shù)值!");option2(accountListIn);else if(tempNumber.equals("0")selectChoice(accountListIn);elseString c=reChoice();if(c.equals("1")option2(accountListIn);else/返回主菜單 /余額查詢private static void option3(Map<Str

35、ing,Account> accountListIn)Scanner sc3=new Scanner(System.in);System.out.println("請(qǐng)輸入賬號(hào)(輸入'0'返回上一級(jí)):");String tempNumber=sc3.next();if(accountListIn.containsKey(tempNumber)Account currAccount=accountListIn.get(tempNumber);System.out.println("余額:"+currAccount.getBalance()

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論