C C++ 停车场管理系统
停车场管理系统——C语言

停车场管理系统【要求】(1)有一个两层的停车场,每层有6个车位,当第一层车停满后才允许使用第二层(停车场可用一个二维数组实现,每个数组元素存放一个车牌号),每辆车的信息包括车牌号、层号、车位号、停车时间共4项,其中停车时间按分钟计算。
(2)假设停车场初始状态为第一层已经有4辆车,其车位号依次为1~4,停车时间依次为20,15,10,5,即先将这4辆车的信息存入文件car.dat中(数组的对应元素也要进行赋值)。
(3)停车操作:当一辆车进入停车场时,先输入其车牌号,再为它分配一个层号和一个车位号(分配前先查询车位的使用情况,如果第一层有空位则必须停在第一层),停车时间设为5,最后将新停入的汽车的信息添入文件car。
dat中,并将在此之前的所有停车时间加5。
(4)收费管理(取车):当有车离开时,输入其车牌号,先按其停车时间计算费用,每5分钟0.2元(停车费用可设置一个变量进行保存),同时从文件car。
dat 中删除该车的信息,并将该车对应的车位设置为可用状态(即二维数组对应元素清零),按用户的选择来判断是否要输出停车收费的总计。
(5)输出停车场中全部车辆的信息.(6)退出系统。
【提示】(1)需求分析:车辆信息要用文件储存,提供文件的输入输出操作;当车要离开时要删除文件中该车的信息,因而要提供文件的删除操作;另外还要用键盘式菜单实现功能选择.(2)总体设计:整个管理系统可设计为停车模块、取车模块、车辆信息浏览模块.二、总体设计根据上面的需求分析,可以将这个系统的设计分为四大模块(如图2—1):停车、取车、车辆信息浏览、退出。
其中主要功能是停车、取车、车辆信息浏览三个模块。
图2—1系统功能模块图根据模块图可画出总的流程图(图2—2)图2—2 总流程图三、详细设计1、车辆信息车辆信息包括车牌号、层号、车位号、停车时间,将这四类数据组合成结构体car,以便于引用。
【程序】struct car{int carnumber;int floor;int position;int time;}car[12];2、车位信息由于停车场有两层,每层六个车位,故车位信息可由一个二维数组park[2][6]表示,注意停车场中已经停放了4辆车,设这四辆车的车牌号为6840,4167,3548,9201。
停车场管理系统—C语言课程设计.doc

停车场管理系统1题目要求设有一个可以停放n 辆汽车的狭长停车场,它只有一个大门可以供车辆进出。
车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。
如果停车场已放满n 辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车站。
停车站内如有某辆车要开走,在它之后进入停车场的车都必须先退出停车站为它让路,待其开出停车场后,这些车辆再依原来的次序进场。
每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。
如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。
编制一程序模拟该停车场的管理。
【基本要求】要求程序输出每辆车到达后的停车位置(停车场或便道上),以及某辆车离开停车场是的停车时间及它应该交的费用。
2需求分析根据题目要求,因为停车场是一个单条的序列,可以用结构体实现;在程序中,需要知道每辆来车的具体停放位置,应提供提示、查找、标记工作。
车辆离开要计时计费。
另外,每天开始时,停车场要初始化。
3总体设计这个系统可以分为:初始化、有车进入、有车离开、退出四个模块。
4详细设计main()函数体内包含了界面选则部分menu(),并单独抽出来作为一个独立函数,目的在于系统执行每部分模块后能够方便返回到系统界面。
即main()函数写为 如下:void main()/*主函数*/ { menu();/*菜单函数*/ }菜单函数: void menu() { int n,w; do { puts("\t\t**************MENU**************\n\n"); puts("\t\t\t 1.初始化"); puts("\t\t\t 2.有车进入"); puts("\t\t\t 3.有车离开"); puts("\t\t\t 4.退出"); puts("\n\n\t\t*********************************\n"); printf("Please choice your number(1-4): [ ]\b\b"); scanf("%d",&n); if(n<1||n>4) /*对选择的数字作判断*/ { w=1; getchar(); } else w=0; }while(w==1); switch(n) { case 1:chushi();break; /*初始化函数*/ case 2:jinru();break; /*车辆进入函数*/case 3:likai();break;/*车辆离开函数*/case 4:exit(0);/*退出*/}}初始化模块设计:【需求分析】该模块是将每一天开始的停车场内和便道车位清零。
停车场管理c语言pta

