数据结构-停车场管理-实习报告.doc数据结构-停车场管理-实习报告实习报告题目:停车场管理需求分析用栈來表示停车场,用队列來表示停车道。用户需输入车辆的必要信息,如车辆的到达或离开,汽车牌号以及到达或离去的时刻。停车场的容量及单位吋间的停车费由编程序者自行设置,结构需输出车辆停车所需缴纳的费用。本程序要求对车辆的动态能够输出具体的信息内容,包括停车或离开的时间,位置,及所需缴纳的停车费。测试数据为:N=2,输入数据为:('A',1,5),('A',2-40),(’D',1,15),(W320),(W,4,25),( ,5,30), ('D'235),(O,4,40),(它,0,0).其中JX表示到达,'》表示离去,'E,表示输入结束。稈序执彳亍的命令为:创建栈和队列。2•对车辆的行为进行相应的处理。。概要设计1•设定栈的抽象数据类型定义:ADTStack{数据对象:D={ai|ai属于Elem,i=l,2……,n,n>=O}数据关系:Rl={<ai-1,ai>|ai-l,ai属于D,i=2, , n}基木操作:lnitStack(&S)操作结果:(&S,&e)初始条件:栈S己存在。操作结果:删除S的栈顶元素,并以e返回其值。push(&S,&e)初始条件:栈S已存在。操作结果:在栈S的栈顶插入新的栈顶元素e。EmptyStack(S)初始条件:栈S已存在。操作结果:若栈为空,则返回TRUE,否则,返回FALSE}ADTStack;设定队列的抽象数据类型定义:{数据对象:D={ai|ai属于Elem,i=l,2, , n,n>二0}数据关系:Rl={<ai-1,ai>|ai-l,ai属于D,i=2, ,n}基本操作:lnitQueue(&Q)操作结果:构造一个空队列QAppend(&Q,e)初始条件:队列Q己存在。操作结果:插入元素e为Q的新的队尾元素。Remove(&Q,&e)初始条件:Q为非空队列。EmptyQueue(Q)返回FALSE操作结果:删除Q的对头元素,并用e返冋其值。初始条件:队列Q己存在。操作结果:若队列为空,则返回TRUE,否则,}ADTQueue本程序主要包括三个模块主程序模块;intmain(){初始化;do{接受命令;处理命令;}while(命令!二退出);}处理车辆到达模块;3•处理车辆离开模块;各模块之间的调用关系如下:处理车辆到达模块一主程序模块f处理车辆离开模块详细设计设计程序如下:2•栈的头文件#ifndef_SQSTACK_H_#define_SQSTACK_H_structCar{intplate,arrive_t;};classSqStack{public:inttop;Car*base;intsize;voidlnitStack(intm=100);boolEmptyStack()const;boolPush(Car&c);boolPop(Car&c);};voidSqStack::!nitStack(intn){base=newCar[n];top=-1;size=n;}boolSqStack::EmptyStack()const{if(top==-1)returntrue;elsereturnfalse;}boolSqStack::Push(Car&c){if(top==size-1)returnfalse;else{top++;base[top]=c;returntrue;}}boolSqStack::Pop(Car&c){if(top==-1)returnfalse;elsec=base[top];top-;returntrue;}#encHf2•队列的头文件#ifndefLINKQUEUE_H_#defineLINKQUEUE_H_#include<>#defineNULLOstructLinkNode{Cardata;LinkNode*next;};classLinkQueue{public:LinkNode*front;//dummyheadLinkNode*rear;voidInitQueue();boolEmptyQueue()const;boolAppend(Car&c);boolRemove(Car&c); };voidLinkQueue::InitQueue(){front=rear=newLinkNode;rear->next=NULL;::EmptyQueue()const{returnfront==rear;}bool
数据结构-停车场管理-实习报告 来自淘豆网m.daumloan.com转载请标明出处.