C++实现停车场管理系统

有一个可以停放n 辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。如果停车场已放满n 辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。停车场内如有某辆车要开走,在他之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆在依原来的次序进场。每辆车在离开停车场时,都应依据它在停车场内停留的时间长短交费。如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。

1. 以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。

2. 每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码以及到达或离去的时刻。

3. 对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费,功能可自己添加)。

1.头文件

#define _AFXDLL
#include <afx.h>
#include<iostream>
#include<string>
#define MAX 3
using namespace std;

struct Time      //时间结构体,用于车辆进场,出场时间记录
{
    int year;
    int month;
    int day;
    int hour;
    int min;
};

struct CarNode    //车辆结构体
{
    char num[10];  //车牌号
    Time reach;      //到达时间
    Time leave;      //离开时间
};
struct StackCar  //停车场栈
{
    int top;
    CarNode *CarStack[MAX + 1];
};
struct QCarNode  //链队中的汽车结点结构体
{
    CarNode *data;    //汽车信息
    struct QCarNode *next;
};
struct LinkQueueCar  //便道
{
    QCarNode *head;  //对头指针
    QCarNode *rear;    //队尾指针
};
class CarSystem{
    StackCar *CarBase, *QuitTemp;  //停车场栈,车辆出停车场时的临时栈
    LinkQueueCar *WaitQueue;    //便道
public:
    CarSystem();      //构造函数
    ~CarSystem();          //析构函数
    int Arrival();          //车辆进站
    void Leave();            //车辆出站
    void ShowLeaveInfo(CarNode *p, int item);  //离开车辆缴费相关信息
    void ShowInfo();          //显示车位情况
    void Carstack();  //停车场中车位状况
    void Carqueue();    //便道中车位状况
    void QueueCarLeave(char a[]);  //便道中车辆离开
};
void ShowMenu()
{
    cout << "********************************************" << endl;
    cout << "******      停 车 场 管 理 系 统    ******" << endl;
    cout << "******      0.安全退出系统          ******" << endl;
    cout << "******      1.汽车停车登记          ******" << endl;
    cout << "******      2.汽车离开登记          ******" << endl;
    cout << "******      3.便道汽车离开          ******" << endl;
    cout << "******      4.车位信息查看          ******" << endl;
    cout << "\n\t\n\t\t请选择:";
}

CarSystem::CarSystem()        //构造函数
{
    CarBase = new StackCar;            //停车场栈
    CarBase->top = 0;
    CarBase->CarStack[CarBase->top] = NULL;

QuitTemp = new StackCar;        //车辆临时栈
    QuitTemp->top = 0;
    QuitTemp->CarStack[QuitTemp->top] = NULL;

WaitQueue = new LinkQueueCar;      //便道
    WaitQueue->head = new QCarNode;
    if (WaitQueue->head != NULL)
    {
        WaitQueue->head->next = NULL;
        WaitQueue->rear = WaitQueue->head;
    }
}

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/51504bb524e497378398263fe3db3c5f.html