第一篇:C++實驗總結報告
C++ 實驗總結報告
研究課題:圖形編輯器
一、實驗目的
1.熟悉C++的一些重要性質,利用封裝、繼承、虛函數和多態性等特性,通過實驗學習如何對各類圖元的屬性和方法進行合理的封裝 2.學習Microsoft的Visual C++編程工具 3.掌握MFC的相關知識
4.掌握基本的文件保存、讀取以及操作封裝技術
二、實驗目的
設計一個簡單的圖形編輯器
三、實驗所用儀器、設備
計算機:PentiumIII 800 以上
256M內存 操作系統:Windows 2000/XP 開發集成環境:Visual C++ 6.0
四、軟件功能簡介
(注:此軟件是從網上下載得來)
該軟件具有漢化的菜單界面(仿Windows自帶畫圖軟件),具有文件打開、編輯、保存等功能。編輯部分包括可以在編輯區域畫直線、圓、矩形、曲線等矢量圖形,可插入文字,可以修改線條的線型、顏色等基本屬性。
五、部分代碼分析
1.類的初始分析:
class CDrawApp : public CWinApp { public: CDrawApp();
// Overrides virtual BOOL InitInstance();
// Implementation protected: //{{AFX_MSG(CDrawApp)afx_msg void OnAppAbout();// NOTE-the ClassWizard will add and remove member functions here.//
DO NOT EDIT what you see in these blocks of generated code!//}}AFX_MSG DECLARE_MESSAGE_MAP()};學習C++我們最需要理解的就是它面向對象的設計思想。這種思想可以在類和對象上得到充分的體現。
類是面向對象程序設計的核心,它實際上是由用戶定義的一種新的復雜數據類型。它是通過抽象數據類型ADT方法來實現的一種數據類型,將不同類型的數據和與這些數據相關的操作封裝在一起形成一個集合體。因此,它具有更高的抽象性,實現了信息的隱藏和封裝。
對象是某種類的一個實例,是類的具體體現。一個類可以有多個對象。
分析這一段代碼,編程者將CDrawApp();設置為公有函數,這樣做就是在整個函數的外面開了一個口,使用戶可以利用這一函數處理具體問題而不必詳解函數內部,是面向對象中封裝特性的一個具體體現;另外,此函數中還包含了構造函數與析構函數,構造函數完成對新對象的初始化工作,析構函數是構造函數的配對物,它實現與構造函數相反的功能。另外,這段代碼中還包括布爾型虛函數InitInstance(),這是函數重載,也是多態性的具體體現。
由這段代碼我們可以了解關于類和對象的一些知識,為我們進一步了解面向對象程序設計的思想精髓奠定了基礎。
2.對構造函數和析構函數的分析
構造函數
CCreateLine::CCreateLine(): m_begin(0,0), m_end(0,0){
m_nStep = 0;// 初始化操作步為 0 }
構造函數:C++中“類”只定義了一組對象的類型。要使用這個類還必須用“類”說明它的對象,每個對象中的數據成員還必須賦初值,這些功能都是由構造函數完成的。此造函數用初始化列表的方式對直線類的私有成員進行初始化,同時記下操作步m_nStep是直線類從指令類中繼承來的成員,它在指令類中屬于保護成員,在直線類中則成為私有成員。這是數據共享與數據保護兩者兼顧時的一種處理方法。
析構函數
CCreateLine::~CCreateLine(){ } 它是構造函數的配對物,與構造函數一樣是與類同名的成員函數,并在函數名前加上一個’~’以便與構造函數相區別。此析構函數中沒有任何操作語句,但它并非沒有任何操作。在任何一個對象消失時都要調用本類的析構函數進行掃尾工作。在構造對象時,構造函數分配資源給程序,在對象作用結束后,這些資源的釋放就要靠析構函數。當然析構函數中也是可以有語句的,當需要在對象消失之前執行某種操作時,可以把語句寫在里邊。
3.繼承和虛函數分析
class CDrawRect : public CDrawObj { protected: DECLARE_SERIAL(CDrawRect);CDrawRect();
public: CDrawRect(const CRect& position);//添加了對新數據成員的初始化
// Implementation public: virtual void Serialize(CArchive& ar);//添加了對新數據成員操作 virtual void Draw(CDC* pDC);//根據要求畫出每個圖形
virtual int GetHandleCount();//line和roundRectangle特殊處理 virtual CPoint GetHandle(int nHandle);//line和roundRectangle特殊處理
virtual HCURSOR GetHandleCursor(int nHandle);//line和roundRectangle特殊處理
virtual void MoveHandleTo(int nHandle, CPoint point, CDrawView* pView = NULL);//通過特征點來修改大小
virtual BOOL Intersects(const CRect& rect);//判斷與圖形是否存在相交
virtual CDrawObj* Clone(CDrawDoc* pDoc);//Clone一個新對象加入到pDoc中
protected: enum Shape { rectangle, roundRectangle, ellipse, line };Shape m_nShape;//通過枚舉變量來標示屬于上述四種的哪一種形狀 CPoint m_roundness;// for roundRect corners
friend class CRectTool;};在閱讀此函數的源代碼過程中,我感覺到對基類中虛函數的使用對整個程序具有著十分重要的意義。正如上段代碼,它的前提是派生類CDrawRect對基類CDrawObj進行了繼承,只有在對基類中的虛函數進行設置后,我們才能更加高效地處理和使用基類和派生類中的方法。所以,我感覺到在學習面向對象程序設計時,應當尤為注意基類中虛方法的創建和后期調用。
六、個人學習體會
在學習C++以前,我認為C++只是在C語言的基礎上的一種延伸,認為只要學過C語言,就可以用C語言的那種設計思想來學習C++、設計C++程序。正是由于抱了這種錯誤的思想,使我在一開始學習C++的時候遇到了很大的困難,我沒有辦法體會面向對象的設計思想,我在學習這門課的時候老是想著實現這個函數功能的具體過程,而沒太注意對象分類的重要性。
隨著課程學習的深入,我感覺到了利用類和對象、繼承、封裝等一系列知識可以把我們程序中很多繁雜、重復的部分省略掉,還可以解決一些利用面向過程的設計思想無法解決的問題,我自己也試著編寫一些小的C++程序,當然在這個過程中遇到了很多困難,其中調試帶來的困難讓我無法忘記,在調試程序的同時,我也總結出來了一些調試的小技巧,讓我在C語言課程設計中也受用匪淺。
在學習這門課的過程中,我感受到了自己親自動手編程序、調程序的重要性,我們要熟悉C++的語法、體會調試的思想,最好的一個手段就是自己動手編程、調試,這會比我們一味的看書效果好得多。
另外,我還感覺到一個好的程序編出來需要很多人的團結合作。我在檢查自己編寫的程序是否有BUG未被找出的時候,我會讓我的同學作為一個程序使用者來找出未發現的BUG并提出改進意見,這讓我們的工作更加高效。
很高興能夠了解到C++的神奇魅力和面向對象程序設計的獨特思想,它為我今后的程序設計奠定了基礎。感謝老師對我們的悉心教授!
第二篇:C++ 實驗一總結報告
實驗報告
實驗一 VC++ 6.0開發環境應用入門 1.實驗結果:
2.實驗結果分析:
該程序是利用C++輸出兩句話,練習輸出格式。實驗二 C++簡單程序設計
1.實驗結果:
2.實驗結果分析:
求一個圖形的面積要先判斷是哪一種圖形,用switch語句就可以解決,再利用公式即可。如輸入1為圓形,再輸入邊長3,利用面積公式,它的面積就是28.2744。
3.實驗結果:
4.實驗結果分析:
復習i++與++i的運用。i++在當前語句時,此時i的值是沒有變化的,直到此句執行結束,i的值才會+1;++i在當前語句執行之前時,i的值就已經+1。實驗三 函數的應用
1.實驗結果:
2.實驗結果分析:
函數的遞歸作用,先聲明定義一個函數,輸入形參n的值,然后進行比較,小于3的直接返回1;大于3的就繼續遞歸,直到得到的形參值小于3,返回1為止。從程序結果得知,返回n個1就最終遞歸返回n。
3.編寫一個函數把華氏溫度轉換為攝氏溫度,轉換公式為:C =(F-32)* 5/9。
4.使用系統函數pow(x,y)計算x的值,注意包含頭文件math.h
程序:
y
實驗總結:
1.基本掌握如何操作C++的界面,包括運行,編譯,調試等過程;
2.學會編寫簡單的C++程序,掌握基本數據類型變量和常量的應用,運算符與表達式的應用;
3.學會使用VC++6.0開發環境中的debug調試功能:單步執行、設置斷點、觀察變量值;熟練使用F10,F11,shift+F11,ctrl+F10等快捷鍵的使用。
4.基本掌握函數的運用,并對C語言的復習與運用,認識了C++與C語言的異同。
實驗報告
實驗四 C++程序的結構
一、實驗目的
1.觀察程序運行中變量的作用域、生存期和可見性;
2.學習類的靜態成員的使用;
3.學習多文件結構在C++程序中的使用;
二、實驗任務
1.運行下面的程序,觀察變量x、y的值。
#include
cout << “Step into fn1()...” << endl;
using namespace std;
fn1();
void fn1();
cout << “Back in main” << endl;
int x = 1, y = 2;
cout << “x = ” << x << endl;
int main()
cout << “y = ” << y << endl;
{
return 0;
cout << “Begin...” << endl;
}
cout << “x = ” << x << endl;
void fn1()
cout << “y = ” << y << endl;
{
cout << “Evaluate x and y in int y = 200;main()...” << endl;
cout << “x = ” << x << endl;
int x = 10, y = 20;
cout << “y = ” << y << endl;
cout << “x = ” << x << endl;
}
cout << “y = ” << y << endl;
2.實現客戶機(CLIENT)類。聲明字符型靜態數據成員ServerName,保存其服務器名稱;整型靜態數據成員ClientNum,記錄已定義的客戶數量;定義靜態函數ChangeServerName()改變服務器名稱。在頭文件client.h中聲明類和實現類,在文件client.cpp中測試這個類,觀察相應的成員變量取值的變化情況。
程序:
//實現客戶機(CLIENT)類。
#include
cout<<“Client構造函數被調用”< Clientnum++;} ~Client(){ cout<<“Client析構函數被調用”< Clientnum--;} static void ChangeServername(){ cout<<“請輸入服務器的名字:”< cin>>SeverName; } void show();};int Client::Clientnum=0;char Client::SeverName[10]=“abcd”;//Client.cpp void Client::show(){ 實驗五 數組、指針與字符串 一、實驗目的 cout<<“該用戶機的服務器端名字是:”< //Client.exe void main(){ Client::ChangeServername();Client a;a.show();Client::ChangeServername();Client b;b.show();Client::ChangeServername();Client c;c.show();} 1.學習使用數組數據對象; 2.學習字符串數據的組織和處理; 3.學習標準C++庫的使用; 4.掌握指針的使用方法; 5.練習通過debug觀察指針的內容及其所指的對象的內容; 6.練習通過動態內存分配實現動態數組,并體會指針在其中的作用; 7.分別使用字符數組和標準C++庫練習處理字符串的方法。 二、實驗任務 1.編寫并測試3×3矩陣轉置函數,使用數組保存3×3矩陣。 程序: #include for(i=0;i<3;i++)cout<<“請輸入一個3*3的矩 cout< cout< for(j=0;j<3;j++)} cin>>a[i][j];2.使用動態內存分配生成動態數組來重新完成上題,使用指針實現函數的功能。 程序: #include int i,j,t; cout<<“請輸入一個矩陣元素個數n*n=”; cin>>t; int *p=new int[t]; cout< for(i=0;i cin>>p[i]; cout<<“該矩陣的轉置為:”< for(j=0;j { for(i=0;i { cout< i=i+sqrt(t); } cout< } } 3.編程實現兩字符串的連接。要求使用字符數組保存字符串,不要使用系統函數。 #include int i,j; char a[20],b[10]; cout<<“請輸入一個不大于10個字符的字符串:”< cin>>a; cout<<“請再輸入一個不大于10個字符的字符串:”< cin>>b; for(i=0;i<10;i++) if(a[i]=='
主站蜘蛛池模板:
久久视热这里只有精品|
精品人妻系列无码一区二区三区|
国产精品白浆无码流出视频|
亚洲男人a在天堂线一区|
亚洲性色av一区二区三区|
一区二区三区在线观看亚洲电影|
69久久精品无码一区二区|
久久综合给久久狠狠97色|
亚洲国产成人综合精品|
黑人巨大videos极度另类|
好男人社区神马在线观看www|
欧美丰满熟妇xx猛交|
夜色资源站www国产在线视频|
欧美一区二区三区久久综合|
亚洲欧美丝袜精品久久中文字幕|
伊人婷婷六月狠狠狠去|
中文字幕精品av乱码在线|
欧美成人天天综合在线|
亚洲 小说 欧美 激情 另类|
国内精品人妻无码久久久影院蜜桃|
国产精品欧美亚洲韩国日本久久|
国产成人综合日韩精品无码|
日韩无码专区|
国产精品久久国产精麻豆99网站|
欧美18videosex性欧美黑吊|
久久伊99综合婷婷久久伊|
成人午夜视频一区二区无码|
久久99精品国产免费观观|
久久成人网站亚洲综合|
少妇激情av一区二区三区|
人人妻人人添人人爽日韩欧美|
久久综合乱子伦精品免费|
久久亚洲av成人无码电影a片|
18岁日韩内射颜射午夜久久成人|
无码免费h成年动漫在线观看|
两性色午夜免费视频|
777米奇色狠狠888俺也去乱|
国产成人精品免费视频大全软件|
国产l精品国产亚洲区久久|
各种少妇正面bbw撒尿|
亚洲欧美成αⅴ人在线观看|