道尔智控 > 停车场系统 > (停车场管理系统的接口)停车场管理系统设计详细模块

(停车场管理系统的接口)停车场管理系统设计详细模块

导读c语言停车场管理系统课程动画贡献用户名:【巷子里的童年】 ,现在由道尔智控小编为你探讨与【停车场管理系统的接口】的相关内容!最佳答案/*---------------------------------------------...

本文中提到了5个关于停车场管理系统的接口的相关看点,同时还对停车场管理系统设计详细模块也有不同的看法,希望本文能为您找到想要的答案,记得关注哦!

c语言停车场管理系统课程动画

贡献用户名:【巷子里的童年】 ,现在由道尔智控小编为你探讨与【停车场管理系统的接口】的相关内容!

最佳答案/*----------------------------------------------------------------

// Copyright (C) 2009 沈阳工程学院信息安全工作室

// 版权所有。

//

// 文件名:模拟停车场问题.cpp

// 文件功能描述:模拟停车场问题

//

//

// 创建标识:20091214

//

// 修改标识:20091218

// 修改描述:完成编码

//----------------------------------------------------------------*/

//头文件

#include <iostream>

#include <malloc.h>

#include <string>

#include <windows.h>

//常量定义

#define MAX_STOP 4 //定义停车场最大停车数

#define MAX_PLATE 10 //定义车牌号最大长度

#define TIME_COUNT "秒" //定义时间单位

#define TIME_MS_TO_CONUT 1000 //定义时间进制,意为由TIME_COUNT到毫秒的进制

#define UNIT_PRICE 10 //定义单位时间收费标准

using namespace std; //使用std命名空间

//数据结构定义

//定义存储汽车信息的结构体

typedef struct

{

char license_plate[MAX_PLATE]; //汽车牌照号码,定义为一个字符指针类型

char state; //汽车当前状态,字符p表示停放在停车位上,字符s表示停放在便道上,每辆车的初始状态用字符i来进行表示

int time; //汽车停入停车场时的时间,用来计时收费

}CAR;

//定义模拟停车场的栈结构

typedef struct

{

CAR STOP[MAX_STOP]; //汽车信息的存储空间

int top; //用来指示栈顶位置的静态指针

}SeqStack;

//定义模拟便道的队列结构

typedef struct node

{

CAR WAIT; //汽车信息的存储空间

struct node *next; //用来指示队列位置的动态指针

}QNode; //链队列节点的类型

//定义链队列的收尾指针

typedef struct

{

QNode *front,*rear;

}LQueue; //将头尾指针封装在一起的链队

//函数声明

int Empty_LQueue(LQueue *q); //判队空

int LeaveCheck(SeqStack parking , char *license_plate); //检查离开的车是否在停车场中

int QueueLength(LQueue *q); //判队长度

int Out_LQueue(LQueue *&sidewalk , char *license_plate); //出队操作

int StackEmpty(SeqStack parking); //判断栈是否为空

int StackFull(SeqStack parking); //判断栈是否为满

int StackPop(SeqStack &parking); //出栈操作

int StackTop(SeqStack parking , char *license_plate , int &time);//取栈顶元素

void Car_come(SeqStack &parking , LQueue *&sidewalk); //有车到来时的操作

void Car_leave(SeqStack &parking , LQueue *&sidewalk); //有车离开的操作

void Display(SeqStack parking); //显示停车场内的所有信息 调试时用

void InitStack(SeqStack &parking); //初始化栈

void InitList(LQueue *&sidewalk); //初始化队列

void In_LQueue(LQueue *&sidewalk , char *license_plate); //进队操作

void Input_Check(char *license_plate); ////检验输入的车牌是否合法

void StackPush(SeqStack &parking , char *license_plate , int stop_time);//进栈操作

void main()

