JAVA課程設(shè)計(jì)報(bào)告_第1頁(yè)
JAVA課程設(shè)計(jì)報(bào)告_第2頁(yè)
JAVA課程設(shè)計(jì)報(bào)告_第3頁(yè)
JAVA課程設(shè)計(jì)報(bào)告_第4頁(yè)
JAVA課程設(shè)計(jì)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩42頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

《JAVA面向?qū)ο蟪绦蛟O(shè)計(jì)》課程設(shè)計(jì)報(bào)告(2011-2012學(xué)年第2學(xué)期)系另1」:廈門(mén)理工學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系專(zhuān)業(yè)名稱(chēng):10級(jí)網(wǎng)絡(luò)工程1班課程設(shè)計(jì)科目:學(xué)生姓名:《JAVA面向?qū)ο蟪绦蛟O(shè)計(jì)》課程設(shè)計(jì)學(xué)號(hào):指導(dǎo)教師:成績(jī):完成時(shí)間:2012年7月6日題目JAVA程序課程設(shè)計(jì)任務(wù)一手機(jī)號(hào)碼檢測(cè)器(一)設(shè)計(jì)任務(wù)與目標(biāo)任務(wù):手機(jī)號(hào)碼是由11位數(shù)字構(gòu)成,用戶(hù)在輸入手機(jī)號(hào)碼時(shí)經(jīng)常混亂輸入若干位數(shù)字或字母,要求你編寫(xiě)一個(gè)程序檢測(cè)用戶(hù)所輸入的手機(jī)號(hào)碼是否符合規(guī)則。要求目標(biāo):檢測(cè)所輸入的手機(jī)號(hào)碼是否是11位檢測(cè)每一位是否都為數(shù)字。分析論證:本題目要求對(duì)用戶(hù)輸入的手機(jī)號(hào)碼進(jìn)行檢測(cè),判斷輸入的正確性。曾經(jīng)有做過(guò)類(lèi)似字符比較的題目,可以借鑒。將字符的比較運(yùn)用進(jìn)來(lái),把用戶(hù)的輸入字符和正確的進(jìn)行比較。但是必須滿(mǎn)足多次輸入和錯(cuò)誤提醒。同時(shí)還可以添加提示錯(cuò)誤的位置和錯(cuò)誤字符是什么。程序正確運(yùn)行時(shí)可以滿(mǎn)足以上功能,基本可以達(dá)到題目要求了。(二)方案設(shè)計(jì)與論證為了滿(mǎn)足多次輸入的要求,將提示和輸入的操作放在一個(gè)循環(huán)體中,我采用了do_whiele()循環(huán)。每次輸入結(jié)束后提示是否繼續(xù)輸入。在循環(huán)中逐步對(duì)輸入的號(hào)碼位數(shù)和字符類(lèi)型進(jìn)行檢測(cè)。位數(shù)可以分超出和不足,并均給出錯(cuò)誤提示。如果位數(shù)滿(mǎn)足要求后對(duì)手機(jī)號(hào)碼類(lèi)型進(jìn)行檢測(cè)。一般手機(jī)號(hào)在0~9之間,所以不滿(mǎn)足的字符將報(bào)錯(cuò)。通過(guò)將輸入的整個(gè)字符串調(diào)用charAt(inti)方法對(duì)字符串逐位比較。本程序的特點(diǎn)在于可以滿(mǎn)足了多次輸入和錯(cuò)誤字符的顯示(內(nèi)容和位置)。在程序的調(diào)試過(guò)程中,有過(guò)多次輸入正確的號(hào)碼也會(huì)報(bào)錯(cuò)(還會(huì)報(bào)錯(cuò)0位錯(cuò)誤),這是因?yàn)橛涗涘e(cuò)誤位子的變量放在錯(cuò)誤條件下并且未在循環(huán)體中初始化為0。最終解決了此問(wèn)題。三)程序框圖或流程圖,程序清單與調(diào)用關(guān)系Phone+phone:String+str:String+y:char+x:int+id:iiit+過(guò);iiit+main(Strin呂[]args):void(四)程序運(yùn)行的測(cè)試與分析實(shí)現(xiàn)了多次輸入和錯(cuò)誤提示,可以判斷輸入的號(hào)碼的錯(cuò)誤位置及字符,錯(cuò)誤類(lèi)型,滿(mǎn)足了設(shè)計(jì)構(gòu)思要求。最終結(jié)果如下圖:實(shí)驗(yàn)結(jié)果截圖:FrobleasJavadocsCOR5O16+ernnTLateA.>Phune1.1.1[JavaApplicat1諸輸入電話(huà)號(hào)碼:13B5576E53D輸入完成!繼續(xù)輸人嗎(Y/K):請(qǐng)輸入電話(huà)號(hào)碼:123e4567E91輸入錯(cuò)誤!第勻位輸入錯(cuò)誤字符已繼縝輸人嗎(y/R):請(qǐng)輸入電話(huà)號(hào)碼;123輸入錯(cuò)誤,位數(shù)不足!繼頷輸人嗎(Y/N).:請(qǐng)輸入電話(huà)號(hào)碼:1233455£77=££3輸入錯(cuò)誤,位數(shù)過(guò)第!繼續(xù)輸人嗎(Y/N}:魏出輸人?。ㄎ澹┙Y(jié)論心得實(shí)驗(yàn)過(guò)程中對(duì)于判斷條件的選擇出現(xiàn)了問(wèn)題,開(kāi)始時(shí)覺(jué)得要對(duì)輸入的字符一個(gè)一個(gè)的比較,這樣增加了難度也不方便實(shí)現(xiàn)。后面改成了將用戶(hù)輸入完成后的全部字符串當(dāng)做整體后再來(lái)逐位比較。如果能做成手機(jī)外形的面板并能一個(gè)一個(gè)的判斷,只要輸入錯(cuò)誤字符馬上提示,那功能將更加完善。任務(wù)二撲克牌(一)設(shè)計(jì)任務(wù)與目標(biāo)任務(wù):設(shè)計(jì)一個(gè)Card類(lèi)代表?yè)淇伺疲繌埮贫加凶约旱幕ㄉ痛笮?。?chuàng)建一個(gè)DeskOfCards類(lèi)保存54張撲克牌,設(shè)計(jì)洗牌、發(fā)一張牌、報(bào)告剩余牌數(shù)的方法。創(chuàng)建main方法測(cè)試你的程序。要求目標(biāo):實(shí)現(xiàn)洗牌和發(fā)牌。顯示當(dāng)前片面和剩余牌數(shù)。分析論證:本題目需要用到數(shù)組來(lái)存儲(chǔ)一副紙牌,并需要用到隨機(jī)數(shù)來(lái)代替隨機(jī)發(fā)牌,曾經(jīng)做過(guò)類(lèi)似工作?,F(xiàn)在需要將產(chǎn)生的隨機(jī)數(shù)和字牌的大小和花色聯(lián)系起來(lái),可以通過(guò)數(shù)組來(lái)實(shí)現(xiàn)。同時(shí)還要達(dá)到可以循環(huán)發(fā)牌,并有發(fā)牌信息顯示。(二)方案設(shè)計(jì)與論證根據(jù)題目要求,我準(zhǔn)備在類(lèi)Card中用數(shù)組存儲(chǔ)一副牌(52張),考慮到撲克牌有花色和大小并都是固定的,所以用了兩個(gè)字符串?dāng)?shù)組分別初始化花色和大小,再利用下標(biāo)操作把花色和大小組合在一起,存放另在一個(gè)數(shù)組里(最終的紙牌組)。這樣就有了一副完整紙牌了。再創(chuàng)建另一個(gè)類(lèi)DeskOfCard創(chuàng)建兩個(gè)Card對(duì)象,通過(guò)在循環(huán)里的條件判斷對(duì)對(duì)象進(jìn)行操作:洗牌時(shí)就將紙牌數(shù)組和剩余牌數(shù)重新初始化(利用多余的那個(gè)對(duì)象)。發(fā)牌時(shí)用到隨機(jī)數(shù)產(chǎn)生器,產(chǎn)生從0到51的整數(shù)和數(shù)組小標(biāo)對(duì)應(yīng),每個(gè)元素代表一張牌。測(cè)試過(guò)程中出現(xiàn)了無(wú)法顯示牌面的問(wèn)題,通過(guò)對(duì)象引用找不到具體的紙牌,后來(lái)在Card類(lèi)中添加了getCard(inti)方法返回一張牌,實(shí)現(xiàn)了發(fā)牌和剩余牌數(shù),并可以多次發(fā)牌。(三)程序框圖或流程圖,程序清單與調(diào)用關(guān)系Card-card:String[]-bao:String[.-a:int+cardl:String[.■PuardZ:書(shū)ttifLgl" 十getCard(inti):StringDeskOfCard-count:int+string:String+string2:String+ro:CardO十n:CardO十main(StriLng:args):void.(四)程序運(yùn)行的測(cè)試與分析從測(cè)試過(guò)程中達(dá)到了分析時(shí)的目的要求,實(shí)現(xiàn)了洗牌和發(fā)牌(顯示牌面和剩余數(shù)量)。最終結(jié)果如下圖:實(shí)驗(yàn)結(jié)果截圖:Problems@Javadoc山壬□w匚1mr包ti.c-tl旦ConEoleEMDe三kO£C:=Lt~d[Jav=akpplicatioil]C:\Progi-:=unFilesIJ~:=lv:=l\jre輸入您要的操作<kipaiorfapal):fapai抽取的牌用:紅桃匚剩余撲克牌數(shù)為:51TiJarit.r.oagaini:T/TJ:i:Y輸入您要的操作<xipai□rfapai):fapai抽取的牌為:紅桃J「剩余撲克牌數(shù)為:50TiJarit.r.oagaini:Y/M:i:¥輸入您要的操作(xipai□匸fapal):xipai剩余牌數(shù):52Warittoagaini:Y/!J:i:五)結(jié)論心得實(shí)驗(yàn)過(guò)程中,開(kāi)始沒(méi)有將紙牌的大小和花色分開(kāi)來(lái)定義,導(dǎo)致需要初始化52張牌,后倆采用了循環(huán)體將花色和大小進(jìn)行組合達(dá)到了目的的同時(shí)又簡(jiǎn)化了代碼,提高了可讀性。本來(lái)希望最后的結(jié)果可以通過(guò)圖片的方式顯示紙牌,但紙牌的原圖片兩太大,實(shí)現(xiàn)過(guò)于繁瑣,最終采用了簡(jiǎn)單的文字表示。希望今后有機(jī)會(huì)近一步完善,達(dá)到預(yù)期效果。任務(wù)三計(jì)算器(一)設(shè)計(jì)任務(wù)與目標(biāo)任務(wù):參考第六章的實(shí)驗(yàn)題TelephoneKeypad界面設(shè)計(jì)一個(gè)計(jì)算器。要求目標(biāo):實(shí)現(xiàn)輸入數(shù)字和運(yùn)算字符并輸出結(jié)果結(jié)果由對(duì)應(yīng)的運(yùn)算得出,實(shí)現(xiàn)基本運(yùn)算能力分析論證:通過(guò)設(shè)計(jì)一個(gè)界面展示一個(gè)計(jì)算器的功能,包括輸入數(shù)字和符號(hào)并進(jìn)行準(zhǔn)確的運(yùn)算得出理想的結(jié)果。在第六章中的TelephoneKeypad實(shí)驗(yàn)中做過(guò)類(lèi)似的界面只是實(shí)現(xiàn)的功能不一樣,可在這個(gè)基礎(chǔ)上加入運(yùn)算功能即可實(shí)現(xiàn)要求。(二)方案設(shè)計(jì)與論證根據(jù)題目的具體要求,我設(shè)想通過(guò)之前的TelephoneKeypad實(shí)驗(yàn)進(jìn)行改進(jìn),除了需要加入一些按鈕外,還要對(duì)具體的按鈕功能進(jìn)行設(shè)計(jì)。在Calculator類(lèi)中進(jìn)行了面板的設(shè)計(jì),之間加入了需要的各個(gè)控件,并且加了ActionListener()類(lèi)來(lái)做事件的觸發(fā)類(lèi)。此類(lèi)中通過(guò)event.getSource()方法與相應(yīng)的按鍵進(jìn)行對(duì)應(yīng),以此為判斷條件來(lái)決定做什么操作。其中包括了被運(yùn)算數(shù)、運(yùn)算類(lèi)型、運(yùn)算數(shù)還有等號(hào)的事件。為了可以輸出信息還要加入JTextField控件來(lái)顯示信息,信息通過(guò)一個(gè)字

符串變量來(lái)存取。兩個(gè)JTextField控件分上下,上面顯示最后的運(yùn)算式(包括每次輸入時(shí)均要逐步顯示輸入內(nèi)容),下面顯示最后的結(jié)果并以一定的格式輸出。最后還要滿(mǎn)足多次輸入,因此設(shè)計(jì)了清楚按鍵,每次清楚后可以進(jìn)行下一次的運(yùn)在程序的調(diào)試的過(guò)程中出現(xiàn)了,輸出內(nèi)容的錯(cuò)誤。不能逐一的輸出輸入的內(nèi)容,最后也沒(méi)有在上面顯示框中顯示完整的運(yùn)算式。通過(guò)檢查,發(fā)現(xiàn)是字符串的添加位置和沒(méi)有將內(nèi)容在原有基礎(chǔ)上增加,而是每次更新字符串。最終通過(guò)修改解決了問(wèn)題。其間,還出現(xiàn)了按鍵功能的一些的錯(cuò)亂,都是小問(wèn)題,多次調(diào)試后基本達(dá)到了一個(gè)簡(jiǎn)單運(yùn)算器的功能。(三)程序框圖或流程圖,程序清單與調(diào)用關(guān)系ButtonListener+actionPerformed(ActiorLE^entevent):voidButtonListener+actionPerformed(ActiorLE^entevent):void」PanelCalculator—df:DeciBa.1FoTBatjiee^ioiJTextField.jiee^io2iJTex-tFeildbiLtton:JButton[]—panel1zJPanel—panel1:JPane2—panel1iJPaneS—res~ale二doirb1e—ikiLB1:doubleikiLB2:double7-^-Huasiiaii:int—konE:int—s:SirinE—si:StTint—:StrinE+calculator:Calculator+frame:JFrame+mainCStrin呂[]args)(四)程序運(yùn)行的測(cè)試與分析測(cè)試過(guò)程中進(jìn)行了多次的運(yùn)算,包括加、減、乘、除。每次都可以逐一輸出輸入的內(nèi)容并能得出正確的結(jié)果并輸出。清除后可以再次運(yùn)算,基本達(dá)到了預(yù)期要求。最終結(jié)果如下圖:實(shí)驗(yàn)結(jié)果截圖:(五)結(jié)論心得本程序因?yàn)樯婕暗目丶芏?,所以排版和引用都要十分注意,不然容易引用錯(cuò)誤,導(dǎo)致引用不到你所點(diǎn)擊的那個(gè)按鍵等。還要注意在監(jiān)聽(tīng)器里的條件判斷時(shí)相應(yīng)的操作要考慮清楚。為了界面美觀(guān)和人性化,要將按鍵的順序按一定的順序排列不能隨機(jī)添加。本程序不足的地方在于運(yùn)算類(lèi)型只有加減乘除,并且不能再完成一次運(yùn)算后立即進(jìn)行下一次運(yùn)算,必須清楚后重新開(kāi)始。這些不足還有待改善。相信如果改進(jìn)過(guò)后,這個(gè)計(jì)算器會(huì)達(dá)到更加完善的功能和實(shí)用性。任務(wù)四憤怒的小鳥(niǎo)(一)設(shè)計(jì)任務(wù)與目標(biāo)任務(wù):憤怒的小鳥(niǎo)是一款“億人迷”的游戲,據(jù)說(shuō)大家喜歡它的原因在于大家喜歡拋物線(xiàn)勝過(guò)直線(xiàn)。例題8.15-8.16是笑臉圖片直線(xiàn)運(yùn)動(dòng)的例子,請(qǐng)修改它在X軸和Y軸的運(yùn)動(dòng)軌跡,將它改成拋物線(xiàn)運(yùn)動(dòng)。要求目標(biāo):實(shí)現(xiàn)界面中小鳥(niǎo)打擊目標(biāo)有準(zhǔn)確的拋物線(xiàn)可以多次并操作簡(jiǎn)單分析論證:在例題笑臉的運(yùn)動(dòng)中實(shí)現(xiàn)了圖片按照一定的像素進(jìn)行平移,到達(dá)一個(gè)目標(biāo)地。所以可以以此為基礎(chǔ)進(jìn)行改進(jìn)。對(duì)運(yùn)動(dòng)中的函數(shù)進(jìn)行改進(jìn),將直線(xiàn)運(yùn)動(dòng)改成拋物線(xiàn)。并有效開(kāi)始時(shí)出現(xiàn)提示。用戶(hù)可以對(duì)圖片的出發(fā)位置進(jìn)行控制。(二)方案設(shè)計(jì)與論證為了達(dá)到預(yù)期的目標(biāo),我將創(chuàng)建了一個(gè)BirdPanel類(lèi)來(lái)存放各種組件,主要是存入多張圖片和一個(gè)十分重要的也是這個(gè)程序的核心一一定時(shí)器Timer。這個(gè)游戲最終可以看到的效果是圖片的移動(dòng),所以需要通過(guò)控制圖片在面板中的位置來(lái)實(shí)現(xiàn)移動(dòng)。所以定時(shí)器就十分重要了,有了定時(shí)器就可以在間隔一段時(shí)間中多次觸發(fā)事件,看到的也就是圖片在不停地移動(dòng),最終到達(dá)目標(biāo)。在編寫(xiě)程序過(guò)程中,發(fā)現(xiàn)需要實(shí)現(xiàn)客戶(hù)對(duì)圖片初始位置的控制比較困難。所以為了節(jié)省時(shí)間就將圖片的觸發(fā)地限制在了固定位置。每次都將從這一位置觸發(fā),并進(jìn)行拋物運(yùn)動(dòng)后,打中目標(biāo)。這雖然使程序簡(jiǎn)單了,可在一定程度上犧牲了部分的功能。今后還有需要改進(jìn)。(三)程序框圖或流程圖,程序清單與調(diào)用關(guān)系BirdPanel一■ft'IHT}{:iTLt-}{EIG}{T:intBirdPanel一■ft'IHT}{:iTLt-}{EIG}{T:int一HELAY:iTLt-IMAGJ:mt一image:Inagelcon一 Im:ig^l<=QXL一imageS:ImagelcuTL一timEzr:一:int一y:int一Hl□耳W一TimeriiLt十paintCunpuroTierrtfGraphicspa_ge):woid □AListenex> +actiorPerformed(ActinnE^errt已vent):void(四)程序運(yùn)行的測(cè)試與分析實(shí)驗(yàn)測(cè)試過(guò)程完成了游戲開(kāi)始提示和小鳥(niǎo)圖片的拋物運(yùn)動(dòng),目標(biāo)被打擊后會(huì)場(chǎng)上變化。只是不能多次操作和隨意拖拽小鳥(niǎo)的起始位置,這是一段的局限。最終結(jié)果如下圖:實(shí)驗(yàn)結(jié)果截圖:

