停车场管理系统
发布时间
阅读量:
阅读量
链表和队列的简单应用
一、设计内容
[问题描述]模拟停车场如下图所示,停车场是可停放n辆汽车的狭长通道,停车场内只有一条单行线通道可走车,有一个大门可供汽车进出。

[基本要求]
- 进站:若车场内已停满n辆汽车,则后来的汽车只能在门外通道上等候,一旦有车开走,则排在通道上的第一辆车即可开入。
- 出站:当停车场内某辆汽车要离开时,必须按它在停车场停留的时间长短缴纳费用;如果通道前面有汽车在缴纳费用,则要在其后面排队等候。
- 假设出、入便道上一次只能排m辆汽车,本题按n=7,m=3进行模拟,车位位置为:110、111、112、113、114、115、116,时间格式为xxxx,如1220指的是12点20分,时间计算到分钟,每小时停车费3元。
- 假设初始时停车场内停了6辆汽车,没有排队等候进站或出站的汽车。
- 以顺序表模拟停车场,以队列模拟车场外的出入通道。
二、设计过程(40%)
1、请给出采用的数据结构类型,及定义的基本操作
数据结构类型:
//(如采用循环单链表,结构定义如何?)
typedef enum parking{//列举出车位信息
first=110,second,third,fourth,fifth,sixth,seventh
}Parking_space;
typedef struct parking_information{//定义停在停车场一辆车所包含的信息
// 一辆车的包含信息
Parking_space space; //所在车位
int Parking_time; //停入的时间
long Car_number; //车牌号
bool feel; //缴费标签 false为未缴,true 为己缴费
bool state; //是否开车标签,即是还在停车场中,true为在停车场,false为不在停车场
// 停车场中车位数量信息(停车场参数信息)
int Park_sum; //总车位数为7
int usedParkSum; //己用车位数量
int unusedParkSum; //未用车位数量
}Park_car_information;
typedef struct LNode
{//停车场信息
Park_car_information carInformation;
struct LNode *next; //指向后继结点
} LinkNode;
该结构下实现的基本操作:
void CreateListF(LinkNode *&L,Park_car_information a[],int n)使用头插法建立循环单链表
2. void CreateListR(LinkNode *&L,Park_car_information a[],int n)使用尾插法建立循环单链表
3. void InitList(LinkNode *&L) 初始化循环链表
4. void DestroyList(LinkNode *&L) 对循环单链表进行销毁,释放存储空间
5. bool ListEmpty(LinkNode *L) 判断循环单链表是否为空
6. void DispList(LinkNode *L) 对循环单链表遍历输出信息
7. bool ListDelete(LinkList *&L,int i, ElemType &e),删除循环单链表L第i个元素,用e返回被删除的元素
2、请给出计算停车费的具体实现思路(用流程图描述)。

三、实现截图
请给出实现的截图,按n=7,m=3进行模拟,车位位置为:110、111、112、113、114、115、116,时间格式为xxxx,如1220指的是12点20分,时间计算到分钟,每小时停车费3元。
请按以下顺序给出实现的截图,每次给的截图,均需包括停车场的汽车情况、入通道的排队情况、出通道的排队情况,车离开停车场还需给出停车费。
(1)初始时,假设停车场内停了6辆汽车(空车位为110,车牌号任意,进场时间也随机给),没有排队等候进站或出站的汽车。

(2)一台汽车进站,车牌号为你的学号,时间为13:30。

(3)有连续两台汽车进展,车牌号为“你的学号+1”和“你的学号+2”,时间分别为“13:34”和“13:36”。

(4)有一台汽车即将驶出停车场,当前时间为13:40,请核算出停车费。

四、额外实现的功能说明及截图
(如没有实现要求之外的功能,请写无)
查询功能
a) 可以查看当前停车场的相关信息
b) 功能有:找空车位,找车(车牌号、车位)、查看在停停车场内所有车辆信息
c) 截图
i. 找空车位

ii. 找车
* 通过车位号找车

2.
能过车牌号找车

iii. 查看所有车辆信息

输入的时间范围限制

五、源代码
码云源代码
全部评论 (0)
还没有任何评论哟~
