2023年實驗二繼承機制實驗報告_第1頁
2023年實驗二繼承機制實驗報告_第2頁
2023年實驗二繼承機制實驗報告_第3頁
2023年實驗二繼承機制實驗報告_第4頁
2023年實驗二繼承機制實驗報告_第5頁
已閱讀5頁,還剩12頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

浙江理工大學信息學院實驗指導書實驗名稱:類的繼承機制的實現學時安排:3實驗類別:設計性實驗實驗規定:1人1組學號:姓名一、實驗目的.掌握單繼承和多重繼承的概念。.理解不同的繼承類型:pubIic、protected和private,掌握何時使用何種繼承類型。.掌握類層次中構造函數的定義方式和建立對象時構造和析構順序二、實驗原理介紹通過繼承機制實現對類功能的擴展,合理設計派生類的構造函數、成員函數。三、實驗設備介紹軟件需求:windows或Iinux下的c++編譯器硬件需求:對于硬件方面的規定,建議配置是PentiumIII450以上的CPU解決器,64MB以上的內存,200MB的自由硬盤空間、CD-ROM驅動器、能支持24位真彩色的顯示卡、彩色顯示器、打印機。四、實驗內容實現對第一次實驗結果Elevator類的功能擴展。在EIevator類已有功能的if(down){cout<<endI;for(i二N-1;currentFIoor>=fIoorNumber;currentFloor—)(if(currentFIoor==fIn[i])(SetConsoIeTextA11ribute(GetStdHandIe(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);cout<<"第"VVcurrentFloorV<"層至了"<<endI;SIeep(2023);i—;SetConsoleTextAttribute(GetStdHandIe(STD_OUTPUT_HANDLE),F0REGROUND_INTENSITY|F0REGR0UND_REDIFOREGR0UND_GREEN|F0REGROUND_BLUE);)eIse{cout<<"—"?currentFIoor?"一"?endl;SIeep(2O23);}}currentFIoor=fIoorNumber;cout<<endI;down=faIse;)}voidAdvEIevator::setdata()(cout<<"請告訴我共有幾人"?endI;intweight=0;cin?num;cout<<endI;N=2*num;inti二0,n=1,q=1;while(q<=num)(Cout<v"第”<?<<“位乘客,請依次輸入你所在樓層、您想去的樓層及您的體重(kg)"?endI;cin?fIn[i]?fln[n]?w[i];if(judge(fln[n])==1)(q++;N-=2;fln[i]='\0';continue;}weight+二w[i];if(weight>500){cout<Vendl;cout<<"第"<<q<<"位乘客,因超載因素,您不能上"<<endI?endI;q++;N-=2;fln[i]="\O';weight—=w[i];w[i]=0;continue;)i+=2;n+=2;q++;)for(i=O;i<N—1;i++)for(q=i+1;q<N;q++)oif(fln[i]==fIn[q])(ofor(n=q;n<N;n++)fln[n]=fIn[n+1];。N——;intj,k,temp;for(j=0;j<N;j++)for(k=0;k<N-1-j;k++)(if(fln[k]>fIn[k+1])(temp=fIn[k];fln[k]=fIn[k+1];fln[k+1]=temp;)1if(fIn[0]=='\O')num=100;if(up)fIoorNumber=fIn[N-1];if(down)fIoorNumber=fIn[0];)intAdvEIevator::judge(intn)(if(up)(if(currentFIoor>n)(SetConsoIeTextAttribute(GetStdHandIe(STD_0UTPUT_HANDLE),FOREGROUND_INTENSITYIFOREGROUND_RED|FOREGROUND_GREEN);cout<<"您不能上行!別搗亂,給我出去!"V<endl;SetConsoIeTextAttribute(GetStdHandIe(STD_OUTPUT_HANDLE),FOREGR0UND_INTENSITYIFOREGR0UND_RED|F0REGROUND_GREEN|FOREGROUND_BLUE);return1;)elseif(n>floor)(SetConsoIeTextAttribute(GetStdHandIe(STD_0UTPUT_HANDLE),FOREGR0UND_INTENSITY|F0REGR0UND_RED|F0REGROUND_GREEN);cou”沒這一層!太高啦!您想上天?!別搗亂,給我出去!”<<endI;SetConsole!extAttribute(GetStdHandIe(STD_0UTPUT_HANDLE),F0REGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);return1;)}if(down)(if(currentFIoor<n){SetConsoIeTextAttribute(GetStdHandIe(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_REDIFOREGROUND_GREEN);cout<<“您不能下行!別搗亂,給我出去!“<<endl;SetConsoIeTextAttribute(GetStdHandIe(STDOUTPUT_HANDLE),FOREGR0UND_INTENSITY|FOREGROUND_REDIFOREGROUND_GREENIFOREGROUND_BLUE);return1;)eIseif(n<1)(SetConsoIeTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_REDIFOREGROUNDGREEN);cout?"沒這一層!太低啦!您想入地?!別搗亂,給我出去!”<<endI;SetConsoleTextAttribute(GetStdHandIe(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);return1;1)return0;)voidAdvEIevator::choice()(cin>>N;switch(N)(up=true;cout<<"當前電梯停在<<currentFIoor<<"層"<<endI;setdata();if(num==100)break;setFloorNumber();break;:down=true;coutV<”當前電梯停在"<VcurrentFIoor<<"層"<<endI;if(currentFIoor==1)(SetConsoIeTextA11ribute(GetStdHandIe(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_REDIFOREGROUND_GREEN);coutV<”您已經在第一層了!除非您自己打洞,不然我是不會帶你下去的!"<<endl?endI;down=false;return;)setdata0;if(num==100)break;setFIoorNumber();break;case3:exit(0);defau11:SetConsoIeTextAttribute(GetStdHandie(STD_0UTPUT_HANDLE),FOREGROUND_INTENSITYIF0REGROUND_REDIFOREGROUND_GREEN);cout<V"只能選上升和下降!您難道還想玩電梯漂移?!"<<endI<<endI;break;]SetConsoIeTextAttribute(GetStdHandIe(STD_0UTPUT_HANDLE),FOREGR0UND_INTENSITYIF0REGROUND_REDIFOREGROUND_GREENIFOREGROUND.BLUE);

cout<<cout<<cout<<"?endl;)cout<<"?endl;intmain()longa;time(&a);intfloor;coirt<<"告訴我總共有幾層"<VendI;cin?fIoor;AdvElevatorel(floor);SetConsoIeTextAttribute(GetStdHandIe(STD_OUTPUT_HANDLE),FOREGROUND,INTENSITY|FOREGROUND_RED|F0REGROUND_GREEN|FOREGROUND_BLUE);cout?ctime(&a)?endI;coutVV"本電梯共“<<fIoor<<"層,且最多上10人,歡迎您的使用(限重500kg)"<<endI?endI;while(1)(el.charge。;el.AdvEIevator::choice();)return0;)六運營結果

LlDAC++\?a2\電梯\bin\Debug\C++?Bt2.exe■訴我總共有幾百10SunApr1613:44:092017電梯共10層,且最多上10人,歡迎您的使用(限重500kg)--作馨降出擇上由選LZ3.-作馨降出擇上由選-作馨降出擇上由選LZ3.第1位乘客,請依次輸入你所在樓層、您想去的樓層及您的體重(kg)13300第第1位乘客,請依次輸入你所在樓層、您想去的樓層及您的體重(kg)13300第2位乘客,請依次輸入你所在樓層、您想去的樓層及您的體重(kg)123002位乘客,因超期原因,您不能上?雪需客’請依次輸入你所在樓層、您想去的樓層及您的體重(加爵翻擇上.選L23.擇上.選L23.擇上.選L23.次降出1位乘客,請依次輸入你所在樓層、您想去的樓層及您的體重(kg)43502位乘客,請依次輸入你所在樓層、您想去的樓層及您的體重(kg)31501位乘客,請依次輸入你所在樓層、您想去的樓層及您的體重(kg)1位乘客,請依次輸入你所在樓層、您想去的樓層及您的體重(kg)43502位乘客,請依次輸入你所在樓層、您想去的樓層及您的體重(kg)3150塞4層到了第3層到了2第1層到了第1第1位乘客,請依次輸入你所在樓層、您想去的楂層及您的體重(kg)11150簧京藕告勰霸礴副饕i蠢勰您的體重(.)2350一層層1一一一層層1一-—請選擇操作-一mm前電曾住在1層

您已經在第一一一m前電曾住在1層

m前電曾住在1層

您已經在第一一一層了!除非您自己打洞,不然我是不會帶你下去的!一告層喙國有停共I靄客,請依次輸入你所在樓層、您想去的樓層及您的體重(kg)肌層到了..2育3層到了■?一請我鬻作-i3:fl1位乘客,請依次輸入你所在樓層、您想去的樓層及您的體重(kg)3050沒這一層!太低啦!您想入地?!別搗亂,給我出去!fl七實驗心得復習了有關數組的內容,比如排序,去除反復元素;費了很大精力來改,但總覺得寫得不好,代碼太長,內容冗雜。有待進步,加強。基礎上派生AdvancedEIevator類。AdvancedElevator類可以實現當多人在不同樓層等待乘坐上行或下行的同一部電梯時,可以合理的根據乘坐人的需求對電梯經停的樓層進行排序。規定:.為了實現上的方便性,我們假設同一組規定乘坐電梯的乘客或者都是上行,或者都是下行。.在主函數中對該類的功能進行測試,測試方法是一方面選擇在某一時間段一組要乘坐電梯的乘客是上行還是下行,然后輸入組中乘客的人數及每一個乘客所在樓層和目的樓層,由AdvancedElevator類實例化后的電梯對象在運作的過程中,假如電梯是上行,則能根據乘客所在的樓層和目的樓層從下向上依次停靠;假如電梯是下行,則能根據乘客所在的樓層和目的樓層從上向下依次停靠。.在測試的過程中,還需要注意測試當多個用戶在同一樓層或多個用戶的目的樓層為同一樓層時情況的解決。提醒:為了方便描述乘客,我們可以定義一個Person類,重要描述每一個乘客所在樓層和目的樓層。AdvancedElevator類從Elevator類繼承而來,它從某一個時間段要乘坐電梯的每個乘客的信息當中提取其所在樓層和目的樓層信息,然后對它們進行排序,再由繼承自基類EIevator的成員setFloorNumber對要停靠的樓層序列依次輸出。思考(可選)假如加入乘客的體重信息,如何實現在停靠樓層對超載信息的提醒。五程序清單

main.cpi)el.cpp±Elevator.hx]1#ifndefELEVATOR_H2#defineELEVATOR耳3#include<iostream>4#include<ctime>5#include<windows.h>67usingnamespacestd;8classElevator9£押10protected:11intfloorNumber;12intcurrentFloor;13intfloor://二^^14intn;15boolup;16booldown;17public:18Elevator(intfloor);19voidsetUpButton();20voidsetDownButton();21voidsetFloorNumber(intfloorNumber);22voidcharge();23voidchoice();24intgetcurrentfloor(){returncurrentFloor;}25}i26#endif(el.cpp)#incIude"EIevator.hEIevator::Elevator(intf)(floor=f;up二faIse;down=faIse;currentFIoor=1;I;voidEIevator::setUpButton()if(currentFIoor>fIoorNumber)SetConsoleTextAttribute(GetStdHandIe(STD_0UTPUT.HANDLE),FOREGROUND_INTENSITYIFOREGROUND_RED|FOREGROUND_GREEN);cout<<"您不能上行!"<<endI?endI;}eIseif(fIoorNumber>fIoor)(SetConsoleTextAttribute(GetStdHandIe(STDOUTPUT_HANDLE),F0REGR0UND_INTENSITY|FOREGROUND_RED|FOREGROUNDGREEN);coutV〈”沒這一層!太高啦!您想上天?!"<Xendl<VendI;)elseup二true;)voidElevator::setDownButton()if(currentFIoor<fIoorNumber)SetConsoIeTextAttribute(GetStdHandIe(STD_OUTPUT_HANDLE),FOREGROUND_lNTENSITY|FOREGROUND_RED|FOREGROUNDGREEN);cout<<"您不能下行!"<VendlVVendI;eIseif(fIoorNumber<1)(SetConsoIeTextAttribute(GetStdHandIe(STD_OUTPUT_HANDLE),FOREGROUND,INTENSITYIF0REGROUND_RED|FOREGROUND_GREEN);cout<<"沒這一層!太低啦!您想入地?!"VVendI<<endl;)elsedown=true;)voidEIevator::setFloorNumber(intfloorNumber)(if(up)(for(;currentFIoor<fIoorNumber;currentFloor++){cout?"—"?currentFIoor<<"—"<<endI;Sleep(2023);}SetConsoIeTextAttribute(GetStdHandIe(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITYIFOREGROUND_RED);cout?"H"<<currentFIoor<V"層至Ij了"<<endI<<endI;up=faIse;if(down)for(;currentFloor>fIoorNumber;currentFIoor-){cout<<"一一"<<currentFIoor?"一一"?endI;Sleep(2023);}SetConsoIeTextAttribute(GetStdHandIe(STD_0UTPUT_HANDLE)fFOREGR0UND_lNTENSITY|FOREGROUND_RED);cout<<"第"<<currentFloor?"層到了"V<endI<<endI;down=faIse;))voidEIevator::choice(){cin?n;switch(n)(:cout<<"當前電梯停在"<<currentFIoor<<"層"<<endI;cout<<"請輸入要進入的樓層"VVendI;cin?floorNumber;setllpButton();setFIoorNumber(floorNumber);break;cout<<"當前電梯停在“<611「rentFIoor<<"層if(currentFloor==1)SetConsoIeTextA11ribute(GetStdHandIe(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|F0REGROUND_GREEN);cout<<”您已經在第一層了!除非您自己打洞,不然我是不會帶你下去的!"?endI?endI;return;)cout?"請輸入要進入的樓層"vvendI;cin?floorNumber;setDownButton();setFIoorNumber(fIoorNumber);break;case3:exit(0);defauIt:SetConsoIeTextAttribute(GetStdHandIe(STD_OUTPUT.HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);coutV<“只能選上升和下降!您難道還想玩電梯漂移?!"<<endI<<endI;break;)SetConsoIeTextAttribute(GetStdHandIe(STD_OUTPUT_HANDLE),FOREGROUND_lNTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);cout<V"當前電梯停在“<VcurrentFIoor?"J§"<<endI;voidElevater::charge()(SetConsoleTextAttribute(GetStdHandIe(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FORE

溫馨提示

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

評論

0/150

提交評論