五)結(jié)論心得本題目中涉及的核心內(nèi)容是定時(shí)器和圖片坐標(biāo)改變?cè)冢ㄟ\(yùn)動(dòng))的配合使用。通過(guò)對(duì)坐標(biāo)的改變,并結(jié)合定時(shí)器功能達(dá)到動(dòng)畫(huà)效果。本程序的不足在于未能達(dá)到預(yù)期的人性化,沒(méi)法隨意開(kāi)始游戲,和市場(chǎng)上的憤怒的小鳥(niǎo)存在巨大差距,這也是這個(gè)程序不成熟的地方,但是總算達(dá)到了能將圖片以?huà)佄锞€(xiàn)運(yùn)動(dòng)到目的地?;旧贤瓿闪四康囊蟆=窈筮€需繼續(xù)改進(jìn)完善。任務(wù)五石頭剪刀布(一)設(shè)計(jì)任務(wù)與目標(biāo)任務(wù):參考第五章的實(shí)驗(yàn)題Rock,Paper,Scissors設(shè)計(jì)并實(shí)現(xiàn)一個(gè)和計(jì)算機(jī)交互的剪刀、石頭、布游戲。人和計(jì)算機(jī)各選擇一項(xiàng),然后決出勝負(fù)。程序必須隨機(jī)選取一項(xiàng)但不表示出來(lái),然后提示用戶(hù)選擇。當(dāng)用戶(hù)選擇后,程序同時(shí)顯示出計(jì)算機(jī)和用戶(hù)的選擇并且輸出游戲結(jié)果。游戲一直進(jìn)行直到用戶(hù)退出為止,并且輸出雙方輸贏次數(shù)和總局?jǐn)?shù)。要求目標(biāo):能夠直觀(guān)顯示用戶(hù)和電腦的出拳可以多次進(jìn)行游戲,知道用戶(hù)確認(rèn)退出每次都給出目前勝負(fù)情況游戲具有隨機(jī)性和準(zhǔn)確性分析論證:由于第五章中已經(jīng)編譯過(guò)類(lèi)似的程序,其是通過(guò)隨機(jī)數(shù)模擬電腦出拳,在通過(guò)用戶(hù)輸入模擬自己出拳,最終來(lái)比較電腦和用戶(hù)的勝負(fù)。只要將原程序改成界面形式并加入具體相應(yīng)的圖片和用戶(hù)勝負(fù)情況的提示,其他的游戲比較與原來(lái)一致就行。(二)方案設(shè)計(jì)與論證根據(jù)題目要求需要建立一個(gè)Panel'類(lèi)Fight用于存儲(chǔ)圖片和組件。在類(lèi)