{

//定义变量

SeqStack parking;

LQueue *sidewalk = NULL;

char *choice = new char;

int flag = 1; //定义一个变量 判断是否退出

//初始化一个为空的停车场

InitStack(parking);

//初始化一个为空的便道

InitList(sidewalk);

//运行界面及功能选择

while(flag)

{

cout<<"\n\t 停车场模拟管理系统 \n\n";

cout<<"\t|--------------------------------------------------|\n\n";

cout<<"\t|本程序为停车场的模拟管理系统,有车到来时请按C键。|\n\n";

cout<<"\t|然后根据屏幕提示进行相关操作,有车要走时请按l键。|\n\n";

cout<<"\t|然后根据屏幕提示进行相关操作,查看停车场请按D键。|\n\n";

cout<<"\t|然后根据屏幕提示进行相关操作,要退出系统请按Q键。|\n\n";

cout<<"\t|--------------------------------------------------|\n\n";

cout<<"请选择操作:";

gets(choice);

if(1 != strlen(choice))

{

cout<<"请正确输入选项!";

continue;

}

else

{

switch(*choice)

{

case 'c':

case 'C':

{

Car_come(parking,sidewalk);break;

}

case 'l':

case 'L':

{

Car_leave(parking,sidewalk);break;

}

case 'q':

case 'Q':

{

flag=0;break;

}

case 'd':

case 'D':

{

Display(parking);break;

}

default:

cout<<"选择不正确!请重新选择!\n";

}

}

}

}

//有车到来时的操作

void Car_come(SeqStack &parking , LQueue *&sidewalk)

{

//定义变量

char license_plate[MAX_PLATE];

cout<<"请输入车辆的车牌号码:";

Input_Check(license_plate);

//判断停车场是否已满,满则进入便道,不满进入停车场

if(StackFull(parking))

{

In_LQueue(sidewalk , license_plate); //进入便道

cout<<"停车场已满请在便道等候,您的位置为"<<QueueLength(sidewalk)

<<endl;

}

else

{

StackPush(parking , license_plate , GetTickCount()); //进入停车场

cout<<"请进入停车场中的"<<parking.top+1<<"号停车位\n";

}

// Display(parking);

}

//有车离开时的操作

void Car_leave(SeqStack &parking , LQueue *&sidewalk)

{

//定义变量

SeqStack tmpparking; //定义临时停车场

char leave_license_plate[MAX_PLATE]; //要离开的车牌号

char license_plate[MAX_PLATE]; //存放从停车场中读出来的车牌信息

int time;

InitStack(tmpparking); //初始化临时停车场

//判断停车场中是否有车

if(StackEmpty(parking))

{

cout<<"当前停车场中没有车\n";

return; //退出子函数

}

cout<<"请输入要离开的车牌照:";

Input_Check(leave_license_plate);

cout<<"当前停车场中有"<<parking.top+1<<"辆车\n";

if(LeaveCheck(parking , leave_license_plate)) //判断车是否在停车场中

{

//车在停车场中

cout<<"您的车在"<<LeaveCheck(parking , leave_license_plate)<<"号车位上\n";

while(StackTop(parking , license_plate , time)

&& (strcmp(parking.STOP[parking.top].license_plate , leave_license_plate) != 0))

{

strcpy(parking.STOP[parking.top].license_plate , license_plate);

cout<<"牌照为"<<license_plate<<"的车暂时退出停车场"<<parking.top+1<<"号位\n";

StackPush(tmpparking , license_plate , time); //停车场中的车暂时退出 进入临时停车场

StackPop(parking); //出栈

}

cout<<"牌照为"<<license_plate<<"的车离开停车场"<<parking.top+1<<"号位\n";

cout<<"您在停车场中停了"<<(GetTickCount()-time)/TIME_MS_TO_CONUT<<TIME_COUNT<<endl; //输出所停时间信息

cout<<"应缴费用为"<<(GetTickCount()-time)/TIME_MS_TO_CONUT*UNIT_PRICE<<"元\n";; //输出费用信息

StackPop(parking); //出栈

//将临时停车场中的车停回停车场

while(StackEmpty(tmpparking) != 1)

{

StackTop(tmpparking , license_plate , time);

StackPush(parking , license_plate , time);

cout<<"牌照为"<<license_plate<<"的车进入停车场"<<parking.top+1<<"号位\n";

license_plate[0] = '\0';

StackPop(tmpparking);

}

if(parking.top+1 == MAX_STOP-1) //判断车离开前停车场是否停满

if(QueueLength(sidewalk)) //如果停满则判断便道上是否有车

{

//便道中有车 则从便道中停入停车场

Out_LQueue(sidewalk , license_plate); //出队

StackPush(parking , license_plate , GetTickCount()); //入栈

cout<<"在便道中牌照为"<<license_plate<<"的车进入停车场"<<parking.top+1<<"号位\n";

}

}

else

//车不在停车场中

cout<<"您的车不在停车场中!\n";

}

//初始化顺序栈

