c++實踐報告書範文2篇

來源:果殼範文吧 1.96W

【c++實踐報告書例一】

c++實踐報告書範文2篇

本科生課程設計(實踐)設計報告

(程式設計基礎)

題 目

學生學號 學生姓名

指導教師 學 院 專業班級 MFC課程設計

計算機基礎教學實驗中心

2015年 06月 14 日

一、引言

MFC(Microsoft Foundation Class Library, 微軟基礎類庫)是微軟基

Windows平臺下的C++類庫集合。MFC包含了所有與系統相關的類,其中封裝了大多數的API(Application Program Interface)函式,提供了應用程式框架和開發應用程式的工具,如應用程式嚮導、類嚮導、視覺化資源設計等高效工具,用訊息對映處理訊息響應,大大簡化了Windows應用程式的開發工作,使程式設計師可以從繁重的程式設計工作中解脫出來,提高了工作效率。

程式設計實踐旨在課堂學習的基礎上幫助學生掌握C++應用系統的開發方法和技巧。在系統學習完《C++程式設計》這門課程後,通過實踐對幾個小型C++應用程式例項設計與實現過程分析,幫助學生利用C++開發應用系統的一般方法和步驟,掌握MFC的基本知識。

這次實踐採用學生上機與老師集體輔導的方式,以完成老師下發的《C++語言課程設計任務書》為要求和目的,運用課堂上學習的C++基礎知識,採用Visual C++ MFC程式設計系統,以全新的角度和感知去認識C++語言在程式設計方面的優越性。在實踐過程中,基於對話方塊的MFC應用程式,達到了解基本控制元件,如靜態文字框、命令按鈕、編輯框、列表框、組合框等的使用的目的。還有理解Windows應用程式採用“訊息傳遞、事件驅動”的執行機制。

本次實踐的任務主要分為兩個部分:

(一) 使用Visual C++ MFC程式設計實現以下功能:

1. 輸入一元二次方程ax2+bx+c=0 的係數a、b、c,計算並輸出兩個根x1、x2.

2. 編寫一個能對列表框進行專案新增、修改和刪除操作的應用程式。

3. 編寫一個程式,繪製-2π~2π之間的sin曲線。

4. 用定時器控制蝴蝶在視窗中飛舞。等共10道。

(二) 將第一部分中選擇3~5題,做一個綜合程式,要求有登陸介面和調

用各部分的功能。

二、總體設計

本次實踐的主要目的就是了解和掌握運用MFC程式設計的一般思想和具體的操作步驟。實踐主要是基於MFC的多文件對話方塊和單文件檢視,通過實踐完成第一大部分的任務之後,還要完成第二部分的綜合題目。第二部分的任務由學生自主發揮,自主找資料,詢問同學和老師。

第一部分的任務比較簡單,具體的就不再描述。關於第二部分,我做了一個基於對文件對話方塊。首頁為一個登陸頁面,需要輸入使用者名稱和密碼才能登陸,登陸後的頁面是把第一大部分的幾個題目連線起來。達到預覽的目的。

三、詳細設計

實踐前首先要認識AppWizard的工作環境。其專案工作區一共有三個選項卡分別為“ResourceView”“ClassView”“FileView”,中間是對話方塊設計介面,右邊是控制元件工具欄。

實踐過程中,我們是先完成第一大部分的任務。雖然在第一次上機實踐前,我仔細地閱讀了老師給我們下發的資料,並且結合《C++程式設計實踐教程》了

解相關知識,但是在實踐時結果不理想。主要是對建立對話方塊程式的步驟沒有掌握。在經過幾次嘗試失敗後,總結其一般步驟為:(1)建立基於對話方塊的MFC應用程式框架;(2)放置控制元件;(3)設定控制元件屬性;(4)為控制元件連線變數,即為控制元件命名;(5)新增並且編寫訊息處理函式。

基於對話方塊的MFC程式設計,對各種控制元件的瞭解和使用顯得特別重要。這裡就不一一詳細介紹它們的功能。控制元件控制欄一個有26個控制元件圖示,每一個圖示都可以看做一個物件,訊息便是通過函式對它們進行操作。每一個控制元件都有兩個重要而且必不可少的基本屬性:ID和標題。ID便是該控制元件的標識,某些函式需要通過ID對控制元件進行操作。

