JAVA程序設計、實習報告_第1頁
JAVA程序設計、實習報告_第2頁
JAVA程序設計、實習報告_第3頁
JAVA程序設計、實習報告_第4頁
JAVA程序設計、實習報告_第5頁
已閱讀5頁,還剩21頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

...wd......wd......wd...信息工程學院實驗報告的內容與格式按任課教師的要求書寫。實驗報告的內容與格式按任課教師的要求書寫。Java程序設計實習報告學院:信息工程學院班級:姓名:學號:成績:1.實驗目的掌握Java程序面向對象編程的根本架構,會運用面向對象的思想編寫Java程序。2.實驗過程熟悉JAVA的編程環境實驗題1閱讀如下程序,完成思考題。classCCircle{doublepi;doubleradius;doublegetRadius()//返回圓半徑{returnradius;}voidsetCircle(doubler,doublep)//設置圓半徑{pi=p;radius=r;}}publicclassEx2_1{publicstaticvoidmain(Stringargs[]){CCirclecir1=newCCircle();//創立一個新圓類cir1.setCircle(2.0,3.1416);//設置圓半徑System.out.println("radius="+cir1.getRadius());//輸出圓半徑}}程序運行結果如下:實驗題2設計一個用來描述汽車的類,使用類的非靜態成員變量來表示汽車的車主姓名、當前的速率和當前方向盤的轉向角度,使用類的非靜態成員方法來表示改變汽車的速率和停車兩個操作。程序源代碼如下:publicclasscar{ Stringname;doublespeed;doubleangle;voidcar() {="user";this.speed=0;this.angle=0; }publicStringgetname() {returnname; }publicvoidsetuser(Stringname) {=name; }publicvoidsetSeppd(doublespeed) {this.speed=speed; }publicdoublegetspeed() {returnspeed; }publicvoidsetangle(doubleangle) {this.speed=angle; }publicdoublegetangle() {returnangle; }publicvoidstopcar() {this.setangle(0);this.setSeppd(0); }/** *@paramargs */publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstub carA=newcar(); A.setuser("zhangyong"); A.setSeppd(150); A.setangle(35); System.out.println("beforestopcar:"); System.out.println("thiscarsbelongto:"+A.getname()); System.out.println("nowthespeedis:"+A.getspeed()); System.out.println("nowthecarangleis"+A.getangle()); A.stopcar(); System.out.println("stopcar"); System.out.println("thiscarsbelongto:"+A.getname()); System.out.println("nowthespeedis:"+A.getspeed()); System.out.println("nowthecarangleis"+A.getangle()); }}運行結果:實驗題3定義一個類MyProgram,包含兩個屬性:一個是private的整型屬性data、一個是private的String類型的屬性str,封裝這兩個屬性的四個方法setData〔〕和getData〔〕、setStr()和getStr〔〕;將這兩個屬性轉變為字符串的方法是toStr〔〕。編寫程序,使用MyProgram類,實現數據的訪問和修改,并調用toStr〔〕方法顯示該類的屬性。程序源代碼如下:publicclassMyprogrem{privateintdata;privateStringStr;publicvoidSetData(intdata){ this.data=data;}publicvoidSetStr(StringStr){ this.Str=Str;}publicintgetdata(){ returnthis.data;}publicStringgetStr(){ returnthis.Str;}publicStringtoString(intd){ returnString.valueOf(d);}publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub MyprogremM=newMyprogrem(); System.out.println("beforechangethevalues:"); M.SetData(15); M.SetStr("zhangyong"); System.out.println(M.data); System.out.println(M.Str); System.out.println("changethevalues:"); M.SetData(20); M.SetStr("asdf"); System.out.println(M.data); System.out.println(M.Str); }}實驗題4定義一個類實現銀行帳戶的概念,包括的變量有"帳號"和"存款余額",包括的方法有"存款"、"取款"、"查詢余額"和〞顯示帳號〞。定義主類,創立帳戶類的對象,并完成相應操作。提示:關鍵代碼如下:publicintgetleftmoney(){returnleftmoney;}publicvoidsavemoney(doublemoney){leftmoney+=money;}publicvoidgetmoney(doublemoney){if(money<=leftmoney)leftmoney-=money;elseSystem.out.println("只能?。?+leftmoney);}…bankaccountba=newbankaccount(888123,1000);ba.savemoney(21000);System.out.println("存入21000元后余額為:"+ba.getleftmoney());ba.getmoney(11500);System.out.println("11500元后余額為:"+ba.getleftmoney());源代碼如下:publicclassbankaccount{ Stringbanknumber; doubleaccountbalance; voidbankaccoutn(Stringb) { banknumber=b; accountbalance=5000; } publicStringgetaccountnumber() { returnthis.banknumber; } publicdoublegetaccountbalance() { returnthis.accountbalance; } publicdoublegetleftmoney() { returnaccountbalance; } publicvoidsavemoney(doublemoney) { accountbalance+=money; } publicvoidgetmoney(doublemoney) { if(money<=accountbalance) accountbalance-=money; else System.out.println("只能取:"+accountbalance); } publicbankaccount(){ //TODOAuto-generatedconstructorstub } /** *@paramargs */ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstubbankaccountB=newbankaccount();B.bankaccoutn("799524545253321346501");System.out.println("當前賬號為:"+B.getaccountnumber());System.out.println("當前賬號余額為:"+B.getaccountbalance());B.savemoney(21000);System.out.println("存入21000元后余額為:"+B.getleftmoney());B.getmoney(11500);System.out.println("11500元后余額為:"+B.getleftmoney()); }}運行結果如下:實驗題5定義鏈表類,實現單鏈表根本操作。提示:關鍵代碼如下:publicclassNode{publicintdata;Nodenext;publicNode(intdata){this.data=data;this.next=null;}publicvoidNodeDisplay(){System.out.println("{"+data+"}");}}publicclassLink{·publicLink(){this.first=null;}publicbooleanisEmpty(){}publicvoidinsertHeadNode(intdata){}publicNodedeleteHeadNode(){}publicvoidfindNode(intk){}publicvoiddisplayLink(){}publicstaticvoidmain(String[]args){}}源代碼如下:publicclasslink{ privateNodefirst; publiclink() { //TODOAuto-generatedconstructorstub this.first=null; } publicbooleanisEmpty() { if(this.first==null) { returntrue; } else { returnfalse; } } publicvoidinsertHeadNode(intdata) { NodeN=newNode(0); N.data=data; N.next=this.first.next; this.first.next=N; } publicNodedeleteHeadNode() { if(!isEmpty()) { this.first=this.first.next; returnthis.first.next; } else { System.out.println("thislinkisenpty!"); returnnull; } } publicvoidfindNode(intk) { NodeN=newNode(0); N=first.next; inti=0; while(N!=null) { if(N.data==k) { System.out.println(k+"在節點中的位置為:"+(i+1)); break; } N=N.next; ++i; } if(N==null) { System.out.println("無此數!"); } } publicvoiddisplayLink() { if(this.first.next!=null) { Nodepro=newNode(0); pro=first.next; while(pro!=null) { pro.NodeDisplay(); pro=pro.next; } } else { System.out.println("linkisempty!"); } } publicstaticvoidmain(String[]args) { linklink=newlink(); link.first=newNode(0); System.out.println("沒有插入數據:"); link.displayLink(); System.out.println("插入數據后:"); link.insertHeadNode(1); link.insertHeadNode(2); link.insertHeadNode(3); link.insertHeadNode(4); link.insertHeadNode(5); link.displayLink(); System.out.println("刪除頭結點:"); link.deleteHeadNode(); link.displayLink(); System.out.println("查找數據3:"); link.findNode(3); System.out.println("查找數據1:"); link.findNode(1); }}運行結果如下:實驗三面向對象編程〔2〕1.實驗目的〔1〕掌握Java中的繼承機制及包〔package〕、接口〔interface〕等的設計方法?!?〕掌握static、this、super等關鍵字的使用。2.實驗內容實驗題1有圖形類的父類Shape,參照圓Circle類補充完整正方性Square和三角形Triangle類,并分析運行結果。classShape{voiddraw(){}voiderase(){}}classCircleextendsShape{voiddraw(){System.out.println("Circle.draw()");}voiderase(){System.out.println("Circle.erase()");}}classSquareextendsShape{voiddraw(){}voiderase(){}}classTriangleextendsShape{voiddraw(){}voiderase(){}}publicclassShapes{publicstaticShaperandShape(){switch((int)(Math.random()*3)){default://Toquietthecompilercase0:returnnewCircle();case1:returnnewSquare();case2:returnnewTriangle();}}publicstaticvoidmain(String[]args){Shape[]s=newShape[9];//Fillupthearraywithshapes:for(inti=0;i<s.length;i++)s[i]=randShape();//Makepolymorphicmethodcalls:for(inti=0;i<s.length;i++)s[i].draw();}}程序源代碼如下:Shape類:publicclassshape{voiddraw(){ }voiderase(){ }publicshape(){//TODOAuto-generatedconstructorstub }/***@paramargs*/publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstub }}Square類:publicclasssquareextendsshape{voiddraw() { System.out.println("square.draw()"); }voiderase(){ System.out.println("suqre.erase()"); }publicsquare(){//TODOAuto-generatedconstructorstub }/***@paramargs*/publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstub }}Triangle類:publicclassTriangleextendsshape{voiddraw() { System.out.println("Triangle.draw()"); }voiderase() { System.out.println("Triangle.erase()"); }publicTriangle(){//TODOAuto-generatedconstructorstub }/***@paramargs*/publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstub }}Circle類:publicclasscircleextendsshape{voiddraw(){ System.out.println("Circle.draw()"); }voiderase(){ System.out.println("Circle.erase()"); }publiccircle(){//TODOAuto-generatedconstructorstub }/***@paramargs*/publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstub }}Shapes類:publicclassshapes{publicstaticshaperandShape() {switch((int)(Math.random()*3)) {default://Toquietthecompilercase0:returnnewcircle();case1:returnnewsquare();case2:returnnewTriangle(); } }publicstaticvoidmain(String[]args) { shape[]s=newshape[9];for(inti=0;i<s.length;i++)//Fillupthearraywithshapes { s[i]=randShape(); }for(inti=0;i<s.length;i++) { s[i].draw(); } }}程序運行結果如下:實驗題2有兩個類:MobileManagement和Mobile,分別描述如圖3.7所示兩部手機名稱及價格,類MobileManagement在包.nwsuaf.jp.p3中,而Mobile在包.nwsuaf.jp.p3.data中。它們代碼如下。運行MobileManagement.java,你應該看到如圖3.8所示結果。[根本要求]在空白處填寫相關代碼并修改上面程序,使程序能夠顯示兩部手機的價格和數量,運行結果如圖3.9所示。E365,1780RMBM330,1450RMB圖3.4手機及價格圖圖3.5運行結果圖程序源代碼如下:.nwsuaf.jp.p3下的MobileManagement類:package.nwsuaf.jp.p3;importjavax.swing.JOptionPane;publicclassMobileManagement{/**Definestheentrypointoftheapplication.*/publicstaticvoidmain(String[]args){ Mobilemobile1=newMobile("E365",1780); Mobilemobile2=newMobile("M330",1450); JOptionPane.showMessageDialog(null,"Mobilephones:\n\n"+mobile1.getName()+"\n"+mobile2.getName()); }}.nwsuaf.jp.p3.data下的Mobile類:package.nwsuaf.jp.p3.data;publicclassMobile{/**Holdsthenameofthemobile.*/privateStringname;/**Holdsthepriceofthemobile.*/privatefloatprice;/**Createsanewmobileobject.*/publicMobile(Stringname,floatprice){=name;this.price=price; }/**Getsthenameofthemobile.*/publicStringgetName(){returnname; }/**Getsthepriceofthemobile.*/publicfloatgetPrice(){returnprice; }}運行結果如下:實驗題3有四個類,主類Store在包.nwsuaf.jp.p4中,Mobile、Mp3Player、Product在包.nwsuaf.jp.p4.data中,Mobile、Mp3Player是Product的子類.[根本要求]設計類Mobile和類MP3Player,使它們和類Product、Store組成一個完整的程序,且運行結果如圖3.10所示。程序源碼如下:.nwsuaf.jp.p4.data中Product類:package.nwsuaf.jp.p4.data;publicabstractclassProuductimplementsComparable<Prouduct>{/**Holdsthenameoftheproduct.*/protectedStringname;/**Holdsthepriceoftheproduct.*/protectedfloatprice;/**Holdsthenumberofproducts.*/protectedstaticintcount;/**Createanewproductobject.*/protectedProuduct(){ }/**Getsthenameoftheproduct.*/publicStringgetName(){returnname; }/**Getsthepriceoftheproduct.*/publicfloatgetPrice(){returnprice; }/**Getsthenumberofproducts.*/publicstaticintgetCount(){returncount; }/**Comparesthisproductwiththegivenproduct.*/publicintcompareTo(Prouductproduct) {returnnewFloat(product.getPrice())pareTo(price); }}.nwsuaf.jp.p4.data中Mp3Player類:package.nwsuaf.jp.p4.data;publicclassMP3playerextendsProuduct{privateStringname;privatefloatprice;privateintmemory;publicMP3player(Stringname,intmemory,floatprice) {//TODOAuto-generatedconstructor=name;this.price=price;this.memory=memory; ++count; }publicStringgetMP3playername() {; }publicfloatgetMP3playerprice() {returnthis.price; }publicintgetmemory() {returnthis.memory; }publicStringtoString() {+"("+this.memory+"MB),"+this.price+"RMB"; }}.nwsuaf.jp.p4.data中Mobile類:package.nwsuaf.jp.p4.data;publicclassMobileextendsProuduct{privateStringname;privatefloatprice;privateStringWTO;publicMobile(StringWTO,Stringname,floatprice){//TODOAuto-generatedconstructor=name;this.price=price;this.WTO=WTO; ++count; }publicStringgetName() {; }publicfloatgetprice() {returnthis.price; }publicStringgetWTO() {returnthis.WTO; }publicStringtoString() {+"on"+this.WTO+","+this.price+"RMB"; }}.nwsuaf.jp.p4中的主類Store:package.nwsuaf.jp.p4;import.nwsuaf.jp.p4.data.*;publicclassStoreextendsProuduct{publicStringtoString() {+""+this.price+""; }//**Definestheentrypointoftheapplication.*/publicstaticvoidmain(String[]args){//Createstwomobilephoneobjects. Mobilemobile1=newMobile("ChinaMobile","E365",1780); Mobilemobile2=newMobile("ChinaMobile","M330",1450); MP3playerplayer1=newMP3player("MeizoX3",256,399); MP3playerplayer2=newMP3player("MeizoE5",512,580); MP3playerplayer3=newMP3player("XliveXMMP3Play",256,930); Prouduct[]prouducts={mobile1,mobile2,player1,player2,player3}; Arrays.sort(prouducts); Stringtext="";for(intindex=0;index<prouducts.length;++index) { text+=prouducts[index].toString()+"\n"; }//Displaysthetwomobilephonesinadialogbox. JOptionPane.showMessageDialog(null,"Theproductsare:\n\n"+text+"\nThereare"+Prouduct.getCount()+"products."); }}程序運行結果如下:實驗題4用LIST存放對象。利用面向對象的思想,創立以下類:Person類,包含Person的姓名和身份證號碼。Student類,首先是一個Person,除此之外,包含學生的語文、數學、英文課的成績。Teacher類,首先是一個Person,除此之外,包含教師的工資。①請創立姓名張三身份證號12310000的Person對象。②請創立姓名李四身份證號12320000語文:89數學:93英文:94的Student對象。③請創立姓名王五身份證號12330000工資:3000的Teacher對象。④將這些對象存放在List中,并打印出List中存放的內容。程序源代碼如下:Person類:publicclassPersonimplementsComparable<Person>{ Stringname; StringID; publicPerson(){ //TODOAuto-generatedconstructorstub } publicvoidsetperson(Stringname,StringID) { =name; this.ID=ID; } publicStringgetname() { return; } publicStringgetID() { returnthis.ID; } publicStringtoString() { return"姓名:"++""+"身份證號:"+this.ID; } publicinthashcode() { return.hashCode()+this.ID.hashCode(); } publicbooleanequals(Objecto) { if(this==null) { returnfalse; } elseif(!(oinstanceofPerson)) { returnfalse; } else { Personp=(Person)o; if(this.getID()pareTo(p.getID())>0) { returntrue; } elseif(this.getID()pareTo(p.getID())==0&&this.getID()pareTo(p.getID())<0) { returnfalse; } } returnfalse; } /** *@paramargs */ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub } @Override publicintcompareTo(Persono){ //TODOAuto-generatedmethodstub inta=Integer.parseInt(this.getID()); intb=Integer.parseInt(o.getID()); if(a>b) { return1; } elseif(a==b) { return0; } else { return-1; } }}Student類:publicclassStudentextendsPerson{doublechinese;doublemath;doubleenglish;publicStudent(Stringname,StringID,doublechinses,doublemath,doubleenglish){//TODOAuto-generatedconstructor=name;this.ID=ID;this.chinese=chinses;this.math=math;this.english=english; }publicdoublegetchinses() {returnthis.chinese; }publicdoublegetmath() {returnthis.math; }publicdoublegetenglish() {returnthis.english; }publicStringtoString() {return"姓名:"++""+"身份證號:"+this.ID+"語文成績:"+this.chinese+"英語成績:"+this.english+"數學成績:"+this.math; }}Teacher類:publicclassTeacherextendsPerson{doublesalar;publicTeacher(Stringname,StringID,doublesalar){//TODOAuto-generatedconstructor=name;this.ID=ID;this.salar=salar; }publicdoublegetsalar() {returnthis.salar; }publicStringtoString() {return"姓名:"++""+"省份證號:"+this.ID+""+"工資:"+this.salar; }}List類:importjava.util.ArrayList;publicclassList{publicList(){//TODOAuto-generatedconstructorstub }/***@paramargs*/publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstub ArrayList<Person>PersonList=newArrayList<Person>(); Personper=newPerson(); per.setperson("張三","12310000"); StudentStu=newStudent("李四","1232000",78,89,89); Teachertea=newTeacher("王五","125434950",6765); PersonList.add(per); PersonList.add(Stu); PersonList.add(tea);for(inti=0;i<PersonList.size();++i) { System.out.println(PersonList.get(i).toString()); } }}運行結果如下:實驗題5用SET存放對象。利用面向對象的思想,創立以下類:Person類,包含Person的姓名和身份證號碼。①請創立三個對象,放在HashSet中:姓名張三身份證號12310000姓名李四身份證號12320000姓名王五身份證號12330000②再創立對象:姓名張三身份證號12310000能放入到剛剛創立的HashSet中么③把集合中的元素打印出來。④用TreeSet存放上面三個人,要求按照身份證號排序,打印出來。能夠把上面步驟②中創立的對象放到這個TreeSet中么。[根本要求]使用JavaAPI中的Set相關的技術來完成實驗任務。[技術提示]使用HashSet要覆蓋hashCode()方法,equals()方法打印集合內的元素,要覆蓋toString()方法。使用TreeSet要實現Comparable接口。eq\o\ac(○,2)答:不能存放到Treeset里面了,不允許存在一樣的數值。程序源代碼如下:Person類:publicclassPersonimplementsComparable<Person>{ Stringname; StringID; publicPerson(){ //TODOAuto-generatedconstructorstub } publicvoidsetperson(Stringname,StringID) { =name; this.ID=ID; } publicStringgetname() { return; } publicStringgetID() { returnthis.ID; } publicStringtoString() { return"姓名:"++""+"身份證號:"+this.ID; } publicinthashcode() { return.hashCode()+this.ID.hashCode(); } publicbooleanequals(Objecto) { if(this==null) { returnfalse; } elseif(!(oinstanceofPerson)) { returnfalse; } else { Personp=(Person)o; if(this.getID()pareTo(p.getID())>0) { returntrue; } elseif(this.getID()pareTo(p.getID())==0&&this.getID()pareTo(p.getID())<0) { returnfalse; } } returnfalse; } /** *@paramargs */ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub } @Override publicintcompareTo(Persono){ //TODOAuto-generatedmethodstub inta=Integer.parseInt(this.getID()); intb=Integer.parseInt(o.getID()); if(a>b) { return1; } elseif(a==b) { return0; } else { return-1; } }}Treeset類:importjava.util.TreeSet;publicclassTreesettest{publicTreesettest(){//TODOAuto-generatedconstructorstub }/***@paramargs*/publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstub TreeSet<Person>mytree=newTreeSet<Person>(); Personp1=newPerson(); Personp2=newPerson(); Personp3=newPerson(); p2.setperson("李四","1232000"); p1.setperson("張三","1231000"); p3.s

溫馨提示

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

評論

0/150

提交評論