Java課程設(shè)計(jì)時(shí)鐘圖形模擬_第1頁(yè)
Java課程設(shè)計(jì)時(shí)鐘圖形模擬_第2頁(yè)
Java課程設(shè)計(jì)時(shí)鐘圖形模擬_第3頁(yè)
Java課程設(shè)計(jì)時(shí)鐘圖形模擬_第4頁(yè)
Java課程設(shè)計(jì)時(shí)鐘圖形模擬_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、課 程 設(shè) 計(jì) 任 務(wù) 書(shū)專 業(yè)通信工程班 級(jí)13級(jí)四班姓 名張凱銘設(shè) 計(jì) 起 止 日 期設(shè)計(jì)題目:時(shí)鐘圖形模擬設(shè)計(jì)任務(wù)(主要技術(shù)參數(shù)):硬件環(huán)境:CPU:Pentium 2.8GHz以上 內(nèi)存:256MB以上 硬盤(pán)空間:80G以上軟件環(huán)境:(1)操作系統(tǒng):Windows XP(2)開(kāi)發(fā)軟件:JDK,JCreator實(shí)現(xiàn)功能:通過(guò)編程最終使電腦屏幕顯示模擬時(shí)鐘,并正常運(yùn)行顯示表針時(shí)間,電腦上呈現(xiàn)一個(gè)圖種的模型表示電腦上的時(shí)間,并可以模擬時(shí)鐘走動(dòng)。指導(dǎo)教師評(píng)語(yǔ):成績(jī): 簽字:年 月 日目 錄1 設(shè)計(jì)內(nèi)容及要求11.1 設(shè)計(jì)內(nèi)容11.2 設(shè)計(jì)目的及意義12 概要設(shè)計(jì)12.1功能簡(jiǎn)介12.2功能說(shuō)明

2、:12.3 總體程序框圖23 設(shè)計(jì)過(guò)程33.1各個(gè)模塊程序流程圖33.2運(yùn)行界面及關(guān)鍵代碼44設(shè)計(jì)結(jié)果與分析64.1設(shè)計(jì)結(jié)果64.2分析65 總結(jié)76 參考文獻(xiàn)7附程序清單及源程序81 設(shè)計(jì)內(nèi)容及要求1.1 設(shè)計(jì)內(nèi)容通過(guò)編程最終使電腦屏幕顯示模擬時(shí)鐘,并正常運(yùn)行顯示表針時(shí)間,電腦上呈現(xiàn)一個(gè)圖種的模型表示電腦上的時(shí)間,并可以模擬時(shí)鐘走動(dòng)。1.2 設(shè)計(jì)目的及意義設(shè)計(jì)目的及意義:熟悉Visual c+ 6.0軟件的應(yīng)用,C語(yǔ)言相關(guān)函數(shù),語(yǔ)句的學(xué)習(xí),查找資料代碼等,編程、調(diào)試、運(yùn)行、效果顯示調(diào)整,完成上傳,熟悉編程語(yǔ)言,了解程序運(yùn)行以及圖像顯示等C語(yǔ)言的應(yīng)用,通過(guò)編程實(shí)現(xiàn)既定功能。培養(yǎng)自學(xué)能力,獨(dú)立思

