版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、VC+實驗報告班號:學號:姓名: 實驗1 VC+開發(fā)環(huán)境的熟悉和Windows編程基礎一、實驗目的 1. 熟悉Visual C+的開發(fā)環(huán)境2. 掌握用應用程序向導創(chuàng)建一個控制臺應用項目的方法。3. 掌握源代碼文件的新建、打開、保存和關閉等基本操作。4掌握用應用程序向導創(chuàng)建一個Windows應用項目的方法5. 掌握Visual C+項目的編譯、連接和執(zhí)行6. 掌握代碼簡單語法錯誤修正和調試的一般過程7掌握Windows程序運行基本原理。 8. 掌握使用SDK(Windows API)方式編寫Windows應用程序方法。 9. 掌握用應用程序向導創(chuàng)建一個Windows應用項目的方法。二、實驗知識點
2、概念Visual C+是Microsoft公司推出的目前使用極為廣泛的基于Windows平臺的可視化編程環(huán)境。由于其功能強大、靈活性好、完全可擴展以及具有強有力的Internet支持,在各種C+語言開發(fā)工具中脫穎而出,成為目前較為流行的C+語言集成開發(fā)環(huán)境。Windows程序設計不同于DOS下的程序設計,它是一種事件驅動的程序設計模式,主要是基于消息的。Windows SDK編程主要采用C+/C語言和Windows API進行Windows應用程序設計。三、實驗題目1. 控制臺應用程序編寫術語:“控制臺應用程序”是一個在仿DOS窗口(控制臺窗口)中運行的基于字符的程序,控制臺窗口將成為其標準輸
3、入和輸出裝置。由于這種模式的應用程序比Windows程序簡單,我們先選擇利用Visual C+來建立這樣一個應用,這樣使得我們可以將精力先投入到學習使用C+編程語言,而不需要把過多的精力投入到學習復雜的Windows編程中去。創(chuà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)編譯該程序,修改程序錯誤(2)分別在創(chuàng)建對象,構造函數處設置斷點,調試運行。(3)寫出程序運行結果2.Windows SDK應用程序編寫下面是一個SDK應用程序的示例,該程序的功能是構造一個編輯框控件和一個按鈕。編輯框用于輸入一元二次方程
5、的系數,各系數之間用逗號分隔,當單擊“計算”按鈕,獲取方程系數,然后將求得的根通過TextOut顯示在窗口客戶區(qū)中。#include <windows.h>#include <math.h>#include <stdio.h>/ 求一元二次方程的根,函數返回根的個數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;/ 無根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);/ 窗口過程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)/ 注冊窗口 MessageBox (NULL, "窗口注冊失??!", &quo
9、t;HelloWin", 0) ; return 0 ; / 創(chuàng)建窗口 hwnd = CreateWindow ("SDKWin", / 窗口類名 "實驗1Windows編程基礎",/ 窗口標題 WS_OVERLAPPEDWINDOW, / 窗口樣式 CW_USEDEFAULT, / 窗口最初的 x 位置 CW_USEDEFAULT, / 窗口最初的 y 位置 CW_USEDEFAULT, / 窗口最初的 x 大小 CW_USEDEFAULT, / 窗口最初的 y 大小 NULL, / 父窗口句柄 NULL, / 窗口菜單句柄 hInstanc
10、e, / 應用程序實例句柄 NULL) ; / 創(chuàng)建窗口的參數 ShowWindow (hwnd, nCmdShow) ;/ 顯示窗口 UpdateWindow (hwnd) ;/ 更新窗口,包括窗口的客戶區(qū) while (GetMessage (&msg, NULL, 0, 0) TranslateMessage (&msg) ;/ 轉換某些鍵盤消息 DispatchMessage (&msg) ;/ 將消息發(fā)送給窗口過程,這里是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)建產生的消息hwndEdit = CreateWindow("edit", NULL, WS_CHILD|WS_VISIBLE|WS_ BORDER,10, 60, 200, 25, hwnd,
12、 NULL, NULL, NULL );hwndButton = CreateWindow("button", "計 算",WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,240, 60, 80, 25, hwnd, NULL, NULL, NULL );return 0 ; case WM_COMMAND:/ 命令消息,控件產生的通知代碼在wParam的高字中if (HWND)lParam = hwndButton )&&( HIWORD(wParam) = BN_CLICKED )/ 獲取編輯框控件的內容,并將其轉
13、換成float數值GetWindowText( hwndEdit, strEdit, 80); / 獲取編輯框內容/ 分隔字符串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);/ 將字符串轉換成float數值int n = GetRoot(a0, a1, a2, root);if (n<1)strcpy(str, "方程無根!") ;e
14、lse sprintf(str,"方程的解為:%f, %f", root0, root1);InvalidateRect(hwnd, NULL, TRUE);case WM_PAINT:hdc = BeginPaint(hwnd, &ps);strcpy(strHint, "請輸入一元二次方程的3個系數,中間用逗號分隔"); TextOut(hdc, 10, 40, strHint, strlen(strHint);TextOut(hdc, 10, 90, str, strlen(str);EndPaint(hwnd, &ps);retu
15、rn 0 ; case WM_DESTROY:/ 當窗口關閉時產生的消息PostQuitMessage (0) ;return 0 ;return DefWindowProc (hwnd, message, wParam, lParam) ;/ 執(zhí)行默認的消息處理(1)請仔細閱讀該程序,寫出該程序的設計思路。(2)參考上面的代碼,使用SDK方式編寫一窗口應用程序,能實現簡單的畫線功能。a.設計思想b.程序源代碼(要求有詳細的注釋)c.調試分析&運行結果d. 用戶使用說明(輸入 / 輸出規(guī)定)實驗2 類和對象一、實驗目的 1. 掌握類的定義方法,能合理指定類中成員的訪問權限。 2. 學習
16、對象的說明和使用方法。3. 靈活運用類和對象的相關知識進行綜合程序設計。二、實驗知識點概念類是對同一類事物的抽象描述,其數據成員用于描述該類事物的屬性,成員函數完成修改、獲取屬性值或實現基于屬性的某些操作。類不占用存儲空間。對象是類的實例,對象占用存儲空間。C+中類與結構體并沒有本質的區(qū)別,結構體中也可以定義成員函數,也可以指定各個成員的訪問權限。兩者的唯一差異在于:結構中成員的缺省訪問權限是公有的,而類中成員的缺省訪問權限是私有的。三、實驗題目 1.設計個人信息類CPerson和學生成績類CScore。其中,CPerson類的數據成員是姓名和學號;CScore類的數據成員除了三門成績外,還有
17、一個CPerson類對象stu。 2.設計數據操作類CStack,它使用數組來動態(tài)存儲CScore類對象,并模擬棧的操作:push(壓入)與pop(彈出)。棧是一種“FILO”(先進后出)或“LIFO”(后進先出)的存儲結構。如圖2-1所示,它占用一塊連續(xù)的內存空間,有兩個端點:一個端點是固定的,稱為棧底;另一個端點是活動的,稱為棧頂。操作只能在棧頂進行,建立一個棧先要開辟??臻g,且為了指示棧頂位置還要設定一個指針,稱為棧頂指針(圖2-1中的SP)。初建棧時,棧頂指針SP指向棧底,如圖2-1(a)所示。當向棧內壓入一個元素d1時,先向棧頂寫入d1,再將SP+,如圖2-1(b)所示。再壓入一個元
18、素d2時,先向棧頂寫入d2,再將SP+,如圖2-1(c)所示??梢?,棧頂總是用于存放下一個元素。當棧內彈出一個元素d2時,直接執(zhí)行SP-,然后返回SP中的內容,如圖2-1(d)所示。這樣,當再次壓入新元素時,d2被覆蓋。SP棧底??臻g棧空間SPd1棧底 (a)空棧 (b)壓入d1 圖2-1 棧模型 ??臻gd2d1棧底棧底棧空間d1d2SPSP(c)壓入d2 (d)彈出d2 圖2-1 棧模型四、程序思路五、程序源代碼(要求有詳細的注釋)六、用戶使用說明(輸入 / 輸出規(guī)定)七、調試分析&運行結果實驗3 繼承和派生一、實驗目的 繼承與派生是面向對象的特性,是面向對象程序設計模擬客觀世界的手
19、段之一,通過實驗要求掌握:1. 掌握類的繼承與派生關系及實現方法,理解類的層次結構。2. 掌握派生類構造函數初始化基類成員的方法。3. 靈活運用繼承和派生的相關知識進行綜合程序設計。二、實驗知識點概念類的繼承是新的類從已有類那里得到已有的特性。從已有的類產生新類的過程就是類的派生。在繼承過程中,原有的類或已經存在的用來派生新類的類稱為基類或父類,而由已經存在的類派生出的新類則稱為派生類或子類。 根據派生類所擁有的基類數目不同,可以分為單繼承和多繼承。一個類只有一個直接基類時,稱為單繼承;而一個類同時有多個直接基類時,則稱為多繼承。三、實驗題目編寫一個程序實現小型公司的工資管理。該公司主要有4類
20、人員:經理、兼職技術人員、銷售員和銷售經理。要求存儲這些人員的編號、姓名和月工資,計算月工資并顯示全部信息。月工資計算辦法是:經理拿固定月薪8000元,兼職技術人員按每小時100元領取月薪,銷售員按該當月銷售額的4%提成,銷售經理即拿固定月工資也領取銷售提成,固定月工資為5000元,銷售提成為所管轄部門當月銷售總額的5%。四、程序思路五、程序源代碼(要求有詳細的注釋)六、用戶使用說明(輸入 / 輸出規(guī)定)七、調試分析運行結果實驗4 多態(tài)性和虛函數一、實驗目的 1. 了解多態(tài)性在C+中的體現。2. 掌握虛函數的應用。3. 理解抽象類。二、實驗知識點概念l 多態(tài)性n 多態(tài)是指同樣的消息被不同類型的
21、對象接收時導致不同的行為,所謂消息是指對類的成員函數調用,不同的行為是指不同的實現,也就是調用了不同的函數。n 多態(tài)性可分為四類:重載多態(tài)、強制多態(tài)、包含多態(tài)和參數多態(tài)。n 多態(tài)從實現的角度來講可以劃分為兩類:編譯時的多態(tài)和運行時的多態(tài)。編譯時的多態(tài)性是在編譯的過程中確定了同名操作的具體操作對象,也就是通過重載函數來實現的。運行時的多態(tài)性是在程序運行過程中才動態(tài)地確定操作所針對的具體對象,就是用虛函數來實現的。l 虛函數n 虛函數是重載的另一種表現形式,它是一種動態(tài)的重載方式,它提供了一種更為靈活的多態(tài)性機制。虛函數允許函數調用與函數體之間的聯系在運行時才建立,也就是在運行時才決定如何動作,即
22、所謂的“動態(tài)連接”。n 一般虛函數成員的定義語法是:n virtual 函數類型 函數名(形參表)n 虛函數的定義實際就是在原有的普通函數成員前面使用virtual關鍵字來限定,虛函數聲明只能出現在類定義中的函數原型聲明中,而不能在成員的函數體中。n 運行過程中的多態(tài)需要滿足三個條件,首先類之間應滿足賦值兼容規(guī)則,其二是要聲明虛函數,第三是要由成員函數來調用或者是通過指針、引用來訪問虛函數。三、實驗題目1.將實驗3的題目運用多態(tài)性進行改進。2.以下兩題選擇一題實現(也可以兩題都做)(1)編寫一個程序實現圖書和雜志銷售管理。當輸入一系列圖書和雜志銷售記錄后,將銷售良好(圖書每月售500本以上,雜志每月售2500本以上)的圖書和雜志名稱顯示出來。(2)定義一個抽象類CShape,包括純虛函數Area()(用來計算面積)和SetData(用來重設形狀大?。?。然后派生出三角形CTriangle類,矩形CRect類,圓CCircle類,分別求其面積。最后定義一個CArea類,計算這幾個形狀的面積之和,各形狀的數據通過CArea類構造函數或成員函數來設置。編寫一個完整的程序。四、程序思路五、程序源代碼(要有注釋)六、用戶使用說明(輸入 / 輸出規(guī)定)七、調試分析運行結果實驗5 輸入/輸出流庫(選做)一、實驗目的1、掌握文件流的打開、關閉及使
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年版標準股權轉讓協(xié)議范本版B版
- 2024年鐵路貨物裝運協(xié)議3篇
- 二零二五年度2025版全面保障二婚離婚財產協(xié)議書
- 2024年碳排放交易合同:企業(yè)間碳排放權買賣與減排目標
- 2024年環(huán)保設備維修工程師聘用合同協(xié)議3篇
- 2025年跨境消費貸款合同示范文本3篇
- 2024年葡萄采摘與生態(tài)旅游開發(fā)合作合同3篇
- 2025年度IDC數據中心智能監(jiān)控服務協(xié)議3篇
- 2025年度新材料研發(fā)項目勞動者二零二五版勞動協(xié)議合同3篇
- 2024年新型電力設備安裝服務協(xié)議模板版B版
- 中班聽課記錄15篇
- GB/T 8750-2022半導體封裝用金基鍵合絲、帶
- 體育科學研究方法學習通課后章節(jié)答案期末考試題庫2023年
- 2023天津市和平區(qū)七年級上學期語文期末試卷及答案
- 校園藝術節(jié)比賽評分表
- 挖機租賃協(xié)議(通用6篇)
- 院內按病種分值付費(DIP)專題培訓
- 有機磷中毒專家共識
- 2023-2024學年遼寧省調兵山市小學數學五年級上冊期末高分通關試題
- 地方公務員考試:2022西藏真題及答案
- 電化學培優(yōu)專題
評論
0/150
提交評論