模擬時(shí)鐘轉(zhuǎn)動(dòng)課設(shè)報(bào)告_第1頁(yè)
模擬時(shí)鐘轉(zhuǎn)動(dòng)課設(shè)報(bào)告_第2頁(yè)
模擬時(shí)鐘轉(zhuǎn)動(dòng)課設(shè)報(bào)告_第3頁(yè)
已閱讀5頁(yè),還剩16頁(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): 12020326完成日期: 2012 年 12 月設(shè)計(jì)目的加深對(duì)講授內(nèi)容的理解,尤其是一些語(yǔ)法規(guī)定。通過(guò)課程設(shè)計(jì),自然地、熟 練地掌握。熟悉所用的計(jì)算機(jī)系統(tǒng)的操作方法,也就是熟悉語(yǔ)言程序開發(fā)的環(huán)境。 學(xué)會(huì)上機(jī)調(diào)試程序。熟悉C語(yǔ)言圖形模式下的編程,掌握利用C語(yǔ)言相關(guān)函數(shù)開 發(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í)鐘1J11動(dòng)畫顯示模塊轉(zhuǎn)動(dòng)時(shí)針處理模塊數(shù)字時(shí)鐘處理模塊電子時(shí)鐘的功能描述開始

2、進(jìn)入圖形模式進(jìn)入主體界面顯示動(dòng)態(tài)圖像轉(zhuǎn)動(dòng)時(shí)鐘數(shù)字時(shí)鐘的顯示退出系統(tǒng)顯示結(jié)束電子時(shí)鐘流程圖模塊描述動(dòng)畫處理模塊在屏幕上顯示sin和cos型的動(dòng)態(tài)函數(shù)圖像,顯示運(yùn)動(dòng)的問(wèn)候語(yǔ)轉(zhuǎn)時(shí)針動(dòng)處理模塊指針式的時(shí)鐘表盤為橢圓形并且圓周上有分布均勻的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 timeusig ned char ti_min;usig ned

3、 char ti_hour;usig ned char ti_hud;usig ned 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é)果。

4、2. abc()函數(shù)原型 : void abc()abc()函數(shù)是用來(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ù),既包括繪畫表盤的基本框架,又有對(duì)其他函

5、數(shù)的調(diào)用函數(shù)測(cè)試與調(diào)試像 這些問(wèn)但在函數(shù)編寫完成后,進(jìn)行過(guò)多次測(cè)試。在測(cè)試過(guò)程中遇到很多的問(wèn)題, 數(shù)字時(shí)鐘的顯示位置與理想中的有偏差, 轉(zhuǎn)動(dòng)時(shí)針移動(dòng)后痕跡不能清除。 題通過(guò)對(duì) clockhandle ()的調(diào)整得到了很好的解決。還有就是在動(dòng)畫處理上運(yùn)動(dòng)時(shí)間的間隔和遇到路程的測(cè)試遇到了問(wèn)題, 最后通過(guò)查閱資料都得到了解決。源程序清單#include<graphics.h>#include<stdlib.h>#include<conio.h>#include<stdio.h>#include<math.h>#include<dos.

6、h>#define PI 3.1415926#define ESC 0x11b#define step 10/* 函數(shù)聲明 */int digithour(double);int digitmin(double);int digitsec(double);void 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;

