C語言課程設(shè)計(jì)報(bào)告-模擬時(shí)鐘轉(zhuǎn)動(dòng)程序_第1頁
C語言課程設(shè)計(jì)報(bào)告-模擬時(shí)鐘轉(zhuǎn)動(dòng)程序_第2頁
C語言課程設(shè)計(jì)報(bào)告-模擬時(shí)鐘轉(zhuǎn)動(dòng)程序_第3頁
C語言課程設(shè)計(jì)報(bào)告-模擬時(shí)鐘轉(zhuǎn)動(dòng)程序_第4頁
C語言課程設(shè)計(jì)報(bào)告-模擬時(shí)鐘轉(zhuǎn)動(dòng)程序_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、史限科我學(xué)院課程設(shè)計(jì)報(bào)告題 目 課 程名稱 結(jié)構(gòu)化程序設(shè)計(jì)課程設(shè)計(jì)院部名稱專業(yè)班級(jí)學(xué)生姓名 王蕾學(xué)號(hào)課程設(shè)計(jì)地點(diǎn)課程設(shè)計(jì)學(xué)時(shí)指導(dǎo)教師金陵科技學(xué)院教務(wù)處制目錄第一章 課程設(shè)計(jì)的目的和要求 1.1 C語言課程設(shè)計(jì)的目的 1.2 C語言課程設(shè)計(jì)實(shí)現(xiàn)的要求 第二章 課程設(shè)計(jì)的任務(wù)內(nèi)容 第三章詳細(xì)設(shè)計(jì)說明3.1 程序系統(tǒng)的結(jié)構(gòu)3.1.1 實(shí)驗(yàn)設(shè)備及環(huán)境:(軟、硬件環(huán)境)3.2 模塊描述3.2.1 指針式時(shí)鐘3.2.2 數(shù)字式時(shí)鐘3.3 輸出項(xiàng)3.4 算法3.5 流程圖3.6 函數(shù)說明3.7 接口 3.8 調(diào)試結(jié)果第四章軟件使用說明4.1 軟件使用說明及出現(xiàn)的問題4.2 運(yùn)行結(jié)果第五章課程設(shè)計(jì)心得與體會(huì)附

2、錄1:參考文獻(xiàn)附錄2:修改后的源代碼模擬時(shí)鐘轉(zhuǎn)動(dòng)程序第一章 課程設(shè)計(jì)的目的和要求1.1 C語言課程設(shè)計(jì)的目的加深對(duì)講授內(nèi)容的理解,尤其是一些語法規(guī)定。通過課程設(shè)計(jì),自然地、熟練地掌 握。熟悉所用的計(jì)算機(jī)系統(tǒng)的操作方法, 也就是熟悉語言程序開發(fā)的環(huán)境。 學(xué)會(huì)上機(jī) 調(diào)試程序。通過編程最終使程序運(yùn)行結(jié)果為電腦屏幕顯示模擬時(shí)鐘,并正常運(yùn)行顯示表針時(shí)間。1.2 C語言課程設(shè)計(jì)實(shí)現(xiàn)的要求能模擬機(jī)械鐘表行走;在屏幕上顯示一個(gè)活動(dòng)時(shí)鐘;程序界面設(shè)計(jì)合理,色彩得 體大方,顯示正確;各指針運(yùn)動(dòng)規(guī)律正確;要準(zhǔn)確地利用數(shù)字顯示日期和時(shí)間并且可 以根據(jù)用戶的需求更改當(dāng)前時(shí)間(指針式時(shí)鐘與數(shù)字式時(shí)鐘實(shí)現(xiàn)同步更改);數(shù)字式

