4.3.2 便道车辆管理算法

1、便道的车辆管理采用了队列的数据结构对车辆信息进行处理和保存。该数据结构采用的是链式存储,通过对每一个节点的遍历访问获取到相应的车辆信息进行修改和更新,从而实现对便道车辆的模拟管理。

2、和停车场管理的算法相似,在队列遍历的过程中也是通过标志自增产生的不同数值来对车辆信息进行区分的,不同的数值代表着不同的车辆信息含义,在完成一个车辆信息循环之后(车辆信息可以参照3.2.1逻辑结构设计),该标志会重置。

3、系统通过判断用户输入的车牌号是否有效和是否重复来判断车辆是否可以停靠在便道上。如果车牌号不合法,或者便道中已经存在该车牌号的车辆时,那么系统会自动退出。反之,则会将用户输入的车牌号登记,并更新便道车辆信息。

4、车辆在离开便道的时候,用户需要输入离开的车辆的车牌号,由系统搜索便道内是否存在该车辆,如果存在则会将该变到车位上的车辆信息全部初始化。然后系统会询问用户是否要将离开的车辆进入停车场停靠(1代表是,0代表否),

选择是系统会将停车场的空位自动分配给当前的离开车辆,并更新停车场的车辆信息。反之,系统会提示用户是否要继续将便道的车辆离开,当用户输入合法的车牌号时,系统将会继续执行便道车辆离开的操作,否则系统会返回主菜单。

5、车辆在进站登记的时候,系统会自动优先分配车辆信息被全部初始化的停车空位。因为在车辆登记的时候,系统会首先判断停车场内是否存在被完全初始化

的停车位置,如果存在则将该车辆的信息更新到被初始化的停车位上,然后返回主菜单。

