狠狠干影院/欧美午夜电影在线观看/高黄文/国产精品一区二区在线观看完整版

實驗二,,繼承機制實驗報告

| 瀏覽次數:

 浙江理工大學信息學院 實驗指導書 實驗名稱:

 類得繼承機制得實現

 學時安排:3 實驗類別: 設計性實驗

  實驗要求:1 人1 組

  學號:

 姓名

   ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

 一、實驗目得 1、掌握單繼承與多重繼承得概念。

 2、理解不同得繼承類型:public、protected與 private,掌握何時使用何種繼承類型。

 3、掌握類層次中構造函數得定義方式與建立對象時構造與析構次序 二、實驗原理介紹 通過繼承機制實現對類功能得擴展,合理設計派生類得構造函數、成員函數。

 三、實驗設備介紹 軟件需求:

 windows 或 linux 下得c++編譯器 硬件需求:

 對于硬件方面得要求,建議配置就是 Pentium III 450以上得CPU 處理器,64MB 以上得內存,200MB 得自由硬盤空間、CD-ROM 驅動器、能支持24 位真彩色得顯示卡、彩色顯示器、打印機。

 四、實驗內容 實現對第一次實驗結果Elevator 類得功能擴展。在Elevator類已有功能得基礎上派生 AdvancedElevator 類。AdvancedElevator 類可以實現當多人在不同樓層等待乘坐上行或下行得同一部電梯時,能夠合理得根據乘坐人得需求對電梯經停得樓層進行排序。

 要求:

 1、為了實現上得方便性,我們假設同一組要求乘坐電梯得乘客或者都就是上行,或者都就是下行。

 2、在主函數中對該類得功能進行測試,測試方法就是首先選擇在某一時間段一組要乘坐電梯得乘客就是上行還就是下行,然后輸入組中乘客得人數及每一個乘客所在樓層與目得樓層,由 AdvancedElevator 類實例化后得電梯對象在運作得過程中,如果電梯就是上行,則能根據乘客所在得樓層與目得樓層從下向上依次停靠;如果電梯就是下行,則能根據乘客所在得樓層與目得樓層從上向下依次停靠. 3、在測試得過程中,還需要注意測試當多個用戶在同一樓層或多個用戶得目得樓層為同一樓層時情況得處理. 提示:

 為了方便描述乘客,我們可以定義一個Person 類,主要描述每一個乘客所在樓層與目得樓層。AdvancedElevator 類從 Elevator 類繼承而來,它從某一個時間段要乘坐電梯得每個乘客得信息當中提取其所在樓層與目得樓層信息,然后對它們進行排序,再由繼承自基類Elevator得成員 setFloorNumber對要停靠得樓層序列依次輸出。

 思考 (可選)

 如果加入乘客得體重信息,如何實現在停靠樓層對超載信息得提示. 五 程序清單

  (el、cpp)

 #include "Elevator、h" Elevator::Elevator(int f) {

  floor =f;

  up=false;

  down=false;

  currentFloor=1; }; void Elevator::setUpButton()

 {

  if(currentFloor>floorNumber)

  {

  SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);

 cout<<"您不能上行!"〈〈endl〈<endl;

  }

  else if(floorNumber>floor)

  {

  SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);

  cout〈〈"沒這一層!太高啦!您想上天?!"<<endl<〈endl;

  }

  else up=true; } void Elevator::setDownButton()

 {

  if(currentFloor<floorNumber)

  {

  SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);

  cout〈<"您不能下行!”<<endl〈<endl;

  }

  else if(floorNumber〈1)

  {

  SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);

  cout〈<"沒這一層!太低啦!您想入地?!”<〈endl<<endl;

  }

  else down=true; }

 void Elevator::setFloorNumber(int floorNumber)

 {

  if(up)

  {

  for(;currentFloor<floorNumber;currentFloor++)

  {

  cout〈〈"—-"〈〈currentFloor<〈”--"<〈endl;

  Sleep(2000);}

  SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);

  cout<〈”第”〈<currentFloor〈<"層到了”〈〈endl<〈endl;

  up=false;

  }

  if(down)

  {

  for(;currentFloor>floorNumber;currentFloor-—)

  {

  cout〈〈"--”<<currentFloor〈<"--"<〈endl;

  Sleep(2000);}

  SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);

  cout<<”第”〈〈currentFloor<<”層到了”<〈endl<<endl;

  down=false;

  } } void Elevator::choice() {

  cin>>n;

  switch(n)

  {

 case 1: cout<〈”當前電梯停在"<<currentFloor〈〈"層"<〈endl;

  cout<〈"請輸入要進入得樓層”<<endl;cin〉〉floorNumber;setUpButton();setFloorNumber(floorNumber); break;

  case 2:

 cout<<”當前電梯停在”<<currentFloor<<"層"<<endl;

  if(currentFloor==1)

  {

  SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);

  cout<〈”您已經在第一層了!除非您自己打洞,不然我就是不會帶您下去得!"<〈endl<〈endl;return;

  }

 cout〈<”請輸入要進入得樓層”<<endl;cin〉〉floorNumber;setDownButton();setFloorNumber(floorNumber);break;

  case 3:exit(0);

  default:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);

  cout〈<"只能選上升與下降!您難道還想玩電梯漂移?!"〈<endl<<endl; break;

  }

  SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);

  cout<<”當前電梯停在”〈〈currentFloor〈<"層”<〈endl;

 } void Elevator::charge() {

 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);

  cout<<"-—-請選擇操作—--"〈<endl;

  cout〈〈”|

 1、上升

 |”〈〈endl;

  cout<〈"|

 2、下降

 |"<〈endl;

  cout〈<”|

 3、退出

 |”<<endl;

  cout<<"|--------——-—--|"<<endl; } (main、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 fln[20];

  int w[10];

  int N;

  int num; }; void AdvElevator::setFloorNumber()

 {

  int i;

  if(up)

  {cout〈〈endl;

  for(i=0;currentFloor<=floorNumber;currentFloor++)

  {

  if(currentFloor==fln[i])

  {

  SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);

  cout〈〈"第”〈<currentFloor〈<"層到了"<〈endl;

 Sleep(2000);i++;

  SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);

  }

  else {cout<〈"--”<〈currentFloor〈〈"—-”〈<endl;Sleep(2000);}

  } currentFloor=floorNumber;cout〈〈endl;up=false;

  }

  if(down)

  {cout〈<endl;

  for(i=N—1;currentFloor>=floorNumber;currentFloor—-)

  {

  if(currentFloor==fln[i])

  {

  SetConsoleTextAttribute(GetStdHandle(STD_

 OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);

  cout<<"第"<<currentFloor<〈"層到了"<〈endl;

 Sleep(2000);i-—;

  SetConsoleTextAttribute (GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);

  }

  else{

  cout<<"—-”〈〈currentFloor〈<”——”<〈endl;Sleep(2000);}

  }currentFloor=floorNumber;cout<<endl;down=false;

  } } void AdvElevator::setdata()

 {

  cout<<"請告訴我共有幾人"<〈endl;

  int weight=0;

  cin>〉num;cout<〈endl;

  N=2*num;

  int i=0,n=1,q=1;

  while(q<=num)

  {

  cout<<”第"<〈q〈〈"位乘客,請依次輸入您所在樓層、您想去得樓層及您得體重(kg)"<〈endl;

  cin〉>fln[i]>〉fln[n]〉〉w[i];

  if(judge(fln[n])==1){q++;N—=2;fln[i]="\0’;continue;}

  weight+=w[i];

  if(weight>500)

  {cout<<endl;cout<〈"第"<<q<<"位乘客,因超載原因,您不

 能上"〈〈endl〈<endl; q++;N—=2;fln[i]=’\0";weight—=w[i];w[i]=0;continue;}

  i+=2;n+=2;q++;

  }

  for (i=0; i〈N—1; i++ )

 for (q=i+1; q<N; q++ )

 if (fln[i]== fln[q] )

 {

  ?

 )

 ++n ;N〈n ;q=n(rof?

  fln[n] = fln[n+1];

 ;-—N?

 q-—;

 }

  int j,k,temp;

  for(j=0;j<N;j++)

  for(k=0;k<N-1-j;k++)

  {

  if(fln[k]〉fln[k+1])

  {

  temp=fln[k];

  fln[k]=fln[k+1];

  fln[k+1]=temp;

  }

  }

  if(fln[0]==’\0’) num=100;

  if(up)floorNumber=fln[N-1];

  if(down)floorNumber=fln[0]; } int AdvElevator::judge(int n)

 {

  if(up)

  {

  if(currentFloor>n)

  {

  SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);

  cout<<"您不能上行!別搗亂,給我出去!"〈〈endl;

  SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);return 1;

  }

 else if(n>floor)

  {

  SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);

  cout〈〈”沒這一層!太高啦!您想上天?!別搗亂,給我出去!”<〈endl;

  SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);return 1;

  }

  }

  if(down)

  {

  if(currentFloor<n)

  {

 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE) , FOR E GROUN D _I N TENSIT Y | FOR E G R OUND_RED|F O R E GROUND_GREEN);

  cout<〈"您不能下行!別搗亂,給我出去!"〈<endl;

  SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);return 1;

  }

  else if(n〈1)

  {

  SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);

  cout<〈"沒這一層!太低啦!您想入地?!別搗亂,給我出去!”<〈endl;

  Se t C o nsoleTextAttribute ( G e tSt d H a ndl e ( STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);return 1;

  }

  }

  return 0; } void AdvElevator::choice() {

  cin>>N;

  switch(N)

  {

  case 1: up=true;cout<<”當前電梯停在"〈<currentFloor<〈"層"〈〈endl;

 setdata();if(num==100)break;setFloorNumber(); break;

  case 2: down=true;cout<<"當前電梯停在"<〈currentFloor<<”層”<<endl;

  if(currentFloor==1)

  {

  SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);

  cout〈<"您已經在第一層了!除非您自己打洞,不然我就是不會帶您下去得!”〈<endl<<endl;down=false;return;

  }

 setdata();if(num==100)break;setFloorNumber();break;

  case 3:exit(0);

  default:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);

  cout<<"只能選上升與下降!您難道還想玩電梯漂移?!"〈〈endl〈<endl; break;

  }

  SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);

  cout〈〈”—-———--—---—---"<<endl; } int main()

 {

  long a;

 time(&a);

  int floor;

  cout<〈"告訴我總共有幾層"<〈endl;

  cin〉〉floor;

  AdvElevator el(floor);

  SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);

  cout〈<ctime(&a)<<endl;

  cout<<"本電梯共"<〈floor〈<”層,且最多上 10 人,歡迎您得使用(限重 500kg)"<<endl<<endl;

  while(1)

  {

  el、charge();

  el、AdvElevator::choice();

  }

  return 0; } 六 運行結果

  七 實驗心得 復習了有關數組得內容,比如排序,去除重復元素;費了很大精力來改,但總覺得寫得不好,代碼太長,內容冗雜。有待進步,加強。

推薦訪問: 實驗 繼承 機制

【實驗二,,繼承機制實驗報告】相關推薦

工作總結最新推薦

NEW