void InitStack(SeqStack &parking)

{

parking.top = -1;

}

//判栈空

int StackEmpty(SeqStack parking)

{

if(parking.top == -1)

return 1;

else

return 0;

}

//判栈满

int StackFull(SeqStack parking)

{

if(parking.top == MAX_STOP-1)

return 1;

else

return 0;

}

//入栈

void StackPush(SeqStack &parking , char *license_plate , int stop_time)

{

parking.top++;

strcpy(parking.STOP[parking.top].license_plate , license_plate);

parking.STOP[parking.top].state = 'p';

parking.STOP[parking.top].time = stop_time;

}

//出栈 返回栈顶指针

int StackPop(SeqStack &parking)

{

if(StackEmpty(parking))

return 0;

else

return parking.top--;

}

//取栈顶元素

int StackTop(SeqStack parking , char *license_plate , int &time)

{

if(StackEmpty(parking))

return 0;

else

{

strcpy(license_plate , parking.STOP[parking.top].license_plate);

time = parking.STOP[parking.top].time;

return 1;

}

}

//显示所有

void Display(SeqStack parking)

{

if(parking.top == -1)

printf("停车场为空\n");

else

{

while(parking.top != -1)

{

cout<<"车牌号为:"<<parking.STOP[parking.top].license_plate;

cout<<",停在"<<parking.top + 1 <<"号车位上";

cout<<",已停"<<(GetTickCount()-parking.STOP[parking.top].time)/TIME_MS_TO_CONUT<<TIME_COUNT<<endl;

parking.top--;

}

}

}

//初始化队列

void InitList(LQueue *&sidewalk)

{

sidewalk = (LQueue *)malloc(sizeof(LQueue));

sidewalk->front=sidewalk->rear = NULL;

}

//入队

void In_LQueue(LQueue *&sidewalk,char *license_plate)

{

QNode *car_on_sidewalk;

car_on_sidewalk = (QNode *)malloc(sizeof(QNode)); //为新节点开辟新空间

strcpy(car_on_sidewalk->WAIT.license_plate , license_plate); //将数据写入节点

car_on_sidewalk->WAIT.state = 's'; //写入停车信息

car_on_sidewalk->WAIT.time = GetTickCount(); //写入停车时间

car_on_sidewalk->next = NULL;

if(Empty_LQueue(sidewalk)) //队空则创建第一个节点

sidewalk->front = sidewalk->rear = car_on_sidewalk;

else

{

//队非空插入队尾

sidewalk->rear->next = car_on_sidewalk;

sidewalk->rear = car_on_sidewalk;

}

}

//判队空

int Empty_LQueue(LQueue *q)

{

if(q->front == NULL)

return 1;

else

return 0;

}

//判队长度 返回队长

int QueueLength(LQueue *q)

{

QNode *p=q->front;

int i=0;

while(p != NULL)

{

i++;

p=p->next;

}

return i;

}

//出队 成功返回1 队空返回0

int Out_LQueue(LQueue *&sidewalk,char *license_plate)

{

QNode *car_on_sidewalk;

if(Empty_LQueue(sidewalk)) //如果队空返回0

return 0;

car_on_sidewalk = sidewalk->front;

strcpy(license_plate , car_on_sidewalk->WAIT.license_plate);//取出队头元素

if(sidewalk->front == sidewalk->rear) //队中只有一个元素

sidewalk->front = sidewalk->rear=NULL; //删除元素

else

sidewalk->front = sidewalk->front->next; //队头指针后移

free(car_on_sidewalk); //释放指针

return 1;

}

//检查离开的车是否在停车场中 返回车在停车场中位置 不在则返回0

int LeaveCheck(SeqStack parking,char *license_plate)

{

int flag = parking.top+1; //定义变量记录当前车在停车场中位置

if(StackEmpty(parking))

return 0;

else

{

//查找离开车所在位置

while(parking.top != -1 && strcmp(parking.STOP[parking.top].license_plate , license_plate) != 0)

{

flag--;

parking.top--;

}

return flag;

}

}

//检验输入的车牌是否合法

void Input_Check(char *license_plate)

{

int flag = 1;

int i;

string tmpstr;

while(flag)

{

cin>>tmpstr;

getchar();

if(tmpstr.length()<MAX_PLATE)

{

for(i=0;i<10;i++)

license_plate[i] = tmpstr.c_str()[i];

flag = 0;

}

else

cout<<"输入有误,请重新输入:";

}

}