瞭解一定相關知識後,對課程實踐有了很大的幫助。其中“輸入一元二次方程ax2+bx+c=0 的係數a、b、c,計算並輸出兩個根x1、x2”這個題目比較複雜,而且與C++連續很緊密。其中的有這樣的語句m_x1=(-b+sqrt(b*b-4*a*c))/(2*a); m_x2=(-b-sqrt(b*b-4*a*c))/(2*a),這就是我們在課堂上學習的C++基本語句,在實踐過程會考驗學生的靈活運用能力。完成這個題目的關鍵是把每個編輯框(控制元件)連線好變數和選的資料型別,接下來的就是編寫訊息處理函式。這道題很全面地體現了MFC的“訊息傳遞、事件驅動”的思想,在操作步驟方面也在很多地方得到了實踐。

MFC程式設計除了基於多文字對話方塊以外,還有很重要的一部分是基於單文件介面的應用程式,如Windows自帶的Notepad程式。在本次實踐的第一大部分的後5個小題就是基於單文件的。那麼首先要對其有一定的瞭解:文件/檢視結構的思想是將資料的管理與顯示分離,其中文件用於管理應用程式的資料,而檢視是使用者介面,用於顯示、列印文件中的資料,並管理與使用者的互動。SDI具有文件/檢視結構的應用程式框架,該框架包括應用程式類、視窗框架類、文件類和檢視類,程式設計的任務是在文件類和檢視類中新增適當的程式碼。其中文件類中一個重要的成員函式是OnNewDocument(),使用者在此新增程式碼完成對資料的初始化;而檢視類中最重要的成員函式是OnDraw(),通過在該函式中新增程式碼實現視窗內容的輸出。

本次實踐是對單文件的典型例項,包括:

? 利用畫筆、畫刷等工具及點陣圖處理的方法實現文字和圖形的輸出。

? 利用定時器控制元件製作動畫程式。

? 對滑鼠和鍵盤進行程式設計的基本方法。

? 檔案、字型、顏色等幾種通用對話方塊的使用方法及自定義對話方塊的設計、呼叫方法。 ? 選單的設計方法。

雖然進行充分的準備,實踐中還是遇到了很多的困難和問題。在完成題目“用定時器控制蝴蝶在視窗中飛舞”時,主要的問題就是在插入蝴蝶圖片的,嘗試了幾次都沒有編譯成功。最終再詢問同學後,才知道是要把GIF格式的圖片分割成一幀一幀,然後才能插入。最後用定時器控制,達到動態的效果。

在完成了第一大部分的任務後,第二部分的綜合題是一個不小的挑戰對我來說。要靠自己去網上或者圖書館查詢資料。在經過一番準備後,最終決定做一個相對簡單的基於多文件對話方塊的登陸介面,把幾個原來的程式檔案連線起來。但是在這個過程中,完全要靠自己一步一步去探索,當然也遇到了各種各樣的困難和挑戰。

關鍵是在連線各部分對話方塊,經過不斷的實驗,不斷的除錯程式,總結的操作步驟如下:(1)建立工程,MFC Application(exe),工程命名按要求命名;(2)工程建立後有如圖對話方塊,將途中的靜態文字框和按鈕都刪掉,留下空白,再使用靜

態文字,編輯框,按鈕和靜態圖片重新排版,並進行命名。注意靜態圖框應該第一個佈置,不然執行時圖片會將其他控制元件覆蓋;(3)右擊密碼對應的編輯框,選擇屬性,選樣式中的密碼;(4)在Dialog上右擊選擇插入DIG,重複插入4個,依次作為選單,題目1,題目2和題目3的對話方塊,並對其分別建立類,以選單對話方塊為例,改一下表頭為“選單”,在對話方塊空白處雙擊,點OK建立類,並對其命名(假如命名為MyMenu);(5)回到登入介面的對話方塊,雙擊登入控制元件,出現如圖按鈕,點選OK,在頂端新增#include”MyMenu.h”,並OnButton1下新增以下程式碼CString c_user,c_password;

m_indowText(c_user);

m_indowText(c_password);

if(c_pty()||c_pty())

{

MessageBox("使用者名稱或密碼不能為空","使用者登入資訊");

return;

}

if(c_user=="123"&&c_password=="123")

{

CMyMenu dlg;

dal();//這兩段程式碼是用於呼叫選單對話方塊

}

else