3、考能力,將理論形成實(shí)際運(yùn)用,同時(shí)可以掌握下列運(yùn)算符的使用:1 .數(shù)據(jù)類型(整形、實(shí)型、字符型、指針、數(shù)組、結(jié)構(gòu)等)。2 .運(yùn)算類型(算術(shù)運(yùn)算、邏輯運(yùn)算、自增自減運(yùn)算、賦值運(yùn)算等)。3 .程序結(jié)構(gòu)(順序結(jié)構(gòu)、判斷選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu))5 .復(fù)雜任務(wù)功能分解方法(自頂向下逐步求精、模塊化設(shè)計(jì)、信息隱藏等)。6 .學(xué)會(huì)編制結(jié)構(gòu)清晰、風(fēng)格良好、數(shù)據(jù)結(jié)構(gòu)適當(dāng)?shù)腃語(yǔ)言程序。2 概要設(shè)計(jì)2.1功能簡(jiǎn)介實(shí)現(xiàn)功能如下:(1)在屏幕上最終顯示一個(gè)圖形時(shí)鐘(用程序繪制一個(gè)與時(shí)鐘樣式相似即可),能模擬機(jī)械鐘表行走。(2)數(shù)字式顯示時(shí)間與指針式顯示時(shí)間一致,且各指針運(yùn)動(dòng)規(guī)律正確。(3)能準(zhǔn)確的利用數(shù)字顯示時(shí)間和日期。(4

4、)按ESC可以退出程序。2.2功能說(shuō)明:內(nèi)容:指針式時(shí)鐘模塊完成在屏幕上顯示一個(gè)活動(dòng)時(shí)鐘,模擬機(jī)械鐘表行走,時(shí)針,分針,秒針不同顏色且順時(shí)針旋轉(zhuǎn),獲取系統(tǒng)時(shí)間;數(shù)字式時(shí)鐘模塊完成顯示時(shí)間格式年月日時(shí)分秒,小時(shí)為24小時(shí)制,分和秒為60進(jìn)制與指針式的時(shí)鐘顯示時(shí)間同步并獲取系統(tǒng)時(shí)間。說(shuō)明:指針順時(shí)針旋轉(zhuǎn);指針式的時(shí)鐘表盤(pán)為圓形;圓周上分布均勻的12個(gè)刻度;有3個(gè)長(zhǎng)度不同的指針,即時(shí)針,分針,秒針的運(yùn)動(dòng)具有規(guī)律性;數(shù)字鐘顯示時(shí)間格式年月日時(shí)分秒,小時(shí)為24進(jìn)制,分和秒為60進(jìn)制;指針式的時(shí)鐘與數(shù)字式的時(shí)鐘顯示時(shí)間同步;其主要的設(shè)計(jì)思想如下:1 . 確定秒針的走時(shí),將圓分成60份每過(guò)一秒,秒重要轉(zhuǎn)過(guò)1

5、/60個(gè)園,即一等份。2 . 確定分針真的走時(shí),將圓分成60份每過(guò)一分,分針要轉(zhuǎn)過(guò)1/60個(gè)圓,即一等份分針自己走過(guò)的再加秒針的,才是此四分鐘的位置。 3 . 時(shí)鐘走動(dòng)與系統(tǒng)時(shí)間聯(lián)系:每過(guò)一秒畫(huà)出秒針,并且除去前一秒的秒針,分針和 秒針一樣,畫(huà)線函數(shù)與時(shí)間聯(lián)系使用變量。4 . 設(shè)置橫縱坐標(biāo)及表針:X = a*cos(b*pi/180)+300;Y=a*sin(b*pi/180)+240;2.3 總體程序框圖模擬時(shí)鐘轉(zhuǎn)動(dòng)程序指針式時(shí)鐘數(shù)字式時(shí)鐘(系統(tǒng)模塊圖)首先,先畫(huà)出個(gè)鐘的大致輪廓。從輸出數(shù)字到畫(huà)出外輪廓,到標(biāo)出短線到畫(huà)出時(shí)針、分針、秒針。這個(gè)輪廓就已經(jīng)完成了。然后,為了更加這個(gè)鐘的實(shí)用性。就

6、通過(guò)獲取系統(tǒng)時(shí)間來(lái)結(jié)合實(shí)際意義,這是最簡(jiǎn)單,最好的方法。從應(yīng)用上,它顯示的是實(shí)際的時(shí)間,增強(qiáng)了可用性;從編程上,不用再?gòu)?fù)雜地再編一個(gè)更時(shí)間一樣的函數(shù)來(lái),減少程序的篇幅、復(fù)雜性和編程者的工作量。接著順帶利用時(shí)間的變量名來(lái)畫(huà)時(shí)針,分針,秒針。最后,為了讓時(shí)針,分針,秒針讓觀察者看起來(lái)是連續(xù)的變化,即形象地模擬真實(shí)的機(jī)械鐘表那樣運(yùn)動(dòng)。3 設(shè)計(jì)過(guò)程3.1各個(gè)模塊程序流程圖Start初始化圖形系統(tǒng)設(shè)置窗體的背景色、前景色及畫(huà)筆畫(huà)出主體框架的邊直線、邊角弧線畫(huà)出時(shí)鐘的框架、標(biāo)題及時(shí)分秒的刻度;繪制數(shù)字式時(shí)鐘下的數(shù)字時(shí)鐘的邊框架調(diào)用時(shí)鐘處理程序獲取當(dāng)前時(shí)間并顯示調(diào)用消息處理函數(shù)刷新窗口顯示(1秒)創(chuàng)建數(shù)字鐘

