C语言课程设计简易公交车管理系统数组实现.docx

上传人:b****1 文档编号:17639634 上传时间:2023-04-24 格式:DOCX 页数:29 大小:20.86KB
下载 相关 举报
C语言课程设计简易公交车管理系统数组实现.docx_第1页
第1页 / 共29页
C语言课程设计简易公交车管理系统数组实现.docx_第2页
第2页 / 共29页
C语言课程设计简易公交车管理系统数组实现.docx_第3页
第3页 / 共29页
C语言课程设计简易公交车管理系统数组实现.docx_第4页
第4页 / 共29页
C语言课程设计简易公交车管理系统数组实现.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

C语言课程设计简易公交车管理系统数组实现.docx

《C语言课程设计简易公交车管理系统数组实现.docx》由会员分享,可在线阅读,更多相关《C语言课程设计简易公交车管理系统数组实现.docx(29页珍藏版)》请在冰豆网上搜索。

C语言课程设计简易公交车管理系统数组实现.docx

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

if(fread(&a[i],sizeof(structbus),1,fp)!

=1)

break;

fclose(fp);

printf("\n\t\t初始化完成!

!

!

\n\n");

return;

}

voidadd()//信息录入函数

{

FILE*fp=NULL;//文件指针

inti,j;

charcc[20];

for(i=0;i

{

if(*a[i].num!

='\0')

continue;

else

{

printf("\n添加第%d辆公交车路线记录:

\n",i+1);

printf("\n请输入路线编码(3位编码,第一位为大写字母,后两位为数字):

\n");//路线编码

scanf("%s",cc);

for(j=0;j

if(strcmp(a[j].num,cc)==0)

{

printf("\n与已有路线编码重复,按回车键返回!

!

!

\n");

fflush(stdin);//清除键盘缓冲区

getchar();

system("cls");

return;

}

strcpy(a[i].num,cc);

printf("\n请输入司机姓名:

");//司机姓名

scanf("%s",a[i].name);

printf("\n请输入途径站台总数(>=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

{

printf("请输入第%d个站台名称:

",j+1);//站台名称

scanf("%s",a[i].b[j].c);

}

printf("\n自动生成公交路线:

(1)%s",a[i].b[0].c);

for(j=1;j

{

printf("---->(%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

{

min=i;

for(j=i+1;*a[j].num!

='\0'&&j

if(strcmp(a[i].num,a[j].num)>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

{

printf("\t路线编号:

%-6s\t单程票价:

%d元\t\t司机姓名:

%s\n",a[i].num,a[i].money,a[i].name);

printf("\t起始时间:

%-6s\t终止时间:

%-6s\t站台总数:

%d\n",a[i].topen,a[i].tclose,a[i].n);

printf("\t公交路线:

(1)%s",a[i].b[0].c);

for(j=1;j

printf("---->(%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

{

if(strcmp(a[i].num,cc)==0)

{

m=1;

printf("\n\n\t\t已找到!

!

!

\n");

while

(1)

{

system("cls");

printf("\n\n正在修改的公交车信息\n");

printf("\n-----------------------------------------------\n");

printf("\t路线编号:

%-6s\t单程票价:

%d元\t\t司机姓名:

%s\n",a[i].num,a[i].money,a[i].name);

printf("\t起始时间:

%-6s\t终止时间:

%-6s\t站台总数:

%d\n",a[i].topen,a[i].tclose,a[i].n);

printf("\t公交路线:

(1)%s",a[i].b[0].c);

for(j=1;j

printf("---->(%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

{

if(strcmp(a[k].num,mod)==0)

{

printf("与已有编号重复,按回车键返回主菜单\n");

fflush(stdin);//清除键盘缓冲区

getchar();

system("cls");

return;

}

}

strcpy(a[i].num,mod);

save();

break;

}

case'2':

//修改车辆信息

{

printf("\n请输入新的司机姓名:

");

scanf("%s",a[i].name);

printf("\n请输入新的公交车票价:

");

scanf("%d",&a[i].money);

save();

break;

}

case'3':

//修改行车路线

{

voidmodnavimeun();//路线修改菜单

intk;

charz;

while

(1)

{

system("cls");

modnavimeun();

fflush(stdin);//清除键盘缓冲区

z=Test(getchar(),'1','5');//菜单检测输入函数

system("cls");

switch(z)

{

case'1':

//添加站点

{

if(a[i].n+1>12)//判断是否满足条件

{

printf("\n站台总数达到12个,无法添加新站点\n\n按回车键返回\n");

fflush(stdin);//清除键盘缓冲区

getchar();

system("cls");

return;

}

printf("\n请输入需要添加第几个站点:

");

scanf("%d",&k);

while(a[i].n+1

{

printf("目前共%d个站点,无法添加第%d个站点\n请重新输入:

",a[i].n,k);

scanf("%d",&k);

printf("\n");

}

a[i].n=a[i].n+1;

for(j=a[i].n;j>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;j

{

a[i].b[j]=a[i].b[j+1];

}

a[i].n=a[i].n-1;

save();

break;

}

case'4':

//重置路线

{

printf("\n请输入新的途径站台总数(2<=n<=12):

");

scanf("%d",&a[i].n);

printf("\n");

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

{

printf("请输入新的第%d个站台名称:

",j+1);

scanf("%s",a[i].b[j].c);

}

printf("\t公交路线:

(1)%s",a[i].b[0].c);

for(j=1;j

printf("---->(%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()//

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 小升初

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1