面向?qū)ο蟪绦蛟O(shè)計(jì)實(shí)驗(yàn)_第1頁(yè)
面向?qū)ο蟪绦蛟O(shè)計(jì)實(shí)驗(yàn)_第2頁(yè)
面向?qū)ο蟪绦蛟O(shè)計(jì)實(shí)驗(yàn)_第3頁(yè)
面向?qū)ο蟪绦蛟O(shè)計(jì)實(shí)驗(yàn)_第4頁(yè)
面向?qū)ο蟪绦蛟O(shè)計(jì)實(shí)驗(yàn)_第5頁(yè)
已閱讀5頁(yè),還剩18頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、實(shí)驗(yàn)一 類與對(duì)象一實(shí)驗(yàn)?zāi)康谋緦?shí)驗(yàn)的目的是使學(xué)生了解基本的面向?qū)ο蟪绦蛟O(shè)計(jì)方法,掌握面向?qū)ο蟪绦虻墓ぷ髟?,面向?qū)ο蟪绦虻恼{(diào)試方法。掌握類的概念和定義方式,掌握對(duì)象的定義方式、訪問(wèn)方式以及與對(duì)象相關(guān)的概念及使用方法。二實(shí)驗(yàn)環(huán)境Visual C+ 6.0 及以上版本。 三預(yù)習(xí)要求熟悉掌握類和對(duì)象的基本概念及相關(guān)知識(shí)。根據(jù)老師布置的實(shí)驗(yàn)題目,提前分析題目要求所需要的類,設(shè)計(jì)好解決題目要求需要的對(duì)象個(gè)數(shù),設(shè)計(jì)解決問(wèn)題需要的主函數(shù)等。題目可以從以下題目中選擇一個(gè)。1定義一個(gè)學(xué)生類Student,學(xué)生類中有3個(gè)私有數(shù)據(jù)成員:name(姓名)、cls(班級(jí))、grade(年級(jí));3個(gè)公有成員函數(shù);Stude

2、nt(構(gòu)造函數(shù))、display、Student(析構(gòu)函數(shù))。使用構(gòu)造函數(shù)為Student類的對(duì)象賦值(name使用動(dòng)態(tài)內(nèi)存分配空間),display負(fù)責(zé)顯示學(xué)生的基本信息,在析構(gòu)函數(shù)中釋放動(dòng)態(tài)分配的內(nèi)存。2設(shè)計(jì)一個(gè)點(diǎn)類Point,編寫一個(gè)求兩點(diǎn)距離的計(jì)算器。3設(shè)計(jì)一個(gè)正整數(shù)字符串轉(zhuǎn)換器,要求先設(shè)計(jì)一個(gè)類IntToStr,將任意一個(gè)正整數(shù)轉(zhuǎn)換成相應(yīng)的字符串。例如正整數(shù)12345轉(zhuǎn)換成字符串“12345”。4其它和本實(shí)驗(yàn)?zāi)康南喾念}目,根據(jù)學(xué)生實(shí)際情況增加相應(yīng)的題目,但題目難度不應(yīng)低于以上三個(gè)題目。注意:從以上題目中選擇一個(gè)作為實(shí)驗(yàn)題目。四實(shí)驗(yàn)原理1.按照題目要求分析解決問(wèn)題需要的類;2.進(jìn)行類

3、的設(shè)計(jì)并實(shí)現(xiàn);3.分析解決問(wèn)題需要定義的對(duì)象及對(duì)象間的消息傳遞關(guān)系;4.設(shè)計(jì)主函數(shù)實(shí)現(xiàn)題目要求。五實(shí)驗(yàn)內(nèi)容利用Visual C+6.0調(diào)試事先設(shè)計(jì)好的程序,注意觀察調(diào)試過(guò)程中出現(xiàn)的問(wèn)題,并解決這些問(wèn)題完成實(shí)驗(yàn)題目的要求。class Studentprivate:char *name;int cla;char *grade;public:Student(char *stuname,int stuclass,char*stugrade);void display();Student();#include#includeStudent.husing namespace std;Student:Stu