7、字體對(duì)數(shù)字鐘進(jìn)行輸出判斷修改是增加還是減少Esc(任意鍵)調(diào)出digitalClockEnd3.2運(yùn)行界面及關(guān)鍵代碼3.2.1運(yùn)行結(jié)果在桌面顯示一個(gè)模擬的時(shí)鐘,時(shí)鐘的秒針、分針與時(shí)針隨著時(shí)間的推移而不斷移動(dòng)就像我們經(jīng)??匆?jiàn)的圓形電子時(shí)鐘一樣。我們可以通過(guò)程序隨意改動(dòng)時(shí)鐘的背景顏色以及指針的顏色和表盤(pán)大小等問(wèn)題,同時(shí)還能在桌面顯示一些簡(jiǎn)單的英文以及圖案等。3.2.2關(guān)鍵代碼分析及說(shuō)明(1)本系統(tǒng)中主要的數(shù)據(jù)結(jié)構(gòu)就是time結(jié)構(gòu)體struct time unsigned char m;/*分鐘*/ unsigned char h/*小時(shí)*/ unsigned char s/*秒*/time結(jié)構(gòu)體定

8、義在dos.h文件中,可用來(lái)保存系統(tǒng)的當(dāng)前時(shí)間,其中各字段的值的含義如下。unsigned char m:保存分鐘值。unsigned char h:保存小時(shí)值。unsigned char s:保存秒數(shù)。(2)全局變量下面對(duì)程序用到的全局變量及數(shù)組進(jìn)行說(shuō)明。int h,m,s:此3個(gè)全局變量分別用來(lái)保存小時(shí)、分鐘、秒數(shù)。int x,x1,x2,y,y1,y2:保存數(shù)字時(shí)鐘中小時(shí)、分、秒在屏幕中顯示的坐標(biāo)值。struct time t1:定義一個(gè)time結(jié)構(gòu)類型的數(shù)組,此數(shù)組只有t0一個(gè)元素。(3)程序流程系統(tǒng)的執(zhí)行應(yīng)從運(yùn)行開(kāi)始,顯示界面正常運(yùn)行,直到用戶選擇退出系統(tǒng)為止。(4)流程圖功能描述畫(huà)

9、圓模板: #inlude “graphics.h” #inlude ”math.h ” Void init()Circle(300,240,200); 畫(huà)時(shí)間刻線模塊:For(i=0;i=60;i+)If(i%5=0)L=15;elseL=5;X1=200*sin()+300;Y1=200*cos()+240;時(shí)間模塊:Gettime(d)4設(shè)計(jì)結(jié)果與分析4.1設(shè)計(jì)結(jié)果運(yùn)行程序后在屏幕上顯示出一時(shí)鐘,鐘上的時(shí)間與電腦上的時(shí)間完全一樣,并且在秒針運(yùn)行的同時(shí)伴隨聲音如同下圖一樣的圖案:4.2分析在桌面會(huì)顯示一個(gè)模擬的時(shí)鐘,時(shí)鐘的秒針、分針與時(shí)針隨著時(shí)間的推移而不斷移動(dòng)就像我們經(jīng)常看見(jiàn)的圓形電子時(shí)鐘