停车场管理c语言pta
停车场管理系统是一个常见的项目,可以使用C语言来实现。
这个系统可以包括车辆进入和离开的记录、收费计算、停车位管理
等功能。
在PTA(Programming Teaching Assistant)上实现停车
场管理系统可以通过以下步骤进行:
1. 数据结构设计,首先,需要设计合适的数据结构来存储车辆
信息、停车位状态等。
可以使用结构体来表示车辆信息,使用数组
或链表来管理停车位的状态。
2. 车辆进入和离开记录,编写函数来处理车辆进入和离开的记录,包括记录车辆的进入时间、离开时间,以及相应的费用计算。
3. 收费计算,根据停车时间和车辆类型(例如小型车、大型车)来计算停车费用。
可以设置不同的收费标准,并编写函数来进行费
用计算。
4. 停车位管理,设计算法来管理停车位的分配和释放,确保停
车场的停车位能够合理利用。
5. 用户界面,可以使用C语言的控制台来实现简单的用户界面,让用户可以输入车辆信息、查询停车费用等操作。
在PTA上实现停车场管理系统需要考虑到输入输出的格式,以
及对各种异常情况的处理。
同时,还需要编写测试用例来验证程序
的正确性和稳定性。
总之,通过合理的数据结构设计、功能模块划分和用户界面实现,可以在PTA上使用C语言实现停车场管理系统。
这样的项目可
以帮助学生加深对C语言的理解,并锻炼编程能力。
停车场管理系统代码