4、dent(char *stuname,int stuclass,char *stugrade) int length=strlen(stuname);name=new charlength+1;if(name!=0)strcpy(name,stuname);cla=stuclass; int lenth=strlen(stugrade);grade=new charlenth+1;if(grade!=0)strcpy(grade,stugrade);/cout創(chuàng)建對(duì)象成功!endl;void Student:display()cout姓名:nameendl;cout班級(jí):claendl;cou

5、t年級(jí):gradeendl;Student:Student()delete name; / coutendl;delete grade;/coutendl;/cout析構(gòu)成功endl;#include#includeStudent.husing namespace std;int main()Student student(瑞奇,3,計(jì)算機(jī)科學(xué)與技術(shù));student.display();return 0;六思考題1.成員函數(shù)的工作原理;2.構(gòu)造函數(shù)的調(diào)用;3.析構(gòu)函數(shù)的調(diào)用。七實(shí)驗(yàn)報(bào)告要求要求敘述實(shí)驗(yàn)?zāi)康?、?shí)驗(yàn)所需的條件與工具、實(shí)驗(yàn)內(nèi)容與實(shí)驗(yàn)的完成情況。重點(diǎn)記錄實(shí)驗(yàn)中出現(xiàn)的問(wèn)題、對(duì)出現(xiàn)問(wèn)題原

6、因的分析及解決辦法等。實(shí)驗(yàn)二 繼承與派生一實(shí)驗(yàn)?zāi)康谋緦?shí)驗(yàn)的目的是使學(xué)生了解類的繼承與派生過(guò)程,掌握用類的繼承的方法實(shí)現(xiàn)程序設(shè)計(jì)目標(biāo)的方法。掌握類的繼承與派生的概念、派生類的定義方式、基類成員在派生類中的訪問(wèn)控制等。二實(shí)驗(yàn)環(huán)境Visual C+ 6.0 及以上版本。 三預(yù)習(xí)要求熟悉掌握類的繼承和派生的相關(guān)知識(shí)。根據(jù)老師布置的實(shí)驗(yàn)題目,提前分析題目要求所需要的類,設(shè)計(jì)好解決題目要求需要的對(duì)象個(gè)數(shù),設(shè)計(jì)解決問(wèn)題需要的主函數(shù)等。題目可以從以下題目中選擇一個(gè)。1定義一個(gè)學(xué)生類Student,類中包含3個(gè)私有數(shù)據(jù)成員:name(姓名)、sex(性別)、score(成績(jī))。用公有繼承方式聲明一個(gè)研究生類Gr

7、aduate,該類中添加一個(gè)數(shù)據(jù)成員advisor(導(dǎo)師),并添加一個(gè)成員函數(shù)display來(lái)顯示這些內(nèi)容。2編寫一個(gè)學(xué)生和教師數(shù)據(jù)輸入和顯示程序。其中,學(xué)生數(shù)據(jù)有編號(hào)、姓名、班級(jí)和成績(jī),教師數(shù)據(jù)有編號(hào)、姓名、職稱和部門。要求將編號(hào)、姓名輸入和顯示設(shè)計(jì)成一個(gè)類Person;然后設(shè)計(jì)類Person的派生類:學(xué)生類Student和教師類Teacher;編寫一個(gè)主函數(shù),通過(guò)定義student、teacher的對(duì)象,完成相應(yīng)功能。3其它和本實(shí)驗(yàn)?zāi)康南喾念}目,根據(jù)學(xué)生實(shí)際情況增加相應(yīng)的題目,但題目難度不應(yīng)低于以上兩個(gè)題目。注意:注意:從以上題目中選擇一個(gè)作為實(shí)驗(yàn)題目。四實(shí)驗(yàn)原理1.按照題目要求分析解決

8、問(wèn)題需要的類;2.進(jìn)行類的設(shè)計(jì)并實(shí)現(xiàn);3.分析解決問(wèn)題需要定義的對(duì)象及對(duì)象間的消息傳遞關(guān)系;4.設(shè)計(jì)主函數(shù)實(shí)現(xiàn)題目要求。五實(shí)驗(yàn)內(nèi)容利用Visual C+6.0調(diào)試事先設(shè)計(jì)好的程序,注意觀察調(diào)試過(guò)程中出現(xiàn)的問(wèn)題,并解決這些問(wèn)題完成實(shí)驗(yàn)題目的要求。class Studentprivate:char name20;char sex;float score;public:Student(char *a,char b,float c):sex(b),score(c)strcpy(name,a);void display();class Graduate:public Studentprivate: ch

