VC實(shí)驗(yàn)報(bào)告(1234)_第1頁(yè)
VC實(shí)驗(yàn)報(bào)告(1234)_第2頁(yè)
VC實(shí)驗(yàn)報(bào)告(1234)_第3頁(yè)
VC實(shí)驗(yàn)報(bào)告(1234)_第4頁(yè)
VC實(shí)驗(yàn)報(bào)告(1234)_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、VC+實(shí)驗(yàn)報(bào)告班號(hào):學(xué)號(hào):姓名: 實(shí)驗(yàn)1 VC+開發(fā)環(huán)境的熟悉和Windows編程基礎(chǔ)一、實(shí)驗(yàn)?zāi)康?1. 熟悉Visual C+的開發(fā)環(huán)境2. 掌握用應(yīng)用程序向?qū)?chuàng)建一個(gè)控制臺(tái)應(yīng)用項(xiàng)目的方法。3. 掌握源代碼文件的新建、打開、保存和關(guān)閉等基本操作。4掌握用應(yīng)用程序向?qū)?chuàng)建一個(gè)Windows應(yīng)用項(xiàng)目的方法5. 掌握Visual C+項(xiàng)目的編譯、連接和執(zhí)行6. 掌握代碼簡(jiǎn)單語(yǔ)法錯(cuò)誤修正和調(diào)試的一般過(guò)程7掌握Windows程序運(yùn)行基本原理。 8. 掌握使用SDK(Windows API)方式編寫Windows應(yīng)用程序方法。 9. 掌握用應(yīng)用程序向?qū)?chuàng)建一個(gè)Windows應(yīng)用項(xiàng)目的方法。二、實(shí)驗(yàn)知識(shí)點(diǎn)

2、概念Visual C+是Microsoft公司推出的目前使用極為廣泛的基于Windows平臺(tái)的可視化編程環(huán)境。由于其功能強(qiáng)大、靈活性好、完全可擴(kuò)展以及具有強(qiáng)有力的Internet支持,在各種C+語(yǔ)言開發(fā)工具中脫穎而出,成為目前較為流行的C+語(yǔ)言集成開發(fā)環(huán)境。Windows程序設(shè)計(jì)不同于DOS下的程序設(shè)計(jì),它是一種事件驅(qū)動(dòng)的程序設(shè)計(jì)模式,主要是基于消息的。Windows SDK編程主要采用C+/C語(yǔ)言和Windows API進(jìn)行Windows應(yīng)用程序設(shè)計(jì)。三、實(shí)驗(yàn)題目1. 控制臺(tái)應(yīng)用程序編寫術(shù)語(yǔ):“控制臺(tái)應(yīng)用程序”是一個(gè)在仿DOS窗口(控制臺(tái)窗口)中運(yùn)行的基于字符的程序,控制臺(tái)窗口將成為其標(biāo)準(zhǔn)輸

3、入和輸出裝置。由于這種模式的應(yīng)用程序比Windows程序簡(jiǎn)單,我們先選擇利用Visual C+來(lái)建立這樣一個(gè)應(yīng)用,這樣使得我們可以將精力先投入到學(xué)習(xí)使用C+編程語(yǔ)言,而不需要把過(guò)多的精力投入到學(xué)習(xí)復(fù)雜的Windows編程中去。創(chuàng)建一個(gè)控制臺(tái)應(yīng)用,輸入以下代碼:#include <iostream> class Vehicle public: Vehicle(float speed,int total) speed = speed; total = total; cout<<”constructor is called!” <<endl; void ShowM

4、ember() cout<<speed<<" | "<<total<<endl; private: float speed; int total; int main() Vehicle a(120,4);a. ShowMember();Vehicle b;a. ShowMember();(1)編譯該程序,修改程序錯(cuò)誤(2)分別在創(chuàng)建對(duì)象,構(gòu)造函數(shù)處設(shè)置斷點(diǎn),調(diào)試運(yùn)行。(3)寫出程序運(yùn)行結(jié)果2.Windows SDK應(yīng)用程序編寫下面是一個(gè)SDK應(yīng)用程序的示例,該程序的功能是構(gòu)造一個(gè)編輯框控件和一個(gè)按鈕。編輯框用于輸入一元二次方程

