C語(yǔ)言模擬時(shí)鐘轉(zhuǎn)動(dòng)課設(shè)報(bào)告附代碼_第1頁(yè)
C語(yǔ)言模擬時(shí)鐘轉(zhuǎn)動(dòng)課設(shè)報(bào)告附代碼_第2頁(yè)
C語(yǔ)言模擬時(shí)鐘轉(zhuǎn)動(dòng)課設(shè)報(bào)告附代碼_第3頁(yè)
C語(yǔ)言模擬時(shí)鐘轉(zhuǎn)動(dòng)課設(shè)報(bào)告附代碼_第4頁(yè)
C語(yǔ)言模擬時(shí)鐘轉(zhuǎn)動(dòng)課設(shè)報(bào)告附代碼_第5頁(yè)
已閱讀5頁(yè),還剩7頁(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í)針轉(zhuǎn)動(dòng)程序姓名:學(xué)號(hào):完成日期:2012年12月 設(shè)計(jì)目的加深對(duì)講授內(nèi)容的理解,尤其是一些語(yǔ)法規(guī)定。通過(guò)課程設(shè)計(jì),自然地、熟練地掌握。熟悉所用的計(jì)算機(jī)系統(tǒng)的操作方法,也就是熟悉語(yǔ)言程序開(kāi)發(fā)的環(huán)境。學(xué)會(huì)上機(jī)調(diào)試程序。熟悉C語(yǔ)言圖形模式下的編程,掌握利用C語(yǔ)言相關(guān)函數(shù)開(kāi)發(fā)電子時(shí)鐘的基本原理。能模擬機(jī)械鐘表行走;要準(zhǔn)確地利用數(shù)字顯示時(shí)間;在屏幕上顯示一個(gè)活動(dòng)時(shí)鐘;程序界面設(shè)計(jì)合理,色彩得體大方,顯示正確;各指針運(yùn)動(dòng)規(guī)律正確;數(shù)字式時(shí)鐘的時(shí)間顯示與指針式時(shí)鐘顯示一致。 總體設(shè)計(jì)電子時(shí)鐘動(dòng)畫(huà)顯示模塊轉(zhuǎn)動(dòng)時(shí)針處理模塊數(shù)字時(shí)鐘處理模塊 電子時(shí)鐘的功能描述開(kāi)始進(jìn)入圖形模式進(jìn)入主體界面 顯示動(dòng)態(tài)圖像結(jié)束退

2、出系統(tǒng)顯示轉(zhuǎn)動(dòng)時(shí)鐘數(shù)字時(shí)鐘的顯示 電子時(shí)鐘流程圖模塊描述動(dòng)畫(huà)處理模塊 在屏幕上顯示sin和cos型的動(dòng)態(tài)函數(shù)圖像,顯示運(yùn)動(dòng)的問(wèn)候語(yǔ)。轉(zhuǎn)時(shí)針動(dòng)處理模塊 指針式的時(shí)鐘表盤(pán)為橢圓形并且圓周上有分布均勻的12個(gè)刻度刻度顯示清楚鐘面上有長(zhǎng)度不相同的指針即時(shí)針、分針、秒針指針的運(yùn)動(dòng)具有規(guī)律性為順時(shí)針。數(shù)字時(shí)鐘處理模塊 數(shù)字鐘顯示時(shí)間的格式是年月日時(shí)分秒小時(shí)為24進(jìn)制,分鐘和秒是60進(jìn)制,指針式的時(shí)鐘和數(shù)字式的時(shí)鐘顯示的時(shí)間同步且兩個(gè)時(shí)鐘所顯示的時(shí)間與計(jì)算機(jī)的系統(tǒng)時(shí)間一致。 詳細(xì)設(shè)計(jì)time結(jié)構(gòu)體strume time usigned char ti_min; usigned char ti_hour; u

