c语言课程设计高速公路计费系统

Python08

c语言课程设计高速公路计费系统,第1张

#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)/*文件指针fp指到到文件末尾*/

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=0i<counti++)

{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=0i<counti++)

{ 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=0i<counti++)

{

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<stdio.h>

#include

<stdlib.h>

//车辆类型

enum

VehicleType

{

Car

=

1,

Trunk

=

2,

Bus

=

3

}

//定义类

class

VehicleSystem

{

public:

static

int

PayMent(VehicleType

vt)

{

if(vt==VehicleType::Bus)

{

return

50

}

else

if(vt==VehicleType::Car)

{

return

15

}

else

if(vt==VehicleType::Trunk)

{

return

30

}

return

0

}

}

void

main()

{

unsigned

int

id=0

unsigned

int

payment=0

unsigned

int

caramount=0

unsigned

int

busamount=0

unsigned

int

trunkamount=0

do

{

printf("1:轿车,2:卡车,3:公共汽车,请输入编号收费,0表示结束:")

scanf("%u",&id)

if(VehicleSystem::PayMent((enum

VehicleType)id)==50)

{

busamount++

}

else

if(VehicleSystem::PayMent((enum

VehicleType)id)==30)

{

trunkamount++

}

else

if(VehicleSystem::PayMent((enum

VehicleType)id)==15)

{

caramount++

}

payment+=VehicleSystem::PayMent((enum

VehicleType)id)

}while(id!=0)

printf("\n\n小轿车:%u\n公共汽车:%u\n卡车:%u",caramount,busamount,trunkamount)

printf("\n\n总共费用:%u",payment)

system("pause")

}

那个负号不当心打入了。不影响的。