数据结构课程设计——停车场管理系统

main.cpp

#include "Park.h"
#include 
using namespace std;

//进入停车场
int InPark(Queue &sqPark,Queue &sqAisle);
//离开停车场
int OutPark(Queue &sqPark, Queue &sqAisle);
//查看停车场
int ViewPark(Queue &sqPark, Queue &sqAisle);

/*
函数名称\main
函数功能\程序主函数,即应用程序的入口
函数参数\无
返回值\int  说明程序退出的状态
*********************************/

int main(void)
{
	//声明队列
	Queue sqPark;//停车场
	Queue sqAisle;//临时车道

	//初始化队列
	InitQueue(sqPark,MAX_PAKING_SPACE);//初始化停车场
	InitQueue(sqAisle,AISLE_SIZE);//初始化临时车道


	bool running = true;//程序运行标志
	char key[10] = {0};//用户输入的选项

	cout<<"******************************************************"<> key;

		//处理用户输入
		switch(key[0]){
		case'1'://车辆入场
			{
				InPark(sqPark,sqAisle);
				break;
			}
		case'2'://车辆离开
			{
				OutPark(sqPark,sqAisle);
				break;
			}
		case'3'://查看停车场
			{
				ViewPark(sqPark,sqAisle);
				break;
			}
		case'4'://退出
			running = false;
			cout<<"再见!"<>car.lisence_plate;
	cout<<"请输入入场时间: ";
	cin>>car.time;

	if(OK==EnQueue(sqPark,car))
	{
		//进入停车场
		cout<<"进入停车场"<>time;

		int fee = (time - car.time)*2;//每小时两元
			cout<<"收费: "<>car.time;//输入时间,开始计费
			EnQueue(sqPark,car);
			}
	}
	else
	{
		//队列为空,停车场内没有汽车
		cout<<"停车场没有车要离开"<
park.cpp

#include "Park.h"
#include 
#include 
using namespace std;

/*
函数名称\InitQueue
函数功能\初始化队列
函数参数\Queue &q:队列
函数参数\int nSize: 最大队列长度
返回值\int: 说明程序退出的状态
*/

int InitQueue(Queue &q, int nSize)
{
	q.base = (Car *)malloc((nSize+1) *sizeof(Car));
	if(!q.base)
	{//内存分配失败
		return ERROR;
	}
	q.front = q.rear = 0;
	q.size = nSize+1;
	return OK;
}
/*
函数名称\DestoryQueue
函数功能\销毁队列
函数参数\Queue q:队列
返回值\t: 说明程序退出的状态
*/
int DestoryQueue (Queue &q)
{
	//释放空间
	if(q.base)
	{
		free(q.base);
		q.base = NULL;
	}
	q.front = q.rear = 0;
	q.size = 0;
	return OK;
}
/*
函数名称\QueueLength
函数功能\获得队列长度
函数参数\Queue q:队列
返回值\int: 说明程序退出的状态
*/
int QueueLength(Queue q)
{
	return(q.rear - q.front + q.size)% q.size;
}

/*
函数名称\QueueEmpty
函数功能\判断队列是否为空
函数参数\Queue q:队列
返回值\int: 说明程序退出的状态
*/
int QueueEmpty(Queue q)
{
	return(q.front == q.rear);
}
/*
函数名称\EnQueue
函数功能\插入元素到队尾
函数参数\Queue &q:队列
函数参数\Car car: 车辆元素
返回值\int: 说明程序退出的状态
*/
int EnQueue(Queue &q,Car car)
{
	if((q.rear+1)%q.size == q.front)
	{
		return ERROR;
	}
	q.base[q.rear] = car;
	q.rear = (q.rear+1)%q.size;
	//cout<<"尾指针"<

park.h

#ifndef PARK_H_INCLUDED
#define PARK_H_INCLUDED
#define MAX_PAKING_SPACE 3 //停车场最大车位
#define AISLE_SIZE 10 //过临时车位数量
#define ERROR -1
#define OK 0

//定义时间结构体
typedef struct time
{
    int hour;
    int min;
}Time
}
//汽车节点
typedef struct Car
{
	char lisence_plate[10]; //车牌
	Time reach;
	Time leave               //进出停车场的时间
};

//循环队列
typedef struct CirQueue
{
	Car *base; //数组
	int front; //队头指针
	int rear; //队尾指针
	int size; //最大队列长度
}Queue;

//初始化队列
int InitQueue(Queue &q, int size);
//销毁队列
int DestoryQueue(Queue &q);
//判断队列是否为空
int QueueEmpty(Queue q);
//获得队列长度
int QueueLength(Queue q);
//插入元素到队尾
int EnQueue(Queue &q,Car car);
//删除队头元素
int DeQueue(Queue &q,Car &car);
//遍历队列
int QueueTraverse(Queue q);


#endif // PARK_H_INCLUDED
运行结果图

数据结构课程设计——停车场管理系统_第1张图片
数据结构课程设计——停车场管理系统_第2张图片

你可能感兴趣的:(课程设计,数据结构,设计)