3、signed char ti_hud; usigned char ti_sec; ;time 結(jié)構(gòu)體定義在dos.h文件中,可以保存系統(tǒng)的當(dāng)前時(shí)間。全局變量double h,m,s;這三個(gè)變量分別保存小時(shí),分鐘,秒。double x,y,x1,y1,x2,y2;保存數(shù)字時(shí)鐘中小時(shí)分鐘秒在屏幕中顯示的位置。struct time t1;定義一個(gè)time結(jié)構(gòu)類型的數(shù)組。函數(shù)功能的描述1. def()函數(shù)原型: void def()def()函數(shù)是用來(lái)輸出一組彩帶的,通過(guò)輸入位置和顏色的變化來(lái)輸出sin型的彩帶,且在整個(gè)函數(shù)中保留結(jié)果。2. abc()函數(shù)原型: void abc()abc()函數(shù)是

4、用來(lái)在退出系統(tǒng)是輸出運(yùn)動(dòng)的問(wèn)候語(yǔ),函數(shù)類型單一且比較簡(jiǎn)單。3 .digitclock()函數(shù)原型:void digitclock()digitclock函數(shù)用于在(x,y)位置顯示clock值,clock值為時(shí)分秒。4. clockhandle()函數(shù)原型:void clockhandle()clockhandle()函數(shù)用于完成時(shí)針轉(zhuǎn)動(dòng)和數(shù)字時(shí)鐘的顯示,包括時(shí)針轉(zhuǎn)動(dòng)角度的運(yùn)算,還有對(duì)聲音的輸出。5 . main()函數(shù)原型: void main()main()函數(shù)是主函數(shù),既包括繪畫(huà)表盤(pán)的基本框架,又有對(duì)其他函數(shù)的調(diào)用。 函數(shù)測(cè)試與調(diào)試 在函數(shù)編寫(xiě)完成后,進(jìn)行過(guò)多次測(cè)試。在測(cè)試過(guò)程中遇到很多

5、的問(wèn)題,像數(shù)字時(shí)鐘的顯示位置與理想中的有偏差,轉(zhuǎn)動(dòng)時(shí)針移動(dòng)后痕跡不能清除。這些問(wèn)題通過(guò)對(duì)clockhandle()的調(diào)整得到了很好的解決。 還有就是在動(dòng)畫(huà)處理上運(yùn)動(dòng)時(shí)間的間隔和遇到路程的測(cè)試遇到了問(wèn)題,但最后通過(guò)查閱資料都得到了解決。 源程序清單#include#include#include#include#include#include#define PI 3.1415926#define ESC 0x11b#define step 10 /*函數(shù)聲明*/int digithour(double);int digitmin(double);int digitsec(double);void

6、 digitclock(int,int,int);void clockhandle();void abc();void def();double h,m,s,day,mon;double x,x1,x2,y,y1,y2;struct time t1; /*主函數(shù)*/main() int driver,mode=0,i,j; driver=DETECT; /*自動(dòng)檢測(cè)顯示設(shè)備*/ initgraph(&driver,&mode,); /*初始化圖形系統(tǒng) */ setlinestyle(0,0,3); setbkcolor(0); /*畫(huà)主體框架的邊線*/ setcolor(12); line(8

7、2,430,558,430); line(70,62,70,418); line(82,50,558,50); line(570,62,570,418); line(70,62,570,62); line(76,56,295,56); line(342,56,564,56); /*畫(huà)主體框架的邊角弧線*/ setlinestyle(0,0,3); arc(82,62,90,180,12); setlinestyle(0,0,3); arc(558,62,0,90,12); setlinestyle(0,0,3); arc(82,418,180,279,12); setlinestyle(0,0

8、,3); arc(558,418,270,360,12); setlinestyle(0,0,7); setcolor(9); outtextxy(301,53,CLOCK); setcolor(15); outtextxy(299,53,CLOCK); /*顯示標(biāo)題*/ setcolor(9); rectangle(342,72,560,380); /*繪制矩形時(shí)鐘框架 */ setwritemode(0); /*規(guī)定劃線的方式(將所畫(huà)位置的原來(lái)信息覆蓋)*/ setcolor(13); outtextxy(405,75,BeiJing Shijian); /*繪制電子時(shí)鐘的邊框*/ set

