《高速公路收费系统(共25页).doc》由会员分享,可在线阅读,更多相关《高速公路收费系统(共25页).doc(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上攀枝花学院学生课程设计(论文)题 目: 高速公路计费系统设计 学生姓名: XXX 学 号: 所在院(系): 数学与计算机学院 专 业: 软件工程 班 级: 指导教师: 职称: 2013年1月 4日 攀枝花教务处制攀枝花学院本科学生课程设计任务书题目高速公路计费系统设计1、课程设计的目的培养学生用学到的书本知识解决实际问题的能力;培养实际工作所需要的动手能力;培养学生以科学理论和工程上能力的技术,规范地开发大型、复杂、高质量的应用软件和系统软件具有关键性作用;通过课程设计的实践,学生可以在程序设计方法、上机操作等基本技能和科学作风方面受到比较系统和严格的训练。2、课程设
2、计的内容和要求(包括原始数据、技术要求、工作要求等)任务:在某高速公路出口收费处,对三种类型的车辆计费,大型车每公里0。5元,中型车每公里0。4元,小型车每公里0。3元,来车验条,乘公里数即得该收的款项。在交班时要统计出总数。分步实施: 1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数; 2、完成最低要求:建立一个只有三个入口的计费系统,并能进行统计计算,打印出报表; 3、进一步要求:完成任意多个入口的通用系统。撰写课程设计报告或课程设计总结课程设计报告要求:总结报告包括需求分析、总体设计、详细设计、编码(详细写出编程步骤)、测试的步骤和内容、课程设计总结、参考资料等,不符合以
3、上要求者,则本次设计以不及格记。3、主要参考文献1谭浩强,C程序设计,清华大学出版社2刘振安,孙忱,刘燕君,C程序设计课程设计,机械工业出版社3汪诗林,数据结构算法与应用,机械工业出版社4、课程设计工作进度计划课程设计时间为一周,分四个阶段完成:1. 分析设计阶段。引导学生自主学习和钻研问题,明确设计要求,找出实现方法,按照需求分析、总体设计、详细设计这几个步骤进行。这一阶段前第1天完成。2. 编码调试阶段:根据设计分析方案编写C语言代码,然后调试该代码,实现课题要求的功能。这一阶段在第2-3天完成。3. 总结报告阶段:总结设计工作,写出课程设计说明书,要求学生写出需求分析、总体设计、详细设计
4、、编码、测试的步骤和内容。这一阶段在第4-5天完成。4. 考核阶段。这一阶段在第5天完成。指导教师(签字)日期年 月 日教研室意见:年 月 日学生(签字): 接受任务时间: 年 月 日注:任务书由指导教师填写课程设计(论文)指导教师成绩评定表题目名称高速公路计费系统设计评分项目分值得分评价内涵工作表现20%01学习态度6遵守各项纪律,工作刻苦努力,具有良好的科学工作态度。02科学实践、调研7通过实验、试验、查阅文献、深入生产实践等渠道获取与课程设计有关的材料。03课题工作量7按期圆满完成规定的任务,工作量饱满。能力水平35%04综合运用知识的能力10能运用所学知识和技能去发现与解决实际问题,能
5、正确处理实验数据,能对课题进行理论分析,得出有价值的结论。05应用文献的能力5能独立查阅相关文献和从事其他调研;能提出并较好地论述课题的实施方案;有收集、加工各种信息及获取新知识的能力。06设计(实验)能力,方案的设计能力5能正确设计实验方案,独立进行装置安装、调试、操作等实验工作,数据正确、可靠;研究思路清晰、完整。07计算及计算机应用能力5具有较强的数据运算与处理能力;能运用计算机进行资料搜集、加工、处理和辅助设计等。08对计算或实验结果的分析能力(综合分析能力、技术经济分析能力)10具有较强的数据收集、分析、处理、综合的能力。成果质量45%09插图(或图纸)质量、篇幅、设计(论文)规范化
6、程度5符合本专业相关规范或规定要求;规范化符合本文件第五条要求。10设计说明书(论文)质量30综述简练完整,有见解;立论正确,论述充分,结论严谨合理;实验正确,分析处理科学。11创新10对前人工作有改进或突破,或有独特见解。成绩指导教师评语指导教师签名: 年月日专心-专注-专业 摘要中国已经有4万多公里的高速公路,在未来还将翻倍。修建高速公路被各地官员拉入地方经济工作日常首要位置,与1950年后的美国相似,越来越密集的高速网正在促使着中国发生巨大的变化。高速公路收费系统是高速公路管理的重要组成部分。建立智能化的收费系统是加强高速公路管理的一个重要环节。高速公路收费系统解决了高速公路收费业务中由
7、于采取传统方法和手段出现的难以处理的问题,并把管理对象转向信息对象的信息管理系统,把高速公路收费系统推向另一个高度。利用计算机进行高速公路计费系统设计,是利用C语言对数据的输入、保存、收取费用、统计等功能。通过输入的车牌号,计算出所需要的费用,并统计过往车辆的数目。关键词:高速公路、智能交通、收费系统 目录1需求分析1.1需求概述随着我国经济的迅猛发展,高速公路交通作为经济发展的主要基础设施之一,越来越受到重视。高速公路收费系统的需求分析主要以新的收费模式下高速公路的实际情况和运营管理方面的要求为基础。车道收费软件按功能分为进入和离开两种类型:进入车道收费系统通过所配车道设备及收费员对进入高速
8、公路的车辆进行识别车牌、车型、车情输入。将车道信息、车型、车牌号、日期时间等其他信息写入数据库表中,形成记录。然后抬起电动栏杆机,让车辆驶出车道,完成进入的操作。 离开车道收费系统通过所配车道设备及收费员对驶出高速公路的车辆进行识别车牌。对读出的信息进行自动及人工核对,计算出通行费,并用费额显示器显示收费金额,并用语音设备发出礼貌用语收取通行费。将出口的站点、车道标识信息、收费标识信息、车型、车种、车牌号、日期时间等其他信息在车道数据库表中写成记录,并保存;再打开电动栏杆机,车辆驶出车道,让车辆离开收费站。1.2需求环境本课程设计需要的设备为硬件要求和软件配置要求具体要求如下:硬件要求:一台计
9、算机。软件配置:WINDOWS、C/VC+6.0。1.3 功能描述 本课程设计是利用图形学的相关知识在TC或Visual C+环境下利用结构体、switch语句等来实现高速公路收费的全过程,其基本的功能描述如下:I. 建立主菜单。II. 输入车辆信息,包括:车牌号、车辆类型、收费入口、进入时间,并进行包存。III. 收取通行费(输入车牌号,显示该车的类型、进入时间、进入口、该支付的费用。)IV. 统计在工作人员上班期间所有通过的车辆的总数。 2概要设计2.1 程序功能模块 由需求分析知,本次课程设计是用于高速公路收费,故其功能模块分为:l 进入系统主菜单l 信息的输入l 信息的输出 三个模块。
10、2.2 程序流程图开始程序的初始化调用menu()函数90主菜单调用input()函数90调用all()函数90调用show()函数90输入车辆信息是否继续添加再次调用input()函数90输入车辆车牌号显示车辆信息及收费情况显示统计的车辆数结束NY图2.1程序流程图2.3数据结构的设计 根据需求分析将高速公路收费系统的数据结构的设计如下:01. 用一个结构体数组struct vehicle char num8; int variety/用4.5.6分别代表大.中.小车型/;int entime;/进入时间/int enter;/入口/ veN;来定义过往的车辆及车的车牌号、类型、进入时间、进
11、入口。02. 用函数void menu();来表示主菜单。03. 用函数void input();表示信息的输入。04. 用函数void show();表示信息的输出及收取的费用。05. 用函数void all();来表示统计的结果。 3详细设计3.1 程序的初始化3.1.1代码功能 建立主要的程序。3.2.2 功能实现代码struct vehicle/车辆的信息,包括:车牌号、种类、进入时间、入口/char num8;int variety;/用4.5.6分别代表大.中.小车型/int entime;int enter;veN;int count=0;/定义全局变量,以便于统计/ void
12、menu();/主菜单函数/void input();/输入函数/void show();/输出函数/void all();/统计函数/void main() while(1) menu(); 3.2 建立主菜单3.2.1代码功能 在初始化程序中,主要实现的是主菜单的形成以及进入主菜单后做出相应的选择。3.2.2 功能实现代码void menu()/建立主菜单/char n;printf(nnnnn);/先将主菜单位于屏幕中央/printf( 欢迎使用高速公路收费系统n);printf( 主菜单n); printf( 1.输入车辆信息 n);printf( 2.显示车辆信息 n);printf
13、( 3.显示车辆总数 n); printf( 请输入数字选择操作类型:n);n=getch();switch(n) case 1: input();break;/如果输入的数字为1,则表示应该输入车辆的一系列的信息/ case 2: show();break; /如果输入的数字为2,则表示应该输出车辆信息以及应该收取的费用/ case 3: all();break; /如果输入的数字为3,则表示应该输出该工作期间统计的总的车辆通过数/ default: break;3.3 信息的输入3.2.1代码功能 信息的输入的功能就是将车辆的车牌号、类型、进入时间、进入口的信息输入电脑。3.3.2 功能实
14、现代码void input()/进行车辆信息的输入/ printf(请输入车辆信息n); printf(车牌号:n); scanf(%s,&vecount.num); printf(车辆类型(4,5,6分别代表大,中,小):n); scanf(%d,&vecount.variety); printf(进入时间:n); scanf(%d,&vecount.entime); printf(入口(1,2,3代表三个入口):n); scanf(%d,&vecount.enter); count+;/每一次车辆进入count加1,统计总的车辆数/ printf(是否继续添加(Y/N)n); if(get
15、ch()=y|getch()=Y) /判断是否继续添加,如果输入的是y或者是Y,则继续输入。如果输入的是其他符号。则停止输入并返回主菜单/ input();3.4 信息的输出3.4.1代码功能输出车辆信息及应该收取的费用。3.4.2 功能实现代码void show()/求某一辆车的信息及收费/ char num8; int i; double a,b,c,l1=200,l2=300,l3=400;/ 定义三个入口到出口的路程分别是l1 l2 l3(200 300 400)公里/printf(请输入车牌号:n);/输入车牌号,以便于对该车的信息进行核对,并进行后面的操作/scanf(%s,num
16、);for(i=0;icount;i+)if(strcmp(vei.num,num)=0)/如果有车辆的车牌号于输入的车牌号相同则输出该车的信息,以及进行计算/ printf(车辆信息:n); printf(车辆类型:%dn,vei.variety); printf(入口站:%dn,vei.enter); printf(进入时间:%dn,vei.entime); printf(车牌号:%sn,vei.num); for(i=0;icount;i+)/进行for循环,用来求出对应车牌号的车辆应该收取的费用/ if(vei.variety=4 & vei.enter=1)/如果该车属于大型车,且由
17、1号入口进入/ a=0.5*l1; printf(此车应缴费%f元,a); else if(vei.variety=4 & vei.enter=2) /如果该车属于大型车,且由2号入口进入/ a=0.4*l2; printf(此车应缴费%f元,a); else if(vei.variety=4 & vei.enter=3)/ 如果该车属于大型车,且由3号入口进入/ a=0.3*l3; printf(此车应缴费%f元,a);else if(vei.variety=5& vei.enter=1)/ 如果该车属于中型车,且由1号入口进入/ b=0.5*l1; printf(此车应缴费%f元,b);
18、else if(vei.variety=5 & vei.enter=2) /如果该车属于中型车,且由2号入口进入/ b=0.4*l2; printf(此车应缴费%f元,b); else if(vei.variety=5 & vei.enter=3) /如果该车属于中型车,且由3号入口进入/ b=0.3*l3; printf(此车应缴费%f元,b); else if(vei.variety=6 & vei.enter=1) /如果该车属于小型车,且由1号入口进入/ c=0.3*l1; printf(此车应缴费%f元,c); else if(vei.variety=6 & vei.enter=2)
19、/ 如果该车属于大型车,且由2号入口进入/ c=0.3*l2; printf(此车应缴费%f元,c); else if(vei.variety=6 & vei.enter=3)/ 如果该车属于大型车,且由3号入口进入/ c=0.3*l3; printf(此车应缴费%f元,c); return;3.5 统计结果3.5.1代码功能输出在工作期间一共有多少辆车通过了这一个收费3.5.2 功能实现代码 void all() printf(车辆总数为:%d,count); return;4 测试与运行由需求分析可知,高速公路收费系统设计是在TC环境下进行的。本程序已调试成功并实现了其功能,其运行结果如下
20、:1.主菜单界面 图4.1主菜单界面图2输入界面图4.2输入界面图1 2.1如果不继续添加 图4.3输入界面图22.2 如果继续添加 图4.4输入界面图33输出界面图 4.5输出界面图4.统计界面图4.6统计界面图结束语在这次课程设计中,我基本上完成了任务,值得总结的有以下及几点:1.在开发实现之前,对需求要理解清楚,对收费流程要了解透彻,明晰所要达到的性能指标;2.采用有效的模式提高开发的效率,增强系统的灵活性;3.适当简化一些复杂的流程,采取分而治之的策略;4.在碰到问题难以解决时,要多向老师和同学提问,多和老师同学交流;遇到的不足:1.系统收费模型比较粗糙,有待进一步完善;2.由于水平有
21、限,软件设计部分不够完善,有待于进一步研究;虽然我的设计是一个人一组的,但我深刻地认识到只有大家一起努力地学习并研究相关的知识,才能提高做事的效率,也才能更好更快地完成任务。所以这将在我以后的学习和生活中有很在的引导作用。在以后的学习中,我也将加倍地学习图形学的有关知识,以同样的方法学习其他的知识,不断地丰富自己,充实自己,提高自己的能力。 参考文献1谭浩强.C程序设计.清华大学出版社.2010.62杨浩.c语言入门经典.清华大学出版社.2007.53刘振安. 单继龙.C程序设计课程设计.机械工业出版社.2010.14汪诗林,数据结构算法与应用.机械工业出版社.2000.15杨兆升,智能运输系
22、统概论.人民交通出版社2003.1 附页源代码:include#define N 10struct vehiclechar num8;int variety;/用4.5.6分别代表大.中.小车型/int entime;int enter;veN;int count=0; void menu();void input();void show();void all();void main() while(1) menu(); system(pause); void menu()char n;printf(nnnnnnnnnnnn);printf( 欢迎使用高速公路收费系统n);printf( 主菜
23、单n); printf( 1.输入车辆信息 n);printf( 2.显示车辆信息 n);printf( 3.显示车辆总数 n); printf( 请输入数字选择操作类型:n);n=getch();switch(n) case 1: input();break; case 2: show();break; case 3: all();break; default: break;void input() printf(请输入车辆信息n); printf(车牌号:n); scanf(%s,&vecount.num); printf(车辆类型(4,5,6分别代表大,中,小):n); scanf(%d
24、,&vecount.variety); printf(进入时间:n); scanf(%d,&vecount.entime); printf(入口(1,2,3代表三个入口):n); scanf(%d,&vecount.enter); count+; printf(是否继续添加(Y/N)n); if(getch()=y|getch()=Y) input();void show() char num8; int i; double a,b,c,l1=200,l2=300,l3=400;/ 定义三个入口到出口的路程分别是l1 l2 l3(200 300 400)公里printf(请输入车牌号:n);s
25、canf(%s,num);for(i=0;icount;i+)if(strcmp(vei.num,num)=0) printf(车辆信息:); printf(车辆类型:%dn,vei.variety); printf(入口站:%dn,vei.enter); printf(进入时间:%dn,vei.entime); printf(车牌号:%sn,vei.num); for(i=0;icount;i+) if(vei.variety=4 & vei.enter=1) a=0.5*l1; printf(此车应缴费%f元,a); else if(vei.variety=4 & vei.enter=2)
26、 a=0.4*l2; printf(此车应缴费%f元,a); else if(vei.variety=4 & vei.enter=3) a=0.3*l3; printf(此车应缴费%f元,a);else if(vei.variety=5& vei.enter=1) b=0.5*l1; printf(此车应缴费%f元,b); else if(vei.variety=5 & vei.enter=2) b=0.4*l2; printf(此车应缴费%f元,b); else if(vei.variety=5 & vei.enter=3) b=0.3*l3; printf(此车应缴费%f元,b); else if(vei.variety=6 & vei.enter=1) c=0.3*l1; printf(此车应缴费%f元,c); else if(vei.variety=6 & vei.enter=2) c=0.3*l2; printf(此车应缴费%f元,c); else if(vei.variety=6 & vei.enter=3) c=0.3*l3; printf(此车应缴费%f元,c); return;void all() printf(nnnn); printf(车辆总数为:%d,count); return;