立体化停车场设计书
- 格式:doc
- 大小:917.50 KB
- 文档页数:56
- 1 - 立体化停车场设计书 1.1 课题任务 设停车场有地下和地面两层,统一管理。地下停车场采用单入口和单出口。地上停车场采用南北方向的双口,每个口都有一个入口和出口。停车顺序先地面,后地下。地面入口处各有一个单车道的等候通道,并允许等候的车辆因急事从等候通道直接开走。具体的设计任务如下: (1)采用栈、队列和有序表等数据结构。 (2)等候车辆的管理。 (3)地下、地上停车位的管理。 (4)停车计费功能。
1.2 课题原理 针对本次课程设计的具体要求,我们设计了如下方案:停车场内部选择栈作为基本数据结构,充分利用栈后进先出的数据结构特点,停车场外部的等候区域,针对其“先到先出”的工作特点,选择队列作为基本数据结构。同时设计了计时计费功能,会员制度,针对不同型号,是否为会员的车辆进行分类收费。
2 需求分析 2.1 课题调研 为了完成本次课程设计任务,我们对校园周边的停车场运作状况进行了一系列的前期调研,包括停车场的管理系统的运行原理,收费标准等等,为本次课程设计任务的完成打下了良好的基础。
2.2 功能需求 此次设计任务,要求停车场分为上下两层,上层为南北双向入口和出口,下层为单向入口出口,并要求我们设计等待区域。对于收费标准,我们将不同型号的车分类收费,同时增加会员管理制度,对于多次在本停车场停车的会员给予优惠。
3 方案设计 3.1 总体功能设计 本次课程设计共分为四个主要功能: (1)进入停车场 (2)离开停车场 (3)查看停车场现状 (4)计费功能 - 2 -
针对进入停车场的功能,我们设计了“先地上,后地下”,的停放顺序,当地上南北双向任一停车场停满后,再向该停车场进车,会显示“停车场已满”等提示信息,并将车辆停入有剩余车位的其他停车场。当所有停车场均无停车位时,到来车辆将会进入等待区域,一旦有车辆离开停车场,最先到达等待的区域的车辆将会进入停车场。 针对离开停车场的功能,可选择任一停车场出车,并会根据停车时长,车辆类型,以及是否为会员等信息给出本次停车的费用。 针对查看停车场现状的功能,将显示车牌号,何处停车等相关信息。 此外,我们还设计了计费功能,利用windows系统自带函数获取时间,免去了人工手动输入时间的繁琐步骤,同时,针对不同车型,是否享受会员优惠等差异制定了不同的收费标准,使停车场的运行更为规范化,合理化。
3.2 数据结构设计 本次课程设计主要使用了栈和队列两种数据结构,具体的设计方案和操作过程将在个人报告中给出,在此不再赘述。
3.3 函数原型设计 int main() { system("color E1"); cout cout<<" ================================================ " 3.4 用户界面设计 运行时为DOS界面,通过增加字符画,更换背景颜色等方法增加界面的美观度。 4 方案实现 4.1 开发环境与工具 开发环境:VisualC++6.0 4.2 个人设计实现(按组员分小节) 4.2.1 曹奕设计实现 队列类的实现: typedef struct QueueNode //队列结构 { Car data; struct QueueNode *next; }QueueNode; class Queue //定义队列类 { public: QueueNode *front, *rear; Queue(){cout<<"构造函数"<~Queue(); int InitQueue(); int DestroyQueue(Queue *Q); int EnterQueue(Queue *Q, Car c); int EmptyQueue(Queue*Q); - 4 - int DeleteQueue(Queue *Q,Car *c); int QueueLength(Queue *Q); }; Queue::~Queue(){cout<<"析构函数"< int Queue::EmptyQueue(Queue *Q) { if (front==rear) { cout<<"队列为空" front = (QueueNode *)malloc(sizeof(QueueNode)); if (front == NULL) { return (FALSE); } else { rear = front; front->next = NULL; cout<<"构造了一个空队列" int Queue::EnterQueue(Queue*Q, Car c) { rear->next = (QueueNode *)malloc(sizeof(QueueNode)); if (rear->next == NULL) { cout<<"车辆入队失败" int Queue::DeleteQueue(Queue *Q,Car *c) { //删除队列元素 QueueNode *t; if (EmptyQueue( Q)) { cout<<"要查找车辆不存在!"