3、 時(shí)鐘的時(shí)間顯示與指針式時(shí)鐘顯示一致;可以通過上下鍵改變當(dāng)前的時(shí)、分、秒;改 的時(shí)間是小時(shí)、分鐘、還是秒數(shù);通過 Tab鍵切換按Esc時(shí)程序退出。第二章 課程設(shè)計(jì)的任務(wù)內(nèi)容要熟練掌握C語言的基本知識(shí):數(shù)據(jù)類型(整形、實(shí)型、字符型、指針、數(shù)組、 結(jié)構(gòu)等);運(yùn)算類型(算術(shù)運(yùn)算、邏輯運(yùn)算、自增自減運(yùn)算、賦值運(yùn)算等);程序結(jié)構(gòu) (順序結(jié)構(gòu)、判斷選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu));大程序的功能分解方法(即函數(shù)的使用) 等。用C語言實(shí)現(xiàn)一個(gè)模擬時(shí)鐘轉(zhuǎn)動(dòng)程序; Graphics函數(shù)庫。提出總體方案的設(shè)計(jì)思想和原理,繪制程序流程圖和描述程序的功能,并說明程 序的特點(diǎn)和難點(diǎn)。能模擬機(jī)械鐘表行走;要準(zhǔn)確地利用數(shù)字顯示日期和時(shí)間

4、; 在屏幕上顯示一個(gè)活 動(dòng)時(shí)鐘;程序界面設(shè)計(jì)合理,色彩得體大方,顯示正確;各指針運(yùn)動(dòng)規(guī)律正確;數(shù)字 式時(shí)鐘的時(shí)間顯示與指針式時(shí)鐘顯示一致;按任意鍵時(shí)程序退出。模擬時(shí)鐘是一種集計(jì)時(shí)器和時(shí)鐘顯示于一體的程序。編寫一個(gè)指針式時(shí)鐘程序, 此程序在屏幕正中有一個(gè)指針式鐘面, 窗口標(biāo)題以數(shù)字方式顯示日期和時(shí)間。 指針式 的時(shí)鐘表盤為橢圓形或圓形,并且圓周上有分布均勻的12個(gè)刻度,刻度要求顯示清楚,鐘面上有長度不相同的指針,即時(shí)針、分針、秒針,指針的運(yùn)動(dòng)要求具有規(guī)律性, 且為順時(shí)針。數(shù)字鐘顯示時(shí)間的格式是年月日時(shí)分秒,小時(shí)為 24進(jìn)制,分鐘和秒是 60進(jìn)制,指針式的時(shí)鐘和數(shù)字式的時(shí)鐘顯示的時(shí)間同步,且兩個(gè)時(shí)

5、鐘所顯示的時(shí)間 與計(jì)算機(jī)的系統(tǒng)時(shí)間一致。第三章詳細(xì)設(shè)計(jì)說明3.1 程序系統(tǒng)的結(jié)構(gòu)圖3.1功能模塊圖3.1.1 實(shí)驗(yàn)設(shè)備及環(huán)境:(軟、硬件環(huán)境)Windows XP操作系統(tǒng)Win TC IDE C語言開發(fā)環(huán)境Hp筆記本3.2 模塊描述3.2.1 指針式時(shí)鐘指針式的時(shí)鐘表盤為圓形,并且圓周上有分布均勻的12個(gè)較大刻度和六十個(gè)較小的刻度,刻度顯示清楚,分別表示小時(shí)、分鐘和秒數(shù)鐘面上有長度不相同的指針, 即時(shí)針、分針、秒針,指針的運(yùn)動(dòng)具有規(guī)律性,為順時(shí)針。數(shù)字鐘顯示時(shí)間的格式是時(shí)分秒,的時(shí)鐘和數(shù)字式的時(shí)鐘顯示的時(shí)間同步,3.2.2 數(shù)字式時(shí)鐘小時(shí)為24進(jìn)制,分鐘和秒是60進(jìn)制,指針式且兩個(gè)時(shí)鐘所顯示的

