版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、C語言程序設計課程設計報告題目: 模擬時鐘轉動程序 班級: 組別: 組員: 指導教師: 目錄第一章 課程設計的題目.21.1 C語言課程設計的題目.2第二章 課程設計的要求.22.1 C語言課程設計的要求.2第三章 課程設計的目的.23.1 C語言課程設計的目的.2第四章 課程設計的內容.34.1 C語言課程設計的程序清單和注釋.3第五章 課程設計的運行結果.75.1 C語言課程設計的運行結果.7第六章 課程設計的結果分析.86.1 C語言課程設計的結果分析.8第七章 課程設計的心得體會.97.1 C語言課程設計的心得體會.9模擬時鐘轉動程序第一章 課程設計的題目 C語言課程設計的題目 本次為
2、期兩周的課程設計的題目為設計一個模擬時鐘轉動的程序。第二章 課程設計的要求2.1 C語言課程設計的要求能模擬機械鐘表行走;要準確地利用數(shù)字顯示日期和時間;在屏幕上顯示一個活動時鐘;程序界面設計合理,色彩得體大方,顯示正確;各指針運動規(guī)律正確;數(shù)字式時鐘的時間顯示與指針式時鐘顯示一致;按任意鍵時程序退出。第三章 課程設計的目的3.1 C語言課程設計的目的加深對講授內容的理解,尤其是一些語法規(guī)定。通過課程設計,自然地、熟練地掌握。熟悉所用的計算機系統(tǒng)的操作方法,也就是熟悉語言程序開發(fā)的環(huán)境。學會上機調試程序。第四章 課程設計的內容4.1 C語言課程設計的程序清單和注釋模擬時鐘轉動程序清單+注釋#i
3、nclude<windows.h> /包含窗口頭文件#include<math.h> /頭文件,包含了一些數(shù)學計算的函數(shù)#define TWOPI (2*3.14159)#define IDTIMER 1 /計時器ID#define ANGLE TWOPI/360 /2PILRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam,LPARAM lParam ); /回調函數(shù)Int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance, L
4、PSTR lpCmdLine,int nCmdShow ) / 應用啟動函數(shù)mian TCHAR szClassName = TEXT("analogCloc"); MSG msg; /定義消息 HWND hwnd; /窗口句柄 WNDCLASS wndclass; /系統(tǒng)支持結構,定義并初始化窗口結構 wndclass.cbClsExtra = 0; /窗口類無擴展 wndclass.cbWndExtra = 0; /窗口勢力無擴展 wndclass.hbrBackground = (HBRUSH):GetStockObject(WHITE_BRUSH);/窗口背景為白色
5、 wndclass.hCursor = NULL; wndclass.hIcon = NULL; wndclass.hInstance = hInstance; /當前實例句柄 wndclass.lpfnWndProc = WindowProc; /關聯(lián)到消息回調函數(shù) wndclass.lpszClassName = szClassName; wndclass.lpszMenuName = NULL; /窗口中無菜單 wndclass.style = CS_HREDRAW | CS_VREDRAW ; /窗口重繪風格 RegisterClass(&wndclass); hwnd Cre
6、ateWindow(szClassName,TEXT("Clock"),WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,CW_USEDEFAULT, CW_USEDEFAULT,CW_USEDEFAULT, NULL, NULL, hInstance, NULL); /創(chuàng)建窗口 ShowWindow(hwnd,nCmdShow); /顯示窗口 UpdateWindow(hwnd); /更新窗口,強制顯示 while(GetMessage(&msg,NULL,0,0) /函數(shù)GetMessage 是 從調用線程的消息隊列里取得一個消息并將其放于指
7、定的結構 TranslateMessage(&msg); /消息處理 DispatchMessage(&msg); /消息派遣 return maram; /windows應用程序的消息循環(huán)形式void setISOTROPIC(HDC hdc,int cxClient,int cyClient)/設置映射模式,使之成為笛卡爾坐標系的映射模式 SetMapMode(hdc,MM_ISOTROPIC); SetWindowExtEx(hdc,1000,1000,NULL); / 邏輯單位與設備單位比1/2 SetViewportExtEx(hdc,cxClient/2,-cyCl
8、ient/2,NULL); SetViewportOrgEx(hdc,cxClient/2,cyClient/2,NULL); /豎坐標向上為正,下為負void drawClock(HDC hdc) / 畫時鐘圓盤 int x, y, radius; /以邏輯單位表示的窗口原點坐標 SelectObject(hdc,CreateSolidBrush(RGB(1,148,138);/設置整個窗口線條顏色 for(int i=0;i<360;i+=6) x = (int)(cos(TWOPI/360*i)*900); y = (int)(sin(TWOPI/360*i)*900); radi
9、us = !(i%5)?40:10; Ellipse(hdc,x-radius,y-radius,x+radius,y+radius);/ 把弧度制轉換成坐標形式,Ellipse函數(shù)用來畫圓 void drawHands(HDC hdc,SYSTEMTIME *pst,BOOL hChange)/ draw hands函數(shù)負責繪制時鐘的時針、分針和秒針的輪廓 int radius3 = 500,700,850; int angle3; angle0 = pst->wHour*30+pst->wMinute/12*6; angle1 = pst->wMinute*6; angl
10、e2 = pst->wSecond*6; for(int i=hChange?0:2;i<3;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 ) /消息處理函數(shù) TCHAR time40; PAINTSTRU
11、CT ps; HDC hdc; static int cxClient, cyClient; SYSTEMTIME st; /定義結構體變量 static SYSTEMTIME preSt; BOOL hChange; switch(message) /switch 語句 一個case代表一種情況 case WM_CREATE: / 窗口創(chuàng)建事件 SetTimer(hwnd,IDTIMER,1000,NULL); /創(chuàng)建一個1000ms定時器 GetLocalTime(&st); /得到當前系統(tǒng)時間 wsprintf(time,TEXT("%d年%d月%d日%d時%d分%d秒
12、"), /記錄系統(tǒng)時間,包括年、月、日、時、分、秒 st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond); SetWindowText(hwnd,time); / 設置當前時間為窗口title preSt = st; return 0; case WM_SIZE: cxClient = LOWORD(lParam); cyClient = HIWORD(lParam); return 0; case WM_TIMER: /定時器到時,即是每隔一秒要重畫下界面 GetLocalTime(&st); /每次
13、都要獲取當前時間 hChange = st.wHour!=preSt.wHour|st.wMinute!=preSt.wMinute; hdc = GetDC(hwnd); setISOTROPIC(hdc,cxClient,cyClient); SelectObject(hdc,GetStockObject(WHITE_PEN); drawHands(hdc,&preSt,hChange); SelectObject(hdc,GetStockObject(BLACK_PEN); drawHands(hdc,&st,TRUE); ReleaseDC(hwnd,hdc);wspr
14、intf(time,TEXT("%d年%d月%d日%d時%d分%d秒"),/記錄系統(tǒng)時間,包括年、月、日、時、分、秒st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond); SetWindowText(hwnd,time); /setwindowText函數(shù):系統(tǒng)里的函數(shù) preSt = st; / 更新完畢后記錄前一次的狀態(tài) return 0; case WM_KEYDOWN: case WM_CHAR: DestroyWindow(hwnd); / 關閉窗口return 0; case WM_PAI
15、NT: /窗口繪制消息 hdc = BeginPaint(hwnd,&ps); /開始繪制 setISOTROPIC(hdc,cxClient,cyClient); drawClock(hdc); drawHands(hdc,&preSt,TRUE); EndPaint(hwnd,&ps); /結束繪制 return 0; case WM_DESTROY: /程序退出消息 PostQuitMessage(0); return 0; return DefWindowProc(hwnd,message,wParam,lParam);/其他消息有系統(tǒng)默認處理第五章 課程設計的運行結果5.1 C語言課程設計的運行結果第六章 課程設計的結果分析6.1 C語言課程設計的結果分析運行結果分析問題 一:程序清單中某個符號添加錯誤,導致編譯時出現(xiàn)錯誤,執(zhí)行不出結果。分析:經小組討論分析與搜索,源程序中符號“:”無意義,刪除程序清單中所有“:”符號,在編譯時,無錯誤。問題 二:若直接建立一個C +文件,執(zhí)行時則找不到“”源文件,結果不能運行出來。分析:在運行VC +6.0時,需要建立一個Win 32 application工程,然后再新建一個C +文件,輸
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 專利代理居間合同樣本
- 物業(yè)管理委托合同
- 家庭室內外裝修合同書
- 多模式跨境電子商務解決方案策劃與設計全案指南
- 研發(fā)項目管理作業(yè)指導書
- 生物技術與實驗室技能作業(yè)指導書
- 電線電纜購銷合同
- 2025年天津年貨運從業(yè)資格證考試從業(yè)從業(yè)資格資格題庫及答案
- 2025年烏魯木齊貨運從業(yè)資格考試題目大全
- 小學青島版一年級數(shù)學上冊口算練習題總匯
- 《配電網(wǎng)設施可靠性評價指標導則》
- 2024年國家電網(wǎng)招聘之通信類題庫附參考答案(考試直接用)
- ## 外事領域意識形態(tài)工作預案
- CJJ 169-2012城鎮(zhèn)道路路面設計規(guī)范
- 第八單元金屬和金屬材料單元復習題-2023-2024學年九年級化學人教版下冊
- 鋼鐵是怎樣煉成的保爾成長史
- 精神科護理技能5.3出走行為的防范與護理
- 煤礦機電運輸培訓課件
- 采購管理學教學課件
- 《供應商質量會議》課件
- 江蘇省科技企業(yè)孵化器孵化能力評價研究的中期報告
評論
0/150
提交評論