在某高速公路出口收费处,对三种类型的车辆计费,大型车每公里0。5元,中型车每公里0。4元,小型车每公里0。3元,来车验条,乘公里数即得该收的款项。在交班时要统计出总数。
分步实施:
1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;
2、完成最低要求:建立一个只有三个入口的计费系统,并能进行统计计算,打印出报表;
3、进一步要求:完成任意多个入口的通用系统。
要求:1、用C语言实现程序设计;
2、利用结构体数组实现信息的数据结构设计;
3、系统的各个功能模块要求用函数的形式实现;
4、界面友好(良好的人机交互),程序加必要的注释。
c语言课程设计高速公路计费系统
答案:3 悬赏:0 手机版
解决时间 2021-02-11 11:00
- 提问者网友:原来太熟悉了会陌生
- 2021-02-10 16:54
最佳答案
- 五星知识达人网友:刀戟声无边
- 2021-02-10 18:13
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#define N 10
// 定义三个入口到出口的路程分别是l1 l2 l3
struct vehicle//车辆信息
{
char num[8];//车牌号
char variety[4];//车辆类型a,b,c(大,中,小)
int entime;//进入时间
char enter[2];//进入口1,2,3……分别为各个入口
}ve[N];
int count=0;
FILE *fp;
//函数声明//
void menu();//主菜单
void input();//输入函数
void show();
void all();
void readfile();//从文件导入
void writefile();//写入
void main()
{
readfile();
while(1)
{
menu();
}
}
void readfile()//从文件导入
{
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\tPress any key to get to mainmenu!");
getch();
return;
}
exit(0);
}
fseek(fp,0,2);
if(ftell(fp)>0)
{
fseek(fp,0,0);
for(count=0;!feof(fp)&&fread(&ve[count],sizeof(struct vehicle),1,fp);count++);
printf("\n\t\t文件导入成功");
printf("\n\t\t按任意键进入系统");
getch();
return;
}
printf("\n\t\t\t已成功打开文件!");
printf("\n\t\t\tPress anykey to get back to mainmenu");
getch();
return;
}
void menu()
{system("cls");//清屏
char n;
printf("\n\n\n\n");
printf("\t\t☆★☆★☆★欢迎使用高速公路收费系统☆★☆★☆★\n");
printf("\t\t◇◇◇§§§◇◇◇◇主菜单◇◇◇◇§§§◇◇◇\n");
printf(" *********1.输入车辆信息*********\n");
printf(" *********2.显示车辆信息*********\n");
printf(" *********3.显示车辆总数*********\n");
printf(" *********4.保存退出系统 *********\n");
printf(" 请输入数字选择操作类型:\n");
n=getch();
switch(n)
{
case '1': input();break;
case '2': show();break;
case '3': all();break;
case '4': writefile();break;
default: break;
}
}
void input()
{ 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();
}
void show()
{ system("cls");
char num[8];
char enter[2];
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<count;i++)
{if(strcmp(ve[i].num,num)==0)
{
printf("车辆信息:");
printf("车辆类型:%s\n",ve[i].variety);
printf("入口站:%s\n",ve[i].enter);
printf("进入时间:%d\n",ve[i].entime);
printf("车牌号:%s",ve[i].num);
}
}
for(i=0;i<count;i++)
{ if(strcmp(ve[i].variety,"a")==0&&strcmp(ve[i].enter,"1")==0)
{
a=0.5*l1;
printf("此车应缴费%f元",a);
}
else if(strcmp(ve[i].variety,"a")==0&&strcmp(ve[i].enter,"2")==0)
{
a=0.5*l2;
printf("此车应缴费%f元",a);
}
else if(strcmp(ve[i].variety,"a")==0&&strcmp(ve[i].enter,"3")==0)
{
a=0.5*l3;
printf("此车应缴费%f元",a);
}
else if(strcmp(ve[i].variety,"b")==0&&strcmp(ve[i].enter,"1")==0)
{
b=0.4*l1;
printf("此车应缴费%f元",b);
}
else if(strcmp(ve[i].variety,"b")==0&&strcmp(ve[i].enter,"2")==0)
{
b=0.4*l2;
printf("此车应缴费%f元",b);
}
else if(strcmp(ve[i].variety,"b")==0&&strcmp(ve[i].enter,"3")==0)
{
b=0.4*l3;
printf("此车应缴费%f元",b);
}
else if(strcmp(ve[i].variety,"c")==0&&strcmp(ve[i].enter,"1")==0)
{
c=0.3*l1;
printf("此车应缴费%f元",c);
}
else if(strcmp(ve[i].variety,"c")==0&&strcmp(ve[i].enter,"2")==0)
{
c=0.3*l2;
printf("此车应缴费%f元",c);
}
else if(strcmp(ve[i].variety,"c")==0&&strcmp(ve[i].enter,"3")==0)
{
c=0.3*l3;
printf("此车应缴费%f元",c);
}
}
getch();
return;
}
void writefile()
{
int i;
if((fp=fopen("vehicle.txt","w"))==NULL)
{
printf("\n\t\t文件打开失败");
}
for (i=0;i<count;i++)
{
if(fwrite(&ve[i],sizeof(struct vehicle),1,fp)!=1)
{
printf("\n\t\t写入文件错误!\n");
}
}
fclose(fp);
printf("\n\t\t通讯录文件已保存");
printf("\n\t\t按任意键退出程序\n\t\t");
exit(0);
}
void all()
{ system("cls");
printf("车辆总数为:%d",count);
getch();
return;
}
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#define N 10
// 定义三个入口到出口的路程分别是l1 l2 l3
struct vehicle//车辆信息
{
char num[8];//车牌号
char variety[4];//车辆类型a,b,c(大,中,小)
int entime;//进入时间
char enter[2];//进入口1,2,3……分别为各个入口
}ve[N];
int count=0;
FILE *fp;
//函数声明//
void menu();//主菜单
void input();//输入函数
void show();
void all();
void readfile();//从文件导入
void writefile();//写入
void main()
{
readfile();
while(1)
{
menu();
}
}
void readfile()//从文件导入
{
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\tPress any key to get to mainmenu!");
getch();
return;
}
exit(0);
}
fseek(fp,0,2);
if(ftell(fp)>0)
{
fseek(fp,0,0);
for(count=0;!feof(fp)&&fread(&ve[count],sizeof(struct vehicle),1,fp);count++);
printf("\n\t\t文件导入成功");
printf("\n\t\t按任意键进入系统");
getch();
return;
}
printf("\n\t\t\t已成功打开文件!");
printf("\n\t\t\tPress anykey to get back to mainmenu");
getch();
return;
}
void menu()
{system("cls");//清屏
char n;
printf("\n\n\n\n");
printf("\t\t☆★☆★☆★欢迎使用高速公路收费系统☆★☆★☆★\n");
printf("\t\t◇◇◇§§§◇◇◇◇主菜单◇◇◇◇§§§◇◇◇\n");
printf(" *********1.输入车辆信息*********\n");
printf(" *********2.显示车辆信息*********\n");
printf(" *********3.显示车辆总数*********\n");
printf(" *********4.保存退出系统 *********\n");
printf(" 请输入数字选择操作类型:\n");
n=getch();
switch(n)
{
case '1': input();break;
case '2': show();break;
case '3': all();break;
case '4': writefile();break;
default: break;
}
}
void input()
{ 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();
}
void show()
{ system("cls");
char num[8];
char enter[2];
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<count;i++)
{if(strcmp(ve[i].num,num)==0)
{
printf("车辆信息:");
printf("车辆类型:%s\n",ve[i].variety);
printf("入口站:%s\n",ve[i].enter);
printf("进入时间:%d\n",ve[i].entime);
printf("车牌号:%s",ve[i].num);
}
}
for(i=0;i<count;i++)
{ if(strcmp(ve[i].variety,"a")==0&&strcmp(ve[i].enter,"1")==0)
{
a=0.5*l1;
printf("此车应缴费%f元",a);
}
else if(strcmp(ve[i].variety,"a")==0&&strcmp(ve[i].enter,"2")==0)
{
a=0.5*l2;
printf("此车应缴费%f元",a);
}
else if(strcmp(ve[i].variety,"a")==0&&strcmp(ve[i].enter,"3")==0)
{
a=0.5*l3;
printf("此车应缴费%f元",a);
}
else if(strcmp(ve[i].variety,"b")==0&&strcmp(ve[i].enter,"1")==0)
{
b=0.4*l1;
printf("此车应缴费%f元",b);
}
else if(strcmp(ve[i].variety,"b")==0&&strcmp(ve[i].enter,"2")==0)
{
b=0.4*l2;
printf("此车应缴费%f元",b);
}
else if(strcmp(ve[i].variety,"b")==0&&strcmp(ve[i].enter,"3")==0)
{
b=0.4*l3;
printf("此车应缴费%f元",b);
}
else if(strcmp(ve[i].variety,"c")==0&&strcmp(ve[i].enter,"1")==0)
{
c=0.3*l1;
printf("此车应缴费%f元",c);
}
else if(strcmp(ve[i].variety,"c")==0&&strcmp(ve[i].enter,"2")==0)
{
c=0.3*l2;
printf("此车应缴费%f元",c);
}
else if(strcmp(ve[i].variety,"c")==0&&strcmp(ve[i].enter,"3")==0)
{
c=0.3*l3;
printf("此车应缴费%f元",c);
}
}
getch();
return;
}
void writefile()
{
int i;
if((fp=fopen("vehicle.txt","w"))==NULL)
{
printf("\n\t\t文件打开失败");
}
for (i=0;i<count;i++)
{
if(fwrite(&ve[i],sizeof(struct vehicle),1,fp)!=1)
{
printf("\n\t\t写入文件错误!\n");
}
}
fclose(fp);
printf("\n\t\t通讯录文件已保存");
printf("\n\t\t按任意键退出程序\n\t\t");
exit(0);
}
void all()
{ system("cls");
printf("车辆总数为:%d",count);
getch();
return;
}
全部回答
- 1楼网友:鱼芗
- 2021-02-10 20:49
晕,whowho发上去的?????
- 2楼网友:鸽屿
- 2021-02-10 19:48
给10qb,我给你做一个,
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