C语言数组实现公交车管理系统
本文实例为大家分享了C语言实现公交车管理系统的具体代码,供大家参考,具体内容如下
/**************************头文件声明************************************/
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
#include"conio.h"
/**************************函数声明************************************/
voidinit();//初始化函数
voidadd();//信息录入函数
voidview();//信息显示函数
voidmod();//信息修改函数
voidmodmeun();//修改菜单
voidmodnavimeun();//路线修改菜单
voiddel();//信息删除函数
voidfind();//信息查询函数
voidfindmeun();//查询菜单
voidfindnavi();//路线导航查询函数
voidfindnum();//路线编号查询函数
voidfindstameun();//站台信息查询菜单
voidfindsta();//站台信息查询函数
voidsave();//信息保存函数
voidmainmeun();//主菜单
charTest(chara,charb,charc);//菜单输入检测函数
/**************************宏定义声明************************************/
#defineN100//公交车数量
/**************************结构体定义************************************/
structstation//途径站点信息
{
charc[20];//站点名称
};
structbus//公交车信息
{
charnum[20];//公交车路线编号
charname[20];//司机姓名
intn;//站台数目
structstationb[12];//站台名称
chartopen[20];//起始时间
chartclose[20];//终止时间
intmoney;//票价
}a[N];
/**************************函数定义************************************/
intmain()
{
chara;
init();
printf("\n\t\t目前所能录入的公交车数量上限为%d辆\n\n",N);
printf("\n\t\t输入回车键继续\n");
fflush(stdin);//清除键盘缓冲区
while(1)
{
system("cls");
mainmeun();
a=Test(getchar(),'1','6');//菜单检测输入函数
switch(a)
{
case'1':system("cls");add();break;
case'2':system("cls");view();break;
case'3':system("cls");mod();break;
case'4':system("cls");del();break;
case'5':system("cls");find();break;
case'6':return0;
}
}
return0;
}
voidinit()//初始化函数
{
FILE*fp;//文件指针
inti;
if((fp=fopen("bus.txt","r+"))==NULL)//初次尝试打开"bus.txt"文本文件
{
printf("\n\t\t文件打开失败\n\n\t\t正在尝试创建新文件...\n");
fp=fopen("bus.txt","w");//创建"bus.txt"文本文件
if((fp=fopen("bus.txt","r+"))==NULL)//再次判断是否打开成功
{
printf("\t\t文件创建失败!!!\n");
return;
}
}
fp=fopen("bus.txt","r+");
for(i=0;i=2):");//站台总数
scanf("%d",&a[i].n);
printf("\n");
if(a[i].n<2||a[i].n>12)
{
while(a[i].n<2||a[i].n>12)
{
printf("\n站台总数应满足(2<=n<=12),请重新输入:");
scanf("%d",&a[i].n);
printf("\n");
}
}
for(j=0;j(%d)%s",j+1,a[i].b[j].c);
}
printf("\n\n请输入公交车的起始时间(格式为:时:分):");//起始时间
scanf("%s",a[i].topen);
printf("请输入公交车的终止时间(格式为:时:分):");//终止时间
scanf("%s",a[i].tclose);
printf("\n请输入公交车的票价:");//票价
scanf("%d",&a[i].money);
printf("\n第%d辆公交车路线记录创建成功!!!\n",i+1);
save();
printf("\n\t按回车键返回!!!\n");
fflush(stdin);//清除键盘缓冲区
getchar();
system("cls");
return;
}
}
if(i==N)
printf("\n\n\n\t空间已满,不能录入!!!\n");
printf("\n\t按回车键返回!!!\n");
fflush(stdin);//清除键盘缓冲区
getchar();
system("cls");
return;
}
voidview()//信息显示函数
{
inti,j,min;
structbust;
for(i=0;*a[i].num!='\0'&&i0)
min=j;
t=a[i];
a[i]=a[min];
a[min]=t;
}
printf("\n\n公交车信息库");
printf("\n********************************************************************************\n");
for(i=0;*a[i].num!='\0'&&i(%d)%s",j+1,a[i].b[j].c);
printf("\n\n");
}
printf("\n********************************************************************************\n");
printf("\n\t\t公交车信息显示完毕!!!\n");
printf("\n\t\t输入回车键返回主菜单:");
fflush(stdin);//清除键盘缓冲区
getchar();
system("cls");
return;
}
voidmod()//信息修改函数
{
inti,j,m=0;
chart,cc[20],mod[20];
printf("请输入要修改信息的公交车路线编号:\n");
scanf("%s",cc);
for(i=0;*a[i].num!='\0'&&i(%d)%s",j+1,a[i].b[j].c);
printf("\n\n");
printf("\n-----------------------------------------------\n\n");
modmeun();
fflush(stdin);//清除键盘缓冲区
t=Test(getchar(),'1','5');//菜单检测输入函数
system("cls");
switch(t)
{
case'1'://修改路线编号
{
intk;
printf("\n请输入新的公交车编号:");
scanf("%s",mod);
for(k=0;*a[k].num!='\0'&&k12)//判断是否满足条件
{
printf("\n站台总数达到12个,无法添加新站点\n\n按回车键返回\n");
fflush(stdin);//清除键盘缓冲区
getchar();
system("cls");
return;
}
printf("\n请输入需要添加第几个站点:");
scanf("%d",&k);
while(a[i].n+1k-1;j--)
{
a[i].b[j]=a[i].b[j-1];
}
printf("\n请输入新添加的站点名称:");
scanf("%s",a[i].b[k-1].c);
save();
break;
}
case'2'://修改站点
{
printf("\n请输入需要修改第几个站点:");
scanf("%d",&k);
printf("\n请输入新的站点名称:");
scanf("%s",a[i].b[k-1].c);
save();
break;
}
case'3'://删除站点
{
printf("\n请输入需要删除第几个站点:");
scanf("%d",&k);
for(j=k-1;j12)//判断是否满足条件
{
printf("\n站台总数应满足(2<=n<=12),请重新输入:");
scanf("%d",&a[i].n);
printf("\n");
}
for(j=0;j(%d)%s",j+1,a[i].b[j].c);
printf("\n\n");
save();
break;
}
case'5'://返回菜单
{
printf("\n\t\t按回车键返回菜单\n");
fflush(stdin);//清除键盘缓冲区
getchar();
system("cls");
return;//返回主菜单
}
}
}
}
case'4'://修改行车时间
{
printf("\n\n请输入公交车的起始时间(格式为:时:分):");
scanf("%s",a[i].topen);
printf("请输入公交车的终止时间(格式为:时:分):");
scanf("%s",a[i].tclose);
save();
break;
}
case'5':
{
printf("\n\t\t按回车键返回主菜单\n");
fflush(stdin);//清除键盘缓冲区
getchar();
system("cls");
return;//返回主菜单
}
}
}
}
}
if(m==0)
printf("\n\n\t\t无此公交车信息!!!\n");
printf("\n\t\t按回车键返回\n");
fflush(stdin);//清除键盘缓冲区
getchar();
system("cls");
return;
}
voidmodmeun()//修改菜单
{
printf("\n\t\t修改菜单");
printf("\n\t\t********************************************");
printf("\n\t\t*1、修改路线编号*");
printf("\n\t\t*2、修改车辆信息*");
printf("\n\t\t*3、修改行车路线*");
printf("\n\t\t*4、修改行车时间*");
printf("\n\t\t*5、返回到主菜单*");
printf("\n\t\t********************************************");
printf("\n\n\t\t请输入您的选择:");
}
voidmodnavimeun()//路线修改菜单
{
printf("\n\t\t路线修改菜单");
printf("\n\t\t********************************************");
printf("\n\t\t*1、站点添加*");
printf("\n\t\t*2、站点修改*");
printf("\n\t\t*3、站点删除*");
printf("\n\t\t*4、路线重置*");
printf("\n\t\t*5、返回菜单*");
printf("\n\t\t********************************************");
printf("\n\n\t\t请输入您的选择:");
}
voiddel()//信息删除函数
{
inti,j,t,m=0;
charcc[20];
printf("\n请输入要删改信息的公交车路线编号:\n");
scanf("%s",cc);
for(i=0;*a[i].num!='\0'&&i(%d)%s",j+1,a[i].b[j].c);
printf("\n\n");
printf("\n-----------------------------------------------\n\n");
printf("即将删除该公交车信息!!!\n确定请按1:");
scanf("%d",&t);
if(t==1)
{
if(i+1==N)
memset(&a[i],'\0',sizeof(structbus));//最后一辆直接进行清空
else
for(j=i;*a[j].num!='\0'&&j+1(%d)%s",j+1,a[i].b[j].c);
printf("\n\n");
}
}
printf("\n-----------------------------------------------\n\n");
printf("\t\t\t\t显示完毕\n");
if(m==0)
printf("\n\n\t\t\t\t抱歉,无途径此路线的公交车\n");
printf("\n\t\t\t\t输入回车键返回查询菜单:");
fflush(stdin);//清除键盘缓冲区
getchar();
system("cls");
return;
}
voidfindnum()//路线编号查询函数
{
inti,j,m=0;
charcc[20];
printf("请输入您想要查找的公交路线编号:\n");
scanf("%s",cc);
for(i=0;*a[i].num!='\0'&&i(%d)%s",j+1,a[i].b[j].c);
printf("\n\n");
printf("\n-----------------------------------------------\n\n");
break;
}
}
if(m==0)
printf("\n\t\t无此公交车信息\n");
printf("\n\t\t输入回车键返回查询菜单:");
fflush(stdin);//清除键盘缓冲区
getchar();
system("cls");
return;
}
voidfindstameun()//站台信息查询菜单
{
printf("\n\t\t站台信息查询菜单");
printf("\n\t\t********************************************");
printf("\n\t\t*1、起始站台查询*");
printf("\n\t\t*2、终止站台查询*");
printf("\n\t\t*3、途径站台查询*");
printf("\n\t\t*4、返回查询菜单*");
printf("\n\t\t********************************************");
printf("\n\n\t\t请输入您的选择:");
}
voidfindsta()//站台信息查询函数
{
inti,j,k;
chart;
charcc[20];
while(1)
{
intm=0;
findstameun();
fflush(stdin);//清除键盘缓冲区
t=Test(getchar(),'1','4');//菜单检测输入函数
system("cls");
switch(t)
{
case'1':
{
printf("请输入您所要查询的起始站台名称:\n");
scanf("%s",cc);
printf("\n以%s为起始站台的公交车如下:\n",cc);
printf("\n-----------------------------------------------\n");
for(i=0;*a[i].num!='\0'&&i(%d)%s",j+1,a[i].b[j].c);
printf("\n\n");
}
}
printf("\n-----------------------------------------------\n\n");
printf("\t已全部显示完毕!!!\n");
if(m==0)
printf("\n\t没有公交车以该站点为起始站台\n");
break;
}
case'2':
{
printf("请输入您所要查询的终止站台名称:\n");
scanf("%s",cc);
printf("\n以%s为终止站台的公交车如下:\n",cc);
printf("\n-----------------------------------------------\n");
for(i=0;*a[i].num!='\0'&&i(%d)%s",j+1,a[i].b[j].c);
printf("\n\n");
}
}
printf("\n-----------------------------------------------\n\n");
printf("\t已全部显示完毕!!!\n");
if(m==0)
printf("\n\t没有公交车以该站点为起始站台\n");
break;
}
case'3':
{
printf("请输入您所要查询的途径站台名称:\n");
scanf("%s",cc);
printf("\n-----------------------------------------------\n");
for(i=0;*a[i].num!='\0'&&i(%d)%s",j+1,a[i].b[j].c);
printf("\n\n");
}
printf("\n-----------------------------------------------\n\n");
printf("\t已全部显示完毕!!!\n");
if(m==0)
printf("\n\t没有公交车以该站点为途径站台\n");
break;
}
case'4':
{
printf("\n\t\t按回车键返回查询菜单\n");
fflush(stdin);//清除键盘缓冲区
getchar();
system("cls");
return;//返回主菜单
}
fflush(stdin);//清除键盘缓冲区
getchar();
system("cls");
}
}
return;
}
voidsave()//信息保存函数
{
FILE*fp=NULL;
inti;
if((fp=fopen("bus.txt","w+"))==NULL)//以读写的方式打开名称为"bus"的文本文件
{
printf("文件打开错误!!!\n");
return;
}
fp=fopen("bus.txt","w+");
for(i=0;*a[i].num!='\0'&&ic)
{
printf("\n\t\t\t输入错误,请重新输入:");
fflush(stdin);//清除键盘缓冲区
a=getchar();
}
returna;
}
更多学习资料请关注专题《管理系统开发》。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。