版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
《JAVA面向對象程序設計》課程設計報告(2011-2012學年第2學期)系另1」:廈門理工學院計算機科學與技術系專業(yè)名稱:10級網絡工程1班課程設計科目:學生姓名:《JAVA面向對象程序設計》課程設計學號:指導教師:成績:完成時間:2012年7月6日題目JAVA程序課程設計任務一手機號碼檢測器(一)設計任務與目標任務:手機號碼是由11位數(shù)字構成,用戶在輸入手機號碼時經常混亂輸入若干位數(shù)字或字母,要求你編寫一個程序檢測用戶所輸入的手機號碼是否符合規(guī)則。要求目標:檢測所輸入的手機號碼是否是11位檢測每一位是否都為數(shù)字。分析論證:本題目要求對用戶輸入的手機號碼進行檢測,判斷輸入的正確性。曾經有做過類似字符比較的題目,可以借鑒。將字符的比較運用進來,把用戶的輸入字符和正確的進行比較。但是必須滿足多次輸入和錯誤提醒。同時還可以添加提示錯誤的位置和錯誤字符是什么。程序正確運行時可以滿足以上功能,基本可以達到題目要求了。(二)方案設計與論證為了滿足多次輸入的要求,將提示和輸入的操作放在一個循環(huán)體中,我采用了do_whiele()循環(huán)。每次輸入結束后提示是否繼續(xù)輸入。在循環(huán)中逐步對輸入的號碼位數(shù)和字符類型進行檢測。位數(shù)可以分超出和不足,并均給出錯誤提示。如果位數(shù)滿足要求后對手機號碼類型進行檢測。一般手機號在0~9之間,所以不滿足的字符將報錯。通過將輸入的整個字符串調用charAt(inti)方法對字符串逐位比較。本程序的特點在于可以滿足了多次輸入和錯誤字符的顯示(內容和位置)。在程序的調試過程中,有過多次輸入正確的號碼也會報錯(還會報錯0位錯誤),這是因為記錄錯誤位子的變量放在錯誤條件下并且未在循環(huán)體中初始化為0。最終解決了此問題。三)程序框圖或流程圖,程序清單與調用關系Phone+phone:String+str:String+y:char+x:int+id:iiit+過;iiit+main(Strin呂[]args):void(四)程序運行的測試與分析實現(xiàn)了多次輸入和錯誤提示,可以判斷輸入的號碼的錯誤位置及字符,錯誤類型,滿足了設計構思要求。最終結果如下圖:實驗結果截圖:FrobleasJavadocsCOR5O16+ernnTLateA.>Phune1.1.1[JavaApplicat1諸輸入電話號碼:13B5576E53D輸入完成!繼續(xù)輸人嗎(Y/K):請輸入電話號碼:123e4567E91輸入錯誤!第勻位輸入錯誤字符已繼縝輸人嗎(y/R):請輸入電話號碼;123輸入錯誤,位數(shù)不足!繼頷輸人嗎(Y/N).:請輸入電話號碼:1233455£77=££3輸入錯誤,位數(shù)過第!繼續(xù)輸人嗎(Y/N}:魏出輸人?。ㄎ澹┙Y論心得實驗過程中對于判斷條件的選擇出現(xiàn)了問題,開始時覺得要對輸入的字符一個一個的比較,這樣增加了難度也不方便實現(xiàn)。后面改成了將用戶輸入完成后的全部字符串當做整體后再來逐位比較。如果能做成手機外形的面板并能一個一個的判斷,只要輸入錯誤字符馬上提示,那功能將更加完善。任務二撲克牌(一)設計任務與目標任務:設計一個Card類代表撲克牌,每張牌都有自己的花色和大小。創(chuàng)建一個DeskOfCards類保存54張撲克牌,設計洗牌、發(fā)一張牌、報告剩余牌數(shù)的方法。創(chuàng)建main方法測試你的程序。要求目標:實現(xiàn)洗牌和發(fā)牌。顯示當前片面和剩余牌數(shù)。分析論證:本題目需要用到數(shù)組來存儲一副紙牌,并需要用到隨機數(shù)來代替隨機發(fā)牌,曾經做過類似工作?,F(xiàn)在需要將產生的隨機數(shù)和字牌的大小和花色聯(lián)系起來,可以通過數(shù)組來實現(xiàn)。同時還要達到可以循環(huán)發(fā)牌,并有發(fā)牌信息顯示。(二)方案設計與論證根據(jù)題目要求,我準備在類Card中用數(shù)組存儲一副牌(52張),考慮到撲克牌有花色和大小并都是固定的,所以用了兩個字符串數(shù)組分別初始化花色和大小,再利用下標操作把花色和大小組合在一起,存放另在一個數(shù)組里(最終的紙牌組)。這樣就有了一副完整紙牌了。再創(chuàng)建另一個類DeskOfCard創(chuàng)建兩個Card對象,通過在循環(huán)里的條件判斷對對象進行操作:洗牌時就將紙牌數(shù)組和剩余牌數(shù)重新初始化(利用多余的那個對象)。發(fā)牌時用到隨機數(shù)產生器,產生從0到51的整數(shù)和數(shù)組小標對應,每個元素代表一張牌。測試過程中出現(xiàn)了無法顯示牌面的問題,通過對象引用找不到具體的紙牌,后來在Card類中添加了getCard(inti)方法返回一張牌,實現(xiàn)了發(fā)牌和剩余牌數(shù),并可以多次發(fā)牌。(三)程序框圖或流程圖,程序清單與調用關系Card-card:String[]-bao:String[.-a:int+cardl:String[.■PuardZ:書ttifLgl" 十getCard(inti):StringDeskOfCard-count:int+string:String+string2:String+ro:CardO十n:CardO十main(StriLng:args):void.(四)程序運行的測試與分析從測試過程中達到了分析時的目的要求,實現(xiàn)了洗牌和發(fā)牌(顯示牌面和剩余數(shù)量)。最終結果如下圖:實驗結果截圖: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:五)結論心得實驗過程中,開始沒有將紙牌的大小和花色分開來定義,導致需要初始化52張牌,后倆采用了循環(huán)體將花色和大小進行組合達到了目的的同時又簡化了代碼,提高了可讀性。本來希望最后的結果可以通過圖片的方式顯示紙牌,但紙牌的原圖片兩太大,實現(xiàn)過于繁瑣,最終采用了簡單的文字表示。希望今后有機會近一步完善,達到預期效果。任務三計算器(一)設計任務與目標任務:參考第六章的實驗題TelephoneKeypad界面設計一個計算器。要求目標:實現(xiàn)輸入數(shù)字和運算字符并輸出結果結果由對應的運算得出,實現(xiàn)基本運算能力分析論證:通過設計一個界面展示一個計算器的功能,包括輸入數(shù)字和符號并進行準確的運算得出理想的結果。在第六章中的TelephoneKeypad實驗中做過類似的界面只是實現(xiàn)的功能不一樣,可在這個基礎上加入運算功能即可實現(xiàn)要求。(二)方案設計與論證根據(jù)題目的具體要求,我設想通過之前的TelephoneKeypad實驗進行改進,除了需要加入一些按鈕外,還要對具體的按鈕功能進行設計。在Calculator類中進行了面板的設計,之間加入了需要的各個控件,并且加了ActionListener()類來做事件的觸發(fā)類。此類中通過event.getSource()方法與相應的按鍵進行對應,以此為判斷條件來決定做什么操作。其中包括了被運算數(shù)、運算類型、運算數(shù)還有等號的事件。為了可以輸出信息還要加入JTextField控件來顯示信息,信息通過一個字
符串變量來存取。兩個JTextField控件分上下,上面顯示最后的運算式(包括每次輸入時均要逐步顯示輸入內容),下面顯示最后的結果并以一定的格式輸出。最后還要滿足多次輸入,因此設計了清楚按鍵,每次清楚后可以進行下一次的運在程序的調試的過程中出現(xiàn)了,輸出內容的錯誤。不能逐一的輸出輸入的內容,最后也沒有在上面顯示框中顯示完整的運算式。通過檢查,發(fā)現(xiàn)是字符串的添加位置和沒有將內容在原有基礎上增加,而是每次更新字符串。最終通過修改解決了問題。其間,還出現(xià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)(四)程序運行的測試與分析測試過程中進行了多次的運算,包括加、減、乘、除。每次都可以逐一輸出輸入的內容并能得出正確的結果并輸出。清除后可以再次運算,基本達到了預期要求。最終結果如下圖:實驗結果截圖:(五)結論心得本程序因為涉及的控件很多,所以排版和引用都要十分注意,不然容易引用錯誤,導致引用不到你所點擊的那個按鍵等。還要注意在監(jiān)聽器里的條件判斷時相應的操作要考慮清楚。為了界面美觀和人性化,要將按鍵的順序按一定的順序排列不能隨機添加。本程序不足的地方在于運算類型只有加減乘除,并且不能再完成一次運算后立即進行下一次運算,必須清楚后重新開始。這些不足還有待改善。相信如果改進過后,這個計算器會達到更加完善的功能和實用性。任務四憤怒的小鳥(一)設計任務與目標任務:憤怒的小鳥是一款“億人迷”的游戲,據(jù)說大家喜歡它的原因在于大家喜歡拋物線勝過直線。例題8.15-8.16是笑臉圖片直線運動的例子,請修改它在X軸和Y軸的運動軌跡,將它改成拋物線運動。要求目標:實現(xiàn)界面中小鳥打擊目標有準確的拋物線可以多次并操作簡單分析論證:在例題笑臉的運動中實現(xiàn)了圖片按照一定的像素進行平移,到達一個目標地。所以可以以此為基礎進行改進。對運動中的函數(shù)進行改進,將直線運動改成拋物線。并有效開始時出現(xiàn)提示。用戶可以對圖片的出發(fā)位置進行控制。(二)方案設計與論證為了達到預期的目標,我將創(chuàng)建了一個BirdPanel類來存放各種組件,主要是存入多張圖片和一個十分重要的也是這個程序的核心一一定時器Timer。這個游戲最終可以看到的效果是圖片的移動,所以需要通過控制圖片在面板中的位置來實現(xiàn)移動。所以定時器就十分重要了,有了定時器就可以在間隔一段時間中多次觸發(fā)事件,看到的也就是圖片在不停地移動,最終到達目標。在編寫程序過程中,發(fā)現(xiàn)需要實現(xiàn)客戶對圖片初始位置的控制比較困難。所以為了節(jié)省時間就將圖片的觸發(fā)地限制在了固定位置。每次都將從這一位置觸發(fā),并進行拋物運動后,打中目標。這雖然使程序簡單了,可在一定程度上犧牲了部分的功能。今后還有需要改進。(三)程序框圖或流程圖,程序清單與調用關系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(四)程序運行的測試與分析實驗測試過程完成了游戲開始提示和小鳥圖片的拋物運動,目標被打擊后會場上變化。只是不能多次操作和隨意拖拽小鳥的起始位置,這是一段的局限。最終結果如下圖:實驗結果截圖:
五)結論心得本題目中涉及的核心內容是定時器和圖片坐標改變在(運動)的配合使用。通過對坐標的改變,并結合定時器功能達到動畫效果。本程序的不足在于未能達到預期的人性化,沒法隨意開始游戲,和市場上的憤怒的小鳥存在巨大差距,這也是這個程序不成熟的地方,但是總算達到了能將圖片以拋物線運動到目的地。基本上完成了目的要求。今后還需繼續(xù)改進完善。任務五石頭剪刀布(一)設計任務與目標任務:參考第五章的實驗題Rock,Paper,Scissors設計并實現(xiàn)一個和計算機交互的剪刀、石頭、布游戲。人和計算機各選擇一項,然后決出勝負。程序必須隨機選取一項但不表示出來,然后提示用戶選擇。當用戶選擇后,程序同時顯示出計算機和用戶的選擇并且輸出游戲結果。游戲一直進行直到用戶退出為止,并且輸出雙方輸贏次數(shù)和總局數(shù)。要求目標:能夠直觀顯示用戶和電腦的出拳可以多次進行游戲,知道用戶確認退出每次都給出目前勝負情況游戲具有隨機性和準確性分析論證:由于第五章中已經編譯過類似的程序,其是通過隨機數(shù)模擬電腦出拳,在通過用戶輸入模擬自己出拳,最終來比較電腦和用戶的勝負。只要將原程序改成界面形式并加入具體相應的圖片和用戶勝負情況的提示,其他的游戲比較與原來一致就行。(二)方案設計與論證根據(jù)題目要求需要建立一個Panel'類Fight用于存儲圖片和組件。在類
中申請了3個panel,第一個用于存放圖片,第二個用于存放按鍵,最后將這兩個放進panel3中。在panell中的圖片需要根據(jù)panel2中按鍵觸發(fā)的事件進行相應的改變。電腦和用戶都有石頭、剪刀和布三張圖片進行變化。每次在用戶點擊按鍵石頭或剪刀或布后電腦會根據(jù)隨機數(shù)產生器發(fā)出的隨機數(shù)進行相應的“出拳”,然后和用戶選擇的“出拳”進行比較輸贏。當用戶選擇后,兩者的出拳圖會顯示在panel1中,并出現(xiàn)信息說明當前游戲總次數(shù)和用戶和電腦各自的勝出次數(shù)。用戶可以再一次游戲介紹后繼續(xù)點擊按鍵進行多次游戲,每次重復上面功能。因為本程序是在原有基礎上進行的改進,前面又做過小鳥的程序,所以問題不是很大,最不應該的是在圖片引用過程中因為圖片命名格式的原因耽誤了大量時間,導致實驗用時較長。最終完成的游戲還是比較完善的,幾乎達到了預期的所有要求。(三)程序框圖或流程圖,程序清單與調用關系Fightpanel1:JPauelpanel2iJPauelpanel=3=JPauelcoapML-ter:Jl>ersonzJLabelbi:Fightpanel1:JPauelpanel2iJPauelpanel=3=JPauelcoapML-ter:Jl>ersonzJLabelbi:JLabel51L1TCPUFZIE4±Ii£:i£PXK.JianZiP=Ie?Icon.KnJ?: 1■!?eaIconsh-itovBzJBVt^onji =JBut-tonbvJB: ttonEeneTator:E.AndoBtot^l:Inte:in~t(四)程序運行的測試與分析本程序運行正常,實現(xiàn)了用戶點擊按鍵嘗試相應的圖片,同時電腦也會產生相應的回應發(fā)出它的“猜拳”,每一次都會給出當前的游戲總局數(shù)和用戶和電腦各自的勝利局數(shù)。并且可以隨意進行多次,每次的隨機性和準確性良好。界面也較清楚好看。最終結果如下圖:實驗結果截圖:(五)結論心得本題經過較長時間的調試和完善,達到了預期要求和運行目標。這是本次設計用時最長的題目花了大量時間,最后總算有所回報,到達了一個比較滿意的成果。任務六學生考勤管理系統(tǒng)一)設計任務與目標任務:考勤信息記錄了學生的缺課情況,它包括:缺課日期、第幾節(jié)課、課程名稱、學生姓名、缺課類型(遲到、早退、請假及曠課)。試設計考勤管理系統(tǒng),使之能提供以下功能:要求目標:(1)錄入學生的缺課記錄;(2)修改某個學生的缺課記錄;(3)查詢某個學生的缺課情況;(4)統(tǒng)計某段時間內,曠課學生姓名及曠課次數(shù);(5)統(tǒng)計某段時間內,有學生曠課的課程及曠課人次;分析論證:本題需要通過用戶界面來直觀的實現(xiàn)操作,操作盡量簡單方便,可以實現(xiàn)上述基本功能。主要以之前的對話框等GUI組件來實現(xiàn)用戶的交互??梢暂斎牒筒樵兿鄳男畔⒁约疤崾拘畔?,并可以實現(xiàn)簡單統(tǒng)計。(二)方案設計與論證本題我設計了一個主面板來承載多個panel;其中最重要的是JTabbedPane組件,它先承載了主要的按鍵及菜單和各個文本輸入框。其他的面板主要是安放在JTabbedPane上,并且要求面板中的組件按一定規(guī)律排列,用到了布局管理器。需要實現(xiàn)的功能主要是錄入、修改、查詢和統(tǒng)計信息。程序中我分塊編寫了各個功能的代碼,每個功能都將用到相應監(jiān)聽器,通過按鍵實現(xiàn)功能。并且在panel類中用到了student類,用于保存基本的學生信息。在程序的編譯和調試過程中出現(xiàn)了許多問題。開始時面板布局凌亂,輸入信息沒有反應,并且還會出現(xiàn)報錯。在布局問題上后來用到了布局管理器,編程時將各個功能的版式按照一定的樣式統(tǒng)一設計,達到界面簡潔美觀。輸入信息沒反應主要是事件反應器的邏輯錯誤,經過調整判斷條件等改正了錯誤。最后,根據(jù)老師提出的要求最程序提出了完善,可以通過姓名和學號查
詢信息,以及不會重復輸入同一個人的信息?;具_到實驗目的。(三)程序框圖或流程圖,程序清單與調用關系(四)程序運行的測試與分析經過調試,程序可以正常運行。可以實現(xiàn)信息的輸入和查詢以及修改和統(tǒng)計信息數(shù)量。界面布局較合理,實驗截圖如下:實驗結果截圖:五)結論心得本題設計時涉及很多的組件和方法,需要將大量的組件安排到合適的位置,并且要實現(xiàn)相應的功能。工作量較大,在完善過程中問題也很多。不過通過自己的努力和思考,最終成功的完成了實驗。實驗收獲眾多,了解了一個較復雜和大段的代碼編寫時需要耗費很大精力。參考資料【1】 【美】Johnlewis,WilliamLoftus著《Java程序設計教程》(第六版) 電子工業(yè)出版社【2】 【美】Y.DanielLiang著《Java語言程序設計》(基礎篇)——機械工業(yè)出版社【3】 百度知道 http:///auestion/33715635.html【4】 百度文庫 http:///view/c1be6c19c281e53a5802fff1.html致謝本次可是設計能夠完成的這樣順利需要感謝很多人,這其中就包括軟件班的王浩同學憤怒的小鳥這個程序借鑒了他的設計。還有就是本班的黃康杰的同學,他在我調試程序時給出一些好的建議,幫我解決了問題。特別需要感謝的事我們的崔劍鋒老師,是您一個學期以來的嚴格要求和教導,給我傳授知識,今天才能完成這個課程設計。在這里衷心的對這些給過幫助的人們表示感謝!附錄:全部源程序清單源代碼一:手機號碼檢測器importjava.util.Scanner;//手機號碼檢測器publicclassPhone{publicstaticvoidmain(String[]args){Stringphone,str;chary;intx,m,a;Scannerscan=newScanner(System.in);do{m=0;a=0;System.out.println("請輸入電話號碼:");phone=scan.next();x=phone.length();if(x<11)System.out.println("輸入錯誤,位數(shù)不足!");elseif(x>11)System.out.println("輸入錯誤,位數(shù)過多!");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("輸入錯誤!");System.out.println("第"+m+"位輸入錯誤字符"+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//主類定義紙牌的花色和大小//*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={"黑桃","紅桃","梅花","方塊"};//定義兩個數(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();//這里設定52張牌Scannerscan=newScanner(System.in);do{System.out.println("輸入您要的操作(xipaiorfapai):");string=scan.next();if(string.equals("xiapi")){m=n;//初始化牌組count=52;//重新設定計數(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("牌已經抽完");}System.out.println("Wanttoagain(Y/N):");string2=scan.next();}while(string2.equals("Y"));}}源代碼三:計算器importjava.awt.*;importjava.awt.event.*;importjava.text.DecimalFormat;importjavax.swing.*;importjavax.swing.border.BevelBorder;//創(chuàng)建Calculator類,繼承自JFrame,實現(xiàn)接口ActionListenerpublicclassCalculatorextendsJPanel{//聲明相關變量、對象,具體作用下面再逐行講解privateDecimalFormatdf;privateJTextFieldjieguo,jieguo2;privateJButton[]button;privateJPanelpanel1,panel2,panel3;privatedoubleresult,num1,num2;privateintyunsuan,kong1=0;privateStrings="",s1="",s2="";publicCalculator()//構造方法{df=newDecimalFormat("0.0000");//設置結果小數(shù)點位數(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));//各個按鈕的名字Stringname[]","3","+","4","5","6","-","7","8","9","*","0",".","=","/","C"};button=newJButton[name.length];for(inti二0;i<name.length;i++)//實例化各個按鈕{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));//設置布局管理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){//沒有輸入加減乘除時空=0,記錄被運算數(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+=".";//當鍵入加減乘除后,設置kong=lif(event.getSource()==button[7]||event.getSource()==button[3]||event.getSource()==button[15]||event.getSource()==button[11]){num1=Double.parseDouble(jieguo.getText());//記錄運算類型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ù)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);//重復出現(xiàn)運算數(shù)}if(event.getSource()==button[14])//當按下等號時,設置結果label的內容{.〃〃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')/當/初數(shù)為零時提示錯誤jieguo2.setText("0不能做除數(shù)");elseresult=num1/num2;break;}jieguo.setText(s);//輸出算式jieguo2.setText(df.format(result));//格式化輸出結果}if(event.getSource()==button[16])//將當前文本框內數(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);}}源代碼四:憤怒的小鳥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;// //設置面板,包括為了動畫引用計時器// publicBirdPanel(){timer=newTimer(DELAY,newAListener());image=newImageicon("鳥.png");image2=newImageicon("目標.gif");image3=newImageIcon("birds1.jpg");x=0;y=500;moveX=30;moveY=-30;//豎直方向向上,做拋物線需要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//定時器的操作監(jiān)聽程序/// /^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{// //更新圖像的位置和可能的運動方向每當計時器觸發(fā)操作事件//// publicvoidactionPerformed(ActionEventevent){moveY+=2; //為了做拋物線每次少提高2個像素,最終才會下落x+=moveX; //以設定好的像素移動y+=moveY;//判斷達到目標后停止,并產生相應的變化效果if(x>=WIDTH-IMAGE_SIZE){x=WIDTH-IMAGE_SIZE;}if(y>=HEIGHT-IMAGE_SIZE){y=HEIGHT-IMAGE_SIZE;image2=newImageicon("變身.jpg");image=newImageIcon("...");//小鳥消失}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="開始憤怒的小鳥游戲?";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");//引用圖片給電腦和用戶person=newJLabel(newImageIcon("客戶.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);//當產生比較后根據(jù)結果變換圖片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,"上匕賽進行了:"+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//學生類,包括了各種屬性的設置和取值方法////publicclassStudentintxuehao,keshi;Stringxingming,kemu,leixing,riqi;keshi,StringpublicStudent(Stringxingming,intxuehao,Stringriqi,kemu,Stringleixing)keshi,String{//構造函數(shù)this.xingming=xingming;this.xuehao=xuehao;this.riqi=riqi;this.kemu=kemu;this.keshi=keshi;this.leixing=leixing;}//各個屬性的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*////運行類//*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//考勤類,定義了主要的面板和功能實現(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)計功能的組件定義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;//各個按鈕的定義JTabbedPanetb;Integercha1=null,cha2=null;publickaoqin(){background】=newJLabel("請錄入學生信息!"); //提示信息的初始化background2=newJLabel("請使用學號和姓名查詢!");background3=newJLabel("請使用學號和姓名查詢!");student=newArrayList<Student>();xingmingl二newJLabel("學生姓名:");//錄入界面各個組件的安排xuehaol二newJLabel("學生學號:");riqi1=newJLabel("缺勤日期:");keshi1=newJLabel("缺勤課時:");kemu1=newJLabel("缺勤科目:");leixing1=newJLabel("缺勤類型:");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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024工程資料合同范本
- 2024桶裝水供應合同
- 2024【購房協(xié)議有法律效力】購房協(xié)議合同范本2
- 電工課程設計配電盤論文
- 連續(xù)LTI系統(tǒng)課程設計
- 水果生長課程設計思路
- 光控循環(huán)燈課程設計
- 超分子材料在合成材料制造中的應用與發(fā)展考核試卷
- 內陸?zhàn)B殖食品營養(yǎng)成分與消費市場需求考核試卷
- 2024年家族財產繼承規(guī)范協(xié)議版
- 指南針使用說明
- 驅動使用手冊loup用戶finalcutprox
- 基于OpenCV的計算機視覺技術研究與實現(xiàn)畢業(yè)論文
- 醫(yī)院醫(yī)學裝備應急預案.doc
- 國家開放大學電大行政管理畢業(yè)論文《提高行政效率的有效途徑及戰(zhàn)略意義》
- 酒店住宿水單01
- GB∕T 12691-2021 空氣壓縮機油
- 央企注入優(yōu)質資產或整體上市非??赡芄疽挥[表
- 標準日本語初級單詞(上冊)
- 后勤部量化分析與量化考核范例
- 初中美術6.靜物之美-課件-(2)ppt課件
評論
0/150
提交評論