第一篇:JAVA實(shí)驗(yàn)報(bào)告心得
北京聯(lián)合大學(xué) 信息學(xué)院
“面向?qū)ο蟪绦蛟O(shè)計(jì)”課
程上機(jī)實(shí)驗(yàn)報(bào)告
題 目: java上機(jī)實(shí)驗(yàn)心得體會(huì)
姓名(學(xué)號(hào)):專 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù)
編 制 時(shí) 間: 2012年12月19日
版 本: 1.0.0 指 導(dǎo) 教 師:北京聯(lián)合大學(xué)-信息學(xué)院編制
實(shí)驗(yàn)1 熟悉java運(yùn)行環(huán)境
實(shí)驗(yàn)?zāi)康模菏煜dk環(huán)境和操作,編寫簡(jiǎn)單的java應(yīng)用程序。
心得體會(huì):在該實(shí)驗(yàn)中,我碰到的問(wèn)題是jdk環(huán)境變量的設(shè)置。解決方法是通過(guò)查閱資料書和網(wǎng)上搜索相關(guān)解決方法及同學(xué)的有力幫助。
實(shí)驗(yàn)2 選擇語(yǔ)句練習(xí)
實(shí)驗(yàn)?zāi)康模赫_理解并能夠熟練操作和使用java的if和switch語(yǔ)句。
心得體會(huì):我個(gè)人感覺(jué)有了c的編程基礎(chǔ),if和switch這些簡(jiǎn)單的流程控制語(yǔ)句運(yùn)用起來(lái)比較輕松,實(shí)現(xiàn)簡(jiǎn)單的邏輯運(yùn)算也跟c非常相近,所以上手比較快。但是在這次程序中,首次涉及到了java程序的數(shù)據(jù)輸入,與c區(qū)別很大。但經(jīng)過(guò)老師的講解和查閱相關(guān)資料,基本明白相關(guān)的使用規(guī)則和注意事項(xiàng)。在第二個(gè)小題中還涉及到了charat()方法,經(jīng)查閱jdk文檔,知道charat()方法返回一個(gè)位于提供給它的參數(shù)索引處的字符,如: str.chatat(0)檢索str中的第一個(gè)字符,str.charat(str.length()-1)檢索最后一個(gè)字符。我運(yùn)用此方法解決了比較字符串間首字母異同的問(wèn)題。
實(shí)驗(yàn)3 迭代練習(xí)
實(shí)驗(yàn)4 方法的實(shí)現(xiàn)練習(xí)
實(shí)驗(yàn)?zāi)康模郝暶鳌⒍x和調(diào)用方法,理解實(shí)參和形參的含義。
心得體會(huì):在該實(shí)驗(yàn)中,我掌握如何寫方法、調(diào)用方法,并掌握如何向方法中傳遞信息和從方法中返回信息。方法聲明為非void(構(gòu)造方法除外)則需要用return語(yǔ)句返回一個(gè)相應(yīng)類型的返回值。
實(shí)驗(yàn)5 簡(jiǎn)單類型數(shù)組練習(xí)
實(shí)驗(yàn)?zāi)康模簩W(xué)習(xí)創(chuàng)建簡(jiǎn)單類型的數(shù)組,并能用循環(huán)語(yǔ)句處理數(shù)組。
心得體會(huì):通過(guò)該實(shí)驗(yàn),我學(xué)會(huì)了如何讓建立簡(jiǎn)單類型的數(shù)組,并掌握了將數(shù)組作為方法的傳入?yún)?shù)和返回值。在該實(shí)驗(yàn)中,遇到的問(wèn)題主要是如何將一個(gè)連續(xù)的多位數(shù)在存入數(shù)組時(shí),每個(gè)數(shù)組元素只對(duì)應(yīng)改多位數(shù)的一個(gè)組成數(shù)。我解決的方法如下: for(i=0;i<6;i++){ n[i] = aa%10;//aa%10的結(jié)果是aa的末尾數(shù),將多位數(shù)aa的末尾數(shù)賦給a[i] aa =(int)aa/10;//對(duì)aa/10的結(jié)果強(qiáng)制取整,去掉了aa的末尾數(shù),以便對(duì)下一位數(shù)的存數(shù)。} 實(shí)驗(yàn)6 類和對(duì)象的練習(xí)
實(shí)驗(yàn)?zāi)康模赫_理解并能夠熟練操作和使用java的類、對(duì)象和方法。心得體會(huì):我學(xué)會(huì)了如何建立類和對(duì)象,分別輸出其中包含的成員值;以及分別引用各方法,實(shí)現(xiàn)不同的操作。在該程序中,我進(jìn)一步了解了如何定義成員方法和成員屬性以及相關(guān)方法的調(diào)用。特別是我掌握了利用構(gòu)造方法對(duì)成員屬性賦初始值。值得一提的是,我在相應(yīng)的程序中運(yùn)用了touppercase方法,經(jīng)查看jdk文檔知道該方法的作用是返回一個(gè)所有字母都被轉(zhuǎn)化為大寫字母字符串。
實(shí)驗(yàn)7 類的實(shí)現(xiàn) 實(shí)驗(yàn)?zāi)康模菏褂媒y(tǒng)一建模語(yǔ)言(uml)設(shè)計(jì)類,并實(shí)現(xiàn)類。
心得體會(huì):通過(guò)該實(shí)驗(yàn),我學(xué)會(huì)了使用public、private控制訪問(wèn)及其訪問(wèn)權(quán)限;體會(huì)了static關(guān)鍵字的作用。并對(duì)java程序中的類及面向?qū)ο蟮木幊趟枷胗辛烁M(jìn)一步的了解。
實(shí)驗(yàn)8 繼承的練習(xí)
實(shí)驗(yàn)?zāi)康模赫_理解并能夠熟練操作和使用java類的繼承關(guān)系。
心得體會(huì):理解了繼承的含義,并使用uml符號(hào)設(shè)計(jì)了繼承結(jié)構(gòu);掌握了用java實(shí)現(xiàn)繼承關(guān)系;學(xué)會(huì)了區(qū)分方法重寫和方法重載;并深入理解了abstract 和 final修飾符的作用。用final標(biāo)記的變量只能賦值一次,標(biāo)記的類不可被繼承,方法不可被子類重寫。用關(guān)鍵字extends表繼承,例如子類a繼承了父類b則可寫作 class a extends b。在這些概念性知識(shí)點(diǎn)弄明白后,在解決實(shí)際問(wèn)題時(shí),碰到了輸入年月日計(jì)算車齡的問(wèn)題,我的解決辦法如下: public int age(int year){ int age;int a1 =(int)(time/10000);//(int)time/10000是將8位數(shù)表示的生產(chǎn)年月日強(qiáng)制轉(zhuǎn)換成四位數(shù)表示的年 } int a2 =(int)(year/10000);//將當(dāng)前年月日轉(zhuǎn)換為年 age = a2-a1 +1;//計(jì)算車齡 return age;實(shí)驗(yàn)9 抽象類、接口練習(xí)
實(shí)驗(yàn)?zāi)康模壕C合運(yùn)用接口,類的知識(shí)。
心得體會(huì):在該實(shí)驗(yàn)中,我掌握了接口定義,以及類實(shí)現(xiàn)接口。接口用interface關(guān)鍵字定義,在接口中,可以用abstract是修飾方法的,也可以去掉abstract,編譯時(shí)會(huì)默認(rèn)為抽象方法。類實(shí)現(xiàn)接口可用implements表示,例如class circle implements shape表示,circle類實(shí)現(xiàn)了接口shape。
實(shí)驗(yàn)10 多態(tài)練習(xí)
實(shí)驗(yàn)?zāi)康模豪斫獠⑹褂妹嫦驅(qū)ο蟮奶卣鳎憾鄳B(tài)。
心得體會(huì):在實(shí)驗(yàn)10中,我基本掌握了多態(tài)的句柄、多態(tài)方法的定義。在改程序中,我遇到了要求隨機(jī)產(chǎn)生一個(gè)圖形的難題,通過(guò)網(wǎng)上查閱資料,利用系統(tǒng)函數(shù)math.random()經(jīng)一系列的運(yùn)算處理來(lái)隨機(jī)產(chǎn)生一個(gè)圖形解決了該難題,具體的程序如下: public static void main(string[] args){ } circle cir = new circle(9);square squ = new square(4);shape shape;int r;r =(int)(math.random()*2);//用math.random()方法產(chǎn)生0.00到if(r == 0)shape = cir;else shape = squ;shape.testshape(shape);//同一條語(yǔ)句產(chǎn)生不同的執(zhí)行結(jié)果,多態(tài)1.00的隨機(jī)數(shù),乘2取整后非0即1 性。
實(shí)驗(yàn)11 多線程處理
實(shí)驗(yàn)?zāi)康模豪斫饩€程的基本概念。
心得體會(huì):通過(guò)該實(shí)驗(yàn),基本能夠理解線程的運(yùn)行了。學(xué)會(huì)調(diào)用thread類中的系統(tǒng)函數(shù)以及掌握這些函數(shù)的作用是難點(diǎn),setname()是設(shè)置線程名字,start()是開(kāi)辟一條新線程,thread.currentthread().getname()是獲得正在執(zhí)行的線程的名字,thread.currentthread().getid()是thread類中返回該線程的標(biāo)識(shí)符的方法,thread.currentthread().getpriority()是thread類中返回線程的優(yōu)先級(jí)的方法。
實(shí)驗(yàn)12 i/o及文件處理
實(shí)驗(yàn)?zāi)康模赫莆詹⑹褂胘ava中的i/o和文件。
心得體會(huì):對(duì)于該實(shí)驗(yàn),由于比較難,只是基本掌握了文件讀寫的方法和規(guī)則,還有待17周java實(shí)訓(xùn)時(shí)繼續(xù)攻堅(jiān)克難。
結(jié)語(yǔ):在這一系列的實(shí)驗(yàn)中,我基本掌握了java的編程規(guī)則、知識(shí)要點(diǎn)和一些小技巧,特別是對(duì)面向?qū)ο蟮木幊趟枷牒惋L(fēng)格有了進(jìn)一步的認(rèn)識(shí)和體會(huì)。同時(shí),因正確的編出程序而帶來(lái)的成就感讓我對(duì)編程更加感興趣。對(duì)于在這些實(shí)驗(yàn)過(guò)程中,請(qǐng)教老師、同學(xué)互助、查閱資料等基本的學(xué)習(xí)方式,使我更加領(lǐng)悟到集體和團(tuán)隊(duì)的力量,也樹(shù)立了敢于攻堅(jiān)的信心。篇二:java實(shí)訓(xùn)心得 java實(shí)訓(xùn)心得
在上學(xué)期的最后一周和本學(xué)期的第一周,我和同組的學(xué)員在學(xué)校機(jī)房進(jìn)行了java暑期實(shí)訓(xùn),現(xiàn)在已經(jīng)結(jié)束了。
回首上學(xué)期的java學(xué)習(xí),重點(diǎn)還是在學(xué)習(xí)概念等一些常識(shí)性的東西,application應(yīng)用程序和applet小程序,它的開(kāi)發(fā)工具、數(shù)據(jù)類型、變量、接口、輸入輸出流等。學(xué)會(huì)分析異常,拋出異常,后期主要是小程序運(yùn)用,gui界面設(shè)計(jì)和事件。我覺(jué)得這兩種程序結(jié)構(gòu)有很大的不同,不管是體系結(jié)構(gòu)還是運(yùn)行方式,都有很大的區(qū)別,而我主要偏向于小程序的學(xué)習(xí)。因?yàn)槲腋杏X(jué)它實(shí)用性比較大,可以做出很多不錯(cuò)的游戲、運(yùn)用程序等,而且它比較靈活。當(dāng)然學(xué)知識(shí)不能僅憑自己的愛(ài)好和一時(shí)興趣,要一步一個(gè)腳印、認(rèn)認(rèn)真真、踏踏實(shí)實(shí),理論與實(shí)踐相結(jié)合。在掌握課本實(shí)例和內(nèi)容之后,要有一定的擴(kuò)展閱讀和課外學(xué)習(xí),充分全面的了解java的應(yīng)用和擴(kuò)展運(yùn)用。在我所學(xué)的語(yǔ)言當(dāng)中,我自認(rèn)為java是一門比較強(qiáng)大的面向?qū)ο缶幊陶Z(yǔ)言。不僅僅因?yàn)樗目缙脚_(tái)性,更多的是因?yàn)樗撵`活多變和實(shí)用性,而且它比較的經(jīng)典和強(qiáng)悍。
這次實(shí)訓(xùn),面對(duì)老師布置的任務(wù),一開(kāi)始有些慌張和無(wú)措。不過(guò),事后我首先想到這和課本上的某些知識(shí)具有結(jié)合點(diǎn),回憶和分析了老師教過(guò)的算法和具體實(shí)施方法,并綜合考慮了其他的方面。在編寫時(shí),一個(gè)小小的符號(hào)、一個(gè)常量變量的設(shè)定,這都無(wú)不考量著我的細(xì)心和嚴(yán)謹(jǐn)。所以學(xué)習(xí)java,不僅對(duì)我們以后學(xué)習(xí)其他語(yǔ)言有很大的好處,而且也讓我們知道了和理解了作為一個(gè)編程人員首先應(yīng)具有的良好心理素質(zhì),那就是冷靜思考和專心致志。
在此次實(shí)訓(xùn)中,我意識(shí)到一個(gè)好的編程人員要善于溝通和團(tuán)結(jié)拼搏。實(shí)訓(xùn)結(jié)束后,我覺(jué)得要學(xué)好一門計(jì)算機(jī)語(yǔ)言必須牢記以下幾點(diǎn): 1.態(tài)度第一 2.興趣是關(guān)鍵 3.敢于挑戰(zhàn) 4.不懈追求
實(shí)訓(xùn)結(jié)束了,大家都有一種解脫的感覺(jué)。當(dāng)然我想自己更多的是興奮和一點(diǎn)點(diǎn)的成就感。現(xiàn)在我覺(jué)得,學(xué)習(xí)java要不斷的復(fù)習(xí)和運(yùn)用,做到舉一反三,將所學(xué)知識(shí)充分融入到平時(shí)的學(xué)習(xí)生活中去,從而為以后的工作打好堅(jiān)實(shí)的基礎(chǔ)。感謝學(xué)校和老師能夠?yàn)槲覀兲峁┻@次機(jī)會(huì),讓我們更好的掌握和了解java這門語(yǔ)言。
通過(guò)這次實(shí)訓(xùn),我真的從中學(xué)到了很多東西。我對(duì)這個(gè)介于人類與非人類之間的計(jì)算機(jī)編程語(yǔ)言有了較上學(xué)期更進(jìn)一步的認(rèn)識(shí)。其間開(kāi)心過(guò)、郁悶過(guò)、無(wú)奈過(guò)、彷徨過(guò)??隨著實(shí)訓(xùn)的圓滿成功與實(shí)驗(yàn)報(bào)告的順利完成,有點(diǎn)微微的自豪感使人難忘。至于我做的程序,還不是很完善,所以我將一直去完善它,不斷地學(xué)習(xí)下去。伴隨著學(xué)習(xí)的深入,我發(fā)現(xiàn)高深的東西還有很多很多,等待著我自己去發(fā)掘。對(duì)于java語(yǔ)言,我會(huì)更加努力。2011/9/10篇三:java實(shí)驗(yàn)報(bào)告 java程序設(shè)計(jì)實(shí)驗(yàn)報(bào)告
題目: 研究java中的for循環(huán)
院(系)
專 業(yè) 信息與計(jì)算科學(xué)
班 級(jí) 101001班
姓 名 學(xué) 號(hào) 101001113 導(dǎo) 師 2012年 11月 26日 for循環(huán)程序設(shè)計(jì)
【實(shí)驗(yàn)?zāi)康摹客ㄟ^(guò)對(duì)for循環(huán)學(xué)習(xí),了解java中的循環(huán)語(yǔ)句的應(yīng)用和它們的用法。
【實(shí)驗(yàn)原理】for(表達(dá)式1;表達(dá)式2;表達(dá)式3){ //循環(huán)體 } 表達(dá)式1一般是一個(gè)賦值語(yǔ)句,它用來(lái)給循環(huán)控制變量 賦初值;表達(dá)式2是一個(gè)布爾類型的表達(dá)式,它決定什么時(shí)候退出循環(huán);表達(dá)式3一般用來(lái)修改循環(huán)變量,控制變量每循環(huán)一次后按什么方式變化。這三個(gè)部分之間用“;”隔開(kāi)。
【實(shí)驗(yàn)要求】windows操作系統(tǒng)(32位),安裝jdk1.6,eclipse運(yùn)行環(huán)境
【實(shí)驗(yàn)步驟】
(2)按給定的題目寫出符合語(yǔ)法分析方法,按給定的題目給出語(yǔ)法分析方法的思想及分析表設(shè)計(jì)。
(3)按給定的題目給出中間代碼序列的結(jié)構(gòu)設(shè)計(jì)。對(duì)于for循環(huán)的具體操作,見(jiàn)程序test1(圖1)
圖1 for循環(huán)語(yǔ)句
(4)探究if與for循環(huán)嵌套,及其其他循環(huán)語(yǔ)句的使用,與for循環(huán)使用的差別,見(jiàn)程序(圖2圖3)
圖2 if與for嵌套
圖3 switch循環(huán)
【問(wèn)題與解決方法】(1)如圖1和2,這個(gè)兩個(gè)程序中,主要遇到的問(wèn)題在for后面的(表達(dá)式1;表達(dá)式2;表達(dá)式3)里面表示的書寫,以及怎樣把if嵌套在for語(yǔ)句中。(2)如圖3,這個(gè)程序中,將其它循環(huán)使用的方法搞混。
解決方法:通過(guò)查閱資料,熟記了幾個(gè)循環(huán)的使用方法,及其注意事項(xiàng),將錯(cuò)誤的一一修改。
【實(shí)驗(yàn)總結(jié)】通過(guò)這個(gè)實(shí)驗(yàn),我已熟悉掌握了for等循環(huán)語(yǔ)句的用法,for它既可以單獨(dú)用,也可以嵌套在for等循環(huán)語(yǔ)句中,增加了程序可讀行,方便編程,為以后的學(xué)習(xí)java起到了一定鋪墊作用,不過(guò)還需要多練習(xí),才能熟能生巧,為以后java編程起到一定作用。參考文獻(xiàn):
1.郎波.java語(yǔ)言程序設(shè)計(jì).(第二版).-北京:清華大學(xué)出版社,2010.9篇四:最新java實(shí)訓(xùn)報(bào)告總結(jié)心得
一、實(shí)訓(xùn)項(xiàng)目
簡(jiǎn)易記事本
二、實(shí)訓(xùn)目的和要求
本次實(shí)訓(xùn)是對(duì)前面學(xué)過(guò)的所有面向?qū)ο蟮木幊趟枷胍约癹ava web編程方法的一個(gè)總結(jié)、回顧和實(shí)踐,因此,開(kāi)始設(shè)計(jì)前學(xué)生一定要先回顧以前所學(xué)的內(nèi)容,明確本次作業(yè)設(shè)計(jì)所要用到的技術(shù)點(diǎn)并到網(wǎng)上搜索以及查閱相關(guān)的書籍來(lái)搜集資料。通過(guò)編寫采用jsp+servlet+javabean技術(shù)框架的應(yīng)用系統(tǒng)綜合實(shí)例,以掌握java web開(kāi)發(fā)技術(shù)。
具體要求有以下幾點(diǎn):
1.問(wèn)題的描述與程序?qū)⒁獙?shí)現(xiàn)的具體功能。2.程序功能實(shí)現(xiàn)的具體設(shè)計(jì)思路或框架,并檢查流程設(shè)計(jì)。3.代碼實(shí)現(xiàn)。
4.設(shè)計(jì)小結(jié)。
三、實(shí)訓(xùn)項(xiàng)目的開(kāi)發(fā)環(huán)境和所使用的技術(shù)
基于j2se基礎(chǔ),利用myeclipse 8.5以上版本的集成開(kāi)發(fā)環(huán)境完成實(shí)訓(xùn)項(xiàng)目,界面友好,代碼的可維護(hù)性好,有必要的注釋和相應(yīng)的文檔。
四、實(shí)訓(xùn)地點(diǎn)、日程、分組情況:
實(shí)訓(xùn)地點(diǎn):4棟303機(jī)房
日 程:
第一階段:1.班級(jí)分組,選定課題,查閱相關(guān)資料 半天 2.劃分模塊、小組成員分工 半天 3.利用case工具進(jìn)行系統(tǒng)設(shè)計(jì)和分析,并編制源程序 5天
第二階段:上機(jī)調(diào)試,修改、調(diào)試、完善系統(tǒng) 2天
第三階段:撰寫、上交課程設(shè)計(jì)報(bào)告,上交課程設(shè)計(jì)作品源程序(每人1份)2天
五、程序分析
功能模塊說(shuō)明
彈出菜單
for(int f=0;f<4;f++)改變字號(hào):
public void zihao(){ font f=new font(,font.plain,20);jta.setfont(f);} 設(shè)置字型
public void ziti(){ font f=new font(宋體,font.plain,15);改變字體顏色
public void font(){ jcolorchooser jcolor=new jcolorchooser();color fcolor=jta.getforeground();jta.setforeground(jcolor.showdialog(jta,選擇字體顏色,fcolor));} 自動(dòng)換行
public void action(){ jta.setlinewrap(true);//激活自動(dòng)換行功能
實(shí)現(xiàn)接口
public void actionperformed(actionevent e){ 創(chuàng)建保存文件對(duì)話框
public void savefile(){ 創(chuàng)建打開(kāi)文件對(duì)話框
private void openfile(){ jfilechooser filechoose=new jfilechooser();int result=filechoose.showopendialog(null);if(result==jfilechooser.approve_option)
} { try{
file file=filechoose.getselectedfile();filereader fr=new filereader(file);int len=(int)file.length();char[] context=new char[len];fr.read(context,0,len);fr.close();jta.settext(new string(context));jfilechooser filechoose=new jfilechooser();int result=filechoose.showsavedialog(null);if(result==jfilechooser.approve_option)
} { try{
file file=filechoose.getselectedfile();filewriter fw=new filewriter(file);fw.write(jta.gettext());fw.close();}catch(exception e){system.out.println(保存文件失敗!);} }else return;}catch(exception e){system.out.println(打開(kāi)文件失敗!);} }else return;
六、程序設(shè)計(jì)及實(shí)現(xiàn)
1、實(shí)現(xiàn)彈出菜單(jpopupmenu)
2、設(shè)置字型,字體大小,字體顏色
3、實(shí)現(xiàn)自動(dòng)換行
七、實(shí)訓(xùn)總結(jié)
通過(guò)3天的實(shí)訓(xùn),雖然實(shí)訓(xùn)的時(shí)間不長(zhǎng),但是總體上收獲是很大的,我們的java課程學(xué)到的只是java和皮毛,一開(kāi)始我還沒(méi)有信心完成。我仔細(xì)看了書上的代碼之后。對(duì)計(jì)事本有了一個(gè)大體的了解,在初訓(xùn)的實(shí)候知道自己應(yīng)該做一個(gè)什么樣的計(jì)事本了,在實(shí)訓(xùn)的過(guò)程中也遇到了不少困難,通過(guò)查api文檔和看書,解決了問(wèn)題,在寫到字符的查找的替換時(shí)后,用到了上課時(shí)學(xué)到的知識(shí),對(duì)字體的風(fēng)格的保存里面的顏色分離和還原方法,是通過(guò)查api文檔獲得的,現(xiàn)在我所寫的計(jì)事本只實(shí)現(xiàn)在一些基本功能。簡(jiǎn)單的復(fù)制粘貼,字體風(fēng)格的設(shè)置,還有就是查找和替換功能以及一些字體風(fēng)格的保存.對(duì)文件的操作基本都用到了。
在實(shí)現(xiàn)記事本的功能過(guò)程中,也不是很順利,基本的文件讀寫和保存文檔的復(fù)制、粘貼、刪除等功能還比較容易實(shí)現(xiàn),但如何改變字體、字體顏色和背景顏色,就比較麻煩了,要實(shí)現(xiàn)字體顏色和背景顏色,首先要調(diào)用系統(tǒng)的調(diào)色板,再進(jìn)行設(shè)置。但如何調(diào)用系統(tǒng)調(diào)色板?我是通過(guò)查閱幫助文檔來(lái)找到其調(diào)用方法的。像自動(dòng)換行、設(shè)置字體等都是通過(guò)方法來(lái)調(diào)用,給相關(guān)事件加上監(jiān)聽(tīng),在進(jìn)行響應(yīng)事件。整個(gè)程序中方法才是最關(guān)鍵的,也是最困難的。所以像查找、替換、轉(zhuǎn)到幾個(gè)功能我都不知道用什么方法,也由于時(shí)間有限,沒(méi)有完成其功能。總體的感覺(jué)是對(duì)java有了一個(gè)全新的認(rèn)識(shí),現(xiàn)在感覺(jué)用java做小的圖形用戶程序有些缺陷,但是在其的應(yīng)用方面。尤其是有網(wǎng)絡(luò)方面的應(yīng)用,在整個(gè)實(shí)訓(xùn)我也嘗試過(guò)做一個(gè)小的畫圖軟件。但是由于時(shí)間關(guān)系還有一個(gè)是自身的知識(shí)的欠缺,最終這個(gè)事情被擱淺下來(lái)了。最后還是進(jìn)行計(jì)事本的編寫。由于在做畫圖軟件時(shí)花了不了時(shí)間,所以現(xiàn)在的計(jì)事本的功能不是很全,如果有更多的時(shí)間,我會(huì)把這個(gè)記事體再完善一下,再把畫圖軟件也做出來(lái)。實(shí)訓(xùn)的時(shí)間不長(zhǎng),但是我會(huì)在課外把它們的功能完善。然后再學(xué)習(xí)一下java和網(wǎng)絡(luò)的編程,體驗(yàn)java的前沿技術(shù)。
在學(xué)習(xí)的過(guò)程中也體會(huì)到,遇到問(wèn)題也要請(qǐng)教。不然的話自己一個(gè)人去做的話會(huì)花很多的時(shí)間,我在做這個(gè)記事本的時(shí)間,其中也問(wèn)到過(guò)許多問(wèn)題,通過(guò)同學(xué)的幫助下解決了,提高了程序的開(kāi)發(fā)進(jìn)程。其他的同學(xué)有問(wèn)題的話我也是給他們盡量解決。我認(rèn)為學(xué)習(xí)知識(shí)的過(guò)程當(dāng)中就應(yīng)該是相互學(xué)習(xí)相互進(jìn)步的。
雖然學(xué)習(xí)java的路還很找,但我會(huì)繼續(xù)走下去。
第二篇:Java實(shí)驗(yàn)報(bào)告
《Java簡(jiǎn)易聊天室》
實(shí)驗(yàn)?zāi)康模簩?shí)現(xiàn)簡(jiǎn)單的客服端與服務(wù)端通訊,進(jìn)一步鞏固,加深對(duì)Java語(yǔ)言基礎(chǔ)知識(shí)的了解,將理論與實(shí)際相結(jié)合。
實(shí)驗(yàn)要求:能相互之間發(fā)送消息,并進(jìn)行簡(jiǎn)單的異常處理。
聊天室截圖與說(shuō)明:
客戶端
服務(wù)端
將客服端與服務(wù)端程序同時(shí)運(yùn)行,此時(shí)會(huì)顯示出客戶端與服務(wù)端界面。在客戶端界面上點(diǎn)擊“連接”按鈕,即可使客戶端與服務(wù)端進(jìn)程建立連接。在文本框中輸入將要發(fā)送的消息,點(diǎn)擊“發(fā)送”按鈕,即可將消息發(fā)送到對(duì)應(yīng)端口。當(dāng)服務(wù)端發(fā)送消息時(shí),服務(wù)端便相當(dāng)于客戶端。當(dāng)需要終止連接時(shí),關(guān)閉相應(yīng)窗口即可。
設(shè)計(jì)概要:類/接口/函數(shù)說(shuō)明
1.public class ClientUI extends Jframe{}
public class ServerUI extends Jframe{}
ClientUI與ServerUi繼承Frame類構(gòu)建客戶端與服務(wù)器端窗口。
2.class ChatClient extends Thread{}
class SvrCom extends Thread{}
通訊類ChatClient/SvrCom負(fù)責(zé)守候數(shù)據(jù)到來(lái)
3.public void run()
用于監(jiān)聽(tīng)客戶端/服務(wù)器端發(fā)送來(lái)的信息,運(yùn)行連接
4.public void sendMsg(String msg){// 用于發(fā)送信息
try {
out.println(“【客戶端】” + msg);
} catch(Exception e){
System.out.println(e);
}
} public void sendMsg(String msg){// 用于發(fā)送信息
try {
out.println(“【服務(wù)器】” + msg);// 把信息寫入輸出流
} catch(Exception e){
System.out.println(e);
} } 5.try {
msg = in.readLine();// 從in對(duì)象上讀數(shù)據(jù)信息
} catch(SocketException ex){
System.out.println(ex);
break;
} catch(Exception ex){
System.out.println(ex);
}
if(msg!= null && msg.trim()!= “"){
System.out.println(”>>“ + msg);
ui.mainArea.append(msg + ”n“);
}
簡(jiǎn)單的異常處理
6.public ChatClient(String ip, int port, ClientUI ui){// 初始化ChatClient類
this.ui = ui;
try {
sc = new Socket(ip, port);// 創(chuàng)建sc, 用服務(wù)器ip和端口作參數(shù)
System.out.println(”已順利聯(lián)接到服務(wù)器。“);
out = new PrintWriter(sc.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(sc.getInputStream()));
} catch(Exception e){
System.out.println(e);
}
start();
public SvrCom(ServerUI ui){ // 初始化SvrCom類
this.ui = ui;
ui.setServer(this);
try {
soc = new ServerSocket(6666);// 開(kāi)設(shè)服務(wù)器端口6666
System.out.println(”啟動(dòng)服務(wù)器成功,等待端口號(hào):6666“);
client = soc.accept();// 當(dāng)客戶機(jī)請(qǐng)求連接時(shí),創(chuàng)建一條鏈接
System.out.println(”連接成功!來(lái)自“ + client.toString());
in = new BufferedReader(new InputStreamReader(client
.getInputStream()));
out = new PrintWriter(client.getOutputStream(), true);
} catch(Exception ex){
System.out.println(ex);
}
start();
自我評(píng)價(jià)或總結(jié):經(jīng)過(guò)本次實(shí)驗(yàn),進(jìn)一步了解了客戶端與服務(wù)器之間的通信機(jī)制,對(duì)以后的編程實(shí)踐墊定了基礎(chǔ)。同時(shí)還鞏固了GUI圖形界面知識(shí),更重要的是它使我對(duì)網(wǎng)絡(luò)編程有了一定的了解,也學(xué)到了不少知識(shí)。
附:
源代碼:import java.io.*;import java.net.*;import javax.swing.*;import java.awt.event.*;import java.awt.*;
public class ClientUI extends JFrame { JTextArea mainArea;
JTextArea sendArea;
ChatClient client;JTextField ipArea;JButton btnLink;public void setClient(ChatClient client){ this.client = client;} public ClientUI(){ super(”客戶端“);Container contain = getContentPane();contain.setLayout(new BorderLayout());mainArea = new JTextArea();JScrollPane mainAreaP = new JScrollPane(mainArea);JPanel panel = new JPanel();panel.setLayout(new BorderLayout());sendArea = new JTextArea(3, 8);JButton sendBtn = new JButton(”發(fā)送“);sendBtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
client.sendMsg(sendArea.getText());
mainArea.append(”【客戶端】“ + sendArea.getText()+ ”n“);
sendArea.setText(”“);
} });JPanel ipPanel = new JPanel();ipPanel.setLayout(new FlowLayout(FlowLayout.LEFT, 10, 10));ipPanel.add(new JLabel(”服務(wù)器:“));ipArea = new JTextField(12);ipArea.setText(”127.0.0.1“);ipPanel.add(ipArea);btnLink = new JButton(”連接“);ipPanel.add(btnLink);btnLink.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
client = new ChatClient(ipArea.getText(), 6666, ClientUI.this);
ClientUI.this.setClient(client);
} });
panel.add(sendBtn, BorderLayout.EAST);
panel.add(sendArea, BorderLayout.CENTER);
contain.add(ipPanel, BorderLayout.NORTH);
contain.add(mainAreaP, BorderLayout.CENTER);
contain.add(panel, BorderLayout.SOUTH);
setSize(500, 300);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}
public static void main(String[] args){
ClientUI ui = new ClientUI();} }
class ChatClient extends Thread { Socket sc;BufferedReader in;PrintWriter out;ClientUI ui;
public ChatClient(String ip, int port, ClientUI ui){
this.ui = ui;
try {
sc = new Socket(ip, port);
System.out.println(”已順利聯(lián)接到服務(wù)器。“);
out = new PrintWriter(sc.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(sc.getInputStream()));
} catch(Exception e){
System.out.println(e);
}
start();}
public void run(){
String msg = ”“;
while(true){
try {
msg = in.readLine();
} catch(SocketException ex){
System.out.println(ex);
break;
} catch(Exception ex){
System.out.println(ex);
}
if(msg!= null && msg.trim()!= ”“){
System.out.println(”>>“ + msg);
ui.mainArea.append(msg + ”n“);
}
} }
public void sendMsg(String msg){
try {
out.println(”【客戶端】“ + msg);
} catch(Exception e){
System.out.println(e);
} } } import java.io.*;import java.net.*;import javax.swing.*;import java.awt.event.*;import java.awt.*;/** * 服務(wù)端界面ServerUI */ public class ServerUI extends JFrame { JTextArea mainArea;
JTextArea sendArea;
JTextField indexArea;
SvrCom server;
public void setServer(SvrCom server){
this.server = server;}
public ServerUI(){
super(”服務(wù)器端“);
Container contain = getContentPane();
contain.setLayout(new BorderLayout());
mainArea = new JTextArea();
JScrollPane mainAreaP = new JScrollPane(mainArea);JPanel panel = new JPanel();panel.setLayout(new BorderLayout());sendArea = new JTextArea(3, 8);JButton sendBtn = new JButton(”發(fā)送“);sendBtn.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae){
server.sendMsg(sendArea.getText());
mainArea.append(”【服務(wù)器】sendArea.getText()+ “n”);
sendArea.setText(“");
}
});JPanel tmpPanel = new JPanel();indexArea = new JTextField(2);indexArea.setText(”0“);tmpPanel.add(sendBtn);tmpPanel.add(indexArea);panel.add(tmpPanel, BorderLayout.EAST);panel.add(sendArea, BorderLayout.CENTER);contain.add(mainAreaP, BorderLayout.CENTER);contain.add(panel, BorderLayout.SOUTH);setSize(500, 300);setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);} public static void main(String[] args){ ServerUI ui = new ServerUI();SvrCom server = new SvrCom(ui);}
} class SvrCom extends Thread
{ Socket client;ServerSocket soc;BufferedReader in;PrintWriter out;ServerUI ui;// ChatServer server;public SvrCom(ServerUI ui){
” +
this.ui = ui;ui.setServer(this);try {
soc = new ServerSocket(6666);
}
System.out.println(“啟動(dòng)服務(wù)器成功,等待端口號(hào):6666”);
client = soc.accept();
System.out.println(“連接成功!來(lái)自” + client.toString());
in = new BufferedReader(new InputStreamReader(client
.getInputStream()));
out = new PrintWriter(client.getOutputStream(), true);} catch(Exception ex){
System.out.println(ex);} start();} public void run(){ String msg = “";while(true){
try {
msg = in.readLine();
} catch(SocketException ex){
System.out.println(ex);
break;
} catch(Exception ex){
System.out.println(ex);
}
if(msg!= null && msg.trim()!= ”“){
System.out.println(”>>“ + msg);
ui.mainArea.append(msg + ”n“);
} } } public void sendMsg(String msg){ try {
out.println(”【服務(wù)器】" + msg);} catch(Exception e){
System.out.println(e);} }
第三篇:JAVA實(shí)驗(yàn)報(bào)告
學(xué) 生 實(shí) 驗(yàn) 報(bào) 告 冊(cè)
(理工類)
課程名稱:面向?qū)ο蟪绦蛟O(shè)計(jì) 專業(yè)班級(jí):16計(jì)算機(jī)科學(xué)與技術(shù)(專轉(zhuǎn)本)
學(xué)生學(xué)號(hào): 1613203022 學(xué)生姓名: 張義丹
所屬院部: 計(jì)算機(jī)工程 指導(dǎo)教師: 劉 晶 16 ——20 17 學(xué)年 第 2 學(xué)期
金陵科技學(xué)院教務(wù)處制 實(shí)驗(yàn)報(bào)告書寫要求
實(shí)驗(yàn)報(bào)告上交電子稿,標(biāo)題采用四號(hào)黑體,正文采用小四號(hào)宋體,單倍行距。
實(shí)驗(yàn)報(bào)告書寫說(shuō)明
實(shí)驗(yàn)報(bào)告中實(shí)驗(yàn)?zāi)康暮鸵蟆?shí)驗(yàn)儀器和設(shè)備、實(shí)驗(yàn)內(nèi)容與過(guò)程、實(shí)驗(yàn)結(jié)果與分析這四項(xiàng)內(nèi)容為必需項(xiàng)。教師可根據(jù)學(xué)科特點(diǎn)和實(shí)驗(yàn)具體要求增加項(xiàng)目。
填寫注意事項(xiàng)
(1)細(xì)致觀察,及時(shí)、準(zhǔn)確、如實(shí)記錄。(2)準(zhǔn)確說(shuō)明,層次清晰。
(3)盡量采用專用術(shù)語(yǔ)來(lái)說(shuō)明事物。
(4)外文、符號(hào)、公式要準(zhǔn)確,應(yīng)使用統(tǒng)一規(guī)定的名詞和符號(hào)。(5)應(yīng)獨(dú)立完成實(shí)驗(yàn)報(bào)告的書寫,嚴(yán)禁抄襲、復(fù)印,一經(jīng)發(fā)現(xiàn),以零分論處。
實(shí)驗(yàn)報(bào)告批改說(shuō)明
實(shí)驗(yàn)報(bào)告的批改要及時(shí)、認(rèn)真、仔細(xì),一律用紅色筆批改。實(shí)驗(yàn)報(bào)告的批改成績(jī)采用五級(jí)記分制或百分制,按《金陵科技學(xué)院課堂教學(xué)實(shí)施細(xì)則》中作業(yè)批閱成績(jī)?cè)u(píng)定要求執(zhí)行。
實(shí)驗(yàn)項(xiàng)目名稱:Java編程基礎(chǔ) 實(shí)驗(yàn)學(xué)時(shí): 6 同組學(xué)生姓名: ———— 實(shí)驗(yàn)地點(diǎn): 工科樓A101 實(shí)驗(yàn)日期: 17.3.21~17.4.4 實(shí)驗(yàn)成績(jī): 批改教師: 劉晶 批改時(shí)間:
實(shí)驗(yàn)1 Java編程基礎(chǔ)
一、實(shí)驗(yàn)?zāi)康暮鸵?/p>
(1)熟練掌握J(rèn)DK1.6及Eclipse4.2編寫調(diào)試Java應(yīng)用程序及Java小程序的方法;(2)熟練掌握J(rèn)ava應(yīng)用程序的結(jié)構(gòu);
(3)了解Java語(yǔ)言的特點(diǎn),基本語(yǔ)句、運(yùn)算符及表達(dá)式的使用方法;(4)熟練掌握常見(jiàn)數(shù)據(jù)類型的使用;
(5)熟練掌握if-else、switch、while、do-while、for、continue、break、return語(yǔ)句的使用方法;
(6)熟練掌握數(shù)組和字符串的使用;
(7)調(diào)試程序要記錄調(diào)試過(guò)程中出現(xiàn)的問(wèn)題及解決辦法;
(8)編寫程序要規(guī)范、正確,上機(jī)調(diào)試過(guò)程和結(jié)果要有記錄,不斷積累編程及調(diào)試經(jīng)驗(yàn);
(9)做完實(shí)驗(yàn)后給出本實(shí)驗(yàn)的實(shí)驗(yàn)報(bào)告。
二、實(shí)驗(yàn)儀器和設(shè)備
奔騰以上計(jì)算機(jī),Windows 操作系統(tǒng),裝有JDK1.6和Eclipse4.2軟件。
三、實(shí)驗(yàn)過(guò)程
(1)分別使用JDK命令行和Eclipse編譯運(yùn)行Java應(yīng)用程序;適當(dāng)添加注釋信息,通過(guò)javadoc生成注釋文檔;為主方法傳遞參數(shù)“Hello world”字符串,并輸出,記錄操作過(guò)程。
public class Hello { public static void main(String args[]){ System.out.println(“Hello!”);} }(2)分別使用JDK命令行和Eclipse編譯Java Applet,并建立HTML文檔運(yùn)行該Applet。壓縮生成“.jar”文件。記錄操作過(guò)程。import java.awt.*;import java.applet.Applet;public class HelloApplet extends Applet { public void paint(Graphics g){ g.setColor(Color.red);g.drawString(“Hello!”,20,20);}
} (3)根據(jù)變量score中存放的考試分?jǐn)?shù),輸出對(duì)應(yīng)的等級(jí)。要求從鍵盤輸入學(xué)生成績(jī),60分以下為D等;60~69為C等;70~89為B等;90~100為A等。(4)編寫一個(gè)Java Application程序,輸出區(qū)間[200,300]上的所有素?cái)?shù),將其用數(shù)組prime[]保存,并以每10個(gè)一行的形式顯示運(yùn)行結(jié)果。(5)輸出下列數(shù)字形式,要求用二維數(shù)組完成。①n=4 0 0 0 0 0 1 1 1 0 1 2 2 0 1 2 3 ② n=4 1 1 2 1 1 2 3 2 1 1 2 3 4 3 2 1(6)求二維數(shù)組的鞍點(diǎn),即該位置上的元素在該行上最大,在列上最小。也可能無(wú)鞍點(diǎn)。(7)分析下列程序的輸出結(jié)果,掌握equals()方法和“= =”的區(qū)別。class StringTest2{ public static void main(String args[]){
String s1 = “This is the second string.”;
String s2 = “This is the second string.”;
String s3 = new String(“This is the second string.”);
String s4 = new String(s1);
String s5 = s1;
boolean result121 = s1.equals(s2);
boolean result122 = s1 == s2;
boolean result131 = s1.equals(s3);
boolean result132 = s1 == s3;
boolean result141 = s1.equals(s4);
boolean result142 = s1 == s4;
boolean result151 = s1.equals(s5);
boolean result152 = s1 == s5;
System.out.println(“s1 equals s2= ” +result121);
System.out.println(“s1 == s2= ” +result122);
System.out.println(“s1 equals s3= ” +result131);
System.out.println(“s1 == s3= ” +result132);
System.out.println(“s1 equals s4= ” +result141);
System.out.println(“s1 == s4= ” +result142);
System.out.println(“s1 equals s5= ” +result151);
System.out.println(“s1 == s5= ” +result152);} }(8)判斷回文字符串
回文是一種“從前向后讀”和“從后向前讀”都相同的字符串。如“rotor”是一個(gè)回文字符串。
程序中使用了兩種算法來(lái)判斷回文字符串:
算法一:分別從前向后和從后向前依次獲得原串str的一個(gè)字符ch1、ch2,比較ch1和ch2,如果不相等,則str肯定不是回文串,yes=false,立即退出循環(huán):否則繼續(xù)比較,直到字符全部比較完,yes的值仍為true,才能肯定str是回文串。
算法二:將原串str反轉(zhuǎn)成temp串,再比較兩串,如果相等則是回文字符串。(9)使用String類的compareTo(String s)方法,對(duì)以下字符串從小到大排序:“melon”, “apple”, “pear”, “banana”,顯示輸出排序結(jié)果。
要求:
(1)編譯調(diào)試程序之前應(yīng)配置好環(huán)境變量;
(2)要分別掌握用JDK命令行和Eclipse集成開(kāi)發(fā)環(huán)境調(diào)試Java程序;(3)注意Java兩大類程序:應(yīng)用程序和小程序的區(qū)別。
程序清單:
(建議程序中適當(dāng)添加注釋信息,增強(qiáng)可讀性;較長(zhǎng)程序可分欄書寫,保證報(bào)告排版整潔美觀。)
(1)主方法傳遞參數(shù)“Hello world”字符串,并輸出
public class Hello { public Hello(){
System.out.println(“HelloWorld!”);} public static void main(String args[]){
new Hello();} }(2)Eclipse編譯Java Applet import java.awt.*;import java.applet.Applet;public class HelloApplet extends Applet { int height,width;public void init(){
this.height=100;
this.width=300;}
public void paint(Graphics g){
g.setColor(Color.red);
g.drawString(“Hello!”, 20, 20);} }(3)
package b;import java.util.Scanner;public class Test { public static void main(String args[]){
int score;
//char grade;
System.out.println(“請(qǐng)輸入分?jǐn)?shù)按回車”);
Scanner reader=new Scanner(System.in);
score=reader.nextInt();
if(score>=90&&score<=100){
System.out.println(“A”);
}
else if(score>=70&&score<=89){
System.out.println(“B”);
}
else if(score>=60&&score<=69){
System.out.println(“C”);
}
else if(score<60){
System.out.println(“D”);
}
else{
System.out.println(“數(shù)據(jù)錯(cuò)誤”);
} } }(4)
public class Lim { public static void main(String[] args){
int[] prime = calculation(20, 200, 300);
for(int i = 0;i < prime.length;i++){
if(prime[i]!= 0){
if(i % 10 == 0 && i!= 0)
System.out.println();
System.out.print(prime[i] + “ ”);// 打印數(shù)據(jù)
}
}
} public static int[] calculation(int length, int start, int end){
int j;
int step = 0;
int[] prime = new int[length];
for(int i = start;i <= end;i++)
{
j = 2;
while(i % j!= 0){
j++;
}
if(j == i)
{
prime[step] = i;
step++;
}
}
return prime;
} }(5)① public class shuzu { public static void main(String args[]){
int i,j;
int arr[][]=new int[4][];
for(i=0;i arr[i]=new int[arr.length];for(i=0;i<4;i++) for(j=3;j>=i;j--){ arr[i][j]=i; } for(j=0;j<4;j++){ for(i=3;i>=j;i--){ arr[i][j]=j; } } for(i=0;i<=3;i++){ for(j=0;j<=3;j++){ System.out.print(arr[i][j]); System.out.print(“ ”); } System.out.println(); } } } ②public class Shuzu { public static void main(String args[]){ int num[][]=new int[4][];for(int i=0;i num[i]=new int[2*i+1]; for(int m=0;m System.out.print(“ ”); } int k=i+1; for(int j=0;j if(j<=i) num[i][j]=j+1; else{ k--; num[i][j]=k; } System.out.print(num[i][j]+“ ”); } System.out.println();} } }(6)public class test { public static void main(String[] args){ // TODO Auto-generated method stub int[][] mat = {{11,12,13},{4,5,6},{7,8,9}}; for(int i=0;i { for(int j=0;j System.out.print(mat[i][j]+“ ”); System.out.println(); } boolean find = false;//找到鞍點(diǎn)標(biāo)記 int row=0;//第1行下標(biāo) int max=0;//記錄當(dāng)前行最大值的列下標(biāo) while(!find && row { max=0;//初始設(shè)每行第1列值最大 for(int j=1;j if(mat[row][j]>mat[row][max])//mat[row][max]為該行最大值 max = j; boolean yes = true;//再判斷mat[row][max]是否在列上最小 int j=0; while(yes && j { if(mat[j][max] yes=false; j++; } if(yes) find = true; else row++; } if(find) System.out.println(“The dort: ”+mat[row][max]); else System.out.println(“The dort: null”);} }(8)import java.util.Scanner;public class HuiWenTest { public static void main(String[] args){ // TODO Auto-generated method stub System.out.println(“請(qǐng)輸入一個(gè)字符串”);@SuppressWarnings(“resource”) Scanner input = new Scanner(System.in);String str = input.next();StringBuilder sb=new StringBuilder(str);sb.reverse();//將Sr倒置的方法 String newStr=new String(sb);if(str.equals(newStr)){ System.out.println(str+“是回文字符串”);}else{ System.out.println(str+“不是回文字符串”);} } }(9)import java.util.*;public class SortString { public static void main(String[] args){ // TODO Auto-generated method stub String [ ] a={“melon”,“apple”,“pear”,“banana”}; String [ ] b=Arrays.copyOf(a,a.length);System.out.println(“使用用戶編寫的SortString類,按字典序排列數(shù)組a:”);SortString.sort(a);System.out.println(“排序結(jié)果是:”);for(String s:a){ System.out.print(“ ”+s);} System.out.println(“");System.out.println(”使用類庫(kù)中的Arrays類,按字典序排列數(shù)組b:“);Arrays.sort(b);System.out.println(”排序結(jié)果是:“);for(String s:b){ System.out.print(” “+s);} } 四、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析) (1) (2) (3) (4) (5) (6) (7) (8) (9) 五、實(shí)驗(yàn)體會(huì)(遇到問(wèn)題及解決辦法,編程后的心得體會(huì)) 在這次實(shí)驗(yàn)中,我知道了eclipse和jdk運(yùn)行程序的區(qū)別,jdk比較麻煩一些,需要配置變量。在實(shí)驗(yàn)中,配置jdk的環(huán)境變量要注意它的path和 classpath,如果classpath本身就有,可以在后面加分號(hào),這樣不影響其它的classpath的使用。學(xué)會(huì)了如何生成注釋文檔,主函數(shù)傳遞參數(shù)的方法,還有壓縮文件,實(shí)驗(yàn)中還對(duì)數(shù)組的創(chuàng)建和使用進(jìn)行了練習(xí),還有一些類的應(yīng)用。 實(shí)驗(yàn)項(xiàng)目名稱: 面向?qū)ο缶幊?實(shí)驗(yàn)學(xué)時(shí): 8 同組學(xué)生姓名: ———— 實(shí)驗(yàn)地點(diǎn): 工科樓A101 實(shí)驗(yàn)日期: 17.4.11~17.5.2 實(shí)驗(yàn)成績(jī): 批改教師: 劉晶 批改時(shí)間: 實(shí)驗(yàn)2 面向?qū)ο缶幊?/p> 一、實(shí)驗(yàn)?zāi)康暮鸵?/p> (1)熟練掌握J(rèn)ava語(yǔ)言類定義的基本語(yǔ)法;(2)熟練掌握類成員的訪問(wèn)控制,對(duì)象建立的方法;(3)熟練掌握類構(gòu)造方法、成員方法的定義和重載;(4)熟練掌握類繼承、多態(tài)和抽象性;(5)熟練掌握接口的定義和實(shí)現(xiàn)方法;(6)掌握基本的異常處理方法; (7)調(diào)試程序要記錄調(diào)試過(guò)程中出現(xiàn)的問(wèn)題及解決辦法; (8)編寫程序要規(guī)范、正確,上機(jī)調(diào)試過(guò)程和結(jié)果要有記錄,不斷積累編程及調(diào)試經(jīng)驗(yàn); (9)做完實(shí)驗(yàn)后給出本實(shí)驗(yàn)的實(shí)驗(yàn)報(bào)告。 二、實(shí)驗(yàn)儀器和設(shè)備 奔騰以上計(jì)算機(jī),Windows 操作系統(tǒng),裝有JDK1.6和Eclipse4.2軟件。 三、實(shí)驗(yàn)過(guò)程 (1)定義一個(gè)Man類,保存在Man.java文件中,類中包含說(shuō)話方法如下: public class Man { public void say() { System.out.println(“我是中國(guó)人!”); } } 為此類打包為cn.edu.jit.chinese;再在Man.java文件所在路徑下,創(chuàng)建一個(gè)China.java文件,其中定義China類如下: public class China { public static void main(String[] args) { Man lihua = new Man(); lihua.say(); } } 在China類中引用Man類,輸出顯示“我是中國(guó)人!”。試著去掉Man類的public修飾,看看會(huì)發(fā)生什么情況? (2)設(shè)計(jì)復(fù)數(shù)類,成員變量包括實(shí)部和虛部,成員方法包括實(shí)現(xiàn)復(fù)數(shù)加法、減法、字符串描述、比較是否相等等操作。 (3)包的建立與使用:設(shè)計(jì)計(jì)算器類Calculator,計(jì)算加、減、乘、除和立方體體積,并且打包為mypackage。觀察源文件目錄下是否生成了mypackage文件夾,在該文件夾中是否有Calculate.class文件。編輯PackageDemo.java,保存在Calculator.java同一目錄下,引用計(jì)算器類的各方法顯示計(jì)算結(jié)果。 (4)試編碼實(shí)現(xiàn)簡(jiǎn)單的銀行業(yè)務(wù):處理簡(jiǎn)單帳戶存取款、查詢。編寫銀行帳戶類BankAccount,包含數(shù)據(jù)成員:余額(balance)、利率(interest);操作方法:查詢余額、存款、取款、查詢利率、設(shè)置利率。再編寫主類UseAccount,包含main()方法,創(chuàng)建BankAccount類的對(duì)象,并完成相應(yīng)操作。 (5)假定根據(jù)學(xué)生的3門學(xué)位課程的分?jǐn)?shù)決定其是否可以拿到學(xué)位,對(duì)于本科生,如果3門課程的平均分?jǐn)?shù)超過(guò)60分即表示通過(guò),而對(duì)于研究生,則需要平均超過(guò)80分才能夠通過(guò)。根據(jù)上述要求,請(qǐng)完成以下Java類的設(shè)計(jì): 1)設(shè)計(jì)一個(gè)基類Student描述學(xué)生的共同特征。 2)設(shè)計(jì)一個(gè)描述本科生的類Undergraduate,該類繼承并擴(kuò)展Student類。3)設(shè)計(jì)一個(gè)描述研究生的類Graduate,該類繼承并擴(kuò)展Student類。 4)設(shè)計(jì)一個(gè)測(cè)試類StudentDemo,分別創(chuàng)建本科生和研究生這兩個(gè)類的對(duì)象,并輸出相關(guān)信息。 (6)設(shè)計(jì)三角形類,繼承圖形抽象類,計(jì)算三角形面積和周長(zhǎng)。 (7)試編碼實(shí)現(xiàn)多態(tài)在工資系統(tǒng)中的應(yīng)用:給出一個(gè)根據(jù)雇員類型利用abstract方法和多態(tài)性完成工資單計(jì)算的程序。Employee是抽象類,Employee的子類有Boss(每星期發(fā)給他固定工資,而不計(jì)工作時(shí)間)、CommissionWorker(除基本工資外還根據(jù)銷售額發(fā)放浮動(dòng)工資)、PieceWorker(按其生產(chǎn)的產(chǎn)品數(shù)發(fā)放工資)、HourlyWorker(根據(jù)工作時(shí)間長(zhǎng)短發(fā)放工資)。該例的Employee的每個(gè)子類都聲明為final,因?yàn)椴恍枰倮^承它們生成子類。在主測(cè)試類Test中測(cè)試各類雇員工資計(jì)算結(jié)果。 提示:對(duì)所有雇員類型都使用earnings()方法,但每個(gè)人掙的工資按他所屬的雇員類計(jì)算,所有雇員類都是從超類Employee派生出的。在超類中聲明earnings()為抽象方法,并且對(duì)于每個(gè)子類都提供恰當(dāng)?shù)膃arnings()的實(shí)現(xiàn)方法。為了計(jì)算雇員的工資,程序僅僅使用雇員對(duì)象的一個(gè)超類引用并調(diào)用earnings()方法。在一個(gè)實(shí)際的工資系統(tǒng)中,各種Employee對(duì)象的引用可以通過(guò)一個(gè)Employee引用數(shù)組來(lái)實(shí)現(xiàn)。程序依次使用數(shù)組的每個(gè)元素(Employee引用)調(diào)用每個(gè)對(duì)象的earnings()方法。Employee類定義如下: abstract class Employee { private String firstName;private String lastName;public Employee(String first,String last){ firstName=first;lastName=last;} public String getEmployeeName(){ return firstName;} public String getLastName(){ return lastName;} public String toString(){ return firstName+lastName;} public abstract String earnings();}(8)設(shè)計(jì)圓柱體類和圓椎體類,繼承圓類Circle并實(shí)現(xiàn)體積接口Volume,計(jì)算表面積和體積。 (9)定義一個(gè)接口CanFly,描述會(huì)飛的方法public void fly();分別定義飛機(jī)類和鳥(niǎo)類,實(shí)現(xiàn)CanFly接口。定義一個(gè)測(cè)試類,測(cè)試飛機(jī)和鳥(niǎo)。測(cè)試類中定義一個(gè)makeFly(CanFly obj)方法,讓會(huì)飛的事物飛起來(lái)(即調(diào)用相應(yīng)類的fly()方法)。然后在main方法中創(chuàng)建飛機(jī)對(duì)象和鳥(niǎo)對(duì)象,并在main方法中調(diào)用makeFly(CanFly obj)方法,讓飛機(jī)和鳥(niǎo)起飛。 (10)異常的捕獲:計(jì)算兩數(shù)相除并輸出結(jié)果。使用三個(gè)catch子句,分別捕捉輸入輸出異常、除數(shù)為0的異常和參數(shù)輸入有誤異常。import java.io.*;class Ex1 { public static void main(String args[ ]){ try{ BufferedReader strin=new BufferedReader(new InputStreamReader(System.in));//建立輸入流緩沖區(qū) System.out.print(”請(qǐng)輸入除數(shù):“);String cl=strin.readLine();//鍵盤輸入 int a=Integer.parseInt(cl);System.out.print(”請(qǐng)輸入被除數(shù):“);cl=strin.readLine();int b=Integer.parseInt(cl);int c=b/a;System.out.println(”商為:“+c);} //捕獲與I/O有關(guān)的異常(空白處補(bǔ)全捕獲語(yǔ)句) //捕獲數(shù)值轉(zhuǎn)化時(shí)的異常,如不能將字符轉(zhuǎn)化成數(shù)值 //捕獲除數(shù)為0的異常 } } 編譯并運(yùn)行,當(dāng)產(chǎn)生輸入輸出異常時(shí)顯示異常信息;當(dāng)輸入除數(shù)為0時(shí),出現(xiàn)算術(shù)異常,提示除數(shù)為0,并要求重新輸入;當(dāng)輸入的不是整數(shù)時(shí),如將30輸成了3o,出現(xiàn)數(shù)值格式異常,提示輸入整數(shù)。 (11)編寫程序包含自定義異常MyException,當(dāng)100被13和4除時(shí)拋出該異常,其余除數(shù)顯示商值。 要求: (1)注意選用適當(dāng)?shù)念惓蓡T修飾符(private、protected、public等),比較它們的使用情況; (2)養(yǎng)成良好的編程習(xí)慣,嚴(yán)格按照命名規(guī)則為包、類及類成員命名,將每個(gè)程序打包,包的命名方式如two.num1表示實(shí)驗(yàn)二的第一題; (3)學(xué)會(huì)使用Eclipse的各種調(diào)試方法; (4)學(xué)會(huì)查閱Java API文檔,如查找異常類的使用方法。 程序清單: (建議程序中適當(dāng)添加注釋信息,增強(qiáng)可讀性;較長(zhǎng)程序可分欄書寫,保證報(bào)告排版整潔美觀。)(1)package cn.edu.jit.chinese;// 為Man類打包為cn.edu.jit.chinese public class Man { public void say(){ System.out.println(”我是中國(guó)人!“);} } package cn.edu.jit.chinese; import cn.edu.jit.chinese.*;//導(dǎo)入包 public class China { public static void main(String[] args){ Man lihua = new Man();//主方法先創(chuàng)建類然后調(diào)用類 lihua.say();} }(2)public class Complex { private double real,image;//定義私有的real,image public Complex(double real,double image) {this.real=real;//賦值 this.image=image;} public Complex(double real){this(real,0);} public Complex(){this(0,0);} public Complex(Complex c){this(c.real,c.image);} public double getReal(){return real;} public void setReal(double real){ this.real = real;} public double getImage(){ return image;} public void setImage(double image){ this.image = image;} public Complex add(Complex c1,Complex c2)//寫方法 {Complex C=new Complex(c1.real+c2.real,c1.image+c2.image);return C;} public Complex add(Complex c1){Complex C=new Complex(this.real+c1.real,this.image+c1.image);return C;} public Complex jian(Complex c1,Complex c2){Complex C=new Complex(c1.real-c2.real,c1.image-c2.image);return C;} public Complex jian(Complex c1){Complex C=new Complex(this.real-c1.real,this.image-c1.image);return C;} public boolean bijiao(Complex c1,Complex c2){return(c1.real==c2.real&&c1.image==c2.image);} public boolean bijiao(Complex c1){return(c1.real==this.real&&c1.image==this.image);} public String toString(){return this.real+”+“+this.image+”i“;} } public class ComplexText { public static void main(String[] args){ Complex c1=new Complex(2,5);//創(chuàng)建類,調(diào)用類里面的方法 Complex c2=new Complex(5,2); Complex c3=new Complex(); System.out.println(c3.add(c1,c2)); System.out.println(c3.jian(c1,c2)); System.out.println(c3.bijiao(c1,c2));} }(3)public class Calculate { double i,j, t;public Calculate(int i,int j){this.i=i;this.j=j;} public Calculate(int i,int j,int t){this.i=i;this.j=j;this.t=t;} public double add(){return i+j;} public double jian(){return i-j;} public double cheng(){return i*j;} public double chu(){return i/j;} public double tiji(){return i*i*i+j*j*j+t*t*t;} } public class PackageDemo {//測(cè)試 public static void main(String[] args){ Calculate c1=new Calculate(8,4); Calculate c2=new Calculate(8,4,2); System.out.println(”相加=“+c1.add()); System.out.println(”相減=“+c1.jian()); System.out.println(”相乘=“+c1.cheng()); System.out.println(”相除 =“+c1.chu()); System.out.println(”立方體體積=“+c2.tiji());} }(4)public class BankAccount { double balance,interest,cunkuan;public BankAccount(double cunkuan,double balance)//寫方法 {this.balance=balance; this.cunkuan=cunkuan;} public void set(double cunkuan) {if(cunkuan<10000)interest=0.1; else if(cunkuan<50000)interest=0.25; else if(cunkuan<100000)interest=0.035; else interest=0.5;} public double get() { return interest;} public void chaxun(double balance,double cunkuan) {System.out.println(”存款為:“+cunkuan); System.out.println(”余額為:“+balance);} public void qu(double qukuan) {System.out.println(”取款為:“+qukuan);System.out.println(”得到的利潤(rùn)率:“+(this.cunkuan-qukuan)*this.interest);} } public class UseAccount {//測(cè)試 public static void main(String[] args){ BankAccount c1=new BankAccount(40000,40000); c1.chaxun(40000,20000); c1.set(20000); System.out.println(”利率為“+c1.get()); c1.qu(10000);} }(5)public class Student { String name;int age;float average,chainese;float math,Enghish;public Student(String name,int age){this.name=name;this.age=age;System.out.println(name+”:“+age+”歲“+” “);} public void set(float chinese,float math,float Enghish){average=(chinese+math+Enghish)/3;} public float get(){return average;} } class Undergraduate extends Student// Student繼承Undergraduate {public Undergraduate(String name,int age){ super(name,age);} public void hege(float average){ this.average=average; if(average>=60)System.out.println(”本科生成績(jī)合格“);else System.out.println(”本科生成績(jī)不合格“);}} class Graduate extends Student// Student繼承Graduate {public Graduate(String name,int age){ super(name,age);//調(diào)用 } public void hege(float average){ this.average=average;if(average>=80)System.out.println(”研究生生成績(jī)合格“);else System.out.println(”研究生成績(jī)不合格“);} } public class StudentDemo {//測(cè)試 public static void main(String[] args){ Undergraduate c1=new Undergraduate(”小明 “,22); System.out.println(”本科生三門成績(jī)分別為:“+”59,“+”85,“+”90“); c1.set(65,75,60); System.out.println(”本科生平均分=“+c1.get()); c1.hege(c1.get()); System.out.println(); Graduate c2=new Graduate(”小紅 “,18); System.out.println(”研究生生三門成績(jī)分別為“+”90,“+”84,“+”88“); c2.set(80,86,79); System.out.println(”研究生生平均分=“+c2.get()); c2.hege(c2.get());}(6)public abstract class ClosedFigure {//定義抽象類 String shape;public ClosedFigure(String newShape){this.shape=newShape;} public abstract double perimeter();//定義抽象類,里面不能寫方法 public abstract double area();} public class Triangle extends ClosedFigure {// ClosedFigure繼承Triangle double a,b,c;public Triangle(String newShape,double a,double b,double c){super(”newShape“);this.a=a;this.b=b; this.c=c;} public double perimeter(){return a+b+c;} public double area(){double s;s=(a+b+c)/2;return Math.sqrt(s*(s-a)*(s-b)*(s-c));} public String toString(){return(”三角形三邊長(zhǎng):“+a+” “+b+” “+c+” “+”周長(zhǎng):“+perimeter()+”面積:“+area());} public class Test { public static void main(String[] args){ Triangle c1=new Triangle(”三角形“,3,4,5); c1.perimeter(); c1.area(); System.out.println(c1.toString());} } }(7)public abstract class Employee { private String firstName;private String lastName;public Employee(String first,String last) {firstName=first; lastName=last;} public String getEmployeeName() {return firstName;} public String getLastName() { return lastName;} public String toString() {return firstName+lastName;} public abstract String earnings();} public final class Boss extends Employee{ double salary;public Boss(String first, String last, double salary){ super(first, last); this.salary = salary;} public String earnings(){return(salary+”“);} } public final class CommissionWorker extends Employee { double salary; double sale;double price;public CommissionWorker(String first, String last, double salary, double sale,double price){ super(first, last); this.salary = salary; this.sale = sale; this.price = price;} public String earnings(){return(salary+sale*price+”“);} } public final class PieceWorker extends Employee{ double number; double price; public PieceWorker(String first, String last, double number,double price){ super(first, last); this.number = number; this.price=price; } public String earnings() {return(number*price+”“);} } public final class HourlyWorker extends Employee {double time;double money;public HourlyWorker(String first, String last, double time, double money){ super(first, last);this.time = time;this.money = money;} public String earnings(){ return(time*money+”“);} } public class Test { public static void main(String[] args){ Employee c1=new Boss(”張“,”三“,10000); System.out.println(”張三月工資:“+c1.earnings()); Employee c2=new CommissionWorker(”李“,”四“,4000,1500,2); System.out.println(”李四月工資:“+c2.earnings()); Employee c3=new PieceWorker(”王“,”五“,1000,3); System.out.println(”王五月工資:“+c3.earnings()); Employee c4=new HourlyWorker(”劉“,”三“,600,30); System.out.println(”劉三月工資:“+c4.earnings());} }(8)public class Circle { String shape;double r;double height;double pi;public Circle(String shape,double r,double height,double pi){this.shape=shape;this.height=height;this.r=r;this.pi=pi;} } public interface Volume { public abstract double area();public abstract double NewVolume();} public class Yuanzhu extends Circle implements Volume { public Yuanzhu(String shape, double r, double height, double pi){ super(shape, r, height, pi);} public double area(){ return pi*r*r;} public double NewVolume(){return area()*height;} } public class Yuanzhui extends Yuanzhu implements Volume { public Yuanzhui(String shape, double r, double height, double pi){ super(shape, r, height, pi); // TODO Auto-generated constructor stub } double s;public double area(){s=Math.sqrt(height*height+r*r);return pi*r*s+pi*r*r;} public double NewVolum(){return 1.0/3*pi*r*pi*r*height;} } public class Test { public static void main(String[] args){ Yuanzhu c1=new Yuanzhu(”圓柱“,4,6,3.14); Yuanzhui c2=new Yuanzhui(”圓錐“,2,3,3.14); System.out.println(”圓柱表面積:“+c1.area()); System.out.println(”圓柱體積:“+c1.NewVolume()); System.out.println(”圓錐表面積:“+c2.area()); System.out.println(”圓錐體積:“+c2.NewVolume());} }(9)public interface CanFly {//定義接口CanFly public void fly();} public class Plane implements CanFly{//使用接口 @Override public void fly(){ // TODO Auto-generated method stub System.out.println(”飛機(jī)借助螺旋槳飛上天空“);} } public class Bird implements CanFly{ @Override public void fly(){ // TODO Auto-generated method stub System.out.println(”小鳥(niǎo) 借助翅膀飛上天空“);} } public class Test { static void makeFly(CanFly obj){ obj.fly();} public static void main(String[] args){ // TODO Auto-generated method stub CanFly p =new Plane(); makeFly(p); CanFly b =new Bird(); makeFly(b);} }(10)import java.io.*;public class Ex1 { public static void main(String args[ ]){ try{ BufferedReader strin=new BufferedReader(new InputStreamReader(System.in));//建立輸入流緩沖區(qū) System.out.print(”請(qǐng)輸入除數(shù):“);String cl=strin.readLine();//鍵盤輸入 int a=Integer.parseInt(cl);System.out.print(”請(qǐng)輸入被除數(shù):“);cl=strin.readLine();int b=Integer.parseInt(cl);int c=b/a;System.out.println(”商為:“+c);} //捕獲與I/O有關(guān)的異常(空白處補(bǔ)全捕獲語(yǔ)句) catch(IOException e){System.out.println(”輸入輸出異常“);} //捕獲數(shù)值轉(zhuǎn)化時(shí)的異常,如不能將字符轉(zhuǎn)化成數(shù)值 catch(NumberFormatException e){System.out.println(”數(shù)值格式異常,重新輸入“); } //捕獲除數(shù)為0的異常 catch(ArithmeticException e){System.out.println(”除數(shù)為0,重新輸入“);} } }(11)(1)MyException類: package exp2_11;public class MyException extends Exception{ MyException(String msg){ super(msg);} }(2)Div主類: package exp2_11;import java.io.*;public class Div { public static void main(String args[])throws MyException{ try{ BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); System.out.print(”請(qǐng)輸入實(shí)數(shù)除法運(yùn)算的被除數(shù):“); String str = in.readLine(); double a = Double.parseDouble(str); System.out.print(”請(qǐng)輸入除數(shù):“); str = in.readLine(); double b = Double.parseDouble(str); System.out.println(”商結(jié)果:“+division(a,b)); } catch(ArithmeticException e1){ System.out.println(”商結(jié)果:Infinity“+e1); System.out.println(”商結(jié)果:NaN“+e1); } catch(NumberFormatException e2){ System.out.println(”異常:字符串不能轉(zhuǎn)換成整數(shù)!“+e2); } catch(IOException e3){ System.out.println(”異常:IO異常“+e3); } finally{ System.out.println(”程序結(jié)束!“); } } static double division(double a,double b)throws MyException{ if(a==100 &&(b==4 || b==13)) throw new MyException(”不符規(guī)范“); else return(a/b);} } 四、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析) (1) 去掉Man類的public修飾,程序運(yùn)行不出來(lái),提示缺少M(fèi)an的公開(kāi)方法。(2) (3) (4) (5) (6) (7) (8) (9) (10) (11) 五、實(shí)驗(yàn)體會(huì)(遇到問(wèn)題及解決辦法,編程后的心得體會(huì)) 學(xué)習(xí)程序設(shè)計(jì)的基本目的就是培養(yǎng)描述實(shí)際問(wèn)題的程序化解決方案的關(guān)鍵技能Java面向?qū)ο蟪绦蛟O(shè)計(jì)是一門實(shí)踐性比較強(qiáng)的課程在實(shí)際中我們必須把理論和實(shí)踐結(jié)合起來(lái)。在實(shí)驗(yàn)中我們對(duì)照課本的知識(shí)然后進(jìn)行實(shí)際的操作而后發(fā)現(xiàn)實(shí)際的運(yùn)用比課本提到的要多很多理論總是來(lái)源于實(shí)踐我們必須在現(xiàn)有的理論的基礎(chǔ)上進(jìn)行有效地實(shí)踐。而這次實(shí)驗(yàn)也讓我看到了現(xiàn)在學(xué)習(xí)的一個(gè)很大弱點(diǎn)就是實(shí)踐的實(shí)踐往往很少。在現(xiàn)實(shí)社會(huì)中我們必須懂得實(shí)際的操作才能更好的服務(wù)于社會(huì)。所以我必須在以后的學(xué)習(xí)中多動(dòng)手多實(shí)際操作爭(zhēng)取能在實(shí)踐中找到屬于自己新的感悟,終于在學(xué)習(xí)Java時(shí)達(dá)到了事半功倍的效果。 實(shí)驗(yàn)項(xiàng)目名稱: 圖形用戶界面 實(shí)驗(yàn)學(xué)時(shí): 6 同組學(xué)生姓名: ———— 實(shí)驗(yàn)地點(diǎn): 工科樓A101 實(shí)驗(yàn)日期: 17.5.9~17.5.23 實(shí)驗(yàn)成績(jī): 批改教師: 劉晶 批改時(shí)間: 實(shí)驗(yàn)3 圖形用戶界面 一、實(shí)驗(yàn)?zāi)康暮鸵?/p> (1)掌握Swing組件的使用方法; (2)熟練掌握Swing中常用布局管理器的使用方法;(3)掌握用戶界面動(dòng)作與事件的處理程序的編寫方法;(4)熟練掌握構(gòu)造用戶界面的方法和常見(jiàn)界面元素的使用;(5)熟練掌握J(rèn)ava繪圖的主要方法。 (6)調(diào)試程序要記錄調(diào)試過(guò)程中出現(xiàn)的問(wèn)題及解決辦法; (7)編寫程序要規(guī)范、正確,上機(jī)調(diào)試過(guò)程和結(jié)果要有記錄,不斷積累編程及調(diào)試經(jīng)驗(yàn); (8)做完實(shí)驗(yàn)后給出本實(shí)驗(yàn)的實(shí)驗(yàn)報(bào)告。 二、實(shí)驗(yàn)儀器和設(shè)備 奔騰以上計(jì)算機(jī),Windows 操作系統(tǒng),裝有JDK1.6和Eclipse4.2軟件。 三、實(shí)驗(yàn)過(guò)程 1.計(jì)算器設(shè)計(jì) 2.整數(shù)進(jìn)制轉(zhuǎn)換 將一個(gè)十進(jìn)制整數(shù)分別轉(zhuǎn)換成二進(jìn)制、八進(jìn)制和十六進(jìn)制整數(shù)。 3.模擬裁判評(píng)分。 設(shè)計(jì)如圖所示圖形界面,顯示n個(gè)裁判的評(píng)分,根據(jù)制定規(guī)則計(jì)算出最后得分。要求:圖形界面采用表格顯示裁判評(píng)分,隨裁判人數(shù)變化而變化;指定分?jǐn)?shù)范圍,若超出,則異常處理; 得分規(guī)則有指定接口約定,由多個(gè)接口對(duì)象給出多種得分規(guī)則,如求平均數(shù)值,或去掉一個(gè)最高分和一個(gè)最低分后,再求平均值。 4.編譯運(yùn)行下例,然后修改程序,當(dāng)使用鼠標(biāo)單擊后在另一位置重新繪制月亮。【例】 在Applet中畫月亮。import java.awt.*;import java.applet.Applet;public class MoonApplet extends Applet { public void paint(Graphics g)//在Applet上繪圖 { g.setColor(Color.red);g.drawString(”The Moon“,100,20);int x=0,y=0;//圓外切矩形左上角坐標(biāo) x = this.getWidth()/4;y = this.getHeight()/4;int diameter = Math.min(this.getWidth()/2, this.getHeight()/2);//圓的直徑 g.setColor(Color.yellow);g.fillOval(x,y,diameter,diameter);//畫圓 g.setColor(this.getBackground());//設(shè)置為背景色 g.fillOval(x-20,y-20,diameter,diameter);//畫圓 } } 5.根據(jù)阿基米德螺線的極坐標(biāo)方程:r=aθ畫出相應(yīng)圖形。 要求: (1)注意選用適當(dāng)?shù)牟季止芾砥髟O(shè)計(jì)圖形用戶界面,比較它們的布局情況; (2)養(yǎng)成良好的編程習(xí)慣,嚴(yán)格按照命名規(guī)則為包、類及類成員命名,將每個(gè)程序打包,包的命名方式如three.num1表示實(shí)驗(yàn)三的第一題;(3)學(xué)會(huì)使用Eclipse的各種調(diào)試方法; (4)學(xué)會(huì)查閱Java API文檔,如查找事件類的處理里方法。 程序清單: (建議程序中適當(dāng)添加注釋信息,增強(qiáng)可讀性;較長(zhǎng)程序可分欄書寫,保證報(bào)告排版整潔美觀。) 1.import java.awt.BorderLayout;import java.awt.GridLayout;import java.awt.event.*;import javax.swing.*; public class Calulator implements ActionListener { JTextField t1;JPanel p1;JFrame f;static int count=1;static float value=0;int p2=0;String p;public Calulator(){f=new JFrame(”Calulator“);f.setSize(400,200);p1=new JPanel();t1=new JTextField(30);t1.setHorizontalAlignment(JTextField.RIGHT);p1.setLayout(new GridLayout(5,4));f.add(t1);String str[]= {”開(kāi)根“,”+“,”-“,”清零“,”7“,”8“,”9“,”/“,”4“,”5“,”6“,”*“,”1“,”2“,”3“,”負(fù)“,”0“,”.“,”正“,”=“};for(int i=0;i<20;i++){JButton b=new JButton(str[i]);p1.add(b);b.addActionListener(this);} f.add(t1,BorderLayout.CENTER);f.add(p1,BorderLayout.SOUTH);f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);f.setVisible(true);} public void actionPerformed(ActionEvent e){ String c = e.getActionCommand();if(c==”0“||c==”1“||c==”2“||c==”3“||c==”4“||c==”5“||c==”6“||c==”7“||c==”8“||c==”9“||c==”.“){if(p2==0){t1.setText(c);p2++;} else {t1.setText(t1.getText()+c);p2++;}} else if(p==”清零“){value=0;t1.setText(String.valueOf(value));} else {count++;p2=0;if(count==2){p=c;value=Float.parseFloat(t1.getText());} if(c==”=“){ if(p==”開(kāi)根“){value=(float)Math.sqrt(Float.parseFloat(t1.getText()));t1.setText(String.valueOf(value));count-=2;} else if(p==”+“){value+=Float.parseFloat(t1.getText());count-=2;} else if(p==”-“){ value-=Float.parseFloat(t1.getText());count-=2;} else if(p==”*“){value*=Float.parseFloat(t1.getText());count-=2;} else if(p==”/“){ value/=Float.parseFloat(t1.getText());count-=2;} else if(p==”正”){value=Math.abs(Float.parseFloat(t1.getText()));t1.setText(String.valueOf(value));count-=2;} else if(p==”負(fù)“){value=-1*Float.parseFloat(t1.getText());t1.setText(String.valueOf(value));count-=2;} t1.setText(String.valueOf(value));value=0;}} } public static void main(String[] args){ new Calulator();}} 2.import java.awt.*;import java.awt.event.*;import javax.swing.*;public class ZhuanH extends JFrame implements ActionListener{ TextField t1,t2,t3,t4;public ZhuanH(){super(”十進(jìn)制整數(shù)轉(zhuǎn)換“);this.setBackground(Color.BLUE);t1=new TextField(5);t2=new TextField(5);t3=new TextField(5);t4=new TextField(5);t1.setText(null);this.setSize(400,200);this.setLayout(new GridLayout(4,2));this.add(new Label(”十進(jìn)制“));this.add(t1);t1.addActionListener(this);this.add(new Label(”二進(jìn)制“));this.add(t2);this.add(new Label(”八進(jìn)制“));this.add(t3);this.add(new Label(”十六進(jìn)制“));this.add(t4);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setVisible(true);} public void actionPerformed(ActionEvent e){ String c = t1.getText();t2.setText(Integer.toBinaryString(Integer.parseInt(c)));t3.setText(Integer.toOctalString(Integer.parseInt(c))); t4.setText(Integer.toHexString(Integer.parseInt(c)));} public static void main(String[] args){ new ZhuanH();}} 3.import java.awt.*;import java.awt.event.*;import javax.swing.*;public class PingFen extends JFrame implements ActionListener{ JPanel p,p1;JTextField t;JTextField t1[]=new JTextField[10];JButton b;float s=0,k;int t2,t3;public PingFen(){ super(”模擬裁判評(píng)分“);this.setSize(300,120);p1=new JPanel(new GridLayout(2,5));this.add(p1,”North“);p=new JPanel(new FlowLayout(FlowLayout.RIGHT));this.add(p,”South“);b=new JButton(”平均分“);t=new JTextField(10);p.add(b);p.add(t);for(int i=0;i<10;i++){ t1[i]=new JTextField(6);t1[i].setText(null);p1.add(t1[i]);} b.addActionListener(this);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setVisible(true);} public void actionPerformed(ActionEvent e){float max,min;for(int i=0;i<10;i++){ try{ if(Float.parseFloat(t1[i].getText())>10.0)throw new Exception(); else continue;} catch(Exception ev){JOptionPane.showMessageDialog(this,t1[i].getText()+”超出范圍“+”,“+” 請(qǐng)重新輸入“);t1[i].setText(null);} } max=Float.parseFloat(String.valueOf(t1[0].getText()));min=Float.parseFloat(String.valueOf(t1[0].getText()));for(int i=1;i<10;i++){ if((k=Float.parseFloat(String.valueOf(t1[i].getText())))>max){max=k;t2=i;} else if((k=Float.parseFloat(String.valueOf(t1[i].getText()))) new PingFen();}} 4.import java.awt.*;import java.applet.Applet;import java.awt.event.*;public class MoonApplet extends Applet implements MouseListener { int x,y;public void init(){ x=this.getWidth()/4; y=this.getHeight()/4; addMouseListener(this);} public void paint(Graphics g)//在Applet上繪圖 { g.setColor(Color.red);g.drawString(”The Moon“,100,20);int diameter = Math.min(this.getWidth()/2, this.getHeight()/2);//圓的直徑 g.setColor(Color.yellow);g.fillOval(x,y,diameter,diameter);//畫圓 g.setColor(this.getBackground());//設(shè)置為背景色 g.fillOval(x-20,y-20,diameter,diameter);//畫圓 } public void mouseClicked(MouseEvent e){ x=e.getX();y=e.getY();repaint();} 5.package package2;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class LuoXuan extends JFrame implements ActionListener{ private static final long serialVersionUID = 1L;private LuoXuanCanvas canvas;//自定義畫布組件 public LuoXuan(){super(”阿基米德螺線“);Dimension dim=getToolkit().getScreenSize();this.setBounds(dim.width/4,dim.height/4,dim.width/2,dim.height/2);JPanel p=new JPanel();this.add(p,”North“);JButton b=new JButton(”選擇顏色“);p.add(b);b.addActionListener(this);this.canvas=new LuoXuanCanvas();this.getContentPane().add(this.canvas, ”Center“);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setVisible(true);} public void actionPerformed(ActionEvent e){Color c=JColorChooser.showDialog(this, ”選擇顏色“, Color.BLUE);this.canvas.setColor(c);this.canvas.repaint();} public static void main(String[] args){ new LuoXuan();} } class LuoXuanCanvas extends Canvas {private Color color;public void LuoXuan(Color color){this.setColor(color);} public void setColor(Color color){this.color=color;} public void paint(Graphics g){int x0=this.getWidth()/2;int y0 = this.getHeight()/2;g.setColor(this.color);g.drawLine(x0, 0, x0, y0*2);g.drawLine(0, y0, x0*2, y0); for(int i=0;i<4000;i++){double angle=i*Math.PI/512;double radius=angle*0.5;int x=(int)Math.round(radius*angle*Math.cos(angle));int y=(int)Math.round(radius*angle*Math.sin(angle));g.drawOval(x0+x, y0+y, 1, 1);} }} 四、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析) (分析每題采用的布局管理器、事件處理類和主要功能實(shí)現(xiàn)方法)1.2.3.4.38 5.五、實(shí)驗(yàn)體會(huì)(遇到問(wèn)題及解決辦法,編程后的心得體會(huì)) 這次實(shí)驗(yàn)主要是對(duì)圖形用戶界面的設(shè)計(jì),這里有鼠標(biāo)觸發(fā)的事件,就要讓類實(shí)現(xiàn)MouseListener,在類里面實(shí)現(xiàn)MouseListener的方法,這里是選擇單擊時(shí)(mouseClicked()),這個(gè)方法,在方法體內(nèi)用getX(),getY()方法來(lái)獲取當(dāng)前坐標(biāo)。 實(shí)驗(yàn)項(xiàng)目名稱:Java高級(jí)編程 實(shí)驗(yàn)學(xué)時(shí): 4 同組學(xué)生姓名: ———— 實(shí)驗(yàn)地點(diǎn): 工科樓A101 實(shí)驗(yàn)日期: 17.5.30~17.6.6 實(shí)驗(yàn)成績(jī): 批改教師: 劉晶 批改時(shí)間: 實(shí)驗(yàn)4 Java高級(jí)編程 一、實(shí)驗(yàn)?zāi)康暮鸵?/p> (1)了解文件的概念和文件對(duì)象的創(chuàng)建方法;(2)掌握使用文件輸入輸出流讀寫文件的方法;(3)了解線程的基本概念和多線程程序設(shè)計(jì)的基本方法;(4)掌握數(shù)據(jù)庫(kù)連接的方法; (5)創(chuàng)建SQL查詢并更新數(shù)據(jù)庫(kù)中的信息; (6)調(diào)試程序要記錄調(diào)試過(guò)程中出現(xiàn)的問(wèn)題及解決辦法; (7)編寫程序要規(guī)范、正確,上機(jī)調(diào)試過(guò)程和結(jié)果要有記錄,不斷積累編程及調(diào)試經(jīng)驗(yàn); (8)做完實(shí)驗(yàn)后給出本實(shí)驗(yàn)的實(shí)驗(yàn)報(bào)告。 二、實(shí)驗(yàn)儀器和設(shè)備 奔騰以上計(jì)算機(jī),Windows 操作系統(tǒng),裝有JDK1.6和Eclipse4.2軟件,MySQL數(shù)據(jù)庫(kù)。 三、實(shí)驗(yàn)過(guò)程 (1)使用文件字節(jié)輸入/輸出流,合并兩個(gè)指定文件;當(dāng)文件中的數(shù)據(jù)已排序時(shí),合并后的數(shù)據(jù)也要求是已排序的。 (2)將Java的關(guān)鍵字保存在一個(gè)文本文件中,判斷一個(gè)字符串是否為Java的關(guān)鍵字。(3)編寫在構(gòu)造方法中產(chǎn)生一個(gè)1-5之間的隨機(jī)數(shù)的繼承Thread類的線程類DelayPrintThread,使得線程體每休眠此隨機(jī)數(shù)時(shí)間就打印輸出線程號(hào)和休眠時(shí)間;另外編寫應(yīng)用DelayPrintThread類的Java應(yīng)用程序TwoThread.java,在main()方法中創(chuàng)建兩個(gè)線程,并應(yīng)用sleep()控制主應(yīng)用程序延遲一段時(shí)間。 (4)編寫繼承Runnable接口的Applet多線程小程序類MultiThreadApplet,編寫繼承該類的Applet小程序類Clock,在Clock中重新構(gòu)造父類的run()方法,實(shí)現(xiàn)數(shù)字時(shí)鐘的功能,要求不斷刷新顯示時(shí)、分、秒。 (5)為學(xué)生信息表stuinfo設(shè)計(jì)數(shù)據(jù)庫(kù)應(yīng)用程序,包括數(shù)據(jù)的輸入、刪除和查詢功能。 要求: (1)注意選用適當(dāng)?shù)奈募鬟M(jìn)行文件讀寫; (2)學(xué)會(huì)兩種創(chuàng)建線程的方法,并比較使用場(chǎng)合; (3)養(yǎng)成良好的編程習(xí)慣,嚴(yán)格按照命名規(guī)則為包、類及類成員命名,將每個(gè)程序打包,包的命名方式如four.num1表示實(shí)驗(yàn)四的第一題;(4)學(xué)會(huì)查閱Java API文檔,如查找常用工具類。 程序清單: (建議程序中適當(dāng)添加注釋信息,增強(qiáng)可讀性;較長(zhǎng)程序可分欄書寫,保證報(bào)告排版整潔美觀。)1.import java.io.*;import java.util.Arrays;public class File { private String Filename;static int s=0,t=0;public File(String Filename){this.Filename=Filename;} public void writeToFile(byte[] buffer)throws IOException {if(s==0){FileOutputStream fout = new FileOutputStream(this.Filename);s++;Arrays.sort(buffer);fout.write(buffer);this.readFromFile();fout.close();} else { FileOutputStream fout1 = new FileOutputStream(this.Filename,true);Arrays.sort(buffer);fout1.write(buffer);fout1.close();} } public void readFromFile()throws IOException { FileInputStream fin = new FileInputStream(this.Filename);if(t==0){System.out.println(”文件名“+”:“+this.Filename+”:“);t++;} else System.out.println(”合并兩個(gè)文件后“+”:“+this.Filename+”:“);byte[] buffer = new byte[512];int count = fin.read(buffer);while(count!=-1){ for(int i=0;i byte[] buffer = {0,1,4,3,2,5,6,9,8,7};byte[] buffer1 = {10,11,12,14,15,17,16,19,20,13,18};File afile = new File(”ByteFile.dat“);afile.writeToFile(buffer);afile.writeToFile(buffer1);afile.readFromFile();} } 2.import java.io.*;public class File { private String Filename;public File(String Filename){this.Filename=Filename;} public void writerLine(String[] s)throws IOException {FileWriter f = new FileWriter(this.Filename);System.out.println(this.Filename+”文件中的java關(guān)鍵字有“+”:“);for(int i=0;i public void Text(String[] s,String[] s1){int i,j;for(i=0;i if(s1[i]==s[j]) {System.out.println(s1[i]+”是java中的關(guān)鍵字“);break;} else continue;if(j==s.length)System.out.println(s1[i]+”不是java中的關(guān)鍵字“);} } public static void main(String[] args)throws IOException { String[]s={”public“,”class“,”static“,”void“,”String“,”print“,”byte“,”boolean“,”int“,”short“,”long“,”throw“,”cath“,”continue“,”private“,”abstract“,”Interface“,”Exception“};String[] s1={”pblic“,”class“,”string“};File a=new File(”myfile.dat“);a.writerLine(s);a.Text(s,s1);} } 3.public class DelayPrintThread extends Thread{ private int number,time;public DelayPrintThread(int number) {this.number=number; time=(int)(Math.random()*5);} public void run(){ try { Thread.sleep(this.time);} catch(InterruptedException e){} System.out.println(”線程“+this.number+”:“+”休眠時(shí)間“+this.time);} public class TwoThread { public static void main(String[] args){ DelayPrintThread a=new DelayPrintThread(1);DelayPrintThread b=new DelayPrintThread(2);a.start();b.start();} } 4.import java.applet.Applet;import java.awt.*;import java.util.Date;import java.text.SimpleDateFormat;public class MultiThreadApplet extends Applet implements Runnable { Thread a;public void start(){ if(a==null){a=new Thread(this); a.start();} } public void stop(){ if(a!=null){ a.stop(); a=null;} } public void run(){} public void paint(Graphics g){SimpleDateFormat sdf=new SimpleDateFormat(”yyyy年MM月dd日E a hh時(shí) mm分ss秒“);g.drawString(sdf.format(new Date()),50,100);} } public class Clock extends MultiThreadApplet{ public void run(){ repaint();try{a.sleep(1000);} catch(InterruptedException e){} }} 5.import java.sql.*;public class Statement{ public static void main(String args[])throws Exception { Class.forName(”sun.jdbc.odbc.JdbcOdbcDriver“);Connection conn=DriverManager.getConnection(”jdbc:odbc:student“);Statement stmt=conn.createStatement();String Sql=”SELECT stu_id,stu_name,city FROM student WHERE stu_id=5“;String Sql=”INSERT INTO student(stu_id,stu_name,city)VALUES('5','小紅','徐州')“;String Sql=”DELETE FROM student WHERE stu_id=5“;int count=stmt.executeUpdate(Sql);System.out.println(”插入“+count+”行“);ResultSet rs=stmt.executeQuery(Sql);if(rs.next()){System.out.println(”行“+rs.getRow()+”:“+rs.getString(1)+”,“+rs.getString(2)+”,“+rs.getString(3));} else System.out.println(”沒(méi)有數(shù)據(jù)“);count=stmt.executeUpdate(Sql);rs=stmt.executeQuery(Sql);if(rs.next()){System.out.println(”行“+rs.getRow()+”:“+rs.getString(1)+”,“+rs.getString(2)+”,“+rs.getString(5));} else System.out.println(”沒(méi)有數(shù)據(jù)");} } 四、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析)1.45 2.3.4.五、實(shí)驗(yàn)體會(huì)(遇到問(wèn)題及解決辦法,編程后的心得體會(huì)) 通過(guò)這次實(shí)驗(yàn),我基本能夠理解線程的運(yùn)行了,學(xué)會(huì)調(diào)用Thread類中的系統(tǒng)函數(shù)以及掌握這些函數(shù)的作用是難點(diǎn),start()是開(kāi)辟一條新線程。子類重寫父類的run()方法,里面用sleep,來(lái)控制每個(gè)線程的休眠時(shí)間,但是得注意這里應(yīng)該要用try-catch語(yǔ)句來(lái)捕獲中斷異常。 河北北方學(xué)院信息科學(xué)與工程學(xué)院 《Java程序設(shè)計(jì)》 實(shí) 驗(yàn) 報(bào) 告 實(shí)驗(yàn)學(xué)期 2014 至 2015 學(xué)年 第 2 學(xué)期 學(xué)生所在系部 信息科學(xué)與工程學(xué)院 年級(jí) 2012 專業(yè)班級(jí) 電子三班 學(xué)生姓名 馮洋 學(xué)號(hào) 201242220 任課教師 實(shí)驗(yàn)成績(jī) 實(shí)驗(yàn)七 GUI標(biāo)準(zhǔn)組件及事件處理 一、課程設(shè)計(jì)目的: 《面向?qū)ο蟪绦蛟O(shè)計(jì)》是一門實(shí)踐性很強(qiáng)的計(jì)算機(jī)專業(yè)基礎(chǔ)課程,課程設(shè)計(jì)是學(xué)習(xí)完該課程后進(jìn)行的一次較全面的綜合練習(xí)。其目的在于通過(guò)實(shí)踐加深學(xué)生對(duì)面向?qū)ο蟪绦蛟O(shè)計(jì)的理論、方法和基礎(chǔ)知識(shí)的理解,掌握使用Java語(yǔ)言進(jìn)行面向?qū)ο笤O(shè)計(jì)的基本方法,提高運(yùn)用面向?qū)ο笾R(shí)分析實(shí)際問(wèn)題、解決實(shí)際問(wèn)題的能力,提高學(xué)生的應(yīng)用能力。 二、實(shí)驗(yàn)要求: 設(shè)計(jì)一個(gè)簡(jiǎn)單的文本編輯器,具有如下基本功能: 1)所見(jiàn)即所得的文本輸入; 2)能方便地選中文本、復(fù)制、刪除和插入文本; 3)具有一般編輯器所具有的查找和替換功能; 4)簡(jiǎn)單的排版,如設(shè)置字體和字號(hào)等。 三、課程設(shè)計(jì)說(shuō)明: 1、需求分析:簡(jiǎn)單文本編輯器提供給用戶基本的純文本編輯功能,能夠?qū)⒂脩翡浫氲奈谋敬鎯?chǔ)到本地磁盤中。能夠讀取磁盤中現(xiàn)有的純文本文件,以及方便用戶進(jìn)行需要的編輯功能。文件操作能夠?qū)崿F(xiàn)新建、保存、打開(kāi)文檔等,編輯操作能過(guò)實(shí)現(xiàn)文本的剪貼、復(fù)制、粘貼等,格式操作能過(guò)實(shí)現(xiàn)字體設(shè)置、背景等,幫助操作能夠?qū)崿F(xiàn)關(guān)于主題的查看等功能 2、概要設(shè)計(jì): (一)其基本功能包括: ① 基本的文本操作功能。包括新建,保存,打開(kāi),保存。 ② 基本的編輯功能。包括復(fù)制,剪貼,粘貼。③ 基本的格式功能,字體。④ 簡(jiǎn)單的幫助,關(guān)于主題。 (二)主要的組件包括: ① 基本的Frame框架; ② 菜單; ③ 打開(kāi)文件對(duì)話框; ④ 保存文件對(duì)話框; ⑤ 顏色對(duì)話框; ⑥ 簡(jiǎn)單的幫助框架。 3、程序說(shuō)明: 整個(gè)記事本分成:Jframe程序主體框架,Jmenu菜單欄、JtextArea文本輸入?yún)^(qū)、PopupMenu右鍵菜單、JscrollPane滾動(dòng)條、FonDialog字體類等。 本程序中首先定義一個(gè)Java Yang類繼承JFrame作為最底層容器。要想記事本完成需求分析中相應(yīng)的功能,還必須添加事件監(jiān)聽(tīng)器。事件監(jiān)聽(tīng)器不僅要添加在菜單欄和內(nèi)容輸入?yún)^(qū),還需加在容器中。本程序中ActListener實(shí)現(xiàn)了ActionListener接口,用來(lái)監(jiān)聽(tīng)并處理所有菜單項(xiàng)和內(nèi)容輸入?yún)^(qū)為事件源的事件。另外,還用來(lái)WindowListener來(lái)監(jiān)聽(tīng)處理容器關(guān)閉觸發(fā)的事件,WindowListener繼承了WindowsAdapter類并覆蓋了WindowsClosing方法。 四、程序調(diào)試: 1、調(diào)試分析: (1)關(guān)于打開(kāi)、保存和退出我運(yùn)用了文件對(duì)話框, openFileDialog、saveFileDialog和System.exit()以及文件輸入輸出流來(lái)實(shí)現(xiàn),新建功能我選用了 textArea.setText()方法.(2)對(duì)于剪貼,粘貼,復(fù)制的實(shí)現(xiàn)則用 復(fù)制 String text = textArea.getSelectedText();StringSelection selection= new StringSelection(text);clipboard.setContents(selection,null);粘貼 Transferable contents = clipboard.getContents(this);if(contents==null)return;String text;text=“";try { text =(String)contents.getTransferData(DataFlavor.stringFlavor);} catch(Exception ex){ } textArea.replaceRange(text,textArea.getSelectionStart(),textArea.getSelectionEnd());(3)至于字體功能的實(shí)現(xiàn),則是新建了一個(gè)字體類,在這個(gè)類中設(shè)置了字形,字體以及大小并且有字體樣式可預(yù)覽用戶當(dāng)前的設(shè)置。FlowLayout()設(shè)置布局,setSize()設(shè)置大小add()添加需要用的原件。 添加監(jiān)聽(tīng)器獲取選擇用戶的字號(hào)大小 public void itemStateChanged(ItemEvent event){ size =(new Integer((String)event.getItem()).intValue());setCustomFont(new Font(name, type, size));} 設(shè)置字體 private void setCustomFont(Font customFont){ this.customFont = customFont;area.setFont(customFont);area.revalidate();} 獲取字體 public Font getCustomFont(){ return(this.customFont);} 附錄:源代碼 //記事本主體類 import java.awt.event.*;import java.awt.*;import java.io.*;import java.awt.datatransfer.*;import javax.swing.*; import java.awt.print.PrinterException; public class MiniNote extends JFrame implements ActionListener { JMenuBar menuBar = new JMenuBar();JMenu file = new JMenu(”文件(F)“), //菜單 edit = new JMenu(”編輯(E)“), format = new JMenu(”格式(O)“), view = new JMenu(”查看(V)“), help = new JMenu(”幫助(H)“); JMenuItem[] menuItem ={ //菜單下拉項(xiàng) new JMenuItem(”新建(N)“), new JMenuItem(”打開(kāi)(O)“), new JMenuItem(”保存(S)“), new JMenuItem(”打印(P)“), new JMenuItem(”全選(A)“), new JMenuItem(”復(fù)制(C)“), new JMenuItem(”剪切(T)“), new JMenuItem(”粘貼(P)“), new JMenuItem(”自動(dòng)換行(W)“), new JMenuItem(”字體(F)“), new JMenuItem(”狀態(tài)欄(S)“), new JMenuItem(”幫助主題(H)“), new JMenuItem(”關(guān)于記事本(A)“), new JMenuItem(”頁(yè)面設(shè)置(U)“), new JMenuItem(”退出(X)“), new JMenuItem(”查找(F)“), new JMenuItem(”查找下一個(gè)(N)“), new JMenuItem(”替換(R)“)}; JPopupMenu popupMenu = new JPopupMenu();;//右鍵菜單 JMenuItem [] menuItem1 ={ new JMenuItem(”撤銷(Z)“), new JMenuItem(”剪切(X)“), new JMenuItem(”復(fù)制(C)“), new JMenuItem(”粘貼(V)“), new JMenuItem(”刪除(D)“), new JMenuItem(”全選(A)“), }; private JTextArea textArea;//文本區(qū)域 private JScrollPane js;//滾動(dòng)條 private JPanel jp;private FileDialog openFileDialog;//打開(kāi)保存對(duì)話框 private FileDialog saveFileDialog;private Toolkit toolKit;//獲取默認(rèn)工具包。private Clipboard clipboard;//獲取系統(tǒng)剪切板 private String fileName;//設(shè)置默認(rèn)的文件名 /** * MiniEdit 方法定義 * * 實(shí)現(xiàn)記事本初始化 * **/ public MiniNote(){ fileName = ”無(wú)標(biāo)題“;toolKit = Toolkit.getDefaultToolkit();clipboard = toolKit.getSystemClipboard();textArea =new JTextArea();js = new JScrollPane(textArea);jp = new JPanel();openFileDialog = new FileDialog(this,”打開(kāi)“,FileDialog.LOAD);saveFileDialog = new FileDialog(this,”另存為“,FileDialog.SAVE); js.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);jp.setLayout(new GridLayout(1,1));jp.add(js);textArea.setComponentPopupMenu(popupMenu);//文本區(qū)域添加右鍵 textArea.add(popupMenu);add(jp);setTitle(”迷你記事本“);setFont(new Font(”Times New Roman“,Font.PLAIN,15));setBackground(Color.white);setSize(800,600);setJMenuBar(menuBar);menuBar.add(file);menuBar.add(edit);menuBar.add(format);menuBar.add(view);menuBar.add(help);for(int i=0;i<4;i++){ file.add(menuItem[i]);edit.add(menuItem[i+4]);} for(int i=0;i<3;++i){ edit.add(menuItem[i+15]);} for(int i=0;i<2;++i){ format.add(menuItem[i+8]);help.add(menuItem[i+11]);} view.add(menuItem[10]);file.add(menuItem[14]);for(int i=0;i<6;++i){ popupMenu.add(menuItem1[i]);} //窗口監(jiān)聽(tīng) addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ e.getWindow().dispose();System.exit(0);} });//注冊(cè)各個(gè)菜單項(xiàng)的事件監(jiān)聽(tīng)器 for(int i=0;i Object eventSource = e.getSource();if(eventSource == menuItem[0])//新建動(dòng)作 { textArea.setText(”“);} else if(eventSource == menuItem[1])//打開(kāi)動(dòng)作 { openFileDialog.setVisible(true);fileName = openFileDialog.getDirectory()+openFileDialog.getFile();if(fileName!= null){ openFile(fileName);} } else if(eventSource ==menuItem[2])//保存動(dòng)作 { saveFileDialog.setVisible(true);fileName = saveFileDialog.getDirectory()+saveFileDialog.getFile();if(fileName!=null){ writeFile(fileName);} } else if(eventSource==menuItem[14])//退出動(dòng)作 { System.exit(0);} else if(eventSource == menuItem[4]||eventSource == menuItem1[5])//全選動(dòng)作 { textArea.selectAll();} else if(eventSource == menuItem[5]||eventSource == menuItem1[2])//復(fù)制動(dòng)作 { String text = textArea.getSelectedText();StringSelection selection= new StringSelection(text);clipboard.setContents(selection,null);} else if(eventSource == menuItem[6]||eventSource == menuItem1[1])//剪切動(dòng)作 { String text = textArea.getSelectedText();StringSelection selection = new StringSelection(text);clipboard.setContents(selection,null);textArea.replaceRange(”“, textArea.getSelectionStart(), textArea.getSelectionEnd());} else if(eventSource == menuItem[7]||eventSource == menuItem1[3])//粘貼動(dòng)作 { Transferable contents = clipboard.getContents(this);if(contents==null)return;String text;text=”“;try { text =(String)contents.getTransferData(DataFlavor.stringFlavor);} catch(Exception ex){ } textArea.replaceRange(text, textArea.getSelectionStart(),textArea.getSelectionEnd());} else if(eventSource == menuItem[8])//自動(dòng)換行 { if(textArea.getLineWrap())textArea.setLineWrap(false);else textArea.setLineWrap(true); } else if(eventSource == menuItem[9])//字體 {//實(shí)例化字體類 FontDialog fontdialog = new FontDialog(new JFrame(),”字體“,true);textArea.setFont(fontdialog.showFontDialog());//設(shè)置字體 } else if(eventSource == menuItem[11])//幫助 { try { String filePath = ”C:/WINDOWS/Help/notepad.hlp“;Runtime.getRuntime().exec(”cmd.exe /c “+filePath);} catch(Exception ee){ JOptionPane.showMessageDialog(this,”打開(kāi)系統(tǒng)的記事本幫助文件出錯(cuò)!“,”錯(cuò)誤信息“,JOptionPane.INFORMATION_MESSAGE);} } else if(eventSource == menuItem[12])//關(guān)于記事本 { String help = ”記事本 版本1.0n操作系統(tǒng):WIN 8 n編譯器:eclipsen版權(quán)“ + ”所有: ESTON YANG n最終解釋權(quán)歸本人所有“ + ”“ + ”nBuild By 馮洋“ + ”n課程設(shè)計(jì):JAVA“;JOptionPane.showConfirmDialog(null, help, ”關(guān)于記事本“, JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE); } else if(eventSource == menuItem[15]||eventSource == menuItem[16])//查找下一個(gè) { search(); } else if(eventSource == menuItem[17])//替換 { substitude();} else if(eventSource == menuItem[3])//打印 { try { textArea.print();} catch(PrinterException e1){ e1.printStackTrace();} } } /** * openFile方法 * * 從TXT讀進(jìn)數(shù)據(jù)到記事本 * **/ public void openFile(String fileName){ try { File file = new File(fileName);FileReader readIn = new FileReader(file);int size =(int)file.length();int charsRead = 0;char[] content = new char[size];while(readIn.ready()){ charsRead += readIn.read(content,charsRead,size-charsRead);} readIn.close();textArea.setText(new String(content,0,charsRead));} catch(Exception e){ System.out.println(”Error opening file!“);} } /** * saveFile方法 * * 從記事本寫進(jìn)數(shù)據(jù)到TXT * **/ public void writeFile(String fileName){ try { File file = new File(fileName);FileWriter write = new FileWriter(file);write.write(textArea.getText());write.close();} catch(Exception e){ System.out.println(”Error closing file!“);} } /** * substitude方法 * * 實(shí)現(xiàn)替換功能 * */ public void substitude(){ final JDialog findDialog = new JDialog(this, ”查找與替換“, true);Container con = findDialog.getContentPane();con.setLayout(new FlowLayout(FlowLayout.LEFT));JLabel searchContentLabel = new JLabel(”查找內(nèi)容(N):“);JLabel replaceContentLabel = new JLabel(”替換為(P):“);final JTextField findText = new JTextField(30);final JTextField replaceText = new JTextField(30);final JCheckBox matchcase = new JCheckBox(”區(qū)分大小寫(C)“);ButtonGroup bGroup = new ButtonGroup();final JRadioButton up = new JRadioButton(”向上(U)“);final JRadioButton down = new JRadioButton(”向下(D)“);down.setSelected(true);//默認(rèn)向下搜索 bGroup.add(up);bGroup.add(down); JButton searchNext = new JButton(”查找下一個(gè)(F)“);JButton replace = new JButton(”替換(R)“);final JButton replaceAll = new JButton(”全部替換(A)“); //”替換“按鈕的事件處理 replace.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ if(replaceText.getText().length()== 0 && textArea.getSelectedText()!= null) textArea.replaceSelection(”“);if(replaceText.getText().length()> 0 && textArea.getSelectedText()!= null) textArea.replaceSelection(replaceText.getText());} }); //”替換全部“按鈕的事件處理 replaceAll.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ textArea.setCaretPosition(0);//將光標(biāo)放到編輯區(qū)開(kāi)頭 int a = 0, b = 0, replaceCount = 0;if(findText.getText().length()== 0){ JOptionPane.showMessageDialog(findDialog, ”請(qǐng)?zhí)顚懖檎覂?nèi)容!“, ”提示“,JOptionPane.WARNING_MESSAGE);findText.requestFocus(true);return;} while(a >-1){ int FindStartPos = textArea.getCaretPosition();//獲取光標(biāo)位置 String str1, str2, str3, str4, strA, strB;str1 = textArea.getText();str2 = str1.toLowerCase();str3 = findText.getText();str4 = str3.toLowerCase();if(matchcase.isSelected())//大小寫區(qū)分 { strA = str1;strB = str3;} else { strA = str2;strB = str4;} if(up.isSelected())//向上搜索 { if(textArea.getSelectedText()== null){ a = strA.lastIndexOf(strB, FindStartPos1);} } else //向下搜索 { if(textArea.getSelectedText()== null){ a = strA.indexOf(strB, FindStartPos); } else { a = strA.indexOf(strB, FindStartPos-findText.getText().length()+ 1);} } if(a >-1){ if(up.isSelected()){ textArea.setCaretPosition(a);b = findText.getText().length();textArea.select(a, a + b);} else if(down.isSelected()){ textArea.setCaretPosition(a);b = findText.getText().length();textArea.select(a, a + b);} } else { if(replaceCount == 0){ JOptionPane.showMessageDialog(findDialog,”找不到您查找的內(nèi)容!“, ”記事本“,JOptionPane.INFORMATION_MESSAGE);} else { JOptionPane.showMessageDialog(findDialog, ”成功替換“+ replaceCount + ”個(gè)匹配內(nèi)容!“, ”替換成功“,JOptionPane.INFORMATION_MESSAGE);} } if(replaceText.getText().length()== 0&& textArea.getSelectedText()!= null)//用空字符代替選定內(nèi)容 { textArea.replaceSelection(”“);replaceCount++;} if(replaceText.getText().length()> 0&& textArea.getSelectedText()!= null)//用指定字符代替選定內(nèi)容 { textArea.replaceSelection(replaceText.getText());replaceCount++;} }//end while } }); //”查找下一個(gè)“按鈕事件處理 searchNext.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ int a = 0, b = 0;int FindStartPos = textArea.getCaretPosition();String str1, str2, str3, str4, strA, strB;str1 = textArea.getText();str2 = str1.toLowerCase();str3 = findText.getText();str4 = str3.toLowerCase(); //”區(qū)分大小寫“的CheckBox被選中 if(matchcase.isSelected())//區(qū)分大小寫 { strA = str1;strB = str3;} else //不區(qū)分大小寫 { strA = str2;strB = str4;} if(up.isSelected())//向上搜索 { if(textArea.getSelectedText()== null){ a = strA.lastIndexOf(strB, FindStartPosfindText.getText().length()findText.getText().length()+ 1);} } if(a >-1){ if(up.isSelected()){ textArea.setCaretPosition(a);b = findText.getText().length();textArea.select(a, a + b);} else if(down.isSelected()){ textArea.setCaretPosition(a);b = findText.getText().length();textArea.select(a, a + b);} } else { JOptionPane.showMessageDialog(null, ”找不到您查找的內(nèi)容!“, ”記事本“, JOptionPane.INFORMATION_MESSAGE);} } }); //”取消“按鈕及事件處理 JButton cancel = new JButton(”取消“);cancel.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ findDialog.dispose();} });//創(chuàng)建”查找與替換“對(duì)話框的界面 JPanel bottomPanel = new JPanel();JPanel centerPanel = new JPanel();JPanel topPanel = new JPanel();JPanel direction = new JPanel(); direction.setBorder(BorderFactory.createTitledBorder(”方向“));direction.add(up);direction.add(down); JPanel replacePanel = new JPanel();replacePanel.setLayout(new GridLayout(1, 2));replacePanel.add(searchNext);replacePanel.add(replace);replacePanel.add(replaceAll);replacePanel.add(cancel); topPanel.add(searchContentLabel);topPanel.add(findText); centerPanel.add(replaceContentLabel);centerPanel.add(replaceText);centerPanel.add(replacePanel); bottomPanel.add(matchcase);bottomPanel.add(direction); con.add(replacePanel);con.add(topPanel);con.add(centerPanel);con.add(bottomPanel); //設(shè)置”查找與替換“對(duì)話框的大小、可更改大小(否)、位置和可見(jiàn)性 findDialog.setSize(550, 240);findDialog.setResizable(true);findDialog.setLocation(230, 280);findDialog.setVisible(true);}//方法mySearch()結(jié)束 /** * search方法 * * 實(shí)現(xiàn)查找功能 * */ public void search(){ final JDialog findDialog = new JDialog(this, ”查找下一個(gè)“, true);Container con = findDialog.getContentPane();con.setLayout(new FlowLayout(FlowLayout.LEFT));JLabel searchContentLabel = new JLabel(” 查找內(nèi)容(N):“); final JTextField findText = new JTextField(17);final JCheckBox matchcase = new JCheckBox(”區(qū)分大小寫(C)“);ButtonGroup bGroup = new ButtonGroup();final JRadioButton up = new JRadioButton(”向上(U)“);final JRadioButton down = new JRadioButton(”向下(D)“);down.setSelected(true);//默認(rèn)向下搜索 bGroup.add(up);bGroup.add(down); JButton searchNext = new JButton(”查找下一個(gè)(F)“); //”查找下一個(gè)“按鈕事件處理 searchNext.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ int a = 0, b = 0;int FindStartPos = textArea.getCaretPosition();String str1, str2, str3, str4, strA, strB;str1 = textArea.getText();str2 = str1.toLowerCase();str3 = findText.getText();str4 = str3.toLowerCase(); //”區(qū)分大小寫“的CheckBox被選中 if(matchcase.isSelected())//不區(qū)分大小寫 { strA = str1;strB = str3;} else //區(qū)分大小寫 { strA = str2;strB = str4;} if(up.isSelected())//向上搜索 { if(textArea.getSelectedText()== null){ a = strA.lastIndexOf(strB, FindStartPosfindText.getText().length()findText.getText().length()+ 1);} } if(a >-1){ if(up.isSelected()){ textArea.setCaretPosition(a);b = findText.getText().length();textArea.select(a, a + b);} else if(down.isSelected()){ textArea.setCaretPosition(a);b = findText.getText().length();textArea.select(a, a + b);} } else { JOptionPane.showMessageDialog(null, ”找不到您查找的內(nèi)容!“, ”記事本“, JOptionPane.INFORMATION_MESSAGE);} } }); //”取消“按鈕及事件處理 JButton cancel = new JButton(” 取消 “);cancel.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ findDialog.dispose();} });//創(chuàng)建”替換“對(duì)話框的界面 JPanel bottomPanel = new JPanel();JPanel centerPanel = new JPanel();JPanel topPanel = new JPanel();JPanel direction = new JPanel();direction.setBorder(BorderFactory.createTitledBorder(”方向“));direction.add(up);direction.add(down);topPanel.add(searchContentLabel);topPanel.add(findText);topPanel.add(searchNext);bottomPanel.add(matchcase);bottomPanel.add(direction);bottomPanel.add(cancel);con.add(topPanel);con.add(centerPanel);con.add(bottomPanel);//設(shè)置”替換“對(duì)話框的大小、可更改大小(否)、位置和可見(jiàn)性 findDialog.setSize(425, 200);findDialog.setResizable(true);findDialog.setLocation(230, 280);findDialog.setVisible(true);} /** * 主函數(shù) * * * **/ public static void main(String[] args){ MiniNote note = new MiniNote();note.setVisible(true);} } //字體類 import java.awt.Font;import java.awt.GraphicsEnvironment;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.ItemEvent;import java.awt.event.ItemListener;import java.awt.*;import javax.swing.*;import java.awt.event.*;import javax.swing.border.*;import java.util.*;public class FontDialog { private Dialog fontdialog;private JButton okButton, cancelButton;private int width = 480;private int height = 250;private String name = ”Serif“;private int type = 0;private int size = 12;private Font customFont = new Font(”宋體“, Font.ITALIC, 12);private boolean okpressed = false;private boolean cancelpressed = false;private JLabel lbl1 = new JLabel(”字體:“);private JLabel lbl2 = new JLabel(”字形:“);private JLabel lbl3 = new JLabel(”大小:“);private JTextArea area;String[] zx = { ”常規(guī)“, ”加粗“, ”斜體“, ”基線“ };String[] dx = {”8“ , ”9“ , ”10“, ”12“, ”14“, ”15“, ”16“, ”18“,”20“, ”21“, ”22“, ”24“, ”26“, ”28“, ”30“, ”36“,”48“, ”54“,”72“ , ”89“};JLabel lbl = new JLabel(”字體樣式Style“);private JComboBox cb1, cb3 = new JComboBox(dx), cb2 = new JComboBox(zx);private String[] zt; public FontDialog(Frame owner, String title, boolean modal){ init();fontdialog = new Dialog(owner, title, modal);fontdialog.setLocation(owner.getLocation());fontdialog.setLayout(new FlowLayout());fontdialog.setSize(getWidth(), getHeight());fontdialog.add(lbl1);fontdialog.add(cb1);fontdialog.add(lbl2);fontdialog.add(cb2);fontdialog.add(lbl3);fontdialog.add(cb3);fontdialog.add(okButton);fontdialog.add(cancelButton);fontdialog.add(area);fontdialog.setResizable(false);fontdialog.setAlwaysOnTop(true);cancelButton.addActionListener(new fontListener());okButton.addActionListener(new fontListener());fontdialog.addWindowListener(new fontListener()); cb1.addItemListener(new ItemListener(){ // public void itemStateChanged(ItemEvent event){ //獲取選擇用戶的字體類型 name =(String)event.getItem();setCustomFont(new Font(name, type, size));} }); cb2.addItemListener(new ItemListener(){ // public void itemStateChanged(ItemEvent event){ //獲取選擇用戶的字形 String s =(String)event.getItem();if(s.equals(”常規(guī)“)){ type = Font.PLAIN;setCustomFont(new Font(name, type, size));} else if(s.equals(”加粗“)){ type = Font.BOLD; 字體動(dòng)作 添加監(jiān)聽(tīng)器字形動(dòng)作 添加監(jiān)聽(tīng)器 setCustomFont(new Font(name, type, size));} else if(s.equals(”斜體“)){ type = Font.ITALIC;setCustomFont(new Font(name, type, size));} else { type = Font.CENTER_BASELINE;setCustomFont(new Font(name, type, size));} } }); cb3.addItemListener(new ItemListener(){ //大小動(dòng)作 public void itemStateChanged(ItemEvent event){ //添加監(jiān)聽(tīng)器獲取選擇用戶的字號(hào)大小 size =(new Integer((String)event.getItem()).intValue());setCustomFont(new Font(name, type, size));} }); } public Font showFontDialog(){ fontdialog.setVisible(true);if(okpressed){ return getCustomFont();} else { return customFont;} } private void init(){ //初始化 okButton = new JButton(”確定“);cancelButton = new JButton(”取消“);GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();zt = ge.getAvailableFontFamilyNames();cb1 = new JComboBox(zt);cb1.setMaximumRowCount(6);area = new JTextArea(6, 30);cb3 = new JComboBox(dx);cb3.setMaximumRowCount(6);okButton.setFocusable(true);area.setEditable(false);area.setText(new Date().toString());area.setBorder(new TitledBorder(”字體樣式"));} public void setWidth(int width){ this.width = width;} public void setHeight(int height){ this.height = height;} private int getWidth(){ return(this.width);} private int getHeight(){ return(this.height);} private void setCustomFont(Font customFont)//{ this.customFont = customFont;area.setFont(customFont);area.revalidate();} public String toString(){ return FontDialog.class.toString();} 設(shè)置字體 public Font getCustomFont()//獲取字體 { return(this.customFont);} private class fontListener extends WindowAdapter implements ActionListener //監(jiān)聽(tīng)事件類 { public void windowClosing(WindowEvent e){ fontdialog.dispose();} public void actionPerformed(ActionEvent e){ if(e.getSource()== cancelButton){ fontdialog.dispose();cancelpressed = true;} else if(e.getSource()== okButton){ okpressed = true;setCustomFont(new Font(name, type, size));fontdialog.dispose();} } } } 學(xué) 生 實(shí) 驗(yàn) 報(bào) 告 冊(cè) 2013——2014學(xué)年第1學(xué)期 項(xiàng)目名稱: Java Web 學(xué)院: 信電 班級(jí): 11計(jì)算機(jī)科學(xué)與技術(shù)一班 學(xué)號(hào): 155140007 姓名: 伍振東 指導(dǎo)教師: 李竹林 完成時(shí)間: 2013/9/28 一、實(shí)驗(yàn)要求 1.用HTML語(yǔ)言編寫如下樣式的網(wǎng)頁(yè) 2.可以用Dreamweaver,推薦手動(dòng)編寫HTML帶代碼 3.圖片從清華大學(xué)的網(wǎng)站自己取得。http://www.tmdps.cn“> 文檔為doc格式 實(shí)驗(yàn)報(bào)告一、 實(shí)驗(yàn)?zāi)康?鞏固復(fù)習(xí)課上所講內(nèi)容,進(jìn)一步熟悉面向?qū)ο缶幊獭?二、 實(shí)驗(yàn)內(nèi)容
編寫程序求點(diǎn)到原點(diǎn)的距離三、 程序清單及運(yùn)行結(jié)果
abstractclass Distance
{
abstra...... Java聊天室實(shí)驗(yàn)報(bào)告 班 級(jí):學(xué) 號(hào):姓 名: ****** ******** *** 目錄: 一、實(shí)驗(yàn)?zāi)康?......................................................3 二、所需技術(shù) ...................... 課程名稱: 學(xué)生學(xué)號(hào):學(xué)生姓名: 所屬院部:指導(dǎo)教師: 學(xué)生實(shí)驗(yàn)報(bào)告 (理工類) JAVA程序設(shè)計(jì)專業(yè)班級(jí): 20 15——20 16學(xué)年第2學(xué)期金陵科技學(xué)院教務(wù)處制 實(shí)驗(yàn)項(xiàng)目名稱:JAVA編程基礎(chǔ)實(shí)驗(yàn)...... 實(shí)驗(yàn)項(xiàng)目名稱:實(shí)驗(yàn)4 基于Socket的網(wǎng)絡(luò)編程 【實(shí)驗(yàn)?zāi)康摹?1、 理解Java的基于套接字的網(wǎng)絡(luò)通信原理。 2、 理解客戶端和服務(wù)器的概念。 3、 學(xué)習(xí)使用套接字實(shí)現(xiàn)客戶端和服務(wù)...... 廣東工業(yè)大學(xué)實(shí)驗(yàn)報(bào)告 學(xué)院 專業(yè) 班學(xué)號(hào)姓名 成績(jī)?cè)u(píng)定_______ 實(shí)驗(yàn)5 題目繼承與接口實(shí)驗(yàn) 課程名稱Java與面向?qū)ο蟪绦蛟O(shè)計(jì) 一.實(shí)驗(yàn)?zāi)康?(1)學(xué)習(xí)類的繼承、子類在對(duì)象中調(diào)用...... Homework3實(shí)驗(yàn)報(bào)告 一、實(shí)驗(yàn)?zāi)康呐c要求 1、掌握J(rèn)ava中類和接口的基本知識(shí); 2、繼承的基本知識(shí); 3、集合的基本操作 二、實(shí)驗(yàn)內(nèi)容 1.PIMCollection 類 創(chuàng)建一個(gè)可以管理PIMEnti...... 中 南 民 族 大 學(xué) 實(shí) 驗(yàn) 報(bào) 告 2010—2011第二學(xué)期 課程名稱: Java程序設(shè)計(jì)院系:計(jì)算機(jī)科學(xué)學(xué)院年級(jí): 2009 專業(yè):計(jì)算機(jī)科學(xué)與技術(shù)大班 學(xué)號(hào): 09061060 姓 名: 李亞巧 指...... 《面向?qū)ο蟪绦蛟O(shè)計(jì)》實(shí)驗(yàn)報(bào)告與習(xí)題冊(cè) 2013 / 2014 學(xué)年 第1學(xué)期 系 別 計(jì)算機(jī)科學(xué)與技術(shù)系 專 業(yè) 班 級(jí) 姓 名計(jì)算機(jī)軟件 軟件一班 羅曉薇朱強(qiáng) 指導(dǎo)教師 目 錄 實(shí)驗(yàn)......第四篇:JAVA實(shí)驗(yàn)報(bào)告
第五篇:java實(shí)驗(yàn)報(bào)告
聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。 JAVA實(shí)驗(yàn)報(bào)告
JAVA聊天室實(shí)驗(yàn)報(bào)告
Java實(shí)驗(yàn)報(bào)告電子稿(匯編)
java實(shí)驗(yàn)報(bào)告4
java實(shí)驗(yàn)報(bào)告5范文合集
Java上機(jī)實(shí)驗(yàn)報(bào)告
java實(shí)驗(yàn)報(bào)告(精選五篇)
JAVA實(shí)驗(yàn)報(bào)告冊(cè)范文合集