数据结构停车场管理实习报告_数据结构停车场管理

2020-02-27 实习报告 下载本文

数据结构停车场管理实习报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“数据结构停车场管理”。

实习报告

题目:停车场管理

一. 需求分析

1. 用栈来表示停车场,用队列来表示停车道。

2. 用户需输入车辆的必要信息,如车辆的到达或离开,汽车牌号以及到达或离去的时刻。停车场的容量及单位时间的停车费由编程序者自行设置,结构需输出车辆停车所需缴纳的费用。

3. 本程序要求对车辆的动态能够输出具体的信息内容,包括停车或离开的时间,位置,及所需缴纳的停车费。4. 测试数据为:

N=2,输入数据为:(’A’,1,5),(‘A’,2.,10),(‘D’,1,15),(‘A’,3,20),(‘A’,4,25),(‘A’,5,30),(‘D’,2,35),(‘D’,4,40),(‘E’,0,0).其中:’A’表示到达,’D’表示离去,’E’表示输入结束。5.程序执行的命令为:

1.创建栈和队列。2.对车辆的行为进行相应的处理。3.输出车辆的信息。

二. 概要设计

1.设定栈的抽象数据类型定义:

ADT Stack{

数据对象:D={ai|ai属于Elem,i=1,2……,n, n>=0}

数据关系:R1={| ai-1,ai属于D,i=2,……,n}

基本操作:

InitStack(&S)

操作结果:构造一个空栈S.pop(&S,&e)

初始条件:栈S已存在。

操作结果:删除S的栈顶元素,并以e返回其值。

push(&S,&e)

初始条件:栈S已存在。

操作结果:在栈S的栈顶插入新的栈顶元素e。

EmptyStack(S)

初始条件:栈S已存在。

操作结果:若栈为空,则返回TRUE,否则,返回FALSE }ADT Stack;2.设定队列的抽象数据类型定义:

ADT Queue{

数据对象:D={ai| ai属于Elem, i=1,2,……,n, n>=0}

数据关系:R1={| ai-1,ai 属于D,i=2,……,n}

基本操作:

InitQueue(&Q)

操作结果:构造一个空队列Q.Append(&Q, e)

初始条件:队列Q已存在。

操作结果:插入元素e为Q的新的队尾元素。

Remove(&Q, &e)

初始条件:Q为非空队列。

操作结果:删除Q的对头元素,并用e返回其值。

EmptyQueue(Q)

初始条件:队列Q已存在。

操作结果:若队列为空,则返回TRUE,否则,返回FALSE

}ADT Queue 3.本程序主要包括三个模块

1.主程序模块;

int main(){

初始化;

do{

接受命令;

处理命令;

}while(命令!=退出); } 2.处理车辆到达模块; 3.处理车辆离开模块;

各模块之间的调用关系如下:

处理车辆到达模块主程序模块处理车辆离开模块

三. 详细设计

设计程序如下: 1.栈的头文件

#ifndef _SQSTACK_H_ #define _SQSTACK_H_ struct Car { int plate, arrive_t;};cla SqStack { public: int top;Car *base;int size;void InitStack(int m=100);bool EmptyStack()const;bool Push(Car &c);bool Pop(Car &c);};void SqStack::InitStack(int n){ base = new Car[n];top =-1;size = n;} bool SqStack::EmptyStack()const { if(top ==-1)

return true;else

return false;} bool SqStack::Push(Car &c){ if(top == sizec.arrive_t;if(timelong

cout

packing.Push(c);

while(!temp.EmptyStack())

{

temp.Pop(c);

packing.Push(c);

}

return 0;} cout

temp.Pop(c);

packing.Push(c);}

if(!sevice_road.EmptyQueue())

{

sevice_road.Remove(c);

map[c.plate] = 0;

c.arrive_t = tim;

packing.Push(c);

cout

} } return 0;} int main(){ cout > n;cout > command;while(command!= 'E'){

if(command == 'A')

{

Arrive(packing, sevice_road);

cout

}

if(command == 'D')

{

Depart(packing, temp, sevice_road);

cout

}

cin >> command;} }

车牌号时间“

四. 调试与验收

1.本次作业是设计停车场的管理系统,就需要判断车牌号,及时间的输入的正确性,输入的数据有比较严格的要求,必须符合实际。因此对数据需要多次判断。2.处理车辆到达模块和处理车辆离开模块其空间复杂度为O(m*n);3.本程序循环用的很多,找车,排队,等等。

4.在验收时,老师提出一些当输入为不正常输入的时候的情况,而我没有考虑到,所以又做了一定的修改。

5.验收时,老师提到所加map破坏了程序整体结构的完好性,是有待改进的地方。

用户手册

1.按屏幕提示输入停车场规模和车辆信息; 2.回车显示车辆在停车场或停车道的信息; 3.输入E退出。

六. 测试结果

七 附录

源程序文件名清单: LinkQueue.cpp LinkQueue.h SqStack.cpp

SqStack.h 停车场管理.cpp

《数据结构停车场管理实习报告.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
数据结构停车场管理实习报告
点击下载文档
相关专题 数据结构停车场管理 实习报告 数据结构 停车场 数据结构停车场管理 实习报告 数据结构 停车场
[实习报告]相关推荐
    [实习报告]热门文章
      下载全文