7、自動(dòng)檢測(cè)顯示設(shè)備 */ 初始化圖形系統(tǒng) */driver=DETECT; /* initgraph(&driver,&mode,""); /* setlinestyle(0,0,3);setbkcolor(0);/* 畫主體框架的邊線 */ setcolor(12); line(82,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);/*

8、畫主體框架的邊角弧線 */ 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,3);arc(558,418,270,360,12);setlinestyle(0,0,7);setcolor(9);outtextxy(301,53,"CLOCK");setcolor(15);顯示標(biāo)題 */繪制矩形時(shí)鐘框架 */ 規(guī)定劃線的方式(將所畫位置的outt

9、extxy(299,53,"CLOCK"); /* setcolor(9);rectangle(342,72,560,380); /*setwritemode(0); /* 原來(lái)信息覆蓋) */ setcolor(13);outtextxy(405,75,"BeiJing Shijian");/* 繪制電子時(shí)鐘的邊框 */ setlinestyle(0,0,1); setcolor(7); line(392,310,510,310); line(392,330,510,330); arc(392,320,90,270,10); arc(510,320,2

10、70,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)+451;y=200-100*cos(h*60+m)/360*PI);setlinestyle(0,0,3);setcolor(5);circle(x,y,1);/* 繪制表示分針或秒針的圓點(diǎn) */setco

11、lor(3);for(i=0,m=0;i<=59;m+,i+)x=100*sin(m/30*PI)+451;y=200-100*cos(m/30*PI);setlinestyle(0,0,1);circle(x,y,1);setlinestyle(0,0,5);setcolor(5);outtextxy(110,90,"Name :Li Jianli"); outtextxy(110,105,"Xuehao:12020326"); setcolor(10);outtextxy(108,90,"Name");outtextxy(1

12、08,105,"Xuehao");setcolor(14);outtextxy(180,410,"Press Esc to change windows!");def();clockhandle(); /*開始調(diào)用時(shí)針處理程序 */abc();closegraph(); /* return 0;關(guān)閉圖形函數(shù) */* 時(shí)針處理函數(shù) */ void clockhandle()int k=0,n=0;setcolor(15);gettime(t); /*h=t0.ti_hour;m=t0.ti_min;x=50*sin(h*60+m)/360*PI)+451;

13、 /* y=200-50*cos(h*60+m)/360*PI); /* line(451,200,x,y);獲取系統(tǒng)時(shí)間 */時(shí)針的 x 坐標(biāo)值 */ 時(shí)針的 y 坐標(biāo)值 */x1=80*sin(m/30*PI)+451;/*y1=200-80*cos(m/30*PI);/*line(451,200,x1,y1);分針的 x 坐標(biāo)值 */ 分針的 y 坐標(biāo)值 */* 在數(shù)字時(shí)鐘中顯示時(shí)間 */digitclock(408,318,digithour(h);digitclock(446,318,digitmin(m);setwritemode(1); /*for(;k!=ESC;)setcol

14、or(12);/* 聲音處理 */sound(500);/*delay(700);/*秒*/sound(200);delay(300);nosound(); /*s=t0.ti_sec;m=t0.ti_min;h=t0.ti_hour;x2=98*sin(s/30*PI)+451;/*y2=200-98*cos(s/30*PI);/*line(451,200,x2,y2);設(shè)置圖形方式下劃線輸出模式 */以頻率為500Hz打開PC揚(yáng)聲器*/發(fā)一個(gè)500Hz的音調(diào),維持700毫關(guān)閉PC揚(yáng)聲器*/秒針的 x 坐標(biāo)值 */ 秒針的 y 坐標(biāo)值 */* 運(yùn)動(dòng)的問(wèn)候語(yǔ) */setfillstyle(0,

15、2); bar(100,115,320,150);setcolor(4);settextstyle(1,0,99); outtextxy(101+n*5,140,"Welcome!"); n=n+1;if(n>28) 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

16、)+1);/* 用原來(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); /* */x1=80*sin

17、(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)/360*PI)+451; y=200-

18、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);在數(shù)字時(shí)鐘中顯示新的鐘值畫一個(gè)二維碼 */bar(x,y,x+15,328); /* if(clock=60) clock=0; sprintf(bufferl,"%d",clock); outtextxy(x,y,bufferl);/* 將 double 型的小時(shí)數(shù)轉(zhuǎn)換成 int 型 */ int digithour(

19、double 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(q<10)q=q+1;for(n=1;n<=35;n+) cleardevice(); setcolor(2); setlines

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論