6、時(shí)間與計(jì)算機(jī)的系統(tǒng)時(shí)間一致3.3 輸出項(xiàng)數(shù)字式時(shí)鐘輸出“ 時(shí)分秒”3.4 算法#define宏定義部分定義變量。利用函數(shù)circle( a, b, c)定義圓即表盤及軸心,其中(a , b)為圓心坐標(biāo),c為半徑。利用函數(shù)setbkcolor、setcolor設(shè)置顏色。gettime(t)獲取電腦時(shí)間進(jìn) 行顯示sound()、delay()函數(shù)設(shè)置表針走動(dòng)聲音對(duì)應(yīng)走動(dòng)刻度。應(yīng)用c語言庫函數(shù)進(jìn)行表盤及顏色的的處理,編寫表針運(yùn)算函數(shù),及表針影像顏色覆蓋處理詳見程序注 釋。不論何種指針,每次轉(zhuǎn)動(dòng)均以冗/30弧度(一秒的角度)為基本單位,且都以表 盤中心為轉(zhuǎn)動(dòng)圓心。計(jì)算指針端點(diǎn)(x, y)的公式如下:x

7、二圓心x坐標(biāo)指針長度* cos (指針方向角)y =圓心y坐標(biāo)指針長度* sin (指針方向角)注重,指針長度是指自圓心至指針一個(gè)端點(diǎn)的長度 (是整個(gè)指針的一部分),由于指針可以跨越圓 心,因此一個(gè)指針需要計(jì)算兩個(gè)端點(diǎn)。 三個(gè)指針的運(yùn)動(dòng)是相關(guān)聯(lián)的,秒針轉(zhuǎn)一圈引起 分針運(yùn)動(dòng)一格,分針轉(zhuǎn)一圈引起時(shí)針運(yùn)動(dòng)一格,因此應(yīng)該使用消息來處理指針的運(yùn)動(dòng)。3.5流程圖3.6 函數(shù)說明繪制小時(shí)的圓點(diǎn):x=100*sin(h*60+m)/360*PI)+451;y=200-100*cos(h*60+m)/360*PI);繪制表示分鐘或秒鐘的圓點(diǎn):x=100*sin(m/30*PI)+451;y=200-100*co

8、s(m/30*PI);由于表是順時(shí)針轉(zhuǎn)動(dòng),我們的角度習(xí)慣上使用逆時(shí)針,所以我們使用自己校正后 的角度值,從12點(diǎn)開始,按順時(shí)針重新排列三角函數(shù)值,加入對(duì)角度正負(fù)的校正。1、程序與處理包括加載頭文件,定義常量、變量、結(jié)構(gòu)體數(shù)組和函數(shù)原型聲明。主函數(shù)main()main()函數(shù)主要實(shí)現(xiàn)了對(duì)電子時(shí)鐘的初始化工作,及 clockhandle()函數(shù)的調(diào)用。main()int driver, mode=0, i, j;driver=DETECT;/*自動(dòng)檢測顯示設(shè)備 */initgraph(&driver, &mode, "")/*初始化圖形系統(tǒng) */setlines

9、tyle(0,0,3);/*設(shè)置當(dāng)前畫線寬度和類型:設(shè)置三點(diǎn)寬實(shí)線*/setbbc010r(0); /*用調(diào)色板設(shè)置當(dāng)前背景顏色*/setcolor(9); /*設(shè)置當(dāng)前畫線顏色*/2、在電子表的左邊打印幫助提示信息,相當(dāng)于軟件的使用說明。3、時(shí)鐘按鍵控制模塊在電子時(shí)鐘中,按鍵控制模塊最主要的工作就是必須能讀取用戶按鍵,對(duì)按鍵值進(jìn)行判斷,并調(diào) 用相應(yīng)函數(shù)來執(zhí)行相關(guān)操作。int keyhandle (int key, int count) /*鍵盤控制 */4、數(shù)字時(shí)鐘處理模塊在數(shù)字時(shí)鐘處理模塊中,主要實(shí)現(xiàn)數(shù)字時(shí)鐘的顯示和數(shù)字時(shí)鐘的修改。其中,在數(shù)字時(shí)鐘的修改中,用戶可先按Tab鍵定位需要修改內(nèi)

