高速公路收费系统C语言课程设计报告.docx
- 文档编号:5388113
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:23
- 大小:278.67KB
高速公路收费系统C语言课程设计报告.docx
《高速公路收费系统C语言课程设计报告.docx》由会员分享,可在线阅读,更多相关《高速公路收费系统C语言课程设计报告.docx(23页珍藏版)》请在冰豆网上搜索。
高速公路收费系统C语言课程设计报告
C语言程序设计
课程设计报告
设计题目:
高速公路计费系统设计
学号
班级
姓名
完成方式:
(单选)
自我评分:
(单选)
○独立完成
○优秀
○参考他人工作的基础上完成
○良好
○在他人的帮助下完成
○中等
○完整拷贝他人成果
○及格
○不及格
2010年3月27日
题目:
高速公路计费系统设计
功能:
在某高速公路出口收费处,对三种类型的车辆计费,大型车每公里0。
5元,中型车每公里0。
4元,小型车每公里0。
3元,来车验条,乘公里数即得该收的款项。
在交班时要统计出总数。
分步实施:
1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;
2、完成最低要求:
建立一个只有三个入口的计费系统,并能进行统计计算,打印出报表;
3、进一步要求:
完成任意多个入口的通用系统。
要求:
1、用C语言实现程序设计;
2、利用结构体数组实现信息的数据结构设计;
3、系统的各个功能模块要求用函数的形式实现;
4、界面友好(良好的人机交互),程序加必要的注释。
课程设计实验报告要求:
1、预习报告:
题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分。
2、实验总结报告:
流程图、主要源程序代码(需打印)、测试情况及调试中问题与解决方案、小结等。
一、总体设计
1、仔细阅读系统要求,首先将此系统化分为如下模块
(1)显示模块,是人机交互的界面,可引导操作员来完成程序的运行。
比如:
系统主界面(主菜单),包含了输入车辆信息,显示车辆信息,显示车辆总数,退出程序四个可选操作,操作员可直观地完成信息处理。
(2)文件模块,可执行文件建立、文件保存、文件打开和文件写入等命令来操作处理和放置车辆信息的文件。
(3)输入模块是操作员向程序输入的模块,可输入操作内容和车辆的有关信息,比如:
输入车牌号、车辆类型、进入口、时间,程序自动计算得出车辆应缴纳的费用并保存在文件。
(4)输出模块,通过程序计算,向操作员输出车辆信息、数据等
(5)退出模块,可用一个函数exit()来实现,首先将信息保存到文件中,然后退出程序
二、详细设计
1、界面设计
此系统界面采用符号和数字化菜单设计。
主界面设计如下:
欢迎使用高速公路收费系统
主菜单
1.输入车辆信息
2.显示车辆信息
3.显示车辆总数
4.保存退出系统
请输入数字选择操作类型:
2、流程图
3、数据结构设计:
程序设计中用到的结构体类型:
车辆信息结构体类型:
structvehicle
/*车辆信息*/
{
charnum[10000];
/*车牌号*/
charvariety[4];
/*车辆类型a,b,c(大,中,小)*/
intentime;
/*进入时间*/
charenter[3];
/*进入口1,2,3……分别为各个入口*/
}
4、程序代码
#include
#include
#include
#include
#defineN10
/*定义三个入口到出口的路程分别是l1l2l3*/
structvehicle
/*车辆信息*/
{
charnum[10000];
/*车牌号*/
charvariety[4];
/*车辆类型a,b,c(大,中,小)*/
intentime;
/*进入时间*/
charenter[3];
/*进入口1,2,3……分别为各个入口*/
}
ve[N];
intcount=0;
FILE*fp;
/*函数声明*/
voidmenu();
/*主菜单*/
voidinput();
/*输入函数*/
voidshow();
voidall();
voidreadfile();
/*从文件导入*/
voidwritefile();
/*写入*/
voidmain()
{
readfile();
while
(1)
{
menu();
}
}
voidreadfile()
/*从文件导入*/
{
if((fp=fopen("vehicle.txt","r"))==NULL)
{
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\t");
printf("\t");
printf("***********************************************\n");
printf("\t");
printf("\t");
printf("**\n");
printf("\t");
printf("\t");
printf("*文件为空,请添加信息*\n");
printf("\t");
printf("\t");
printf("**\n");
printf("\t");
printf("\t");
printf("***********************************************\n");
if((fp=fopen("vehicle.txt","w"))==NULL)
/*只写*/
{
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\t");
printf("\t");
printf("***********************************************\n");
printf("\t");
printf("\t");
printf("**\n");
printf("\t");
printf("\t");
printf("*建立失败*\n");
printf("\t");
printf("\t");
printf("**\n");
printf("\t");
printf("\t");
printf("***********************************************\n");
exit(0);
/*正常退出*/
}
else
{
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\t");
printf("\t");
printf("***********************************************\n");
printf("\t");
printf("\t");
printf("**\n");
printf("\t");
printf("\t");
printf("*文件已建立*\n");
printf("\t");
printf("\t");
printf("**\n");
printf("\t");
printf("\t");
printf("*Pleasepressanykeytogettomainmenu!
*\n");
printf("\t");
printf("\t");
printf("**\n");
printf("\t");
printf("\t");
printf("***********************************************\n");
getch();
return;
}
exit(0);
}
fseek(fp,0,2);
/*文件指针fp指到到文件末尾*/
if(ftell(fp)>0)
/*文件不为空*/
{
fseek(fp,0,0);
/*文件指针指到文件开始位置*/
for(count=0;!
feof(fp)&&fread(&ve[count],sizeof(structvehicle),1,fp);
count++);
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\t");
printf("\t");
printf("***********************************************\n");
printf("\t");
printf("\t");
printf("**\n");
printf("\t");
printf("\t");
printf("*文件导入成功*\n");
printf("\t");
printf("\t");
printf("**\n");
printf("\t");
printf("\t");
printf("*Pleasepressanykeytogetbacktomainmenu!
*\n");
printf("\t");
printf("\t");
printf("**\n");
printf("\t");
printf("\t");
printf("***********************************************\n");
getch();
return;
}
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\t");
printf("\t");
printf("***********************************************\n");
printf("\t");
printf("\t");
printf("**\n");
printf("\t");
printf("\t");
printf("*已成功打开文件!
*\n");
printf("\t");
printf("\t");
printf("**\n");
printf("\t");
printf("\t");
printf("*Pleasepressanykeytogetbacktomainmenu!
*\n");
printf("\t");
printf("\t");
printf("**\n");
printf("\t");
printf("\t");
printf("***********************************************\n");
getch();
return;
}
voidmenu()
{system("cls");
/*清屏*/
charn;
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\t");
printf("\t***********************************************\n");
printf("\n");
printf("\t");
printf("\t*欢迎使用高速公路收费系统*\n");
printf("\n");
printf("\t");
printf("\t*主菜单*\n");
printf("\n");
printf("\t");
printf("\t*1.输入车辆信息*\n");
printf("\n");
printf("\t");
printf("\t*2.显示车辆信息*\n");
printf("\n");
printf("\t");
printf("\t*3.显示车辆总数*\n");
printf("\n");
printf("\t");
printf("\t*4.保存退出系统*\n");
printf("\n");
printf("\t");
printf("\t*请输入数字选择操作类型:
*\n");
printf("\n");
printf("\t");
printf("\t***********************************************\n");
n=getch();
switch(n)
{
case'1':
input();
break;
case'2':
show();
break;
case'3':
all();
break;
case'4':
writefile();
break;
default:
break;
}
}
voidinput()
{
system("cls");
printf("请输入车辆信息\n");
printf("车牌号:
\n");
scanf("%s",&ve[count].num);
printf("车辆类型(a,b,c分别代表大,中,小):
\n");
scanf("%s",ve[count].variety);
printf("进入时间:
\n");
scanf("%d",&ve[count].entime);
printf("入口(1,2,3代表三个入口):
\n");
scanf("%s",&ve[count].enter);
count++;
printf("是否继续添加(Y/N)\n");
if(getch()=='y'||getch()=='Y')
input();
elsemenu();
}
voidshow()
{
system("cls");
charnumber[10];
charid2;
inti,R,de=0;
doublea,b,c,l1=200,l2=300,l3=400;/*定义三个入口到出口的路程分别是l1l2l3(200300400)公里*/
printf("\n\n\n\n\t\t***************************************************\n");
printf("\t\t请输入车牌号:
\n");
scanf("%s",&number);
for(i=0;i { if(strcmp(ve[i].num,number)==0) {de++; printf("\t\t车辆信息情况: \n"); printf("\t\t车辆类型: %s\n",ve[i].variety); printf("\t\t入口站: %s\n",ve[i].enter); printf("\t\t进入时间: %d\n",ve[i].entime); printf("\t\t车牌号: %s\n",ve[i].num); R=i; if(strcmp(ve[R].variety,"a")==0&&strcmp(ve[R].enter,"1")==0) { a=0.5*l1; printf("\t\t此车应缴费: %f元\n",a); } elseif(strcmp(ve[R].variety,"a")==0&&strcmp(ve[R].enter,"2")==0) { a=0.5*l2; printf("\t\t此车应缴费: %f元\n",a); } elseif(strcmp(ve[R].variety,"a")==0&&strcmp(ve[R].enter,"3")==0) { a=0.5*l3; printf("\t\t此车应缴费: %f元\n",a); } elseif(strcmp(ve[R].variety,"b")==0&&strcmp(ve[R].enter,"1")==0) { b=0.4*l1; printf("\t\t此车应缴费: %f元\n",b); } elseif(strcmp(ve[R].variety,"b")==0&&strcmp(ve[R].enter,"2")==0) { b=0.4*l2; printf("\t\t此车应缴费: %f元\n",b); } elseif(strcmp(ve[R].variety,"b")==0&&strcmp(ve[R].enter,"3")==0) { b=0.4*l3; printf("\t\t此车应缴费: %f元\n",b); } elseif(strcmp(ve[R].variety,"c")==0&&strcmp(ve[R].enter,"1")==0) { c=0.3*l1; printf("\t\t此车应缴费: %f元\n",c); } elseif(strcmp(ve[R].variety,"c")==0&&strcmp(ve[R].enter,"2")==0) { c=0.3*l2; printf("\t\t此车应缴费: %f元\n",c); } elseif(strcmp(ve[R].variety,"c")==0&&strcmp(ve[R].enter,"3")==0) { c=0.3*l3; printf("\t\t此车应缴费: %f元\n",c); } } } if(de==0) { printf("\t\t此车记录为空\n"); } printf("\t\tPleasepressanykeytogetbacktomainmenu\n"); printf("\t\t***************************************************\n"); id2=getch(); menu(); } voidwritefile() { inti; if((fp=fopen("vehicle.txt","w"))==NULL) { printf("\n"); printf("\n"); printf("\n"); printf("\n"); printf("\t"); printf("\t"); printf("*************************************************\n"); printf("\t"); printf("\t"); printf("\n*文件打开失败*"); printf("\t"); printf("\t"); printf("*************************************************\n"); } for(i=0;i { if(fwrite(&ve[i],sizeof(structvehicle),1,fp)! =1) { printf("\n"); printf("\n"); printf("\n"); printf("\n"); printf("\n"); printf("\t"); printf("\t"); printf("*************************************************\n"); printf("\t"); printf("\t"); printf("*写入文件错误! *"); printf("\t"); printf("\t"); printf("*************************************************\n"); } } fclose(fp); printf("\n"); printf("\n"); printf("\n"); printf("\n"); printf("\n"); printf("\t"); printf("\t"); printf("*************************************************\n"); printf("\t"); printf("\t"); printf("**\n"); printf("\t"); printf("\t"); printf("*通讯录文件已保存*\n"); printf("\t"); printf("\t"); printf("**\n"); printf("\t"); printf("\t"); printf("**\n"); printf("\t"); printf("\t"); printf("*Pleasepressanykeytoexit*\n"); printf("\t"); printf("\t"); printf("*************************************************\n"); exit(0); } voidall() { system("cls"); printf("\n"); printf("\n"); printf("\n"); printf("\n"); printf("\n"); printf("\t"); printf("\t"); printf("*************************************************\n"); printf("\t"); printf("\t"); printf("*车辆总数为: %d*\n",count); printf("\t"); printf("\t"); printf("**\n"); printf("\t"); printf("\t"); printf("**\n"); printf("\t"); printf("\t"); printf("*Pleasepressanykeytogetbacktomainmenu*\n"); printf("\t"); printf("\t"); printf("************************************************\n"); getch(); menu(); } 三、测试及调试 1、调试采用了输入数据模拟路口汽车收费。 输入的数据及结果有 (1)2222222a121结果100.000000元 (2)5678934b132结果120.000000元 (3)2233445c13结果120.000000元
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高速公路 收费 系统 语言 课程设计 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)