模拟电梯1.0(类与对象实验)
一、實驗目的
1)掌握類的概念、類的定義格式、類與結構的關系、類的成員屬性和類的封裝性;
2)掌握類對象的定義;
3)理解類的成員的訪問控制的含義,公有、私有和保護成員的區別;
4)掌握構造函數和析構函數的含義與作用、定義方式和實現,能夠根據要求正確定義和重載構造函數。能夠根據給定的要求定義類并實現類的成員函數;
二、實驗原理介紹
通過建立類及對象,用類的成員函數和對象訪問類的成員;
利用建立類的構造函數,完成類的成員的初始化工作;
三、實驗設備介紹
軟件需求: Visual C++ 6.0
硬件需求: 對于硬件方面的要求,建議配置是Pentium III 450以上的CPU處理器,64MB以上的內存,200MB的自由硬盤空間、CD-ROM驅動器、能支持24位真彩色的顯示卡、彩色顯示器、打印機。
四、實驗內容
編寫一個程序,模擬電梯的功能。功能接口包括電梯上行按鈕、下行按鈕、樓層選擇和電梯在行駛過程中的樓層顯示。
要求:
1.由用戶選擇按上行按鈕還是下行按鈕,選擇操作后再由用戶輸入要進入的樓層,進而電梯開始運行,顯示所到的每一樓層層數。
2.如果是上行,則選擇輸入的樓層號不能比當前樓層號小,否則應給出不合法提示。
3. 如果是下行,則選擇輸入的樓層號不能比當前樓層號大,否則應給出不合法提示。
4.電梯一旦開始運作就會始終運行,直到窗口關閉。
程序要求的結果請運行elevator.exe
提示:
從功能要求上我們可以抽象出一個Elevator電梯類,結構如下:
接下來需要做的就是在主函數中根據已經定義好的Elevator類實例化一個電梯,根據用戶的輸入選擇來操作這個實例化的電梯了。
五、注意事項和要求
要求學生要提前準備實驗的內容
實驗完成后要求寫出實驗報告
六、參考書目
【C++ Prime題解】侯捷譯 華中科技大學出版社
【C++程序設計與應用】 張耀仁著 華中科技大學出版社
一、實驗目的
1)掌握類的概念、類的定義格式、類與結構的關系、類的成員屬性和類的封裝性;
2)掌握類對象的定義;
3)理解類的成員的訪問控制的含義,公有、私有和保護成員的區別;
4)掌握構造函數和析構函數的含義與作用、定義方式和實現,能夠根據要求正確定義和重載構造函數。能夠根據給定的要求定義類并實現類的成員函數;
二、實驗原理介紹
通過建立類及對象,用類的成員函數和對象訪問類的成員;
利用建立類的構造函數,完成類的成員的初始化工作;
三、實驗設備介紹
軟件需求: windows或linux下的c++編譯器
硬件需求: 對于硬件方面的要求,建議配置是Pentium III 450以上的CPU處理器,64MB以上的內存,200MB的自由硬盤空間、CD-ROM驅動器、能支持24位真彩色的顯示卡、彩色顯示器、打印機。
四、實驗內容
編寫一個程序,模擬電梯的功能。功能接口包括電梯上行按鈕、下行按鈕、樓層選擇和電梯在行駛過程中的樓層顯示。
要求:
1.由用戶選擇按上行按鈕還是下行按鈕,選擇操作后再由用戶輸入要進入的樓層,進而電梯開始運行,顯示所到的每一樓層層數。
2.如果是上行,則選擇輸入的樓層號不能比當前樓層號小,否則應給出不合法提示。
3. 如果是下行,則選擇輸入的樓層號不能比當前樓層號大,否則應給出不合法提示。
4.電梯一旦開始運作就會始終運行,直到窗口關閉。
5.電梯在經過不同樓層時,最好每個樓層的顯示之間能有延遲,最終停靠的樓層的輸出形式能更加醒目。如果可以,在電梯最初開始運行時,能在電梯由內部顯示當前日期(提示:實現這些功能時,需要調用系統api,實現時間顯示功能可以使用CDate類)。
五 程序清單
main.cpp
Elevator.cpp
#include "Elevator.h"Elevator::Elevator():floor(10),up(0),down(0),currentFloor(1) {}Elevator::~Elevator() {//dtor } Elevator::Elevator(int floor):floor(floor),up(0),down(0),currentFloor(1) {} void Elevator::setUpButton()//按下上行按鈕 {int now=getCurrentFloor(),to;cout<<"當前電梯停在"<<now<<"層"<<endl;cout<<"請輸入要進入的樓層"<<endl;scanf("%d",&to);if(now>=to||to>floor||to<1){cout<<"您不能上行!"<<endl;}else{up=1;setFloorNumber(to);currentFloor=to;up=0;} } void Elevator::setDownButton()//按下下行按鈕 {int now=getCurrentFloor(),to;cout<<"當前電梯停在"<<now<<"層"<<endl;cout<<"請輸入要進入的樓層"<<endl;scanf("%d",&to);if(now<=to||to>floor||to<1){cout<<"您不能下行!"<<endl;}else{down=1;setFloorNumber(to);currentFloor=to;down=0;} } void Elevator::setFloorNumber(int floorNumber)//根據要進入的樓層電梯開始運行,并逐層顯示經過的樓層 {if(up){for(int i=currentFloor;i<floorNumber;i++){cout<<"---"<<i<<"---"<<endl<<endl;Sleep(1000);}SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_INTENSITY);cout<<"第"<<floorNumber<<"層到了"<<endl;SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE|FOREGROUND_INTENSITY);}if(down){for(int i=currentFloor;i>floorNumber;i--){cout<<"---"<<i<<"---"<<endl<<endl;Sleep(1000);}SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_INTENSITY);cout<<"第"<<floorNumber<<"層到了"<<endl;SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE|FOREGROUND_INTENSITY);} } int Elevator::getCurrentFloor()//獲得當前所在樓層 {return currentFloor; }Elevator.h
#ifndef ELEVATOR_H #define ELEVATOR_H #include <iostream> #include <windows.h> #include <stdlib.h> using namespace std;class Elevator {public:Elevator();virtual ~Elevator();Elevator(int floor);void setUpButton(); //按下上行按鈕void setDownButton(); //按下下行按鈕void setFloorNumber(int floorNumber); //根據要進入的樓層電梯開始運行,并逐層顯示經過的樓層int getCurrentFloor(); //獲得當前所在樓層protected:private:int floor; //電梯總的樓層數bool up; //是否上行,bool為布爾類型,可取值true或falsebool down; //是否下行int currentFloor; //當前所在樓層};date.cpp
#endif // ELEVATOR_H #include"date.h" CDate::CDate(int dd, int mm, int yy):df_s("ddd"),df_l("DDD") //初始化 {if((mm>=1 && mm<=12) && (dd>=1 && dd<=31)){m = mm; d = dd; y = yy;}else {m = 0; d = 0; y = 0;cout<<"the date created is wrong"<<endl;}} CDate::CDate():df_s("ddd"),df_l("DDD") //初始化 {time_t now;time(&now);struct tm *t_now;t_now = localtime(&now);y = t_now -> tm_year + 1900;m = t_now -> tm_mon + 1;d = t_now -> tm_mday; } void CDate::add_year(int n) //加n年 {y += n; } void CDate::add_month(int n) //加n月 {m += n; } void CDate::add_day(int n) //加n天 {d += n; } string CDate::format(string df) {char c_df[20];if(df == df_s){sprintf(c_df, "%d-%d-%d", y, m, d);return string(c_df);}if(df == df_l){sprintf(c_df, "%d年%d月%d日", y, m, d);return string(c_df);}return string(""); } int CDate::get_day() const {return d; } int CDate::get_month() const {return m; } int CDate::get_year() const {return y; }date.h
#ifndef DATE_H #define DATE_H #include <iostream> #include<ctime> #include<cstdlib> #include<string> #include<cstdio> using namespace std; class CDate{int d,m,y;const string df_s;const string df_l; public:CDate(int dd,int mm=1,int yy=1999);CDate();void add_year(int n);void add_month(int n);void add_day(int n);string format(string df);int get_day() const;int get_month() const;int get_year() const; }; #endif六 運行結果
七 實驗心得
通過本次實驗
掌握類的概念、類的定義格式、類與結構的關系、類的成員屬性和類的封裝性;
掌握類對象的定義;
理解類的成員的訪問控制的含義,公有、私有和保護成員的區別;
掌握構造函數和析構函數的含義與作用、定義方式和實現,能夠根據要求正確定義和重載構造函數。能夠根據給定的要求定義類并實現類的成員函數;
學會通過建立類及對象,用類的成員函數和對象訪問類的成員;
學會利用建立類的構造函數,完成類的成員的初始化工作;
總結
以上是生活随笔為你收集整理的模拟电梯1.0(类与对象实验)的全部內容,希望文章能夠幫你解決所遇到的問題。