
ETC程序设计报告(谭晓鹏).doc
126页1C语言课程设计报告ETC 收费模拟系统指导教师:周纯杰 何顶新 周凯波 彭刚测控 1001 班组长:冯晓冬 U201013853组员:杨春禄 U2010138492目录:一.引言………………………………………41.任务背景 ………………………………………42.编写目的 ………………………………………53.软件概述 ………………………………………5二.功能及操作介绍 ……………………………5界面 1—欢迎界面 一 ……………………………….6界面 2—欢迎界面 二…………………………………7界面 3—车辆通行界面………………………………..7界面 4—信息查询界面 ………………………………10界面 5—充值系统界面 ……………………………...15界面 6—系统使用说明界面 ……………………………19界面 7—退出界面 …………………………………21三.系统设计分析 ………………………………22一.程序流程图 ……………………………………23二.程序模块分析 …………………………………24三.重要数据和引用函数说明 ………………………….32四.核心算法分析……………………………………34五.程序制作过程难点分析………………………………383六.程序测试………………………………………39四.不足之处……………………………………41五.编程分工……………………………………42六.程序设计心得 ………………………………42七.参考资料……………………………………43八.程序源代码 …………………………………434一. 引言1.任务背景ETC = Electronic Toll Collection电子不停车收费系统,是指车辆在通过收费站时,通过车载设备实现车辆识别、信息写入(入口)并自动从预先绑定的 IC卡或银行帐户上扣除相应资金(出口) ,是国际上正在努力开发并推广普及的一种用于道路、大桥和隧道的电子收费系统。
使用该系统,车主只要在车窗上安装感应卡并预存费用,通过收费站时便不用人工缴费,也无须停车,高速费将从卡中自动扣除虽然能实现不停车收费,但一般来说,车辆还是需要以较低速度通过这种收费系统每车收费耗时不到两秒,其收费通道的通行能力是人工收费通道的 5到 10倍 近年来,随着国民经济的快速增长,人流、物流、信息流以前所未有的密度涌向大中城市并向周边辐射,城市化进程明显加快,城市规模不断扩大,人口不断集中统计资料显示:超过百万人口的大城市数量从 1978年的 13个增加到 2010年的 42个,目前城市化水平已经达到 50%此种状态在带动城市交通需求高速增长,机动车辆快速增加的同时,也促使城市道路负荷加重,交通拥堵现象日益加剧交通拥堵使交通延误增大,行车速度降低、时间损失、燃料费用增加、排污量增大、城市环境恶化、并诱发交通事故,直接影响人们的工作效率和身体健康当前,城市道路交通拥堵已经成为阻碍城市快速健康发展的焦点问题之一,其所造成的经济、安全和环境等方面的重大损失已引起社会各方的广泛关注例如,北京市城市干道平均车速比十年前降低 50%以上,市区 183个主要交叉口中,严重阻塞的达到 60%;上海市中心区高峰期的道路平均车速不到20km/h。
同时各大城市交通拥堵日趋严重,并且开始由城市中心区向郊区蔓延;中小城市也普遍出现了交通拥挤现象因此,优先发展立体化、现代化交通尤为必要,ETC 可凭借其快速、高效、全自动化的特点广泛应用于高架路,环城公路,桥梁的征收道路通行费用的地5方,通过高效的处理能力有效缓解道路通行缓慢的问题随着指导中国高速公路电子收费应用的国家标准 GB/T20851《电子收费 专用短程通信》在 2007年 3月 17日的正式发布和交通部门的大力宣贯的推广中国 ETC发展的标准之争终于告一段落在这之前的欧洲标准,日本标准和国标之争,915M 产品,2.4G 产品和 5.8G产品之争终于尘埃落地中国选择了自己的国标,选择了 5.8G标准既已确立中国的 ETC产业和应用也蓬勃发展ETC 产品的生产厂家已经有十多家其中不乏能提供整体解决方案的厂家到目前为止,交通部组织开展的京津冀和长三角区域高速公路联网不停车收费示范工程进展顺利,已经在北京、上海、江苏、江西等地开通运营,截止 2009年 1月,开通 ETC车道的数在 240条左右我们用 BC编写的 C语言程序来模拟 ETC收费系统的流程2.编写目的运用上学期学过的 C 语言课程基本知识进行初步编程实践,编写 ETC 收费模拟系统,通过编写过程,逐步积累编程经验,掌握一定的调试技巧,培养逻辑思维,并对 ETC 系统有一定深入地了解,锻炼实践能力和小组合作能力。
3.软件概述ETC 模拟收费系统具有车辆通行的模拟动画演示,车辆相关信息的显示,计费,余额判断,短信发出,充值等功能,基本具备了现实 ETC 收费系统的功能该软件基于 BC31 开发,适用于 dos3.0 以上的所有 dos 版本和 windows 操作系统;本软件设计中加入了鼠标和键盘操作,因此操作过程必须依赖鼠标和键盘才能实现所有功能;本软件对于显卡和其他硬件无特殊要求软件中我们建立了六个不同的车辆模型,并给六辆车分别以不同的车牌号,类型、通行费用,对六辆车分别给予一定的初始余额、信用额度,从而实现ETC 整个收费流程的模拟6二.功能及操作介绍欢迎界面一 说明:按任意键继续,进入下一界面实现方式:欢迎画面的图形通过调用读取位图的函数,从外部文件中读取 256色的 BMP格式的图像欢迎界面二 说明:按任意键继续,进入主界面7主界面 说明:通过鼠标选择相应功能模块实现方式:通过画图函数画出主界面,随后进入 while(1)循环,鼠标在界面上8移动,通过相应的 x,y 坐标和 button键判断鼠标的操作,利用 if条件语句进入相应模块 下面对车辆通行系统、信息查询系统、短信查询系统、充值系统、使用说明和退出功能分别予以介绍。
车辆通行系统 车辆通行系统旨在对车辆的通行进行模拟动画演示,显示屏上显示车辆通行前和通行后的相关计费信息在主程序运行开始,系统会随机为 6辆车编制车牌号,设定 30-80范围内一个余额值赋予车辆,模拟现实车辆信息的随机性主界面点击车辆通行系统界面出现 6种不同的车辆,这里以大型货车为例,点击大型货车,右边黄色框中出现大型货车的相关信息,显示 1秒后进入大型货车通行的动画模拟演示9演示动画全程都会相关信息的显示,结束后程序会返回车辆选择的界面,这时屏幕会显示车辆通行后的相关信息如图,通行后账户余额减少 20元,该信息显示时间大约为 3秒,由于屏幕切换的缘故,实际看到的显示时间大约为 1秒,之后文字消失,鼠标出现,一个流程结束重新进入车辆选择也可按随机选择按钮,程序会随机选择一辆车进行流程演示 按箭头返回主界面10在此,我们为每辆车都设定了 30元的信用额度,在通行前,程序会做出相应计算,以判断通行扣费后用户的余额会不会超过其信用额度,若超过,则不予以通行,屏幕会有“余额不足”的显示,动画演示不执行大约 2秒后,显示信息消失,重新进入车辆选择流程11例:如图所示车辆余额为-10 元,而车辆的信用额度是 30元,若大型货车通行,应缴费用为 30元,扣费后余额为-40 元,超出其信用额度,则不予以通行。
此时短信查询系统也会有相应“余额不足”的提示短信,将在下面介绍按箭头返回主界面信息查询系统信息查询系统的功能是对这六辆车进行相关详细信息的查询在主界面点击信息查询系统12程序进入车辆选择界面,在车辆选择区域会出现黄色选择框,点击其中一个车辆13系统会显示所选车辆的相关信息,包括车牌号 、车辆类型、余额、每次通过 ETC所需缴纳费用、总共通过 ETC收费系统次数,总共缴纳费用和具体通过时间等,由于屏幕有限,若通行记录多余 5条,则会选择最近 5次的通行信息予以显示按返回键返回车辆选择界面,再次按右上角箭头返回主界面短信查询系统短信查询系统的功能是为 ETC用户提供短信提示功能,暨 ETC用户使用ETC收费系统后,会发出相关短信告知用户在主界面点击短信查询系统14短信查询界面为一卷轴式界面,上排有 6个信封分别代表 6辆车的收件箱,鼠标放在上面会有放大效果,下方有文字提示该信封代表哪个车辆若在车辆通行系统没有选择此车辆通行,则短信提示如图所示:15若该车辆有通行记录,则短信内容如图所示:若该车辆有通行记录,但余额小于等于 0元,则短信内容如图所示:16单击卷轴右上方白色圆圈退出,返回主界面。
充值系统充值系统的功能是对车辆进行续费,依据卡号卡密进入充值界面在主界面点击进入充值界面充值界面如下方浅蓝色界面所示6位卡号和 6位卡密为全数字,从键盘输入在这里,我们设定了一个无序数字映射关系,只要卡号和卡密相应位置数字符合映射,就可进入充值界面这种思想来源于之前很多软件的激活码只要符合一定的算法就可激活的这种激活形式具体映射关系如下:171------------------0; 2------------------7; 3------------------6;4------------------5; 5------------------2; 6------------------8;7------------------9; 8------------------4; 9------------------3;0------------------1; 例如:输入的 6位卡号是 123456,则对应卡密 076528,匹配正确方可进入,如果连续输错三次,自动返回主界面。
卡号输入 6位后按 Enter键或 Tab键后切换到卡密输入,黄色箭头指向卡密输入框位置,卡密输入 6位后按 Enter键暨为确认,按 Tab键重新切换到卡号输入框卡号与卡密框的相互切换必须满足输入 6位数字,如不够 6位则不会切换,按 Enter或 Tab键无效18输入的卡密数字会有约 0.5秒的显示,随后变为“*”号,在输入的任意过程中,都可按 Esc键退出,返回主界面下图为卡密输入错误的提示信息19输入成功后会进入车辆选择界面,如上图所示点击一个车辆,进入相应车辆的充值界面点击下方不同的充值金额,白色框中会有相应显示,多次点击,金额累加若输入有误,可点击取消按钮,充值框中金额清零如下图所示20若点击确认,则对车辆进行相应金额的充值上方余额发生变化,充值框中重新清零点击返回键返回车辆选择界面,再次点击右上方箭头返回主界面系统使用说明系统使用说明是对本软件功能的大体描述和操作说明在主界面点击系统使用说明进入相应界按右下角返回按钮返回主界面2122退出程序点击退出按钮退出主程序,返回 BC界面23三.系统设计分析一.程序流程图+24程序开始欢迎画面一欢迎界面二主菜单帮 助退出程序车辆通行系统自主选择调用动画处理数据随机选择检索信息随机调用帮助信息信息查询短信查询余额充值退 出选择车辆选择车辆卡密登陆加载信息显示短信选择车辆进行充值25二. 程序模块分析在程序模块的分析中,为了方便理清函数之间的调用关系,我们采用了分模块调用的定义方式。
在某些模块中被多次调用的小功能函数定义为该模块的子模块工具函数故 main函数被定义为主函数 a 主函数模块:void main(){int x,y,buttons; 初始化鼠标控件readbmp("C:\\BORL。