10、容的位置,然后通過按光標(biāo)上移或下移鍵來修改當(dāng)前時(shí)間。它的主要工作如下:(1)調(diào)用digitclock(int x,int y,int clock) 函數(shù),在數(shù)字時(shí)鐘 r指定位置顯示時(shí)、分、秒,其 中 digithour(double h) 、int digithour(double h) 和 digitsec(double s)用于完成數(shù)值的型向int 型轉(zhuǎn)換。(2)調(diào)用drawcursor(int count) 、clearcursor(int count)函數(shù)來完成舊光標(biāo)的擦除和新光標(biāo)的繪制。首先定義一些時(shí)鐘常用的宏和定義處理時(shí)鐘的一些函數(shù)及保存數(shù)據(jù)的變量:int keyhandle(in

11、t,int);/*鍵盤按鍵判斷,并調(diào)用相關(guān)函數(shù)處理 */int timeupchange(int); /*處理上移按鍵 */int timedownchange(int); /*處理下移按鍵 */int 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ù)*/vo

12、id drawcursor(int); /* 繪制一個(gè)光標(biāo) */void clearcursor(int);/*消除前一個(gè)光標(biāo) */void clockhandle(); /* 時(shí)鐘處理 */double h,m,s;/*全局變量:小時(shí),分,秒*/double x,x1,x2,y,y1,y2; /*全局變量:坐標(biāo)值 */struct time t1;/*定義一個(gè)time結(jié)構(gòu)類型的數(shù)組*/3.7 接口1 .#include<graphics.h>TurbeC中重要的函數(shù)庫, Visual C+6.0 和 DevC+都不支持(VC 和 DEV都支持C項(xiàng)目)Graphics,可憐我上網(wǎng)找

13、了半天終于找到了合適的IDEWin Tc本程序中的指針式時(shí)鐘和數(shù)字式時(shí)鐘的繪制都要靠它的 例如:int driver, mode=0,i,j;driver=DETECT;/*自動(dòng)檢測顯示設(shè)備*/initgraph(&driver, &mode, "");/* 初始化圖形系統(tǒng) */setlinestyle(0,0,3);/*設(shè)置當(dāng)前畫線寬度和類型:設(shè)置三點(diǎn)寬實(shí)線*/setbkc010r(0);/*用調(diào)色板設(shè)置當(dāng)前背景顏色*/setcolor(9); /*設(shè)置當(dāng)前畫線顏色*/line(82,430,558,430);line(70,62,70,418);line

14、(82,50,558,50);line(570,62,570,418);line(70,62,570,62);line(76,56,297,56);line(340,56,564,56);/*畫主體框架的邊直線 */2 .#include<stdio.h> 標(biāo)準(zhǔn)的C的輸入輸出流函數(shù)主要用它來控制字符串的某些操作3 .#include<math.h>數(shù)學(xué)函數(shù)庫,一些數(shù)學(xué)計(jì)算的公式的具體實(shí)現(xiàn)是放在math.h里4 .#include<dos.h>就是最早黑白界面下的操作使用的一些方法和接口的函數(shù)庫5 .8調(diào)試結(jié)果(在多次嘗試截屏無果后,痛下決定用相機(jī)拍下來了)圖

15、3.3運(yùn)行結(jié)果第四章軟件使用說明4.1 軟件使用說明及出現(xiàn)的問題在Win TC中新建一個(gè)cpp源文件,然后輸入代碼。運(yùn)行后顯示一個(gè)正在行走 的機(jī)械時(shí)鐘。機(jī)械時(shí)鐘下方為數(shù)字式時(shí)鐘,可根據(jù)需要修改當(dāng)前時(shí)間,該程序全屏顯 示,在屏幕的左半邊為操作提示(Tab: Cursor Move ; Up: Time+; Down: Time-;ESC:Quit the System; ) 和一句警示語: Nothing is more important than time,可根據(jù)提示進(jìn)行你想要的操作。按 ESC退出。4.2 運(yùn)行結(jié)果圖4.1運(yùn)行結(jié)果第五章課程設(shè)計(jì)心得與體會(huì)經(jīng)過一個(gè)半學(xué)期對(duì)C課程設(shè)計(jì)的學(xué)習(xí),我

