停车场管理系统实验报告Word文档格式.docx

上传人:b****1 文档编号:5802473 上传时间:2023-05-05 格式:DOCX 页数:22 大小:253.47KB
下载 相关 举报
停车场管理系统实验报告Word文档格式.docx_第1页
第1页 / 共22页
停车场管理系统实验报告Word文档格式.docx_第2页
第2页 / 共22页
停车场管理系统实验报告Word文档格式.docx_第3页
第3页 / 共22页
停车场管理系统实验报告Word文档格式.docx_第4页
第4页 / 共22页
停车场管理系统实验报告Word文档格式.docx_第5页
第5页 / 共22页
停车场管理系统实验报告Word文档格式.docx_第6页
第6页 / 共22页
停车场管理系统实验报告Word文档格式.docx_第7页
第7页 / 共22页
停车场管理系统实验报告Word文档格式.docx_第8页
第8页 / 共22页
停车场管理系统实验报告Word文档格式.docx_第9页
第9页 / 共22页
停车场管理系统实验报告Word文档格式.docx_第10页
第10页 / 共22页
停车场管理系统实验报告Word文档格式.docx_第11页
第11页 / 共22页
停车场管理系统实验报告Word文档格式.docx_第12页
第12页 / 共22页
停车场管理系统实验报告Word文档格式.docx_第13页
第13页 / 共22页
停车场管理系统实验报告Word文档格式.docx_第14页
第14页 / 共22页
停车场管理系统实验报告Word文档格式.docx_第15页
第15页 / 共22页
停车场管理系统实验报告Word文档格式.docx_第16页
第16页 / 共22页
停车场管理系统实验报告Word文档格式.docx_第17页
第17页 / 共22页
停车场管理系统实验报告Word文档格式.docx_第18页
第18页 / 共22页
停车场管理系统实验报告Word文档格式.docx_第19页
第19页 / 共22页
停车场管理系统实验报告Word文档格式.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

停车场管理系统实验报告Word文档格式.docx

《停车场管理系统实验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《停车场管理系统实验报告Word文档格式.docx(22页珍藏版)》请在冰点文库上搜索。

停车场管理系统实验报告Word文档格式.docx

intdata;

stnode*next;

}LinkStack;

//创建一个栈头结点,无头结

voidInitStack(LinkStack*&

ls)

ls=NULL;

}

//进栈,相当于头插法

voidPush(LinkStack*&

ls,intx)

LinkStack*p;

p=(LinkStack*)malloc(sizeof(LinkStack));

p->

data=x;

next=NULL;

next=ls;

ls=p;

//出栈

voidPop(LinkStack*&

if(ls==NULL)

return;

intx;

p=ls;

while(p)

{

x=p->

data;

ls=p->

next;

cout<

<

x<

"

"

;

free(p);

p=ls;

}

cout<

出栈成功!

!

endl;

//创建栈

voidCreatStack(LinkStack*&

InitStack(ls);

inti=1,num;

以000表示输入结束!

while

(1)

请输入第"

i<

个元素:

cin>

>

num;

if(num==000)

break;

Push(ls,num);

i++;

进栈成功!

voidmain()

LinkStack*ls,*p;

CreatStack(ls);

Pop(ls);

2.#include<

#defineQueueSize100

typedefstructsqqueue

intdata[QueueSize];

intfront,rear;

}SqQueue;

//初始化队列

voidInitQueue(SqQueue&

qu)

qu.rear=qu.front=0;

//进队

intEnQueue(SqQueue&

sq,intx)

if((sq.rear+1)%QueueSize==sq.front)

return0;

sq.rear=(sq.rear+1)%QueueSize;

sq.data[sq.rear]=x;

return1;

//出队

voidDeQueue(SqQueue&

sq)

if(sq.front==sq.rear)

while(sq.front!

=sq.rear)

sq.front=(sq.front+1)%QueueSize;

x=sq.data[sq.front];

出队成功!

//创建队

voidCreatQueue(SqQueue&

InitQueue(sq);

intnum,i=1;

以000表示输入结束!

EnQueue(sq,num);

进队成功!

SqQueuesq;

CreatQueue(sq);

DeQueue(sq);

3.#include<

stdio.h>

#defineMAX2

#defineprice0.05

typedefstructnode

inthour;

intmin;

}Time;

//时间结点

typedefstructNode

charnum[10];

//车牌号

Timereach;

//时间

Timeleave;

}CarNode;

