停车场项目需求
问题描述:停车场是一个能放 n 辆车的狭长通道,只有一个大门,汽车按到达的先后次序停放。若车场满了,车要停在门
外的便道上等候,一旦有车走,则便道上第一辆车进入。当停车场中的车离开时,由于通道窄,在它后面的车
要先退出,待它走后在依次进入。汽车离开时按停放时间收费。
基本功能要求:
(1)建立三个数据结构分别是:停放队列、让路栈、等候队列。
(2)输入数据模拟管理过程,数据(入或出,车号)
功能描述:进车登记、出车登记、按车牌号查询停车车辆信息、查询出入车记录、
查询场内车辆信息、查询等候车辆信息、退出系统。
(1)linux系统编写(链表、栈、队列);
(2)进车登记:登记车牌号以及入场时间;
(3)出车登记:计算出停车时间,记录车辆车牌;
(4)按车牌号查询车辆信息:停车时间,是否来过停车场,是否还在停车场
(5)查询出入记录:所有车辆,包括已经离开的
(6)查询场内车辆信息:列出所有场内车辆信息
(7)查询等候车辆信息:显示等候车辆数量以及所有车牌号
(8)退出系统。
具体解释都写在注释里了,源码有点多,直接上了:
#ifndef _PARK_H
#define _PARK_H
#define FAILURE 10000
#define SUCCESS 10001
#define TEUE 10002
#define FALSE 10003
#define SIZE 5
#define NUM 100
#include "time.h"
/*定义存放车辆信息的结构体*/
struct CarInfo
{
char *carid;
char *storetime;
char *delivertime;
};
typedef struct CarInfo carinfo;
/*定义栈1的信息*/
struct Stack1
{
int top;
carinfo car[SIZE];
};
typedef struct Stack1 stack1;
/*定义栈2的信息*/
struct Stack2
{
int top;
carinfo car[SIZE];
};
typedef struct Stack2 stack2;
/*定义等待队列的信息*/
struct Queue
{
carinfo car[NUM];
int front;
int rear;
};
typedef struct Queue queue;
/*将出栈的车辆放入一个队列*/
struct Queue1
{
carinfo car[NUM];
int front;
int rear;
};
typedef struct Queue1 queue1;
int s1init(stack1 **q);
int s2init(stack2 **q);
int qinit(queue **q);
int q2init(queue1 **q);
int enterinfo(stack1 **q1, queue **q2);
int outinfo(stack1 **q1, stack2 **q2, queue **q3, queue1 **q4);
int searchcar(stack1 *q1, queue *q2);
int traverseinside(stack1 *q);
int traverseoutside(queue *q);
#endif
#include "park.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*初始化栈1
q为二级指针,存放S1地址*/
int s1init(stack1 **q)
{
*q = (stack1 *)malloc(sizeof(stack1));
if(NULL == *q)//入参判断
{
return FAILURE;
}
(*q)->top = -1;
return SUCCESS;
}
/*初始化栈2
q为二级指针,存放S2地址*/
int s2init(stack2 **q)
{
*q = (stack2 *)malloc(sizeof(stack2));
if(NULL == *q)//入参判断
{
return FAILURE;
}
(*q)->top = -1;
return SUCCESS;
}
/*初始化队列
q为二级指针,存放Q1地址*/
int qinit(queu