版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 單 位 電氣與電子工程學(xué)院 分院(系)</p><p> 專 業(yè) 電氣 </p><p> 學(xué) 號 </p><p> 學(xué)生姓名 </p><p> 指導(dǎo)教師 </p><p> 完成日期 201
2、1 年5 月29日</p><p><b> 摘 要</b></p><p> 電子時鐘是一種用電腦實(shí)現(xiàn)時、分、秒計時的裝置,與機(jī)械時鐘相比具有更高的準(zhǔn)確性和直觀性,且無機(jī)械裝置,具有更長的使用壽命。電子鐘已成為人們?nèi)粘I钪斜夭豢缮俚谋匦杵?,廣泛用于個人家庭以及車站、碼頭、劇院、辦公室等公共場所,給人們的生活、學(xué)習(xí)、工作、娛樂帶來極大地方便。</p>
3、;<p> C語言功能豐富、表達(dá)能力強(qiáng)、使用方便、應(yīng)用面廣、目標(biāo)程序效率高,因此特別適合模擬電子時鐘的開發(fā)</p><p> 關(guān)鍵詞:模擬電子時鐘,程序設(shè)計。</p><p><b> 目錄</b></p><p> 第1章 選題的意義……………………………………………………………… 4</p><p
4、> 1.1 ………………………………………………………………………… 4</p><p> 1.2 ………………………………………………………………………… 4</p><p> 第2章 系統(tǒng)功能需求分析 ……………………………………………………… 5</p><p> 2.1系統(tǒng)的基本要求 ……………………………………………………… 5</p&
5、gt;<p> 2.2 ………………………………………………………………………… 5</p><p> 第3章 系統(tǒng)設(shè)計 ………………………………………………………………… 6</p><p> 第4章 系統(tǒng)實(shí)現(xiàn) ………………………………………………………………… 7</p><p> 第5章 總結(jié) …………………………………………………………
6、…………… 8</p><p><b> 第1章 選題的意義</b></p><p><b> 1.1 選題的意義</b></p><p> 隨著社會的發(fā)展,電子鐘逐漸成為人們生活中不可缺少的一部分。人們對時鐘精度的要求越來越高,這就要求我們動用電子模擬技術(shù)對時鐘的精度進(jìn)行保證,同時模擬電子時鐘還可以設(shè)計出美觀的畫面
7、,具有現(xiàn)實(shí)中時鐘不可相比的優(yōu)點(diǎn)。此程序所模擬出來的電子時鐘具有操作簡單,靈活,實(shí)用的優(yōu)點(diǎn),可以為我們提供方便。</p><p> 同時通過對生活中普遍存在實(shí)物的設(shè)計,可以加深我們對c語言的深入理解掌握開發(fā)電子鐘的基本原理,為進(jìn)一步開發(fā)高質(zhì)量程序打下基礎(chǔ)。</p><p><b> 1.2 硬件環(huán)境</b></p><p> 完整的電腦,包
8、括鍵盤、鼠標(biāo)、以及足夠大的內(nèi)存空間。屏幕尺寸推薦使用640*380.</p><p><b> 1.3軟件環(huán)境</b></p><p> 開發(fā)過程采用win-tc環(huán)境,</p><p> 運(yùn)行環(huán)境是采用windows xp操作系統(tǒng)。</p><p> 第2章 系統(tǒng)功能需求分析</p><p&g
9、t; 2.1系統(tǒng)的基本要求</p><p> 實(shí)現(xiàn)時鐘顯示功能 ,具有動畫模擬時鐘和數(shù)字時鐘,可以修改時間,</p><p><b> 界面友好,運(yùn)行穩(wěn)定</b></p><p><b> 2.2系統(tǒng)的功能</b></p><p> 首先畫出時鐘的界面,包括表盤,表針,以及數(shù)字時鐘界面。&
10、lt;/p><p> 同時還在屏幕上打印出幫助信息,使使用者輕松方便的使用該時鐘。</p><p> 預(yù)期設(shè)想實(shí)現(xiàn)時鐘的調(diào)時功能,按下一個鍵,進(jìn)入時鐘時間重設(shè)功能。</p><p> 本電子時鐘有四個模塊構(gòu)成,電子時鐘界面顯示,電子時鐘按鍵控制,電子時鐘動畫處理,數(shù)字時鐘模擬;具備修改時間功能,模擬出動態(tài)畫面,界面友好,顯示準(zhǔn)確??梢阅M出動畫狀態(tài)。運(yùn)行穩(wěn)定,時間
11、準(zhǔn)確,精度較高,界面給人以美感,舒適。</p><p><b> 第3章 系統(tǒng)設(shè)計</b></p><p> 設(shè)計主體為首先畫圖,然后調(diào)用時鐘處理函數(shù),其次再調(diào)用一個循環(huán),使之進(jìn)入主體時鐘處理函數(shù)。時鐘處理函數(shù)中含有劃線函數(shù),先取得電腦中的時間,調(diào)用畫圖函數(shù)畫出當(dāng)前所對應(yīng)的模擬時鐘圖像,同時把時間賦給數(shù)字時鐘</p><p><b&g
12、t; 3.1流程圖</b></p><p> 3.2電子時鐘界面顯示</p><p> 本程序定義了huatu()函數(shù),程序首先進(jìn)入主函數(shù)后,就開始調(diào)用huatu()函數(shù)。Huatu()函數(shù)中首先調(diào)用initgraph()函數(shù),使系統(tǒng)進(jìn)入圖形模式,調(diào)用setlinestyle(x,y,z)函數(shù)來設(shè)定線粗。Z代表線的粗細(xì),分為1,2,3三個等級的線型;調(diào)用setbkcolo
13、r(x)函數(shù)設(shè)置當(dāng)前的背景顏色,顏色分為1-15個等級,0為白色;然后調(diào)用setcolor(x)函數(shù)確定當(dāng)前畫線的顏色,同樣也有1-15個等級;調(diào)用line(x,y,a,b)函數(shù)開始畫線,(x,y)代表起點(diǎn)坐標(biāo)(a,b)代表終點(diǎn)坐標(biāo);然后調(diào)用outtextxy(x,y,””)函數(shù)在坐標(biāo)點(diǎn)為(x,y)的位置輸出分號中的內(nèi)容;其中還調(diào)用了circle(i,j,x)函數(shù)畫出了以x為半徑(x,y)為圓心的圓作為表示小時或者分鐘的圓點(diǎn);調(diào)用完以上
14、函數(shù)就完成了界面主體的繪制。</p><p><b> 3.3按鍵控制模塊</b></p><p> 在本模塊中,使用bioskey()函數(shù)讀取用戶的鍵值進(jìn)行判斷,執(zhí)行相應(yīng)操作。具體如下:</p><p> 用戶按下TAB或者Esc鍵,系統(tǒng)調(diào)按鍵判斷函數(shù),跳出時鐘處理函數(shù)1,進(jìn)入輸入界面,調(diào)用scanf()函數(shù)對結(jié)構(gòu)體變量中的元素&
15、;t[0].ti_min,&t[0].ti_hour,&t[0].ti_sec重新賦值后,再調(diào)用settime(t)函數(shù),使之把數(shù)值賦給系統(tǒng)時間,通過改變系統(tǒng)時間達(dá)到修改時間的功能。</p><p><b> 3.4時鐘動畫處理</b></p><p> 時鐘動畫處理是本程序的核心,巧妙模擬出動態(tài)效果。其中的關(guān)鍵在于對時針、分針、秒針的繪制以及計算
16、。具體設(shè)計如下:</p><p> 坐標(biāo)點(diǎn)的計算,表盤中的時分秒有一個共同的圓心,但是各在不同的圓弧上移動,規(guī)律是:秒針轉(zhuǎn)動60次,分針轉(zhuǎn)動1次;分針轉(zhuǎn)動60次,時針轉(zhuǎn)動1次;秒針每一次所經(jīng)過的角度是60度,并且可以通過與圓心的關(guān)系計算出來。具體計算如下:圓心坐標(biāo)為(x,y),半徑為r借助三角函數(shù)可以求得k點(diǎn)的坐標(biāo)值(x+a,y-a),同樣可以用相同的方法求得,分、秒的坐標(biāo)值。本程序中a,b,c分別取50,80
17、,98,單位為像素??梢阅M出不同的長度,作為時、分、秒指針示意圖如下:</p><p><b> 動畫處理流程</b></p><p> 初運(yùn)行階段首先取得系統(tǒng)時間并保存在t結(jié)構(gòu)體變量內(nèi),同時在數(shù)字時鐘中顯示出當(dāng)前系統(tǒng)時間。然后開始進(jìn)入for循環(huán),直到用戶按ESC或者Tab鍵跳出循環(huán)。同時打開揚(yáng)聲器,發(fā)出滴答聲,并利用while循環(huán)延遲一秒從而模擬出機(jī)械鐘的滴答
18、聲。延遲一秒后清除原來的秒針,繪制新的秒針,同時更新數(shù)字時鐘的數(shù)字。用一個if語句判斷如果分鐘有變化,清除分針,重繪分針;如果時針有變化,清除時針,重繪時針。最后通過對鍵值的判斷,若為Esc或者Tab則跳出循環(huán)。</p><p> 3.5數(shù)字時鐘處理模塊</p><p> 在本模塊中,每隔一秒會調(diào)用gettime(t)函數(shù)來得到系統(tǒng)時間,并把它賦給digitclock()函數(shù),并在顯示
19、相應(yīng)的數(shù)字時鐘位置,同時還有一個判斷語句,如果秒數(shù)等于60,那么秒數(shù)就會重新變?yōu)?,從而形成一個循環(huán)。修改時間是通過的改變系統(tǒng)時間來實(shí)現(xiàn)的,調(diào)用scanf()函數(shù)把t結(jié)構(gòu)體變量重新賦值,再調(diào)用settime()函數(shù)就把系統(tǒng)時間修改成功了。</p><p><b> 第4章 系統(tǒng)實(shí)現(xiàn)</b></p><p> /*電子時鐘源代碼*/</p><p
20、> #include<graphics.h></p><p> #include<stdio.h></p><p> #include<math.h></p><p> #include<dos.h></p><p> #define PI 3.1415926 /*定義常量*/&
21、lt;/p><p> #define ESC 0x11b /*ESC鍵 : 退出系統(tǒng)*/</p><p> #define TAB 0xf09 /*TAB鍵 : 移動光標(biāo)*/</p><p><b> /*函數(shù)聲明*/</b></p><p> int keyhandle(int); /*鍵盤按鍵判斷,并調(diào)用
22、相關(guān)函數(shù)處理*/</p><p> int digithour(double); /*將double型的小時數(shù)轉(zhuǎn)換成int型*/</p><p> int digitmin(double); /*將double型的分鐘數(shù)轉(zhuǎn)換成int型*/</p><p> int digitsec(double); /*將double型的秒鐘數(shù)轉(zhuǎn)換成int型*/<
23、/p><p> void digitclock(int,int,int ); /*在指定位置顯示時鐘或分鐘或秒鐘數(shù)*/</p><p> void drawcursor(int); /*繪制一個光標(biāo)*/</p><p> void clearcursor(int);/*消除前一個光標(biāo)*/</p><p> void clockhandle
24、(); /*時鐘處理*/</p><p> double h,m,s; /*全局變量:小時,分,秒*/</p><p> double ho,mi;</p><p> double x,x1,x2,y,y1,y2; /*全局變量:坐標(biāo)值*/</p><p> struct time t[1];/*定義一個time結(jié)構(gòu)類型的數(shù)組*/&l
25、t;/p><p><b> main()</b></p><p><b> {</b></p><p><b> huatu();</b></p><p> clockhandle1();/*開始調(diào)用時鐘處理程序*/</p><p><b>
26、; tab1:</b></p><p> closegraph();</p><p> printf("setuptime,now!\n please (min,hour,sec)\n");</p><p> scanf("%d,%d,%d",&t[0].ti_min,&t[0].ti_ho
27、ur,&t[0].ti_sec);</p><p><b> huatu();</b></p><p> settime(t);</p><p> clockhandle2();</p><p> goto tab1;</p><p> closegraph(); /*關(guān)閉圖形系
28、統(tǒng)*/</p><p> return 0; /*表示程序正常結(jié)束,向操作系統(tǒng)返回一個0值*/</p><p><b> }</b></p><p> clockhandle1()</p><p><b> {</b></p><p> int k=0,count;
29、</p><p> setcolor(15);</p><p> gettime(t);/*取得系統(tǒng)時間,保存在time結(jié)構(gòu)類型的數(shù)組變量中*/</p><p> h=t[0].ti_hour;</p><p> m=t[0].ti_min;</p><p> x=50*sin((h*60+m)/360*PI
30、)+320; /*時針的x坐標(biāo)值*/</p><p> y=180-50*cos((h*60+m)/360*PI); /*時針的y坐標(biāo)值*/</p><p> line(320,180,x,y);/*在電子表中繪制時針*/</p><p> x1=80*sin(m/30*PI)+320; /*分針的x坐標(biāo)值*/</p><p> y1
31、=180-80*cos(m/30*PI); /*分針的y坐標(biāo)值*/</p><p> line(320,180,x1,y1); /*在電子表中繪制分針*/</p><p> digitclock(260,333,digithour(h)); /*在數(shù)字時鐘中,顯示當(dāng)前的小時值*/</p><p> digitclock(305,333,digitmin(m))
32、; /*在數(shù)字時鐘中,顯示當(dāng)前的分鐘值*/</p><p> setwritemode(1);</p><p> /*規(guī)定畫線的方式,如果mode=1,則表示畫線時用現(xiàn)在特性的線</p><p> 與所畫之處原有的線進(jìn)行異或(XOR)操作,實(shí)際上畫出的線是原有線與現(xiàn)在規(guī)定</p><p> 的線進(jìn)行異或后的結(jié)果。因此, 當(dāng)線的特性不變
33、, 進(jìn)行兩次畫線操作相當(dāng)于沒有 </p><p> 畫線,即在當(dāng)前位置處清除了原來的畫線*/</p><p> for(count=2;k!=ESC&&k!=TAB;){ /*開始循環(huán),直至用戶按下ESC鍵結(jié)束循環(huán)*/</p><p> setcolor(12);/*淡紅色*/</p><p> sound(500);
34、/*以指定頻率打開PC揚(yáng)聲器,這里頻率為500Hz*/</p><p> delay(700);/*發(fā)一個頻率為500Hz的音調(diào),維持700毫秒*/</p><p> sound(200);/*以指定頻率打開PC揚(yáng)聲器,這里頻率為200Hz*/</p><p> delay(300);</p><p> /*以上兩種不同頻率的音調(diào),可
35、仿真鐘表轉(zhuǎn)動時的嘀噠聲*/</p><p> nosound(); /*關(guān)閉PC揚(yáng)聲器*/</p><p> s=t[0].ti_sec;</p><p> m=t[0].ti_min;</p><p> h=t[0].ti_hour;</p><p> x2=98*sin(s/30*PI)+320; /*秒
36、針的x坐標(biāo)值*/</p><p> y2=180-98*cos(s/30*PI); /*秒針的y坐標(biāo)值*/</p><p> setlinestyle(0,0,1);</p><p> line(320,180,x2,y2);</p><p><b> /*繪制秒針*/</b></p><p&
37、gt; /*利用此循環(huán),延時一秒*/</p><p> while(t[0].ti_sec==s&&t[0].ti_min==m&&t[0].ti_hour==h)</p><p> { gettime(t);/*取得系統(tǒng)時間*/</p><p> if(bioskey(1)!=0){</p><p>
38、; k=bioskey(0);</p><p> count=keyhandle(k);</p><p><b> }</b></p><p><b> }</b></p><p> setcolor(15);</p><p> digitclock(353,33
39、3,digitsec(s)+1);/*數(shù)字時鐘增加1秒*/</p><p> setcolor(12); /*淡紅色*/</p><p> x2=98*sin(s/30*PI)+320;</p><p> y2=180-98*cos(s/30*PI);</p><p> line(320,180,x2,y2);</p>
40、<p> /*用原來的顏色在原來位置處再繪制秒針,以達(dá)到清除當(dāng)前秒針的目的*/</p><p><b> /*分鐘處理*/</b></p><p> if(t[0].ti_min!=m){ /*若分鐘有變化*/</p><p> /*消除當(dāng)前分針*/</p><p> setcolor(15); /*
41、白色*/</p><p> x1=80*sin(m/30*PI)+320;</p><p> y1=180-80*cos(m/30*PI);</p><p> line(320,180,x1,y1);</p><p> /*繪制新的分針*/</p><p> m=t[0].ti_min;</p>
42、<p> digitclock(305,333,digitmin(m)); /*在數(shù)字時鐘中顯示新的分鐘值*/</p><p> x1=80*sin(m/30*PI)+320;</p><p> y1=180-80*cos(m/30*PI);</p><p> line(320,180,x1,y1);</p><p>&l
43、t;b> }</b></p><p><b> /*小時處理*/</b></p><p> if((t[0].ti_hour*60+t[0].ti_min)!=(h*60+m)){ /*若小時數(shù)有變化*/</p><p> /*消除當(dāng)前時針*/</p><p> setcolor(15);
44、/*白色*/</p><p> x=50*sin((h*60+m)/360*PI)+320;/*50:時鐘的長度(單位:像素),320:圓心的x坐標(biāo)值*/</p><p> y=180-50*cos((h*60+m)/360*PI);</p><p> line(320,180,x,y);</p><p> /*繪制新的時針*/<
45、;/p><p> h=t[0].ti_hour;</p><p> digitclock(260,333,digithour(h));</p><p> x=50*sin((h*60+m)/360*PI)+320;</p><p> y=180-50*cos((h*60+m)/360*PI);</p><p>
46、line(320,180,x,y);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> int keyhandle(int key) /*鍵盤控制 */</p><
47、p> { switch(key)</p><p> case TAB:;</p><p><b> }</b></p><p> int digithour(double h)/*將double型的小時數(shù)轉(zhuǎn)換成int型*/</p><p><b> {int i;</b></p
48、><p> for(i=0;i<=23;i++)</p><p> {if(h==i) return i;}</p><p><b> }</b></p><p> int digitmin(double m)/*將double型的分鐘數(shù)轉(zhuǎn)換成int型*/</p><p><b&g
49、t; {int i;</b></p><p> for(i=0;i<=59;i++)</p><p> {if(m==i) return i;}</p><p><b> }</b></p><p> int digitsec(double s) /*將double型的秒鐘數(shù)轉(zhuǎn)換成int型*/
50、</p><p><b> {int i;</b></p><p> for(i=0;i<=59;i++)</p><p> {if(s==i) return i;}</p><p><b> }</b></p><p> void digitclock(in
51、t x,int y,int clock)/*在指定位置顯示數(shù)字時鐘:時\分\秒*/</p><p> {char buffer1[10];</p><p> setfillstyle(0,2);</p><p> bar(x,y,x+20,348);</p><p> if(clock==60) clock=0;</p>
52、<p> sprintf(buffer1,"%d",clock);</p><p> outtextxy(x,y,buffer1);</p><p><b> }</b></p><p> void drawcursor(int count) /*根據(jù)count的值,畫一個光標(biāo)*/</p>
53、;<p> {switch(count)</p><p><b> {</b></p><p> case 1:line(424,315,424,325);break;</p><p> case 2:line(465,315,465,325);break;</p><p> case 3:lin
54、e(505,315,505,325);break;</p><p><b> }</b></p><p><b> }</b></p><p> void clearcursor(int count) /*根據(jù)count的值,清除前一個光標(biāo)*/</p><p> {switch(cou
55、nt)</p><p><b> {</b></p><p> case 1:line(424,315,424,325);break;</p><p> case 2:line(465,315,465,325);break;</p><p> case 3:line(505,315,505,325);break;
56、</p><p><b> }</b></p><p><b> }</b></p><p><b> huatu()</b></p><p><b> {</b></p><p> int driver, mode=0,
57、i,j;</p><p> driver=DETECT; /*自動檢測顯示設(shè)備*/</p><p> initgraph(&driver, &mode, "");/*初始化圖形系統(tǒng)*/</p><p> setlinestyle(0,0,3); /*設(shè)置當(dāng)前畫線寬度和類型:設(shè)置三點(diǎn)寬實(shí)線*/</p><p
58、> setbkcolor(0);/*用調(diào)色板設(shè)置當(dāng)前背景顏色*/</p><p> setcolor(9); /*設(shè)置當(dāng)前畫線顏色*/</p><p> line(5,5,635,5);</p><p> line(5,5,5,475);</p><p> line(635,5,635,475);</p><
59、;p> line(5,475,635,475);</p><p> line(5,235,320,5);</p><p> line(320,5,635,235);</p><p> line(635,235,320,400);</p><p> line(320,400,5,235); /*畫主體框架的邊直線*
60、/</p><p> /*arc(int x, int y, int stangle, int endangle, int radius)*/</p><p> setcolor(15);</p><p> outtextxy(305,50,"CLOCK"); /*顯示標(biāo)題*/</p><p> setcolor(
61、7);</p><p> line(250,320,390,320);</p><p> line(390,320,390,350);</p><p> line(390,350,250,350);</p><p> line(250,350,250,320);</p><p> setcolor(5);&l
62、t;/p><p> for(i=290;i<=336;i+=46)</p><p> for(j=333;j<=340;j+=7){</p><p> setlinestyle(0,0,3);</p><p> circle(i,j,1); /*以(i, y)為圓心,1為半徑畫圓*/</p><p>&
63、lt;b> }</b></p><p> /*繪制表示小時的圓點(diǎn)*/</p><p> setcolor(15);</p><p> for(i=0,mi=0,ho=0;i<=11;i++,ho++){</p><p> x=100*sin((ho*60+mi)/360*PI)+320;</p>
64、<p> y=180-100*cos((ho*60+mi)/360*PI);</p><p> setlinestyle(0,0,3);</p><p> circle(x,y,2);</p><p><b> }</b></p><p> /*繪制表示分鐘或秒鐘的圓點(diǎn)*/</p>&
65、lt;p> setcolor(11);</p><p> for(i=0,mi=0;i<=59;mi++,i++){</p><p> x=100*sin(mi/30*PI)+320;</p><p> y=180-100*cos(mi/30*PI);</p><p> setlinestyle(0,0,1);</
66、p><p> circle(x,y,1);</p><p><b> }</b></p><p> /*在電子表的左邊打印幫助提示信息*/</p><p> setcolor(12);</p><p> outtextxy(250,420,"Do not waste time!&q
67、uot;);</p><p> outtextxy(20,35,"print TAB or ESC to setup time!");</p><p> outtextxy(385,35,"May you be happy forever");</p><p> setcolor(10);</p><
68、p> outtextxy(400,55,"version 1.0");</p><p> outtextxy(20,55,"jinhengli c language program");</p><p> outtextxy(313,65,"12");</p><p> outtextxy(3
69、63,80,"1");</p><p> outtextxy(413,120,"2");</p><p> outtextxy(426,175,"3");</p><p> outtextxy(413,225,"4");</p><p> outtextx
70、y(370,273,"5");</p><p> outtextxy(316,286,"6");</p><p> outtextxy(263,275,"7");</p><p> outtextxy(219,233,"8");</p><p> outt
71、extxy(205,177,"9");</p><p> outtextxy(214,120,"10");</p><p> outtextxy(263,80,"11");</p><p> setcolor(10);</p><p> circle(150,240,50);
72、</p><p> circle(150,240,45);</p><p> circle(150,240,40);</p><p> circle(150,240,35);</p><p> circle(150,240,30);</p><p> circle(150,240,25);</p>
73、<p> circle(150,240,20);</p><p> circle(150,240,15);</p><p> circle(150,240,10);</p><p> circle(150,240,05);</p><p> circle(150,240,1);</p><p>
74、 circle(490,240,50);</p><p> circle(490,240,45);</p><p> circle(490,240,40);</p><p> circle(490,240,35);</p><p> circle(490,240,30);</p><p> circle(4
75、90,240,25);</p><p> circle(490,240,20);</p><p> circle(490,240,15);</p><p> circle(490,240,10);</p><p> circle(490,240,05);</p><p> circle(490,240,1);
76、</p><p><b> }</b></p><p> clockhandle2()</p><p><b> {</b></p><p> int k=0,count;</p><p> setcolor(15);</p><p> g
77、ettime(t);/*取得系統(tǒng)時間,保存在time結(jié)構(gòu)類型的數(shù)組變量中*/</p><p> h=t[0].ti_hour;</p><p> m=t[0].ti_min;</p><p> x=50*sin((h*60+m)/360*PI)+320; /*時針的x坐標(biāo)值*/</p><p> y=180-50*cos((h*60+
78、m)/360*PI); /*時針的y坐標(biāo)值*/</p><p> line(320,180,x,y);/*在電子表中繪制時針*/</p><p> x1=80*sin(m/30*PI)+320; /*分針的x坐標(biāo)值*/</p><p> y1=180-80*cos(m/30*PI); /*分針的y坐標(biāo)值*/</p><p> line
79、(320,180,x1,y1); /*在電子表中繪制分針*/</p><p> digitclock(260,333,digithour(h)); /*在數(shù)字時鐘中,顯示當(dāng)前的小時值*/</p><p> digitclock(305,333,digitmin(m)); /*在數(shù)字時鐘中,顯示當(dāng)前的分鐘值*/</p><p> setwritemode(1);
80、</p><p> /*規(guī)定畫線的方式,如果mode=1,則表示畫線時用現(xiàn)在特性的線</p><p> 與所畫之處原有的線進(jìn)行異或(XOR)操作,實(shí)際上畫出的線是原有線與現(xiàn)在規(guī)定</p><p> 的線進(jìn)行異或后的結(jié)果。因此, 當(dāng)線的特性不變, 進(jìn)行兩次畫線操作相當(dāng)于沒有 </p><p> 畫線,即在當(dāng)前位置處清除了原來的畫線*/&
81、lt;/p><p> for(count=2;k!=ESC&&k!=TAB;){ /*開始循環(huán),直至用戶按下ESC鍵結(jié)束循環(huán)*/</p><p> setcolor(12);/*淡紅色*/</p><p> sound(500);/*以指定頻率打開PC揚(yáng)聲器,這里頻率為500Hz*/</p><p> delay(700)
82、;/*發(fā)一個頻率為500Hz的音調(diào),維持700毫秒*/</p><p> sound(200);/*以指定頻率打開PC揚(yáng)聲器,這里頻率為200Hz*/</p><p> delay(300);</p><p> /*以上兩種不同頻率的音調(diào),可仿真鐘表轉(zhuǎn)動時的嘀噠聲*/</p><p> nosound(); /*關(guān)閉PC揚(yáng)聲器*/&l
83、t;/p><p> s=t[0].ti_sec;</p><p> m=t[0].ti_min;</p><p> h=t[0].ti_hour;</p><p> x2=98*sin(s/30*PI)+320; /*秒針的x坐標(biāo)值*/</p><p> y2=180-98*cos(s/30*PI); /*秒針的
84、y坐標(biāo)值*/</p><p> setlinestyle(0,0,1);</p><p> line(320,180,x2,y2);</p><p><b> /*繪制秒針*/</b></p><p> /*利用此循環(huán),延時一秒*/</p><p> while(t[0].ti_sec=
85、=s&&t[0].ti_min==m&&t[0].ti_hour==h)</p><p> { gettime(t);/*取得系統(tǒng)時間*/</p><p> if(bioskey(1)!=0){</p><p> k=bioskey(0);</p><p> count=keyhandle(k);&l
86、t;/p><p><b> }</b></p><p><b> }</b></p><p> setcolor(15);</p><p> digitclock(353,333,digitsec(s)+1);/*數(shù)字時鐘增加1秒*/</p><p> setcolor
87、(12); /*淡紅色*/</p><p> x2=98*sin(s/30*PI)+320;</p><p> y2=180-98*cos(s/30*PI);</p><p> line(320,180,x2,y2);</p><p> /*用原來的顏色在原來位置處再繪制秒針,以達(dá)到清除當(dāng)前秒針的目的*/</p><
88、;p><b> /*分鐘處理*/</b></p><p> if(t[0].ti_min!=m){ /*若分鐘有變化*/</p><p> /*消除當(dāng)前分針*/</p><p> setcolor(15); /*白色*/</p><p> x1=80*sin(m/30*PI)+320;</p>
89、<p> y1=180-80*cos(m/30*PI);</p><p> line(320,180,x1,y1);</p><p> /*繪制新的分針*/</p><p> m=t[0].ti_min;</p><p> digitclock(305,333,digitmin(m)); /*在數(shù)字時鐘中顯示新的分鐘值
90、*/</p><p> x1=80*sin(m/30*PI)+320;</p><p> y1=180-80*cos(m/30*PI);</p><p> line(320,180,x1,y1);</p><p><b> }</b></p><p><b> /*小時處理*/
91、</b></p><p> if((t[0].ti_hour*60+t[0].ti_min)!=(h*60+m)){ /*若小時數(shù)有變化*/</p><p> /*消除當(dāng)前時針*/</p><p> setcolor(15); /*白色*/</p><p> x=50*sin((h*60+m)/360*PI)+320;/
92、*50:時鐘的長度(單位:像素),320:圓心的x坐標(biāo)值*/</p><p> y=180-50*cos((h*60+m)/360*PI);</p><p> line(320,180,x,y);</p><p> /*繪制新的時針*/</p><p> h=t[0].ti_hour;</p><p> di
93、gitclock(260,333,digithour(h));</p><p> x=50*sin((h*60+m)/360*PI)+320;</p><p> y=180-50*cos((h*60+m)/360*PI);</p><p> line(320,180,x,y);</p><p><b> }</b>
94、;</p><p><b> }</b></p><p><b> }</b></p><p><b> 第5章 總結(jié)</b></p><p> 本次課程設(shè)計用到了很多陌生的函數(shù),如:line(),circle(),setcolor(),settime()等,但是通過自
95、己細(xì)心地分析,在老師的耐心指導(dǎo)下,我很快學(xué)會了許多沒見過的函數(shù)。這次課程設(shè)計就如同上了一次c語言的課,在設(shè)計過程中學(xué)到很多書本上學(xué)不到的知識。真正的學(xué)習(xí)過程是在實(shí)踐中不斷地摸索,不斷地前進(jìn)中學(xué)習(xí)的,在實(shí)踐中可以發(fā)現(xiàn)一些現(xiàn)實(shí)的問題,可以遇見一些突發(fā)情況。在實(shí)踐中運(yùn)用知識,既增強(qiáng)了我們的動手能力,同時也鍛煉了我們的思維方式以及解決問題的能力。</p><p> 通過本次課程設(shè)計,使我掌握了如何設(shè)計一個程序,如何處理
96、程序設(shè)計過程中出現(xiàn)的問題。雖然設(shè)計過程中出現(xiàn)很多問題,但是努力去思考,努力去攻克,沒有設(shè)計不出來的程序,沒有攻克不了的難題。C語言是一個功能強(qiáng)大的計算機(jī)語言,學(xué)會c語言可以為我們以后的發(fā)展鋪平道路。這次實(shí)地上機(jī)操作,給了我們一份體驗(yàn),讓我們體會到了在程序編寫過程中所遇到的難題,同時也激勵我們繼續(xù)在實(shí)踐中學(xué)習(xí)c語言,為以后開發(fā)出功能強(qiáng)大的軟件積累經(jīng)驗(yàn)。</p><p> 最后非常感謝劉老師對我的精心指導(dǎo)!<
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c語言課程設(shè)計(電子時鐘)
- 電子時鐘課程設(shè)計報告
- 基于c語言單片機(jī)電子時鐘課程設(shè)計
- 電子時鐘課程設(shè)計--數(shù)字電子時鐘焊接調(diào)試報告
- 數(shù)字電子時鐘 課程設(shè)計報告
- labview電子時鐘設(shè)計課程設(shè)計報告
- 電子時鐘課程設(shè)計
- 倒計電子時鐘課程設(shè)計報告
- 數(shù)字電子時鐘課程設(shè)計報告
- 數(shù)字電子時鐘課程設(shè)計報告
- 數(shù)字電子時鐘課程設(shè)計報告
- 數(shù)字電子時鐘課程設(shè)計報告
- 電子時鐘 課程設(shè)計
- 電子時鐘課程設(shè)計
- 電子時鐘eda課程設(shè)計報告
- 電子時鐘課程設(shè)計
- 課程設(shè)計--電子時鐘
- 課程設(shè)計----電子時鐘設(shè)計
- 電子時鐘接口課程設(shè)計
- 電子時鐘課程設(shè)計 (2)
評論
0/150
提交評論