9、ar advisor20;public:Graduate(char* a,char b,float c,char* d):Student(a,b,c)strcpy(advisor,d);void show();#include#include#includeStudent.h#includeGraduate.husing namespace std;void Student:display()cout姓名:nameendl;cout性別:sexendl;cout分?jǐn)?shù):scoreendl;void Graduate:show()display();cout導(dǎo)師是:advisorendl;#inc

10、lude#include#includeStudent.h#includeGraduate.husing namespace std;int main()Graduate A(張三,M,93.5,李勇);A.show();return 0;六思考題1. 基類和派生類的構(gòu)造順序;2. 基類和派生類的析構(gòu)順序。七實(shí)驗(yàn)報(bào)告要求要求敘述實(shí)驗(yàn)?zāi)康?、?shí)驗(yàn)所需的條件與工具、實(shí)驗(yàn)內(nèi)容與實(shí)驗(yàn)的完成情況。重點(diǎn)記錄實(shí)驗(yàn)中出現(xiàn)的問(wèn)題、對(duì)出現(xiàn)問(wèn)題原因的分析及解決辦法等。實(shí)驗(yàn)三 多態(tài)性一實(shí)驗(yàn)?zāi)康谋緦?shí)驗(yàn)的目的是使學(xué)生了虛函數(shù)的作用,掌握多態(tài)的概念、編譯時(shí)多態(tài)、運(yùn)行時(shí)多態(tài),掌握運(yùn)算符重載和虛函數(shù)的用法。二實(shí)驗(yàn)環(huán)境Visual

11、 C+ 6.0 及以上版本。 三預(yù)習(xí)要求熟悉掌握C+多態(tài)的相關(guān)知識(shí)。根據(jù)老師布置的實(shí)驗(yàn)題目,提前分析題目要求所需要的類,設(shè)計(jì)好解決題目要求需要的對(duì)象個(gè)數(shù),設(shè)計(jì)解決問(wèn)題需要的主函數(shù)等。題目可以從以下題目中選擇一個(gè)。1定義一個(gè)實(shí)數(shù)類Real,類中包括一個(gè)數(shù)據(jù)成員real,構(gòu)造函數(shù)、display()函數(shù)以及重載的+、-、*、/運(yùn)算符。用公有繼承方式聲明一個(gè)復(fù)數(shù)類Complex,該類包括兩個(gè)數(shù)據(jù)成員real,image,并重載Real類的函數(shù)和+、-、*、/運(yùn)算符。編寫一個(gè)復(fù)數(shù)四則運(yùn)算計(jì)算器。2.Shape是一個(gè)幾何圖形的基類,它至少有求自身周長(zhǎng)函數(shù)Circumference()和求自身面積函數(shù)Ar

12、ea()。從Shape類派生出Circle類、Ellipse類、Triangle類和Rectangle類,分別繼承基類Shape的Circumference()和Area(),并增加新的成員。編寫主函數(shù),定義各派生類對(duì)象,求多派生類對(duì)象的周長(zhǎng)之和、面積之和。3其它和本實(shí)驗(yàn)?zāi)康南喾念}目,根據(jù)學(xué)生實(shí)際情況增加相應(yīng)的題目,但題目難度不應(yīng)低于以上兩個(gè)題目。注意:注意:從以上題目中選擇一個(gè)作為實(shí)驗(yàn)題目。四實(shí)驗(yàn)原理1.按照題目要求分析解決問(wèn)題需要的類;2.進(jìn)行類的設(shè)計(jì)并實(shí)現(xiàn);3.分析解決問(wèn)題需要定義的對(duì)象及對(duì)象間的消息傳遞關(guān)系;4.設(shè)計(jì)主函數(shù)實(shí)現(xiàn)題目要求。五實(shí)驗(yàn)內(nèi)容利用Visual C+6.0調(diào)試事先設(shè)