5、的系數(shù),各系數(shù)之間用逗號(hào)分隔,當(dāng)單擊“計(jì)算”按鈕,獲取方程系數(shù),然后將求得的根通過(guò)TextOut顯示在窗口客戶區(qū)中。#include <windows.h>#include <math.h>#include <stdio.h>/ 求一元二次方程的根,函數(shù)返回根的個(gè)數(shù)int GetRoot(float a, float b, float c, double *root)double delta, deltasqrt;delta = b*b - 4.0 * a * c;if (delta<0.0) return 0;/ 無(wú)根deltasqrt = sqrt

6、(delta);if (a!=0.0) root0 = (-b + deltasqrt)/(2.0 * a);root1 = (-b - deltasqrt)/(2.0 * a); elseif (b!=0.0) root0 = root1 = -c/b;elsereturn 0;if (root0 = root1) return 1;else return 2;char str80;LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);/ 窗口過(guò)程int WINAPI WinMain (HINSTANCE hInstance, HINST

7、ANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) HWND hwnd ;/ 窗口句柄 MSG msg ;/ 消息 WNDCLASSwndclass ;/ 窗口類 wndclass.style = CS_HREDRAW | CS_VREDRAW ; wndclass.lpfnWndProc = WndProc ; wndclass.cbClsExtra = 0 ; wndclass.cbWndExtra = 0 ; wndclass.hInstance = hInstance ; wndclass.hIcon = LoadIcon (NULL,

8、 IDI_APPLICATION) ; wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ; wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ; wndclass.lpszMenuName = NULL ; wndclass.lpszClassName = "SDKWin"/ 窗口類名 if (!RegisterClass (&wndclass)/ 注冊(cè)窗口 MessageBox (NULL, "窗口注冊(cè)失敗!", &quo

9、t;HelloWin", 0) ; return 0 ; / 創(chuàng)建窗口 hwnd = CreateWindow ("SDKWin", / 窗口類名 "實(shí)驗(yàn)1Windows編程基礎(chǔ)",/ 窗口標(biāo)題 WS_OVERLAPPEDWINDOW, / 窗口樣式 CW_USEDEFAULT, / 窗口最初的 x 位置 CW_USEDEFAULT, / 窗口最初的 y 位置 CW_USEDEFAULT, / 窗口最初的 x 大小 CW_USEDEFAULT, / 窗口最初的 y 大小 NULL, / 父窗口句柄 NULL, / 窗口菜單句柄 hInstanc

10、e, / 應(yīng)用程序?qū)嵗浔?NULL) ; / 創(chuàng)建窗口的參數(shù) ShowWindow (hwnd, nCmdShow) ;/ 顯示窗口 UpdateWindow (hwnd) ;/ 更新窗口,包括窗口的客戶區(qū) while (GetMessage (&msg, NULL, 0, 0) TranslateMessage (&msg) ;/ 轉(zhuǎn)換某些鍵盤消息 DispatchMessage (&msg) ;/ 將消息發(fā)送給窗口過(guò)程,這里是WndProc return msg.wParam ;LRESULT CALLBACK WndProc (HWND hwnd, UINT m

11、essage, WPARAM wParam, LPARAM lParam)HDChdc;PAINTSTRUCTps;staticHWNDhwndButton, hwndEdit;charstrEdit80, strA380, strHint80;floata3;doubleroot2;inti, j, k, m;switch (message)case WM_CREATE:/ 窗口創(chuàng)建產(chǎn)生的消息hwndEdit = CreateWindow("edit", NULL, WS_CHILD|WS_VISIBLE|WS_ BORDER,10, 60, 200, 25, hwnd,

12、 NULL, NULL, NULL );hwndButton = CreateWindow("button", "計(jì) 算",WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,240, 60, 80, 25, hwnd, NULL, NULL, NULL );return 0 ; case WM_COMMAND:/ 命令消息,控件產(chǎn)生的通知代碼在wParam的高字中if (HWND)lParam = hwndButton )&&( HIWORD(wParam) = BN_CLICKED )/ 獲取編輯框控件的內(nèi)容,并將其轉(zhuǎn)

13、換成float數(shù)值GetWindowText( hwndEdit, strEdit, 80); / 獲取編輯框內(nèi)容/ 分隔字符串k = 0;m = 0;for (j=0; j<80; j+)if (strEditj = ',')k+; m = 0;else strAkm = strEditj;m+;for (i=0; i<3; i+)ai = (float)atof(strAi);/ 將字符串轉(zhuǎn)換成float數(shù)值int n = GetRoot(a0, a1, a2, root);if (n<1)strcpy(str, "方程無(wú)根!") ;e

