C课设高速公路收费系统设计.docx
- 文档编号:12691454
- 上传时间:2023-04-21
- 格式:DOCX
- 页数:12
- 大小:129.14KB
C课设高速公路收费系统设计.docx
《C课设高速公路收费系统设计.docx》由会员分享,可在线阅读,更多相关《C课设高速公路收费系统设计.docx(12页珍藏版)》请在冰豆网上搜索。
C课设高速公路收费系统设计
C课设:
高速公路收费系统设计
学校:
西安理工大学
姓名:
陈国平
班级:
电气106
学号:
3100421166
(C程序代码和程序运行部分结果)
#include
#include
#include
#include
#defineN1000000
structvehicle/*定义储存车辆信息的结构体*/
{charnum[8];/*车牌号码*/
charvariety;/*车辆类型a,b,c(大,中,小)*/
intentera;/*进入口1,2,3……分别为各个入口*/
}ve[N];
intcount=0;
FILE*fp;
/*函数声明*/
voidreadfile();/*从文件导入*/
voidmenu();/*主菜单函数*/
voidinput();/*输入车辆信息函数*/
voidshow();/*显示应收金额*/
voidmmoney();/*统计总金额*/
voidwritefile();/*保存车辆信息*/
voidxianshi();/*显示车辆信息*/
voidmain()
{
readfile();
while
(1)
{
menu();
}
}
voidreadfile()/*从文件导入*/
{
if((fp=fopen("vehicle.txt","r"))==NULL)
{
printf("\n\t\t\t\t文件为空,请添加信息");
if((fp=fopen("vehicle.txt","w"))==NULL)
{
printf("\n\t\t\t建立失败");
exit(0);
}
else
{
printf("\n\t\t文件已建立");
printf("\n\t\tPressanykeytogettomainmenu!
");
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++);
fclose(fp);
printf("\n\t\t文件导入成功");
printf("\n\t\t按任意键进入系统");
getch();
return;
}
printf("\n\t\t\t已成功打开文件!
");
fclose(fp);
printf("\n\t\t\tPressanykeytogetbacktomainmenu");
getch();
return;
}
voidmenu()
{charn;
printf("\n\n\n\n");
printf("\t\t**********欢迎使用高速公路计费系统**********\n");
printf("\t\t主菜单\n");
printf("\t\t*********1.输入车辆信息*********\n");
printf("\t\t*********2.显示应收金额*********\n");
printf("\t\t*********3.显示金额总数*********\n");
printf("\t\t*********4.保存退出系统*********\n");
printf("\t\t*********5.显示车辆信息*********\n");
printf("请输入数字选择操作类型:
\n");
n=getchar();
switch(n)
{
case'1':
input();break;
case'2':
show();break;
case'3':
mmoney();break;
case'4':
writefile();break;
case'5':
xianshi();break;
default:
break;
}
}
voidinput()
{
printf("请输入车辆信息\n");
printf("车牌号:
\n");
scanf("%s",ve[count].num);
getchar();
printf("车辆类型(a,b,c分别代表大,中,小):
\n");
scanf("%c",&ve[count].variety);
printf("入口(1,2,3代表三个入口):
\n");
scanf("%d",&ve[count].entera);
count++;
printf("\n输入完毕,按任意键返回主菜单");
getch();
return;
}
voidshow()
{charnum[8];
intenterb,i;
doublel1=200,l2=300,l3=400;
/*定义三个入口到出口的路程分别是l1l2l3(200300400)公里*/
printf("请输入车牌号:
\n");
scanf("%s",num);
printf("请输入进入口:
\n");
scanf("%d",&enterb);
i=count-1;
if(strcmp(ve[i].num,num)==0&&ve[i].entera==enterb)
{
printf("车辆信息:
\n");
printf("车牌号:
%s\n",ve[i].num);
printf("车辆类型:
%c\n",ve[i].variety);
printf("入口站:
%d\n",ve[i].entera);
}
switch(ve[i].variety)
{case'a':
switch(ve[i].entera)
{case1:
printf("此车应收费%f",0.5*l1);break;
case2:
printf("此车应收费%f",0.5*l2);break;
case3:
printf("此车应收费%f",0.5*l3);break;
default:
break;
}break;
case'b':
switch(ve[i].entera)
{case1:
printf("此车应收费%f",0.4*l1);break;
case2:
printf("此车应收费%f",0.4*l2);break;
case3:
printf("此车应收费%f",0.4*l3);break;
default:
break;
}break;
case'c':
switch(ve[i].entera)
{case1:
printf("此车应收费%f",0.3*l1);break;
case2:
printf("此车应收费%f",0.3*l2);break;
case3:
printf("此车应收费%f",0.3*l3);break;
default:
break;
}break;
default:
break;
}
if(strcmp(ve[i].num,num)==0&&ve[i].entera==enterb)
printf("输入正确,此计费正确\n");
elseprintf("输入错误,此收费错误\n");
printf("\n按任意键返回主菜单");
getch();
return;
}
voidmmoney()
{inti;
doubled=0;
doublel1=200,l2=300,l3=400;
for(i=0;i switch(ve[i].variety) {case'a': switch(ve[i].entera) {case1: d=d+0.5*l1;break; case2: d=d+0.5*l2;break; case3: d=d+0.5*l3;break; default: break; }break; case'b': switch(ve[i].entera) {case1: d=d+0.4*l1;break; case2: d=d+0.4*l2;break; case3: d=d+0.4*l3;break; default: break; }break; case'c': switch(ve[i].entera) {case1: d=d+0.3*l1;break; case2: d=d+0.3*l2;break; case3: d=d+0.3*l3;break; default: break; }break; default: break; } printf("总金额为: %f\n",d); printf("按任意键返回主菜单"); getch(); return; } voidwritefile() { inti; if((fp=fopen("vehicle.txt","w"))==NULL) { printf("\n\t\t文件打开失败"); } for(i=0;i { if(fwrite(&ve[i],sizeof(structvehicle),1,fp)! =1) { printf("\n\t\t写入文件错误! \n"); } } fclose(fp); printf("\n\t\t通讯录文件已保存"); printf("\n\t\t按任意键退出程序\n\t\t"); exit(0); } voidxianshi() {inti; for(i=0;i {printf("第%d辆车的信息\n",i+1); printf("车牌号码为%s\n",ve[i].num); printf("车辆类型为%c\n",ve[i].variety); printf("车辆入口为%d\n",ve[i].entera); } printf("按任意键返回主菜单"); getch(); return; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高速公路 收费 系统 设计