16、們學(xué)習(xí)了理論知識(shí),了解了 C語 言程序設(shè)計(jì)的思想,這些知識(shí)都為我們的下一步學(xué)習(xí)打下了堅(jiān)實(shí)的基礎(chǔ)。通過課程設(shè)計(jì),一方面是為了檢查我們一個(gè)半學(xué)期來我們學(xué)習(xí)的成果,另一方面也是為了讓我們進(jìn)一步的掌握和運(yùn)用它,同時(shí)也讓我們認(rèn)清自己的不足之處和薄弱環(huán)節(jié),加以彌補(bǔ)和 加強(qiáng)。通過對(duì)模擬時(shí)鐘的設(shè)計(jì)進(jìn)一步的鞏固了用 C編寫程序,并且有利于更好的掌 握程序設(shè)計(jì)語言!同時(shí)也認(rèn)識(shí)到了結(jié)構(gòu)化語言的不足之處, 為我們以后學(xué)習(xí)面向?qū)ο?語埋下伏筆。在模擬時(shí)鐘的編寫過程中也體會(huì)到了做事情一頂要細(xì)心、認(rèn)真。更加知道了要掌握好基礎(chǔ)知識(shí)。還有體會(huì)到了成功的感覺!通過本項(xiàng)課程設(shè)計(jì)也培養(yǎng)了我獨(dú)立思考、綜合運(yùn)用所學(xué)有關(guān)相應(yīng)知識(shí)的能力,掌

17、握工程軟件設(shè)計(jì)的基本方法,強(qiáng)化上機(jī)動(dòng)手編程能力,闖過理論與實(shí)踐相結(jié)合的難 關(guān)!由于C程序設(shè)計(jì)語言是近年在國內(nèi)外得到迅速推廣應(yīng)用的一種語言。據(jù) 51CTO 2010的語言排行榜,C語言是程序員使用率第二高的語言,僅次于面向?qū)ο蟮腏ava語言,是使用率最高的面向結(jié)構(gòu)的編程語言。它功能豐富,表達(dá)能力強(qiáng),使用靈活方 便,應(yīng)用面廣,目標(biāo)程序效率高,可移植性好,既具有高級(jí)語言的優(yōu)點(diǎn),又具有低級(jí) 語言的許多特點(diǎn)。通過這次的程序設(shè)計(jì)更加了解了語言設(shè)計(jì)的好處和其可用性!在這次課程設(shè)計(jì)中也知道了自己的動(dòng)手能力不強(qiáng)有待進(jìn)一部的提高!在設(shè)計(jì)過程中不能夠把書本上的知識(shí)與實(shí)踐相結(jié)合,這也就增加了設(shè)計(jì)不好該程序的想法! 在

18、設(shè) 計(jì)過程中的一次次設(shè)計(jì)錯(cuò)誤增加了我放棄的想法! 不過經(jīng)過自己的獨(dú)立思考和同學(xué)的 幫助終于完成了課程設(shè)計(jì)!完成該程序后想起自己以前的每一次對(duì)自己失去信心,就覺得并不是在知識(shí)掌握上打敗了,而是自己對(duì)自己缺乏信心!只要自己對(duì)自己不失去 信心相信就可以完成那些以前認(rèn)為完成不了的事情! 也讓我懂得了要想成功首先就必 須有很強(qiáng)的自信心!懂得了自己以后要在做任何事情時(shí)都要自信! 當(dāng)自己都不相信自 己能夠成功時(shí)還可能會(huì)獲得成功嗎?在課程設(shè)計(jì)的過程中也知道了自己在以前的學(xué)習(xí)中有很大的不足導(dǎo)致在設(shè)計(jì)過 程中出現(xiàn)了很多的問題,有些地方看不懂也不知道怎么去設(shè)計(jì), 但是在設(shè)計(jì)過程中也 學(xué)習(xí)了很多,掌握了自己以前沒有學(xué)