10、一樣。我們可以通過(guò)程序隨意改動(dòng)時(shí)鐘的背景顏色以及指針的顏色和表盤(pán)大小等問(wèn)題,同時(shí)還能在桌面顯示一些簡(jiǎn)單的英文以及圖案等。因?yàn)槭浅绦蚩刂茣r(shí)鐘的,所以起始時(shí)間是通過(guò)程序控制的,要想改動(dòng)還是需要通過(guò)改變程序獲得,并不是隨系統(tǒng)時(shí)間而確定起始時(shí)間的。5 總結(jié)通過(guò)本次的課程設(shè)計(jì),我深刻的體會(huì)到了C語(yǔ)言的強(qiáng)大。雖然本次的課程設(shè)計(jì)對(duì)我來(lái)說(shuō)有一定的難度,但是在朋友的幫助下我還是很好地完成了(自我感覺(jué))。從而也認(rèn)識(shí)到了程序的內(nèi)涵,使我對(duì)編程產(chǎn)生了很大的興趣。其實(shí)編程很好玩的,在編程中不但可以完成一些現(xiàn)實(shí)中從在的東西,還可以制作出很多意想不到東西。還有對(duì)于此次課程設(shè)計(jì)讓我深刻的認(rèn)識(shí)到自己學(xué)得的遠(yuǎn)遠(yuǎn)還太少,需要我們自

11、發(fā)的去學(xué)習(xí)知識(shí)才可以成長(zhǎng)的更快!其次,對(duì)于此次設(shè)計(jì)我得坦誠(chéng)一件事,那就是我一開(kāi)始選的TC程序,運(yùn)行的時(shí)候總是要我輸入?yún)?shù),由于自己的知識(shí)局限,總是敲不出結(jié)果,所以我又去百度文庫(kù)搜了一個(gè)vc程序,雖然最終使運(yùn)行出來(lái)了,可是這次事件讓我認(rèn)識(shí)自身知識(shí)的不足,所以,這次過(guò)后會(huì)更加認(rèn)真的學(xué)習(xí)一些書(shū)面沒(méi)有的知識(shí),充實(shí)自己。6 參考文獻(xiàn)C語(yǔ)言程序設(shè)計(jì)(第二版)M.北京:清華大學(xué)出版社 譚浩強(qiáng) 1999數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)M.北京:清華大學(xué)出版社 嚴(yán)魏敏,吳偉民 1997C語(yǔ)言程序設(shè)計(jì)M. 黃明等.大連理工大學(xué)出版社,2005C語(yǔ)言課程設(shè)計(jì)案例精編. 郭翠英 . 中國(guó)水利水電出版 . 2004年3月C語(yǔ)言程序

12、設(shè)計(jì)教程 曾春平,朱小谷,晏海華.北京希望電子出版社 . 2005年3月C語(yǔ)言課程設(shè)計(jì)案例精編清華大學(xué)出版社 姜靈芝、余健 2008.1C語(yǔ)言程序設(shè)計(jì)西安電子科技大學(xué)出版社田祥宏主編2007.12附程序清單及源程序(1)TC2.0上的源程序#includegraphics.h#includemath.h#includedos.h#define pi 3.1415926#define X(a,b,c) x=a*cos(b*c*pi/180-pi/2)+300#define Y(a,b,c) y=a*sin(b*c*pi/180-pi/2)+240#define d(a,b,c) X(a,b,c)

13、;Y(a,b,c);line(300,240,x,y)void init() /*劃時(shí)鐘邊框函數(shù)*/int i,l,x1,x2,y1,y2;setbkcolor(1);circle(300,240,200);circle(300,240,205);circle(300,240,5);for(i=0;i60;i+) /*劃鐘點(diǎn)上的短線*/if(i%5=0)l=15;elsel=5;x1=200*sin(i*6*pi/180)+300;y1=200*cos(i*6*pi/180)+240;x2=(200-l)*sin(i*6*pi/180)+300;y2=(200-l)*cos(i*6*pi/18

14、0)+240;line(x1,y1,x2,y2);main()int x,y,i,k=1;int gdriver=9,gmode=2;unsigned char h,m,s;int o,p,q;float n;struct time t1;struct date d1;initgraph(&gdriver,&gmode,c:tc);initgraph(&gdriver,&gmode,c:tc);for(i=0;i=6;i+)settextstyle(TRIPLEX_FONT,HORIZ_DIR,i); /*控制輸出字符的字體,方向,大小*/cleardevice();settextjustif

