课程设计 停车场管理系统(附源码)

举报
黑城笑 发表于 2022/04/20 00:35:40 2022/04/20
【摘要】 大一时的拙作

c++数据结构课设

这个代码目前有一些问题,因为暂时不知道如何使用栈来实现出库任意车辆,所以暂定先有两个停车位,之后应该会有优化。

菜单界面
首页
入库界面
在这里插入图片描述在入库后它会自动弹回主菜单
入库界面(车库已满)
在这里插入图片描述
查询库中车辆
在这里插入图片描述
查询等待车辆
在这里插入图片描述
出库界面
在这里插入图片描述

#include<iostream>
#include<vector>
#include<string>
#include<queue>
#include<stack>
#include<Windows.h>
#include<ctime>
#include<cstdlib>
#include<cstdio>

using namespace std;

struct Data
{
	int num;//车牌号码
	int cheku;//停靠车库
	int time1;
};

void ruku(stack<Data>& jinchu, Data& b, int i)//入库
{
	cout << "\t\t\t请输入车辆的车牌号码:";
	cin >> b.num;
	cout << "\t\t\t请输入车辆的到达时间:";
	cin >> b.time1;
	b.cheku = i;
	jinchu.push(b);
}

void rubiandao(queue<Data>& biandao, Data& b, int i)//入便道
{
	cout << "\t\t\t请输入车辆的车牌号码:";
	cin >> b.num;
	cout << "\t\t\t请输入车辆的到达时间:";
	cin >> b.time1;
	b.cheku = i;
	biandao.push(b);
}

void chuku(stack<Data>& jinchu)
{
	jinchu.pop();
}
int main()
{
	char loc;
	int i = 1;
	int j = 1;
	stack<Data> jinchu1;
	stack<Data> jinchu2;
	queue<Data> biandao;
	while (1)
	{
		//界面
			cout << endl << endl << endl << endl << endl;
			cout << "\t\t\t************************************************************************" << endl;
			cout << "\t\t\t**************************欢迎使用停车场管理器**************************" << endl;
			cout << "\t\t\t************************************************************************" << endl;
			cout << "\t\t\t*****************              A.入库                  *****************" << endl;
			cout << "\t\t\t*****************              B.出库                  *****************" << endl;
			cout << "\t\t\t*****************              C.查询车辆信息          *****************" << endl;
			cout << "\t\t\t*****************              D.查看等待信息          *****************" << endl;
			cout << "\t\t\t*****************              E.退出程序              *****************" << endl;
			cout << "\t\t\t************************************************************************" << endl;
			cout << "\t\t\t*************************请输入字母执行相关功能*************************" << endl;
			cout << "\t\t\t************************************************************************" << endl;
			cout << "\t\t\t请选择功能:";
		
		cin >> loc;//输入选择
		if (loc == 'a' || loc == 'A')
		{
			if (i == 2 || i == 1)
			{
				Data* e = new Data;
				if (i == 1)
				{
					ruku(jinchu1, *e, i);
					i = 2;
				}
				else if (i == 2)
				{
					ruku(jinchu2, *e, i);
					i = 3;
				}
				cout << "\t\t\t*************************请驶入" << i - 1 << "号车库\n\t\t\t";
				Sleep(1150);
			}
			else
			{
				cout << "\t\t\t很抱歉,车库已满,请入便道耐心等待" << endl;
				cout << "\t\t\t************************************************************************" << endl;
				Data* e = new Data;
				rubiandao(biandao, *e, j);
				cout << "\t\t\t************************当前便道等待车辆:" << j++ << "辆***************************" << endl;
				Sleep(1300);

			}
		}
		else if (loc == 'B' || loc == 'b')
		{
			int k;
			int num1;
			cout << "\t\t\t请输入出库车辆的车牌号码:";
			cin >> num1;
			if ((!jinchu1.empty() && num1 == jinchu1.top().num) || (!jinchu2.empty() && num1 == jinchu2.top().num))
			{
				if (!jinchu1.empty() && num1 == jinchu1.top().num)//i=2
				{
					k = jinchu1.top().cheku;
					chuku(jinchu1);
					i = 1;
				}
				else if (!jinchu2.empty() && num1 == jinchu2.top().num)//i=3
				{
					k = jinchu2.top().cheku;
					chuku(jinchu2);
					i = 2;
				}
				cout << "\t\t\t" << k << "车库内的车已成功出库!" << endl;
				Sleep(1500);
				if (!biandao.empty())
				{
					Data e = biandao.front();
					if (i == 2) jinchu1.push(e);
					else if (i == 3) jinchu2.push(e);
					cout << "\t\t\t************************************************************************" << endl;
					cout << "\t\t\t" << biandao.front().cheku << "号便道中等待车驶入车库" << endl;
					biandao.pop();
					if (!biandao.empty())biandao.front().cheku--;
					Sleep(1500);
				}
			}
			else
			{
				cout << "\t\t\t车库中不存在此车,请重新输入字母选择你所需要的功能!\n\t\t\t";
				Sleep(1700);
			}
		}
		else if (loc == 'c' || loc == 'C')
		{
			if (jinchu2.empty() && jinchu1.empty())
			{
				cout << "\t\t\t****************************当前车库为空********************************" << endl;
				Sleep(1000);
			}
			if (!jinchu1.empty())
			{
				cout << endl;
				cout << "\t\t\t------------------------------ 一号车库 --------------------------------" << endl;
				cout << "\t\t\t所停车辆车牌号为:" << jinchu1.top().num << endl;
				cout << "\t\t\t停车时间为:" << jinchu1.top().time1 << endl;
				cout << "\t\t\t------------------------------------------------------------------------" << endl;
				Sleep(1200);
			}
			if (!jinchu2.empty())
			{
				cout << endl;
				cout << "\t\t\t------------------------------ 二号车库 --------------------------------" << endl;
				cout << "\t\t\t所停车辆车牌号为:" << jinchu2.top().num << endl;
				cout << "\t\t\t停车时间为:" << jinchu2.top().time1 << endl;
				cout << "\t\t\t------------------------------------------------------------------------" << endl;
				Sleep(1200);
			}
		}
		else if (loc == 'd' || loc == 'D')
		{
			if (!biandao.empty())
			{
				queue<Data> a = biandao;
				for (int k = 1; k <= j && !a.empty(); k++)
				{
					cout << "\t\t\t------------------------- " << k << "号便道等待车辆 -------------------------" << endl;
					cout << "\t\t\t等待车辆的车牌号为:" << a.front().num << endl;
					cout << "\t\t\t等待车辆进入便道时间为:" << a.front().time1 << endl;
					a.pop();
					Sleep(1200);
				}
			}
			else
			{
				cout << "\t\t\t目前无等待车辆" << endl;
				Sleep(1000);
			}
		}
		else if (loc == 'e' || loc == 'E')
		{
			break;
		}
		else
		{
			cout << "\t\t\t不存在此项功能,请重新输入字母!" << endl;
			Sleep(2500);
		}
		system("cls");

	}
	cout << "\t\t\t***********************感谢您的使用,请下次再见!***********************" << endl;


	return 0;
}

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。