




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、摘 要就鐘表的演變歷史而言,它大致可以分為3個(gè)演變階段,第一,從大型鐘向小型鐘演變;第二,從小型鐘向袋表過(guò)渡;第三,從袋表象腕表發(fā)展。每一階段的發(fā)展都和當(dāng)時(shí)的技術(shù)發(fā)明有著十分緊密的聯(lián)系,同時(shí)它也是各個(gè)不同時(shí)期的科學(xué)家和鐘表工匠智慧的結(jié)晶。鐘和表通常是以內(nèi)機(jī)的大小來(lái)區(qū)別的。按國(guó)際慣例,機(jī)芯直徑超過(guò)50mm、厚度超過(guò)12mm的為鐘;直徑3750mm、厚度46mm者,稱為懷表;直徑37mm以下為手表;最堅(jiān)固、最精密的機(jī)械之一?,F(xiàn)代鐘表的原動(dòng)力有機(jī)械力和電力兩種。機(jī)械鐘表是一種用重錘或彈簧的釋放能量為動(dòng)力,推動(dòng)一系列齒輪運(yùn)轉(zhuǎn),借助調(diào)速器調(diào)節(jié)輪系轉(zhuǎn)速,以指針指示時(shí)刻和計(jì)量時(shí)間的計(jì)算器。 在生活進(jìn)步的今天
2、,電子時(shí)鐘正成為人們生活的一部分,特別是應(yīng)用在如火車站之類的公共場(chǎng)所,其用途不言而喻。 關(guān)鍵詞: 模擬系統(tǒng); 電子時(shí)鐘; 時(shí)間修改.目 錄 一. 設(shè)計(jì)過(guò)程1. 程序功能 . 32 程序設(shè)計(jì) . 3 1)設(shè)計(jì)思路 . 3 2)數(shù)據(jù)結(jié)構(gòu) . 3 3)主函數(shù) . 4 4)流程圖 . 4 3 程序運(yùn)行及分析 . 8 4 運(yùn)行結(jié)果 . 9二. 源代碼 . 10 1 程序預(yù)處理 . 112. 主函數(shù) . 113. 時(shí)鐘動(dòng)畫處理模塊 . 144時(shí)鐘按鍵控制模塊 . 15 5數(shù)字時(shí)鐘處理模塊 . 19三. 設(shè)計(jì)總結(jié) . 22四. 參考文獻(xiàn) . 23 課程設(shè)計(jì)(電子時(shí)鐘)一.設(shè)計(jì)過(guò)程1. 程序功能隨著社會(huì)的進(jìn)步
3、和科技的發(fā)展,電子時(shí)鐘逐漸成為人們生活中不可缺少的一部分,下面介紹一種電子時(shí)鐘的設(shè)計(jì)和實(shí)現(xiàn)。其基本功能模塊圖如圖2程序設(shè)計(jì)電子時(shí)鐘 界面顯示模塊按鍵控制模塊時(shí)鐘動(dòng)畫處理模式數(shù)字時(shí)鐘模塊 1) 設(shè)計(jì)思路程序設(shè)計(jì)一般由兩部分組成:算法和數(shù)據(jù)結(jié)構(gòu),合理地選擇和實(shí)現(xiàn)一個(gè)數(shù)據(jù)結(jié)構(gòu)和處理這些數(shù)據(jù)結(jié)構(gòu)具有同樣的重要性。在電子時(shí)鐘程序中,重點(diǎn)和難點(diǎn)在于時(shí)、分、秒針坐標(biāo)值得計(jì)算和時(shí)鐘指針的運(yùn)行控制,旨在了解c語(yǔ)言圖形模式下的編程,了解系統(tǒng)的繪圖機(jī)數(shù)據(jù)結(jié)構(gòu)等方面的知識(shí)。利用幾個(gè)模塊現(xiàn)實(shí)時(shí)鐘的運(yùn)轉(zhuǎn),并可在界面進(jìn)行時(shí)間的更改。 2)數(shù)據(jù)結(jié)構(gòu)此程序中,使用了c語(yǔ)言的time結(jié)構(gòu)體和幾個(gè)全局變量,結(jié)構(gòu)如下:1).time
4、結(jié)構(gòu)體struct time unsigned char ti_min;/*分鐘*/ unsigned char ti_hour;/*小時(shí)*/ unsigned char ti_hund;/*百分之一秒*/ unsigned char ti_sec;/*秒*/2).全局變量double h,m,s;double x,x1,x2,y,y1,y2;struct time t1; 3)主函數(shù)1) keyhandle()2)timeupchange()3) timedownchange()4) digitclock()5)drawcuesor()6) clearcu
5、rsor()7) void clockhandle()8) main()4)流程圖 :電子時(shí)鐘執(zhí)行主流程圖:進(jìn)入圖形模式繪制主窗體界面繪制電子時(shí)鐘界面繪制幫主界面調(diào)用clockhandle()時(shí)鐘處理程序 退出程序結(jié)束開(kāi)始進(jìn)入圖形模式main()函數(shù)定義變量driver,mode=0,i,j;j=431i<=470定義圓心坐標(biāo)(0,0,3)i+=39設(shè)置顏色setcolor(15); i=0,m=0,h=0;開(kāi)始i<=11n x=100*sin(h*60+m)y i+;h+; i=0;m=0;i<=59nx=100*sin(m/30*pi)+451y m+;j+; setco
6、lor(4); return0; 結(jié)束clockhandle()函數(shù)開(kāi)始keyhandle()函數(shù):定義變量k=0,count;count=2k!=escti_0 sec.&&multiplex定義顏色setcolor(12)setcolor(15)mutiplerkey=upnkey=downy時(shí)間上移設(shè)置nkey=tab break時(shí)間下移設(shè)置ny setcolor(15)breakbreak調(diào)用時(shí)間函數(shù)結(jié)束digitclock函數(shù):char buffer l10clock=60 是否 clock=0sprintf(buffer,”%d”,clock)3程序運(yùn)行及分析: 1
7、) main()函數(shù)主要實(shí)現(xiàn)了對(duì)電子時(shí)鐘的初始化工作,及clockhandle()函數(shù)的調(diào)用。 main() int driver,mode=0,i,j; driver=detect;/*自動(dòng)檢測(cè)顯示設(shè)備*/ initgraph(&driver,&mode,"");/*初始化圖形系統(tǒng)*/ setlinestyle(0,0,3);/*設(shè)置當(dāng)前畫線寬度和類型:設(shè)置三點(diǎn)寬度實(shí)線*/ setbkcolor(0);/*用調(diào)色板設(shè)置當(dāng)前背景顏色*/ setcolor(9);/*設(shè)置當(dāng)前畫線顏色*/2) 時(shí)鐘的處理模塊主要由clockhndle()函數(shù)來(lái)實(shí)現(xiàn),借助setw
8、ritemode(mode)函數(shù)設(shè)置畫線的方式來(lái)實(shí)現(xiàn)的。setwritemode(1); for(count=2;k!=esc;) /*開(kāi)始循環(huán),直至用戶按下esc鍵結(jié)束循環(huán)*/3) 此程序?qū)Π存I進(jìn)行處理、判斷,調(diào)用函數(shù)來(lái)實(shí)現(xiàn)。void clockhandle() int k=0,count; setcolor(15); gettime(t);/*取得系統(tǒng)時(shí)間,保護(hù)在time結(jié)構(gòu)類型的數(shù)組變量中*/int keyhandle(int key,int count) switch(key) case up:timeupchange(count-1); break;4) 調(diào)用下面函數(shù),處理時(shí)分秒的位
9、置。修改時(shí)間。 void digitclock(int x,int y,int clock)char buffer110;int digithour(double h)int digitmin(double m)int digitsec(double s) void drawcursor(int count) switch(count)void clearcursor(int count) switch(count)4.運(yùn)行結(jié)果 運(yùn)行初始狀態(tài):運(yùn)行修改后:二. 源碼分析:1 程序預(yù)處理#include<graphics.h>#include<stdio.h>#inclu
10、de<math.h>#include<dos.h>#define pi 3.1415926/*定義變量*/#define up 18432/*上移鍵:修改時(shí)間*/#define down 20480/*下移鍵:修改時(shí)間*/#define esc 283/*esc鍵:退出系統(tǒng)*/#define tab 3849/*tab鍵:移動(dòng)光標(biāo)*/*函數(shù)聲明*/int keyhandle(int,int); /*鍵盤按鍵判斷,并調(diào)用相關(guān)函數(shù)處理*/int timeupchange(int); /*處理上移按鍵*/ int timedownchange(int);/*處理下移按鍵*/i
11、nt digithour(double); /*將double型小時(shí)數(shù)轉(zhuǎn)換成int型 */ int digitmin(double);/*將double型分鐘數(shù)轉(zhuǎn)換成int型*/int digitsec(double);/*將double型秒鐘數(shù)轉(zhuǎn)換成int型*/ void digitclock(int,int,int);/*在指定位置顯示時(shí)鐘或分鐘或秒鐘數(shù)*/void drawcursor(int);/*繪制一個(gè)光標(biāo)*/void clearcursor(int);/*消除前一個(gè)光標(biāo)*/void clockhandle();/*時(shí)鐘處理*/double h,m,s;/*全局變量:小時(shí),分,秒*
12、/double x,x1,x2,y,y1,y2;/*全局變量:坐標(biāo)值*/struct time t1; /*定義一個(gè)time結(jié)構(gòu)類型的數(shù)組*/2. 主函數(shù)main()main() int driver,mode=0,i,j; driver=detect;/*自動(dòng)檢測(cè)顯示設(shè)備*/ initgraph(&driver,&mode,"");/*初始化圖形系統(tǒng)*/ setlinestyle(0,0,3);/*設(shè)置當(dāng)前畫線寬度和類型:設(shè)置三點(diǎn)寬度實(shí)線*/ setbkcolor(0);/*用調(diào)色板設(shè)置當(dāng)前背景顏色*/ setcolor(9);/*設(shè)置當(dāng)前畫線顏色*/ l
13、ine (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,297,56); line (340,56,564,56);/*畫主體框架的邊直線*/ /* arc(int x,int y,int stangle,int endangle,int radius */ arc (82,62,90,180,12); arc (558,62,0,90,12); setlinestyle(0,0,3); arc(82,418,1
14、80,279,12); setlinestyle(0,0,3); arc(558,418,270,360,12); /*畫主體框架的邊角弧線*/ setcolor (15); outtextxy (300,53,"clock");/*顯示標(biāo)題*/ setcolor(7); rectangle(342,72,560,360);/*畫一個(gè)矩形,作為時(shí)鐘的框架*/ setwritemode(0);/*規(guī)定畫線的方式.mode=0,則表示畫線時(shí)將所畫位置的原來(lái)信息覆蓋*/ setcolor(15); outtextxy(433,75,"clock");/*時(shí)鐘的
15、標(biāo)題*/ setcolor(7); line (392,310,510,310); line (392,330,510,330); arc (392,320,90,270,10); arc (510,320,270,90,10);/*繪制電子動(dòng)畫時(shí)鐘下的數(shù)字時(shí)鐘的邊框架*/ /*繪制數(shù)字時(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);/*以(x,y)為圓心,1為半徑畫圓*/ setcolor(15);line (
16、424,315,424,325);/*在運(yùn)行電子時(shí)鐘前先畫一個(gè)光標(biāo)*/ /*繪制表示小時(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); circle (x,y,1); /*繪制表示分鐘或秒鐘的圓點(diǎn)*/ 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); circl
17、e(x,y,1); /*在電子表的左邊打印幫助提示信息*/ setcolor(4); outtextxy(184,125,"help"); setcolor(15); outtextxy(182,125,"help"); setcolor(5); outtextxy(140,185,"tab:cursor move"); outtextxy(140,225,"up:time+"); outtextxy(140,265,"down:time-"); outtextxy(140,305,"
18、esc:quit system!"); outtextxy(140,345,"version:2.0"); setcolor(12); outtextxy(150,400,"nothing is more important than time!"); clockhandle();/*開(kāi)始調(diào)用時(shí)中處理程序*/ closegraph();/*關(guān)閉圖形系統(tǒng)*/ return 0;/*表示程序正常結(jié)束,向操作系統(tǒng)返回一個(gè)0值*/ 3 時(shí)鐘動(dòng)畫處理模塊 void clockhandle() int k=0,count; setcolor(15); ge
19、ttime(t);/*取得系統(tǒng)時(shí)間,保護(hù)在time結(jié)構(gòu)類型的數(shù)組變量中*/ h=t0.ti_hour; m=t0.ti_min; x=50*sin(h*60+m)/360*pi)+451;/*時(shí)針x的坐標(biāo)值*/ y=200-50*cos(h*60+m)/360*pi);/*時(shí)針y的坐標(biāo)值*/ line(451,200,x,y);/*在電子表中繪制時(shí)針*/ x1=80*sin(m/30*pi)+451;/*分針x的坐標(biāo)值*/ y1=200-80*cos(m/30*pi);/*分針y的坐標(biāo)值*/ line(451,200,x1,y1);/*在電子表繪制分針*/ digitclock(408,318
20、,digithour(h);/*在數(shù)字時(shí)鐘中,顯示當(dāng)前的小時(shí)值*/ digitclock(446,318,digitmin(m);/*在數(shù)字時(shí)鐘中,顯示當(dāng)前的分鐘值*/ setwritemode(1); for(count=2;k!=esc;) /*開(kāi)始循環(huán),直至用戶按下esc鍵結(jié)束循環(huán)*/ setcolor(12);/*淡紅色*/ sound(500);/*以指定頻率打開(kāi)pc揚(yáng)聲器,這里頻率為500*/ delay(700);發(fā)一個(gè)頻率為hz的音調(diào) sound(200); delay(300); nosound(); s=t0.ti_sec; m=t0.ti_min; h=t0.ti_hou
21、r; x2=98*sin(s/30*pi)+451; y2=200-98*cos(s/30*pi); line(451,200,x2,y2); while(t0.ti_sec=s&&t0.ti_min=m&&t0.ti_hour=h) gettime(t); if(bioskey(1)!=0) k=bioskey(0); count=keyhandle(k,count); if(count=5) count=1; setcolor(15);digitclock(485,318,digitsec(s)+1);setcolor(12);x2=98*sin(s/30*
22、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); 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
23、) 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)/360*pi)+451; y=200-50*cos(h*60+m)/360*pi); line(451,200,x,y); 4 時(shí)鐘按鍵控制模塊int keyhandle(int key,int count) switch(key) case up:timeupchange(cou
24、nt-1); break; case down:timedownchange(count-1); break; case tab:setcolor(15); clearcursor(count); drawcursor(count); count+; break; return count;int timeupchange(int count) if(count=1) t0.ti_hour+; if(t0.ti_hour=24) t0.ti_hour=0; settime(t); if(count=2) t0.ti_min+; if(t0.ti_min=60) t0.ti_min=0; set
25、time(t); if(count=3) t0.ti_sec+; if(t0.ti_sec=60) t0.ti_sec=0; settime(t); int timedownchange(int count) if(count=1) t0.ti_hour-; if(t0.ti_hour=0) t0.ti_hour=23; settime(t); if(count=2) t0.ti_min-; if(t0.ti_min=0) t0.ti_min=59; settime(t); if(count=3) t0.ti_sec-; if(t0.ti_sec=0) t0.ti_sec=59; settim
26、e(t); 5 數(shù)字時(shí)鐘處理模塊void digitclock(int x,int y,int clock)char buffer110; setfillstyle(0,2); bar(x,y,x+15,328); if(clock=60) clock=0; sprintf(buffer1,"%d",clock); outtextxy(x,y,buffer1); int digithour(double h) int i; for(i=0;i<=23;i+) if(h=i) return i; int digitmin(double m) int i; for(i=0;i<=59;i+) if(m=i) return i; int digitsec(double s) int i; for(i=0;i<=59;i+) if(s=i) return i; void drawcursor(int count) switch(cou
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 土建瓦工勞務(wù)分包合同
- 常年法律顧問(wèn)合同
- 詳細(xì)操作流程說(shuō)明書
- 2025年撫州貨運(yùn)資格證模擬考試題庫(kù)下載
- 2025年徐州市汽車租賃合同5篇
- 農(nóng)莊農(nóng)場(chǎng)合作經(jīng)營(yíng)合同協(xié)議書范本6篇
- 公司副食品購(gòu)銷合同7篇
- 房地產(chǎn)開(kāi)發(fā)聯(lián)營(yíng)合同
- 專利技術(shù)的授權(quán)與使用條款協(xié)議
- 無(wú)償保管合同范本-倉(cāng)儲(chǔ)保管合同8篇
- 《審計(jì)課件東北財(cái)經(jīng)大學(xué)會(huì)計(jì)系列教材》課件
- 中國(guó)老年危重患者營(yíng)養(yǎng)支持治療指南2023解讀課件
- 《光伏電站運(yùn)行與維護(hù)》試題及答案一
- 2024年貴州省高職(??疲┓诸惪荚囌惺罩新毊厴I(yè)生文化綜合考試語(yǔ)文試題
- 一年級(jí)體育教案全冊(cè)(水平一)下冊(cè)
- 全身麻醉后護(hù)理常規(guī)
- 2024年貴州省貴陽(yáng)市白云區(qū)九年級(jí)中考一模數(shù)學(xué)試題(解析版)
- 500kV超高壓絕緣料和新型特種電纜研發(fā)制造項(xiàng)目可行性研究報(bào)告-立項(xiàng)備案
- 2024年贛南衛(wèi)生健康職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)審定版
- 廣告牌制作安裝應(yīng)急預(yù)案
- 塔吊的安拆培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論