//车辆信息结点

typedefstructNODE

CarNode*stack[MAX];

inttop;

}CarStack;

//顺序栈模拟车站

typedefstructQNode//队列

CarNode*data;

QNode*next;

}QueueNode;

//链队结点类型

typedefstructpqrt

QueueNode*front,*rear;

//设置头指针尾指针

}LinkQueueCar;

//模拟通道

//初始化栈

voidInitStack(CarStack*cs);

//初始化队列(便道)

intInitQueue(LinkQueueCar*qc);

//车辆到达

intArrival(CarStack*Enter,LinkQueueCar*qc);

//车辆离开

voidLeave(CarStack*Enter,CarStack*Temp,LinkQueueCar*qc);

//显示车库信息

voidList(CarStacks,LinkQueueCarw);

CarStackEnter,Temp;

LinkQueueCarWait;

intch;

InitStack(&

Enter);

Temp);

InitQueue(&

Wait);

欢迎光临"

-----------------------"

1.车辆到达"

2.车辆离开"

3.车场显示"

4.退出程序"

请选择所需的服务!

while

(1)

{

cin>

ch;

if(ch>

=1&

&

ch<

=4)

break;

}

switch(ch)

case1:

Arrival(&

Enter,&

case2:

Leave(&

Temp,&

case3:

List(Enter,Wait);

case4:

exit(0);

default:

break;

voidInitStack(CarStack*cs)

cs->

top=-1;

for(inti=0;

MAX;

i++)

cs->

stack[cs->

top]=NULL;

intInitQueue(LinkQueueCar*qc)//初始化队列

//qc=(LinkQueueCar*)malloc(sizeof(LinkQueueCar));

这句话不能要?

?

qc->

front=(QueueNode*)malloc(sizeof(QueueNode));

if(qc->

front!

=NULL)

qc->

front->

//带头结点的

rear=qc->

front;

//一定要注意赋值顺序不能反了!

return1;

else

return-1;

//打印车站车离开的信息

voidPrint(CarNode*p,introom)

intA1,A2,B1,B2;

//车辆收费

请输入离开时间:

/**:

**/"

请输入离开时间的时(0-23):

cin>

p->

leave.hour;

while(p->

leave.hour<

reach.hour||p->

leave.hour>

23)

error!

B1=p->

请输入离开时间的分钟(0-59):

leave.min;

leave.min<

0||p->

leave.min>

59)

B2=p->

endl<

离开汽车的车牌号为:

puts(p->

num);

其到达时间为:

reach.hour<

:

reach.min<

其离开时间为:

A1=p->

reach.hour;

A2=p->

reach.min;

应交费用为:

((B1-A1)*60+(B2-A2))*price<

元"

free(p);

intArrival(CarStack*Enter,LinkQueueCar*qc)

CarNode*p;

QueueNode*t;

p=(CarNode*)malloc(sizeof(CarNode));

请输入车牌号(例A8888):

gets(p->

if((Enter->

top+1)<

MAX)

Enter->

top++;

车辆在车场第"

Enter->

top<

位置"

请输入到达时间:

请输入到达时间的时(0-23):

while(p->

reach.hour>

cout<

请输入到达时间的分(0-59):

stack[Enter->

top]=p;

//注意数组下标是从0开始,在显示时下标也要与之对应

车近停车场成功!

该车需在便道上等待!

t=(QueueNode*)malloc(sizeof(QueueNode));

//进队列

t->

data=p;

rear->

next=t;

rear=t;

车进便道成功!

voidLeave(CarStack*Enter,CarStack*Temp,LinkQueueCar*qc)

CarNode*p,*t;

QueueNode*q;

introom;

if(Enter->

top>

-1)//判断车场是否为空

请输入车在车场中的位置:

room;

if(room>

=0&

room<

=Enter->

top)

//要离开的车后面还有车,则后面的车需进入临时栈给前面的车让路

while(Enter->

room)//用Enter->

top和room相比看你的车在第几个位置,前面的几辆车需全部让路

Temp->

stack[Temp->

top]=Enter->

top];

Enter->

top--;

//让路完以后车再离开

p=Enter->

//车离开后,如果临时栈里有车,重新进车站

while(Temp->

=0)

top]=Temp->

临时车场里的车重新进站成功!

Print(p,room);

//调用计费函数

//车离开后如果便道上有车,也进车站

if(qc->

=qc->

rear&

MAX)//判断便道上是否有车以及车站是否已满

q=qc->

t=q->

便道上的"

t->

num<

号车进入车场第"

请输入现在的时间:

while(t->

0||t->

{

cout<

cin>

}

qc->

next=q->

//出便道

if(q==qc->

rear)qc->

front=qc->

rear;

top]=t;

//进车站

free(q);

便道的车进入停车场成功!

else

便道里没有车!

车场里没有车!

voidList1(CarStack*s)//显示车场信息

inti;

if(s->

-1)

车场"

位置时间车牌号"

for(i=0;

(s->

top+1);

s->

stack[i]->

voidList2(LinkQueueCar*w)//显示便道信息

QueueNode*p;

p=w->

//p先指向第一辆车,

if(w->

=w->

rear)//判断便道是否为空

等待车辆的号码为:

while(p)//用指针p遍历输出数据

puts(p->

data->

p=p->

voidList(CarStacks,LinkQueueCarw)//显示整个停车场的信息

intflag,tag;

flag=1;

while(flag)

请选择1|2|3:

1.车场"

2.便道"

3.返回"

tag;

if(tag>

=1||tag<

=3)

else

switch(tag)

List1(&

s);

List2(&

w);

flag=0;

五、程序运行情况(写出输入数据及运行结果)

 

六、小结(包括收获、心得体会、存在的问题及解决问题的方法、建议等)

本次实验前两题是栈和队列的基本算法,是基础练习,关键是第三题,具体谈谈我理解的停车场。

停车场系统总的来说分为五大块,第一块和第二块属于基本操作,包括初始化栈和队列;

第三块是车到达,分为两个层次:

1.车到达了进栈2.栈满,进队列。

第四块是车离开,分为五个层次:

1.车离开,判断该车后面是否还有车2.有车的话,后面的车让路,进临时栈3.然后该车离开,打印出离开信息4.离开后,判断临时栈上是否有车,有车重新进车站5.再判断便道上是否有车,有车也进车站。

第五块是显示车站信息,分为三个层次:

1.显示车站信息2.显示便道信息3.返回。

整个停车场系统涉及的结构体有:

1.描述时间Time2.描述一辆车CarNode

3.模拟车站CarStack4.模拟便道QueueNode,LinkQueueCar

整个停车场系统涉及的函数有;

1.栈和队列的初始化2.车进站3.车出战4.计费函数

5.显示车站信息6.显示便道信息7.显示整个停车场的信息

需要注意的问题:

1.在初始化栈是top=-1或0是不一样的,涉及到后面显示时数组下标的问题。

另外因为栈中包含指针数组所以必须给指针初始化

2.车出站时分的几个层次都要考虑到,注意函数的参数包括三部分(车站,临时车站,队列),注意各个环节的连接,临时栈的应用。

在判断车在第几个位置时需要根据自己输入车在车场的位置,然后与top比较,看车是否在栈尾,是直接出栈还是需要让路后在出栈?

判断便道上的车是否能进车站时要根据两个条件,一是便道上有车,二是车站没满。

3.显示时要注意数组的下标,初始化时top=-1,所以在用for循环遍历所有的结点时要用for(i=0;

i++)才能正确输出。

4.在写计费函数时,分别用几个变量存放到达和离开的时间,做减法后乘以价格输出就行了,容易实现关键是要理解。

5.主函数和显示函数中都用的是switch语句,很好用。

同时我觉得while

(1)死循环也很好用,以后要试着多用。

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

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2