13、計(jì)好的程序,注意觀察調(diào)試過(guò)程中出現(xiàn)的問(wèn)題,并解決這些問(wèn)題完成實(shí)驗(yàn)題目的要求。#include#define PI 3.1415926using namespace std;class Shapepublic:virtual double Circuference()=0;virtual double Area()=0;virtualvoid display()=0;/定義基類class Circle:public Shapeprivate:double r;public:Circle(double R=0) r=R;double Circuference()return 2*r*PI;doub

14、le Area()return r*r*PI;void display()cout圓的周長(zhǎng)為:Circuference()endl圓的面積為:Area()endl;/class Ellipse:public Shapeprivate:double a;double b;public:Ellipse(double A=0,double B=0)a=A;b=B;double Circuference()return 2*PI*b+4*(a-b);double Area()return PI*a*b;void display()cout橢圓的周長(zhǎng)為:Circuference()endl橢圓的面積為:

15、Area()endl;/class Triangle:public Shapeprivate:double high1,high2,high3;public:Triangle(double High1=0,double High2=0,double High3=0)high1=High1;high2=High2;high3=High3;double Circuference()return high1+high2+high3;double Area()double a=high1+high2+high3;return a*(a-high1)*(a-high2)*(a-high3);void d

16、isplay()cout三角形的周長(zhǎng)為:Circuference()endl三角形的面積為:Area()endl;/class Rectangle:public Shapeprivate:double length;double width;public:Rectangle(double Length,double Width)length=Length;width=Width;double Circuference()return 2*length*width;double Area()return length*width;void display()cout矩形的周長(zhǎng)為:Circufer

17、ence()endl矩形的面積為:Area()endl;int main()Shape *S4;Circle c(4);Ellipse e(2,3);Triangle t(3,4,5);Rectangle r(3,4);S0=&c;S1=&e;S2=&t;S3=&r;int i;for(i=0;idisplay(); /*S1-display();S2-display();S3-display();S4-display();cout四個(gè)圖形的周長(zhǎng)之和為:Circuference()+S2-Circuference()+S3-Circuference()+S4-Circuference()end

18、l;cout四個(gè)圖形的面積之和為:Area()+S2-Area()+S3-Area()+S4-Area()endl;*/double circuference=0,area=0;for (i=0;iCircuference();area=area+Si-Area(); cout四個(gè)圖形的周長(zhǎng)之和為:circuferenceendl;cout四個(gè)圖形的面積之和為:areaendl;return 0;六思考題1. 基類指針指向派生類對(duì)象與派生類指針指向基類對(duì)象的區(qū)別;2. 虛函數(shù)的作用。七實(shí)驗(yàn)報(bào)告要求要求敘述實(shí)驗(yàn)?zāi)康摹?shí)驗(yàn)所需的條件與工具、實(shí)驗(yàn)內(nèi)容與實(shí)驗(yàn)的完成情況。重點(diǎn)記錄實(shí)驗(yàn)中出現(xiàn)的問(wèn)題、對(duì)出現(xiàn)

19、問(wèn)題原因的分析及解決辦法等。實(shí)驗(yàn)四 面向?qū)ο缶C合應(yīng)用一實(shí)驗(yàn)?zāi)康恼莆彰嫦驅(qū)ο蟪绦蛟O(shè)計(jì)方法在實(shí)際中的應(yīng)用。二實(shí)驗(yàn)環(huán)境Visual C+ 6.0 及以上版本。 三預(yù)習(xí)要求熟悉掌握C+多態(tài)的相關(guān)知識(shí)。根據(jù)老師布置的實(shí)驗(yàn)題目,提前分析題目要求所需要的類,設(shè)計(jì)好解決題目要求需要的對(duì)象個(gè)數(shù),設(shè)計(jì)解決問(wèn)題需要的主函數(shù)等。題目可以從以下題目中選擇一個(gè)。1以現(xiàn)實(shí)生活中的電梯為原型,進(jìn)行需求調(diào)查,了解電梯的各個(gè)功能。抽象出電梯類,設(shè)計(jì)電梯類的成員函數(shù)和數(shù)據(jù)成員,完成電梯類的完整定義及實(shí)現(xiàn)。編寫應(yīng)用程序,使用電梯類,比較仿真程序與現(xiàn)實(shí)中電梯運(yùn)行狀況的異同。2以現(xiàn)實(shí)生活中的DVD為原型,進(jìn)行需求調(diào)查,了解DVD的各個(gè)功

