版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 特殊業(yè)務(wù)軟件操作截圖保險(xiǎn)增員匯繳銷售訂單
- 解除房屋買賣合同正式聲明
- 深入剖析采購(gòu)合同
- 私人借款抵押合同書模板
- 中藥材種植銷售合同
- 合作開店合同格式
- 銀行循環(huán)借款合同樣式
- (完整版)人教版初中英語(yǔ)中考復(fù)習(xí)知識(shí)點(diǎn)歸納總結(jié)全冊(cè)
- 期中模擬測(cè)試卷(1-4單元)(試題)-2024-2025學(xué)年人教版數(shù)學(xué)六年級(jí)上冊(cè)
- 廣東省肇慶市2024-2025年高中地理 限時(shí)訓(xùn)練十六評(píng)講教案 新人教版必修2
- 2024年上海市各區(qū)初三語(yǔ)文一模卷試題匯編之記敘文含答案
- DZ∕T 0227-2010 地質(zhì)巖心鉆探規(guī)程(正式版)
- 2024年社區(qū)工作者考試必背1000題題庫(kù)【含答案】
- 2024年全國(guó)高考物理電學(xué)實(shí)驗(yàn)真題(附答案)
- 20以內(nèi)加減法口算題(10000道)(A4直接打印-每頁(yè)100題)
- 2021《普通話水平測(cè)試管理規(guī)定(2021)》全文學(xué)習(xí)材料PPT課件(帶內(nèi)容)
- 食品欺詐防范脆弱性評(píng)價(jià)控制程序
- 我國(guó)社會(huì)主義政治制度
- 最新AutoLisp函數(shù)大全
- 代碼審計(jì)報(bào)告9頁(yè)
- 機(jī)器設(shè)備租賃協(xié)議
評(píng)論
0/150
提交評(píng)論