6、便道车辆管理主要设计源码:
void LoadInput(dat *Q)                      //车辆到达便道
{int e;int i;int j = 0;int isReach = FALSE;              //车到达与否int isLeave = FALSE;              //车离开与否    int leaveTime = 0;                //即尚未离开int cost = 0;                     //停车费用int isEmpty = TRUE;               //车位是否为空printf("\n--车辆到达登记--\n");       printf("\n请输入车牌号:(车牌号重复时自动退出)\n");scanf("%d",&e);isReach = TRUE;if(QSearch(Q,0) && !QSearch(Q,e))                   //车牌号为0时,停车位空出,优先将进入停车场的车辆放置于此{if((*Q).front != (*Q).rear)    //队列不为空时{DAT *p = (*Q).front -> next;while(p != NULL){     j++; //printf("\n--%d--\n",j);//printf("\n--p = %d--\n",p->data);if(j == 4){time(&rawtime);p -> data = rawtime;timeinfo = localtime (&rawtime);printf("到达时间: %s",asctime(timeinfo));}else if(j == 6){ if(p -> data != NULL){rawtime = p -> data;timeinfo = localtime (&rawtime);printf("离开时间: %s",asctime(timeinfo));}elseprintf("离开时间: 空\n");}else if(j == 7){p -> data = 0;printf("在便道停留时间:%d秒\n",p -> data);}else if(j == 8){p -> data = FALSE;if(p -> data == FALSE)printf("停车位是否为空: 否\n");elseprintf("停车位是否为空: 是\n");j = 0;break;}else if(j == 1 || j == 2 || j == 3 || j == 5){if(j == 1){while(p -> data != 0){for(i = 0;i < 8;i++){p = p -> next;//printf("\n--p = %d--\n",p->data);}j = 1;}if(p -> data == 0){p -> data = e;printf("\n车牌号: %d\n",p -> data);}}if(j == 2)printf("便道车位: %d\n",p -> data);if(j == 3){p -> data = TRUE;if(p -> data == FALSE)printf("到达: 否\n");elseprintf("到达: 是\n");}if(j == 5){p -> data = FALSE;if(p -> data == FALSE)printf("离开: 否\n");elseprintf("离开: 是\n");}}p = p -> next;}}}   else{while(e != 0 && !QSearch(Q,e)){   lLocation++;time(&rawtime);               //获取当前时间<秒>(case 1 即为到达时间)isEmpty = FALSE;EnQueue(Q,e);EnQueue(Q,lLocation);EnQueue(Q,isReach);EnQueue(Q,rawtime);EnQueue(Q,isLeave);           EnQueue(Q,leaveTime);EnQueue(Q,cost);EnQueue(Q,isEmpty);printf("\n--车牌号%d登记成功--\n",e);                                                                printf("\n请输入车牌号:\n");scanf("%d",&e);}printf("\n--车牌号已存在,无法登记--\n");QueueTraverse(Q);    //遍历输出}
}
void LoadToStop(SqStack *S,int tempCarNumber)           //车辆从便道转入停车场
{int e;int i;int j = 0;int isReach = FALSE;              //车到达与否int isLeave = FALSE;              //车离开与否    int leaveTime = 0;                //即尚未离开int cost = 0;                     //停车费用int isEmpty = TRUE;               //车位是否为空int *p = NULL;isReach = TRUE;e = tempCarNumber;if(Search(S,0) && !Search(S,e))                   //车牌号为0时,停车位空出,优先将进入停车场的车辆放置于此{if((*S).top != (*S).base) //栈不为空时{for(p= (*S).base;p <= (*S).top-1;p++){j++;//printf("\n--%d--\n",j);if(j == 4){time(&rawtime);*p = rawtime;timeinfo = localtime (&rawtime);printf("到达时间: %s",asctime(timeinfo));}else if(j == 6){   if(*p != NULL){rawtime = *p;timeinfo = localtime (&rawtime);printf("离开时间: %s",asctime(timeinfo));}elseprintf("离开时间: 空\n");}else if(j == 7){*p = 0;printf("停车费用:%d元\n",*p);}else if(j == 8){*p = FALSE;if(*p == FALSE)printf("停车位是否为空: 否\n");elseprintf("停车位是否为空: 是\n");j = 0;break;}else if(j == 1 || j == 2 || j == 3 || j == 5){if(j == 1){while(*p != 0 && p <= (*S).top-1){for(i = 0;i < 8;i++)p++;j = 1;}if(*p == 0){*p = e;printf("\n车牌号: %d\n",*p);}}if(j == 2)printf("停车位: %d\n",*p);if(j == 3){*p = TRUE;if(*p == FALSE)printf("到达: 否\n");elseprintf("到达: 是\n");}if(j == 5){*p = FALSE;if(*p == FALSE)printf("离开: 否\n");elseprintf("离开: 是\n");}}}}printf("\n停车场的车辆信息已更新:\n");StackTraverse(S);  //遍历输出printf("\n-----------------------------\n");}else{if(e != 0 && !Search(S,e)){   sLocation++;time(&rawtime);               //获取当前时间<秒>(case 1 即为到达时间)isEmpty = FALSE;Push(S,e);Push(S,sLocation);Push(S,isReach);Push(S,rawtime);Push(S,isLeave);         Push(S,leaveTime);Push(S,cost);Push(S,isEmpty);printf("\n--车牌号%d成功转入停车场--\n",e);                                                                  }printf("\n停车场的车辆信息已更新:\n");StackTraverse(S);  //遍历输出printf("\n-----------------------------\n");}
}
void LoadLeave(dat *Q,SqStack *S)        //车辆离开便道
{   int tempCarNumber;int flag;int e;int i;int j = 0;int isEmpty = TRUE;                //车位是否为空int cost = 0;                      int time1,time2;                   //用于记录离开和到达的时间(中间变量)printf("\n--车辆离开登记(车牌号不存在时自动退出)--\n");printf("\n请输入已经离开的车牌号:\n");scanf("%d",&e);while(e != 0 && QSearch(Q,e)){tempCarNumber = e;printf("\n离开的车辆的信息如下:\n");printf("-----------------------------------\n");if((*Q).front != (*Q).rear)    //队列不为空时{DAT *p = (*Q).front -> next;while(p != NULL){j++;//printf("\n--j = %d--\n",j);//printf("\n--p = %d--\n",p -> data);if(j == 4){    if(p -> data != NULL){rawtime = p -> data;timeinfo = localtime (&rawtime);printf("到达时间: %s",asctime(timeinfo));time1 = rawtime;p -> data = 0;        //车辆离开后时间重置} elseprintf("到达时间: 空\n");}else if(j == 6){   time(&rawtime);  //获取当前时间<秒>(case 1 即为到达时间)timeinfo = localtime (&rawtime);printf("离开时间: %s",asctime(timeinfo));time2 = rawtime;p -> data = 0;}else if(j == 7){cost = time2 - time1;printf("在便道停留时间: %d秒\n",cost);cost = 0;}else if(j == 8){p -> data = TRUE;printf("停车位是否为空: 是\n");printf("-----------------------------------\n");j = 0;break;}else if(j == 1 || j == 2 || j == 3 || j == 5){if(j == 1){while(p -> data != e){for(i = 0;i < 8;i++){ p++;  }j = 1;}if(p -> data == e){printf("车牌号: %d\n",p -> data);p -> data = 0;}}else if(j == 2)printf("便道车位: %d\n",p -> data);else if(j == 3){if(p -> data == FALSE)printf("到达: 否\n");elseprintf("到达:是\n");p -> data = FALSE;}if(j == 5){p -> data = TRUE;if(p -> data == FALSE)printf("离开: 否\n");elseprintf("离开:是\n");p -> data = FALSE;}} p = p -> next;}   }printf("\n离开便道的该车辆是否要进入停车场(1/0)?\n");scanf("%d",&flag);if(flag == 1)LoadToStop(S,tempCarNumber);printf("\n如果还有车辆需要离开便道的话:\n");printf("\n请输入已经离开的车牌号:\n");scanf("%d",&e);}printf("\n--查无此车牌号--\n");
}

