攀枝花学院
学生课程设计(论文)
题 目: 高速公路计费系统设计 学生姓名: 号:所在院(系) : 数学与计算机学院 专 业: 软件工程 班 级: 指导教师: 职称:
2013年1月 4日 攀枝花教务处制
攀枝花学院本科学生课程设计任务书
注:任务书由指导教师填写
课程设计(论文)指导教师成绩评定表
摘要
中国已经有4万多公里的高速公路,在未来还将翻倍。修建高速公路被各地官员拉入地方经济工作日常首要位置,与1950年后的美国相似,越来越密集的高速网正在促使着中国发生巨大的变化。
高速公路收费系统是高速公路管理的重要组成部分。建立智能化的收费系统是加强高速公路管理的一个重要环节。高速公路收费系统解决了高速公路收费业务中由于采取传统方法和手段出现的难以处理的问题,并把管理对象转向信息对象的信息管理系统,把高速公路收费系统推向另一个高度。
利用计算机进行高速公路计费系统设计,是利用C 语言对数据的输入、保存、收取费用、统计等功能。通过输入的车牌号,计算出所需要的费用,并统计过往车辆的数目。
关键词:高速公路、智能交通、收费系统
目录
摘要 .................................................................................................................................................. I 1需求分析........................................................................................................................................ 3
1.1需求概述 . ............................................................................................................................ 3 随着我国经济的迅猛发展,高速公路交通作为经济发展的主要基础设施之一,越来越受到重视。 . .................................................................................................................................. 3 高速公路收费系统的需求分析主要以新的收费模式下高速公路的实际情况和运营管理方面的要求为基础。 . .............................................................................................................. 3 1.2需求环境 . ............................................................................................................................ 3 1.3 功能描述 . ........................................................................................................................... 3 2概要设计........................................................................................................................................ 5
2.1 程序功能模块 . ................................................................................................................... 5 2.2 程序流程图 . ....................................................................................................................... 6 2.3数据结构的设计 . ................................................................................................................ 6 3详细设计........................................................................................................................................ 8
3.1 程序的初始化 . ................................................................................................................... 8
3.1.1代码功能 . ................................................................................................................. 8 建立主要的程序。 . .......................................................................................................... 8 3.2.2 功能实现代码 . ........................................................................................................ 8 3.2 建立主菜单 . ....................................................................................................................... 9
3.2.1代码功能 . ................................................................................................................. 9 3.2.2 功能实现代码 . ........................................................................................................ 9 3.3 信息的输入 . ....................................................................................................................... 9
3.2.1代码功能 . ................................................................................................................. 9 3.3.2 功能实现代码 . ...................................................................................................... 10 3.4 信息的输出 . ..................................................................................................................... 10
3.4.1代码功能 . ............................................................................................................... 10 3.4.2 功能实现代码 . ...................................................................................................... 10 3.5 统计结果 . ......................................................................................................................... 12
3.5.1代码功能 . ............................................................................................................... 12 3.5.2 功能实现代码 . ...................................................................................................... 13
4 测试与运行 . ................................................................................................................................ 14 结束语 ............................................................................................................................................ 17 参考文献......................................................................................................................................... 18 附页 ................................................................................................................................................ 19
1需求分析
1.1需求概述
随着我国经济的迅猛发展,高速公路交通作为经济发展的主要基础设施之一,越来越受到重视。
高速公路收费系统的需求分析主要以新的收费模式下高速公路的实际情况和运营管理方面的要求为基础。
车道收费软件按功能分为进入和离开两种类型:
进入车道收费系统通过所配车道设备及收费员对进入高速公路的车辆进行识别车牌、车型、车情输入。将车道信息、车型、车牌号、日期时间等其他信息写入数据库表中,形成记录。然后抬起电动栏杆机,让车辆驶出车道,完成进入的操作。
离开车道收费系统通过所配车道设备及收费员对驶出高速公路的车辆进行识别车牌。对读出的信息进行自动及人工核对,计算出通行费,并用费额显示器显示收费金额,并用语音设备发出礼貌用语收取通行费。将出口的站点、车道标识信息、收费标识信息、车型、车种、车牌号、日期时间等其他信息在车道数据库表中写成记录,并保存; 再打开电动栏杆机,车辆驶出车道,让车辆离开收费站。
1.2需求环境
本课程设计需要的设备为硬件要求和软件配置要求具体要求如下: ①硬件要求:一台计算机。
②软件配置:WINDOWS 、C/VC++6.0。
1.3 功能描述
本课程设计是利用图形学的相关知识在TC 或Visual C++环境下利用结构体、switch 语句等来实现高速公路收费的全过程,其基本的功能描述如下:
I. 建立主菜单。
II. 输入车辆信息,包括:车牌号、车辆类型、收费入口、进入时间,并进
行包存。
III. 收取通行费(输入车牌号,显示该车的类型、进入时间、进入口、
该支付的费用。)
IV. 统计在工作人员上班期间所有通过的车辆的总数。
2概要设计
2.1 程序功能模块
由需求分析知,本次课程设计是用于高速公路收费,故其功能模块分为:
●●● 三个模块。进入系统主菜单 信息的输入 信息的输出
2.2 程序流程图
图2.1程序流程图
2.3数据结构的设计
根据需求分析将高速公路收费系统的数据结构的设计如下:
01. 用一个结构体数组
struct vehicle{ char num[8];
int variety//用4.5.6分别代表大. 中. 小车型//; int entime;//进入时间//
int enter;//入口//
} ve[N];来定义过往的车辆及车的车牌号、类型、进入时间、进入口。
02. 用函数void menu();来表示主菜单。
03. 用函数void input();表示信息的输入。
04. 用函数void show();表示信息的输出及收取的费用。
05. 用函数void all();来表示统计的结果。
3详细设计
3.1 程序的初始化
3.1.1代码功能
建立主要的程序。
3.2.2 功能实现代码
struct vehicle//车辆的信息,包括:车牌号、种类、进入时间、入口//
{
char num[8];
int variety;//用4.5.6分别代表大. 中. 小车型//
int entime;
int enter;
}ve[N];
int count=0;//定义全局变量,以便于统计//
void 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("\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 功能实现代码
void input()//进行车辆信息的输入//
{
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 功能实现代码
void show()//求某一辆车的信息及收费//
{
char num[8];
int i;
double a,b,c,l1=200,l2=300,l3=400;// 定义三个入口到出口的路程分别是l1 l2 l3(200 300 400)公里//
printf("请输入车牌号:\n");//输入车牌号,以便于对该车的信息进行核对,并进行后面的操作//
scanf("%s",num);
for(i=0;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);
}
else if(ve[i].variety==4 && ve[i].enter==2) //如果该车属于大型车,且由2号入口进入//
{
a=0.4*l2;
printf("此车应缴费%f元",a);
}
else if(ve[i].variety==4 && ve[i].enter==3)// 如果该车属于大型车,且由3号入口进入//
{
a=0.3*l3;
printf("此车应缴费%f元",a);
}
else if(ve[i].variety==5&& ve[i].enter==1)// 如果该车属于中型车,且由1号入口进入//
{
b=0.5*l1;
printf("此车应缴费%f元",b);
}
else if(ve[i].variety==5 && ve[i].enter==2) //如果该车属于中型车,
且由2号入口进入//
{
b=0.4*l2;
printf("此车应缴费%f元",b);
}
else if(ve[i].variety==5 && ve[i].enter==3) //如果该车属于中型车,且由3号入口进入//
{
b=0.3*l3;
printf("此车应缴费%f元",b);
}
else if(ve[i].variety==6 && ve[i].enter==1) //如果该车属于小型车,且由1号入口进入//
{
c=0.3*l1;
printf("此车应缴费%f元",c);
}
else if(ve[i].variety==6 && ve[i].enter==2)// 如果该车属于大型车,且由2号入口进入//
{
c=0.3*l2;
printf("此车应缴费%f元",c);
}
else if(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 功能实现代码
void all()
{
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
附页
源代码:
include
#define N 10
struct vehicle
{
char num[8];
int variety;//用4.5.6分别代表大. 中. 小车型//
int entime;
int enter;
}ve[N];
int count=0;
void menu();
void input();
void show();
void all();
void main()
{
while(1)
{
menu();
}
system("pause");
}
void menu()
{
char n;
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;
}
}
void input()
{
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();
}
void show()
{
char num[8];
int i;
double a,b,c,l1=200,l2=300,l3=400;// 定义三个入口到出口的路程分别是l1 l2 l3(200 300 400)公里
printf("请输入车牌号:\n");
scanf("%s",num);
for(i=0;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); }
else if(ve[i].variety==4 && ve[i].enter==2) {
a=0.4*l2;
printf("此车应缴费%f元",a); }
else if(ve[i].variety==4 && ve[i].enter==3) {
a=0.3*l3;
printf("此车应缴费%f元",a); }
else if(ve[i].variety==5&& ve[i].enter==1) {
b=0.5*l1;
printf("此车应缴费%f元",b); }
else if(ve[i].variety==5 && ve[i].enter==2) {
b=0.4*l2;
printf("此车应缴费%f元",b); }
else if(ve[i].variety==5 && ve[i].enter==3) {
b=0.3*l3;
printf("此车应缴费%f元",b); }
else if(ve[i].variety==6 && ve[i].enter==1) {
c=0.3*l1;
printf("此车应缴费%f元",c); }
else if(ve[i].variety==6 && ve[i].enter==2) {
c=0.3*l2;
printf("此车应缴费%f元",c); }
else if(ve[i].variety==6 && ve[i].enter==3) {
c=0.3*l3;
printf("此车应缴费%f元",c); }
return;
}
void all()
{
printf("\n\n\n\n");
printf("车辆总数为:%d",count);
return;
}
攀枝花学院
学生课程设计(论文)
题 目: 高速公路计费系统设计 学生姓名: 号:所在院(系) : 数学与计算机学院 专 业: 软件工程 班 级: 指导教师: 职称:
2013年1月 4日 攀枝花教务处制
攀枝花学院本科学生课程设计任务书
注:任务书由指导教师填写
课程设计(论文)指导教师成绩评定表
摘要
中国已经有4万多公里的高速公路,在未来还将翻倍。修建高速公路被各地官员拉入地方经济工作日常首要位置,与1950年后的美国相似,越来越密集的高速网正在促使着中国发生巨大的变化。
高速公路收费系统是高速公路管理的重要组成部分。建立智能化的收费系统是加强高速公路管理的一个重要环节。高速公路收费系统解决了高速公路收费业务中由于采取传统方法和手段出现的难以处理的问题,并把管理对象转向信息对象的信息管理系统,把高速公路收费系统推向另一个高度。
利用计算机进行高速公路计费系统设计,是利用C 语言对数据的输入、保存、收取费用、统计等功能。通过输入的车牌号,计算出所需要的费用,并统计过往车辆的数目。
关键词:高速公路、智能交通、收费系统
目录
摘要 .................................................................................................................................................. I 1需求分析........................................................................................................................................ 3
1.1需求概述 . ............................................................................................................................ 3 随着我国经济的迅猛发展,高速公路交通作为经济发展的主要基础设施之一,越来越受到重视。 . .................................................................................................................................. 3 高速公路收费系统的需求分析主要以新的收费模式下高速公路的实际情况和运营管理方面的要求为基础。 . .............................................................................................................. 3 1.2需求环境 . ............................................................................................................................ 3 1.3 功能描述 . ........................................................................................................................... 3 2概要设计........................................................................................................................................ 5
2.1 程序功能模块 . ................................................................................................................... 5 2.2 程序流程图 . ....................................................................................................................... 6 2.3数据结构的设计 . ................................................................................................................ 6 3详细设计........................................................................................................................................ 8
3.1 程序的初始化 . ................................................................................................................... 8
3.1.1代码功能 . ................................................................................................................. 8 建立主要的程序。 . .......................................................................................................... 8 3.2.2 功能实现代码 . ........................................................................................................ 8 3.2 建立主菜单 . ....................................................................................................................... 9
3.2.1代码功能 . ................................................................................................................. 9 3.2.2 功能实现代码 . ........................................................................................................ 9 3.3 信息的输入 . ....................................................................................................................... 9
3.2.1代码功能 . ................................................................................................................. 9 3.3.2 功能实现代码 . ...................................................................................................... 10 3.4 信息的输出 . ..................................................................................................................... 10
3.4.1代码功能 . ............................................................................................................... 10 3.4.2 功能实现代码 . ...................................................................................................... 10 3.5 统计结果 . ......................................................................................................................... 12
3.5.1代码功能 . ............................................................................................................... 12 3.5.2 功能实现代码 . ...................................................................................................... 13
4 测试与运行 . ................................................................................................................................ 14 结束语 ............................................................................................................................................ 17 参考文献......................................................................................................................................... 18 附页 ................................................................................................................................................ 19
1需求分析
1.1需求概述
随着我国经济的迅猛发展,高速公路交通作为经济发展的主要基础设施之一,越来越受到重视。
高速公路收费系统的需求分析主要以新的收费模式下高速公路的实际情况和运营管理方面的要求为基础。
车道收费软件按功能分为进入和离开两种类型:
进入车道收费系统通过所配车道设备及收费员对进入高速公路的车辆进行识别车牌、车型、车情输入。将车道信息、车型、车牌号、日期时间等其他信息写入数据库表中,形成记录。然后抬起电动栏杆机,让车辆驶出车道,完成进入的操作。
离开车道收费系统通过所配车道设备及收费员对驶出高速公路的车辆进行识别车牌。对读出的信息进行自动及人工核对,计算出通行费,并用费额显示器显示收费金额,并用语音设备发出礼貌用语收取通行费。将出口的站点、车道标识信息、收费标识信息、车型、车种、车牌号、日期时间等其他信息在车道数据库表中写成记录,并保存; 再打开电动栏杆机,车辆驶出车道,让车辆离开收费站。
1.2需求环境
本课程设计需要的设备为硬件要求和软件配置要求具体要求如下: ①硬件要求:一台计算机。
②软件配置:WINDOWS 、C/VC++6.0。
1.3 功能描述
本课程设计是利用图形学的相关知识在TC 或Visual C++环境下利用结构体、switch 语句等来实现高速公路收费的全过程,其基本的功能描述如下:
I. 建立主菜单。
II. 输入车辆信息,包括:车牌号、车辆类型、收费入口、进入时间,并进
行包存。
III. 收取通行费(输入车牌号,显示该车的类型、进入时间、进入口、
该支付的费用。)
IV. 统计在工作人员上班期间所有通过的车辆的总数。
2概要设计
2.1 程序功能模块
由需求分析知,本次课程设计是用于高速公路收费,故其功能模块分为:
●●● 三个模块。进入系统主菜单 信息的输入 信息的输出
2.2 程序流程图
图2.1程序流程图
2.3数据结构的设计
根据需求分析将高速公路收费系统的数据结构的设计如下:
01. 用一个结构体数组
struct vehicle{ char num[8];
int variety//用4.5.6分别代表大. 中. 小车型//; int entime;//进入时间//
int enter;//入口//
} ve[N];来定义过往的车辆及车的车牌号、类型、进入时间、进入口。
02. 用函数void menu();来表示主菜单。
03. 用函数void input();表示信息的输入。
04. 用函数void show();表示信息的输出及收取的费用。
05. 用函数void all();来表示统计的结果。
3详细设计
3.1 程序的初始化
3.1.1代码功能
建立主要的程序。
3.2.2 功能实现代码
struct vehicle//车辆的信息,包括:车牌号、种类、进入时间、入口//
{
char num[8];
int variety;//用4.5.6分别代表大. 中. 小车型//
int entime;
int enter;
}ve[N];
int count=0;//定义全局变量,以便于统计//
void 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("\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 功能实现代码
void input()//进行车辆信息的输入//
{
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 功能实现代码
void show()//求某一辆车的信息及收费//
{
char num[8];
int i;
double a,b,c,l1=200,l2=300,l3=400;// 定义三个入口到出口的路程分别是l1 l2 l3(200 300 400)公里//
printf("请输入车牌号:\n");//输入车牌号,以便于对该车的信息进行核对,并进行后面的操作//
scanf("%s",num);
for(i=0;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);
}
else if(ve[i].variety==4 && ve[i].enter==2) //如果该车属于大型车,且由2号入口进入//
{
a=0.4*l2;
printf("此车应缴费%f元",a);
}
else if(ve[i].variety==4 && ve[i].enter==3)// 如果该车属于大型车,且由3号入口进入//
{
a=0.3*l3;
printf("此车应缴费%f元",a);
}
else if(ve[i].variety==5&& ve[i].enter==1)// 如果该车属于中型车,且由1号入口进入//
{
b=0.5*l1;
printf("此车应缴费%f元",b);
}
else if(ve[i].variety==5 && ve[i].enter==2) //如果该车属于中型车,
且由2号入口进入//
{
b=0.4*l2;
printf("此车应缴费%f元",b);
}
else if(ve[i].variety==5 && ve[i].enter==3) //如果该车属于中型车,且由3号入口进入//
{
b=0.3*l3;
printf("此车应缴费%f元",b);
}
else if(ve[i].variety==6 && ve[i].enter==1) //如果该车属于小型车,且由1号入口进入//
{
c=0.3*l1;
printf("此车应缴费%f元",c);
}
else if(ve[i].variety==6 && ve[i].enter==2)// 如果该车属于大型车,且由2号入口进入//
{
c=0.3*l2;
printf("此车应缴费%f元",c);
}
else if(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 功能实现代码
void all()
{
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
附页
源代码:
include
#define N 10
struct vehicle
{
char num[8];
int variety;//用4.5.6分别代表大. 中. 小车型//
int entime;
int enter;
}ve[N];
int count=0;
void menu();
void input();
void show();
void all();
void main()
{
while(1)
{
menu();
}
system("pause");
}
void menu()
{
char n;
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;
}
}
void input()
{
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();
}
void show()
{
char num[8];
int i;
double a,b,c,l1=200,l2=300,l3=400;// 定义三个入口到出口的路程分别是l1 l2 l3(200 300 400)公里
printf("请输入车牌号:\n");
scanf("%s",num);
for(i=0;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); }
else if(ve[i].variety==4 && ve[i].enter==2) {
a=0.4*l2;
printf("此车应缴费%f元",a); }
else if(ve[i].variety==4 && ve[i].enter==3) {
a=0.3*l3;
printf("此车应缴费%f元",a); }
else if(ve[i].variety==5&& ve[i].enter==1) {
b=0.5*l1;
printf("此车应缴费%f元",b); }
else if(ve[i].variety==5 && ve[i].enter==2) {
b=0.4*l2;
printf("此车应缴费%f元",b); }
else if(ve[i].variety==5 && ve[i].enter==3) {
b=0.3*l3;
printf("此车应缴费%f元",b); }
else if(ve[i].variety==6 && ve[i].enter==1) {
c=0.3*l1;
printf("此车应缴费%f元",c); }
else if(ve[i].variety==6 && ve[i].enter==2) {
c=0.3*l2;
printf("此车应缴费%f元",c); }
else if(ve[i].variety==6 && ve[i].enter==3) {
c=0.3*l3;
printf("此车应缴费%f元",c); }
return;
}
void all()
{
printf("\n\n\n\n");
printf("车辆总数为:%d",count);
return;
}