数据结构实验报告模拟停车场管理(含代码).docVIP

  • 114
  • 0
  • 约1.17万字
  • 约 15页
  • 2016-10-19 发布于重庆
  • 举报

数据结构实验报告模拟停车场管理(含代码).doc

数据结构实验报告模拟停车场管理(含代码)

模拟停车场管理 班级:物联网 姓名:XXX 学号:XXXXXXX 日期:4月9日 一、需求分析 1、程序的功能描述 按照从终端输入的数据序列进行模拟管理。 1)狭道停车用栈来实现,并且用的顺序栈,等车位的便道用队列来实现,并用链 式存储。 2)每一组输入信息包含三个数据项,汽车的“到达”和“离去”的信息,汽车牌 照号码,汽车“到达”或“离去”的时刻。 3)对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出车辆在停车场内或便道上的停车位置;若是车子离去,则输出车辆在停车场内停留的时间和缴纳的费用。(假设在便道等车的时间不收费) 4)选作内容:(1)便道也是要收费的,仅仅比狭道收费便宜点。 (2)狭道上的车可以直接开走。 输入/输出的要求 首先选择操作的模块,根据提示输入车牌和到达时间,程序会告知是否停满或者停车车位。车牌为10个字符以内的字符串,时间的输入中间有冒号把时分隔开。 测试数据 1 苏D543 1:10 1 苏Q123 1:20 1 苏D145 1:30 二、概要设计 1、本程序所用的抽象数据类型的定义 typedef struct NODE{ CarNode *stack[MAX+1]; int top; }SeqStackCar;//狭道的堆栈顺序存储 typedef struct car{ CarNode *data; struct car *next; }QueueNode;//队列的链式存储 typedef struct Node{ QueueNode *head; QueueNode *rear; }LinkQueueCar;//便道上等候的队列定义 主模块的流程及各子模块的主要功能 车辆到达:int Arrival(SeqStackCar *Enter,LinkQueueCar *W)首先定义一个栈和队列的结构体指针为:*p , *t 。然后申请一个车辆信息的内存空间,并把它赋给栈指针。 车辆到达时就输入车牌号,并通过if(Enter-topMAX)来判断该车是进车场内还是进便道上,如果是进车场内就把top 加1,显示 在车场内的位置,还要输入进车场的时间,然后把该节点进栈。如果是else 就显示该车要停在便道上,并进行进队列的操作。 车辆离开: void Leave(SeqStackCar *Enter,SeqStackCar *Temp,LinkQueueCar *W) 定义一个整型变量room 记录要离开车辆的位置,定义两个栈指针和一个队列指针, 用个if(Enter-top0) 确保栈不空,然后用个while(1) 确保输入的车辆离开位置的合法 性。如果不和法,显示输入有误,要重新输入。通过while(Enter-toproom) 判断离开车辆的位置,如果是中间位置,就要再用一个栈前面临时开出来的车,等要开出的车开出后,再把临时栈的车看进 车场内,并要调用PRINT(p,room); 这个函数计算显示费用。然后还要用 if((W-head!=W-rear)Enter-topMAX) 语句判断便道上有没有车,如果有车就要显示进车场的车的车牌号,并登记进入时间。 模块之间的层次关系 主函数中包含着各个函数模块,各模块也在互相调用。比如,离开函数中要计算停车费,故要调取价格函数。价格函数计算要用到离开和进入的时间,又要调用进入和离开函数。 三、详细设计 1、采用C语言定义相关的数据类型 #define MAX 3 // 停车场最大容量为3辆,便于观察 #define price 0.05 typedef struct time{ // 定义时间结构体 int hour; int min; }Time; typedef struct node{ // 定义车辆信息结构体 char num[10]; Time reach; Time leave; }CarNode; 写出各模块的伪码算法 void PRINT(CarNode *p,int room){ // 车辆收费 int A1,A2,B1,B2; printf(\n车辆离开的时间:); scanf(%d:%d,(p-leave.hour),(p-leave.min)); printf(\n离开

文档评论(0)

1亿VIP精品文档

相关文档