20、能。抽象出DVD類DVD,設(shè)計(jì)DVD類的成員函數(shù)和數(shù)據(jù)成員,完成DVD類的完整定義及實(shí)現(xiàn)。編寫應(yīng)用程序,使用DVD類,比較仿真程序與現(xiàn)實(shí)中DVD運(yùn)行狀況的異同。3以現(xiàn)實(shí)生活中的MP3為原型,進(jìn)行需求調(diào)查,了解MP3的各個(gè)功能。抽象出MP3類MP3,設(shè)計(jì)MP3類的成員函數(shù)和數(shù)據(jù)成員,完成MP3類的完整定義及實(shí)現(xiàn)。編寫應(yīng)用程序,使用MP3類,比較仿真程序與現(xiàn)實(shí)中MP3運(yùn)行狀況的異同。4其它和本實(shí)驗(yàn)?zāi)康南喾念}目,根據(jù)學(xué)生實(shí)際情況增加相應(yīng)的題目,但題目難度不應(yīng)低于以上兩個(gè)題目。注意:注意:從以上題目中選擇一個(gè)作為實(shí)驗(yàn)題目。四實(shí)驗(yàn)原理1.按照題目要求分析解決問(wèn)題需要的類;2.進(jìn)行類的設(shè)計(jì)并實(shí)現(xiàn);3.分

21、析解決問(wèn)題需要定義的對(duì)象及對(duì)象間的消息傳遞關(guān)系;4.設(shè)計(jì)主函數(shù)實(shí)現(xiàn)題目要求。五實(shí)驗(yàn)內(nèi)容利用Visual C+6.0調(diào)試事先設(shè)計(jì)好的程序,注意觀察調(diào)試過(guò)程中出現(xiàn)的問(wèn)題,并解決這些問(wèn)題完成實(shí)驗(yàn)題目的要求。#ifndef CELEVATOR_H#define CELEVATOR_Hconst int MostLayers = 100;class CElevatorpublic:CElevator();/構(gòu)造函數(shù)CElevator(int uLayers, int lLayers);/構(gòu)造函數(shù)CElevator(CElevator &myElevator);/拷貝構(gòu)造函數(shù) void PressOute

22、rButton(int direction, int floor);/電梯外部各樓層操作按鈕void PressInnerDigitalButton(int floor);/電梯內(nèi)部數(shù)字按鈕void PressOpen_CloseButton(int operate);/電梯內(nèi)部開合控制按鈕void PressAlert();/電梯內(nèi)部報(bào)警按鈕void run();/電梯運(yùn)行CElevator();/析構(gòu)函數(shù)protected:void OpenElevator();/打開電梯void CloseElevator();/關(guān)閉電梯void UserOperate();/由于程序單線程運(yùn)行,因此將

23、用戶的所有操作集中在每一層停止的時(shí)候完成。const int UpperLayers; /電梯最高能到達(dá)的樓層const int LowerLayers; /電梯最低能到達(dá)的樓層int States5; /電梯當(dāng)前狀態(tài),States0表示運(yùn)行或停止,0停止,1運(yùn)行,初值0;States1表示當(dāng)前所在樓層,初值1;States2表示運(yùn)行方向,向上0,向下1,初值0;States3表示開合,0開,0合,初值1;States4表示是否故障,0正常,1故障,初值1int DigitalButtonMostLayers;/整形數(shù)組,i為樓層且i!=0,i0,iLowerLayers-1表示電梯內(nèi)地上i樓

24、層按鈕是否被按下,0未按,1按下int OuterDownButtonMostLayers;/整形數(shù)組,i為樓層且i!=0,i0,iLowerLayers-1表示電梯外i層向下按鈕是否被按下,0未按,1按下int OuterUpButtonMostLayers;/整形數(shù)組,i為樓層且i!=0,i0,iLowerLayers-1表示電梯外i層向上按鈕是否被按下,0未按,1按下;#endif#include#include CElevator.husing namespace std;CElevator:CElevator():UpperLayers(10),LowerLayers(1)State