19、好的知識(shí),雖然一時(shí)可以掌握完以前沒有學(xué)好的 知識(shí),不過也給自己敲響了警鐘,在學(xué)習(xí)中不可以伏于表面,要想學(xué)好每一門課程都 要踏踏實(shí)實(shí),做什么都不是給別人看的!都是要更好的掌握該門知識(shí),提高自己的自 身的修養(yǎng),提高自己的能力!為以后的工作打下良好的知識(shí)基礎(chǔ)和技能基礎(chǔ)!附錄1:教材及參考書序號(hào)書名編者出版社版本1C語言課程設(shè)計(jì)案例精編姜靈芝、余健清華大學(xué)出版社2008.12C語言課程設(shè)計(jì)案例精編郭翠英中國水利水電出版社2004.33C語言程序設(shè)計(jì)田祥宏主編西安電子科技大學(xué)出版社2007.12附錄二:/*電子時(shí)鐘源代碼*/#include<graphics.h>#include<st

20、dio.h>#include<math.h>#include<dos.h> #include <string.h>#include <conio.h>#define PI 3.1415926 /*定義常量*/#define UP 0x4800 /*上移T鍵:修改時(shí)間*/#define DOWN 0x5000 /*下移J鍵:修改時(shí)間*/#define ESC 0x11b /*ESC鍵:退出系統(tǒng)*/#define TAB 0xf09 /*TAB鍵:移動(dòng)光標(biāo)*/*函數(shù)聲明*/int keyhandle(int,int); /*鍵盤按鍵判斷,并調(diào)用

21、相關(guān)函數(shù)處理*/int timeupchange(int); /*處理上移按鍵*/int timedownchange(int); /*處理下移按鍵*/int 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) *

