一、选择题(每小题2分,共20分)
模拟停车场管理
班级:物联网 姓名:XXX 学号:XXXXXXX 日期:4月9日
一、需求分析 1、程序的功能描述
按照从终端输入的数据序列进行模拟管理。
1)狭道停车用栈来实现,并且用的顺序栈,等车位的便道用队列来实现,并用链 式存储。
2)每一组输入信息包含三个数据项,汽车的“到达”和“离去”的信息,汽车牌 照号码,汽车“到达”或“离去”的时刻。
3)对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出车辆在停车场内或便道上的停车位置;若是车子离去,则输出车辆在停车场内停留的时间和缴纳的费用。(假设在便道等车的时间不收费)
4)选作内容:(1)便道也是要收费的,仅仅比狭道收费便宜点。 (2)狭道上的车可以直接开走。
2、输入/输出的要求
首先选择操作的模块,根据提示输入车牌和到达时间,程序会告知是否停满或者停车车位。车牌为10个字符以内的字符串,时间的输入中间有冒号把时分隔开。
页脚内容1
一、选择题(每小题2分,共20分)
3、测试数据
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;
页脚内容2
一、选择题(每小题2分,共20分)
}LinkQueueCar;//便道上等候的队列定义
2、主模块的流程及各子模块的主要功能
1车辆到达:int Arrival(SeqStackCar *Enter,LinkQueueCar *W)首先定义一个栈和队列的结构体指针 ○
为:*p , *t 。然后申请一个车辆信息的内存空间,并把它赋给栈指针。 车辆到达时就输入车牌号,并通过if(Enter->top 2车辆离开: void Leave(SeqStackCar *Enter,SeqStackCar *Temp,LinkQueueCar *W) ○ 定义一个整型变量room 记录要离开车辆的位置,定义两个栈指针和一个队列指针, 用个if(Enter->top>0) 确保栈不空,然后用个while(1) 确保输入的车辆离开位置的合法 性。如果不和法,显示输入有误,要重新输入。通过while(Enter->top>room) 判断离开车辆的位置,如果是中间位置,就要再用一个栈前面临时开出来的车,等要开出的车开出后,再把临时栈的车看进 车场内,并要调用PRINT(p,room); 这个函数计算显示费用。然后还要用 if((W->head!=W->rear)&&Enter->top 页脚内容3 一、选择题(每小题2分,共20分) 初始化两个栈列车场便道退Room对判断栈是元素进栈元素进队栈Enter元队列队列中元页脚内容4 结 一、选择题(每小题2分,共20分) 3、模块之间的层次关系 主函数中包含着各个函数模块,各模块也在互相调用。比如,离开函数中要计算停车费,故要调取价格函数。价格函数计算要用到离开和进入的时间,又要调用进入和离开函数。 三、详细设计 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; 页脚内容5