實驗二繼承機(jī)制實驗報告_第1頁
實驗二繼承機(jī)制實驗報告_第2頁
實驗二繼承機(jī)制實驗報告_第3頁
實驗二繼承機(jī)制實驗報告_第4頁
實驗二繼承機(jī)制實驗報告_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、大學(xué)信息學(xué)院 實驗指導(dǎo)書 實驗名稱:類的繼承機(jī)制的實現(xiàn) 學(xué)時安排:3 實驗類別:設(shè)計性實驗 實驗要求:1 人 1 組 學(xué)號: 姓名 一、實驗?zāi)康?1.掌握單繼承和多重繼承的概念。 2.理解不同的繼承類型:public、protected 和 private,掌握何時使用何種繼 承類型。 3.掌握類層次中構(gòu)造函數(shù)的定義方式和建立對象時構(gòu)造和析構(gòu)次序 二、實驗原理介紹 通過繼承機(jī)制實現(xiàn)對類功能的擴(kuò)展,合理設(shè)計派生類的構(gòu)造函數(shù)、成員函 數(shù)。 三、實驗設(shè)備介紹 軟件需求: windows 或 linux 下的 c+編譯器 硬件需求: 對于硬件方面的要求,建議配置是 Pentium III 450 以上

2、的 CPU 處理器,64MB 以上的內(nèi)存,200MB 的自由硬盤空間、CD-ROM 驅(qū)動器、能支 持 24 位真彩色的顯示卡、彩色顯示器、打印機(jī)。 四、實驗內(nèi)容 實現(xiàn)對第一次實驗結(jié)果 Elevator 類的功能擴(kuò)展。在 Elevator 類已有功能的基 礎(chǔ)上派生 AdvancedElevator 類。AdvancedElevator 類可以實現(xiàn)當(dāng)多人在不同 樓層等待乘坐上行或下行的同一部電梯時,能夠合理的根據(jù)乘坐人的需求對電 梯經(jīng)停的樓層進(jìn)行排序。 要求: 1.為了實現(xiàn)上的方便性,我們假設(shè)同一組要求乘坐電梯的乘客或者都是上行, 或者都是下行。 2.在主函數(shù)中對該類的功能進(jìn)行測試,測試方法是首先

3、選擇在某一時間段一組 要乘坐電梯的乘客是上行還是下行,然后輸入組中乘客的人數(shù)及每一個乘客所 在樓層和目的樓層,由 AdvancedElevator 類實例化后的電梯對象在運(yùn)作的過程 中,如果電梯是上行,則能根據(jù)乘客所在的樓層和目的樓層從下向上依次??浚?如果電梯是下行,則能根據(jù)乘客所在的樓層和目的樓層從上向下依次???。 3.在測試的過程中,還需要注意測試當(dāng)多個用戶在同一樓層或多個用戶的目的 樓層為同一樓層時情況的處理。 提示: 為了方便描述乘客,我們可以定義一個 Person 類,主要描述每一個乘客所在樓 層和目的樓層。AdvancedElevator 類從 Elevator 類繼承而來,它從

4、某一個時 間段要乘坐電梯的每個乘客的信息當(dāng)中提取其所在樓層和目的樓層信息,然后 對它們進(jìn)行排序,再由繼承自基類 Elevator 的成員 setFloorNumber 對要停靠 的樓層序列依次輸出。 思考(可選)思考(可選) 如果加入乘客的體重信息,如何實現(xiàn)在停靠樓層對超載信息的提示。 五 程序清單 (el.cpp) #include Elevator.h Elevator:Elevator(int f) floor =f; up=false; down=false; currentFloor=1; ; void Elevator:setUpButton() if(currentFloorfl

5、oorNumber) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_IN TENSITY|FOREGROUND_RED|FOREGROUND_GREEN); cout您不能上行!endlfloor) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_IN TENSITY|FOREGROUND_RED|FOREGROUND_GREEN); cout沒這一層!太高啦!您想上天?!endlendl; else up=true; v

6、oid Elevator:setDownButton() if(currentFloorfloorNumber) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_IN TENSITY|FOREGROUND_RED|FOREGROUND_GREEN); cout您不能下行!endlendl; else if(floorNumber1) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_IN TENSITY|FOREGROUND_

7、RED|FOREGROUND_GREEN); cout沒這一層!太低啦!您想入地?!endlendl; else down=true; void Elevator:setFloorNumber(int floorNumber) if(up) for(;currentFloorfloorNumber;currentFloor+) cout-currentFloor-endl; Sleep(2000); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_IN TENSITY|FOREGROUND_RED); cou