停车场管理系统(四)相关推荐

  1. 海康威视智能机器人泊车_干货|海康威视智能停车场管理系统(含技术指导手册+施工图)...

    随着汽车消费的持续增长,城市停车设施.规划.管理等方面不够完善,导致机动车停车供需矛盾.伴随着停车难问题的日益凸显,面对停车位有限资源与无限需求之间的矛盾,物联网时代就要充分利用物联网技术的力量解决有 ...

  2. 网络虚拟化有几种实现方式_停车场管理系统的防砸车功能有几种方式?如何实现?...

    原标题:停车场管理系统的防砸车功能有几种方式?如何实现? 前言 01 01 正文 一.压力波防砸装置 也叫遇阻防砸,主要是安装遇阻返回装置,当道闸杆下落过程中接触到车辆或者行人(接触力度是可以调节的) ...

  3. c语言数据结构课程设计停车场管理系统,数据结构课程设计报告停车场管理系统...

    <数据结构课程设计报告停车场管理系统>由会员分享,可在线阅读,更多相关<数据结构课程设计报告停车场管理系统(8页珍藏版)>请在人人文库网上搜索. 1.数据结构课程设计报告系 别 ...

  4. 【计算机毕业设计】停车场管理系统

    一.系统截图(需要演示视频可以私聊) 摘  要 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势:对于停车场管理系统当然也不能排除在外,随着网络技术的不断成熟,带 ...

  5. 基于JAVA的停车场管理系统

    源码及论文下载: http://www.byamd.xyz/tag/java/ 第一章 概述 1.1 项目背景 车辆越来越多的今天,停车场只靠人工管理显然难度已经是提高很多,所以应该开发出便于管理记录 ...

  6. springboot-鑫源停车场管理系统毕业设计源码290915

    springboot鑫源停车场管理系统 摘 要 21世纪时信息化的时代,几乎任何一个行业都离不开计算机,将计算机运用于停车场管理也是十分常见的.过去使用手工的管理方式对停车场进行管理,造成了管理繁琐. ...

  7. Java、JSP基于Web停车场管理系统毕业设计论文

    技术:Java.JSP等 摘要: 随着现代社会的快速发展,人民生活水平快速提高,汽车的数量飞速增加,在生活小区.办公场所.商场.景点等地方,停车难问题也日益突出.为了解决停车难的问题,结合一些当前的停 ...

  8. 【java毕业设计】基于javaEE+原生Servlet+MySql的Web停车场管理系统设计与实现(毕业论文+程序源码)——停车场管理系统

    基于javaEE+原生Servlet+MySql的Web停车场管理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于javaEE+原生Servlet+MySql的Web停车场管理系统设计 ...

  9. 【基于Web停车场管理系统——开题报告 分享(仅供参考呀)】

    目录 一.课题来源 二.研究现状 三.课题研究目标.内容和手段: 四.设计(论文)提纲及进度安排: 五.进程安排 六.主要参考文献和书目: 一.课题来源 近些年来,随着时代的进步,经济的飞速发展,人们 ...

  10. 基于Java+Swing+Mysql实现停车场管理系统

    基于Java+Swing+Mysql实现停车场管理系统 一.系统介绍 二.系统展示 三.其它系统 四.获取源码 一.系统介绍 1.系统功能 用户 1.登录系统 2.信息查询 包含计费标准,当前在场信息 ...