25、s0 = 0; /初始狀態(tài)為停止States1 = 1;/初始樓層在樓States2 = 0;/初始方向?yàn)橄蛏蟂tates3 = 1;/初始電梯為合States4 = 0;/初始電梯正常for(int i=0;iMostLayers;i+)DigitalButtoni = 0; OuterDownButtoni = 0; OuterUpButtoni = 0;CElevator:CElevator(int uLayers, int lLayers):UpperLayers(uLayers),LowerLayers(lLayers)States0 = 0; /初始狀態(tài)為停止States1 = 1

26、;/初始樓層在樓States2 = 0;/初始方向?yàn)橄蛏蟂tates3 = 1;/初始電梯為合States4 = 0;/初始電梯正常for(int i=0;iMostLayers;i+)DigitalButtoni = 0; OuterDownButtoni = 0; OuterUpButtoni = 0;CElevator:CElevator(CElevator &myElevator):UpperLayers(myElevator.UpperLayers),LowerLayers( myElevator.LowerLayers)States0 = myElevator.States0; S

27、tates1 = myElevator.States1;States2 = myElevator.States2;States3 = myElevator.States3;States4 = myElevator.States5;for(int i=0;iMostLayers;i+)DigitalButtoni = myElevator.DigitalButtoni;OuterDownButtoni = myElevator.DigitalButtoni;OuterUpButtoni = myElevator.DigitalButtoni;CElevator:CElevator()void C

28、Elevator:PressOuterButton(int direction, int floor) if(direction=0)OuterUpButtonfloor-LowerLayers-1 = 1;elseOuterDownButtonfloor-LowerLayers-1 = 1;void CElevator:PressInnerDigitalButton(int floor)DigitalButtonfloor-LowerLayers-1 = 1;void CElevator:PressOpen_CloseButton(int operate)if(operate = 0)/打開

29、電梯 OpenElevator();else/關(guān)閉電梯CloseElevator();void CElevator:OpenElevator()if(States3 = 0)cout電梯已打開,請(qǐng)先出后進(jìn)!endlendl;else cout電梯正在打開 電梯已打開,請(qǐng)先出后進(jìn)!endlendl; States3 = 0;void CElevator:CloseElevator() if(States3 = 1)cout電梯已關(guān)閉,請(qǐng)保持安靜!endlendl;else cout電梯正在關(guān)閉 電梯已關(guān)閉,請(qǐng)保持安靜!endlendl;States3 = 1;void CElevator:Pre

30、ssAlert()cout電梯內(nèi)部有人報(bào)警,請(qǐng)?jiān)ndl;States4 = 1;void CElevator:UserOperate()/按報(bào)警按鈕int alm = 0;coutalm;coutendl;if(alm=1)States4 = 1;while(States4=1)coutalm;coutendl;if(alm = 0 | alm =1)States4 = alm;elsecout維修數(shù)據(jù)不正確!endl;OpenElevator();/電梯內(nèi)部輸入到達(dá)樓層cout請(qǐng)電梯內(nèi)乘客輸入所要到達(dá)的樓層!endl;coutfloor;if(floor=0)break;if(floo

31、r=LowerLayers) & (floor=UpperLayers) & (floor!=States1)if(floor0)/地下 DigitalButtonfloor-LowerLayers = 1;else/地上DigitalButtonfloor-LowerLayers-1 = 1;/沒有樓coutendl; /電梯外部各樓層輸入上樓信號(hào)cout請(qǐng)電梯外部乘客輸入上樓信號(hào)!endl;coutfloor;if(floor=0)break;elseif(floor=LowerLayers) & (floorUpperLayers) & (floor!=States1)if(floor0

32、)/地下OuterUpButtonfloor-LowerLayers = 1;else/地上OuterUpButtonfloor-LowerLayers-1 = 1;/沒有樓coutendl;/電梯外部各樓層輸入下樓信號(hào)cout請(qǐng)電梯外部乘客輸入下樓信號(hào),endl;coutfloor;if(floor=0)break;elseif(floorLowerLayers) & (floor=UpperLayers) & (floor!=States1)if(floor0)/地下OuterDownButtonfloor-LowerLayers = 1;else/地上OuterDownButtonflo

