车位管理课程设计报告.docx

上传人:b****3 文档编号:5445279 上传时间:2022-12-16 格式:DOCX 页数:25 大小:24.10KB
下载 相关 举报
车位管理课程设计报告.docx_第1页
第1页 / 共25页
车位管理课程设计报告.docx_第2页
第2页 / 共25页
车位管理课程设计报告.docx_第3页
第3页 / 共25页
车位管理课程设计报告.docx_第4页
第4页 / 共25页
车位管理课程设计报告.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

车位管理课程设计报告.docx

《车位管理课程设计报告.docx》由会员分享,可在线阅读,更多相关《车位管理课程设计报告.docx(25页珍藏版)》请在冰豆网上搜索。

车位管理课程设计报告.docx

车位管理课程设计报告

课程设计报告

设计题目:

车位管理

学生姓名:

专业:

班级:

学号:

指导教师:

完成日期:

 

(一)需求和规格说明

随着家庭购买汽车的增加,停车场车位紧张的问题越来越突出。

请根据题目要求完成简单的车位管理程序。

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)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1