C语言课程设计简易公交车管理系统数组实现.docx
- 文档编号:17639634
- 上传时间:2023-04-24
- 格式:DOCX
- 页数:29
- 大小:20.86KB
C语言课程设计简易公交车管理系统数组实现.docx
《C语言课程设计简易公交车管理系统数组实现.docx》由会员分享,可在线阅读,更多相关《C语言课程设计简易公交车管理系统数组实现.docx(29页珍藏版)》请在冰豆网上搜索。
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);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 简易 公交车 管理 系统 数组 实现
![提示](https://static.bdocx.com/images/bang_tan.gif)