9、linestyle(0,0,1); setcolor(7); line(392,310,510,310); line(392,330,510,330); arc(392,320,90,270,10); arc(510,320,270,90,10); /*繪制數(shù)字時(shí)鐘的分隔符*/ setcolor(5); for(i=431;i=470;i+=39) for(j=317;j=324;j+=7) setlinestyle(0,0,3); circle(i,j,1); /*繪制表示小時(shí)的圓點(diǎn)*/ for(i=0,m=0,h=0;i=11;i+,h+) x=100*sin(h*60+m)/360*PI

10、)+451; y=200-100*cos(h*60+m)/360*PI); setlinestyle(0,0,3); setcolor(5); circle(x,y,1); /*繪制表示分針或秒針的圓點(diǎn)*/ setcolor(3); for(i=0,m=0;i28) n=0; /*利用此循環(huán),延時(shí)一秒*/ while(t0.ti_sec=s&t0.ti_min=m&t0.ti_hour=h) gettime(t); if(bioskey(1)!=0) k=bioskey(0); /*數(shù)字時(shí)鐘的秒針*/ setcolor(15); digitclock(485,318,digitsec(s)+1

11、); /*用原來(lái)的顏色在原來(lái)位置再繪制秒針,清除當(dāng)前秒針*/ setcolor(12); x2=98*sin(s/30*PI)+451; y2=200-98*cos(s/30*PI); line(451,200,x2,y2); /*分針處理*/ if(t0.ti_min!=m) /*消除當(dāng)前分針*/ setcolor(15); x1=80*sin(m/30*PI)+451; y1=200-80*cos(m/30*PI); line(451,200,x1,y1); /*繪制新的分針*/ m=t0.ti_min; digitclock(446,318,digitmin(m); /*在數(shù)字時(shí)鐘中顯示

12、新的鐘值*/ x1=80*sin(m/30*PI)+451; y1=200-80*cos(m/30*PI); line(451,200,x1,y1); /*小時(shí)處理*/ if(t0.ti_hour*60+t0.ti_min)!=(h*60+m) /*消除當(dāng)前時(shí)針*/ setcolor(15); x=50*sin(h*60+m)/360*PI)+451; y=200-50*cos(h*60+m)/360*PI); line(451,200,x,y); /*繪制新的時(shí)針*/ h=t0.ti_hour; digitclock(408,318,digithour(h); x=50*sin(h*60+m

13、)/360*PI)+451; y=200-50*cos(h*60+m)/360*PI); line(451,200,x,y); /*在指定位置顯示數(shù)字時(shí)鐘*/ void digitclock(int x,int y,int clock) char bufferl10; setfillstyle(0,2); bar(x,y,x+15,328); /*畫(huà)一個(gè)二維碼*/ if(clock=60) clock=0; sprintf(bufferl,%d,clock); outtextxy(x,y,bufferl); /*將double型的小時(shí)數(shù)轉(zhuǎn)換成int型*/ int digithour(doubl

14、e h) int i; for(i=0;i=23;i+) if(h=i) return i; /*將double型的分針數(shù)轉(zhuǎn)換成int型*/ int digitmin(double m) int i; for(i=0;i=59;i+) if(m=i) return i; /*將double型的秒鐘數(shù)轉(zhuǎn)換成int型*/ int digitsec(double s) int i; for(i=0;i=59;i+) if(s=i) return i; /*滾動(dòng)的字幕*/ void abc() int n,size,q=0; static int startx=5; static int starty=10; setbkcolor(1); while(q10) q=q+1; for(n=1;n=35;n+) cleardevice(); setcolor(2); setlinestyle(0,0,1); setfillstyle(1,10); rectangle(startx+n*step,starty+n*step,startx+n*step+160,starty+n*step+80); /*繪制矩形*/ floodfill(startx+n*step+10,starty+n*step+20,2); settextstyle(1,0,2

溫馨提示

  • 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)論