資源描述:
《實(shí)現(xiàn)時(shí)鐘的設(shè)計(jì)與實(shí)現(xiàn)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、程序設(shè)計(jì)綜合實(shí)訓(xùn)報(bào)告時(shí)鐘的設(shè)計(jì)與實(shí)現(xiàn)學(xué)院:計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院專業(yè):計(jì)算機(jī)類學(xué)號(hào):16408070728姓名:魏新力日期:2018年1月5日題目:利用VC++實(shí)現(xiàn)時(shí)鐘的設(shè)計(jì)與實(shí)現(xiàn)1.功能的描述:運(yùn)行界面是一指針式時(shí)鐘,包插時(shí)分秒三個(gè)指針,有22個(gè)鐘點(diǎn)的顯示,并通過指針的轉(zhuǎn)動(dòng)來實(shí)時(shí)更新時(shí)間。同時(shí)可以顯示相應(yīng)時(shí)間的數(shù)字鐘形式。要求:通過菜單可以實(shí)現(xiàn)鬧鈴功能、表盤背景、指針顏色設(shè)置、倒計(jì)時(shí)等功能。同時(shí)為程序窗口增加了一張精美圖片作為背景。1.設(shè)計(jì)要點(diǎn)(或基本思路、算法分析與說明、流程圖):基本思路:①確定原點(diǎn)位置②設(shè)置指針長度③寫出
2、時(shí)、分、秒針轉(zhuǎn)過角度的函數(shù)④寫出菜單的選項(xiàng)包插指針顏色、背景顏色、鬧鐘功能⑤寫出連接菜單選項(xiàng)與指針顏色、背景顏色、鬧鐘功能連接的消息命令處理函數(shù)⑥獲取系統(tǒng)時(shí)間⑦寫出倒計(jì)時(shí)的函數(shù)⑧寫出鬧鐘函數(shù)⑨插入位圖算法分析與說明:①確定原點(diǎn)位置:以客戶區(qū)為原點(diǎn)(0,0),然后定義原點(diǎn)位置。②設(shè)置指針長度:因?yàn)橐玫絪in和cos函數(shù),所以O(shè)n_Draw函數(shù)的頭文件必須包含#include,,math.hw,然后調(diào)用函數(shù)語句inth_x=hour_ar*cos(hour)+n;inth_y=hour_ar*sin(hour)+200;(n為任
3、意合適整數(shù)),來確定指針長度。③寫出時(shí)、分、秒針轉(zhuǎn)過角度的函數(shù);因?yàn)樵O(shè)計(jì)的是一個(gè)時(shí)鐘,所以每當(dāng)指針轉(zhuǎn)過一次過后,相當(dāng)于轉(zhuǎn)過一定的角度,則調(diào)用floathour=(float)(j-3)/12*2*3.1415;floatmin=(float)(i-14)/60*2*3.1415;floatsec=(float)(n-14)/60*2*3.1415;計(jì)算出轉(zhuǎn)過后的指針的位置。④菜單選項(xiàng)以及消息處理函數(shù):在ResrouseView中選擇menu然后編輯菜單選項(xiàng),編輯好菜單之后利用Ctrl+w打開類向?qū)г趘iew類中添加消息處理函數(shù)
4、。⑤獲取系統(tǒng)時(shí)間:調(diào)用CTimetm;tm=CTime::GetCurrentTime();得到系統(tǒng)時(shí)間。①寫出倒計(jì)時(shí)的函數(shù):在寫這里這時(shí)候,由于我自己能力有限,并沒有用對(duì)話框,不能自定義的寫出倒計(jì)時(shí)的任意時(shí)間,所以只能在0n_Draw中寫出倒計(jì)時(shí)函數(shù),顯示在屏幕中,我下去會(huì)多看書多多學(xué)習(xí),盡快掌握這些東西。②寫出鬧鐘函數(shù):這個(gè)和前而那個(gè)倒計(jì)時(shí)夠倒計(jì)時(shí)功能差不多,本來打算用對(duì)話框和單文檔結(jié)合起來寫的,結(jié)果寫出來的老是有問題,也調(diào)試不對(duì),就放棄了然后就繼續(xù)用和上面相同的方法寫了一個(gè)判斷和系統(tǒng)時(shí)間相同的辦法的“鬧鐘”,在on_Dr
5、aw函數(shù)里而寫出來。③插入圖片:在已經(jīng)可以運(yùn)行的指針上插入一個(gè)帶數(shù)字的表盤就可以非常形象的表達(dá)出來一個(gè)時(shí)鐘了。設(shè)計(jì)技術(shù)流程圖:[確定原]點(diǎn)位置設(shè)置指針長度寫出時(shí)、分、秒針轉(zhuǎn)過角度的函數(shù)寫岀菜單的選項(xiàng)包括指令誨色、背景顏色、鬧鐘功能寫出連接菜單選項(xiàng)與指針顏色、背景顏色、鬧鐘功能連接的消息命令處理函數(shù)獲収系統(tǒng)時(shí)間寫出倒計(jì)時(shí)的函數(shù)寫出鬧鐘函數(shù)插入位圖時(shí)鐘3、關(guān)鍵或主要程序代碼:①確定原點(diǎn)位置:以客戶區(qū)做頂點(diǎn)為原點(diǎn)(0,0),則確定頂點(diǎn)為:intorg_x=205;intorg_y=205;②設(shè)置指針反度:〃時(shí)針inthour_ar=
6、90;〃長度inth_x=hour_ar*cos(hour)+200;inth_y=hour_ar*sin(hour)+200;〃分針intmin_ar=140;//長度intm_x=min_ar*cos(min)+200;intm_y=min_ar*sin(min)+200;〃秒針intsec_ar=170;〃長度ints_x=sec_ar*cos(sec)+200;ints_y=sec_ar*sin(sec)+200;③寫出時(shí)、分、秒針轉(zhuǎn)過角度的函數(shù):floathour=(float)(j-3)/12*2*3.1415;f
7、loatmin=(float)(i-14)/60*2*3.1415;floatsec=(float)(n-14)/60*2*3.1415;④寫出菜單的選項(xiàng)包括指針顏色、背景顏色、鬧鐘功能if(Y==l)//紅色指針{CPenpl(PS_SOLIDARGB(255,0,0));//創(chuàng)建新畫筆CPen*penOld=(CPen*)pDC->SelectObject(pl);//選擇創(chuàng)建堆畫筆pDC->MoveTo(org_x,org_y);〃終點(diǎn)pDC->UneTo(m_x,m_y);//^點(diǎn)CPenp2(PS_S0LID,3,R
8、GB(255O0));〃創(chuàng)建新畫筆pDC->SelectObject(p2);//選擇創(chuàng)建堆畫筆pDC->MoveTo(org_x,org_y);〃終點(diǎn)pDC->LineTo(h_x,h_y);//起點(diǎn)CPenp3(PS_SOLID2RGB(255QO));//創(chuàng)建新畫筆pD