33、or-LowerLayers-1 = 1;/沒有樓coutendl;/按開電梯按鈕int direction = 0;cout電梯將要關(guān)閉,等人請(qǐng)按打開按鈕!endl;coutdirection;coutendl;if(direction=1)OpenElevator(); for(int i=0;i50;i+);/延時(shí)CloseElevator();/按關(guān)電梯按鈕coutdirection;coutendl;if(direction=0)for(int i=0;i50;i+);/延時(shí)CloseElevator();elseCloseElevator();void CElevator:run(

34、)while(true)if(States0=0)cout電梯停在States1層!endl;if(States2=0)/向上if(States10)/地下OuterUpButtonStates1-LowerLayers = 0;/將記錄電梯States1層有向上的標(biāo)志取消DigitalButtonStates1-LowerLayers = 0;/將記錄電梯在States1層??康臉?biāo)志取消else/地上OuterUpButtonStates1-LowerLayers-1 = 0;/將記錄電梯States1層有向上的標(biāo)志取消DigitalButtonStates1-LowerLayers-1 =

35、 0;/將記錄電梯在States1層??康臉?biāo)志取消else/向下if(States10)/地下OuterDownButtonStates1-LowerLayers = 0;/將記錄電梯States1層有向下的標(biāo)志取消DigitalButtonStates1-LowerLayers = 0;/將記錄電梯在States1層停靠的標(biāo)志取消else/地上OuterDownButtonStates1-LowerLayers-1 = 0;/將記錄電梯States1層有向下的標(biāo)志取消DigitalButtonStates1-LowerLayers-1 = 0;/將記錄電梯在States1層??康臉?biāo)志取消if

36、(States1=1)couttemp;if(temp=1)exit(0);coutendl; UserOperate();States0 = 1;elseif(States2=0)/向上States1+;if(States1=0)States1+;/沒有層elsecout電梯向上運(yùn)行,將要到達(dá)States1層!endlendl;if(States1=UpperLayers)/向上到最頂,必定要停,且方向變?yōu)橄蛳耂tates2 = 1;/變方向 States0 = 0;elseif(OuterUpButtonStates1-LowerLayers-1=0 & DigitalButtonStat

37、es1-LowerLayers-1=0)cout沒有乘客在States1層上下,電梯繼續(xù)向上運(yùn)行!endlendl;elseStates0 = 0;else/向下States1-;if(States1=0)States1 = -1;/沒有層elsecout電梯向下運(yùn)行,將要到達(dá)States1層!endlendl;if(States1=LowerLayers)/向下到最底,必定要停,且方向變?yōu)橄蛏蟂tates2 = 0;/變方向 States0 = 0;elseif(OuterDownButtonStates1-LowerLayers-1=0 & DigitalButtonStates1-Low

38、erLayers-1=0)cout沒有乘客在States1層上下,電梯繼續(xù)向下運(yùn)行!endlendl;elseStates0 = 0;#include #include CElevator.husing namespace std;#include CElevator.hvoid main()CElevator myElevator(8,-3);myElevator.run();六設(shè)計(jì)方案下面給出題目1(電梯仿真)的3中設(shè)計(jì)方案,從方案1到方案3越來(lái)越詳細(xì),學(xué)生可以從方案1開始,如果覺得有難度,再參考方案2,以此類推。方案11功能要求(需求分析)以現(xiàn)實(shí)生活中的電梯為原型,進(jìn)行需求調(diào)查,了解電梯