以前的课设 你看看吧 纯手工的~~

以上就是道尔智控小编解答(巷子里的童年)分析关于“c语言停车场管理系统课程动画”的答案,接下来继续为你详解用户(我选择笑^)解答“智能停车场管理系统常用解决方案”的一些相关解答,希望能解决你的问题!

c语言停车场管理系统课程动画

智能停车场管理系统常用解决方案

贡献用户名:【我选择笑^】 ,现在由道尔智控小编为你解答与【停车场管理系统的接口】的相关内容!

最佳答案小区停车场管理系统你可以购买安立克这个公司的,系统先进,质量非常不错,很多小区商业办公楼都用安立克的,厂家直销,价格也优惠。和很多的房地产商像中原地产、恒大地产、保利地产、万科都有合作,详细信息你可以咨询安立克的免费电话:400 中间 688 后面9767

以上就是道尔智控小编解答(我选择笑^)解答关于“智能停车场管理系统常用解决方案”的答案,接下来继续为你详解用户(平淡而不平凡)回答“科拓停车场收费管理系统”的一些相关解答,希望能解决你的问题!

科拓停车场收费管理系统

贡献用户名:【平淡而不平凡】 ,现在由道尔智控小编为你解答与【停车场管理系统的接口】的相关内容!

最佳答案智能停车场管理系统在住宅小区、大厦、机关单位的应用越来越普遍。而人们对停车场管理的要求也越来越高,智能化程度也越来越高,使用更加方便快捷,也给人类的生活带来了方便和快乐。不仅提高了现代人类的工作效率,也大大的节约了人力物力,价低了公司的运营成本,并使得整个管理系统安全可靠。包括车辆人员身份识别、车辆资料管理、车辆的出入情况、位置跟踪和收费管理等等。

上文就是道尔智控小编解疑贡献者:(平淡而不平凡)回答的关于“科拓停车场收费管理系统”的问题了,不知是否已经解决你的问题?如果没有,下一篇内容可能是你想要的答案,下面继续讲析下文用户【傲似公主】分享的“7、某停车场有20个车位(1-20号),设计一个停车场管理系统,实现停车管理系统。 c语言程序设计 。”的一些相关问题做出分析与解答,如果能找到你的答案,可以关注本站。

7、某停车场有20个车位(1-20号),设计一个停车场管理系统,实现停车管理系统。 c语言程序设计 。

贡献用户名:【傲似公主】 ,现在由道尔智控小编为你详解与【停车场管理系统的接口】的相关内容!

最佳答案#include <stdlib.h>

#include <stdio.h>

#include <time.h>

typedef struct{

int num;

char id[50];

time_t in;

time_t out;

float mon;

}P;

P p[21];

void in();

void out();

void look();

void init();

int vacant();

int main()

{

int i,flag=0;

init();

while(1)

{ printf(" \n");

printf(" 1: 进入 \n");

printf(" 2 离开 \n");

printf(" 3: 查看车位情况 \n");

printf(" 4: 退出 \n");

printf(" \n");

puts("请输入选项:");

scanf("%d",&i);

switch(i)

{

case 1: in();break;

case 2: out();break;

case 3: look();fflush(stdin);

puts("按任意键继续。");

getchar();break;

case 4: flag=1;break;

}

if(flag==1) break;

system("CLS");

}

return 0;

}

void init()

{ int i=0;

while(i<21){ p[i].num=i;p[i].id[0]='\0';p[i].in=0;p[i].out=0;p[i].mon=0.;i++;}

}

int vacant()

{

int i=1,num=0;

while(i<21){ if(p[i].id[0]=='\0') num++;i++;}

return num;

}

void in()

{ int i=0,a[21];

while(i<21){ a[i]=0; i++;}

i=1;

if(vacant()!=0){ puts("有车位 空车位为:");

while(i<21){ if(p[i].id[0]=='\0') {a[i]=i; printf("%-4d",i);}i++;}

puts("");

puts("请输入所要停入车位号:");

while(1){

scanf("%d",&i);

int j=0,flag=0;

while(j<21) { if(a[j]==0){ j++;continue;} if(a[j]==i){ flag=1;break;}j++;}

if(flag==0) puts("输入错误,请再次输入所要停入车位号:");

else break;

}

puts("请输入所要停入的车牌号:");

scanf("%s",p[i].id);

time(&(p[i].in));

}

else puts("车位已满!");

fflush(stdin);

puts("按任意键继续。");

getchar();

}