15、y(1,1); /*在指定坐標(biāo)上輸出字符串*/outtextxy(300,80,12) ;outtextxy(300,390,6);outtextxy(140,230,9);outtextxy(460,230,3);outtextxy(380,100,1);outtextxy(220,100,11);outtextxy(430,160,2);outtextxy(430,310,4);outtextxy(380,370,5);outtextxy(220,370,7);outtextxy(160,160,10);outtextxy(160,310,8);init();setwritemode(1)

16、; /*設(shè)置畫(huà)線的輸出模式*/if(k!=0)getdate(d); /*獲得系統(tǒng)日期函數(shù)*/o=d0.da_year;p=d0.da_mon;q=d0.da_day;gettime(t); /*獲得系統(tǒng)時(shí)間函數(shù)*/h=t0.ti_hour;m=t0.ti_min;s=t0.ti_sec;setcolor(7); /*設(shè)置時(shí)針顏色*/n=(float)h+(float)m/60;d(150,n,30); /*畫(huà)出時(shí)針*/setcolor(14); /*設(shè)置分針顏色*/d(170,m,6); /*畫(huà)出分針*/setcolor(4); /*設(shè)置秒針顏色*/d(190,s,6); /*畫(huà)出秒針*/w

17、hile(!kbhit() /*控制程序按下任意鍵退出*/while(t0.ti_sec=s)gettime(t);gotoxy(44,18); /*使光標(biāo)移動(dòng)到指定坐標(biāo)*/printf(bbbbbbbbb); /*退格,使表示時(shí)間的字符串不斷變化*/sound(400); /*按給定的頻率打開(kāi)PC揚(yáng)聲器*/delay(70); /*中斷程序的執(zhí)行,時(shí)間為70毫秒*/sound(200);delay(30);nosound(); /*按給定的頻率關(guān)閉PC揚(yáng)聲器*/setcolor(4);d(190,s,6);s=t0.ti_sec;d(190,s,6);if(t0.ti_min!=m)setc

18、olor(14);d(170,m,6);m=t0.ti_min;d(170,m,6);if(t0.ti_hour!=h)setcolor(7);d(150,h,30);h=t0.ti_hour;d(150,h,30);sound(1000);delay(240);nosound();delay(140);sound(2000);delay(240);nosound();if(s10) /*用字符的形式輸出時(shí)間*/ if(m10)printf(%u:0%u:0%u,h,m,s);elseprintf(%u:%u:0%u,h,m,s);else if(m10)printf(%u:0%u:%u,h,

19、m,s);elseprintf(%u:%u:%u,h,m,s);gotoxy(34,19); /*在指定坐標(biāo)上輸出日期*/printf(%d年%d月%d日,o,p,q);printf(bbbbbbbbb);getch();closegraph();(2)visual c+ 6.0上運(yùn)行的源程序#define _CRT_SECURE_NO_WARNINGS#include #include #include #pragma comment(lib, user32.lib)#pragma comment(lib, gdi32.lib)#pragma comment(linker, /SUBSYST

20、EM:Windows) void GetPos(double degree, int len, int* x, int* y) *x = len * sin(degree); *y = len * cos(degree); void DrawClock(HWND hw, HDC h, int hour, int minute, int second) HDC bufdc = CreateCompatibleDC(h); HBITMAP buf = CreateCompatibleBitmap(bufdc, 200, 200); RECT cr; HBRUSH bBg = CreateSolid

21、Brush(RGB(255, 255, 255); GetClientRect(hw, &cr); SelectObject(bufdc, bBg); SelectObject(bufdc, buf); FillRect(bufdc, &cr, bBg); int sx, sy, ex, ey; int i; for(i = 0; i tm_hour, pst-tm_min, pst-tm_sec); EndPaint(h, &ps); return 0; case WM_DESTROY: KillTimer(h, 1); PostQuitMessage(0); return 0; default: return DefWindowProc(h, m, w, l); int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR szCmd, INT nShow) WNDCLASS wc; ZeroMemory(&wc, sizeof(wc); wc.style = C

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論