39、的各個(gè)功能。2類設(shè)計(jì)根據(jù)第一步中獲得的電梯運(yùn)行情況,抽象電梯類(CElevator),設(shè)計(jì)CElevator的成員函數(shù)和數(shù)據(jù)成員,完成CElevator類的完整定義及實(shí)現(xiàn)。3應(yīng)用編寫應(yīng)用程序,使用電梯類,比較仿真程序與現(xiàn)實(shí)中電梯運(yùn)行狀況的異同。4其它說(shuō)明 如果采用“Windows控制臺(tái)應(yīng)用程序”設(shè)計(jì)仿真程序,其運(yùn)行狀況必定會(huì)和現(xiàn)實(shí)有所差異,因?yàn)楝F(xiàn)實(shí)中多種情況是并發(fā)發(fā)生的,如電梯內(nèi)、電梯外各樓層會(huì)有人同時(shí)按按鈕。而控制臺(tái)程序一個(gè)時(shí)刻只能一件事情發(fā)生。因此需要對(duì)電梯運(yùn)行情況進(jìn)行合理簡(jiǎn)化。 如果采用“MFC應(yīng)用程序”等具有并發(fā)或多線程的程序設(shè)計(jì)模式,將會(huì)和現(xiàn)實(shí)情況比較類似,但還會(huì)有所不同,也要進(jìn)行合

40、理簡(jiǎn)化。方案二1功能要求(需求分析)以現(xiàn)實(shí)生活中的電梯為原型,進(jìn)行需求調(diào)查,了解電梯的各個(gè)功能。2類設(shè)計(jì)根據(jù)第一步中獲得的電梯運(yùn)行情況,抽象電梯類(CElevator),設(shè)計(jì)CElevator類的成員函數(shù)和數(shù)據(jù)成員,完成CElevator類的完整定義及實(shí)現(xiàn)。(1)成員函數(shù) 構(gòu)造函數(shù)CElevator(int uLayers, int lLayers);/參數(shù)個(gè)數(shù)自定 電梯外部候梯按鈕操作PressOuterButton,函數(shù)自行定義 電梯內(nèi)部數(shù)字按鍵操作PressInnerDigitalButton,函數(shù)自行定義 電梯內(nèi)部開合控制操作PressOpen_CloseButton,函數(shù)自行定義 電

41、梯內(nèi)部報(bào)警操作PressAlert,函數(shù)自行定義 電梯運(yùn)行run,函數(shù)自行定義(2)數(shù)據(jù)成員 電梯最高能到達(dá)的樓層,UpperLayers; /電梯最高能到達(dá)的樓層 電梯最低能到達(dá)的樓層LowerLayers; /電梯最低能到達(dá)的樓層 電梯狀態(tài)States5; /運(yùn)行或停止;當(dāng)前所在樓層;運(yùn)行方向;開合;是否故障 DigitalButtonMostLayers;/整形數(shù)組,記錄電梯內(nèi)i樓層是否被按下 OuterDownButtonMostLayers;/整形數(shù)組,記錄電梯外i樓層向下按鈕是否被按下 OuterUpButtonMostLayers;/整形數(shù)組,記錄電梯外i樓層向上按鈕是否被按下 MostLayers為常數(shù)3應(yīng)用編寫應(yīng)用程序,使用電梯類,比較仿真程序與現(xiàn)實(shí)中電梯運(yùn)行狀況的異同。4其它說(shuō)明 如果采用“Windows控制臺(tái)應(yīng)用程序”設(shè)計(jì)仿真程序,其運(yùn)行狀況必定會(huì)和現(xiàn)實(shí)有所差異,因?yàn)楝F(xiàn)實(shí)中多種情況是并發(fā)發(fā)生的,如電梯內(nèi)、電梯外各樓層會(huì)有人同時(shí)按按鈕。而控制臺(tái)程序一個(gè)時(shí)刻只能一件事情發(fā)生。因此需要對(duì)電梯運(yùn)行情況進(jìn)行合理簡(jiǎn)化。 如果采用“MFC應(yīng)用程序”等具有并發(fā)或多線程的程序設(shè)計(jì)模式,將會(huì)和現(xiàn)實(shí)情況比較類似,但還會(huì)有所不同,也要進(jìn)行合理簡(jiǎn)化。方案三1功能要求(需求分析)以現(xiàn)實(shí)生活中的電梯為原型,進(jìn)行需求調(diào)查,了解電梯的各

溫馨提示

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

評(píng)論

0/150

提交評(píng)論