-
. z.
停车场管理
专业班级: *******
**: *******
**: *******
指导教师: *******
课程设计时间: **、详细设计
1. 数据构造的设计
〔1〕车辆信息的表示
车辆可看成是一个节点,设计成一个构造体,车辆信息包括:车牌,车辆的进站时间和离开停车的时间,定义如下:
-
. z.
typedef struct node{
char num[10]; //车牌
Time reach; //到站时间
Time leave; //离开时间
}CarNode;
〔2〕时间、栈和队列的定义
时间是由小时和分钟表示的,有两局部数据,所以,类似于复数的表示一样,设计两个变量分别存储小时和分钟。如:typedef struct time{
int hour;
int min;
}Time;
停车场用栈表示:typedef struct NODE{
CarNode *stack[MA*+1]; //栈用顺序表示
int top;
}SeqStackCar;
便道上的车辆表示:typedef struct car{
CarNode *data; // 便道上的车用链表表示
struct car *ne*t;
}QueueNode;
typedef struct Node{
QueueNode *head; // 设置头指针、尾指针。。
QueueNode *rear;
}LinkQueueCar;
2. 算法的设计思想及流程图
〔1〕主要函数的功能说明
1、 void InitStack(SeqStackCar *); //车辆节点进栈
当栈未满时,就把到达的车辆进栈。
2、 int InitQueue(LinkQueueCar *); //车辆节点进队列
当栈满了时,车辆就进入便道上的队列中
3、 int Arrival(SeqStackCar *,LinkQueueCar *); //车辆到达登记
车辆到达时,先登记车辆车牌。然后再判断停车场有没有停满,没停满就进栈,停满了就停在便道上,即进队列。。
4、 void Leave(SeqStackCar *,SeqStackCar *,LinkQueueCar *); //车辆离开处理
通过输入离开车辆的位置处理,然后调用PRINT(CarNode *p,int room);函数进展收费。。然后再判断便道上有没有车,如果有,就把便道上的车进停车场。
5、 void List(SeqStackCar,LinkQueueCar); //显示车场和便道上的车辆情况
-
. z.
用个switch();函数选择显示车场或是便道上的车辆情况。
包括对下面两个子函数的调用: void List1(SeqStackCar *S);
void List2(LinkQueueCar *W); //分别为显示车场和便道上的车辆情况
6、 void PRINT(CarNode *p,int room); // 车辆离开是的收费
这个函数由车辆离开的函数调用,以分钟计时算费,但只能计算当天之的费用,如果第二天的话会导致计费为负或减少。即只能当天停,当天开走。。
〔2〕模块构造及流程图
以下图为程序的主流程图,比较清晰的显示了程序的整个运行过程。如:图 1.
-
. z.
开场
初始化两个栈Enter和Temp及一个队列Wait。
进入主菜单
车到达
车离开
退出
Room前车辆进临时栈
对room计费
便道车信息
车场内信息
判便道是否有车
车场是否为空
列表显示
栈Enter元素出栈
队列中元素进栈
队列Wait中元素出队
元素进栈Enter
便道车进车场
元素进队列Wait
判断栈是否为满
完毕
退出列表显示
是
否
否
是
否
是
-
. z.
主要模块算法描述
本程序最主要的算法就是车辆到达登记的和车辆离开
数据结构课程设计报告停车场管理系统 来自淘豆网m.daumloan.com转载请标明出处.