a.车辆到达模块:到达时有两种情况,即车场是否满,未满则直接进入停车场;满时,到便道等待。如图2。 车辆到达停车场是否满是否进入停车场进入便道
结束 (图2)
b.车辆离开模块:离开时,当车库为空时,提示没有车,结束;否则车辆离开。如图3。 车辆离开停车场是否空是否车辆离开提示没有车是便道是否有车车进入车场否结束
6
(图3)
c.显示模块:显示模块有两个显示选项,即:车场与便道。如图4。
列表显示判断输入值2.便道1.车场显示车场列表显示便道列表结束 (图4)
4、主要要点说明 a.主程序 Void main() { 声明定义
调用栈与队列的函数
主信息(输入初始操作信息) }
b.栈---实现栈抽象数据类型
c.队列---实现队列抽象数据类型 d.结构体---用于对对象及变量的管理 它们之间的调用关系如下:
7
主程序 ↓ 结构体 ↓ 栈 ↓ 队列
五、详细设计(实现程序模块的具体算法)
1.菜单选项
应用switch分支循环对应的数字类别,执行相应的系统功能。
2.动画
欢迎动画从屏幕下方上升,结束动画是从屏幕上方下落。动画
是由输出的图案叠加而成,输出一个图案便立刻清屏,接着输出下一时刻的图案,一次输出一次清屏便在人眼中形成动画效果。
开头动画
结束动画
3.停车场系统
a、结构体声明与定义
typedef struct time{ int hour;
8
int min;
}Time; /*时间结点*/
typedef struct node{ char num[10]; Time reach; Time leave;
}CarNode; /*车辆信息结点*/
typedef struct NODE{ CarNode *stack[Max+1]; int top;
}SeqStackCar; /*模拟车站*/
typedef struct car{ CarNode *data; struct car *next;
}QueueNode; /*队列信息结点*/
typedef struct Node{ QueueNode *head;
}LinkQueueCar; /*模拟通道*/
b、函数声明与定义
(1)主函数 void main() {//主程序 //初始化等 while(1){
scanf(...................);//根据提示信息输入想要的操作switch(k){//根据输入的数调用不同的函数 case 1:
9
case 2:
.................... } }
typedef struct **{
//用于创建不同结构体类型的指针与变量 }
void PRINT(CarNode *p){ //调用输出函数
Leave(*p,n)...................
根据求解时间值来求得费用,并通过收据打印出来 }
(2)功能函数的声明 ① void InitStack(SeqStackCar *,int n); 初始化栈
②int InitQueue(LinkQueueCar *); 初始化队列
③int Arrival(SeqStackCar *,LinkQueueCar *,int n); 车辆到达,登车牌号,没停满进栈。否则,进队列
④void Leave(SeqStackCar *,SeqStackCar *,LinkQueueCar *); 车辆离开,通过输入离开车辆的位置处理,然后调用PRINT(CarNode *p);函数进行收费,然后,判断便道上有没有车, 如果有,就进停车场。
⑤void ExitCar(SeqStackCar *,SeqStackCar *,LinkQueueCar *,int n); 车辆离开,通过输入车牌号而处理离开,然后调用PRINT(CarNode *p);函数进行收费,然后,判断便道上有没有车,如果有,就进停车场。
⑥void List(SeqStackCar,LinkQueueCar); 显示信息,用switch();函数选择显示车场与便道上的车辆情况,包括对void List1(SeqStackCar *S);void List2(LinkQueueCar *W);分别为车场和便道上的车辆情况 ⑦void PRINT(CarNode *p)
10