停车管理系统

本文档描述了一个使用C、C++编程的停车场管理系统,系统管理一个南北向的狭长通道,车辆按到达时间顺序停放,并在有空位时按离开顺序驶出。程序需记录车辆的停车位置、费用计算和停留时间。该程序在Linux环境下运行,利用栈和队列的数据结构实现。
摘要由CSDN通过智能技术生成

《停车场管理》需求文档

1、 概述与目的

使用C、C++实现简单停车场管理程序

2、 功能需求

设停车场是一个可以停放n辆汽车的南北方向的狭长通道,且只有一个大门可供汽车进出。

汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆车,那么后来的车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。

试为停车场编制按上述要求进行管理的模拟程序。要求程序输出每辆车到达后的停车位置(停车场或便道上),以及某辆车离开停车场时应缴纳的费用和它在停车场内停留的时间。

3、 环境要求

LinuxCC++环境


相关头文件参考上一篇有关于栈和队列的自己定义

#include<stdio.h>

#include<stdlib.h>
#include"stack/stack.h"
#include"queue/queue.h"
/* author:赵祥天 200_7
 * parameter
 * function:实现停车场的停放和等待。
 * date:2016/1/10
 */
int main()
{
int number,function;//number车牌号,function功能选择;
int exit=0;//是否退出
int s1s,qs;//停车场和等待区的长度
printf("欢迎来到我们停车场!\n");
struct stack s1;//创建停车场
struct stack s2;//创建倒车区
s1=initstack(s1);
s2=initstack(s2);
struct queue q;
q=initqueue(q);//创建等待区
int n;
n=3;
s1s=stacklength(s1);
qs=queuelength(q);
while(exit!=3)
{
printf("请选择服务项目:\n");
printf("1.停车 2.取车 3.退出\n");
scanf("%d",&exit);
if(exit==3)
    {
printf("欢迎再次光临我们停车场!\n");
break;
}
if(exit==1)//停车
{
if(s1s==n)//如果停车场满了
{
printf("停车场已满,请进入停车区等候\n");
int size;
size=queuelength(q);
printf("您前面还有%d辆车在等候\n",size);
printf("是否等候?\n1.等候 2.不等候\n");
scanf("%d",&function);
if(function==1)
{
printf("请输入您的车牌号:\n");
scanf("%d",&number);
q=Qpush(q,number);
}
}
else//如果没满
{
printf("请输入您的车牌号:\n");
scanf("%d",&number);
s1=push(s1,number);
}
}
if(exit==2)//取车
{
printf("请输入您的车牌号:\n");
scanf("%d",&number);
int i;
i=gettop(s1);
while(i!=number&&stackempty(s1)!=0)//找车
{
s2=push(s2,i);
s1=pop(s1);
i=gettop(s1);
}
if(stackempty(s1)==0)//没有找到
{
printf("抱歉,没能找到您的车,请重新确认车牌号是否正确。\n");
while(stackempty(s2)!=0)
{
i=gettop(s2);
s1=push(s1,i);
s2=pop(s2);
}
}
else//找到了车
{
s1=pop(s1);
while(stackempty(s2)!=0)
{
i=gettop(s2);
s1=push(s1,i);
s2=pop(s2);
}
s1s=stacklength(s1);//长度改变
    qs=queuelength(q);
  if(qs!=0&&s1s<n)//让等待区的车进入
{
int i;
i=Qgettop(q);
s1=push(s1,i);
q=Qpop(q);
}
}
}
printf("请选择:\n");
printf("1.继续 2.退出\n");
scanf("%d",&exit);
if(exit==2)
{
printf("欢迎再次光临我们停车场!\n");
}
exit=exit+1;
s1s=stacklength(s1);//长度的改变
qs=queuelength(q);
}
return 0;
}

设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到达停车场时间的早晚依次从停车场最里向大门口处停放(最先到达的第一辆车放在停车场的最里面)。如果停车场已放满n辆车,则后来的车只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。停车场内如有某辆车要开走,在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆次序。编制一程序模拟该停车场的管理。(2) 实现要求:要求程序输出每辆车到达后的停车位置(停车场或便道上),以及某辆车离开停车场时应交纳的费用和它在停车场内停留的时间。(2) 实现提示:汽车的模拟输入信息格式可以是:(到达/离去,汽车牌照号码,到达/离去的时刻)。例如,(’A’,1,5)表示1号牌照车在5时刻到达,而(’D’,5,20)表示5号牌照车在20时刻离去。整个程序可以在输入信息为(’E’,0,0)时结束。本题可用顺序存储结构和链式存储结构来实现。本人的一个数据结构课程设计(用C++源码实现,供大家学习参考之用,有不妥之处望指正)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值