版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 課 程 設 計 任 務 書</p><p><b> 目 錄</b></p><p> 1 設計內(nèi)容及要求1</p><p> 1.1 設計內(nèi)容1</p><p> 1.2 設計目的及意義1</p><p><b> 2 概要設計1</
2、b></p><p><b> 2.1功能簡介1</b></p><p> 2.2功能說明:1</p><p> 2.3 總體程序框圖2</p><p><b> 3 設計過程3</b></p><p> 3.1各個模塊程序流程圖3</p>
3、;<p> 3.2運行界面及關鍵代碼4</p><p> 4設計結(jié)果與分析6</p><p><b> 4.1設計結(jié)果6</b></p><p><b> 4.2分析6</b></p><p><b> 5 總結(jié)7</b></p>
4、<p><b> 6 參考文獻7</b></p><p> 附程序清單及源程序8</p><p><b> 1 設計內(nèi)容及要求</b></p><p><b> 1.1 設計內(nèi)容</b></p><p> 通過編程最終使電腦屏幕顯示模擬時鐘,并正常運行
5、顯示表針時間,電腦上呈現(xiàn)一個圖種的模型表示電腦上的時間,并可以模擬時鐘走動。</p><p> 1.2 設計目的及意義</p><p> 設計目的及意義:熟悉Visual c++ 6.0軟件的應用,C語言相關函數(shù),語句的學習,查找資料代碼等,編程、調(diào)試、運行、效果顯示調(diào)整,完成上傳,熟悉編程語言,了解程序運行以及圖像顯示等C語言的應用,通過編程實現(xiàn)既定功能。培養(yǎng)自學能力,獨立思考能力,
6、將理論形成實際運用,同時可以掌握下列運算符的使用:</p><p> 1 .數(shù)據(jù)類型(整形、實型、字符型、指針、數(shù)組、結(jié)構等)。</p><p> 2 .運算類型(算術運算、邏輯運算、自增自減運算、賦值運算等)。</p><p> 3 .程序結(jié)構(順序結(jié)構、判斷選擇結(jié)構、循環(huán)結(jié)構)</p><p> 5 .復雜任務功能分解方法(自頂向
7、下逐步求精、模塊化設計、信息隱藏等)。</p><p> 6 .學會編制結(jié)構清晰、風格良好、數(shù)據(jù)結(jié)構適當?shù)腃語言程序。</p><p><b> 2 概要設計</b></p><p><b> 2.1功能簡介</b></p><p><b> 實現(xiàn)功能如下:</b>&l
8、t;/p><p> ?。?)在屏幕上最終顯示一個圖形時鐘(用程序繪制一個與時鐘樣式相似即可),能模擬機械鐘表行走。</p><p> (2)數(shù)字式顯示時間與指針式顯示時間一致,且各指針運動規(guī)律正確。</p><p> ?。?)能準確的利用數(shù)字顯示時間和日期。</p><p> ?。?)按ESC可以退出程序。</p><p&g
9、t;<b> 2.2功能說明:</b></p><p> 內(nèi)容:指針式時鐘模塊完成在屏幕上顯示一個活動時鐘,模擬機械鐘表行走,時針,分針,秒針不同顏色且順時針旋轉(zhuǎn),獲取系統(tǒng)時間;數(shù)字式時鐘模塊完成顯示時間格式年月日時分秒,小時為24小時制,分和秒為60進制與指針式的時鐘顯示時間同步并獲取系統(tǒng)時間。</p><p> 說明:指針順時針旋轉(zhuǎn);指針式的時鐘表盤為圓形;
10、圓周上分布均勻的12個刻度;有3個長度不同的指針,即時針,分針,秒針的運動具有規(guī)律性;數(shù)字鐘顯示時間格式年月日時分秒,小時為24進制,分和秒為60進制;指針式的時鐘與數(shù)字式的時鐘顯示時間同步;其主要的設計思想如下:</p><p> 1 . 確定秒針的走時,將圓分成60份每過一秒,秒重要轉(zhuǎn)過1/60個園,即一等份。</p><p> 2 . 確定分針真的走時,將圓分成60份每過一分,分
11、針要轉(zhuǎn)過1/60個圓,即一等份分針自己走過的再加秒針的,才是此四分鐘的位置。 </p><p> 3 . 時鐘走動與系統(tǒng)時間聯(lián)系:每過一秒畫出秒針,并且除去前一秒的秒針,分針和 秒針一樣,畫線函數(shù)與時間聯(lián)系使用變量。</p><p> 4 . 設置橫縱坐標及表針:X = a*cos(b*pi/180)+300;Y=a*sin(b*pi/180)+240;</p>&l
12、t;p> 2.3 總體程序框圖</p><p><b> ?。ㄏ到y(tǒng)模塊圖)</b></p><p> 首先,先畫出個鐘的大致輪廓。從輸出數(shù)字到畫出外輪廓,到標出短線到畫出時針、分針、秒針。這個輪廓就已經(jīng)完成了。然后,為了更加這個鐘的實用性。就通過獲取系統(tǒng)時間來結(jié)合實際意義,這是最簡單,最好的方法。從應用上,它顯示的是實際的時間,增強了可用性;從編程上,不用再
13、復雜地再編一個更時間一樣的函數(shù)來,減少程序的篇幅、復雜性和編程者的工作量。接著順帶利用時間的變量名來畫時針,分針,秒針。最后,為了讓時針,分針,秒針讓觀察者看起來是連續(xù)的變化,即形象地模擬真實的機械鐘表那樣運動。</p><p><b> 3 設計過程</b></p><p> 3.1各個模塊程序流程圖</p><p> 3.2運行界面及
14、關鍵代碼</p><p><b> 3.2.1運行結(jié)果</b></p><p> 在桌面顯示一個模擬的時鐘,時鐘的秒針、分針與時針隨著時間的推移而不斷移動就像我們經(jīng)??匆姷膱A形電子時鐘一樣。我們可以通過程序隨意改動時鐘的背景顏色以及指針的顏色和表盤大小等問題,同時還能在桌面顯示一些簡單的英文以及圖案等。</p><p> 3.2.2關鍵代
15、碼分析及說明</p><p> ?。?)本系統(tǒng)中主要的數(shù)據(jù)結(jié)構就是time結(jié)構體</p><p> struct time</p><p><b> {</b></p><p> unsigned char m;/*分鐘*/</p><p> unsigned char h/*小時*/ &
16、lt;/p><p> unsigned char s/*秒*/</p><p><b> }</b></p><p> time結(jié)構體定義在dos.h文件中,可用來保存系統(tǒng)的當前時間,其中各字段的值的含義如下。</p><p> ·unsigned char m:保存分鐘值。</p><
17、p> ·unsigned char h:保存小時值。</p><p> ·unsigned char s:保存秒數(shù)。</p><p><b> (2)全局變量</b></p><p> 下面對程序用到的全局變量及數(shù)組進行說明。</p><p> ·int h,m,s:此3個全
18、局變量分別用來保存小時、分鐘、秒數(shù)。</p><p> ·int x,x1,x2,y,y1,y2:保存數(shù)字時鐘中小時、分、秒在屏幕中顯示的坐標值。</p><p> ·struct time t[1]:定義一個time結(jié)構類型的數(shù)組,此數(shù)組只有t[0]一個元素。</p><p><b> (3)程序流程</b><
19、/p><p> 系統(tǒng)的執(zhí)行應從運行開始,顯示界面正常運行,直到用戶選擇退出系統(tǒng)為止。</p><p> (4)流程圖功能描述</p><p><b> ①畫圓模板:</b></p><p> #inlude “graphics.h”</p><p> #inlude ”math.h ”<
20、;/p><p> Void init()</p><p> Circle(300,240,200); </p><p><b> ?、诋嫊r間刻線模塊:</b></p><p> For(i=0;i<=60;i++)</p><p><b> {</b></p&
21、gt;<p> If(i%5==0)</p><p><b> L=15;else</b></p><p><b> L=5;</b></p><p> X1=200*sin()+300;</p><p> Y1=200*cos()+240;</p><p
22、><b> }</b></p><p> ?、蹠r間模塊:Gettime(d)</p><p><b> 4設計結(jié)果與分析</b></p><p><b> 4.1設計結(jié)果</b></p><p> 運行程序后在屏幕上顯示出一時鐘,鐘上的時間與電腦上的時間完全一樣,
23、并且在秒針運行的同時伴隨聲音</p><p> 如同下圖一樣的圖案:</p><p><b> 4.2分析</b></p><p> 在桌面會顯示一個模擬的時鐘,時鐘的秒針、分針與時針隨著時間的推移而不斷移動就像我們經(jīng)??匆姷膱A形電子時鐘一樣。我們可以通過程序隨意改動時鐘的背景顏色以及指針的顏色和表盤大小等問題,同時還能在桌面顯示一些簡單
24、的英文以及圖案等。因為是程序控制時鐘的,所以起始時間是通過程序控制的,要想改動還是需要通過改變程序獲得,并不是隨系統(tǒng)時間而確定起始時間的。</p><p><b> 5 總結(jié)</b></p><p> 通過本次的課程設計,我深刻的體會到了C語言的強大。雖然本次的課程設計對我來說有一定的難度,但是在朋友的幫助下我還是很好地完成了(自我感覺)。從而也認識到了程序的內(nèi)涵
25、,使我對編程產(chǎn)生了很大的興趣。其實編程很好玩的,在編程中不但可以完成一些現(xiàn)實中從在的東西,還可以制作出很多意想不到東西。還有對于此次課程設計讓我深刻的認識到自己學得的遠遠還太少,需要我們自發(fā)的去學習知識才可以成長的更快!其次,對于此次設計我得坦誠一件事,那就是我一開始選的TC程序,運行的時候總是要我輸入?yún)?shù),由于自己的知識局限,總是敲不出結(jié)果,所以我又去百度文庫搜了一個vc程序,雖然最終使運行出來了,可是這次事件讓我認識自身知識的不足,
26、所以,這次過后會更加認真的學習一些書面沒有的知識,充實自己。</p><p><b> 6 參考文獻</b></p><p> 《C語言程序設計》(第二版)[M].北京:清華大學出版社 譚浩強 1999</p><p> 《數(shù)據(jù)結(jié)構》(C語言版)[M].北京:清華大學出版社 嚴魏敏,吳偉民 1997</p><p&
27、gt; 《C語言程序設計》[M]. 黃明等.大連理工大學出版社,2005</p><p> 《C語言課程設計案例精編》. 郭翠英 . 中國水利水電出版 . 2004年3月</p><p> 《C語言程序設計教程》 曾春平,朱小谷,晏海華.北京希望電子出版社 . 2005年3月</p><p> 《C語言課程設計案例精編》清華大學出版社﹒ 姜靈芝、余健﹒ 2
28、008.1</p><p> 《C語言程序設計》西安電子科技大學出版社﹒田祥宏主編﹒2007.12</p><p><b> 附程序清單及源程序</b></p><p> ?。?)TC2.0上的源程序</p><p> #include"graphics.h"#include"mat
29、h.h"#include"dos.h"#define pi 3.1415926#define X(a,b,c) x=a*cos(b*c*pi/180-pi/2)+300#define Y(a,b,c) y=a*sin(b*c*pi/180-pi/2)+240#define d(a,b,c) X(a,b,c);Y(a,b,c);line(300,240,x,y)void init() /*劃時鐘邊
30、框函數(shù)*/{int i,l,x1,x2,y1,y2;setbkcolor(1);circle(300,240,200);circle(300,240,205);circle(300,240,5);for(i=0;i<60;i++) /*劃鐘點上的短線*/{if(i%5==0)l=15;elsel=5;x1=200*sin(i*6*pi/180)+300;y1=200*cos(i*6*pi/180)+24
31、0;x2=(200-l)*sin(i*6*pi/180)+300;y2=(200-l)</p><p> ?。?)visual c++ 6.0上運行的源程序</p><p> #define _CRT_SECURE_NO_WARNINGS</p><p> #include <windows.h></p><p> #i
32、nclude <math.h></p><p> #include <time.h></p><p> #pragma comment(lib, "user32.lib")</p><p> #pragma comment(lib, "gdi32.lib")</p><p>
33、; #pragma comment(linker, "/SUBSYSTEM:Windows")</p><p> void GetPos(double degree, int len, int* x, int* y)</p><p><b> {</b></p><p> *x = len * sin(degree)
34、;</p><p> *y = len * cos(degree);</p><p><b> }</b></p><p> void DrawClock(HWND hw, HDC h, int hour, int minute, int second)</p><p><b> {</b>
35、</p><p> HDC bufdc = CreateCompatibleDC(h);</p><p> HBITMAP buf = CreateCompatibleBitmap(bufdc, 200, 200);</p><p><b> RECT cr;</b></p><p> HBRUSH bBg =
36、CreateSolidBrush(RGB(255, 255, 255));</p><p> GetClientRect(hw, &cr);</p><p> SelectObject(bufdc, bBg);</p><p> SelectObject(bufdc, buf);</p><p> FillRect(bufdc
37、, &cr, bBg);</p><p><b> {</b></p><p> int sx, sy, ex, ey;</p><p><b> int i;</b></p><p> for(i = 0; i < 12; ++i) {</p><p>
38、; GetPos(2*3.14159/12*i, 85, &sx, &sy);</p><p> GetPos(2*3.14159/12*i, 95, &ex, &ey);</p><p> MoveToEx(bufdc, 100+sx, 100-sy, 0);</p><p> LineTo(bufdc, 100+ex, 1
39、00-ey);</p><p><b> }</b></p><p><b> }</b></p><p><b> {</b></p><p> int hx, hy, mx, my, sx, sy;</p><p> GetPos(2*3.
40、14159 / 24 * (hour + (double)minute / 60 + (double)second / 3600), 50, &hx, &hy);</p><p> GetPos(2*3.14159 / 60 * (minute + (double)second / 60), 65, &mx, &my);</p><p> GetPos(
41、2*3.14159 / 60 * second, 80, &sx, &sy);</p><p> MoveToEx(bufdc, 100, 100, NULL);</p><p> LineTo(bufdc, 100+hx, 100-hy);</p><p> MoveToEx(bufdc, 100, 100, NULL);</p>
42、<p> LineTo(bufdc, 100+mx, 100-my);</p><p> MoveToEx(bufdc, 100, 100, NULL);</p><p> LineTo(bufdc, 100+sx, 100-sy);</p><p><b> }</b></p><p> Bit
43、Blt(h, 0, 0, 200, 200, bufdc, 0, 0, SRCCOPY);</p><p> DeleteDC(bufdc);</p><p> DeleteObject(bBg);</p><p> DeleteObject(buf);</p><p><b> }</b></p>
44、<p> LRESULT CALLBACK WndProc(HWND h, UINT m, WPARAM w, LPARAM l)</p><p><b> {</b></p><p> switch(m) {</p><p> case WM_CREATE:</p><p> SetTimer(h
45、, 1, 1000, 0);</p><p><b> return 0;</b></p><p> case WM_ERASEBKGND:</p><p><b> return 1;</b></p><p> case WM_TIMER:</p><p> In
46、validateRect(h, 0, FALSE);</p><p><b> return 0;</b></p><p> case WM_PAINT: {</p><p> PAINTSTRUCT ps;</p><p> HDC dc = BeginPaint(h, &ps);</p>
47、<p><b> {</b></p><p><b> time_t t;</b></p><p> struct tm* pst;</p><p><b> time(&t);</b></p><p> pst = localtime(&
48、t);</p><p> DrawClock(h, dc, pst->tm_hour, pst->tm_min, pst->tm_sec);</p><p><b> }</b></p><p> EndPaint(h, &ps);</p><p><b> return 0;
49、</b></p><p><b> }</b></p><p> case WM_DESTROY:</p><p> KillTimer(h, 1);</p><p> PostQuitMessage(0);</p><p><b> return 0;</b
50、></p><p><b> default:</b></p><p> return DefWindowProc(h, m, w, l);</p><p><b> }</b></p><p><b> }</b></p><p> i
51、nt APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR szCmd, INT nShow)</p><p><b> {</b></p><p> WNDCLASS wc;</p><p> ZeroMemory(&wc, sizeof(wc));</p>
52、<p> wc.style = CS_HREDRAW | CS_VREDRAW;</p><p> wc.lpfnWndProc = WndProc;</p><p> wc.hInstance = hInst;</p><p> wc.hbrBackground = (HBRUSH) COLOR_WINDOW;</p><
53、p> wc.lpszClassName = TEXT("MYCLOCK");</p><p> if (RegisterClass(&wc) != 0) {</p><p><b> MSG m;</b></p><p> HWND hw = CreateWindow(TEXT("MYCLOC
54、K"), TEXT("Clock"), WS_OVERLAPPEDWINDOW,</p><p> CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInst, 0);</p><p> if (hw != NULL) {</p><p>
55、;<b> RECT r;</b></p><p> GetWindowRect(hw, &r);</p><p> r.right = r.left + 200;</p><p> r.bottom = r.top + 200;</p><p> AdjustWindowRect(&r, WS
56、_OVERLAPPEDWINDOW, FALSE);</p><p> MoveWindow(hw, r.left, r.top, r.right - r.left, r.bottom - r.top, FALSE);</p><p> ShowWindow(hw, SW_SHOWNORMAL);</p><p> UpdateWindow(hw);</
57、p><p> while( GetMessage(&m, 0, 0, 0) > 0) {</p><p> TranslateMessage(&m);</p><p> DispatchMessage(&m);</p><p><b> }</b></p><p>
58、;<b> return 0;</b></p><p><b> }</b></p><p><b> return 1;</b></p><p><b> } else</b></p><p><b> return 1;</b
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 圖形模擬時鐘c語言課程設計
- java時鐘課程設計
- vb時鐘課程設計報告---模擬時鐘
- c語言圖形時鐘課程設計實驗報告
- 模擬時鐘轉(zhuǎn)動程序課程設計報告
- java課程設計--atm機模擬系統(tǒng)
- plc時鐘課程設計---時鐘系統(tǒng)設計
- 數(shù)字時鐘課程設計
- 數(shù)字時鐘課程設計
- 時鐘課程設計報告
- java課程設計
- java課程設計----課程設計報告
- java課程設計模擬科學計算器
- java課程設計-模擬科學計算器
- java模擬科學計算器課程設計
- vc++課程設計--基于mfc的模擬時鐘
- java模擬科學計算器課程設計
- java課程設計--java面向?qū)ο蟪绦蛟O計課程設計
- 課程設計--數(shù)字時鐘
- 數(shù)字時鐘課程設計
評論
0/150
提交評論