14、lse sprintf(str,"方程的解為:%f, %f", root0, root1);InvalidateRect(hwnd, NULL, TRUE);case WM_PAINT:hdc = BeginPaint(hwnd, &ps);strcpy(strHint, "請(qǐng)輸入一元二次方程的3個(gè)系數(shù),中間用逗號(hào)分隔"); TextOut(hdc, 10, 40, strHint, strlen(strHint);TextOut(hdc, 10, 90, str, strlen(str);EndPaint(hwnd, &ps);retu

15、rn 0 ; case WM_DESTROY:/ 當(dāng)窗口關(guān)閉時(shí)產(chǎn)生的消息PostQuitMessage (0) ;return 0 ;return DefWindowProc (hwnd, message, wParam, lParam) ;/ 執(zhí)行默認(rèn)的消息處理(1)請(qǐng)仔細(xì)閱讀該程序,寫出該程序的設(shè)計(jì)思路。(2)參考上面的代碼,使用SDK方式編寫一窗口應(yīng)用程序,能實(shí)現(xiàn)簡(jiǎn)單的畫線功能。a.設(shè)計(jì)思想b.程序源代碼(要求有詳細(xì)的注釋)c.調(diào)試分析&運(yùn)行結(jié)果d. 用戶使用說(shuō)明(輸入 / 輸出規(guī)定)實(shí)驗(yàn)2 類和對(duì)象一、實(shí)驗(yàn)?zāi)康?1. 掌握類的定義方法,能合理指定類中成員的訪問(wèn)權(quán)限。 2. 學(xué)習(xí)

16、對(duì)象的說(shuō)明和使用方法。3. 靈活運(yùn)用類和對(duì)象的相關(guān)知識(shí)進(jìn)行綜合程序設(shè)計(jì)。二、實(shí)驗(yàn)知識(shí)點(diǎn)概念類是對(duì)同一類事物的抽象描述,其數(shù)據(jù)成員用于描述該類事物的屬性,成員函數(shù)完成修改、獲取屬性值或?qū)崿F(xiàn)基于屬性的某些操作。類不占用存儲(chǔ)空間。對(duì)象是類的實(shí)例,對(duì)象占用存儲(chǔ)空間。C+中類與結(jié)構(gòu)體并沒有本質(zhì)的區(qū)別,結(jié)構(gòu)體中也可以定義成員函數(shù),也可以指定各個(gè)成員的訪問(wèn)權(quán)限。兩者的唯一差異在于:結(jié)構(gòu)中成員的缺省訪問(wèn)權(quán)限是公有的,而類中成員的缺省訪問(wèn)權(quán)限是私有的。三、實(shí)驗(yàn)題目 1.設(shè)計(jì)個(gè)人信息類CPerson和學(xué)生成績(jī)類CScore。其中,CPerson類的數(shù)據(jù)成員是姓名和學(xué)號(hào);CScore類的數(shù)據(jù)成員除了三門成績(jī)外,還有

17、一個(gè)CPerson類對(duì)象stu。 2.設(shè)計(jì)數(shù)據(jù)操作類CStack,它使用數(shù)組來(lái)動(dòng)態(tài)存儲(chǔ)CScore類對(duì)象,并模擬棧的操作:push(壓入)與pop(彈出)。棧是一種“FILO”(先進(jìn)后出)或“LIFO”(后進(jìn)先出)的存儲(chǔ)結(jié)構(gòu)。如圖2-1所示,它占用一塊連續(xù)的內(nèi)存空間,有兩個(gè)端點(diǎn):一個(gè)端點(diǎn)是固定的,稱為棧底;另一個(gè)端點(diǎn)是活動(dòng)的,稱為棧頂。操作只能在棧頂進(jìn)行,建立一個(gè)棧先要開辟??臻g,且為了指示棧頂位置還要設(shè)定一個(gè)指針,稱為棧頂指針(圖2-1中的SP)。初建棧時(shí),棧頂指針SP指向棧底,如圖2-1(a)所示。當(dāng)向棧內(nèi)壓入一個(gè)元素d1時(shí),先向棧頂寫入d1,再將SP+,如圖2-1(b)所示。再壓入一個(gè)元

