已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
程序設(shè)計(jì)綜合課程設(shè)計(jì) 華科學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)程序設(shè)計(jì)綜合課程設(shè)計(jì)報(bào)告 (2010/2011學(xué)年 第一學(xué)期)學(xué)生姓名: 學(xué)生班級(jí): 學(xué)生學(xué)號(hào): 指導(dǎo)教師: 2011年1月7日14目 錄第一章 課程設(shè)計(jì)的目的和要求11.1 C語言課程設(shè)計(jì)的目的11.2 C語言課程設(shè)計(jì)實(shí)現(xiàn)的要求1第二章 課程設(shè)計(jì)的任務(wù)內(nèi)容2第三章 詳細(xì)設(shè)計(jì)說明33.1 程序系統(tǒng)的結(jié)構(gòu)33.2 模塊描述33.2.1 指針式時(shí)鐘33.2.2 數(shù)字式時(shí)鐘33.3 輸出項(xiàng)33.4 算法33.5 流程圖43.6 函數(shù)說明53.7 接口53.8 調(diào)試結(jié)果6第四章 軟件使用說明74.1 軟件使用說明及出現(xiàn)的問題74.2 運(yùn)行結(jié)果7第五章 課程設(shè)計(jì)心得與體會(huì)8附錄1:參考文獻(xiàn)10附錄2:程序清單11模擬時(shí)鐘轉(zhuǎn)動(dòng)程序第一章 課程設(shè)計(jì)的目的和要求1.1 C語言課程設(shè)計(jì)的目的加深對講授內(nèi)容的理解,尤其是一些語法規(guī)定。通過課程設(shè)計(jì),自然地、熟練地掌握。熟悉所用的計(jì)算機(jī)系統(tǒng)的操作方法,也就是熟悉語言程序開發(fā)的環(huán)境。學(xué)會(huì)上機(jī)調(diào)試程序。1.2 C語言課程設(shè)計(jì)實(shí)現(xiàn)的要求能模擬機(jī)械鐘表行走;要準(zhǔn)確地利用數(shù)字顯示日期和時(shí)間;在屏幕上顯示一個(gè)活動(dòng)時(shí)鐘;程序界面設(shè)計(jì)合理,色彩得體大方,顯示正確;各指針運(yùn)動(dòng)規(guī)律正確;數(shù)字式時(shí)鐘的時(shí)間顯示與指針式時(shí)鐘顯示一致;按任意鍵時(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)程序。提出總體方案的設(shè)計(jì)思想和原理,繪制程序流程圖和描述程序的功能,并說明程序的特點(diǎn)和難點(diǎn)。能模擬機(jī)械鐘表行走;要準(zhǔn)確地利用數(shù)字顯示日期和時(shí)間;在屏幕上顯示一個(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í)鐘所顯示的時(shí)間與計(jì)算機(jī)的系統(tǒng)時(shí)間一致。第三章 詳細(xì)設(shè)計(jì)說明3.1 程序系統(tǒng)的結(jié)構(gòu)模擬時(shí)鐘轉(zhuǎn)動(dòng)程序指針式時(shí)鐘數(shù)字式時(shí)鐘圖3.1 功能模塊圖3.2 模塊描述3.2.1 指針式時(shí)鐘指針式的時(shí)鐘表盤為橢圓形,并且圓周上有分布均勻的12個(gè)刻度,刻度顯示清楚,鐘面上有長度不相同的指針,即時(shí)針、分針、秒針,指針的運(yùn)動(dòng)具有規(guī)律性,為順時(shí)針。3.2.2 數(shù)字式時(shí)鐘數(shù)字鐘顯示時(shí)間的格式是年月日時(shí)分秒,小時(shí)為24進(jìn)制,分鐘和秒是60進(jìn)制,指針式的時(shí)鐘和數(shù)字式的時(shí)鐘顯示的時(shí)間同步,且兩個(gè)時(shí)鐘所顯示的時(shí)間與計(jì)算機(jī)的系統(tǒng)時(shí)間一致。窗口標(biāo)題為數(shù)字鐘。3.3 輸出項(xiàng)數(shù)字式時(shí)鐘輸出“%d年%d月%d日%d時(shí)%d分%d秒”。3.4 算法不論何種指針,每次轉(zhuǎn)動(dòng)均以/30弧度(一秒的角度)為基本單位,且都以表盤中心為轉(zhuǎn)動(dòng)圓心。計(jì)算指針端點(diǎn)(x, y)的公式如下:x =圓心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)該使用一個(gè)定時(shí)器消息來處理指針的運(yùn)動(dòng)。3.5 流程圖開始初始化全局對象調(diào)用SetTimer函數(shù)設(shè)定時(shí)間間隔定義畫筆和畫刷定義屏幕大小并確定橢圓中心的坐標(biāo)繪制橢圓形的鐘面獲取當(dāng)前時(shí)間調(diào)用Move To()和Line To()繪制時(shí)鐘鐘面的指針和刻度調(diào)用消息處理函數(shù)刷新窗口顯示創(chuàng)建數(shù)字鐘字體對數(shù)字鐘進(jìn)行輸出時(shí)間顯示退出調(diào)出菜單項(xiàng)調(diào)整時(shí)間結(jié)束圖3.2 程序流程圖3.6 函數(shù)說明 1.OnDraw()函數(shù)實(shí)現(xiàn)對系統(tǒng)時(shí)間的獲取和繪制橢圓表面和時(shí)鐘指針。2.設(shè)置計(jì)時(shí)器,創(chuàng)建窗口時(shí)啟動(dòng)一個(gè)計(jì)時(shí)器不斷發(fā)出WM_TIMER消息,調(diào)用SetTimer()函數(shù)。3.用TextOut()函數(shù)顯示數(shù)字鐘。畫模擬時(shí)鐘最重要的大約就是三角函數(shù)了。手機(jī)和電腦的默認(rèn)坐標(biāo)系都是原點(diǎn)在左上角。這樣,我們確定了圓心位置后,就確定了表的位置,表針,表盤的位置坐標(biāo)都在以圓心為中心的圓環(huán)上。其坐標(biāo)可以通過三解函數(shù)推導(dǎo)出來。設(shè)圓心為(X,Y),半徑為R,表上其他點(diǎn)的坐標(biāo)為(X1,Y1),該點(diǎn)與圓心X軸夾角為A,大致可以推出該點(diǎn)坐標(biāo)公式:位于圓心右上角點(diǎn)的公式為:X1 = X + RcosA;Y1 = Y - RsinA;位于圓心左上角點(diǎn)的公式為:X1 = X - RcosA;Y1 = Y - RsinA;位于圓心左下角的公式為:X1 = X - RcosA;Y1 = Y + RsinA;位于圓心右下角的公式為:X1 = X + RcosA;Y1 = Y + RsinA;如果+ -使用角度來校正,公式就可以統(tǒng)一為X1 = X + RcosA;Y1 = Y + RsinA;由于表是順時(shí)針轉(zhuǎn)動(dòng),我們的角度習(xí)慣上使用逆時(shí)針,所以我們使用自己校正后的角度值,從12點(diǎn)開始,按順時(shí)針重新排列三角函數(shù)值,加入對角度正負(fù)的校正。首先定義一些時(shí)鐘常用的宏:#define ANALOG_CENTER_X (227) /時(shí)鐘顯示的中心位置的橫坐標(biāo) 227#define ANALOG_CENTER_Y (178) /時(shí)鐘顯示的中心位置的縱坐標(biāo) 178#define ANALOG_R (150) /時(shí)鐘顯示圖的半徑 150#define ANALOG_CENTER_R (10) /時(shí)鐘顯示中心圖形的半徑 10#define ANALOG_HOUR_LEN (ANALOG_R-80) /時(shí)針長短(半徑)70#define ANALOG_MINUTE_LEN (ANALOG_R-50) /分針長短(半徑)100#define ANALOG_SECOND_LEN (ANALOG_R-30) /秒針長短(半徑)1203.7 接口 1.是主要的頭文件,它包含了其他Windows頭文件。2.數(shù)學(xué)函數(shù)庫,一些數(shù)學(xué)計(jì)算的公式的具體實(shí)現(xiàn)是放在math.h里。3.8 調(diào)試結(jié)果圖3.3 運(yùn)行結(jié)果第四章 軟件使用說明4.1 軟件使用說明及出現(xiàn)的問題在vc+6.0中新建一個(gè)win32 application 項(xiàng)目,然后新建一個(gè)C+文件 輸入代碼。運(yùn)行后顯示一個(gè)正在行走的機(jī)械時(shí)鐘。將數(shù)字日期顯示為窗口標(biāo)題。按任意鍵退出。4.2 運(yùn)行結(jié)果圖4.1 運(yùn)行結(jié)果第五章 課程設(shè)計(jì)心得與體會(huì)經(jīng)過一個(gè)學(xué)期對課程設(shè)計(jì)的學(xué)習(xí),我們學(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)。通過對模擬時(shí)鐘的設(shè)計(jì)進(jìn)一步的鞏固了用C+編寫程序,并且有利于更好的掌握程序設(shè)計(jì)語言!在模擬時(shí)鐘的編寫過程中也體會(huì)到了做事情一頂要細(xì)心、認(rèn)真。更加知道了要掌握好基礎(chǔ)知識(shí)。還有體會(huì)到了成功的感覺! 通過本項(xiàng)課程設(shè)計(jì)也培養(yǎng)了我獨(dú)立思考、 綜合運(yùn)用所學(xué)有關(guān)相應(yīng)知識(shí)的能力,掌握工程軟件設(shè)計(jì)的基本方法,強(qiáng)化上機(jī)動(dòng)手編程能力,闖過理論與實(shí)踐相結(jié)合的難關(guān)!由于程序設(shè)計(jì)語言是近年在國內(nèi)外得到迅速推廣應(yīng)用的一種語言。它功能豐富,表達(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ì)不好該程序的想法!在設(shè)計(jì)過程中的一次次設(shè)計(jì)錯(cuò)誤增加了我放棄的想法!不過經(jīng)過自己的獨(dú)立思考和同學(xué)的幫助終于完成了課程設(shè)計(jì)!完成該程序后想起自己以前的每一次對自己失去信心,就覺得并不是在知識(shí)掌握上打敗了,而是自己對自己缺乏信心!只要自己對自己不失去信心相信就可以完成那些以前認(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é)好的知識(shí),雖然一時(shí)可以掌握完以前沒有學(xué)好的知識(shí),不過也給自己敲響了警鐘,在學(xué)習(xí)中不可以伏于表面,要想學(xué)好每一門課程都要踏踏實(shí)實(shí),做什么都不是給別人看的!都是要更好的掌握該門知識(shí),提高自己的自身的修養(yǎng),提高自己的能力!為以后的工作打下良好的知識(shí)基礎(chǔ)和技能基礎(chǔ)!附錄1:參考文獻(xiàn)1、田淑清, C語言程序設(shè)計(jì),北京:高等教育出版社,2006年1月2、David J.Kruglinski,Scot Wingo,George Shepherd,Visual C+6.0技術(shù)內(nèi)幕(第五版),希望圖書室譯,北京:北京希望電子出版社,2001 年1月附錄2:程序清單#include#include#define TWOPI (2*3.14159)#define IDTIMER 1#define ANGLE TWOPI/360LRESULT CALLBACK WindowProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam );int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) TCHAR szClassName = TEXT(analogCloc); MSG msg; HWND hwnd; WNDCLASS wndclass; wndclass.cbClsExtra = 0; wndclass.cbWndExtra = 0; wndclass.hbrBackground = (HBRUSH):GetStockObject(WHITE_BRUSH); wndclass.hCursor = NULL; wndclass.hIcon = NULL; wndclass.hInstance = hInstance; wndclass.lpfnWndProc = WindowProc; wndclass.lpszClassName = szClassName; wndclass.lpszMenuName = NULL; wndclass.style = CS_HREDRAW | CS_VREDRAW ; :RegisterClass(&wndclass); hwnd = :CreateWindow(szClassName,TEXT(Clock),WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,CW_USEDEFAULT, CW_USEDEFAULT,CW_USEDEFAULT, NULL, NULL, hInstance, NULL); :ShowWindow(hwnd,nCmdShow); :UpdateWindow(hwnd); while(:GetMessage(&msg,NULL,0,0) :TranslateMessage(&msg); :DispatchMessage(&msg); return msg.wParam;void setISOTROPIC(HDC hdc,int cxClient,int cyClient)/設(shè)置映射模式,使之成為笛卡爾坐標(biāo)系的映射模式 :SetMapMode(hdc,MM_ISOTROPIC); :SetWindowExtEx(hdc,1000,1000,NULL); / 邏輯單位與設(shè)備單位比1/2 :SetViewportExtEx(hdc,cxClient/2,-cyClient/2,NULL); :SetViewportOrgEx(hdc,cxClient/2,cyClient/2,NULL); / 豎坐標(biāo)向上為正,下為負(fù)void drawClock(HDC hdc) int x, y, radius; :SelectObject(hdc,:CreateSolidBrush(RGB(1,148,138); for(int i=0;iwHour*30+pst-wMinute/12*6; angle1 = pst-wMinute*6; angle2 = pst-wSecond*6; for(int i=hChange?0:2;i3;i+) MoveToEx(hdc,0,0,NULL); LineTo(hdc,(int)(radiusi*cos(ANGLE*(90-anglei), (int)(radiusi*sin(ANGLE*(90-anglei); LRESULT CALLBACK WindowProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam ) TCHAR time40; PAINTSTRUCT ps; HDC hdc; static int cxClient, cyClient; SYSTEMTIME st; static SYSTEMTIME preSt; BOOL hChange; switch(message) case WM_CREATE: :SetTimer(hwnd,IDTIMER,1000,NULL); :GetLocalTime(&st); wsprintf(time,TEXT(%d年%d月%d日%d時(shí)%d分%d秒), st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond); SetWindowText(hwnd,time); preSt = st; return 0; case WM_SIZE: cxClient = LOWORD(lParam); cyClient = HIWORD(lParam); return 0; case WM_TIMER: :GetLocalTime(&st); /每次都要獲取當(dāng)前時(shí)間 hChange = st.wHour!=preSt.wHour|st.wMinute!=preSt.wMinute; hdc = GetDC(hwnd);
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年軟件開發(fā)項(xiàng)目實(shí)踐經(jīng)驗(yàn)與技巧測試題
- 2026年公共安全法執(zhí)行違規(guī)行為處罰案例模擬題
- 2026年建筑工程結(jié)構(gòu)設(shè)計(jì)師專業(yè)練習(xí)題
- 2026年市場營銷策略試題解析與實(shí)戰(zhàn)
- 2026年?duì)I養(yǎng)學(xué)與健康飲食營養(yǎng)知識(shí)測試題庫
- 2026年數(shù)據(jù)分析與可視化處理實(shí)戰(zhàn)試題集
- 2026年廚師烹飪技藝考核題含食材搭配與烹飪技巧
- 2026年航空業(yè)面試題庫飛機(jī)故障排除案例
- 2026年能源與環(huán)境保護(hù)政策理解題庫
- 2026年電子商交易規(guī)則與實(shí)務(wù)操作考試題目
- 名創(chuàng)優(yōu)品招聘在線測評題庫
- 春節(jié)交通出行安全培訓(xùn)課件
- 企業(yè)潤滑培訓(xùn)
- 2025至2030航空涂料市場行業(yè)市場深度研究與戰(zhàn)略咨詢分析報(bào)告
- 46566-2025溫室氣體管理體系管理手冊及全套程序文件
- GB/T 26951-2025焊縫無損檢測磁粉檢測
- 泌尿疾病課件
- 碳化硅性能參數(shù)及市場趨勢分析
- 2025初一英語閱讀理解100篇
- 全過程造價(jià)咨詢應(yīng)急方案
- 2024紹興文理學(xué)院元培學(xué)院教師招聘考試真題及答案
評論
0/150
提交評論