版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 課程設(shè)計(jì)報(bào)告</b></p><p> 題 目 </p><p> 課 程 名 稱 結(jié)構(gòu)化程序設(shè)計(jì)課程設(shè)計(jì) </p><p> 院 部 名 稱 </p><p> 專
2、 業(yè) </p><p> 班 級 </p><p> 學(xué) 生 姓 名 </p><p> 學(xué) 號 </p><p>
3、 課程設(shè)計(jì)地點(diǎn) </p><p> 課程設(shè)計(jì)學(xué)時(shí) </p><p> 指 導(dǎo) 教 師 </p><p><b> 目 錄</b></p><p> 第一章 課程設(shè)計(jì)的目的和要求<
4、/p><p> 1.1 C語言課程設(shè)計(jì)的目的</p><p> 1.2 C語言課程設(shè)計(jì)實(shí)現(xiàn)的要求</p><p> 第二章 課程設(shè)計(jì)的任務(wù)內(nèi)容</p><p> 第三章 詳細(xì)設(shè)計(jì)說明</p><p> 3.1 程序系統(tǒng)的結(jié)構(gòu)</p><p> 3.1.1 實(shí)驗(yàn)設(shè)備及環(huán)境
5、:(軟、硬件環(huán)境)</p><p> 3.2 模塊描述</p><p> 3.2.1 指針式時(shí)鐘</p><p> 3.2.2 數(shù)字式時(shí)鐘</p><p><b> 3.3 輸出項(xiàng)</b></p><p><b> 3.4 算法</b></
6、p><p><b> 3.5 流程圖</b></p><p> 3.6 函數(shù)說明</p><p><b> 3.7 接口</b></p><p> 3.8 調(diào)試結(jié)果</p><p> 第四章 軟件使用說明</p><p> 4
7、.1 軟件使用說明及出現(xiàn)的問題</p><p> 4.2 運(yùn)行結(jié)果</p><p> 第五章 課程設(shè)計(jì)心得與體會</p><p><b> 附錄1:參考文獻(xiàn)</b></p><p> 附錄2:修改后的源代碼……………………………………………………………………</p><p>&
8、lt;b> 模擬時(shí)鐘轉(zhuǎn)動程序</b></p><p> 第一章 課程設(shè)計(jì)的目的和要求</p><p> 1.1 C語言課程設(shè)計(jì)的目的</p><p> 加深對講授內(nèi)容的理解,尤其是一些語法規(guī)定。通過課程設(shè)計(jì),自然地、熟練地掌握。熟悉所用的計(jì)算機(jī)系統(tǒng)的操作方法,也就是熟悉語言程序開發(fā)的環(huán)境。學(xué)會上機(jī)調(diào)試程序。通過編程最終使程序運(yùn)行結(jié)果為電腦
9、屏幕顯示模擬時(shí)鐘,并正常運(yùn)行顯示表針時(shí)間。</p><p> 1.2 C語言課程設(shè)計(jì)實(shí)現(xiàn)的要求</p><p> 能模擬機(jī)械鐘表行走;在屏幕上顯示一個(gè)活動時(shí)鐘;程序界面設(shè)計(jì)合理,色彩得體大方,顯示正確;各指針運(yùn)動規(guī)律正確;要準(zhǔn)確地利用數(shù)字顯示日期和時(shí)間并且可以根據(jù)用戶的需求更改當(dāng)前時(shí)間(指針式時(shí)鐘與數(shù)字式時(shí)鐘實(shí)現(xiàn)同步更改);數(shù)字式時(shí)鐘的時(shí)間顯示與指針式時(shí)鐘顯示一致;可以通過上下鍵改變
10、當(dāng)前的時(shí)、分、秒;改的時(shí)間是小時(shí)、分鐘、還是秒數(shù);通過Tab鍵切換按Esc時(shí)程序退出。</p><p> 第二章 課程設(shè)計(jì)的任務(wù)內(nèi)容</p><p> 要熟練掌握C語言的基本知識:數(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)
11、一個(gè)模擬時(shí)鐘轉(zhuǎn)動程序;Graphics函數(shù)庫。</p><p> 提出總體方案的設(shè)計(jì)思想和原理,繪制程序流程圖和描述程序的功能,并說明程序的特點(diǎn)和難點(diǎn)。</p><p> 能模擬機(jī)械鐘表行走;要準(zhǔn)確地利用數(shù)字顯示日期和時(shí)間;在屏幕上顯示一個(gè)活動時(shí)鐘;程序界面設(shè)計(jì)合理,色彩得體大方,顯示正確;各指針運(yùn)動規(guī)律正確;數(shù)字式時(shí)鐘的時(shí)間顯示與指針式時(shí)鐘顯示一致;按任意鍵時(shí)程序退出。</p&
12、gt;<p> 模擬時(shí)鐘是一種集計(jì)時(shí)器和時(shí)鐘顯示于一體的程序。編寫一個(gè)指針式時(shí)鐘程序,此程序在屏幕正中有一個(gè)指針式鐘面,窗口標(biāo)題以數(shù)字方式顯示日期和時(shí)間。指針式的時(shí)鐘表盤為橢圓形或圓形,并且圓周上有分布均勻的12個(gè)刻度,刻度要求顯示清楚,鐘面上有長度不相同的指針,即時(shí)針、分針、秒針,指針的運(yùn)動要求具有規(guī)律性,且為順時(shí)針。數(shù)字鐘顯示時(shí)間的格式是年月日時(shí)分秒,小時(shí)為24進(jìn)制,分鐘和秒是60進(jìn)制,指針式的時(shí)鐘和數(shù)字式的時(shí)鐘顯示
13、的時(shí)間同步,且兩個(gè)時(shí)鐘所顯示的時(shí)間與計(jì)算機(jī)的系統(tǒng)時(shí)間一致。</p><p> 第三章 詳細(xì)設(shè)計(jì)說明</p><p> 3.1 程序系統(tǒng)的結(jié)構(gòu)</p><p> 圖3.1 功能模塊圖</p><p> 3.1.1 實(shí)驗(yàn)設(shè)備及環(huán)境:(軟、硬件環(huán)境)</p><p> Windows XP操作系統(tǒng)</
14、p><p> Win TC IDE C語言開發(fā)環(huán)境</p><p><b> Hp筆記本</b></p><p><b> 3.2 模塊描述</b></p><p> 3.2.1 指針式時(shí)鐘</p><p> 指針式的時(shí)鐘表盤為圓形,并且圓周上有分布均勻的12個(gè)較
15、大刻度和六十個(gè)較小的刻度,刻度顯示清楚,分別表示小時(shí)、分鐘和秒數(shù)鐘面上有長度不相同的指針,即時(shí)針、分針、秒針,指針的運(yùn)動具有規(guī)律性,為順時(shí)針。</p><p> 3.2.2 數(shù)字式時(shí)鐘</p><p> 數(shù)字鐘顯示時(shí)間的格式是時(shí)分秒,小時(shí)為24進(jìn)制,分鐘和秒是60進(jìn)制,指針式的時(shí)鐘和數(shù)字式的時(shí)鐘顯示的時(shí)間同步,且兩個(gè)時(shí)鐘所顯示的時(shí)間與計(jì)算機(jī)的系統(tǒng)時(shí)間一致。</p>&l
16、t;p><b> 3.3 輸出項(xiàng)</b></p><p> 數(shù)字式時(shí)鐘輸出“%d時(shí)%d分%d秒”。</p><p><b> 3.4 算法</b></p><p> #define宏定義部分定義變量。</p><p> 利用函數(shù)circle(a,b,c)定義圓即表盤及軸心,其中(
17、a,b)為圓心坐標(biāo),c為半徑。利用函數(shù)setbkcolor、setcolor設(shè)置顏色。gettime(t)獲取電腦時(shí)間進(jìn)行顯示sound()、delay()函數(shù)設(shè)置表針走動聲音對應(yīng)走動刻度。應(yīng)用c語言庫函數(shù)進(jìn)行表盤及顏色的的處理,編寫表針運(yùn)算函數(shù),及表針影像顏色覆蓋處理詳見程序注釋。不論何種指針,每次轉(zhuǎn)動均以π/30弧度(一秒的角度)為基本單位,且都以表盤中心為轉(zhuǎn)動圓心。計(jì)算指針端點(diǎn)(x, y)的公式如下:x =圓心x坐標(biāo) 指針長度
18、 * cos (指針方向角)y =圓心y坐標(biāo) 指針長度 * sin (指針方向角)注重,指針長度是指自圓心至指針一個(gè)端點(diǎn)的長度(是整個(gè)指針的一部分),由于指針可以跨越圓心,因此一個(gè)指針需要計(jì)算兩個(gè)端點(diǎn)。三個(gè)指針的運(yùn)動是相關(guān)聯(lián)的,秒針轉(zhuǎn)一圈引起分針運(yùn)動一格,分針轉(zhuǎn)一圈引起時(shí)針運(yùn)動一格,因此應(yīng)該使用消息來處理指針的運(yùn)動。</p><p><b> 3.5 流程圖</b></p>
19、;<p> 圖3.2 程序流程圖</p><p> 3.6 函數(shù)說明 </p><p><b> 繪制小時(shí)的圓點(diǎn):</b></p><p> x=100*sin((h*60+m)/360*PI)+451;y=200-100*cos((h*60+m)/360*PI);</p><p> 繪制表示
20、分鐘或秒鐘的圓點(diǎn):x=100*sin(m/30*PI)+451;y=200-100*cos(m/30*PI);</p><p> 由于表是順時(shí)針轉(zhuǎn)動,我們的角度習(xí)慣上使用逆時(shí)針,所以我們使用自己校正后的角度值,從12點(diǎn)開始,按順時(shí)針重新排列三角函數(shù)值,加入對角度正負(fù)的校正。</p><p><b> 1、程序與處理</b></p><p&g
21、t; 包括加載頭文件,定義常量、變量、結(jié)構(gòu)體數(shù)組和函數(shù)原型聲明。</p><p><b> 主函數(shù)main()</b></p><p> main()函數(shù)主要實(shí)現(xiàn)了對電子時(shí)鐘的初始化工作,及clockhandle()函數(shù)的調(diào)用。</p><p><b> main()</b></p><p>
22、;<b> { </b></p><p> int driver, mode=0, i, j;</p><p> driver=DETECT; /*自動檢測顯示設(shè)備*/</p><p> initgraph(&driver, &mode, "") /*初始化圖形系統(tǒng)*/</p><
23、p> setlinestyle(0,0,3); /*設(shè)置當(dāng)前畫線寬度和類型:設(shè)置三點(diǎn)寬實(shí)線*/</p><p> setbbcolor(0); /*用調(diào)色板設(shè)置當(dāng)前背景顏色*/</p><p> setcolor(9); /*設(shè)置當(dāng)前畫線顏色*/</p><p><b> ……</b></p><p>
24、2、在電子表的左邊打印幫助提示信息,相當(dāng)于軟件的使用說明。</p><p> 3、時(shí)鐘按鍵控制模塊在電子時(shí)鐘中,按鍵控制模塊最主要的工作就是必須能讀取用戶按鍵,對按鍵值進(jìn)行判斷,并調(diào)用相應(yīng)函數(shù)來執(zhí)行相關(guān)操作。int keyhandle (int key, int count) /*鍵盤控制*/</p><p> 4、數(shù)字時(shí)鐘處理模塊在數(shù)字時(shí)鐘處理模塊中,主要實(shí)現(xiàn)數(shù)字時(shí)鐘的顯示和數(shù)
25、字時(shí)鐘的修改。其中,在數(shù)字時(shí)鐘的修改中,用戶可先按Tab鍵定位需要修改內(nèi)容的位置,然后通過按光標(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
26、)調(diào)用drawcursor(int count)、clearcursor(int count)函數(shù)來完成舊光標(biāo)的擦除和新光標(biāo)的繪制。</p><p> 首先定義一些時(shí)鐘常用的宏和定義處理時(shí)鐘的一些函數(shù)及保存數(shù)據(jù)的變量:</p><p> int keyhandle(int,int); /*鍵盤按鍵判斷,并調(diào)用相關(guān)函數(shù)處理*/</p><p> int time
27、upchange(int); /*處理上移按鍵*/</p><p> int timedownchange(int); /*處理下移按鍵*/</p><p> int digithour(double); /*將double型的小時(shí)數(shù)轉(zhuǎn)換成int型*/</p><p> int digitmin(double); /*將double型的分鐘數(shù)轉(zhuǎn)換成int型
28、*/</p><p> int digitsec(double); /*將double型的秒鐘數(shù)轉(zhuǎn)換成int型*/</p><p> void digitclock(int,int,int ); /*在指定位置顯示時(shí)鐘或分鐘或秒鐘數(shù)*/</p><p> void drawcursor(int); /*繪制一個(gè)光標(biāo)*/</p><p&g
29、t; void clearcursor(int);/*消除前一個(gè)光標(biāo)*/</p><p> void clockhandle(); /*時(shí)鐘處理*/</p><p> double h,m,s; /*全局變量:小時(shí),分,秒*/</p><p> double x,x1,x2,y,y1,y2; /*全局變量:坐標(biāo)值*/</p><p>
30、 struct time t[1];/*定義一個(gè)time結(jié)構(gòu)類型的數(shù)組*/</p><p><b> 3.7 接口 </b></p><p> 1.#include<graphics.h>TurbeC 中重要的函數(shù)庫,Visual C++6.0和DevC++都不支持(VC和DEV都支持C項(xiàng)目)Graphics,可憐我上網(wǎng)找了半天終于找到了合適的I
31、DEWin Tc</p><p> 本程序中的指針式時(shí)鐘和數(shù)字式時(shí)鐘的繪制都要靠它的 </p><p><b> 例如:</b></p><p> int driver, mode=0,i,j;</p><p> driver=DETECT; /*自動檢測顯示設(shè)備*/</p><p>
32、 initgraph(&driver, &mode, "");/*初始化圖形系統(tǒng)*/</p><p> setlinestyle(0,0,3); /*設(shè)置當(dāng)前畫線寬度和類型:設(shè)置三點(diǎn)寬實(shí)線*/</p><p> setbkcolor(0);/*用調(diào)色板設(shè)置當(dāng)前背景顏色*/</p><p> setcolor(9); /*設(shè)置
33、當(dāng)前畫線顏色*/</p><p> line(82,430,558,430);</p><p> line(70,62,70,418);</p><p> line(82,50,558,50);</p><p> line(570,62,570,418);</p><p> line(70,62,570,62
34、);</p><p> line(76,56,297,56);</p><p> line(340,56,564,56); /*畫主體框架的邊直線*/</p><p> 2.#include<stdio.h> 標(biāo)準(zhǔn)的C的輸入輸出流函數(shù) 主要用它來控制字符串的某些操作</p><p> 3.#include&
35、lt;math.h>數(shù)學(xué)函數(shù)庫,一些數(shù)學(xué)計(jì)算的公式的具體實(shí)現(xiàn)是放在math.h里。</p><p> 4.#include<dos.h> 就是最早黑白界面下的操作使用的一些方法和接口的函數(shù)庫</p><p> 3.8 調(diào)試結(jié)果(在多次嘗試截屏無果后,痛下決定用相機(jī)拍下來了)</p><p><b> 圖3.3 運(yùn)行結(jié)果<
36、/b></p><p> 第四章 軟件使用說明</p><p> 4.1 軟件使用說明及出現(xiàn)的問題</p><p> 在Win TC中新建一個(gè)cpp源文件, 然后輸入代碼。運(yùn)行后顯示一個(gè)正在行走的機(jī)械時(shí)鐘。機(jī)械時(shí)鐘下方為數(shù)字式時(shí)鐘,可根據(jù)需要修改當(dāng)前時(shí)間,該程序全屏顯示,在屏幕的左半邊為操作提示(Tab:Cursor Move ;Up: Ti
37、me++;Down: Time--;ESC:Quit the System;)和一句警示語:Nothing is more important than time,可根據(jù)提示進(jìn)行你想要的操作。按ESC退出。</p><p><b> 4.2 運(yùn)行結(jié)果</b></p><p><b> 圖4.1 運(yùn)行結(jié)果</b></p><
38、;p> 第五章 課程設(shè)計(jì)心得與體會</p><p> 經(jīng)過一個(gè)半學(xué)期對《C課程設(shè)計(jì)》的學(xué)習(xí),我們學(xué)習(xí)了理論知識,了解了C語言程序設(shè)計(jì)的思想,這些知識都為我們的下一步學(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)。通過對模擬時(shí)鐘的設(shè)計(jì)進(jìn)一步的鞏固了用C編寫程序,并且有利
39、于更好的掌握程序設(shè)計(jì)語言!同時(shí)也認(rèn)識到了結(jié)構(gòu)化語言的不足之處,為我們以后學(xué)習(xí)面向?qū)ο笳Z埋下伏筆。</p><p> 在模擬時(shí)鐘的編寫過程中也體會到了做事情一頂要細(xì)心、認(rèn)真。更加知道了要掌握好基礎(chǔ)知識。還有體會到了成功的感覺!</p><p> 通過本項(xiàng)課程設(shè)計(jì)也培養(yǎng)了我獨(dú)立思考、 綜合運(yùn)用所學(xué)有關(guān)相應(yīng)知識的能力,掌握工程軟件設(shè)計(jì)的基本方法,強(qiáng)化上機(jī)動手編程能力,闖過理論與實(shí)踐相結(jié)合的難
40、關(guān)!</p><p> 由于C程序設(shè)計(jì)語言是近年在國內(nèi)外得到迅速推廣應(yīng)用的一種語言。據(jù)51CTO 2010的語言排行榜,C語言是程序員使用率第二高的語言,僅次于面向?qū)ο蟮腏ava語言,是使用率最高的面向結(jié)構(gòu)的編程語言。它功能豐富,表達(dá)能力強(qiáng),使用靈活方便,應(yīng)用面廣,目標(biāo)程序效率高,可移植性好,既具有高級語言的優(yōu)點(diǎn),又具有低級語言的許多特點(diǎn)。通過這次的程序設(shè)計(jì)更加了解了語言設(shè)計(jì)的好處和其可用性!</p>
41、;<p> 在這次課程設(shè)計(jì)中也知道了自己的動手能力不強(qiáng)有待進(jìn)一部的提高!在設(shè)計(jì)過程中不能夠把書本上的知識與實(shí)踐相結(jié)合,這也就增加了設(shè)計(jì)不好該程序的想法!在設(shè)計(jì)過程中的一次次設(shè)計(jì)錯(cuò)誤增加了我放棄的想法!不過經(jīng)過自己的獨(dú)立思考和同學(xué)的幫助終于完成了課程設(shè)計(jì)!完成該程序后想起自己以前的每一次對自己失去信心,就覺得并不是在知識掌握上打敗了,而是自己對自己缺乏信心!只要自己對自己不失去信心相信就可以完成那些以前認(rèn)為完成不了的事情!
42、也讓我懂得了要想成功首先就必須有很強(qiáng)的自信心!懂得了自己以后要在做任何事情時(shí)都要自信!當(dāng)自己都不相信自己能夠成功時(shí)還可能會獲得成功嗎?</p><p> 在課程設(shè)計(jì)的過程中也知道了自己在以前的學(xué)習(xí)中有很大的不足導(dǎo)致在設(shè)計(jì)過程中出現(xiàn)了很多的問題,有些地方看不懂也不知道怎么去設(shè)計(jì),但是在設(shè)計(jì)過程中也學(xué)習(xí)了很多,掌握了自己以前沒有學(xué)好的知識,雖然一時(shí)可以掌握完以前沒有學(xué)好的知識,不過也給自己敲響了警鐘,在學(xué)習(xí)中不可以
43、伏于表面,要想學(xué)好每一門課程都要踏踏實(shí)實(shí),做什么都不是給別人看的!都是要更好的掌握該門知識,提高自己的自身的修養(yǎng),提高自己的能力!為以后的工作打下良好的知識基礎(chǔ)和技能基礎(chǔ)!</p><p><b> 附錄1:</b></p><p><b> 教材及參考書</b></p><p><b> 附錄二:<
44、/b></p><p> /*電子時(shí)鐘源代碼*/#include<graphics.h>#include<stdio.h>#include<math.h>#include<dos.h></p><p> #include <string.h></p><p> #include <
45、conio.h> #define PI 3.1415926 /*定義常量*/#define UP 0x4800 /*上移↑鍵:修改時(shí)間*/#define DOWN 0x5000 /*下移↓鍵:修改時(shí)間*/#define ESC 0x11b /*ESC鍵 : 退出系統(tǒng)*/#define TAB 0xf09 /*TAB鍵 : 移動光標(biāo)*//*函數(shù)聲明*/int keyhandle(int,int); /*鍵盤按鍵判斷,并
46、調(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型*/
47、void digitclock(int,int,int ); /*在指定位置顯示時(shí)鐘或分鐘或秒鐘數(shù)*/v</p><p> double h,m,s; /*全局變量:小時(shí),分,秒*/double x,x1,x2,y,y1,y2; /*全局變量:坐標(biāo)值*/struct time t[1];/*定義一個(gè)time結(jié)構(gòu)類型的數(shù)組*/main(){int driver, mode=0,i,j;driver=
48、DETECT; /*自動檢測顯示設(shè)備*/initgraph(&driver, &mode, "");/*初始化圖形系統(tǒng)*/</p><p> 添加內(nèi)容 :/*為防止圖形初始化時(shí)發(fā)生異常 出現(xiàn)錯(cuò)誤時(shí)將出現(xiàn)有好的提示界面 */errorcode = graphresult()if (errorcode != grOk) /* 圖形初始化時(shí)出現(xiàn)錯(cuò)誤*/{printf
49、("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í)線*/</p><p&
50、gt; 函數(shù)名: setlinestyle</p><p> 功 能: 設(shè)置當(dāng)前畫線寬度和類型</p><p> 用 法: void far setlinestyle(int linestyle, unsigned pattern,int width);</p><p> linestyle為整數(shù)型,用來定義所畫直線類型</p>&l
51、t;p> pattern為無符號整數(shù)型,該參數(shù)在需要用戶自定義線型時(shí)使用 ,如果是使用系統(tǒng)預(yù)定義的線型則參數(shù)取0值</p><p> width為整數(shù)型,用來指定所畫直線的粗細(xì)</p><p> SOLID_LINE 0 實(shí)線&
52、lt;/p><p> DOTTED_LINE 1 點(diǎn)線</p><p> CNTER_LINE 2
53、中心線</p><p> DASHED_LINE 3 虛線</p><p> USERBIT_LINE 4 用
54、戶自定義線型</p><p><b> 此處我稍作修改:</b></p><p><b> */</b></p><p> setlinestyle(0,0,3); /*設(shè)置當(dāng)前畫線寬度和類型:設(shè)置四點(diǎn)寬點(diǎn)線線setbkcolor(0);/*用調(diào)色板設(shè)置當(dāng)前背景顏色*/</p><p>
55、/*可以讓用戶選擇系統(tǒng)支持的顏色作為背景色*/</p><p> int bkcol, maxcolor, x=10, y=10;</p><p> char IsOK;</p><p> maxcolor = getmaxcolor();</p><p> for (bkcol=0; bkcol<=maxcolor; bkco
56、l++) { /* 清理屏幕 */ cleardevice(); /* 設(shè)置新的背景色*/ setbkcolor(bkcol); /* output a messsage */ if (bkcol == WHITE) setcolor(EGA_BLUE); sprintf(msg, "Background color: %d", bkcol); outtextxy(x, y, msg); IsO
57、K=getch(); </p><p> if(IsOK==’Y’)</p><p> 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,
58、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,180,279,12);setlinestyle(0,0,3);arc(55
59、8,418,270,360,12); /*畫主體框架的邊角弧線*/setcolor(15);outtextxy(300,53,"CLOCK"); /*顯示標(biāo)題*/setcolor(7);rectangle(342,72,560,360); /*畫一個(gè)矩</p><p> setwritemode(0); /*規(guī)定畫線的方式。mode=0, 則表示畫線時(shí)將所畫位置的原來信息覆蓋*/s
60、etcolor(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); /*繪制電子動畫時(shí)鐘下的數(shù)字時(shí)鐘的邊框架*//*繪制數(shù)字時(shí)鐘的時(shí)分秒的分隔符*/setcolor(5);
61、for(i=431;i<=470;i+=39)for(j=317;j<=324;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++){
62、x=100*sin((h*60+m)/360</p><p> setlinestyle(0,0,1);x=110*sin((h*60+m)/360*PI)+451;//在半徑的延伸處顯示圓點(diǎn)代表的小時(shí)y=200-110*cos((h*60+m)/360*PI);</p><p><b> if(h==0)</b></p><p>&l
63、t;b> {h=12;</b></p><p> char buffer1[10];</p><p> outtextxy(x,y,buffer1);</p><p> sprintf(buffer1,"%d",h);</p><p> outtextxy(x,y, buffer1);</
64、p><p> h=0;//不要忘記將h再次賦值為0</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> char buffer1[10];</p>
65、<p> outtextxy(x,y,buffer1);</p><p> sprintf(buffer1,"%d",h);</p><p> outtextxy(x,y, buffer1);</p><p><b> }</b></p><p> //將表示小時(shí)的圓點(diǎn)用更大的圓點(diǎn)
66、與畫出}/*繪制表示分鐘或秒鐘的圓點(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(1
67、5);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,"E
68、SC : Quit system!");outtextxy(140,345,"Version : 2.0");setcolor(12);outtextxy(150,400,"Nothing is m</p><p> void clockhandle(){int k=0,count;setcolor(15);gettime(t);/*取得系統(tǒng)時(shí)間,保存在ti
69、me結(jié)構(gòu)類型的數(shù)組變量中*/h=t[0].ti_hour;m=t[0].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í)針*/</p><p> x1=80*sin(m/30*PI)+451; /*分針的x坐標(biāo)值*
70、/y1=200-80*cos(m/30*PI); /*分針的y坐標(biāo)值*/line(451,200,x1,y1); /*在電子表中繪制分針*/</p><p> digitclock(408,318,digithour(h)); /*在數(shù)字時(shí)鐘中,顯示當(dāng)前的小時(shí)值*/digitclock(446,318,digitmin(m)); /*在數(shù)字時(shí)鐘中,顯示當(dāng)前的分鐘值*/setwritemode(1);/
71、*規(guī)定畫線的方式,如果mode=1,則表示畫線時(shí)用現(xiàn)在特性的線與所畫之處原有的線進(jìn)行異或(XOR)操作,實(shí)際上畫出的線是原有線與現(xiàn)在規(guī)定的線進(jìn)行異或后的結(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)
72、聲器,這里頻率為500Hz*/delay(700);/*發(fā)一個(gè)頻率為500Hz的音調(diào),維持700毫秒*/sound(200);/*以指定頻率打開PC揚(yáng)聲器,這里頻率為200Hz*/delay(300);</p><p> //呵呵 聲音怪怪的</p><p> sound(600);/*以指定頻率打開PC揚(yáng)聲器,這里頻率為500Hz*/delay(800);/*發(fā)一個(gè)頻率為50
73、0Hz的音調(diào),維持700毫秒*/sound(400);/*以指定頻率打開PC揚(yáng)聲器,這里頻率為200Hz*/delay(200);/*以上兩種不同頻率的音調(diào),可仿真鐘表轉(zhuǎn)動時(shí)的嘀噠聲*/nosound(); /*關(guān)閉PC揚(yáng)聲器*/s=t[0].ti_sec;m=t[0].ti_min;h=t[0].ti_hour;</p><p> x2=98*sin(s/30*PI)+451; /*秒針的x坐
74、標(biāo)值*/y2=200-98*cos(s/30*PI); /*秒針的y坐標(biāo)值*/line(451,200,x2,y2);/*繪制秒針*/</p><p> /*利用此循環(huán),延時(shí)一秒*/while(t[0].ti_sec==s&&t[0].ti_min==m&&t[0].ti_hour==h){ gettime(t);/*取得系統(tǒng)時(shí)間*/if(bioskey(1)!=0)
75、{k=bioskey(0);count=keyhandle(k,count);if(count==5) count=1;}}setcolor(15);digitclock(485,318,digitsec(s)+1);/*數(shù)字時(shí)鐘增加1秒*/</p><p> setcolor(12); /*淡紅色*/x2=98*sin(s/30*PI)+451;y2=200-98*cos(s/30*PI);
76、line(451,200,x2,y2);/*用原來的顏色在原來位置處再繪制秒針,以達(dá)到清除當(dāng)前秒針的目的*/</p><p> /*分鐘處理*/if(t[0].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);
77、/*繪制新的分針*/m=t[0].ti_min;digitclock(446,318,digitmin(m)); /*在數(shù)字時(shí)鐘中顯示新的分鐘值*/x1=80*sin(m/30*PI)+451;y1=200-80*cos(m/30*PI);line(451,200,x1,y1);}</p><p> /*小時(shí)處理*/if((t[0].ti_hour*60+t[0].ti_min)!=(h*60+m
78、)){ /*若小時(shí)數(shù)有變化*//*消除當(dāng)前時(shí)針*/setcolor(15); /*白色*/x=50*sin((h*60+m)/360*PI)+451;/*50:時(shí)鐘的長度(單位:像素),451:圓心的x坐標(biāo)值*/y=200-50*cos((h*60+m)/360*PI);line(451,200,x,y);/*繪制新的時(shí)針*/h=t[0].ti_hour;digitclock(408,318,digithour(h));
79、x=50*sin((h*60+m)/360*PI)+451;y=200-50*cos((h*60+m)/360*PI);line(451,200,x,y);}}}</p><p> int keyhandle(int key,int count) /*鍵盤控制 */{ switch(key){case UP: timeupchange(count-1); /*因?yàn)閏ount的初始值為2,所以此處
80、減1*/break;case DOWN:timedownchange(count-1); /*因?yàn)閏ount的初始值為2,所以此處減1*/break;case TAB:setcolor(15);clearcursor(count); /*清除原來的光標(biāo)*/drawcursor(count); /*顯示一個(gè)新的光標(biāo)*/count++;break;}return count;}</p><p>
81、 int timeupchange(int count) /*處理光標(biāo)上移的按鍵*/{if(count==1){t[0].ti_hour++;if(t[0].ti_hour==24) t[0].ti_hour=0;settime(t); /*設(shè)置新的系統(tǒng)時(shí)間*/}</p><p> if(count==2){t[0].ti_min++;if(t[0].ti_min==60) t[0].ti_m
82、in=0;settime(t); /*設(shè)置新的系統(tǒng)時(shí)間*/}</p><p> if(count==3){t[0].ti_sec++;if(t[0].ti_sec==60) t[0].ti_sec=0;settime(t); /*設(shè)置新的系統(tǒng)時(shí)間*/}}</p><p> int timedownchange(int count) /*處理光標(biāo)下移的按鍵*/{if(c
83、ount==1) {t[0].ti_hour--;if(t[0].ti_hour==0) t[0].ti_hour=23;settime(t);/*設(shè)置新的系統(tǒng)時(shí)間*/}if(count==2) {t[0].ti_min--;if(t[0].ti_min==0) t[0].ti_min=59;settime(t);/*設(shè)置新的系統(tǒng)時(shí)間*/}</p><p> if(count==3) {t[
84、0].ti_sec--;if(t[0].ti_sec==0) t[0].ti_sec=59;settime(t);/*設(shè)置新的系統(tǒng)時(shí)間*/}}</p><p> int digithour(double h)/*將double型的小時(shí)數(shù)轉(zhuǎn)換成int型*/{int i;for(i=0;i<=23;i++){if(h==i) return i;}}</p><p>
85、int digitmin(double m)/*將double型的分鐘數(shù)轉(zhuǎn)換成int型*/{int i;for(i=0;i<=59;i++){if(m==i) return i;}}</p><p> int digitsec(double s) /*將double型的秒鐘數(shù)轉(zhuǎn)換成int型*/{int i;for(i=0;i<=59;i++){if(s==i) return i;}}
86、</p><p> void digitclock(int x,int y,int clock)/*在指定位置顯示數(shù)字時(shí)鐘:時(shí)\分\秒*/{char buffer1[10];setfillstyle(0,2);bar(x,y,x+15,328);if(clock==60) clock=0;sprintf(buffer1,"%d",clock);outtextxy(x,y,buff
87、er1);}</p><p> void drawcursor(int count) /*根據(jù)count的值,畫一個(gè)光標(biāo)*/{switch(count){case 1:line(424,315,424,325);break;case 2:line(465,315,465,325);break;case 3:line(505,315,505,325);break;}}</p><
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c語言課程設(shè)計(jì)報(bào)告-模擬時(shí)鐘轉(zhuǎn)動程序
- vb時(shí)鐘課程設(shè)計(jì)報(bào)告---模擬時(shí)鐘
- 時(shí)鐘課程設(shè)計(jì)報(bào)告
- c語言課程設(shè)計(jì)設(shè)計(jì)報(bào)告--模擬電子時(shí)鐘
- 數(shù)字時(shí)鐘課程設(shè)計(jì)報(bào)告
- 數(shù)字時(shí)鐘課程設(shè)計(jì)報(bào)告
- 數(shù)字時(shí)鐘課程設(shè)計(jì)報(bào)告
- 數(shù)字時(shí)鐘課程設(shè)計(jì)報(bào)告
- java課程設(shè)計(jì)-時(shí)鐘圖形模擬
- 數(shù)字時(shí)鐘課程設(shè)計(jì)報(bào)告
- 電子數(shù)字時(shí)鐘課程設(shè)計(jì)報(bào)告
- 電子時(shí)鐘課程設(shè)計(jì)報(bào)告
- 圖形模擬時(shí)鐘c語言課程設(shè)計(jì)
- 多功能時(shí)鐘課程設(shè)計(jì)報(bào)告
- 機(jī)電轉(zhuǎn)動課程設(shè)計(jì)
- 數(shù)字電子時(shí)鐘 課程設(shè)計(jì)報(bào)告
- 指針式時(shí)鐘課程設(shè)計(jì)報(bào)告
- 數(shù)電數(shù)字時(shí)鐘課程設(shè)計(jì)報(bào)告
- c語言課程設(shè)計(jì)實(shí)踐報(bào)告--時(shí)鐘
- 倒計(jì)電子時(shí)鐘課程設(shè)計(jì)報(bào)告
評論
0/150
提交評論