8、t第currentFloor層到了endlfloorNumber;currentFloor-) cout-currentFloor-endl; Sleep(2000); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_IN TENSITY|FOREGROUND_RED); cout第currentFloor層到了endln; switch(n) case 1: cout當(dāng)前電梯停在currentFloor層endl; cout請輸入要進(jìn)入的樓層 floorNumber;setUpButton();setFlo

9、orNumber(floorNumber); break; case 2: cout當(dāng)前電梯停在currentFloor層endl; if(currentFloor=1) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_IN TENSITY|FOREGROUND_RED|FOREGROUND_GREEN); cout您已經(jīng)在第一層了!除非您自己打洞,不然我是不會帶你 下去的!endlendl;return; cout請輸入要進(jìn)入的樓層 floorNumber;setDownButton();setFloorN

10、umber(floorNumber); break; case 3:exit(0); default:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREG ROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN); cout只能選上升和下降!您難道還想玩電梯漂移? !endlendl; break; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_IN TENSITY|FOREGROUND_RED|F

11、OREGROUND_GREEN|FOREGROUND_BLUE); cout當(dāng)前電梯停在currentFloor層endl; void Elevator:charge() SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_IN TENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE); cout-請選擇操作-endl; cout| 1.上升 |endl; cout| 2.下降 |endl; cout| 3.退出 |endl; cout|-|endl; (m

12、ain.cpp) #include Elevator.h class AdvElevator:public Elevator public: AdvElevator(int f):Elevator(f)currentFloor=1; void setdata(); void setFloorNumber(); void choice(); private: int judge(int); int fln20; int w10; int N; int num; ; void AdvElevator:setFloorNumber() int i; if(up) coutendl; for(i=0;

13、currentFloor=floorNumber;currentFloor+) if(currentFloor=flni) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_IN TENSITY|FOREGROUND_RED); cout第currentFloor層到了endl; Sleep(2000); i+; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_IN TENSITY|FOREGROUND_RED|FOREGRO

14、UND_GREEN|FOREGROUND_BLUE); else cout-currentFloor-endl;Sleep(2000); currentFloor=floorNumber;coutendl;up=false; if(down) cout=floorNumber;currentFloor-) if(currentFloor=flni) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_IN TENSITY|FOREGROUND_RED); cout第currentFloor層到了endl; Sle

15、ep(2000);i- -; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_IN TENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE); else cout-currentFloor-endl;Sleep(2000); currentFloor=floorNumber;coutendl;down=false; void AdvElevator:setdata() cout請告訴我共有幾人num;coutendl; N=2*num; int i=0,

16、n=1,q=1; while(q=num) cout第q位乘客,請依次輸入你所在樓層、您想去的樓層及 您的體重(kg)flniflnnwi; if(judge(flnn)=1)q+;N-=2;flni=0;continue; weight+=wi; if(weight500) coutendl;cout第q位乘客,因超載原因,您不能上 endlendl; q+;N-=2;flni=0;weight-=wi;wi=0;continue; i+=2;n+=2;q+; for (i=0; iN-1; i+ ) for (q=i+1; qN; q+ ) if (flni= flnq ) for(n=q

17、; nN; n+ ) flnn = flnn+1; N-; q-; int j,k,temp; for(j=0;jN;j+) for(k=0;kflnk+1) temp=flnk; flnk=flnk+1; flnk+1=temp; if(fln0=0) num=100; if(up)floorNumber=flnN-1; if(down)floorNumber=fln0; int AdvElevator:judge(int n) if(up) if(currentFloorn) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),F

18、OREGROUND_IN TENSITY|FOREGROUND_RED|FOREGROUND_GREEN); cout您不能上行!別搗亂,給我出去!floor) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_IN TENSITY|FOREGROUND_RED|FOREGROUND_GREEN); cout沒這一層!太高啦!您想上天?!別搗亂,給我出去! endl; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_IN TE

19、NSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);return 1; if(down) if(currentFloorn) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_IN TENSITY|FOREGROUND_RED|FOREGROUND_GREEN); cout您不能下行!別搗亂,給我出去!endl; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_IN T

20、ENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);return 1; else if(n1) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_IN TENSITY|FOREGROUND_RED|FOREGROUND_GREEN); cout沒這一層!太低啦!您想入地?!別搗亂,給我出去! N; switch(N) case 1: up=true;cout當(dāng)前電梯停在currentFloor層 endl; setdata();if(num=100)b

21、reak;setFloorNumber(); break; case 2: down=true;cout當(dāng)前電梯停在currentFloor層 endl; if(currentFloor=1) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_IN TENSITY|FOREGROUND_RED|FOREGROUND_GREEN); cout您已經(jīng)在第一層了!除非您自己打洞,不然我是不會帶你 下去的!endlendl;down=false;return; setdata();if(num=100)break;setFloorNumber();break; case 3:exit(0)

溫馨提示

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

評論

0/150

提交評論