车位管理课程设计报告.docx
- 文档编号:5445279
- 上传时间:2022-12-16
- 格式:DOCX
- 页数:25
- 大小:24.10KB
车位管理课程设计报告.docx
《车位管理课程设计报告.docx》由会员分享,可在线阅读,更多相关《车位管理课程设计报告.docx(25页珍藏版)》请在冰豆网上搜索。
车位管理课程设计报告
课程设计报告
设计题目:
车位管理
学生姓名:
专业:
班级:
学号:
指导教师:
完成日期:
(一)需求和规格说明
随着家庭购买汽车的增加,停车场车位紧张的问题越来越突出。
请根据题目要求完成简单的车位管理程序。
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类的相关信息,除了定义构造函数和析构函数以外,还有纯虚函数virtualvoidPay()const=0用于显示车辆信息以及车牌号及车辆类型等相关数据;enter()与leave()函数用于控制车辆进出,以及虚函数virtualvoidpay()用于保存车辆信息;定义派生类Truck,Carriage和Car,这些车辆除了拥有车牌号、之外,分别具有载重,乘坐人数,排气量等信息;
系统类图
classPark
park();
~park()
boolFull();boolEmpty();
intcount;nodelocation[N];
classAutomobile
Automobile();
~Automobile(){}
boolenter();
boolleave();
floatTL()const;
virtualvoidPay()const=0;
virtualvoidpay();
charC[64];
charty[16];
classTruck
classCarriage
classCar
Truck();
~Truck();
voidenter1();
virtualvoidPay()const;
virtualvoidpay();
Carriage();
~Carriage();
voidenter1();
virtualvoidPay()const;
virtualvoidpay();
Car();
~Car();
voidenter1();
virtualvoidPay()const;
virtualvoid
pay();
mutablefloatkio[N];
mutableintnum[N];
mutablefloatgas[N];
属性和方法定义
类名
成员类别
类型
成员名
描述
park
属性
int
count
计数
Node
Location[3]
车辆信息
方法
bool
Full()
判断是否停满
bool
Empty()
判断是否为空
类名
成员类别
类型
成员名
描述
Automobile
属性
char
C[64]
车牌号
char
Ty[16]
车辆类型
方法
bool
enter()
车辆进入
bool
leave()
车辆离开
float
TL()const
计算时间差(为方便计算,此处以秒计算)
virtualvoid
Pay()const=0
纯虚函数
virtualvoid
pay()
车辆类型,进入时间,车牌号,
Truck
属性
mutable
float
kio[N]
载重
方法
void
enter1()
Truck进入车场
virtualvoid
Pay()const=0
Truck离开车场车场,显示收费及载重
virtualvoid
Pay()
显示Truck的车辆类型,进入时间,车牌号,载重量
Carriage
属性
mutableint
num[N]
乘座人数
方法
void
enter1()
Carriage进入车场
virtualvoid
Pay()const=0
Carriage离开车场车场,显示收费及乘座人数
virtualvoid
Pay()
显示Carriage的车辆类型,进入时间,车牌号,乘座人数
Car
属性
mutablefloat
gas[N]
排气量
方法
void
enter1()
Car进入车场
virtualvoid
Pay()const=0
Car离开车场车场,显示收费及排气量
virtualvoid
Pay()
显示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
#include
usingnamespacestd;
constintN=3;//停车场规模
structnode//结构体描述停车场基本属性
{
charCarinformation[64];//车牌号
chartype[16];//车辆类型
boolfull;//判断是否停满
time_tt1,t2;//停车时间
};
classAutomobile;
classpark
{
public:
park();
~park(){}
boolFull();//车辆进入
boolEmpty();//车辆离开
intcount;//计数
nodelocation[N];//三个车位
};
park:
:
park()//初始化
{
count=0;
for(inti=0;i { location[i].full=false; location[i].Carinformation[64]=0; location[i].type[16]=0; location[i].t1=0; location[i].t2=0; } } boolpark: : Full()//判断是否停满 { if(count>=N) returntrue; returnfalse; } boolpark: : Empty()//判断是否为空 { if(count==0) returntrue; returnfalse; } classAutomobile: publicpark { public: Automobile(); ~Automobile(){} boolenter();//进入 boolleave();//离开 floatTL()const;//计算时间 virtualvoidPay()const=0;//纯虚函数控制输出 virtualvoidpay(); protected: charC[64]; charty[16]; }; Automobile: : Automobile(): park() { C[64]=0; ty[16]=0; } floatAutomobile: : TL()const { floats=0; for(inti=0;i if(strcmp(location[i].Carinformation,C)==0) { s=location[i].t2-location[i].t1;//系统参数,为方便显示结果在此利用秒来计数 break; } returns; } boolAutomobile: : enter()//进入 { cout<<"进入停车场! "< if(Full()==1) { cout<<"车位已满! "< returntrue; } else { cout<<"请输入车辆类型: "< cin>>ty; cout<<"请输入车牌号: "< cin>>C; for(inti=0;i if(location[i].full==false) { strcpy(location[i].Carinformation,C); strcpy(location[i].type,ty); count++; location[i].full=true; location[i].t1=time(0);//开始计时 chartmp[16]; strftime(tmp,sizeof(tmp),"%X",localtime(&location[i].t1)); cout<<"进入时间: "< returnfalse; } else i++; cout<<"车位已满! "< returntrue; } } boolAutomobile: : leave()//离开 { if(Empty()==1) { cout<<"车位已空! "< returnfalse; } else { cout<<"请输入要离开车辆的车牌号: "< cin>>C; for(inti=0;i if(strcmp(location[i].Carinformation,C)==0) { location[i].t2=time(0);//离开时间 chartmp[16]; strftime(tmp,sizeof(tmp),"%X",localtime(&location[i].t2)); cout<<"离开时间时间: "< cout< cout<<"要离开车辆的相关信息: "< cout<<"车辆类型: "< location[i].type[16]=0; cout<<"车牌号: "< location[i].Carinformation[64]=0; location[i].full=false; count--; returntrue; } else i++; cout<<"该车不在其中! "< returnfalse; } } voidAutomobile: : pay()//显示车辆类型及车牌号 { for(inti=0;i if(location[i].full==1) { cout<<"车辆类型: "< cout<<"车牌号: "< } } classTruck: publicAutomobile { public: Truck(); ~Truck(){} voidenter1(); virtualvoidPay()const; virtualvoidpay(); mutablefloatkio[N];//const函数中修改数值 }; Truck: : Truck(): Automobile() { for(inti=0;i kio[i]=0; } voidTruck: : enter1()//输入载重 { if(enter()! =1) { cout<<"请输入载重量: "< for(inti=0;i if(kio[i]==0) { cin>>kio[i]; break; } } } voidTruck: : Pay()const//显示费用及载重 { cout<<"收费: "<<2*TL()<<"元"< for(intl=0;l if((location[l].full==false)&&(kio[l]! =0))//判断输出对应的车重 { cout<<"载重量: "< kio[l]=0;//改变车重 break; } } voidTruck: : pay() { for(inti=0;i if(location[i].full==1) { cout<<"车辆类型: "< chartmp[16]; strftime(tmp,sizeof(tmp),"%X",localtime(&location[i].t1)); cout<<"进入时间: "< cout<<"车牌号: "< cout<<"载重量: "< cout<<"-------------"< } } classCarriage: publicAutomobile { public: Carriage(); ~Carriage(){} voidenter1(); virtualvoidPay()const; virtualvoidpay(); mutableintnum[N]; }; Carriage: : Carriage(): Automobile() { for(inti=0;i num[i]=0; } voidCarriage: : enter1()//输入人数 { if(enter()! =1) { cout<<"请输入乘坐人数! "< for(inti=0;i if(num[i]==0) { cin>>num[i]; break; } } } voidCarriage: : Pay()const//显示收费及乘坐人数 { cout<<"收费: "<<1.5*TL()<<"元"< for(intl=0;l if((location[l].full==false)&&(num[l]! =0)) { cout<<"乘坐人数: "< num[l]=0; break; } } voidCarriage: : pay() { for(inti=0;i if(location[i].full==1) { cout<<"车辆类型: "< chartmp[16]; strftime(tmp,sizeof(tmp),"%X",localtime(&location[i].t1)); cout<<"进入时间: "< cout<<"车牌号: "< cout<<"乘坐人数: "< cout<<"-------------"< } } classCar: publicAutomobile { public: Car(); ~Car(){} voidenter1(); virtualvoidPay()const; virtualvoidpay(); mutablefloatgas[N]; }; Car: : Car(): Automobile() { for(inti=0;i gas[i]=0; } voidCar: : enter1()//输入排气量 { if(enter()! =1) { cout<<"请输入排气量: "< for(inti=0;i if(gas[i]==0) { cin>>gas[i]; break; } } } voidCar: : Pay()const//显示收费与排气量 { cout<<"收费: "<<1*TL()<<"元"< for(intl=0;l if((location[l].full==false)&&(gas[l]! =0)) { cout<<"排气量: "< gas[l]=0; break; } } voidCar: : pay() { for(inti=0;i if(location[i].full==1) { cout<<"车辆类型: "< chartmp[16]; strftime(tmp,sizeof(tmp),"%X",localtime(&location[i].t1)); cout<<"进入时间: "< cout<<"车牌号: "< cout<<"排气量: "< cout<<"-------------"< } } intmain() { TruckA; CarriageB; CarC; parkD; fstreamfile("f1.txt",ios: : out); if(! file) { cerr<<"openerror! "< exit (1)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 车位 管理 课程设计 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)