18、素d2時(shí),先向棧頂寫入d2,再將SP+,如圖2-1(c)所示??梢?,棧頂總是用于存放下一個(gè)元素。當(dāng)棧內(nèi)彈出一個(gè)元素d2時(shí),直接執(zhí)行SP-,然后返回SP中的內(nèi)容,如圖2-1(d)所示。這樣,當(dāng)再次壓入新元素時(shí),d2被覆蓋。SP棧底??臻g棧空間SPd1棧底 (a)空棧 (b)壓入d1 圖2-1 棧模型 ??臻gd2d1棧底棧底??臻gd1d2SPSP(c)壓入d2 (d)彈出d2 圖2-1 棧模型四、程序思路五、程序源代碼(要求有詳細(xì)的注釋)六、用戶使用說(shuō)明(輸入 / 輸出規(guī)定)七、調(diào)試分析&運(yùn)行結(jié)果實(shí)驗(yàn)3 繼承和派生一、實(shí)驗(yàn)?zāi)康?繼承與派生是面向?qū)ο蟮奶匦?,是面向?qū)ο蟪绦蛟O(shè)計(jì)模擬客觀世界的手

19、段之一,通過(guò)實(shí)驗(yàn)要求掌握:1. 掌握類的繼承與派生關(guān)系及實(shí)現(xiàn)方法,理解類的層次結(jié)構(gòu)。2. 掌握派生類構(gòu)造函數(shù)初始化基類成員的方法。3. 靈活運(yùn)用繼承和派生的相關(guān)知識(shí)進(jìn)行綜合程序設(shè)計(jì)。二、實(shí)驗(yàn)知識(shí)點(diǎn)概念類的繼承是新的類從已有類那里得到已有的特性。從已有的類產(chǎn)生新類的過(guò)程就是類的派生。在繼承過(guò)程中,原有的類或已經(jīng)存在的用來(lái)派生新類的類稱為基類或父類,而由已經(jīng)存在的類派生出的新類則稱為派生類或子類。 根據(jù)派生類所擁有的基類數(shù)目不同,可以分為單繼承和多繼承。一個(gè)類只有一個(gè)直接基類時(shí),稱為單繼承;而一個(gè)類同時(shí)有多個(gè)直接基類時(shí),則稱為多繼承。三、實(shí)驗(yàn)題目編寫一個(gè)程序?qū)崿F(xiàn)小型公司的工資管理。該公司主要有4類

20、人員:經(jīng)理、兼職技術(shù)人員、銷售員和銷售經(jīng)理。要求存儲(chǔ)這些人員的編號(hào)、姓名和月工資,計(jì)算月工資并顯示全部信息。月工資計(jì)算辦法是:經(jīng)理拿固定月薪8000元,兼職技術(shù)人員按每小時(shí)100元領(lǐng)取月薪,銷售員按該當(dāng)月銷售額的4%提成,銷售經(jīng)理即拿固定月工資也領(lǐng)取銷售提成,固定月工資為5000元,銷售提成為所管轄部門當(dāng)月銷售總額的5%。四、程序思路五、程序源代碼(要求有詳細(xì)的注釋)六、用戶使用說(shuō)明(輸入 / 輸出規(guī)定)七、調(diào)試分析運(yùn)行結(jié)果實(shí)驗(yàn)4 多態(tài)性和虛函數(shù)一、實(shí)驗(yàn)?zāi)康?1. 了解多態(tài)性在C+中的體現(xiàn)。2. 掌握虛函數(shù)的應(yīng)用。3. 理解抽象類。二、實(shí)驗(yàn)知識(shí)點(diǎn)概念l 多態(tài)性n 多態(tài)是指同樣的消息被不同類型的對(duì)象接收時(shí)導(dǎo)致不同的行為,所謂消息是指對(duì)類的成員函數(shù)調(diào)用,不同的行為是指不同的實(shí)現(xiàn),也就是調(diào)用了不同的函數(shù)。n 多態(tài)性可分為四類:重載多態(tài)、強(qiáng)制多態(tài)、包含多態(tài)和參數(shù)多態(tài)。n 多態(tài)從實(shí)現(xiàn)的角度來(lái)講可以劃分為兩類:編譯時(shí)的多態(tài)和運(yùn)行時(shí)的多態(tài)。編譯時(shí)的多態(tài)性是在編譯的過(guò)程中確定了同名操作的具體操作對(duì)象,也就是通過(guò)重載函數(shù)來(lái)實(shí)現(xiàn)的。運(yùn)行時(shí)的多

溫馨提示

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

評(píng)論

0/150

提交評(píng)論