// 1、停车场管理.cpp : Defines the entry point for the console application. //#include "stdafx.h"#include <conio.h>#include <malloc.h>#include <stdio.h>#include <stdlib.h>#include <windows.h>// 清空当前屏幕#define ClearScreen() system( "cls" )//设置背景前景颜色//#define setcolor() system("color 2f")// 显示字符串 szPrompt 并等待用户按下任意键#define Pause( szPrompt ) printf( "%s", szPrompt ),getch()typedef struct carinformation // 车辆信息{char szRegistrationMark[64]; // 车牌号char szArrivalTime[16]; // 到达时间char szEntranceTime[16]; // 进入停车场(开始计费)时间char szDepartureTime[16]; // 离开时间} TCARINFORMATION, *LPTCARINFORMATION;typedef struct carstack{LPTCARINFORMATION lpCarInformation; // 车辆信息int nTop; // 栈顶元素下标int nStackSize; // 栈容量} TCARSTACK, *LPTCARSTACK;// 初始化栈 lpCarStack, 将其容量设置为 nSizevoid InitStack( LPTCARSTACK &lpCarStack, int nSize ){lpCarStack = ( LPTCARSTACK ) malloc( sizeof ( TCARSTACK ) );lpCarStack->lpCarInformation = ( LPTCARINFORMATION ) malloc( nSize * sizeof ( TCARINFORMATION ));lpCarStack->nTop = -1;lpCarStack->nStackSize = nSize;}// 车辆信息 carinfo 入栈 lpCarStackvoid Push( LPTCARSTACK &lpCarStack, TCARINFORMATION carinfo ) {lpCarStack->nTop++;lpCarStack->lpCarInformation[lpCarStack->nTop] = carinfo;}// 车辆信息从栈 lpCarStack 中弹出并存入 carinfovoid Pop( LPTCARSTACK &lpCarStack, TCARINFORMATION &carinfo ) {carinfo = lpCarStack->lpCarInformation[lpCarStack->nTop];lpCarStack->nTop--;}// 若栈 lpCarstack 空,返回 TRUE;否则,返回 FALSEBOOL IsStackEmpty( LPTCARSTACK lpCarStack ){return lpCarStack->nTop == -1;}// 若栈 lpStackFull 满,返回 TRUE;否则,返回 FALSEBOOL IsStackFull( LPTCARSTACK lpCarStack ){return lpCarStack->nTop == ( lpCarStack->nStackSize - 1 );}// 销毁栈 lpCarStack,将指针 lpCarStack 置为 NULLvoid DestroyStack( LPTCARSTACK &lpCarStack ){free( lpCarStack->lpCarInformation );free( lpCarStack );lpCarStack = NULL;}typedef struct carnode // 链队结点信息{TCARINFORMATION carinfo; // 车辆信息struct carnode *lpNext; // 指向下一个元素的指针} TCARNODE, *LPTCARNODE;typedef struct carqueue // 链队{LPTCARNODE lpHead; // 头结点LPTCARNODE lpRear; // 指向当前队尾的指针int nEffectiveSize; // 当前队中元素个数} TCARQUEUE, *LPTCARQUEUE;// 初始化链队 lpCarQueuevoid InitQueue( LPTCARQUEUE &lpCarQueue ){lpCarQueue = ( LPTCARQUEUE ) malloc( sizeof( TCARQUEUE ) );lpCarQueue->lpHead = ( LPTCARNODE) malloc( sizeof( TCARNODE ) ); lpCarQueue->lpHead->lpNext = NULL;lpCarQueue->lpRear = lpCarQueue->lpHead;lpCarQueue->nEffectiveSize = 0;}// 车辆信息 carinfo 入队 lpCarQueuevoid EnQueue( LPTCARQUEUE &lpCarQueue, TCARINFORMATION carinfo ) {LPTCARNODE lpCarNode = ( LPTCARNODE ) malloc( sizeof( carnode ) );lpCarNode->carinfo = carinfo;lpCarNode->lpNext = NULL;lpCarQueue->lpRear->lpNext = lpCarNode;lpCarQueue->lpRear = lpCarQueue->lpRear->lpNext;lpCarQueue->nEffectiveSize++;}// 队头元素从链队 lpCarQueue 中出队并存入 carinfovoid DeQueue( LPTCARQUEUE &lpCarQueue, TCARINFORMATION &carinfo ) {LPTCARNODE lpTemp = lpCarQueue->lpHead->lpNext;carinfo = lpTemp->carinfo;lpCarQueue->lpHead->lpNext = lpTemp->lpNext;free( lpTemp );lpCarQueue->nEffectiveSize--;}// 若链队 lpCarQueue 为空,返回 TRUE;否则,返回 FALSEBOOL IsQueueEmpty( LPTCARQUEUE lpCarQueue ){return lpCarQueue->nEffectiveSize == 0;}// 销毁链队 lpCarQueuevoid DestroyQueue( LPTCARQUEUE &lpCarQueue ){LPTCARNODE lpNextCarNode = NULL;for ( LPTCARNODE lpCarNode = lpCarQueue->lpHead; lpCarNode != NULL; lpCarNode = lpNextCarNode ){lpNextCarNode = lpCarNode->lpNext;free( lpCarNode );}free( lpCarQueue );lpCarQueue = NULL;}// 将字符串时间格式转换为数字(分钟)格式,例如 12:36 将被转换为 756 ( 12 * 60 + 36 )int ConvertTimeFormat( char *lpTime ){int nHour = 0;int nMinute = 0;sscanf( lpTime, "%d:%d", &nHour, &nMinute );return nHour * 60 + nMinute;}// 根据在停车场内的停留时间 nContinuanceMinutes (分钟)计算费用double CalculateExpense( int nContinuanceMinutes ){return nContinuanceMinutes * ( 5.0 / 60 );}int main( void ){// setcolor();int nParkCapability = 0; // 停车场容量putchar( '\n' );printf( "请输入停车场容量:" );scanf( "%d", &nParkCapability );LPTCARSTACK lpCarStack = NULL; // 停车场,用栈模拟豫 InitStack( lpCarStack, nParkCapability );LPTCARQUEUE lpCarQueue = NULL; // 便道,用链队模拟 InitQueue( lpCarQueue );char cCommandType = NULL; // 命令类型char szUserInput[128] = { NULL }; // 用户输入do{ClearScreen();//setcolor();putchar( '\n' );puts( "--------------------" );puts( "[命令类型]" );puts( "A - 车辆到达" );puts( "D - 车辆离开" );puts( "E - 停止输入" );puts( "O - 显示当前停车场和便道使用情况" );putchar( '\n' );puts( "例:" );puts( "A,鄂A3926,13:33" );puts( "D,鄂A3926,14:44" );puts( "E" );puts( "O" );putchar( '\n' );printf( "请输入命令:" );scanf( "%s", szUserInput );puts( "--------------------" );char szCarInformation[128] = { NULL };sscanf( szUserInput, // 将命令类型与车辆信息分开存放"%c,%s",&cCommandType, // 用户输入的前半部分,即命令类型szCarInformation // 用户输入的后半部分,即车辆信息);char *lpCommaLocation = NULL; // 车辆信息字符串中的逗号位置for ( lpCommaLocation = szCarInformation; *lpCommaLocation != '\0'; lpCommaLocation++ ){if ( *lpCommaLocation == ',' ){break;}}*lpCommaLocation = '\0';TCARINFORMATION carinfo = { NULL }; // 存储本次用户输入的车辆信息 strcpy( carinfo.szRegistrationMark, szCarInformation );if ( cCommandType == 'A' ){strcpy( carinfo.szArrivalTime, lpCommaLocation + 1 );if ( FALSE == IsStackFull( lpCarStack ) ){strcpy( carinfo.szEntranceTime, carinfo.szArrivalTime ); Push( lpCarStack, carinfo );printf( "已进入停车场第 %d 个车位\n",lpCarStack->nTop + 1);printf( "车牌号:\t\t%s\n", carinfo.szRegistrationMark ); printf( "进入时间:\t%s\n", carinfo.szEntranceTime );puts( "是否收费:\t是" );}else{EnQueue( lpCarQueue, carinfo );printf( "停车场已满,已停放在便道的第 %d 个车位\n",lpCarQueue->nEffectiveSize);printf( "车牌号:\t\t%s\n", carinfo.szRegistrationMark ); printf( "停放时间:\t%s\n", carinfo.szArrivalTime );puts( "是否收费:\t否" );}}else if ( cCommandType == 'D' ){strcpy( carinfo.szDepartureTime, lpCommaLocation + 1 );LPTCARSTACK lpTempCarStack = NULL;InitStack( lpTempCarStack, nParkCapability );TCARINFORMATION carinfoOut = { NULL };BOOL bIsCarFound = FALSE;while ( FALSE == IsStackEmpty( lpCarStack ) ){Pop( lpCarStack, carinfoOut );if ( 0 != strcmp( carinfoOut.szRegistrationMark, carinfo.szRegistrationMark ) ) {Push( lpTempCarStack, carinfoOut );}else{bIsCarFound = TRUE;break;}}while ( FALSE == IsStackEmpty( lpTempCarStack ) ){TCARINFORMATION tempcarinfo = { NULL };Pop( lpTempCarStack, tempcarinfo );Push( lpCarStack, tempcarinfo );}if ( FALSE == bIsCarFound ){printf( "车牌号为 %s 的车未进入停车场.\n", carinfo.szRegistrationMark ); Pause( "--------------------\n按任意键输入下一条信息...\n" );continue;}strcpy( carinfoOut.szDepartureTime, carinfo.szDepartureTime );int nEntranceTime = ConvertTimeFormat( carinfoOut.szEntranceTime ); int nDepartureTime = ConvertTimeFormat( carinfoOut.szDepartureTime ); int nContinuanceMinutes = nDepartureTime - nEntranceTime;printf( "计费时段:\t%s - %s (共 %d 分钟)\n",carinfoOut.szEntranceTime,carinfoOut.szDepartureTime,nContinuanceMinutes);double rExpense = CalculateExpense( nContinuanceMinutes );printf( "应交纳的费用:\t%.1lf 元\n", rExpense );if ( FALSE == IsQueueEmpty( lpCarQueue ) ){TCARINFORMATION tempcarinfo = { NULL };DeQueue( lpCarQueue, tempcarinfo );strcpy( tempcarinfo.szEntranceTime, carinfoOut.szDepartureTime );Push( lpCarStack, tempcarinfo );puts( "--------------------" );printf( "停放在便道的第 1 个车位,车牌号为 %s 的车已进入停车场\n",tempcarinfo.szRegistrationMark);}}else if ( cCommandType == 'E' ){puts( "********************" );puts( " :吴远彦 \n" );puts( "学号: \n" );puts( "********************" );break;}else if ( cCommandType == 'O' ){ClearScreen();//setcolor();putchar( '\n' );puts( "[停车场使用情况]\n" );puts( "[车位]\t[车牌号]\t[到达时间]\t[进入(开始计费)时间]\n"); for ( int i = 0; i <= lpCarStack->nTop; i++ ){printf( "%d\t%s\t\t%s\t\t%s\n",i + 1,lpCarStack->lpCarInformation[i].szRegistrationMark,lpCarStack->lpCarInformation[i].szArrivalTime,lpCarStack->lpCarInformation[i].szEntranceTime);}putchar( '\n' );putchar( '\n' );putchar( '\n' );puts( "[便道使用情况]\n" );puts( "[车位]\t[车牌号]\t[到达时间]\t[进入(开始计费)时间]\n");int nNum = 0;for ( LPTCARNODE lpCarNode = lpCarQueue->lpHead->lpNext;lpCarNode != NULL; lpCarNode = lpCarNode->lpNext ){nNum++;printf( "%d\t%s\t\t%s\t\t%s\n",nNum,lpCarNode->carinfo.szRegistrationMark,lpCarNode->carinfo.szArrivalTime,lpCarNode->carinfo.szEntranceTime);}putchar( '\n' );}else{puts( "输入信息有误.第一个字符只能为 'A' 或 'D' 或 'E' 或 'O' (区分大小写)." ); }Pause( "--------------------\n按任意键输入下一条信息.\n" );} while ( TRUE );DestroyStack( lpCarStack );DestroyQueue( lpCarQueue );Pause( "\n按任意键退出程序...\n" );return 0;}。
数据结构c语言版课程设计停车场管理系统

