- 相關(guān)推薦
c++實踐報告書范文2篇
【c++實踐報告書例一】
本科生課程設(shè)計(實踐)設(shè)計報告
(程序設(shè)計基礎(chǔ))
題 目
學(xué)生學(xué)號 學(xué)生姓名
指導(dǎo)教師 學(xué) 院 專業(yè)班級 MFC課程設(shè)計
計算機(jī)基礎(chǔ)教學(xué)實驗中心
2015年 06月 14 日
一、引言
MFC(Microsoft Foundation Class Library, 微軟基礎(chǔ)類庫)是微軟基
Windows平臺下的C++類庫集合。MFC包含了所有與系統(tǒng)相關(guān)的類,其中封裝了大多數(shù)的API(Application Program Interface)函數(shù),提供了應(yīng)用程序框架和開發(fā)應(yīng)用程序的工具,如應(yīng)用程序向?qū)、類向(qū)А⒖梢暬Y源設(shè)計等高效工具,用消息映射處理消息響應(yīng),大大簡化了Windows應(yīng)用程序的開發(fā)工作,使程序員可以從繁重的編程工作中解脫出來,提高了工作效率。
程序設(shè)計實踐旨在課堂學(xué)習(xí)的基礎(chǔ)上幫助學(xué)生掌握C++應(yīng)用系統(tǒng)的開發(fā)方法和技巧。在系統(tǒng)學(xué)習(xí)完《C++程序設(shè)計》這門課程后,通過實踐對幾個小型C++應(yīng)用程序?qū)嵗O(shè)計與實現(xiàn)過程分析,幫助學(xué)生利用C++開發(fā)應(yīng)用系統(tǒng)的一般方法和步驟,掌握MFC的基本知識。
這次實踐采用學(xué)生上機(jī)與老師集體輔導(dǎo)的方式,以完成老師下發(fā)的《C++語言課程設(shè)計任務(wù)書》為要求和目的,運(yùn)用課堂上學(xué)習(xí)的C++基礎(chǔ)知識,采用Visual C++ MFC編程系統(tǒng),以全新的角度和感知去認(rèn)識C++語言在編程方面的優(yōu)越性。在實踐過程中,基于對話框的MFC應(yīng)用程序,達(dá)到了解基本控件,如靜態(tài)文本框、命令按鈕、編輯框、列表框、組合框等的使用的目的。還有理解Windows應(yīng)用程序采用“消息傳遞、事件驅(qū)動”的運(yùn)行機(jī)制。
本次實踐的任務(wù)主要分為兩個部分:
(一) 使用Visual C++ MFC編程實現(xiàn)以下功能:
1. 輸入一元二次方程ax2+bx+c=0 的系數(shù)a、b、c,計算并輸出兩個根x1、x2.
2. 編寫一個能對列表框進(jìn)行項目添加、修改和刪除操作的應(yīng)用程序。
3. 編寫一個程序,繪制-2π~2π之間的sin曲線。
4. 用定時器控制蝴蝶在窗口中飛舞。等共10道。
(二) 將第一部分中選擇3~5題,做一個綜合程序,要求有登陸界面和調(diào)
用各部分的功能。
二、總體設(shè)計
本次實踐的主要目的就是了解和掌握運(yùn)用MFC編程的一般思想和具體的操作步驟。實踐主要是基于MFC的多文檔對話框和單文檔視圖,通過實踐完成第一大部分的任務(wù)之后,還要完成第二部分的綜合題目。第二部分的任務(wù)由學(xué)生自主發(fā)揮,自主找資料,詢問同學(xué)和老師。
第一部分的任務(wù)比較簡單,具體的就不再描述。關(guān)于第二部分,我做了一個基于對文檔對話框。首頁為一個登陸頁面,需要輸入用戶名和密碼才能登陸,登陸后的頁面是把第一大部分的幾個題目連接起來。達(dá)到預(yù)覽的目的。
三、詳細(xì)設(shè)計
實踐前首先要認(rèn)識AppWizard的工作環(huán)境。其項目工作區(qū)一共有三個選項卡分別為“ResourceView”“ClassView”“FileView”,中間是對話框設(shè)計界面,右邊是控件工具欄。
實踐過程中,我們是先完成第一大部分的任務(wù)。雖然在第一次上機(jī)實踐前,我仔細(xì)地閱讀了老師給我們下發(fā)的資料,并且結(jié)合《C++程序設(shè)計實踐教程》了
解相關(guān)知識,但是在實踐時結(jié)果不理想。主要是對創(chuàng)建對話框程序的步驟沒有掌握。在經(jīng)過幾次嘗試失敗后,總結(jié)其一般步驟為:(1)建立基于對話框的MFC應(yīng)用程序框架;(2)放置控件;(3)設(shè)置控件屬性;(4)為控件連接變量,即為控件命名;(5)添加并且編寫消息處理函數(shù)。
基于對話框的MFC程序設(shè)計,對各種控件的了解和使用顯得特別重要。這里就不一一詳細(xì)介紹它們的功能。控件控制欄一個有26個控件圖標(biāo),每一個圖標(biāo)都可以看做一個對象,消息便是通過函數(shù)對它們進(jìn)行操作。每一個控件都有兩個重要而且必不可少的基本屬性:ID和標(biāo)題。ID便是該控件的標(biāo)識,某些函數(shù)需要通過ID對控件進(jìn)行操作。
了解一定相關(guān)知識后,對課程實踐有了很大的幫助。其中“輸入一元二次方程ax2+bx+c=0 的系數(shù)a、b、c,計算并輸出兩個根x1、x2”這個題目比較復(fù)雜,而且與C++連續(xù)很緊密。其中的有這樣的語句m_x1=(-b+sqrt(b*b-4*a*c))/(2*a); m_x2=(-b-sqrt(b*b-4*a*c))/(2*a),這就是我們在課堂上學(xué)習(xí)的C++基本語句,在實踐過程中考驗學(xué)生的靈活運(yùn)用能力。完成這個題目的關(guān)鍵是把每個編輯框(控件)連接好變量和選的數(shù)據(jù)類型,接下來的就是編寫消息處理函數(shù)。這道題很全面地體現(xiàn)了MFC的“消息傳遞、事件驅(qū)動”的思想,在操作步驟方面也在很多地方得到了實踐。
MFC編程除了基于多文本對話框以外,還有很重要的一部分是基于單文檔界面的應(yīng)用程序,如Windows自帶的Notepad程序。在本次實踐的第一大部分的后5個小題就是基于單文檔的。那么首先要對其有一定的了解:文檔/視圖結(jié)構(gòu)的思想是將數(shù)據(jù)的管理與顯示分離,其中文檔用于管理應(yīng)用程序的數(shù)據(jù),而視圖是用戶界面,用于顯示、打印文檔中的數(shù)據(jù),并管理與用戶的交互。SDI具有文檔/視圖結(jié)構(gòu)的應(yīng)用程序框架,該框架包括應(yīng)用程序類、窗口框架類、文檔類和視圖類,編程的任務(wù)是在文檔類和視圖類中添加適當(dāng)?shù)拇a。其中文檔類中一個重要的成員函數(shù)是OnNewDocument(),用戶在此添加代碼完成對數(shù)據(jù)的初始化;而視圖類中最重要的成員函數(shù)是OnDraw(),通過在該函數(shù)中添加代碼實現(xiàn)窗口內(nèi)容的輸出。
本次實踐是對單文檔的典型實例,包括:
? 利用畫筆、畫刷等工具及位圖處理的方法實現(xiàn)文字和圖形的輸出。
? 利用定時器控件制作動畫程序。
? 對鼠標(biāo)和鍵盤進(jìn)行編程的基本方法。
? 文件、字體、顏色等幾種通用對話框的使用方法及自定義對話框的設(shè)計、調(diào)用方法。 ? 菜單的設(shè)計方法。
雖然進(jìn)行充分的準(zhǔn)備,實踐中還是遇到了很多的困難和問題。在完成題目“用定時器控制蝴蝶在窗口中飛舞”時,主要的問題就是在插入蝴蝶圖片的,嘗試了幾次都沒有編譯成功。最終再詢問同學(xué)后,才知道是要把GIF格式的圖片分割成一幀一幀,然后才能插入。最后用定時器控制,達(dá)到動態(tài)的效果。
在完成了第一大部分的任務(wù)后,第二部分的綜合題是一個不小的挑戰(zhàn)對我來說。要靠自己去網(wǎng)上或者圖書館查找資料。在經(jīng)過一番準(zhǔn)備后,最終決定做一個相對簡單的基于多文檔對話框的登陸界面,把幾個原來的程序文件連接起來。但是在這個過程中,完全要靠自己一步一步去探索,當(dāng)然也遇到了各種各樣的困難和挑戰(zhàn)。
關(guān)鍵是在連接各部分對話框,經(jīng)過不斷的實驗,不斷的調(diào)試程序,總結(jié)的操作步驟如下:(1)創(chuàng)建工程,MFC Application(exe),工程命名按要求命名;(2)工程建立后有如圖對話框,將途中的靜態(tài)文本框和按鈕都刪掉,留下空白,再使用靜
態(tài)文本,編輯框,按鈕和靜態(tài)圖片重新排版,并進(jìn)行命名。注意靜態(tài)圖框應(yīng)該第一個布置,不然運(yùn)行時圖片會將其他控件覆蓋;(3)右擊密碼對應(yīng)的編輯框,選擇屬性,選樣式中的密碼;(4)在Dialog上右擊選擇插入DIG,重復(fù)插入4個,依次作為菜單,題目1,題目2和題目3的對話框,并對其分別創(chuàng)建類,以菜單對話框為例,改一下表頭為“菜單”,在對話框空白處雙擊,點(diǎn)OK創(chuàng)建類,并對其命名(假如命名為MyMenu);(5)回到登錄界面的對話框,雙擊登錄控件,出現(xiàn)如圖按鈕,點(diǎn)擊OK,在頂端添加#include”MyMenu.h”,并OnButton1下添加以下代碼CString c_user,c_password;
m_user.GetWindowText(c_user);
m_password.GetWindowText(c_password);
if(c_user.IsEmpty()||c_password.IsEmpty())
{
MessageBox("用戶名或密碼不能為空","用戶登錄信息");
return;
}
if(c_user=="123"&&c_password=="123")
{
CMyMenu dlg;
dlg.DoModal();//這兩段代碼是用于調(diào)用菜單對話框
}
else
{
MessageBox("用戶名或密碼不正確","提示",MB_ICONINFORMATION); return;
(6)對對話框添加背景圖片。在如下圖文件上右擊,選擇引入,然后導(dǎo)入已準(zhǔn)備好的bmp格式的圖片,然后選擇登錄界面的靜態(tài)圖框右擊,進(jìn)行如圖操作,這樣圖片就加入了,它會改掉按鈕和編輯框,這沒關(guān)系,運(yùn)行后會顯示出來的;
(7)通過以上操作,已經(jīng)做好了登錄界面和實現(xiàn)和登錄界面與菜單對話框的連接,現(xiàn)在進(jìn)行菜單對話框的編輯。將原有的按鈕刪除,自己加入按鈕并命名;(8)雙擊題目1,點(diǎn)OK,在代碼頁的頂端加入如圖代碼,并在OnButton1下加入以下代碼 CT1 dlg; dlg.DoModal();其他的按相同操作。
四、設(shè)計總結(jié)
為期為兩周的課程實踐中,我體會頗多,學(xué)到的東西也很多。我懂得了如何運(yùn)用MFC編寫可視化界面的應(yīng)用程序,加強(qiáng)了對C++的認(rèn)識,復(fù)習(xí)了以前的知識,自己的邏輯思考能力,解決問題的能力也提高了不少。從而對Microsoft Visual C++有了更加深刻的認(rèn)識和體會!在這次課程設(shè)計實踐過程中我還懂得了一些程序開發(fā)的重要步驟,總之,在這次課程設(shè)計實踐中,我收獲頗豐。
對于對任務(wù)的完成情況,第一部分主要按老師的步驟完成。第二部分,由學(xué)生自主選題,自主設(shè)計完成?偟膩碚f,我個人對自己的完成情況感覺良好。當(dāng)然,老師的悉心指導(dǎo)和同學(xué)的幫助是不能忽視的,在此感謝所有在本次課程設(shè)計實踐過程中對我細(xì)心指導(dǎo)的老師和不斷鼓勵和幫助我的同學(xué)們。
總之,此次課程實踐是對學(xué)生動手動腦的一次很好的鍛煉,為學(xué)生的今后發(fā)展奠定基礎(chǔ)。
【c++實踐報告書例二】
本科生課程設(shè)計(實踐)任務(wù)書、設(shè)計報告
(C++程序設(shè)計)
題 目 科學(xué)計算器應(yīng)用程序系統(tǒng) 學(xué)生姓名
指導(dǎo)教師
學(xué) 院
專業(yè)班級 學(xué)生學(xué)號 吳金星 嚴(yán)暉 材料科學(xué)與工程學(xué)院 1206 0607120610
計算機(jī)基礎(chǔ)教學(xué)實驗中心
2013年 7 月 3 日
科學(xué)計算器管理信息系統(tǒng)
摘要:本設(shè)計是簡單計算器,日常計算機(jī)使用中,常常涉及到一些有關(guān)計算的問題,一個小型的計算器軟件變得非常有用,該校型計算器需要空間資源較少,對電腦其他程序的應(yīng)用影響較小。它的設(shè)計按軟件工程的方法進(jìn)行,系統(tǒng)具有良好的界面、必要的交互信息和較好的健壯性;醒目美觀的軟件封面。使用人員能快捷簡單地進(jìn)行操作。即時準(zhǔn)確地獲得需要的計算的結(jié)果,充分降低了數(shù)字計算的難度和節(jié)約了時間,對人們的生活有一定的幫助。
關(guān)鍵詞:程序設(shè)計;計算器;MFC;按鈕控件
1. 計算器系統(tǒng)開發(fā)設(shè)計思想
⑴實驗?zāi)康?/p>
①通過實踐加強(qiáng)對程序設(shè)計語言課程知識點(diǎn)的理解和掌握,培養(yǎng)對課程知識綜合運(yùn)用能力、實際分析問題能力及編程能力,養(yǎng)成良好的編程習(xí)慣。
②通過實踐進(jìn)一步領(lǐng)會程序設(shè)計的特點(diǎn)和應(yīng)用,提高運(yùn)用C++ 以及面向?qū)ο笾R解決實際問題的能力。
③通過實踐掌握用C++ 編寫面向?qū)ο蟮膶嵱贸绦虻脑O(shè)計方法,對面向?qū)ο蠓椒ê退枷朐黾痈行缘恼J(rèn)識;學(xué)會利用C++程序設(shè)計語言編寫出一些短小、可靠的Windows實用程序,切實提高面向?qū)ο蟮某绦蛟O(shè)計能力。為后續(xù)的相關(guān)課程的學(xué)習(xí)打下基礎(chǔ)。
⑵實驗要求
①二進(jìn)制、八進(jìn)制、十進(jìn)制及十六進(jìn)制數(shù)的加、減、乘、除、乘方、取模等簡單計算
②科學(xué)計算函數(shù),包括(反)正弦、(反)余弦、(反)正切、(反)余切、開方、指數(shù)等函數(shù)運(yùn)行
③以角度、弧度兩種方式實現(xiàn)上述部分函數(shù)
④具備歷史計算的記憶功能
⑤對不正確的表達(dá)式能指出其錯誤原因
⑥整理上機(jī)步驟,完成實驗報告、提交可運(yùn)行的程序,給出實驗數(shù)據(jù)和實驗結(jié)果
2、計算器系統(tǒng)功能及系統(tǒng)設(shè)計介紹
⑴功能說明
它的設(shè)計按軟件工程的方法進(jìn)行,系統(tǒng)具有良好的界面;必要的交互信息;簡約美觀的效果。使用人員能快捷簡單地進(jìn)行操作。即可單機(jī)按鈕進(jìn)行操作,也可直接通過鍵盤直接輸入。即時準(zhǔn)確地獲得需要的計算的結(jié)果,充分降低了數(shù)字計算的難度和節(jié)約了時間,對人們的生活有一定的幫助。
①包含的功能有:加、減、乘、除運(yùn)算,開方、求倒數(shù)等功能。②計算器上數(shù)字09為一個控件數(shù)組,加、減、乘、除為一個控件數(shù)組,其余為單一的控件。③給對話框添加菜單。④計算功能基本上是用系統(tǒng)內(nèi)部函數(shù)。⑤程序可以能自動判斷輸入數(shù)據(jù)的正確性,保證不出現(xiàn)多于一個小數(shù)點(diǎn)、以0開頭等不正,F(xiàn)象。⑥“C”按鈕可以清除所有已輸入的數(shù)據(jù)從頭計算。
⑵設(shè)計思路
①算法基本流程,數(shù)值計算及功能:②主要部分為按鍵后的接受處理
③鍵入為數(shù)字則檢查和增長操作數(shù),有前算符則增長操作數(shù)1,否則增長操作數(shù)
2。計算器基本按:鍵入操作數(shù)1,鍵入運(yùn)算符(若為單目算符即直接運(yùn)算),鍵入操作數(shù)2,再鍵入算符即運(yùn)算前算符,若為當(dāng)前鍵入為單目算符即再運(yùn)算,結(jié)果保留在操作數(shù)1中,并返回在界面顯示。
④在每次運(yùn)算前將操作數(shù)進(jìn)行進(jìn)制轉(zhuǎn)為十進(jìn)制,在運(yùn)算結(jié)束后操作數(shù)還原進(jìn)制。 ⑤其中鍵入特殊算符和功能鍵作特殊處理,如:退格,進(jìn)制選鍵和”=”,”CE”,”C”等。顯示鍵入的相關(guān)信息,如果鍵入不合法即提示錯誤。 ⑶算法流程圖
⑷關(guān)鍵功能實現(xiàn)
①操作數(shù)的輸入,編輯框所關(guān)聯(lián)的變量為m_num,程序開始時為零。每按下一個數(shù)字鍵按鈕,就把它累加到m_num里并刷新顯示。BOOL型變量ele來判斷是否有小數(shù)點(diǎn)和一個整型數(shù)dint來表示小數(shù)點(diǎn)后的數(shù)據(jù)的位數(shù)。當(dāng)ele=TRUE時,表示有小數(shù)點(diǎn),否則則表示無小數(shù)點(diǎn)。按下小數(shù)點(diǎn)按鈕后執(zhí)行ele=TRUE。當(dāng)按下一個數(shù)字鍵時,首先根據(jù)ele判斷是否按下小數(shù)點(diǎn),若有則把小數(shù)點(diǎn)后數(shù)的位數(shù)加1,dint則為此次鍵入的數(shù)所處的位數(shù),將鍵入的數(shù)除以dint個10然后累加到編輯框所關(guān)聯(lián)的變量m_num上,若沒有則把m_num乘以10,然后累加到編輯框所關(guān)聯(lián)的變量m_num上。
②單目運(yùn)算符功能的實現(xiàn),由于單目運(yùn)算符中必須有執(zhí)行運(yùn)算的函數(shù),因而頭文件中要加入math.h,如m_num=sqrt(m_num).按下按鈕即可實現(xiàn)其功能。為實現(xiàn)連續(xù)運(yùn)算,程序有所改動。
③雙目運(yùn)算符功能的實現(xiàn),雙目運(yùn)算符需要兩個操作數(shù)才能運(yùn)算,所以在執(zhí)行雙目運(yùn)算符按鈕的函數(shù)代碼中,要把m_num中的值保存到變量num2中,然后把m_num清零。這樣即可保存第一個操作數(shù)。另外先定義了一個整形變量addt,在不同的雙目運(yùn)算符中給addt賦不同的值,然后在等號中用switch語句來匹配addt值來判斷需要執(zhí)行何種雙目運(yùn)算。為實現(xiàn)連續(xù)運(yùn)算,程序有所改動。 ④退格鍵功能的實現(xiàn),當(dāng)按下一次退格按鈕時,若m_num為整數(shù),只需對其中數(shù)據(jù)除以10再取整即可,若按下一次退格按鈕為小數(shù),則根據(jù)小數(shù)點(diǎn)后數(shù)據(jù)的位數(shù)dint進(jìn)行操作,先對m_num執(zhí)行(dint-1)次乘以10運(yùn)算,然后取整,接著執(zhí)行(dint-1)次除以10的運(yùn)算即可。完成后需要把dint將減小1。
⑤正負(fù)號功能的實現(xiàn),在頭文件中定義一個BOOL型變量ele2來判斷m_num的正負(fù)。ele2=TRUE時表示為正。在鍵入操作數(shù)時需要用到ele2。在正負(fù)號按鈕的消息響應(yīng)函數(shù)內(nèi)容為m_num=-m_num;ele2=!ele2。
3.計算器系統(tǒng)開發(fā)的體會
實踐是獲取知識的一個極其重要的途徑,無論是過去還是現(xiàn)在抑或是將來,我都堅信這一點(diǎn)。在這個實驗中,我堅持以實踐為導(dǎo)向,雖然,我沒有對CLR與.NET的系統(tǒng)的學(xué)習(xí),理論理解并不多,但是在實際摸索應(yīng)用的過程中,我還是學(xué)到很多東西,特別是理解了一個功能的使用方法之后,這種快樂的心情是無法描述的,F(xiàn)在可以靈活運(yùn)用一些常用的屬性,進(jìn)行一些基本操作,以實現(xiàn)預(yù)期目標(biāo)。
實現(xiàn)該計算器,當(dāng)時的想法是盡量向Windows計算器靠攏?梢钥吹,這個計算器有很多Windows計算器的影子。雖然這個計算器還有很多不足,比如表達(dá)式的處理。 這個計算器的代碼都是自己思考過后寫出來的,特別是錯誤排除部分,經(jīng)歷了很多Bug的時期。由于時間限制,可視化計算器的基本實現(xiàn)告一段落,在時間允許的以后再進(jìn)一步完善計算器功能。
【c++實踐報告書】相關(guān)文章:
c++課程設(shè)計實踐報告08-10
社會實踐報告書07-10
社會實踐報告書范文10-15
暑假社會實踐報告書10-13
寒假社會實踐報告書10-31
寒假社會實踐報告書07-13
社會實踐報告書(2)06-10
寒假社會實踐報告書08-10
暑假社會實踐報告書精選09-15
寒假社會實踐報告書08-18