22、/void clearcursor(int);/*消除前一個(gè)光標(biāo) */void clockhandle(); /* 時(shí)鐘處理 */double h,m,s;/*全局變量:小時(shí),分,秒*/double x,x1,x2,y,y1,y2; /*全局變量:坐標(biāo)值 */struct time t1;/* 定義一個(gè)time 結(jié)構(gòu)類型的數(shù)組*/ main()(int driver, mode=0,i,j;driver=DETECT;/*自動(dòng)檢測顯示設(shè)備*/initgraph(&driver, &mode, "");/*初始化圖形系統(tǒng) */添加內(nèi)容:/*為防止圖形初始化時(shí)發(fā)

23、生異常出現(xiàn)錯(cuò)誤時(shí)將出現(xiàn)有好的提示界面*/errorcode = graphresult()if (errorcode != grOk) /*圖形初始化時(shí)出現(xiàn)錯(cuò)誤 */(printf("Graphics error: %s/n", grapherrormsg(errorcode);printf("Press any key to halt:");getch();exit(1); /* return with error code */ )/* setlinestyle(0,0,3); /*設(shè)置當(dāng)前畫線寬度和類型:設(shè)置三點(diǎn)寬實(shí)線*/函數(shù)名:setlinest

24、yle功能:設(shè)置當(dāng)前畫線寬度和類型用 法:void far setlinestyle(int linestyle, unsigned pattern,int width);linestyle 為整數(shù)型,用來定義所畫直線類型pattern為無符號(hào)整數(shù)型,該參數(shù)在需要用戶自定義線型時(shí)使用,如果是使用系統(tǒng)預(yù)定義的線型則參數(shù)取0值width為整數(shù)型,用來指定所畫直線的粗細(xì)SOLID_LINE0實(shí)線DOTTED_LINE1點(diǎn)線CNTER_LINE2中心線DASHED_LINE3虛線USERBIT LINE4用戶自定義線型此處我稍作修改:*/setlinestyle(0,0,3); /*設(shè)置當(dāng)前畫線寬度和

25、類型:設(shè)置四點(diǎn)寬點(diǎn)線線setbkcolor(0);/*用調(diào)色板設(shè)置當(dāng)前背景顏色 */*可以讓用戶選擇系統(tǒng)支持的顏色作為背景色*/int bkcol, maxcolor, x=10, y=10;char IsOK;maxcolor = getmaxcolor();for (bkcol=0; bkcol<=maxcolor; bkcol+)/*清理屏幕*/cleardevice();/*設(shè)置新的背景色*/setbkcolor(bkcol);/* output a messsage */if (bkcol = WHITE)setcolor(EGA_BLUE);sprintf(msg, &quo

26、t;Background color: %d", bkcol);outtextxy(x, y, msg);IsOK=getch();if(IsOK= Y)break;)setcolor(9); /*設(shè)置當(dāng)前畫線顏色*/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,297,56);line(340,56,564,56); /* /*arc(int x, int y, int stangle,

27、int endangle, int radius)*/ arc(82,62,90,180,12);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); /*畫主體框架的邊角弧線*/setcolor(15);顯示標(biāo)題*/outtextxy(300,53,"CLOCK"); /* setcolor(7);rectangle(342,72,560,360); /*畫一個(gè)矩形,作為時(shí)鐘的框架*/*/setwritemode

28、(0);/* 規(guī)定畫線的方式。mode=0,則表示畫線時(shí)將所畫位置的原來信息覆蓋setcolor(15);outtextxy(433,75,"CLOCK");/*時(shí)鐘的標(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;

29、j+=7) setlinestyle(0,0,3);circle(i,j,1);/* 以(i, y)為圓心,1為半徑畫圓*/)setcolor(15);line(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,4);/在指針式時(shí)鐘周圍顯示數(shù)字,使更易讀數(shù)circle(x,y,2);setlinestyle(0,0,1);x=110*s

30、in(h*60+m)/360*PI)+451;/在半徑的延伸處顯示圓點(diǎn)代表的小時(shí)y=200-110*cos(h*60+m)/360*PI);if(h=0)h=12;char buffer110;outtextxy(x,y,buffer1);sprintf(buffer1,"%d",h);outtextxy(x,y, buffer1);h=0;/不要忘記將h再次賦值為0)elsechar buffer110;outtextxy(x,y,buffer1);sprintf(buffer1,"%d",h);outtextxy(x,y, buffer1);)/將表

