c課程設(shè)計實驗報告.doc_第1頁
c課程設(shè)計實驗報告.doc_第2頁
c課程設(shè)計實驗報告.doc_第3頁
c課程設(shè)計實驗報告.doc_第4頁
c課程設(shè)計實驗報告.doc_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

中南大學本科生課程設(shè)計(實踐)任務(wù)書、設(shè)計報告(C+程序設(shè)計)題 目時鐘控件學生姓名指導教師學 院交通運輸工程學院專業(yè)班級學生學號計算機基礎(chǔ)教學實驗中心2012年9月7日C+程序設(shè)計基礎(chǔ)課程設(shè)計任務(wù)書對象:粉冶、信息、能源、交通工程實驗 2101學生 時間:2012.6 2周(1819周) 指導教師:王小玲1. 課程設(shè)計的任務(wù)、性質(zhì)與目的本課程設(shè)計是在學完C+程序設(shè)計基礎(chǔ)課程后,進行的一項綜合程序設(shè)計。在設(shè)計當中學生綜合“面向?qū)ο蟪绦蛟O(shè)計與結(jié)構(gòu)化程序設(shè)計”的思想方法和知識點,編制一個小型的應(yīng)用程序系統(tǒng)。通過此設(shè)計進一步提高學生的動手能力。并能使學生清楚的知道開發(fā)一個管理應(yīng)用程序的思想、方法和流程。2. 課程設(shè)計的配套教材及參考書l C+程序設(shè)計,鐵道出版社,主編 楊長興 劉衛(wèi)國 。l C+程序設(shè)計實踐教程,鐵道出版社,主編 劉衛(wèi)國 楊長興。l Visual C+ 課程設(shè)計案例精編,中國水力電力出版社,嚴華峰等編著。3. 課程設(shè)計的內(nèi)容及要求(1) 自己任選一個題目進行開發(fā)(如畫筆、游戲程序、練習打字軟件等),要求利用MFC 工具操作實現(xiàn)。(2) 也可選一個應(yīng)用程序管理系統(tǒng)課題(如:通訊錄管理系統(tǒng);產(chǎn)品入庫查詢系統(tǒng);學生成績管理;圖書管理等);設(shè)計所需數(shù)據(jù)庫及數(shù)據(jù)庫中的數(shù)據(jù)表,建立表之間的關(guān)系。設(shè)計所選課題的系統(tǒng)主封面(系統(tǒng)開發(fā)題目、作者、指導教師、日期)。設(shè)計進入系統(tǒng)的各級口令(如系統(tǒng)管理員口令,用戶級口令)。設(shè)計系統(tǒng)的主菜單。要求具備下列基本功能:l 數(shù)據(jù)的瀏覽和查詢l 數(shù)據(jù)的統(tǒng)計l 數(shù)據(jù)的各種報表l 打印輸出l 幫助系統(tǒng)多種形式的窗體設(shè)計(至少有查詢窗體、輸入窗體)注意:開發(fā)的應(yīng)用程序工作量應(yīng)保證在2周時間完成,工作量不能太少或太多??梢?人合作,但必須將各自的分工明確。4. 寫出設(shè)計論文論文基本內(nèi)容及撰寫順序要求:l 內(nèi)容摘要l 系統(tǒng)開發(fā)設(shè)計思想l 系統(tǒng)功能及系統(tǒng)設(shè)計介紹l 系統(tǒng)開發(fā)的體會論文基本格式要求:l 封面,見附件1l 正文,見附件2 考核方式與評分辦法l 出勤考核成績占總成績20%。l 設(shè)計成果評價總總成績的60%。l 實踐論文評價占總成績的20%。2012年6月6日時鐘控件摘要:使用vc+6.0編寫一個模擬時鐘程序,此程序在屏幕左方有一個指針式鐘面,右方有兩個矩形框,上面以數(shù)字方式顯示日期和時間,該時間應(yīng)與指針顯示的時間一致,下方的矩形框作為秒表。用菜單選項或按鈕設(shè)置時間和秒表。時間不必與機器系統(tǒng)時間相同,可任意設(shè)置。關(guān)鍵詞:c+程序設(shè)計、mfc.exe、面向?qū)ο?、時鐘、秒表一、 時鐘程序開發(fā)設(shè)計思想該程序設(shè)計主要涉及到的知識點有:時鐘指針運動算法、屏幕重繪方法、定時器消息、鼠標消息、菜單命令、對話框、畫筆/畫刷、顯示文字、修改程序圖標等。其中最關(guān)鍵的是指針運動算法和屏幕重繪方法的應(yīng)用。其中,在設(shè)計表盤指針的時候,由于不論何種指針,每次轉(zhuǎn)動均以/30弧度(一秒的角度)為基本單位,且都以表盤中心為轉(zhuǎn)動圓心。計算指針端點(x, y)的公式如下:x =圓心x坐標 + 指針長度 * cos (指針方向角)y =圓心y坐標 + 指針長度 * sin (指針方向角)而指針長度是指自圓心至指針一個端點的長度(是整個指針的一部分),由于指針可能跨越圓心,因此一個指針需要計算兩個端點。另一方面,三個指針的運動是相關(guān)聯(lián)的,秒針轉(zhuǎn)一圈引起分針運動一格,分針轉(zhuǎn)一圈引起時針運動一格,因此需要使用一個定時器消息來處理指針的運動。若用三個定時器消息分別處理時針、分針和秒針的運動,就會使問題復雜化且不易實現(xiàn)三個指針聯(lián)動的正確規(guī)律。采用一個定時器消息可以很容易實現(xiàn)指針聯(lián)動算法。代碼的編寫當中可以使用我們所學過的if語句來實現(xiàn)指針的聯(lián)動。由于屏幕的重繪速度很快(50 ms一次),如果采用全屏刪除式重繪則閃爍十分明顯,顯示效果不佳。本程序采用非刪除式重繪,假定指針將要移動一格,則先采用背景色(這里是白色)重繪原來指針以刪除原來位置的指針,再采用指針的顏色在當前位置繪制指針;如果指針沒有動,則直接繪制指針。另外,秒表采用的是單獨的定時器消息控制。二、 時鐘功能及程序設(shè)計介紹1、系統(tǒng)功能介紹(1)左邊部分是一個圓形表盤,右邊部分上面是一個數(shù)字式時鐘,右邊下面是一個秒表。(2)圓形表盤時針、分針而后秒針運動規(guī)律正確且即使重合在一起也能清楚的進行辨認;數(shù)字式時鐘可以顯示年、月、日、時、分、秒等數(shù)據(jù)。時間顯示與指針式時鐘顯示一致;秒表顯示窗中顯示從0開始的時間,單位為百分之一秒。再次按下秒表控制按鈕后計時停止,該窗口顯示累計時間。(3)按下設(shè)置時間菜單項可彈出一對話框,用于設(shè)置當前的時間和日期。(4)具有一個美觀大方的圖標和個性的幫助信息。2、程序設(shè)計介紹(1)首先在mfc AppWizard中生成一個名為Clock的單文檔程序框架。然后在classview中修改cclockapp中l(wèi)nitlnstance中的代碼,去掉單文檔窗口中上面和下面部分的工具欄,使得界面更加美觀。然后修改resourceview中dialog和version下面的信息,添加、修改程序的圖標與定制個性化的幫助信息。(2)編輯項目的菜單資源,在主框架窗口的主菜單(IDR_MAINFRAME)中添加一個名為“時鐘控制”的下拉菜單。在“時鐘控制”菜單中添加三個菜單選項“啟動時鐘”、“停止時鐘”和“時間設(shè)置”。并在菜單屬性項中設(shè)定“啟動時鐘”菜單的ID標號為ID_START,“停止時鐘”菜單的ID標號為ID_STOP,“時間設(shè)置”菜單的ID標號為ID_SETTIME。(3)利用ClassWizard為視圖類添加菜單命令處理函數(shù)。進入ClassWizard的Message Maps選項卡,選擇Class Name項為CClockView類,在Object IDs列表框中分別選擇新添加的菜單選項的ID,在Messages列表框中選擇COMMAND,按下Add Function按鈕添加成員函數(shù)。ClassWizard會為“啟動時鐘”、“停止時鐘”和“時間設(shè)置”菜單選項添加相應(yīng)的消息響應(yīng)函數(shù)OnStart ( )、OnStop ( )和OnSettime ( )。(4)利用ClassWizard為視圖類添加定時器和鼠標消息處理函數(shù)。進入ClassWizard的Message Maps選項卡,選擇Class Name項為 CClockView類,在Messages列表框中分別選擇定時器消息WM_TIMER和鼠標消息WM_LBUTIONDOWN,按下Add Function按鈕添加成員函數(shù)。ClassWizard會添加相應(yīng)的定時器和鼠標消息響應(yīng)函數(shù)OnTimer和OnLButtonDown。(5)使用Developer Studio菜單的Insert / Resource選項調(diào)出Insert Source對話框,為項目添加新的對話框資源。在對話框?qū)傩灾?,修改對話框名為“時間設(shè)定”。在對話框中增加用來輸入年、月、日、時、分、秒的編輯框控件。并通過控件屬性,將年、月、日、時、分、秒等編輯控件的ID改為IDC_YEAR、IDC_MONTH、IDC_DAY、IDC_HOUR、IDC_MINUTE和IDC_SECOND。(6)設(shè)計好這個對話框模板后,利用ClassWizard自動建立對話框類。進入ClassWizard后,它會發(fā)現(xiàn)已建立的對話框模板資源,并彈出一個對話框詢問是否要為該對話框模板建立類。按下“OK”按鈕,會彈出New Class對話框,在Name欄填寫對話框類的名稱CSetTimeDlg后按“OK”按鈕,即可為對話框創(chuàng)建一個對應(yīng)的類。(7) 利用ClassWizard為對話框類添加與各控件對應(yīng)的數(shù)據(jù)成員。選擇MemberVariables選項卡,確保Class Name項為對話框CSetTimeDlg類,然后在選項卡下方的窗口中選擇各控件的ID并按下“Add Variable”按鈕,為其添加對應(yīng)成員變量,如下表所示。編輯控件屬性Control IDsVariable TypeMember variable nameVariable RangeIDC_YEARintm_Year03000IDC_MONTHintm_Mouth112IDC_DAYimtm_Day131IDC_HOURimtm_Hour023IDC_MINUTEintm_Minute059IDC_SECONDintm_Second059最后一列為變量取值范圍。(8)完成以上工作后,即可修改程序框架,在關(guān)鍵部分添加必要的代碼來實現(xiàn)表盤的繪制、計時器的設(shè)置、指針的計算和屏幕的重繪等要求。(9)組建、運行、調(diào)試。最終效果圖3、程序設(shè)計過程中遇到的問題以及解決方法(1)漏打字母。比如在前面clockView中添加的引用頭文件的語句中csettimedlg打成了csetimedlg,而頭文件是#include “SetTimeDlg. H”,導致在組建調(diào)試的時候總是提示引用不到頭文件、沒有這個文件,后來是一行行仔細檢查代碼的時候發(fā)現(xiàn)的。(2)錯打符號。在clockview.cpp中添加代碼的時候,有個/AFX_DATA_INIT(CSetTimeDlg)/ AFX_DATA_INIT當中的和打成了|,結(jié)果導致后面設(shè)定初始時間的代碼無法找到對應(yīng)的頭文件。這是我通過對比其他沒有修改過的原來就存在的函數(shù)的格式發(fā)現(xiàn)并改正的。這件事也讓我糾正了原來一直有的一個誤區(qū),/符號后面的不一定只有對代碼無任何影響的注釋。(3)窗口大小設(shè)置的問題。我通過movewindow函數(shù)來設(shè)置窗口大小,但是總是沒有成功,后來考慮到窗口大小對程序的正常使用沒有多大影響,而且設(shè)置了窗口大小的話,就不好確定表盤右邊秒表方框的位置了,所以這件事就不了了之了,這也是本次程序設(shè)計過程當中的一大遺憾。(4)屏幕的重繪問題。存在兩個問題,第一個是本程序由于完全在OnDraw函數(shù)中實現(xiàn),因此屏幕重繪較為麻煩。如果在OnDarw函數(shù)中采用“異或”屏幕重繪方式,在程序窗口最大、最小化及移出屏幕時,會顯示異常。通過查閱資料得知,解決這一問題較理想的方式是在定時器處理函數(shù)OnTimer中采用“異或”方式直接重繪屏幕,而不采用調(diào)用Invalidate ( )函數(shù)的方式;同時在OnDraw函數(shù)中顯示指針的最后狀態(tài),以便處理程序窗口最大、最小化及移出屏幕的情況。第二個是采用全屏刪除式重繪則屏幕閃爍明顯,顯示效果不佳。可以通過采用非刪除式重繪的方式來緩解這一現(xiàn)象。 三、 時鐘開發(fā)的體會這是我第一次使用mfc開發(fā)小程序,由于只是對vc+和mfc相關(guān)的知識的掌握程度不是很高,所以我在圖書館和網(wǎng)絡(luò)當中查找了很多相關(guān)的資料,但是甚至照著書本制作的過程當中還是出現(xiàn)了很多問題,使得我調(diào)試了很長時間,才發(fā)現(xiàn)這是一件很費精力的事情,這件事使得我覺得程序開發(fā)是很不容易的,尤其是大型的程序。另外,這次計算機課程設(shè)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論