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'&&i 0) 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'&&k 12)//判断是否满足条件 { printf("\n站台总数达到12个,无法添加新站点\n\n按回车键返回\n"); fflush(stdin);//清除键盘缓冲区 getchar(); system("cls"); return; } printf("\n请输入需要添加第几个站点:"); scanf("%d",&k); while(a[i].n+1 k-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'&&i c) { printf("\n\t\t\t输入错误,请重新输入:"); fflush(stdin);//清除键盘缓冲区 a=getchar(); } returna; }
更多学习资料请关注专题《管理系统开发》。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。