中申請(qǐng)了3個(gè)panel,第一個(gè)用于存放圖片,第二個(gè)用于存放按鍵,最后將這兩個(gè)放進(jìn)panel3中。在panell中的圖片需要根據(jù)panel2中按鍵觸發(fā)的事件進(jìn)行相應(yīng)的改變。電腦和用戶(hù)都有石頭、剪刀和布三張圖片進(jìn)行變化。每次在用戶(hù)點(diǎn)擊按鍵石頭或剪刀或布后電腦會(huì)根據(jù)隨機(jī)數(shù)產(chǎn)生器發(fā)出的隨機(jī)數(shù)進(jìn)行相應(yīng)的“出拳”,然后和用戶(hù)選擇的“出拳”進(jìn)行比較輸贏。當(dāng)用戶(hù)選擇后,兩者的出拳圖會(huì)顯示在panel1中,并出現(xiàn)信息說(shuō)明當(dāng)前游戲總次數(shù)和用戶(hù)和電腦各自的勝出次數(shù)。用戶(hù)可以再一次游戲介紹后繼續(xù)點(diǎn)擊按鍵進(jìn)行多次游戲,每次重復(fù)上面功能。因?yàn)楸境绦蚴窃谠谢A(chǔ)上進(jìn)行的改進(jìn),前面又做過(guò)小鳥(niǎo)的程序,所以問(wèn)題不是很大,最不應(yīng)該的是在圖片引用過(guò)程中因?yàn)閳D片命名格式的原因耽誤了大量時(shí)間,導(dǎo)致實(shí)驗(yàn)用時(shí)較長(zhǎng)。最終完成的游戲還是比較完善的,幾乎達(dá)到了預(yù)期的所有要求。(三)程序框圖或流程圖,程序清單與調(diào)用關(guān)系Fightpanel1:JPauelpanel2iJPauelpanel=3=JPauelcoapML-ter:Jl>ersonzJLabelbi:Fightpanel1:JPauelpanel2iJPauelpanel=3=JPauelcoapML-ter:Jl>ersonzJLabelbi:JLabel51L1TCPUFZIE4±Ii£:i£P(guān)XK.JianZiP=Ie?Icon.KnJ?: 1■!?eaIconsh-itovBzJBVt^onji =JBut-tonbvJB: ttonEeneTator:E.AndoBtot^l:Inte:in~t(四)程序運(yùn)行的測(cè)試與分析本程序運(yùn)行正常,實(shí)現(xiàn)了用戶(hù)點(diǎn)擊按鍵嘗試相應(yīng)的圖片,同時(shí)電腦也會(huì)產(chǎn)生相應(yīng)的回應(yīng)發(fā)出它的“猜拳”,每一次都會(huì)給出當(dāng)前的游戲總局?jǐn)?shù)和用戶(hù)和電腦各自的勝利局?jǐn)?shù)。并且可以隨意進(jìn)行多次,每次的隨機(jī)性和準(zhǔn)確性良好。界面也較清楚好看。最終結(jié)果如下圖:實(shí)驗(yàn)結(jié)果截圖:(五)結(jié)論心得本題經(jīng)過(guò)較長(zhǎng)時(shí)間的調(diào)試和完善,達(dá)到了預(yù)期要求和運(yùn)行目標(biāo)。這是本次設(shè)計(jì)用時(shí)最長(zhǎng)的題目花了大量時(shí)間,最后總算有所回報(bào),到達(dá)了一個(gè)比較滿(mǎn)意的成果。任務(wù)六學(xué)生考勤管理系統(tǒng)一)設(shè)計(jì)任務(wù)與目標(biāo)任務(wù):考勤信息記錄了學(xué)生的缺課情況,它包括:缺課日期、第幾節(jié)課、課程名稱(chēng)、學(xué)生姓名、缺課類(lèi)型(遲到、早退、請(qǐng)假及曠課)。試設(shè)計(jì)考勤管理系統(tǒng),使之能提供以下功能:要求目標(biāo):(1)錄入學(xué)生的缺課記錄;(2)修改某個(gè)學(xué)生的缺課記錄;(3)查詢(xún)某個(gè)學(xué)生的缺課情況;(4)統(tǒng)計(jì)某段時(shí)間內(nèi),曠課學(xué)生姓名及曠課次數(shù);(5)統(tǒng)計(jì)某段時(shí)間內(nèi),有學(xué)生曠課的課程及曠課人次;分析論證:本題需要通過(guò)用戶(hù)界面來(lái)直觀(guān)的實(shí)現(xiàn)操作,操作盡量簡(jiǎn)單方便,可以實(shí)現(xiàn)上述基本功能。主要以之前的對(duì)話(huà)框等GUI組件來(lái)實(shí)現(xiàn)用戶(hù)的交互??梢暂斎牒筒樵?xún)相應(yīng)的信息以及提示信息,并可以實(shí)現(xiàn)簡(jiǎn)單統(tǒng)計(jì)。(二)方案設(shè)計(jì)與論證本題我設(shè)計(jì)了一個(gè)主面板來(lái)承載多個(gè)panel;其中最重要的是JTabbedPane組件,它先承載了主要的按鍵及菜單和各個(gè)文本輸入框。其他的面板主要是安放在JTabbedPane上,并且要求面板中的組件按一定規(guī)律排列,用到了布局管理器。需要實(shí)現(xiàn)的功能主要是錄入、修改、查詢(xún)和統(tǒng)計(jì)信息。程序中我分塊編寫(xiě)了各個(gè)功能的代碼,每個(gè)功能都將用到相應(yīng)監(jiān)聽(tīng)器,通過(guò)按鍵實(shí)現(xiàn)功能。并且在panel類(lèi)中用到了student類(lèi),用于保存基本的學(xué)生信息。在程序的編譯和調(diào)試過(guò)程中出現(xiàn)了許多問(wèn)題。開(kāi)始時(shí)面板布局凌亂,輸入信息沒(méi)有反應(yīng),并且還會(huì)出現(xiàn)報(bào)錯(cuò)。在布局問(wèn)題上后來(lái)用到了布局管理器,編程時(shí)將各個(gè)功能的版式按照一定的樣式統(tǒng)一設(shè)計(jì),達(dá)到界面簡(jiǎn)潔美觀(guān)。輸入信息沒(méi)反應(yīng)主要是事件反應(yīng)器的邏輯錯(cuò)誤,經(jīng)過(guò)調(diào)整判斷條件等改正了錯(cuò)誤。最后,根據(jù)老師提出的要求最程序提出了完善,可以通過(guò)姓名和學(xué)號(hào)查