最新文章

  1. 【风之语】至贱城市之苏州
  2. lob移表空间 oracle_移动一个带有lob字段的表到另外一个表空间
  3. HDU 3410 Passing the Message
  4. 在SQL2005/SQL2008中CTE用法差异
  5. 文本分类模型_文本分类模型之TextCNN
  6. 人工智能学习--文本检测和识别综述(2021)
  7. 如何快速实现移动端短视频功能?
  8. php中unset面试题,php unset和引用——由一道php面试题引发的思考
  9. 上机不会做?在讲台上做做试试!
  10. 一个牛人给JAVA初学者的建议。虽然岁月漫长,但仍值得等待
  11. 从零开始编写深度学习库(五)Eigen Tensor学习笔记2.0
  12. thinkphp 响应
  13. Netch + Connectify 实现代理转全局并共享给其他设备,例如Kindle
  14. fullavatareditor 富头像上传编辑器
  15. QQ空间欢迎动画代码大全
  16. 带你走进程序员世界:资历深不是优势,资源才是难得的宝藏!
  17. java错误光标的闪烁怎么设置_【CSS3】自定义设置可编辑元素闪烁光标的颜色
  18. [附源码]Python计算机毕业设计大学生校园社团管理系统Django(程序+LW)
  19. CAP理论-分布式系统的基础理论-------CP、AP案例场景分析
  20. QT学习的相关博客论坛

热门文章

  1. 【高效开发工具系列】uTools介绍与使用
  2. eureka 源码分析三--InstanceInfo 中OverriddenStatus的作用
  3. arcgis字体图标_ArcGIS 在高清屏中主界面界面字体和图标显示过小,如何解决?...
  4. 计算机因硬件 出现故障怎么办,电脑哪个硬件最容易出现故障?该如何保养
  5. 【天命奇御】成就进度62/71的通关攻略(6·传闻篇)
  6. 李开复“埋雷”,蚂蚁拆弹
  7. 群玩小游戏sdk一键接入
  8. python交互模式如何撤回_在Python交互模式输入什么命令可以退回命令行模式
  9. JavaOne 2012:Scala技巧
  10. android 照片拼接长图_Android拼接合并图片生成长图-阿里云开发者社区