课程设计:停车场c语言版本的数据结构课程设计,要求用栈模拟停车场,用队列模拟便道,实现停车场的收费管理系统停车场停满车后车会停在便道上面下面附上源码,vc:(下编译#include 〈stdio。
h>//#include 〈stdlib。
h〉//malloc#include 〈time。
h〉//获取系统时间所用函数#include <conio.h> //getch()#include 〈windows。
h〉//设置光标信息mallco #define MaxSize 5 /*定义停车场栈长度*/#define PRICE 0。
05 /*每车每分钟收费值*/#define BASEPRICE 0。
5 //基础停车费#define Esc 27 //退出系统#define Exit 3 //结束对话#define Stop 1 //停车#define Drive 2 //取车int jx=0,jy=32;//全局变量日志打印位置typedef struct{int hour;int minute;}Time,*PTime;/*时间结点*/typedef struct /*定义栈元素的类型即车辆信息结点*/{int num ;/*车牌号*/Time arrtime;/*到达时刻或离区时刻*/}CarNode;typedef struct /*定义栈,模拟停车场*/{CarNode stack[MaxSize];int top;}SqStackCar;typedef struct node /*定义队列结点的类型*/{int num; /*车牌号*/struct node *next;}QueueNode;typedef struct /*定义队列,模拟便道*/ {QueueNode *front,*rear;}LinkQueueCar;/*函数声明*/PTime get_time();CarNode getcarInfo();void qingping(int a);void gotoxy(int x,int y);void printlog(Time t,int n,int io,char ab,int po,double f);void printstop(int a,int num,int x0,int y0);void printleave(int a,int po,int num);/*初始化栈*/void InitSeqStack(SqStackCar *s){s—〉top=—1;}/* push入站函数*/int push(SqStackCar *s,CarNode x) //数据元素x入指针s所指的栈if(s->top==MaxSize-1)return(0); //如果栈满,返回0 else{s—〉stack[++s-〉top]=x; //栈不满,到达车辆入栈return(1);}}/*栈顶元素出栈*/CarNode pop(SqStackCar *s){CarNode x;if(s->top〈0){x。
PLC课程设计(停车场车位控制 )

目录1 引言12 概述23 系统总体方案设计 ---------------------------------------------------- 33.1 主电路的设计43.2 控制电路的设计43.2.1 PLC概述43.2.2 PLC选型63.2.3系统变量定义及分配表83.2.4系统接线图设计-------------------------------------------- 94 控制系统设计124.1控制程序流程图设计124.2控制程序设计思路125 系统调试及结果分析155.1 系统调试及解决的问题----------------------------------------- 155.2 结果分析--------------------------------------------------------- 15 完毕语--------------------------------------------------------------------- 16 参考文献17附录一: 梯形图19附录一: 程序指令201 引言随着进口汽车大量涌入和国内汽车工业的不断开展,大中城市的汽车数量剧增,从而引发了停车管理问题。
近几年,我国的停车场管理技术不断完善,计算机技术、通信技术、网络技术的开展又使停车场管理的系统功能得以提高。
现在小区停车场管理系统重点要做到准确指示车辆进出,车辆进入时给与司机准确的车位数量与具体位置,车辆进入后,记录车辆数量,车辆离开时,减少车辆数量。
车辆进出指示可完全由PLC作为中央控制来处理,停车场空位指示可利用价格较不高的数码管显示。
停车场车位管理系统,它由固定在停车场中的管理控制器、埋设在车位处的电动车位锁及移动控制器相互连接构成;管理控制器包括传感器接收模块、逻辑控制电路及驱动控制电路;电动车位锁的电源端与驱动控制电路的电源输出端连接;移动控制器中设有数据读写控制电路、无线遥控发射模块及电池,该无线遥控发射模块通过移动控制器外部设置的遥控天线与管理控制器的接收天线进展无线信号连接,具有极大的实用价值。
C语言课程设计报告停车场管理系统

算法与数据结构课程设计题目:停车场管理专业班级:软件四班姓名:学号:指导教师:成绩:______________目录一、题目及要求 (2)二、题目分析 (3)三、数据结构说明 (4)四、各函数算法分析 (5)(1)主函数 (5)(2)车辆到达函数 (7)(3)车辆离开函数 (8)(4)列表显示函数 (10)五、程序测试 (14)(1)测试信息对错误的处理 (14)(2)列表显示 (15)(3)同时输出等待的提示作息 (16)(4)计算它们的应交费用 (17)六、课程设计感悟与收获 (18)七、源代码 (19)八、参考文献 (25)一、题目及要求[要求]设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。
车辆按到达停车场时间的早晚依次从停车场最里面向大门口停放(最先到达的第一辆车放在停车场的最里面)。
如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆国就进入停车场。
停车场内如有某辆车要走,在它之后进来的车都必须退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。
每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。
如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且其他在便道上等待的车辆的次序不变。
编制一程序模拟停车场管理。
[提示]汽车的模拟输入信息格式可以是:(到达/离去,汽车牌照号码,到达/离去时刻)。
例如:(’A’,1,5)表示1号牌照车在5这个时刻到达,而(’D’,5,20)表示5号牌照车在20这个时刻离去,整个程序可以在输入信息为(’E’,0,0)时结束。
基本要求:要求程序输出每辆车到达后的停车位置(停车场或便道上),以及某辆车离开停车场时应交的费用和它在停车场内停留的时间。
根据题目要求,停车场可以用一个长度为n的堆栈来模拟。
由于停车场内如有某辆车要开走,在它之后进来的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。
CW停车场管理系统使用手册

停车场管理系统使用手册PK-CPW10.5深圳市披克科技有限公司SHENZHEN PEAKE TECHNOLOGY CO., LTD.第一章系统简介1.1停车场管理系统简介停车场管理系统是非接触式IC卡技术应用一卡通系统之一,该系统集非接触式IC卡技术、计算机网络、视频监控、图象识别处理及自动控制技术于一体。
实现了停车场(库)的全自动化管理,包括车辆出入控制、车型、车牌校对、车位检索、引导、停车费用收取等自动管理。
具有套餐卡、临时卡、特权卡、管理卡等各种收费管理方式,具有自动出卡或自动出纸票、中英文LED显示、语音提示、对讲系统、车牌识别、图象对比、自动起落闸、防闸车、防闸人等功能。
长距离微波卡可实现无人值守,车辆通行时不需打开车窗,自动读卡开启道闸。
车位引导系统利用超声波检测器检测车位使用情况,实时告知空闲车位的位置及指引停车路线。
广泛应用于智能大厦、智能小区的各种场合。
1.2停车场管理系统组成标准停车场管理系统由入口机、出口机、电动道闸、车辆检测器、压力电波、摄像机、射灯、图像采集卡、停车场系统管理软件等组成。
入口机包含读卡器、控制器、信息显示屏、对讲分机、语音提示、车辆检测器、自动出卡机或出票机等出口机包含读卡器、控制器、信息显示屏、对讲分机、语音提示、车辆检测器、自动收卡机等,如下图所示:(1)读卡器读取IC卡的卡号、出入场时间等信息,送入控制器◆临时卡选择短距离非接触式IC卡读卡器,读卡距离不小于5cm◆长期卡可远距离微波读卡器,感应距离为3-4米或以上(2)停车场控制器接收来自读卡器的IC卡信息,存储权限及各种信息记录,做出判断,控制输出开闸、显示等信号,并完成控制器与电脑之间的信息交换(包括上传相关信息至电脑及从电脑下载数据至控制器)。
(3)电动道闸用于阻挡无权限的车辆、放行有效车辆(4)车辆检测器及地感线圈自动检测车辆的有无,实现道闸自动落杆以及相关操作信息(5)压力电波(可选)利用压力传感器检测车辆和行人,达到对人、车的安全要求(6)自动出卡机(可选)对于入口临时卡的发放,自动弹出临时车使用的IC卡(7)自动收卡机(可选)对于出口临时卡在管理中心缴完费之后,在无人值守的出口通过收卡机识别已缴费的临时卡自动放行并回收卡片(8)自动出票机(可选)对于入口临时票的发放,自动打印出临时车使用的条码票据(9)信息显示屏显示时间、收费金额、卡有效期、车位以及停车场其他相关信息(10)语音系统提示车辆进出场的读卡操作、收费等,如正常操作可提示请读卡、收费金额、有效期等相关信息,误操作或非法操作作出相应提示(11)对讲系统在管理中心安装对讲主机,各出入口安装对讲分机,保证各出入口和管理中心的联络(12)摄像机自动摄取车辆外型、颜色、车牌号码等图像信息,出场时将出口摄取的车辆图象与入口图象进行比较,信息一致时,车辆放行,确保车辆安全(13)发卡机读写IC卡内信息(14)HUB(或网络扩展器)TCP/IP网络控制器通过网络交换机或HUB实现互联及连接服务器,而RS-485/422控制器则通过网络扩展器(RS-485/422转换成RS-232)连接服务器(15)系统管理软件通过软件实现停车场系统相关功能(如控制进出、收费、图像对比、授权、统计管理)1.3停车场管理系统结构及功能1.3.1停车场管理系统结构1.3.2停车场管理系统功能◆软件的人机界面友好,易于操作,具有较强的抗外界干扰能力;◆在系统脱机、联网时,系统软件能够自动侦测,自动调整运行;◆可对用户权限、用户档案、操作密码、系统日志、记录保留时间等进行管理和更改;◆能自动记录操作员操作日志,包括:操作员编号、操作员姓名、操作类型、操作时间、操作对象、操作内容、操作结果;◆可设置参数包括停车场的车位数量、停车场名称、地址、出入口数量、收费规则等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
return (Q.rear-Q.front+MAXQSIZE)%MAXQSIZE;
}
Status w_total(SqQueue Q)
{
return QueueLength(Q);
};/*在便车道的车辆总数*/
Status EnQueue(SqQueue &Q,int e)
{
if((Q.rear+1)%MAXQSIZE==Q.front)
typedef struct LNode
{
struct
{
int stnumber;
char num[10];
struct now_time reach;
struct now_time leave;
float fee;
int totalhour;
}data;
struct LNode *next;
}LNode,*LinkList;
停车场管理系统
某停车场可以停放n辆汽车,该停车场只有一个大门,每辆汽车离开停车场都要求之前的汽车必须先退出停车场为它让道,而后让道的汽车再次驶入停车场,停车场示意图如下:
要求设计停车管理系统,实现车辆的进入、离开并根据停车时间计费。
程序:
#include <stdio.h>
#include <stdlib.h>
printf( "离开时间%d:%d:%d\n", newtime->tm_mday,newtime->tm_hour,newtime->tm_min);
printf( "您的停车费用总共:%f",fee);
printf("\n\n------------------------------\n\t*******谢谢您的光临,祝您一路平安********!\n\n");
{
int j=0,m=0,k;
int a=0;
for(int i=0;num[i]!='\0';i++)
{
j++;
}
for(i=1;i<=MAX;i++)
{
if(strcmp(set[i].num,num)==0)
{
m=1;
break;
}
}
if(j!=3||m==1)
return 1;
else
return 0;
{
p=p->next;
++j;
}
if(!p||j>i-1)
return ERROR;
s=(LinkList)malloc(sizeof(LNode));
s->data.fee=fee;
s->data.totalhour=totalhour;
s->data.stnumber=lset;
s->data.leave.mday=day;
Status Push(SqStack &S,int e)
{
if(S.top-S.base>=S.stacksize)
{
if(!S.base)
exit(OVERFLOW);
S.top=S.base+S.stacksize;
}
*S.top++=e;
return OK;
}
void enterstop( LinkList clist,SqStack &S,char number[10],int *come)
#include<string.h>
#include <time.h>
#define OK 1
#define NULL 0
#define ERROR 0
#define TURE 1
#define FALSE 0
#define OVERFLOW -2
typedef int Status;
#define MAXQSIZE 100
{
int e;
*come=*come+1;
Pop(S,e);
set[e].setnumber=e;
copy(set[e].num,number);
struct tm *newtime;
char am_pm[] = "AM";
time_t long_time;
time( &long_time ); /* Get time as long integer. */
int lset,t;
int j=1;
int totalhour;
float fee;
printf ("请输入您的车位号");
do{
scanf ("%d",&lset);
getchar();
for(int i=0;i<=MAX;i++)
{
if(set[lset].num[1]=='#')
j=0;
}
if(j==0)
printf("\n\n****请核对您的停车信息****\n");
printf("车牌号:%s\n",set[e].num);
printf("停车车位号:%d\n",set[e].setnumber);
printf( "到达时间%d:%d:%d\n", set[e].reach.mday,set[e].reach.hour,set[e].reach.min);
newtime = localtime( &long_time ); /* Convert to local time. */
set[e].reach.hour=newtime->tm_hour;
set[e].reach.mday=newtime->tm_mday;
set[e].reach.min=newtime->tm_min;
{
printf("*****车场并没有停车*******\n");
return ERROR;
}
else
{
if(lset>MAX ||lset<1)
{
printf("*****您输入有误,该车号并不存在!*******\n请重新输入您的车位号:\n");
t=1;
}
else
{
if(set[lset].num[1]=='#')
{
Q.base=(char*)malloc(100*sizeof(char[10]));
if(!Q.base)exit(OVERFLOW);
Q.front=Q.rear=0;
return OK;
}
/*模拟通道*/
Status stack_empty(SqStack S)
{
if(S.top==S.base)
fee=price*totalhour;
printf("****以下是您本次停车的信息****\n");
printf("车牌号:%s\n",set[lset].num);
printf("停车车位号:%d\n",set[lset].setnumber);
printf( "到达时间%d:%d:%d\n", set[lset].reach.mday,set[lset].reach.hour,set[lset].reach.min);
}
Status lListInsert_Link(LinkList &llist,int i,int lset,int totalhour,float fee,int day,int hour,int min)
{
LNode *p,*s;
int j;
p=llist;
j=0;
while(p&&j<i-1)
{
LNode *p,*s;
int j;
p=L;
j=0;
while(p&&j<i-1)
{
p=p->next;
++j;
}
if(!p||j>i-1)
return ERROR;
s=(LinkList)malloc(sizeof(LNode));
s->data.stnumber=set[setnumber].setnumber;
return ERROR;
Q.base[Q.rear]=e;
Q.rear=(Q.rear+1)%MAXQSIZE;
return OK;
}
Status enterlane(SqQueue &Q,int waitenumber)
{
EnQueue(Q,waitenumber);
return OK;
}/*进入便车道等待*/
s->next=p->next;
p->next=s;
return OK;
}
void ccord(LinkList clist,int i,int setnumber)
{
ListInsert_Link(clist,i,setnumber);
}
Status initStack(SqStack &S)
{
int i;
s->data.reach.hour=set[setnumber].reach.hour;