C语言课程设计简易公交车管理系统数组实现Word文件下载.docx
- 文档编号:1550603
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:29
- 大小:20.86KB
C语言课程设计简易公交车管理系统数组实现Word文件下载.docx
《C语言课程设计简易公交车管理系统数组实现Word文件下载.docx》由会员分享,可在线阅读,更多相关《C语言课程设计简易公交车管理系统数组实现Word文件下载.docx(29页珍藏版)》请在冰点文库上搜索。
//菜单输入检测函数
/**************************宏定义声明************************************/
#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);
\n\t\t输入回车键继续\n"
);
fflush(stdin);
//清除键盘缓冲区
while
(1)
{
system("
cls"
mainmeun();
a=Test(getchar(),'
1'
'
6'
//菜单检测输入函数
switch(a)
{
case'
:
system("
add();
break;
2'
view();
3'
mod();
4'
del();
5'
find();
return0;
}
}
}
voidinit()//初始化函数
FILE*fp;
//文件指针
inti;
if((fp=fopen("
bus.txt"
"
r+"
))==NULL)//初次尝试打开"
文本文件
printf("
\n\t\t文件打开失败\n\n\t\t正在尝试创建新文件...\n"
fp=fopen("
w"
//创建"
if((fp=fopen("
))==NULL)//再次判断是否打开成功
printf("
\t\t文件创建失败!
!
\n"
return;
fp=fopen("
for(i=0;
i<
N;
i++)//将磁盘中的信息输出到内存中
if(fread(&
a[i],sizeof(structbus),1,fp)!
=1)
break;
fclose(fp);
\n\t\t初始化完成!
\n\n"
return;
voidadd()//信息录入函数
FILE*fp=NULL;
inti,j;
charcc[20];
i++)
if(*a[i].num!
='
\0'
)
continue;
else
\n添加第%d辆公交车路线记录:
i+1);
\n请输入路线编码(3位编码,第一位为大写字母,后两位为数字):
//路线编码
scanf("
%s"
cc);
for(j=0;
j<
j++)//检验是否重复
if(strcmp(a[j].num,cc)==0)
{
printf("
\n与已有路线编码重复,按回车键返回!
fflush(stdin);
getchar();
system("
return;
}
strcpy(a[i].num,cc);
\n请输入司机姓名:
"
a[i].name);
\n请输入途径站台总数(>
=2):
//站台总数
%d"
&
a[i].n);
if(a[i].n<
2||a[i].n>
12)
{
while(a[i].n<
\n站台总数应满足(2<
=n<
=12),请重新输入:
scanf("
}
a[i].n;
j++)
printf("
请输入第%d个站台名称:
j+1);
scanf("
a[i].b[j].c);
\n自动生成公交路线:
(1)%s"
a[i].b[0].c);
for(j=1;
---->
(%d)%s"
j+1,a[i].b[j].c);
\n\n请输入公交车的起始时间(格式为:
时:
分):
a[i].topen);
请输入公交车的终止时间(格式为:
a[i].tclose);
\n请输入公交车的票价:
a[i].money);
\n第%d辆公交车路线记录创建成功!
save();
\n\t按回车键返回!
fflush(stdin);
getchar();
system("
if(i==N)
\n\n\n\t空间已满,不能录入!
getchar();
voidview()//信息显示函数
inti,j,min;
structbust;
*a[i].num!
&
i++)//按“路线编号”用选择法排序
min=i;
for(j=i+1;
*a[j].num!
if(strcmp(a[i].num,a[j].num)>
0)
min=j;
t=a[i];
a[i]=a[min];
a[min]=t;
\n\n公交车信息库"
\n********************************************************************************\n"
\t路线编号:
%-6s\t单程票价:
%d元\t\t司机姓名:
%s\n"
a[i].num,a[i].money,a[i].name);
\t起始时间:
%-6s\t终止时间:
%-6s\t站台总数:
%d\n"
a[i].topen,a[i].tclose,a[i].n);
\t公交路线:
for(j=1;
(%d)%s"
\n\t\t公交车信息显示完毕!
\n\t\t输入回车键返回主菜单:
"
voidmod()//信息修改函数
inti,j,m=0;
chart,cc[20],mod[20];
请输入要修改信息的公交车路线编号:
scanf("
i++)//查找所输入的公交车
if(strcmp(a[i].num,cc)==0)
m=1;
\n\n\t\t已找到!
while
(1)
system("
\n\n正在修改的公交车信息\n"
\n-----------------------------------------------\n"
for(j=1;
\n-----------------------------------------------\n\n"
modmeun();
fflush(stdin);
t=Test(getchar(),'
switch(t)
case'
//修改路线编号
{
intk;
printf("
\n请输入新的公交车编号:
scanf("
mod);
for(k=0;
*a[k].num!
k<
k++)
{
if(strcmp(a[k].num,mod)==0)
{
printf("
与已有编号重复,按回车键返回主菜单\n"
fflush(stdin);
getchar();
system("
return;
}
}
strcpy(a[i].num,mod);
save();
break;
}
//修改车辆信息
\n请输入新的司机姓名:
\n请输入新的公交车票价:
//修改行车路线
voidmodnavimeun();
charz;
while
(1)
system("
modnavimeun();
fflush(stdin);
z=Test(getchar(),'
switch(z)
case'
//添加站点
{
if(a[i].n+1>
12)//判断是否满足条件
{
printf("
\n站台总数达到12个,无法添加新站点\n\n按回车键返回\n"
fflush(stdin);
getchar();
system("
return;
}
printf("
\n请输入需要添加第几个站点:
scanf("
k);
while(a[i].n+1<
k)
目前共%d个站点,无法添加第%d个站点\n请重新输入:
a[i].n,k);
scanf("
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];
\n请输入新添加的站点名称:
a[i].b[k-1].c);
save();
break;
}
//修改站点
\n请输入需要修改第几个站点:
\n请输入新的站点名称:
//删除站点
\n请输入需要删除第几个站点:
for(j=k-1;
a[i].b[j]=a[i].b[j+1];
a[i].n=a[i].n-1;
//重置路线
\n请输入新的途径站台总数(2<
=12):
while(a[i].n<
for(j=0;
请输入新的第%d个站台名称:
for(j=1;
//返回菜单
\n\t\t按回车键返回菜单\n"
fflush(stdin);
getchar();
system("
return;
//返回主菜单
//修改行车时间
\n\t\t按回车键返回主菜单\n"
fflush(stdin);
getchar();
system("
return;
if(m==0)
\n\n\t\t无此公交车信息!
\n\t\t按回车键返回\n"
voidmodmeun()//修改菜单
\n\t\t修改菜单"
\n\t\t********************************************"
\n\t\t*1、修改路线编号*"
\n\t\t*2、修改车辆信息*"
\n\t\t*3、修改行车路线*"
\n\t\t*4、修改行车时间*"
\n\t\t*5、返回到主菜单*"
\n\n\t\t请输入您的选择:
voidmodnavimeun()//路线修改菜单
\n\t\t路线修改菜单"
\n\t\t*1、站点添加*"
\n\t\t*2、站点修改*"
\n\t\t*3、站点删除*"
\n\t\t*4、路线重置*"
\n\t\t*5、返回菜单*"
voiddel()//
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 简易 公交车 管理 系统 数组 实现