{

MessageBox("使用者名稱或密碼不正確","提示",MB_ICONINFORMATION); return;

(6)對對話方塊新增背景圖片。在如下圖檔案上右擊,選擇引入,然後匯入已準備好的bmp格式的圖片,然後選擇登入介面的靜態圖框右擊,進行如圖操作,這樣圖片就加入了,它會改掉按鈕和編輯框,這沒關係,執行後會顯示出來的;

(7)通過以上操作,已經做好了登入介面和實現和登入介面與選單對話方塊的連線,現在進行選單對話方塊的編輯。將原有的按鈕刪除,自己加入按鈕並命名;(8)雙擊題目1,點OK,在內碼表的頂端加入如圖程式碼,並在OnButton1下加入以下程式碼 CT1 dlg; dal();其他的按相同操作。

四、設計總結

為期為兩週的課程實踐中,我體會頗多,學到的東西也很多。我懂得了如何運用MFC編寫視覺化介面的應用程式,加強了對C++的認識,複習了以前的知識,自己的邏輯思考能力,解決問題的能力也提高了不少。從而對Microsoft Visual C++有了更加深刻的認識和體會!在這次課程設計實踐過程中我還懂得了一些程式開發的重要步驟,總之,在這次課程設計實踐中,我收穫頗豐。

對於對任務的完成情況,第一部分主要按老師的步驟完成。第二部分,由學生自主選題,自主設計完成。總的來說,我個人對自己的完成情況感覺良好。當然,老師的悉心指導和同學的幫助是不能忽視的,在此感謝所有在本次課程設計實踐過程中對我細心指導的老師和不斷鼓勵和幫助我的同學們。

總之,此次課程實踐是對學生動手動腦的一次很好的鍛鍊,為學生的今後發展奠定基礎。

【c++實踐報告書例二】

本科生課程設計(實踐)任務書、設計報告

(C++程式設計)

題 目 科學計算器應用程式系統 學生姓名

指導教師

學 院

專業班級 學生學號 吳金星 嚴暉 材料科學與工程學院 1206 0607120610

計算機基礎教學實驗中心

2013年 7 月 3 日

科學計算器管理資訊系統

摘要:本設計是簡單計算器,日常計算機使用中,常常涉及到一些有關計算的問題,一個小型的計算器軟體變得非常有用,該校型計算器需要空間資源較少,對電腦其他程式的.應用影響較小。它的設計按軟體工程的方法進行,系統具有良好的介面、必要的互動資訊和較好的健壯性;醒目美觀的軟體封面。使用人員能快捷簡單地進行操作。即時準確地獲得需要的計算的結果,充分降低了數字計算的難度和節約了時間,對人們的生活有一定的幫助。

關鍵詞:程式設計;計算器;MFC;按鈕控制元件

1. 計算器系統開發設計思想

⑴實驗目的

①通過實踐加強對程式設計語言課程知識點的理解和掌握,培養對課程知識綜合運用能力、實際分析問題能力及程式設計能力,養成良好的程式設計習慣。

②通過實踐進一步領會程式設計的特點和應用,提高運用C++ 以及面向物件知識解決實際問題的能力。

③通過實踐掌握用C++ 編寫面向物件的實用程式的設計方法,對面向物件方法和思想增加感性的認識;學會利用C++程式設計語言編寫出一些短小、可靠的Windows實用程式,切實提高面向物件的程式設計能力。為後續的相關課程的學習打下基礎。

⑵實驗要求

①二進位制、八進位制、十進位制及十六進位制數的加、減、乘、除、乘方、取模等簡單計算

②科學計算函式,包括(反)正弦、(反)餘弦、(反)正切、(反)餘切、開方、指數等函式執行

③以角度、弧度兩種方式實現上述部分函式

④具備歷史計算的記憶功能

⑤對不正確的表示式能指出其錯誤原因

⑥整理上機步驟,完成實驗報告、提交可執行的程式,給出實驗資料和實驗結果

2、計算器系統功能及系統設計介紹

⑴功能說明

它的設計按軟體工程的方法進行,系統具有良好的介面;必要的互動資訊;簡約美觀的效果。使用人員能快捷簡單地進行操作。即可單機按鈕進行操作,也可直接通過鍵盤直接輸入。即時準確地獲得需要的計算的結果,充分降低了數字計算的難度和節約了時間,對人們的生活有一定的幫助。

①包含的功能有:加、減、乘、除運算,開方、求倒數等功能。②計算器上數字09為一個控制元件陣列,加、減、乘、除為一個控制元件陣列,其餘為單一的控制元件。③給對話方塊新增選單。④計算功能基本上是用系統內部函式。⑤程式可以能自動判斷輸入資料的正確性,保證不出現多於一個小數點、以0開頭等不正常現象。⑥“C”按鈕可以清除所有已輸入的資料從頭計算。

⑵設計思路

①演算法基本流程,數值計算及功能:②主要部分為按鍵後的接受處理

③鍵入為數字則檢查和增長運算元,有前算符則增長運算元1,否則增長運算元

2。計算器基本按:鍵入運算元1,鍵入運算子(若為單目算符即直接運算),鍵入運算元2,再鍵入算符即運算前算符,若為當前鍵入為單目算符即再運算,結果保留在運算元1中,並返回在介面顯示。

④在每次運算前將運算元進行進位制轉為十進位制,在運算結束後運算元還原進位制。 ⑤其中鍵入特殊算符和功能鍵作特殊處理,如:退格,進位制選鍵和”=”,”CE”,”C”等。顯示鍵入的相關資訊,如果鍵入不合法即提示錯誤。 ⑶演算法流程圖

⑷關鍵功能實現

①運算元的輸入,編輯框所關聯的變數為m_num,程式開始時為零。每按下一個數字鍵按鈕,就把它累加到m_num裡並重新整理顯示。BOOL型變數ele來判斷是否有小數點和一個整型數dint來表示小數點後的資料的位數。當ele=TRUE時,表示有小數點,否則則表示無小數點。按下小數點按鈕後執行ele=TRUE。當按下一個數字鍵時,首先根據ele判斷是否按下小數點,若有則把小數點後數的位數加1,dint則為此次鍵入的數所處的位數,將鍵入的數除以dint個10然後累加到編輯框所關聯的變數m_num上,若沒有則把m_num乘以10,然後累加到編輯框所關聯的變數m_num上。

②單目運算子功能的實現,由於單目運算子中必須有執行運算的函式,因而標頭檔案中要加入math.h,如m_num=sqrt(m_num).按下按鈕即可實現其功能。為實現連續運算,程式有所改動。

③雙目運算子功能的實現,雙目運算子需要兩個運算元才能運算,所以在執行雙目運算子按鈕的函式程式碼中,要把m_num中的值儲存到變數num2中,然後把m_num清零。這樣即可儲存第一個運算元。另外先定義了一個整形變數addt,在不同的雙目運算子中給addt賦不同的值,然後在等號中用switch語句來匹配addt值來判斷需要執行何種雙目運算。為實現連續運算,程式有所改動。 ④退格鍵功能的實現,當按下一次退格按鈕時,若m_num為整數,只需對其中資料除以10再取整即可,若按下一次退格按鈕為小數,則根據小數點後資料的位數dint進行操作,先對m_num執行(dint-1)次乘以10運算,然後取整,接著執行(dint-1)次除以10的運算即可。完成後需要把dint將減小1。

⑤正負號功能的實現,在標頭檔案中定義一個BOOL型變數ele2來判斷m_num的正負。ele2=TRUE時表示為正。在鍵入運算元時需要用到ele2。在正負號按鈕的訊息響應函式內容為m_num=-m_num;ele2=!ele2。

3.計算器系統開發的體會

實踐是獲取知識的一個極其重要的途徑,無論是過去還是現在抑或是將來,我都堅信這一點。在這個實驗中,我堅持以實踐為導向,雖然,我沒有對CLR與的系統的學習,理論理解並不多,但是在實際摸索應用的過程中,我還是學到很多東西,特別是理解了一個功能的使用方法之後,這種快樂的心情是無法描述的。現在可以靈活運用一些常用的屬性,進行一些基本操作,以實現預期目標。

實現該計算器,當時的想法是儘量向Windows計算器靠攏。可以看到,這個計算器有很多Windows計算器的影子。雖然這個計算器還有很多不足,比如表示式的處理。 這個計算器的程式碼都是自己思考過後寫出來的,特別是錯誤排除部分,經歷了很多Bug的時期。由於時間限制,視覺化計算器的基本實現告一段落,在時間允許的以後再進一步完善計算器功能。


熱門標籤