停车场管理系统C课程设计报告书 下载本文

内容发布更新时间 : 2024/5/1 23:26:28星期一 下面是文章的全部内容请认真阅读。

停车场管理系统

一、 需求分析

设计一个停车场管理系统,停车场管理系统功能包括:车辆到达,车辆离开,查询车辆信息等。具体要求如下:

(1)、车辆到达:根据车辆到达查询停车场内是否有空位:若尚有空位,则让车辆进停车场,输入车牌号和车辆进停车场的时间;若停车场已满则可进入通道等候。

(2)、车辆离开:根据客户提供的情况,为客户办理离开车场手续,并计算和打印该车辆停车需要的费用。然后查询通道是否有车辆排队,首先查询排在第一车辆,若满足则车进场。

(3)、查询车辆信息:根据客户的要求可以打印停车场内和便道的车辆信息,包括:车牌号,车辆到达时间。

根据题目要求可知本题目的是按照从读文件读取的数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码以及到达或离去的时刻。对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。

二、 概要设计

(二)、本程序主要分四个模块实现功能

(1)、 以栈模拟停车场,以队列模拟车场外的通道,按照从终端读入的输入 数据序列进行模拟管理。栈以顺序结构实现,队列以链表实现。 InitStack(SqStackCar *s)

操作结果:初始化栈,构造空的模拟车站SqStackCar 。

Push(SqStackCar *s,CarNode *e) 操作结果:进站函数,车辆进站。 Pop(SqStackCar *s,CarNode *e) 操作结果:出站函数,车辆出站。 StackEmpty(SqStackCar s) 操

InitQueue(LinkQueueCar *Q) 操作结果:初始化通道,构造空的队列。 QueueEmpty(LinkQueueCar Q) 操作结果:判断通道是否为空。

EnQueue(LinkQueueCar *Q,CarNode *e) 操作结果:车辆进队列,即进通道。 DeQueue(LinkQueueCar *Q,CarNode *e) 操作结果:车辆出对列,即出通道。 SqStackCar part,temp

操作结果:声明停车场和临时停车场。 InitStack(&temp) 操作结果:建临时车场。

(2)、车辆达到和离开。以读文件的法式输入数据,数据包括:车辆到达或 离开,车牌号码,车辆到达时间。

Arrive(SqStackCar *In,LinkQueueCar *Wait,char j[10],int hour,int min) 操作结果:显示车辆到达信息。 Arrive(&part,&road,&j,hour,min) 初始条件:有车进站

操作结果;车场未满车进站,并显示车辆信息;已满则进通道等候。 Departure(SqStackCar *In,SqStackCar *temp,LinkQueueCar *Wait,char j[10],int hour,int min) 操作结果:显示车辆离开信息。

Departure(&part,&temp,&road,&j,hour,min) 初始条件:有车离开。

操作结果:显示车辆信息,包括:车牌号,车辆到达和离开时间。 StackEmpty(*In)

操作结果:判断停车场是否为空。 StackEmpty(*temp)

操作结果:判断临时车场是否为空。 FILE *fp1

操作结果:创建一个“车辆信息.txt”读文件。 fp1=fopen(\车辆信息.txt\

操作结果:读取“车辆信息.txt”里面的信息。 (3)、查询功能。

Print(SqStackCar *In,SqStackCar *Temp,LinkQueueCar *Wait) 操作结果:查询停车场内和通道内车辆的信息。 StackEmpty(*In)

操作结果:判断停车场是否为空,若不为空,输出车辆信息;否则输 出“停车场里没有车!”语句。 StackEmpty(*Temp)

操作结果:判断临时车场是否为空。

三、 详细设计

(1)、 栈类型

t ypedef struct time{ int hour; int min;

}Time; /*时间结点*/ typedef struct { char num[10]; Time reach; Time leave;

}CarNode; /*车辆信息结点*/ typedef struct {