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