31、示小時(shí)的圓點(diǎn)用更大的圓點(diǎn)與畫出/*繪制表示分鐘或秒鐘的圓點(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);circle(x,y,1);/*在電子表的左邊打印幫助提示信息*/setcolor(4);outtextxy(184,125,"HELP");setcolor(15);outtextxy(182,125,"HELP");setcolor(5);outtextxy(140,185,"TAB : Curs

32、or move");outtextxy(140,225,"UP : Time +");outtextxy(140,265,"DOWN: Time -");outtextxy(140,305,"ESC : Quit system!");outtextxy(140,345,"Version : 2.0");setcolor(12);outtextxy(150,400,"Nothing is more important than time!");clockhandle();/*開始調(diào)用時(shí)鐘

33、處理程序*/closegraph();/*關(guān)閉圖形系統(tǒng)*/return 0; /*表示程序正常結(jié)束,向操作系統(tǒng)返回一個(gè) 0彳K*/void clockhandle()int k=0,count;setcolor(15);gettime(t);/* 取得系統(tǒng)時(shí)間,保存在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*

34、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,digithour(h);/*在數(shù)字時(shí)鐘中,顯示當(dāng)前的小時(shí)值 */digitclock(446,318,digitmin(m);/*在數(shù)字時(shí)鐘中,顯示當(dāng)前的分鐘值 */setwritemode(1);/*規(guī)定畫線的方式,如果mode=1,則表示畫線時(shí)用現(xiàn)在特性的線與所畫之處原有的線進(jìn)行異或(XOR)操作,實(shí)際上畫出的線是原有線與現(xiàn)在規(guī)定 的線進(jìn)行異或后的

35、結(jié)果。因此,當(dāng)線的特性不變,進(jìn)行兩次畫線操作相當(dāng)于沒有 畫線,即在當(dāng)前位置處清除了原來的畫線*/for(count=2;k!=ESC;) /*開始循環(huán),直至用戶按下ESC鍵結(jié)束循環(huán)*/setcolor(12);/*淡紅色*/sound(500);/*以指定頻率打開PC揚(yáng)聲器,這里頻率為500Hz*/delay(700);/*發(fā)一個(gè)頻率為500Hz的音調(diào),維持700毫秒*/sound(200);/*以指定頻率打開PC揚(yáng)聲器,這里頻率為200Hz*/delay(300);呵呵聲音怪怪的sound(600);/*以指定頻率打開PC揚(yáng)聲器,這里頻率為500Hz*/delay(800);/*發(fā)一個(gè)頻率為

36、500Hz的音調(diào),維持700毫秒*/sound(400);/*以指定頻率打開PC揚(yáng)聲器,這里頻率為200Hz*/delay(200);/*以上兩種不同頻率的音調(diào),可仿真鐘表轉(zhuǎn)動(dòng)時(shí)的嘀噠聲*/nosound(); /* 關(guān)閉 PC 揚(yáng)聲器 */s=t0.ti_sec;m=t0.ti_min;h=t0.ti_hour;x2=98*sln(s/30*PI)+451;/*秒針的 x 坐標(biāo)值 */y2=200-98*cos(s/30*PI); /*秒針的 y 坐標(biāo)值 */line(451,200,x2,y2);/*繪制秒針*/*利用此循環(huán),延時(shí)一秒*/while(t0.ti sec=s&&

37、;t0.ti min=m&&t0.ti hour=h) gettime(t);/*取得系統(tǒng)時(shí)間*/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*PI)+451;y2=200-98*cos(s/30*PI);line(451,200,x2,y2);/*用原來的顏色在原來位置處再繪制秒針,/*分鐘處理*/if

38、(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);數(shù)字時(shí)鐘增加1秒*/以達(dá)到清除當(dāng)前秒針的目的 */*/*繪制新的分針*/m=t0.ti_min;digitclock(446,318,digitmin(m); /*在數(shù)字時(shí)鐘中顯示新的分鐘值x1=80*sln(m/30*PI)+451;y1=200-80*cos(m/30*PI);line(451,200,x1,y1);/*小時(shí)處理*/if(t0.ti_ho

39、ur*60+t0.ti_min)!=(h*60+m) /*若小時(shí)數(shù)有變化/*消除當(dāng)前時(shí)針*/setcolor(15);/* 白色 */x=50*sin(h*60+m)/360*PI)+451;/*50: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-50*cos(h*60+m)/360*PI);line(451,200,x,y);int keyhandle(int key

40、,int count) /* switch(key)case UP: timeupchange(count-1); /* break;case DOWN:timedownchange(count-1);break;時(shí)鐘的長度(單位:像素),451:圓心的x坐標(biāo)值*/鍵盤才$制*/因?yàn)閏ount的初始值為2,所以此處減1*/*因?yàn)閏ount的初始值為2 ,所以此處減1*/case TAB:setcolor(15);clearcursor(count); /*清除原來的光標(biāo) */drawcursor(count); /*顯示一個(gè)新的光標(biāo) */count+;break;)return count;)int timeupc

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論