詢(xún)信息,以及不會(huì)重復(fù)輸入同一個(gè)人的信息。基本達(dá)到實(shí)驗(yàn)?zāi)康摹#ㄈ┏绦蚩驁D或流程圖,程序清單與調(diào)用關(guān)系(四)程序運(yùn)行的測(cè)試與分析經(jīng)過(guò)調(diào)試,程序可以正常運(yùn)行??梢詫?shí)現(xiàn)信息的輸入和查詢(xún)以及修改和統(tǒng)計(jì)信息數(shù)量。界面布局較合理,實(shí)驗(yàn)截圖如下:實(shí)驗(yàn)結(jié)果截圖:五)結(jié)論心得本題設(shè)計(jì)時(shí)涉及很多的組件和方法,需要將大量的組件安排到合適的位置,并且要實(shí)現(xiàn)相應(yīng)的功能。工作量較大,在完善過(guò)程中問(wèn)題也很多。不過(guò)通過(guò)自己的努力和思考,最終成功的完成了實(shí)驗(yàn)。實(shí)驗(yàn)收獲眾多,了解了一個(gè)較復(fù)雜和大段的代碼編寫(xiě)時(shí)需要耗費(fèi)很大精力。參考資料【1】 【美】Johnlewis,WilliamLoftus著《Java程序設(shè)計(jì)教程》(第六版) 電子工業(yè)出版社【2】 【美】Y.DanielLiang著《Java語(yǔ)言程序設(shè)計(jì)》(基礎(chǔ)篇)——機(jī)械工業(yè)出版社【3】 百度知道 http:///auestion/33715635.html【4】 百度文庫(kù) http:///view/c1be6c19c281e53a5802fff1.html致謝本次可是設(shè)計(jì)能夠完成的這樣順利需要感謝很多人,這其中就包括軟件班的王浩同學(xué)憤怒的小鳥(niǎo)這個(gè)程序借鑒了他的設(shè)計(jì)。還有就是本班的黃康杰的同學(xué),他在我調(diào)試程序時(shí)給出一些好的建議,幫我解決了問(wèn)題。特別需要感謝的事我們的崔劍鋒老師,是您一個(gè)學(xué)期以來(lái)的嚴(yán)格要求和教導(dǎo),給我傳授知識(shí),今天才能完成這個(gè)課程設(shè)計(jì)。在這里衷心的對(duì)這些給過(guò)幫助的人們表示感謝!附錄:全部源程序清單源代碼一:手機(jī)號(hào)碼檢測(cè)器importjava.util.Scanner;//手機(jī)號(hào)碼檢測(cè)器publicclassPhone{publicstaticvoidmain(String[]args){Stringphone,str;chary;intx,m,a;Scannerscan=newScanner(System.in);do{m=0;a=0;System.out.println("請(qǐng)輸入電話(huà)號(hào)碼:");phone=scan.next();x=phone.length();if(x<11)System.out.println("輸入錯(cuò)誤,位數(shù)不足!");elseif(x>11)System.out.println("輸入錯(cuò)誤,位數(shù)過(guò)多!");elseif(x==11){for(inti=0;i<11;i++){y=phone.charAt(i);if(y>='0'&&y<='9'){a++;elsem=i+1;}if(a==11)System.out.println("輸入完成!");else{System.out.println("輸入錯(cuò)誤!");System.out.println("第"+m+"位輸入錯(cuò)誤字符"+phone.charAt(m-1));}}System.out.print("繼續(xù)輸入嗎(Y/N):");str=scan.next();}while(str.equals("Y"));System.out.println("退出輸入!");}}源代碼二:撲克牌//*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^////Card.java//主類(lèi)定義紙牌的花色和大小//*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*A**A**A**A**A**A*//publicclassCardprivateString[]card,bao;privateinta=0;publicCard(){String[]card1={"黑桃","紅桃","梅花","方塊"};//定義兩個(gè)數(shù)組用于組String[]card2={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};card=newString[52];bao=newString[52];for(inti=0;i<4;i++){for(intj=0;j<13;j++){card[a]=card1[i].concat(card2[j]);bao[a]=card[a];a++;}}}publicStringgetCard(inti){returncard[i];}importjava.util.Scanner;publicclassDeskOfCard{privatestaticintcount=52;publicstaticvoidmain(String[]args){Stringstring,string2;Cardm=newCard();Cardn=newCard();//這里設(shè)定52張牌Scannerscan=newScanner(System.in);do{System.out.println("輸入您要的操作(xipaiorfapai):");string=scan.next();if(string.equals("xiapi")){m=n;//初始化牌組count=52;//重新設(shè)定計(jì)數(shù)器System.out.println("剩余牌數(shù):"+count);}elseif(string.equals("fapai")){if(count!=0)//判定牌是否發(fā)完{count--;intr=(int)(Math.random()*52);//獲取隨即數(shù)System.out.println("抽取的牌為:"+m.getCard(r)+",剩余撲克牌數(shù)為:"+count);//輸出撲克牌} //從ArrayList中去掉已抽到了撲克牌elseSystem.out.println("牌已經(jīng)抽完");}System.out.println("Wanttoagain(Y/N):");string2=scan.next();}while(string2.equals("Y"));}}源代碼三:計(jì)算器importjava.awt.*;importjava.awt.event.*;importjava.text.DecimalFormat;importjavax.swing.*;importjavax.swing.border.BevelBorder;//創(chuàng)建Calculator類(lèi),繼承自JFrame,實(shí)現(xiàn)接口ActionListenerpublicclassCalculatorextendsJPanel{//聲明相關(guān)變量、對(duì)象,具體作用下面再逐行講解privateDecimalFormatdf;privateJTextFieldjieguo,jieguo2;privateJButton[]button;privateJPanelpanel1,panel2,panel3;privatedoubleresult,num1,num2;privateintyunsuan,kong1=0;privateStrings="",s1="",s2="";publicCalculator()//構(gòu)造方法{df=newDecimalFormat("0.0000");//設(shè)置結(jié)果小數(shù)點(diǎn)位數(shù)jieguo=newJTextField(20);jieguo.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));jieguo.setBackground(newColor(240,245,254));jieguo.setEditable(false);jieguo2=newJTextField(20);jieguo2.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));jieguo2.setBackground(newColor(240,245,254));jieguo2.setEditable(false);panel1=newJPanel();panel1.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));panel1.setLayout(newBoxLayout(panel1,BoxLayout.Y_AXIS));panel1.setBackground(newColor(240,245,254));panel1.add(jieguo);panel1.add(jieguo2);panel2=newJPanel();panel2.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));panel2.setBackground(newColor(229,238,250));panel2.setLayout(newGridLayout(5,4,4,4));//各個(gè)按鈕的名字Stringname[]","3","+","4","5","6","-","7","8","9","*","0",".","=","/","C"};button=newJButton[name.length];for(inti二0;i<name.length;i++)//實(shí)例化各個(gè)按鈕{button[i]=newJButton(name[i]);button[i].setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));button[i].setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));button[i].setPreferredSize(newDimension(5,35));button[i].addActionListener(newButtonListener());panel2.add(button[i]);}panel3=newJPanel();panel3.setBackground(newColor(229,238,250));//設(shè)置布局管理panel3.setLayout(newBoxLayout(panel3,BoxLayout.Y_AXIS));panel3.add(panel1);panel3.add(Box.createRigidArea(newDimension(0,30)));panel3.add(panel2);add(panel3);}privateclassButtonListenerimplementsActionListener{publicvoidactionPerformed(ActionEventevent){//沒(méi)有輸入加減乘除時(shí)空=0,記錄被運(yùn)算數(shù)if(kong1==0){if(event.getSource()==button[0])s1+=1;if(event.getSource()==button[1])s1+=2;if(event.getSource()==button[2])s1+=3;if(event.getSource()==button[4])s1+=4;if(event.getSource()==button[5])s1+=5;if(event.getSource()==button[6])s1+=6;if(event.getSource()==button[8])s1+=7;if(event.getSource()==button[9])s1+=8;if(event.getSource()==button[10])s1+=9;if(event.getSource()==button[12])s1+=0;if(event.getSource()==button[13])s1+=".";//當(dāng)鍵入加減乘除后,設(shè)置kong=lif(event.getSource()==button[7]||event.getSource()==button[3]||event.getSource()==button[15]||event.getSource()==button[11]){num1=Double.parseDouble(jieguo.getText());//記錄運(yùn)算類(lèi)型if(event.getSource()==button[3]){yunsuan=1;s1+="+";if(event.getSource()==button[7]){yunsuan=2;s1+="-";}if(event.getSource()==button[11]){yunsuan=3;s1+="*";}if(event.getSource()==button[15]){yunsuan=4;s1+="/";}kong1=1;}s=s1;jieguo.setText(s);}//此時(shí)記錄運(yùn)算數(shù)if(kong1==1){if(event.getSource()==button[0])s2+=1;if(event.getSource()==button[1])s2+=2;if(event.getSource()==button[2])s2+=3;if(event.getSource()==button[4])s2+=4;if(event.getSource()==button[5])s2+=5;if(event.getSource()==button[6])s2+=6;if(event.getSource()==button[8])s2+=7;if(event.getSource()==button[9])s2+=8;if(event.getSource()==button[10])s2+=9;if(event.getSource()==button[12])s2+=0;if(event.getSource()==button[13])s2+=".";s=s1+s2;jieguo.setText(s);//重復(fù)出現(xiàn)運(yùn)算數(shù)}if(event.getSource()==button[14])//當(dāng)按下等號(hào)時(shí),設(shè)置結(jié)果label的內(nèi)容{.〃〃s+="=";jieguo.setText(s);num2=Double.parseDouble(s2);switch(yunsuan){case1:result=num1+num2;break;case2:result=num1-num2;break;case3:result=num1*num2;break;case4:if(s2.length()==1&&s2.charAt(0)=='0')/當(dāng)/初數(shù)為零時(shí)提示錯(cuò)誤jieguo2.setText("0不能做除數(shù)");elseresult=num1/num2;break;}jieguo.setText(s);//輸出算式j(luò)ieguo2.setText(df.format(result));//格式化輸出結(jié)果}if(event.getSource()==button[16])//將當(dāng)前文本框內(nèi)數(shù)據(jù)清除{jieguo.setText("");jieguo2.setText("");s="";s1="";s2="";yunsuan=0;kong1=0;}}}importjavax.swing.JFrame;publicclassTestCal{publicstaticvoidmain(String[]args){Calculatorcalculator=newCalculator();JFrameframe=newJFrame("Calculator");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.getContentPane().add(calculator);frame.pack();frame.setVisible(true);}}源代碼四:憤怒的小鳥(niǎo)importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassBirdPanelextendsJPanel{privatefinalintWIDTH=1020,HEIGHT=620;privatefinalintDELAY=90,IMAGE_SIZE=40;privateImageIconimage,image2,image3;privateTimertimer;privateintx,y,moveX,moveY;// //設(shè)置面板,包括為了動(dòng)畫(huà)引用計(jì)時(shí)器// publicBirdPanel(){timer=newTimer(DELAY,newAListener());image=newImageicon("鳥(niǎo).png");image2=newImageicon("目標(biāo).gif");image3=newImageIcon("birds1.jpg");x=0;y=500;moveX=30;moveY=-30;//豎直方向向上,做拋物線(xiàn)需要setPreferredSize(newDimension(WIDTH,HEIGHT));setBackground(Color.WHITE);timer.start();}// //面板中顯示該有的圖片// publicvoidpaintComponent(Graphicspage){super.paintComponent(page);image3.paintIcon(this,page,330,0);image.paintIcon(this,page,x,y);image2.paintIcon(this,page,900,550);}/// /^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js//定時(shí)器的操作監(jiān)聽(tīng)程序/// /^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^js^jsprivateclassAListenerimplementsActionListener{// //更新圖像的位置和可能的運(yùn)動(dòng)方向每當(dāng)計(jì)時(shí)器觸發(fā)操作事件//// publicvoidactionPerformed(ActionEventevent){moveY+=2; //為了做拋物線(xiàn)每次少提高2個(gè)像素,最終才會(huì)下落x+=moveX; //以設(shè)定好的像素移動(dòng)y+=moveY;//判斷達(dá)到目標(biāo)后停止,并產(chǎn)生相應(yīng)的變化效果if(x>=WIDTH-IMAGE_SIZE){x=WIDTH-IMAGE_SIZE;}if(y>=HEIGHT-IMAGE_SIZE){y=HEIGHT-IMAGE_SIZE;image2=newImageicon("變身.jpg");image=newImageIcon("...");//小鳥(niǎo)消失}repaint();}}////>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*// Bird.java//// Angrybirds!////>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassBird{publicstaticvoidmain(String[]args){Stringx;x="開(kāi)始憤怒的小鳥(niǎo)游戲?";JOptionPane.showMessageDialog(null,x);JFrameframe=newJFrame("Angrybirds");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.getContentPane().add(newBirdPanel());frame.pack();frame.setVisible(true);}}源代碼五:剪刀石頭布importjava.awt.*;importjava.awt.event.*;importjava.util.Random;importjavax.swing.*;importjavax.swing.border.BevelBorder;publicclassFightextendsJPanel{private JPanelpanel1,panel2,panel3;private JLabelcomputer,bi,person;privateImageIconShiTouP,JianZiP,BuP,kong;private JButtonshitouB,jianziB,buB;private Randomgenerator;private inttotal=0,c=0,p=0;publicFight(){generator=newRandom();//定義圖片ShiTouP=newImageicon("石頭.jpg");JianZiP=newImageicon("剪刀.jpg");BuP=newImageicon("布.jpg");kong=newImageIcon("VS.jpg");//引用圖片給電腦和用戶(hù)person=newJLabel(newImageIcon("客戶(hù).gif"));bi=newJLabel(kong);computer=newJLabel(newImageIcon("電腦.jpg"));panel1=newJPanel();panel1.setBackground(Color.BLUE);panel1.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));panel1.setLayout(newBoxLayout(panel1,BoxLayout.X_AXIS));panel1.add(person);panel1.add(bi);panel1.add(computer);panel1.setPreferredSize(newDimension(450,180));shitouB=newJButton("石頭");shitouB.addActionListener(newMouse());jianziB=newJButton("剪刀");jianziB.addActionListener(newMouse());buB=newJButton("布");buB.addActionListener(newMouse());panel2=newJPanel();panel2.setLayout(newBoxLayout(panel2,BoxLayout.X_AXIS));panel2.add(jianziB);panel2.add(shitouB);panel2.add(buB);panel2.setPreferredSize(newDimension(450,50));panel2.setBackground(newColor(200,218,235));panel3=newJPanel();panel3.setBackground(newColor(200,218,235));panel3.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));panel3.setLayout(newBoxLayout(panel3,BoxLayout.Y_AXIS));panel3.add(panel1);panel3.add(Box.createRigidArea(newDimension(0,50)));panel3.add(panel2);add(panel3);panel3.setPreferredSize(newDimension(500,350));}privateclassMouseimplementsActionListener{publicvoidactionPerformed(ActionEventevent){intran=generator.nextInt(3);if(event.getSource()==jianziB){person.setlcon(JianZiP);//當(dāng)產(chǎn)生比較后根據(jù)結(jié)果變換圖片if(ran==0){total+=1;bi.setIcon(kong);computer.setIcon(JianZiP);}if(ran==1){total+=1;c+=1;bi.setIcon(kong);computer.setIcon(ShiTouP);}if(ran==2){total+=1;p+=1;bi.setIcon(kong);computer.setIcon(BuP);}}if(event.getSource()==shitouB){person.setIcon(ShiTouP);if(ran==0){total+=1;bi.setIcon(kong);p+=1;computer.setIcon(JianZiP);}if(ran==1){total+=1;bi.setIcon(kong);computer.setIcon(ShiTouP);}if(ran==2){total+=1;c+=1;bi.setIcon(kong);computer.setIcon(BuP);}}if(event.getSource()==buB){person.setIcon(BuP);if(ran==0){total+=1;bi.setIcon(kong);c+=1;computer.setIcon(JianZiP);}if(ran==1){total+=1;bi.setIcon(kong);p+=1;computer.setIcon(ShiTouP);}if(ran==2){total+=1;bi.setIcon(kong);computer.setIcon(BuP);}if(event.getSource()==jianziB||event.getSource()==shitouB||event.getSource()==buB){intagain=JOptionPane.showConfirmDialog(panel2,"上匕賽進(jìn)行了:"+total+"次 您贏了"+p+"次 電腦贏了:"+c+"次 還要繼續(xù)玩嗎?","提示",JOptionPane.YES_N0_0PTI0N);if(again==JOptionPane.NO_OPTION)System.exit(0);}}}}//*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^////TestFight.java////*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*A**A**A**A**A**A**A**A**A*//importjavax.swing.JFrame;publicclassTestFight{publicstaticvoidmain(String[]args){Fightfight=newFight();JFrameframe=newJFrame("石頭剪刀布");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.getContentPane().add(fight);frame.pack();frame.setVisible(true);}}源代碼六://////Student.java//學(xué)生類(lèi),包括了各種屬性的設(shè)置和取值方法////publicclassStudentintxuehao,keshi;Stringxingming,kemu,leixing,riqi;keshi,StringpublicStudent(Stringxingming,intxuehao,Stringriqi,kemu,Stringleixing)keshi,String{//構(gòu)造函數(shù)this.xingming=xingming;this.xuehao=xuehao;this.riqi=riqi;this.kemu=kemu;this.keshi=keshi;this.leixing=leixing;}//各個(gè)屬性的get和set方法publicStringgetXingMing(){returnxingming;}publicvoidsetXingMing(Stringxingming){this.xingming=xingming;}publicintgetXueHao(){returnxuehao;}publicvoidsetXueHao(intxuehao){this.xuehao=xuehao;}publicStringgetRiQi(){returnriqi;}publicvoidsetRiQi(Stringriqi){this.riqi=riqi;}publicintgetKeShi(){returnkeshi;}publicvoidsetKeShi(intkeshi){this.keshi=keshi;}publicStringgetKeMu(){returnkemu;}publicvoidsetKeMu(Stringkemu){this.kemu=kemu;}publicStringgetLeiXing(){returnleixing;}publicvoidsetLeiXing(Stringleixing){this.leixing=leixing;}}//*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*A**A**A**A**A**A**A*////運(yùn)行類(lèi)//*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*4^*A**A**A**A**A**A**A*//importjava.awt.Dimension;importjavax.swing.JFrame;publicclassTestKaoQing{publicstaticvoid main(String[] args){JFrameframe= newJFrame();frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.getContentPane().add(newkaoqin());frame.pack();frame.setVisible(true);}}////>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*//kaoqin.java//考勤類(lèi),定義了主要的面板和功能實(shí)現(xiàn)////>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*>y*importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjava.util.ArrayList;importjavax.swing.border.BevelBorder;publicclasskaoqinextendsJPanel{JLabeljieguo;//統(tǒng)計(jì)功能的組件定義JButtonxAt,kAr;JTextAreaJieGuo;JPaneljieguoP,panelB,account;JLabelbackground1,background2,background3,background4;ArrayList<Student>student;JLabelxingmingl,xuehaol,riqil,keshil,kemul,leixingl;//錄入功能組件定義JTextFieldxingming11,xuehao11,riqi11,keshi11,kemu11,leixing11;Stringxingming111,xuehao111,riqi111,keshi111,kemu111,leixing111;JPanelInput,panel11,panel12,panel13,panel14,panel15,panel16;JLabelxingming2,xuehao2,riqi2,keshi2,kemu2,leixing2;//修改功能組件的定義JTextFieldxingming22,xuehao22,riqi22,keshi22,kemu22,leixing22;Stringxingming222,xuehao222,riqi222,keshi222,kemu222,leixing222;JPanelModify,panel21,panel22,panel23,panel24,panel25,panel26,panel27;JLabelxingming3,xuehao3,riqi3,keshi3,kemu3,leixing3;//查找功能組件的定義JTextFieldxingming33,xuehao33,riqi33,keshi33,kemu33,leixing33;Stringxingming333,xuehao333,riqi333,keshi333,kemu333,leixing333;JPanelFind,panel31,panel32,panel33,panel34,panel35,panel36;JButtontijiaol,xiugai2,chaxun2,chaxun3;//各個(gè)按鈕的定義JTabbedPanetb;Integercha1=null,cha2=null;publickaoqin(){background】=newJLabel("請(qǐng)錄入學(xué)生信息!"); //提示信息的初始化background2=newJLabel("請(qǐng)使用學(xué)號(hào)和姓名查詢(xún)!");background3=newJLabel("請(qǐng)使用學(xué)號(hào)和姓名查詢(xún)!");student=newArrayList<Student>();xingmingl二newJLabel("學(xué)生姓名:");//錄入界面各個(gè)組件的安排xuehaol二newJLabel("學(xué)生學(xué)號(hào):");riqi1=newJLabel("缺勤日期:");keshi1=newJLabel("缺勤課時(shí):");kemu1=newJLabel("缺勤科目:");leixing1=newJLabel("缺勤類(lèi)型:");xingmingll=newJTextField(8);xingmingll.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));xuehaoll=newJTextField(8);xuehaoll.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));riqill=newJTextField(8);riqill.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));keshill=newJTextField(8);keshill.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));kemull=newJTextField(8);kemull.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));leixingll=newJTextField(8);leixingll.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));panelll=newJPanel();panelll.setBackground(newColor(230,239,255));panelll.setLayout(newBoxLayout(panelll,BoxLayout.X_AXIS));panelll.add(Box.createRigidArea(newDimension(30,l5)));panelll.add(xingmingl);panelll.add(xingmingll);panel12=newJPanel();panel12.setBackground(newColor(230,239,255));panel12.setLayout(newBoxLayout(panel12,BoxLayout.X_AXIS));panel12.add(Box.createRigidArea(newDimension(30,0)));panel12.add(xuehao1);panel12.add(xuehao11);panel13=newJPanel();panel13.setBackground(newColor(230,239,255));panel13.setLayout(newBoxLayout(panel13,BoxLayout.X_AXIS));panel13.add(Box.createRigidArea(newDimension(30,0)));panel13.add(riqi1);panel13.add(riqi11);panel14=newJPanel();panel14.setBackground(newColor(230,239,255));panel14.setLayout(newBoxLayout(panel14,BoxLayout.X_AXIS));panel14.add(Box.createRigidArea(newDimension(30,0)));panel14.add(keshi1);panel14.add(keshi11);panel15=newJPanel();panel15.setBackground(newColor(230,239,255));panel15.setLayout(newBoxLayout(panel15,BoxLayout.X_AXIS));panel15.add(Box.createRigidArea(newDimension(30,0)));panel15.add(kemu1);panel15.add(kemu11);panel16=newJPanel();panel16.setBackground(newColor(230,239,255));panel16.setLayout(newBoxLayout(panel16,BoxLayout.X_AXIS));panel16.add(Box.createRigidArea(newDimension(30,0)));panel16.add(leixing1);panel16.add(leixing11);tijiaol=newJButton("提交");tijiaol.setFont(newFont("幼圓",F(xiàn)ont.BOLD,18));tijiaol.setPreferredSize(newDimension(50,20));tijiao1.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));tijiao1.addActionListener(newButtonListener());Input=newJPanel();Input.setBackground(newColor(230,239,255));Input.setLayout(newBoxLayout(Input,BoxLayout.Y_AXIS));Input.add(Box.createRigidArea(newDimension(30,0)));Input.add(background1);Input.add(Box.createRigidArea(newDimension(0,10)));Input.add(panelll);

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論