




已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
中南大學本科生課程設計(實踐)任務書、設計報告(C+程序設計)題 目時鐘控件學生姓名指導教師學 院交通運輸工程學院專業(yè)班級學生學號計算機基礎教學實驗中心2012年9月7日C+程序設計基礎課程設計任務書對象:粉冶、信息、能源、交通工程實驗 2101學生 時間:2012.6 2周(1819周) 指導教師:王小玲1. 課程設計的任務、性質與目的本課程設計是在學完C+程序設計基礎課程后,進行的一項綜合程序設計。在設計當中學生綜合“面向對象程序設計與結構化程序設計”的思想方法和知識點,編制一個小型的應用程序系統(tǒng)。通過此設計進一步提高學生的動手能力。并能使學生清楚的知道開發(fā)一個管理應用程序的思想、方法和流程。2. 課程設計的配套教材及參考書l C+程序設計,鐵道出版社,主編 楊長興 劉衛(wèi)國 。l C+程序設計實踐教程,鐵道出版社,主編 劉衛(wèi)國 楊長興。l Visual C+ 課程設計案例精編,中國水力電力出版社,嚴華峰等編著。3. 課程設計的內容及要求(1) 自己任選一個題目進行開發(fā)(如畫筆、游戲程序、練習打字軟件等),要求利用MFC 工具操作實現(xiàn)。(2) 也可選一個應用程序管理系統(tǒng)課題(如:通訊錄管理系統(tǒng);產品入庫查詢系統(tǒng);學生成績管理;圖書管理等);設計所需數(shù)據(jù)庫及數(shù)據(jù)庫中的數(shù)據(jù)表,建立表之間的關系。設計所選課題的系統(tǒng)主封面(系統(tǒng)開發(fā)題目、作者、指導教師、日期)。設計進入系統(tǒng)的各級口令(如系統(tǒng)管理員口令,用戶級口令)。設計系統(tǒng)的主菜單。要求具備下列基本功能:l 數(shù)據(jù)的瀏覽和查詢l 數(shù)據(jù)的統(tǒng)計l 數(shù)據(jù)的各種報表l 打印輸出l 幫助系統(tǒng)多種形式的窗體設計(至少有查詢窗體、輸入窗體)注意:開發(fā)的應用程序工作量應保證在2周時間完成,工作量不能太少或太多??梢?人合作,但必須將各自的分工明確。4. 寫出設計論文論文基本內容及撰寫順序要求:l 內容摘要l 系統(tǒng)開發(fā)設計思想l 系統(tǒng)功能及系統(tǒng)設計介紹l 系統(tǒng)開發(fā)的體會論文基本格式要求:l 封面,見附件1l 正文,見附件2 考核方式與評分辦法l 出勤考核成績占總成績20%。l 設計成果評價總總成績的60%。l 實踐論文評價占總成績的20%。2012年6月6日時鐘控件摘要:使用vc+6.0編寫一個模擬時鐘程序,此程序在屏幕左方有一個指針式鐘面,右方有兩個矩形框,上面以數(shù)字方式顯示日期和時間,該時間應與指針顯示的時間一致,下方的矩形框作為秒表。用菜單選項或按鈕設置時間和秒表。時間不必與機器系統(tǒng)時間相同,可任意設置。關鍵詞:c+程序設計、mfc.exe、面向對象、時鐘、秒表一、 時鐘程序開發(fā)設計思想該程序設計主要涉及到的知識點有:時鐘指針運動算法、屏幕重繪方法、定時器消息、鼠標消息、菜單命令、對話框、畫筆/畫刷、顯示文字、修改程序圖標等。其中最關鍵的是指針運動算法和屏幕重繪方法的應用。其中,在設計表盤指針的時候,由于不論何種指針,每次轉動均以/30弧度(一秒的角度)為基本單位,且都以表盤中心為轉動圓心。計算指針端點(x, y)的公式如下:x =圓心x坐標 + 指針長度 * cos (指針方向角)y =圓心y坐標 + 指針長度 * sin (指針方向角)而指針長度是指自圓心至指針一個端點的長度(是整個指針的一部分),由于指針可能跨越圓心,因此一個指針需要計算兩個端點。另一方面,三個指針的運動是相關聯(lián)的,秒針轉一圈引起分針運動一格,分針轉一圈引起時針運動一格,因此需要使用一個定時器消息來處理指針的運動。若用三個定時器消息分別處理時針、分針和秒針的運動,就會使問題復雜化且不易實現(xiàn)三個指針聯(lián)動的正確規(guī)律。采用一個定時器消息可以很容易實現(xiàn)指針聯(lián)動算法。代碼的編寫當中可以使用我們所學過的if語句來實現(xiàn)指針的聯(lián)動。由于屏幕的重繪速度很快(50 ms一次),如果采用全屏刪除式重繪則閃爍十分明顯,顯示效果不佳。本程序采用非刪除式重繪,假定指針將要移動一格,則先采用背景色(這里是白色)重繪原來指針以刪除原來位置的指針,再采用指針的顏色在當前位置繪制指針;如果指針沒有動,則直接繪制指針。另外,秒表采用的是單獨的定時器消息控制。二、 時鐘功能及程序設計介紹1、系統(tǒng)功能介紹(1)左邊部分是一個圓形表盤,右邊部分上面是一個數(shù)字式時鐘,右邊下面是一個秒表。(2)圓形表盤時針、分針而后秒針運動規(guī)律正確且即使重合在一起也能清楚的進行辨認;數(shù)字式時鐘可以顯示年、月、日、時、分、秒等數(shù)據(jù)。時間顯示與指針式時鐘顯示一致;秒表顯示窗中顯示從0開始的時間,單位為百分之一秒。再次按下秒表控制按鈕后計時停止,該窗口顯示累計時間。(3)按下設置時間菜單項可彈出一對話框,用于設置當前的時間和日期。(4)具有一個美觀大方的圖標和個性的幫助信息。2、程序設計介紹(1)首先在mfc AppWizard中生成一個名為Clock的單文檔程序框架。然后在classview中修改cclockapp中l(wèi)nitlnstance中的代碼,去掉單文檔窗口中上面和下面部分的工具欄,使得界面更加美觀。然后修改resourceview中dialog和version下面的信息,添加、修改程序的圖標與定制個性化的幫助信息。(2)編輯項目的菜單資源,在主框架窗口的主菜單(IDR_MAINFRAME)中添加一個名為“時鐘控制”的下拉菜單。在“時鐘控制”菜單中添加三個菜單選項“啟動時鐘”、“停止時鐘”和“時間設置”。并在菜單屬性項中設定“啟動時鐘”菜單的ID標號為ID_START,“停止時鐘”菜單的ID標號為ID_STOP,“時間設置”菜單的ID標號為ID_SETTIME。(3)利用ClassWizard為視圖類添加菜單命令處理函數(shù)。進入ClassWizard的Message Maps選項卡,選擇Class Name項為CClockView類,在Object IDs列表框中分別選擇新添加的菜單選項的ID,在Messages列表框中選擇COMMAND,按下Add Function按鈕添加成員函數(shù)。ClassWizard會為“啟動時鐘”、“停止時鐘”和“時間設置”菜單選項添加相應的消息響應函數(shù)OnStart ( )、OnStop ( )和OnSettime ( )。(4)利用ClassWizard為視圖類添加定時器和鼠標消息處理函數(shù)。進入ClassWizard的Message Maps選項卡,選擇Class Name項為 CClockView類,在Messages列表框中分別選擇定時器消息WM_TIMER和鼠標消息WM_LBUTIONDOWN,按下Add Function按鈕添加成員函數(shù)。ClassWizard會添加相應的定時器和鼠標消息響應函數(shù)OnTimer和OnLButtonDown。(5)使用Developer Studio菜單的Insert / Resource選項調出Insert Source對話框,為項目添加新的對話框資源。在對話框屬性中,修改對話框名為“時間設定”。在對話框中增加用來輸入年、月、日、時、分、秒的編輯框控件。并通過控件屬性,將年、月、日、時、分、秒等編輯控件的ID改為IDC_YEAR、IDC_MONTH、IDC_DAY、IDC_HOUR、IDC_MINUTE和IDC_SECOND。(6)設計好這個對話框模板后,利用ClassWizard自動建立對話框類。進入ClassWizard后,它會發(fā)現(xiàn)已建立的對話框模板資源,并彈出一個對話框詢問是否要為該對話框模板建立類。按下“OK”按鈕,會彈出New Class對話框,在Name欄填寫對話框類的名稱CSetTimeDlg后按“OK”按鈕,即可為對話框創(chuàng)建一個對應的類。(7) 利用ClassWizard為對話框類添加與各控件對應的數(shù)據(jù)成員。選擇MemberVariables選項卡,確保Class Name項為對話框CSetTimeDlg類,然后在選項卡下方的窗口中選擇各控件的ID并按下“Add Variable”按鈕,為其添加對應成員變量,如下表所示。編輯控件屬性Control IDsVariable TypeMember variable nameVariable RangeIDC_YEARintm_Year03000IDC_MONTHintm_Mouth112IDC_DAYimtm_Day131IDC_HOURimtm_Hour023IDC_MINUTEintm_Minute059IDC_SECONDintm_Second059最后一列為變量取值范圍。(8)完成以上工作后,即可修改程序框架,在關鍵部分添加必要的代碼來實現(xiàn)表盤的繪制、計時器的設置、指針的計算和屏幕的重繪等要求。(9)組建、運行、調試。最終效果圖3、程序設計過程中遇到的問題以及解決方法(1)漏打字母。比如在前面clockView中添加的引用頭文件的語句中csettimedlg打成了csetimedlg,而頭文件是#include “SetTimeDlg. H”,導致在組建調試的時候總是提示引用不到頭文件、沒有這個文件,后來是一行行仔細檢查代碼的時候發(fā)現(xiàn)的。(2)錯打符號。在clockview.cpp中添加代碼的時候,有個/AFX_DATA_INIT(CSetTimeDlg)/ AFX_DATA_INIT當中的和打成了|,結果導致后面設定初始時間的代碼無法找到對應的頭文件。這是我通過對比其他沒有修改過的原來就存在的函數(shù)的格式發(fā)現(xiàn)并改正的。這件事也讓我糾正了原來一直有的一個誤區(qū),/符號后面的不一定只有對代碼無任何影響的注釋。(3)窗口大小設置的問題。我通過movewindow函數(shù)來設置窗口大小,但是總是沒有成功,后來考慮到窗口大小對程序的正常使用沒有多大影響,而且設置了窗口大小的話,就不好確定表盤右邊秒表方框的位置了,所以這件事就不了了之了,這也是本次程序設計過程當中的一大遺憾。(4)屏幕的重繪問題。存在兩個問題,第一個是本程序由于完全在OnDraw函數(shù)中實現(xiàn),因此屏幕重繪較為麻煩。如果在OnDarw函數(shù)中采用“異或”屏幕重繪方式,在程序窗口最大、最小化及移出屏幕時,會顯示異常。通過查閱資料得知,解決這一問題較理想的方式是在定時器處理函數(shù)OnTimer中采用“異或”方式直接重繪屏幕,而不采用調用Invalidate ( )函數(shù)的方式;同時在OnDraw函數(shù)中顯示指針的最后狀態(tài),以便處理程序窗口最大、最小化及移出屏幕的情況。第二個是采用全屏刪除式重繪則屏幕閃爍明顯,顯示效果不佳??梢酝ㄟ^采用非刪除式重繪的方式來緩解這一現(xiàn)象。 三、 時鐘開發(fā)的體會這是我第一次使用mfc開發(fā)小程序,由于只是對vc+和mfc相關的知識的掌握程度不是很高,所以我在圖書館和網絡當中查找了很多相關的資料,但是甚至照著書本制作的過程當中還是出現(xiàn)了很多問題,使得我調試了很長時間,才發(fā)現(xiàn)這是一件很費精力的事情,這件事使得我覺得程序開發(fā)是很不容易的,尤其是大型的程序。另外,這次計算機課程設
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025建筑工程土方回填項目合同
- 重慶市沙坪壩區(qū)九年級歷史上冊 世界古代史 第五學習主題 古代科學技術與思想文化 第10課 古代的科學技術與造型藝術教學設計 川教版
- 藝術學校兼職教師合同協(xié)議
- 三方人力資源共享合同
- 小學蘇教版 (2017)1 空氣占據(jù)空間嗎教案及反思
- 正確面對他人評價(教學設計)2023-2024學年初三下學期教育主題班會
- 項目安全教育培訓
- 國家基本公共衛(wèi)生服務規(guī)范
- 護理文書書寫電子版規(guī)范及要求
- 版人力資源管理外包合同
- 2024年南京出版?zhèn)髅剑瘓F)有限責任公司招聘筆試參考題庫附帶答案詳解
- 廈門市2024屆高三畢業(yè)班第四次質量檢測 政治試卷(含答案)
- (附答案)2024公需課《百縣千鎮(zhèn)萬村高質量發(fā)展工程與城鄉(xiāng)區(qū)域協(xié)調發(fā)展》試題廣東公需科
- 微創(chuàng)冠脈搭橋手術
- 檔案館檔案數(shù)字化加工項目技術方案
- 安徽首礦大昌金屬材料有限公司霍邱縣范橋鐵礦礦山地質環(huán)境保護與土地復墾方案
- 2022年10月自考00078銀行會計學試題及答案含解析
- 鮮食玉米簡介介紹
- 商業(yè)綜合體投資計劃書
- 三叉神經痛患者的護理
- 語文學業(yè)質量監(jiān)測-國測四年級模擬試題(A)
評論
0/150
提交評論