车位管理课程设计报告_第1页
车位管理课程设计报告_第2页
车位管理课程设计报告_第3页
车位管理课程设计报告_第4页
车位管理课程设计报告_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课程设计报告设计题目:车位管理学生姓名:专 业:班 级:学 号:指导教师:完成日期:(一) 需求和规格说明随着家庭购买汽车的增加,停车场车位紧张的问题越来越突出。请根据题目要求完成简单的车位管理程序。 1停车场有若干停车位(为说明问题,假定为3个),每个位置可以存放不同种类的汽车,包括卡车Truck,客车Carriage和小轿车Car,但同一时刻一个位置只能存放0或1辆汽车。 2管理系统模拟实际车辆停车的情况:停车:新来车辆时如果有空位,按顺序为该车分配停车位,并自动记录开始停车的时间(用系统的时间);计费:车辆开走时,输入车位编号,自动记录结束停车的时间(用系统的时间);计算出相应停车费;显示:显示停车场中各类车辆的信息。 保存退出3定义描述停车场的类Park,其中有3个位置用于存放各类车辆。 4定义基类Automobile,至少包括纯虚函数Pay用于显示车辆信息并交纳相应停车费。 5定义派生类Truck,Carriage和Car,这些车辆除了拥有车牌号、之外, Truck还拥有载重量(浮点数,单位吨)属性,Carriage还拥有乘坐人数(整数,单位座) 属性,Car还拥有排气量(浮点数,单位L)属性。具体实现上述纯虚函数Pay, 显示每类车辆的相应信息,并给出计价提示,其中Truck收费2元/小时,Carriage收费1.5元/小时, Car收费1元/小时。(二) 设计根据上述需求,设计一个结构体类型用于存储车辆相关信息;设计一个描述停车场的类Park;停车场类用除了构造函数与虚构函数外还具有判断车位是否已满,已空等相关信息;定义类Automobile,继承了Park类的相关信息,除了定义构造函数和析构函数以外,还有纯虚函数virtual void Pay()const=0用于显示车辆信息以及车牌号及车辆类型等相关数据;enter()与leave()函数用于控制车辆进出,以及虚函数virtual void pay()用于保存车辆信息;定义派生类Truck,Carriage和Car,这些车辆除了拥有车牌号、之外,分别具有载重,乘坐人数,排气量等信息;系统类图class Parkpark();park()bool Full(); bool Empty(); int count; node locationN; class AutomobileAutomobile();Automobile()bool enter(); bool leave(); float TL()const; virtual void Pay()const=0;virtual void pay();char C64;char ty16; class Truckclass Carriageclass CarTruck();Truck();void enter1();virtual void Pay()const;virtual void pay(); Carriage();Carriage();void enter1();virtual void Pay()const;virtual void pay();Car();Car();void enter1();virtual void Pay()const;virtual void pay();mutable float kioN; mutable int numN;mutable float gasN; 属性和方法定义类名成员类别类型成员名描述park属性intcount计数NodeLocation3车辆信息方法boolFull()判断是否停满boolEmpty()判断是否为空类名成员类别类型成员名描述Automobile属性charC64车牌号charTy16车辆类型方法boolenter()车辆进入boolleave()车辆离开floatTL()const计算时间差(为方便计算,此处以秒计算)virtual voidPay()const=0纯虚函数virtual voidpay()车辆类型, 进入时间, 车牌号,Truck属性mutablefloatkioN载重方法voidenter1()Truck进入车场virtual voidPay()const=0Truck离开车场车场,显示收费及载重virtual voidPay()显示Truck的车辆类型,进入时间,车牌号,载重量Carriage属性mutable int numN乘座人数方法voidenter1()Carriage进入车场virtual voidPay()const=0Carriage离开车场车场,显示收费及乘座人数virtual voidPay()显示Carriage的车辆类型,进入时间,车牌号,乘座人数Car属性mutable floatgasN排气量方法voidenter1()Car进入车场virtual voidPay()const=0Car离开车场车场,显示收费及排气量virtual voidPay()显示Car的车辆类型,进入时间,车牌号,排气量(三) 用户手册运行时1.程序运行时,首先提示输入1,然后根据提示,输入a(b,c)按enter根据提示输入车辆类型,车牌号,对应类型车辆附加信息。进入车站完成!返回开始输入界面。2.根据提示,若输入1,则进行转入1继续执行1;如输入2,则根据提示输入a(b,c)按enter输入要离开车辆的车牌号。按enter输出对应车辆信息。!返回开始输入界面。3. 根据提示,若输入1,则进行转入1继续执行1;如输入2则进行转入1继续执行2;若输入3则显示车场中停留车辆相关信息。返回开始输入界面。4. 根据提示,若输入1,则进行转入1继续执行1;如输入2则进行转入1继续执行2;若输入,则进行转入3继续执行3;若输入4,则保存车场中车辆信息。返回开始输入界面。5. 根据提示,若输入1,则进行转入1继续执行1;如输入2则进行转入1继续执行2;若输入,则进行转入3继续执行3;若输入4,则进行转入4继续执行4;若输入5,则退出。(四) 调试及测试由于公司每增加一个雇员,无论他(她)是哪一类人员,其编号均是顺序加1,也就是employee类的所有派生类对象创建时,都要访问同一个employeeNo,因此将employeeNo定义为静态数据成员。运行实例:请选择!1 按enter 请输入进入车场车辆:a 按enter进入停车场!请输入车辆类型:Truck 按enter请输入车牌号:123456 按enter显示进入时间:请输入载重量:5.5 按enter请选择:1 按enter请输入进入车场车辆:a 按enter进入停车场!请输入车辆类型:Truck 按enter请输入车牌号:123abc 按enter显示进入时间:请输入载重量:6.5 按enter请选择!1 按enter请输入进入车场车辆:c 按enter进入停车场!请输入车辆类型:Car 按enter请输入车牌号:1234ab 按enter显示进入时间:请输入排气量:1.2 按enter请选择!3 按enter显示停车场中相关信息!请选择:4 按enter请选择!2 按enter请输入离开车场车辆类型!a 按enter请输入要离开车辆的车牌号:123456 按enter显示:要离开时间:要离开车辆的相关信息:车辆类型:Truck车牌号:123456收费:载重:5.5吨请选择!3 按enter显示停车场中相关信息!请选择!5 按enter请按任何键结束!进一步改进(1) 可将输入界面改为MFC可视化操作。(2) 改变初始值N的大小以停放更多车辆。(3) 可添加车位监控函数,方便查看车场中空位!附录源程序/* Name: 车位管理 Copyright: Author: Date: */#include#include /文件 #include /调用系统时间 #include /控制格式 #include#includeusing namespace std; const int N=3; /停车场规模 struct node /结构体 描述停车场 基本属性 char Carinformation64; /车牌号 char type16; /车辆类型 bool full; /判断是否停满 time_t t1,t2; /停车时间 ;class Automobile;class park public: park(); park() bool Full(); /车辆进入 bool Empty(); /车辆离开 int count; /计数 node locationN; /三个车位 ;park:park() /初始化 count=0; for(int i=0;i=N) return true; return false; bool park:Empty() /判断是否为空 if(count=0) return true; return false; class Automobile:public park public: Automobile(); Automobile() bool enter(); /进入 bool leave(); /离开 float TL()const; /计算时间 virtual void Pay()const=0;/纯虚函数控制输出 virtual void pay(); protected: char C64; char ty16;Automobile:Automobile():park() C64=0; ty16=0;float Automobile:TL()const float s=0; for(int i=0;iN;i+) if(strcmp(locationi.Carinformation,C)=0) s=locationi.t2-locationi.t1; /系统参数,为方便显示结果在此利用秒来计数 break; return s; bool Automobile:enter() /进入 cout进入停车场!endl; if(Full()=1) cout车位已满!endl; return true; else cout请输入车辆类型:ty; cout请输入车牌号:C; for(int i=0;iN;) if(locationi.full=false) strcpy(locationi.Carinformation,C); strcpy(locationi.type,ty); count+; locationi.full=true; locationi.t1=time(0); /开始计时 char tmp16; strftime( tmp, sizeof(tmp),%X,localtime(&locationi.t1) ); cout进入时间:tmpendl; return false; else i+; cout车位已满!endl; return true; bool Automobile:leave() /离开 if(Empty()=1) cout车位已空!endl; return false; else cout请输入要离开车辆的车牌号:C; for(int i=0;iN;) if(strcmp(locationi.Carinformation,C)=0) locationi.t2= time(0); /离开时间 char tmp16; strftime( tmp, sizeof(tmp),%X,localtime(&locationi.t2) ); cout离开时间时间:endl; couttmpendl; cout要离开车辆的相关信息:endl; cout车辆类型:locationi.typeendl; locationi.type16=0; cout车牌号:locationi.Carinformationendl; locationi.Carinformation64=0; locationi.full=false; count-; return true; else i+; cout该车不在其中!endl; return false; void Automobile:pay() /显示车辆类型及车牌号 for(int i=0;iN;i+) if(locationi.full=1) cout车辆类型:locationi.typeendl; cout车牌号:locationi.Carinformationendl; class Truck: public Automobile public: Truck(); Truck() void enter1(); virtual void Pay()const; virtual void pay(); mutable float kioN; /const函数中修改数值 ;Truck:Truck():Automobile() for(int i=0;iN;i+) kioi=0; void Truck:enter1() /输入载重 if(enter()!=1) cout请输入载重量:endl; for(int i=0;ikioi; break; void Truck:Pay()const /显示费用及载重 cout收费:2*TL()元endl; for(int l=0;lN;l+) if(locationl.full=false)&(kiol!=0) /判断输出对应的车重 cout载重量: kiol吨endl; kiol=0; /改变车重 break; void Truck:pay()for(int i=0;iN;i+) if(locationi.full=1) cout车辆类型:locationi.typeendlendl; char tmp16; strftime( tmp, sizeof(tmp),%X,localtime(&locationi.t1) ); cout进入时间:tmpendlendl; cout车牌号:locationi.Carinformationendlendl; cout载重量: kioi吨endl; cout-endl; class Carriage: public Automobile public: Carriage(); Carriage() void enter1(); virtual void Pay()const; virtual void pay(); mutable int numN;Carriage:Carriage():Automobile() for(int i=0;iN;i+) numi=0;void Carriage:enter1() /输入人数 if(enter()!=1) cout请输入乘坐人数!endl; for(int i=0;inumi; break; void Carriage:Pay()const /显示收费及乘坐人数 cout收费:1.5*TL()元endl; for(int l=0;lN;l+) if(locationl.full=false)&( numl!=0) cout乘坐人数: numl座endl; numl=0; break; void Carriage:pay()for(int i=0;iN;i+) if(locationi.full=1) cout车辆类型:locationi.typeendlendl; char tmp16; strftime( tmp, sizeof(tmp),%X,localtime(&locationi.t1) ); cout进入时间:tmpendlendl; cout车牌号:locationi.Carinformationendlendl; cout乘坐人数: numi座endl; cout-endl; class Car: public Automobile public: Car(); Car() void enter1(); virtual void Pay()const; virtual void pay(); mutable float gasN; ;Car:Car():Automobile() for(int i=0;iN;i+) gasi=0;void Car:enter1() /输入排气量 if(enter()!=1) cout请输入排气量:endl; for(int i=0;igasi; break; void Car:Pay()const /显示收费与排气量 cout收费:1*TL()元endl; for(int l=0;lN;l+) if(locationl.full=false)&( gasl!=0) cout排气量: gaslLendl; gasl=0; break; void Car:pay()for(int i=0;iN;i+) if(locationi.full=1) cout车辆类型:locationi.typeendlendl; char tmp16; strftime( tmp, sizeof(tmp),%X,localtime(&locationi.t1) ); cout进入时间:tmpendlendl; cout车牌号:locationi.Carinformationendlendl; cout排气量: gasiLendl; cout-endl; int main() Truck A; Carriage B; Car C; park D; fstream file(f1.txt,ios:out); if(!file) cerropen error!endl; exit(1); int i; char j,k; do cout请选择!endl; cout(1)进入车场!endl; cout(2)离开车场!endl; cout(3)显示相关信息!endl; cout(4)保存数据!endl; cout(5)退出!i; system(cls); switch(i) case 1: cout请输入进入车场车辆!endl; couta-Truckendl; coutb-Carriageendl; coutc-Carendl; coutn-endl!j; switch(j) case n: break; case a: A.enter1(); break; case b: B.enter1(); break; case c: C.enter1(); break; default: break; break; case 2: cout请输入离开车场车辆类型!endl; couta-Truckendl; coutb-Carriageendl; coutc-Carendl; coutn-endl!k; switch(k) case n: break; case a: if(A.leave()=1) A.Pay(); break; case b: if(B.leave()=1) B.Pay(); break; case c: if(C.leave()=1) C.Pay(); break; default: break; break; c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论