C课设:高速公路收费系统设计_高速公路收费管理系统
C课设:高速公路收费系统设计由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“高速公路收费管理系统”。
C课设:高速公路收费系统设计
学校:西安理工大学
姓名:陈国平
班级:电气106
学号:3100421166
(C程序代码和程序运行部分结果)#include #include #include #include #define N 1000000
struct vehicle
/*定义储存车辆信息的结构体 */ {char num[8];
/*车牌号码*/ char variety;
/*车辆类型a,b,c(大,中,小)*/ int entera;
/*进入口1,2,3……分别为各个入口*/ } ve[N];int count=0;FILE *fp;
/*函数声明*/ void readfile();
/*从文件导入*/ void menu();
/*主菜单函数*/ void input();
/*输入车辆信息函数*/ void show();
/*显示应收金额*/ void mmoney();
/*统计总金额*/ void writefile();
/*保存车辆信息*/ void xianshi();
/*显示车辆信息*/
void main(){
readfile();
while(1)
{
menu();
} }
void readfile()
/*从文件导入 */ {
if((fp=fopen(“vehicle.txt”,“r”))==NULL)
{
printf(“ntttt文件为空,请添加信息”);
if((fp=fopen(“vehicle.txt”,“w”))==NULL)
{
printf(“nttt建立失败”);
exit(0);}
else
{
printf(“ntt文件已建立”);
printf(“nttPre any key to get to mainmenu!”);
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(struct vehicle),1,fp);count++);
fclose(fp);
printf(“ntt文件导入成功”);
printf(“ntt按任意键进入系统”);
getch();
return;
}
printf(“nttt已成功打开文件!”);
fclose(fp);
printf(“ntttPre anykey to get back to mainmenu”);
getch();
return;}
void menu(){char n;printf(“nnnn”);printf(“tt**********欢迎使用高速公路计费系统**********n”);printf(“tt
主菜单
n”);
printf(“tt
*********1.输入车辆信息*********n”);printf(“tt
*********2.显示应收金额*********n”);printf(“tt
*********3.显示金额总数*********n”);printf(“tt
*********4.保存退出系统*********n”);printf(“tt
*********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;} }
void input(){
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;}
void show(){char num[8];int enterb,i;double l1=200,l2=300,l3=400;/* 定义三个入口到出口的路程分别是l1 l2 l3(200 300 400)公里*/ 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(“车牌号:%sn”,ve[i].num);
printf(“车辆类型:%cn”,ve[i].variety);
printf(“入口站:%dn”,ve[i].entera);} switch(ve[i].variety){case 'a': switch(ve[i].entera)
{case 1: printf(“此车应收费%f”,0.5*l1);
break;
case 2: printf(“此车应收费%f”,0.5*l2);
break;
case 3: printf(“此车应收费%f”,0.5*l3);
break;
default:
break;
}
break;
case 'b': switch(ve[i].entera)
{case 1: printf(“此车应收费%f”,0.4*l1);break;
case 2: printf(“此车应收费%f”,0.4*l2);break;
case 3: printf(“此车应收费%f”,0.4*l3);break;
default:
break;
}
break;
case 'c': switch(ve[i].entera)
{case 1: printf(“此车应收费%f”,0.3*l1);break;
case 2: printf(“此车应收费%f”,0.3*l2);break;
case 3: printf(“此车应收费%f”,0.3*l3);break;
default:
break;
}
break;
default :
break;} if(strcmp(ve[i].num,num)==0 && ve[i].entera==enterb)
printf(“输入正确,此计费正确n”);else printf(“输入错误,此收费错误n”);printf(“n按任意键返回主菜单”);getch();return;}
void mmoney(){ int i;
double d=0;
double l1=200,l2=300,l3=400;
for(i=0;i
switch(ve[i].variety)
{case 'a':switch(ve[i].entera)
{case 1: d=d+0.5*l1;break;
case 2: d=d+0.5*l2;break;
case 3: d=d+0.5*l3;break;
default:
break;
}
break;
case 'b':switch(ve[i].entera)
{case 1: d=d+0.4*l1;break;
case 2: d=d+0.4*l2;break;
case 3: d=d+0.4*l3;break;
default:
break;
}
break;
case' c':switch(ve[i].entera)
{case 1: d=d+0.3*l1;break;
case 2: d=d+0.3*l2;break;
case 3: d=d+0.3*l3;break;
default:
break;
}
break;
default : break;} printf(“总金额为:%fn”,d);printf(“按任意键返回主菜单”);getch();return;}
void writefile(){
int i;
if((fp=fopen(“vehicle.txt”,“w”))==NULL)
{
printf(“ntt文件打开失败”);
}
for(i=0;i
{
if(fwrite(&ve[i],sizeof(struct vehicle),1,fp)!=1)
{
printf(“ntt写入文件错误!n”);
}
}
fclose(fp);
printf(“ntt通讯录文件已保存”);
printf(“ntt按任意键退出程序ntt”);
exit(0);}
void xianshi(){int i;for(i=0;i
printf(“车牌号码为%sn”,ve[i].num);
printf(“车辆类型为%cn”,ve[i].variety);
printf(“车辆入口为%dn”,ve[i].entera);} printf(“按任意键返回主菜单”);getch();return;}