C語言模擬時鐘轉(zhuǎn)動課設報告附代碼_第1頁
C語言模擬時鐘轉(zhuǎn)動課設報告附代碼_第2頁
C語言模擬時鐘轉(zhuǎn)動課設報告附代碼_第3頁
C語言模擬時鐘轉(zhuǎn)動課設報告附代碼_第4頁
C語言模擬時鐘轉(zhuǎn)動課設報告附代碼_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

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

2、出系統(tǒng)顯示轉(zhuǎn)動時鐘數(shù)字時鐘的顯示 電子時鐘流程圖模塊描述動畫處理模塊 在屏幕上顯示sin和cos型的動態(tài)函數(shù)圖像,顯示運動的問候語。轉(zhuǎn)時針動處理模塊 指針式的時鐘表盤為橢圓形并且圓周上有分布均勻的12個刻度刻度顯示清楚鐘面上有長度不相同的指針即時針、分針、秒針指針的運動具有規(guī)律性為順時針。數(shù)字時鐘處理模塊 數(shù)字鐘顯示時間的格式是年月日時分秒小時為24進制,分鐘和秒是60進制,指針式的時鐘和數(shù)字式的時鐘顯示的時間同步且兩個時鐘所顯示的時間與計算機的系統(tǒng)時間一致。 詳細設計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)的當前時間。全局變量double h,m,s;這三個變量分別保存小時,分鐘,秒。double x,y,x1,y1,x2,y2;保存數(shù)字時鐘中小時分鐘秒在屏幕中顯示的位置。struct time t1;定義一個time結(jié)構(gòu)類型的數(shù)組。函數(shù)功能的描述1. def()函數(shù)原型: void def()def()函數(shù)是用來輸出一組彩帶的,通過輸入位置和顏色的變化來輸出sin型的彩帶,且在整個函數(shù)中保留結(jié)果。2. abc()函數(shù)原型: void abc()abc()函數(shù)是

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

5、的問題,像數(shù)字時鐘的顯示位置與理想中的有偏差,轉(zhuǎn)動時針移動后痕跡不能清除。這些問題通過對clockhandle()的調(diào)整得到了很好的解決。 還有就是在動畫處理上運動時間的間隔和遇到路程的測試遇到了問題,但最后通過查閱資料都得到了解決。 源程序清單#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; /*自動檢測顯示設備*/ initgraph(&driver,&mode,); /*初始化圖形系統(tǒng) */ setlinestyle(0,0,3); setbkcolor(0); /*畫主體框架的邊線*/ 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); /*畫主體框架的邊角弧線*/ 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); /*顯示標題*/ setcolor(9); rectangle(342,72,560,380); /*繪制矩形時鐘框架 */ setwritemode(0); /*規(guī)定劃線的方式(將所畫位置的原來信息覆蓋)*/ setcolor(13); outtextxy(405,75,BeiJing Shijian); /*繪制電子時鐘的邊框*/ 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ù)字時鐘的分隔符*/ setcolor(5); for(i=431;i=470;i+=39) for(j=317;j=324;j+=7) setlinestyle(0,0,3); circle(i,j,1); /*繪制表示小時的圓點*/ 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); /*繪制表示分針或秒針的圓點*/ setcolor(3); for(i=0,m=0;i28) n=0; /*利用此循環(huán),延時一秒*/ while(t0.ti_sec=s&t0.ti_min=m&t0.ti_hour=h) gettime(t); if(bioskey(1)!=0) k=bioskey(0); /*數(shù)字時鐘的秒針*/ setcolor(15); digitclock(485,318,digitsec(s)+1

11、); /*用原來的顏色在原來位置再繪制秒針,清除當前秒針*/ 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) /*消除當前分針*/ 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ù)字時鐘中顯示

12、新的鐘值*/ x1=80*sin(m/30*PI)+451; y1=200-80*cos(m/30*PI); line(451,200,x1,y1); /*小時處理*/ if(t0.ti_hour*60+t0.ti_min)!=(h*60+m) /*消除當前時針*/ 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); /*繪制新的時針*/ 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ù)字時鐘*/ void digitclock(int x,int y,int clock) char bufferl10; setfillstyle(0,2); bar(x,y,x+15,328); /*畫一個二維碼*/ if(clock=60) clock=0; sprintf(bufferl,%d,clock); outtextxy(x,y,bufferl); /*將double型的小時數(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; /*滾動的字幕*/ 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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論