付費下載
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、遼寧工業(yè)大學(xué)JAVA程序設(shè)計 課程設(shè)計(論文)題目_時鐘_院(系):軟件學(xué)院專業(yè)班級:軟件技術(shù)班學(xué) 號:_學(xué)生姓名:_指導(dǎo)教師:丁寶柱教師職稱:助教起止時間:2009.12.12009.12.1 至 2009.12.162009.12.16程序設(shè)計專題(報告)任務(wù)及評語院(系):軟件學(xué)院教研室:軟件教研室學(xué)生姓名專業(yè)班級軟件技術(shù)程序設(shè)計(報告)題目時鐘程序設(shè)計報告任務(wù)程序設(shè)計專題的任務(wù)與要求:(1)掌握Java編程、面向?qū)ο蟮幕A(chǔ)知識。(2)較熟練地編寫Java應(yīng)用程序Application。(3)了解Java的常用標準類庫、編程技巧、異常處理。(5)聯(lián)系已學(xué)過的內(nèi)容,鞏固所學(xué)的理論,增強獨立
2、工作能力。(6) 通過設(shè)計主要使學(xué)生有一個獨立編寫程序的過程,對理論學(xué)習(xí)及動手能 力都有一個很大的提高。(7)通過本次設(shè)計,進一步培養(yǎng)學(xué)生熱愛專業(yè)的思想,同時對本專業(yè)綜合素 質(zhì)的提高起一個積極的推動作用。課程設(shè)計過程中,要嚴格遵守實踐環(huán)節(jié)的時間安排,聽從指導(dǎo)教師的指導(dǎo) 正確地完成上述內(nèi)容,記錄實習(xí)日記,規(guī)范完整地撰寫出課程設(shè)計報告。指導(dǎo)教師評語及成指導(dǎo)教師簽字:2009年12月20日遼寧工業(yè)大學(xué)課程設(shè)計說明書(論文)目錄第1章課程設(shè)計的目的與要求.11.1課程設(shè)計目的.11.2課程設(shè)計的實驗環(huán)境 .11.3課程設(shè)計的預(yù)備知識.11.4課程設(shè)計要求.1第2章 課程設(shè)計內(nèi)容.22.1課程設(shè)計主要內(nèi)
3、容 .22.2概要設(shè)計.22.2.1自定義類說明.22.3詳細設(shè)計.32.4測試分析.162.4.1程序運行情況 .162.4.2程序異常處理.16第3章課程設(shè)計總結(jié).17參考資料18遼寧工業(yè)大學(xué)課程設(shè)計說明書(論文)1第 1 1 章 課程設(shè)計的目的與要求1.1課程設(shè)計目的JAVA程序設(shè)計是計算機相關(guān)專業(yè)的必修專業(yè)基礎(chǔ)課程,其實踐性、應(yīng)用性很強。實踐教學(xué)環(huán)節(jié)是必不可少的一個重要環(huán)節(jié)。本課程的程序設(shè)計專題實際是計算機相關(guān)專 業(yè)學(xué)生學(xué)習(xí)完JAVA程序設(shè)計課程后,進行的一次全面的綜合訓(xùn)練,JAVA程序設(shè)計的設(shè)計目的是加深對理論教學(xué)內(nèi)容的理解和掌握,使學(xué)生較系統(tǒng)地掌握程序設(shè)計及其在 網(wǎng)絡(luò)開發(fā)中的廣泛應(yīng)
4、用,基本方法及技巧,為學(xué)生綜合運用所學(xué)知識,利用軟件工程為 基礎(chǔ)進行軟件開發(fā)、并在實踐應(yīng)用方面打下一定基礎(chǔ)。1.2課程設(shè)計的實驗環(huán)境硬件要求能運行Windows 9.X操作系統(tǒng)的微機系統(tǒng)。JAVA程序設(shè)計語言及相應(yīng)的集 成開發(fā)環(huán)境,J2SDK和ECLIPSE開發(fā)工具。1.3課程設(shè)計的預(yù)備知識熟悉JAVA語言及ECLIPSE開發(fā)工具。1.4課程設(shè)計要求按課程設(shè)計指導(dǎo)書提供的課題,要求學(xué)生在自行完成各個操作環(huán)節(jié),并能實現(xiàn)且達 到舉一反三的目的,完成一個項目解決一類問題。要求學(xué)生能夠全面、深入理解和熟練 掌握所學(xué)內(nèi)容,并能夠用其分析、設(shè)計和解答類似問題;對此能夠較好地理解和掌握, 能夠進行簡單分析和
5、判斷;能編寫出具有良好風(fēng)格的程序;掌握JAVA程序設(shè)計的基本 技能和面向?qū)ο蟮母拍詈头椒?;了解多線程、安全和網(wǎng)絡(luò)等編程技術(shù)。同時培養(yǎng)學(xué)生進 行分析問題、解決問題的能力;培養(yǎng)學(xué)生進行設(shè)計分析、設(shè)計方法、設(shè)計操作與測試、 設(shè)計過程的觀察、理解和歸納能力的提高。遼寧工業(yè)大學(xué)課程設(shè)計說明書(論文)2第 2 2 章課程設(shè)計內(nèi)容2.1課程設(shè)計主要內(nèi)容我設(shè)計的時鐘有的界面良好,比較簡潔美觀,程序有很強的實用性,實現(xiàn)程序與電 腦的時間的同步??梢燥@示時鐘,也可以顯示分針秒針,并可以在相應(yīng)位置調(diào)整時間。 而且初始運行會自動與電腦的時間校對,一般默認為同步,但還可以自己再次調(diào)節(jié),提 高了實用性。本系統(tǒng)共包括1個j
6、ava源文件。1、Clock源文件是本程序的主函數(shù)其作用是初始化 棋盤。2、setCurrentTime源文件實現(xiàn)電腦設(shè)置時間。3、paintHourPointer源文件為時針.4、paintSecondPointer源文件實現(xiàn)人與電腦設(shè)置秒針.5、paintMinuteDot源文件人與電腦設(shè)置 分針.2.2概要設(shè)計2.2.1自定義類說明*類名:Clock *作用:自定義主類,對鼠標拖拽的初始界面進行聲明*繼承的父類:JComponent類*實現(xiàn)的接口:沒有*表1-成員變量表表2.1 Clock成員變量成員變量描述變量類型名稱時針Stri ngHour分針Stri ngMin ute秒針Str
7、i ngSecond遼寧工業(yè)大學(xué)課程設(shè)計說明書(論文)3時間點TextFieldtext_1表2-方法表表2 Clock方法方法名功能備注setCurre ntTime設(shè)置當前時間構(gòu)造方法pain tHourPoi nter設(shè)置時針接口方法pain tSec on dPo in ter設(shè)置秒針接口方法pai ntMi nuteDot設(shè)置分針接口方法action Performed事件處理run程序運行2.3詳細設(shè)計import java.awt.*;import java.awt.geom.Ellipse2D;importjava.awt.geom.Ge neralPath;importjav
8、a.awt.geom.L in e2D;importjava.awt.geom.Recta ngle2D;importjava.util.Cale ndar;import java.util.Date;importjavax.sw in g.BorderFactory;importjavax.swi ng.J Comp onent;importjavax.sw in g.JFrame;importjavax.swi ng.UIMa nager;public class Clockexte ndsJComp onent遼寧工業(yè)大學(xué)課程設(shè)計說明書(論文)4this.radius = radius;
9、public void setCurre ntTime(Date time)/設(shè)置當前時間this.curre ntTime.setTime(time);public void setCurre ntTime(l ong millis)this.curre ntTime.setTimel nMillis(millis);publicIn setsDime nsio ngetPreferredSize()in sets=getI nsets();int r=(int)(radius =-1?0 :radius*(1+s)+1;returnnewDime nsion(r *2+in sets .l
10、eft+ in sets.right,r *2+in sets.top+in sets.bottom);返回一個指定寬、高的Dime nsio nprotected voidpain tComp onen Graphicsg)super.pa in tComp onen t(g);Graphics2D g2d = (Graphics2D) g;g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING ,privatestaticfinalColorINTEGRAL_COLOR=new128, 128);privateint radius;priv
11、ateCale ndarcurre ntTime=Cale ndar.getl nsta nce();privatedoubles =0.03;publicClock(i ntradius)Color遼寧工業(yè)大學(xué)課程設(shè)計說明書(論文)5Ren deri ngHi nts.VALUE_ANTIALIAS_ON);In setsin sets= getI nsets();intwid :=getWidth()-in sets .left-in sets.right;inthei =getHeight()- in sets.top-in sets.bottom;intr =(int) (Math.m
12、i n(wid,hei)/2/(1+s);g2d.tra nslate(i nsets.left +r *(1+s),in sets.top+ r *(1+s);g2d.scale(1,-1);for(int i=0; i60;i+)intan gle=90-i *6;double pos = calcPos(r,an gle);pai ntMi nu teDot(r, g2d, pos0,pos1, i %5=0);pai ntHourPoi nter(r, g2d);paintMinu tePo in ter(r, g2d);pain tSec on dPo in ter(r, g2d);
13、pai ntCe nterPoi nt(g2d);g2d.scale(1, -1);g2d.tra nslate(-i nsets.left - r *(1+s), -in sets.top - r *(1+s);private voidpai ntCe nterPoi nt(Graphics2D g2d)g2d.setColor(Color.BLUE);Recta ngle2Drect = newRecta ngle2D.Double(-2,-2,4,4);g2d.fill(rect);private voidpai ntMi nutePoi nter(i nt r, Graphics2D
14、g2d)intmin ute=curre ntTime.get(Cale ndar.MINUTE);intsec ond=curre ntTime.get(Cale ndar.SECOND);doublean gle=90-(mi nute+ seco nd /60.0)*6;Shapepoin terShape=createPo in terShape(r *0.8, r *0.04, r遼寧工業(yè)大學(xué)課程設(shè)計說明書(論文)60.08,an gle);g2d.setColor(Color.LIGHT_GRAY);g2d.fill(poi nterShap e);g2d.setColor(Col
15、or.DARK_GRAY);g2d.draw(poi nterShape);private voidpai ntHourPoi nter(i nt r, Graphics2D g2d)inthour =curre ntTime.get(Cale ndar.HOUR);intmin utecurre ntTime.get(Cale ndar.MINUTE);intsecond=curre ntTime.get(Cale ndar.SECOND);double an gle=90- (hour + min ute /60.0+ seco nd /3600.0)*30;Shapepoin terSh
16、ape =createPo in terShape(r *0.6, r *0.06, r0.1,an gle);g2d.setColor(Color.LIGHT_GRAY);g2d.fill(poi nterShap e);g2d.setColor(Color.DARK_GRAY);g2d.draw(poi nterShape);private ShapecreatePo in terShape(double r1, double r2,doublean gle)Gen eralPath gp = newGen eralPath();double pos = calcPos(r1,an gle
17、);doublepos1=calcPos(r2,an gle+90);gp.appe nd(new Lin e2D.Double(pos0,pos1,pos10,doublepos2=calcPos(r3,angle+180);gp.li neTo(float)pos20,(float)pos21);double pos3 = calcPos(r2, angle +270);double r3,pos11), true);遼寧工業(yè)大學(xué)課程設(shè)計說明書(論文)7gp.li neTo(float)pos30,(float)pos31);gp.closePath();return gp;private
18、 voidpai ntSeco ndPoi nter(i nt r, Graphics2D g2d)g2d.setColor(Color.BLACK);intsec ond=curre ntTime.get(Cale ndar.SECOND);int an gle =90- sec ond*6;double pos = calcPos(r *0.9,an gle);double pos1=calcPos(r *0.2,an gle+180);Li ne2Dline = newLi ne2D.Double(pos10,pos11,pos0,pos1);g2d.draw(l in e);priva
19、te void paintMinu teDot(i nt r, Graphics2D g2d, double x, double y, boolea n flag)g2d.setColor(flag ?Color.RED : Color.BLACK);if (flag) /Recta ngle2D rect= new Recta ngle2D.Double(Ellipse2Drect = newEllipse2D.Double(x - r*s, y -r * s, r* s *2, r * s *2);g2d.fill(rect);else /Recta ngle2D rect = newRe
20、cta ngle2D.Double(遼寧工業(yè)大學(xué)課程設(shè)計說明書(論文)8Ellipse2D rect = new Ellipse2D.Double(try UIMa nager.setLookA ndFeel(UIMa nager.getSystemLookAndFeelClassName(); catch (Excepti on e) e.pri ntStackTrace();clock.setBorder(BorderFactory.createEmptyBorder(10, 10,10,10);JFrame f = new JFrame(”軟件081班071404011);/f.setB
21、ou nds(380,200,500,600);f.getCo nte ntPa ne().add(clock,BorderLayout.CENTER);f.pack();f.setLocati on RelativeTo (nu II);f.setDefaultCloseOperati on (JFrame.EXIT_ON_CLOSE);x - r *0.02, y - r0.02, r *0.04, r0.04);g2d.fill(rect)private doublecalcPos(double r, double an gle)doubleradia nMath.toRadia ns(
22、angle);double xdouble yMath.cos(radian);Math.si n( radiaretur nnew double x,y;public static voidmain( Stri ngargs)final Clock clocknew Clock(50);孫慶賀遼寧工業(yè)大學(xué)課程設(shè)計說明書(論文)9f.setVisible(true);new Thread() publicvoidrun()while(true)try Thread.sleep(IOOO); catch (In terruptedExceptio n ex) ex.pri ntStackTrac
23、e();clock.setCurre ntTime(System.curre ntTimeMillis();clock.repa in t();.start();i nt y1 = (in t)(r - 10) * Math.cos(rad * s);g.drawLi ne(x + r, y + r, x + r + x1, y + r - y1);/分針g.setColor(Color.BLUE);x1 = (in t)(r - r / 2.5) * Math.s in (rad * m);y1 = (in t)(r - r / 2.5) * Math.cos(rad * m); g.dra
24、wLi ne(x + r, y + r, x + r + x1, y + r - y1);/時針g.setColor(Color.CYAN);x1 = (in t)(r - r / 1.5) * Math.s in (rad * h);y1 = (in t)(r - r / 1.5) * Math.cos(rad * h);g.drawLi ne(x + r, y + r, x + r + x1, y + r - y1);/數(shù)字g.setColor(Color.YELLOW);int d = 29;遼寧工業(yè)大學(xué)課程設(shè)計說明書(論文)10for (int i = 1; i = 12; i+) x
25、1 = (in t)(r - 10) * Math.s in (rad * d);y1 = (int)(r - 10) * Math.cos(rad * d);g.drawStri ng(i + , x + r + x1 - 4, x + r - y1 + 5);d+=30;小點d = 0;for (int i = 0; i = 360) s = 0;m+=6;if (m = 72 | m = 144 | m = 216 | m = 288) 遼寧工業(yè)大學(xué)課程設(shè)計說明書(論文)11h+=6;if (m = 360) m = 0;h+=6;if (h =360) h = 0;this.repai
26、 nt();int x, y, r;int h, m, s;小、時,分鐘,秒double rad = Math.PI / 180;public ClockPaint(int x, int y, int r) this.x = x;this.y = y;this.r = r;Cale ndar now = new Gregoria nCale ndar();s = now.get(Cale ndar.SECOND) * 6;/獲得秒轉(zhuǎn)換成度數(shù)m = now.get(Cale ndar.MINUTE) * 6;/獲得分鐘h = (no w.get(Cale ndar.HOUR_OF_DAY) -
27、12) * 30 + now.get(Cale ndar.MINUTE) / 126;/獲得小時Thread t = new Thread(this);t.start();public void pain t(Graphics g) /清屏super.pa in t(g);g.setColor(Color.BLACK);g.fillRect(0, 0, r * 3, r * 3);遼寧工業(yè)大學(xué)課程設(shè)計說明書(論文)12/畫圓g.setColor(Color.WHITE);g.drawOval(x, y, r * 2, r * 2);/秒針g.setColor(Color.RED);int x1
28、 = (int)(r - 10) * Math.sin(rad * s);/定義MyTimer類class MyTimerl exte nds JFrame static in t cou nt=O; /判斷是否重定義了時間/構(gòu)造函數(shù)public MyTimer1()/定義窗口大小setSize(320, 200);/定義窗口標題setTitle(測試自定義時鐘類!);Container c = getC onten tPa ne();/ new ClockCanvas(北京時間, GMT+8) c.add(new ClockCanvas(北京時間,GMT+8); /定義接口in terfac
29、e TimerListe nerlvoid timeElapsed(Timer1 t);class Timerl extends Thread類Timerl遼寧工業(yè)大學(xué)課程設(shè)計說明書(論文)13private TimerListe nerl target;private int in terval;public Timer1(i nt i, TimerListe nerl t)target = t;in terval = i;setDaem on (true);public void run() try while (!i nterrupted()sleep(i nterval);target
30、.timeElapsed(this); catch(l nterruptedExcepti on e) class ClockCa nvas exte nds JPa nel /clockca nvasimplements TimerListener1static int sec onds = 0;private Stri ng city;private Gregoria nCale ndar cale ndar;/構(gòu)造函數(shù)public ClockCa nv as(Stri ng c, String tz)city = c;cale ndar = new Gregoria nCale ndar
31、(TimeZ on e.getTimeZ on e(tz);Timer1 t = new Timer1(1000, this);t.start();遼寧工業(yè)大學(xué)課程設(shè)計說明書(論文)14setSize(180, 180);繪制鐘面public void pain tComp onen Graphics g)super.pa in tComp onen t(g);g.drawOval(100, 5, 120, 120);g.drawOval(101,6, 118, 118);/分離時間double hourA ngle = 2 * Math.PI* (seco nds - 3 * 60 * 60
32、) / (12 * 60 * 60);double mi nuteA ngle = 2 * Math.PI* (seconds - 15 * 60) / (60 * 60);double seco ndAngle = 2 * Math.PI* (seconds - 15) / 60; public void timeElapsed(Timer1 t) calendar.setTime(new Date();if(MyTimer1.count=1) int a=1;seco nds=MyTimer.i ntHour*60*60+MyTimer.i ntMi nute*60+MyTimer.i n
33、tSeco nd; secon ds+=a;/a為秒自力卩repai nt();else seco nds = cale ndar.get(Cale ndar.HOUR) * 60 * 60+ cale ndar.get(Cale ndar.MINUTE) * 60+ cale ndar.get(Cale ndar.SECOND);repai nt(); /定義時鐘類class MyTimerimpleme nts TimerListe ner遼寧工業(yè)大學(xué)課程設(shè)計說明書(論文)15/定義時鐘類的屬性static int in tHour,i ntMi nu te,i ntSeco nd;/構(gòu)造
34、函數(shù)public MyTimer()setCurre ntTimeAsSystemTime();Timer t = new Timer(1OOO, this);實例Timer類,里面有run方法t.start();顯示當前時間public void displayCurre ntTime()JOptio nPan e.showMessageDialog( null,i ntHou葉:+i ntMi nute+:+i ntSeco nd); /設(shè)定當前時間public void setCurre ntTime() /從對話框輸入時,分秒String strTemp=JOptionPane.sho
35、wlnputDialog(null,請輸入當前小時(24小時制):);int iHour=I nteger.parsel nt(strTemp);strTemp=JOptio nPan e.showI nputDialog( nu II,請輸入當前分:);int iMi nu te=I nteger.parsel nt(strTemp);strTemp=JOptio nPan e.showI nputDialog( nu II,請輸入當前秒:);int iSeco nd=l nteger.parsel nt(strTemp);/設(shè)定當前時間為對話框輸入的時間if(iHour=0&i Hour2
36、4)in tHour=iHour;tran sform(a ngle);g.setcolor(color);/設(shè)定當前時間為系統(tǒng)時間,構(gòu)造函數(shù)調(diào)用public void setCurre ntTimeAsSystemTime() 遼寧工業(yè)大學(xué)課程設(shè)計說明書(論文)16定義Date類的一個對象,用來獲取系統(tǒng)時間Date timeCurre nt=new Date();catch(l nterruptedExcepti on e) 遼寧工業(yè)大學(xué)課程設(shè)計說明書(論文)172.4測試分析241程序運行情況當程序正常運行的時候,它能清晰的顯示時鐘界面。默認為與系統(tǒng)時間同步,如果出現(xiàn)錯誤,就會進行歸零。運行界面如圖2.1:圖 2.1 運行界面2.4.2程序異常處理當線程在活動之前或活動期間處于正在等待、休眠或占用狀態(tài)且該線程被中斷時, 拋出該異常。有時候,一種方法可能希望測試當
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026湖北武漢市公立高中招聘3人備考題庫附答案詳解
- 2026陜西黃河集團有限公司2026年校園招聘備考題庫及參考答案詳解一套
- 2026湖南常德市臨澧縣供銷社現(xiàn)代農(nóng)業(yè)服務(wù)有限公司招聘1人備考題庫及答案詳解(新)
- 2026福建三明市永安市婦聯(lián)幼兒園招聘編外人員1人備考題庫及完整答案詳解1套
- 2026浙江金華市永康市動感新天地商旅有限公司招聘勞務(wù)派遣人員3人備考題庫及1套參考答案詳解
- 2026遼寧鞍山市海城市融媒體中心公益性崗位招聘2人備考題庫及答案詳解(易錯題)
- 2026福建福州墨爾本理工職業(yè)學(xué)院招聘備考題庫及答案詳解參考
- 2026湖北恩施州宣恩縣博物館招聘公益性崗位人員1人備考題庫附答案詳解
- 2026浙江麗水市招聘專業(yè)化人才37人備考題庫參考答案詳解
- 2026湖北恩施州宣恩貢柚生物科技發(fā)展有限公司招聘1人備考題庫及完整答案詳解
- 孕婦營養(yǎng)DHA課件
- 2025年湖北煙草專賣局真題試卷及答案
- 2025-2026學(xué)年廣東省廣州113中學(xué)八年級(上)期中語文試卷
- 浙江省臺金七校聯(lián)盟2025-2026學(xué)年高一上學(xué)期11月期中聯(lián)考語文試題含答案
- 生物質(zhì)發(fā)電安全運行方案
- 2025-2026學(xué)年高考二輪化學(xué)精準復(fù)習(xí):電解質(zhì)溶液(課件)
- 實施指南(2025)《EJT 20050-2014 非反應(yīng)堆核設(shè)施通風(fēng)系統(tǒng)的設(shè)計及運行準則》
- 2026屆江西省南昌二中學(xué)物理九年級第一學(xué)期期末考試試題含解析
- 新安全生產(chǎn)法2025完整版
- ESG理論與實務(wù) 課件 第7-12章 ESG 信息披露- ESG的全球行動
- (已壓縮)國民體質(zhì)測定標準(2023年修訂)
評論
0/150
提交評論