void out()

{

int i,j=0,a[21],flag=0;

while(j<21){ a[j]=0; j++;}

j=0;

look();

while(j<21){ if(p[j].id[0]!='\0') a[j]=j;j++; }

puts("请输入离开车的车位号:");

while(1)

{

j=0;

scanf("%d",&i);

while(j<21) { if(a[j]==0){ j++;continue;} if(a[j]==i){ flag=1;break;}j++;}

if(flag==1) break;

else puts("输入错误,请再次请输入离开车的车位号:");

}

time(&(p[i].out));

struct tm *tm1,*tm2;

tm1=gmtime(&(p[i].in));

tm2=gmtime(&(p[i].out));

int num1,num2;

if(tm1->tm_hour+8>23) num1=tm1->tm_hour+8-24;

else num1=tm1->tm_hour+8;

if(tm2->tm_hour+8>23) num2=tm2->tm_hour+8-24;

else num2=tm2->tm_hour+8;

printf("该车位号为: %d 车牌号为:%s \n%d:%d 停入 %d:%d 离开 \n应付金额为 %0.2f元\n",i,p[i].id,num1,tm1->tm_min,num2,tm2->tm_min,(p[i].out-p[i].in)/3600.0*10);

p[i].id[0]='\0';

fflush(stdin);

puts("按任意键继续。");

getchar();

}

void look()

{ int i=1,k=0;

struct tm *tm1;

if(vacant()!=0)

{ puts("空车位为:");

while(i<21){ if(p[i].id[0]=='\0'){ printf("%-4d",i);k++;}i++; }

i=1;

puts("");

puts("已占车位为:");

if(k==20) puts(" 没有停车辆!");

while(i<21)

{ if(p[i].id[0]!='\0')

{ tm1=gmtime(&(p[i].in));int num1;

if(tm1->tm_hour+8>23) num1=tm1->tm_hour+8-24;else num1=tm1->tm_hour+8;

printf("车位号:%-4d 车牌号:%s 进入时间:%d:%d\n",i,p[i].id,num1,tm1->tm_min);

}

i++;

}

}

else puts("车位已满!");

}

上文就是道尔智控小编解疑贡献者:(傲似公主)分析的关于“7、某停车场有20个车位(1-20号),设计一个停车场管理系统,实现停车管理系统。 c语言程序设计 。”的问题了,不知是否已经解决你的问题?如果没有,下一篇内容可能是你想要的答案,下面继续:下文用户【闲懒诗人】分享的“智能停车场管理系统设计”的一些相关疑问做出分析与解答,如果能找到你的答案,可以关注本站。

智能停车场管理系统设计

贡献用户名:【闲懒诗人】 ,现在由道尔智控小编为你讲解与【停车场管理系统的接口】的相关内容!

最佳答案(1)停车场有若干停车位(为说明问题,假定为3个),每个位置可以存放不同类型的汽车,包括卡车Track,k客车Carriage和小轿车Car,但同一时刻一个位置只能存放0或1辆汽车。(2)管理系统模拟实际车辆停车情况:新来车辆时如果有空位,按顺序为该车分配停车位;车辆走开时,交纳相应停车费;统计各类车辆的数量。(3)定义描述停车场的类Park,其中有三个位置停放各类车辆。(4)定义基类Automobile,至少包括纯虚函数Pay()用于显示车辆信息并交纳相应停车费。

关于(停车场管理系统的接口)停车场管理系统设计详细模块的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于停车场管理系统的接口的信息别忘了在本站进行查找喔。

本文来自网络,不代表本站立场,转载请注明出处:http://ask.drzk.cn/tccxt/16425.html

作者: 道尔智控

道尔智控致力于智慧停车生态化建设,涵盖停车场管理系统、智慧停车系统、停车场系统、车牌识别 、门禁系统、道闸、通道闸、车位引导系统、云停车等。同时又为用户提供各种关于车牌、车型识别停车、停车场系统、通道道闸机等技术小知识,让您停车更智能、更简单、更便捷。
上一篇:(停车场场车辆应急出口)车辆解除停车场进出提示信息
下一篇:(停车场纸票)停车场专用纸票机
联系我们

联系我们

0898-88881688

在线咨询: QQ交谈

邮箱:drzk@drzk.cn

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部