公交车管理系统文件无法读取,求助大佬,今晚要答辩,挺急的
#include<stdio.h>#include<stdlib.h>
#include<string.h>
#include<conio.h>
#define MAX 1000
#define MAXname 1000
typedef struct stations
{
char Name[MAX];
};
typedef struct bus
{
struct stations station[MAX];
char buscode[MAX];//记录公交车编号//
int stationsnum;
};
typedef struct city
{
struct stations cityname;
struct bus Bus[MAX];
struct stations busstation[MAX];
int busnum;
int stationnumber;
};
void save();
struct city adjlist[MAX];
struct stations stationname[MAX];
int citynum;
void mainMenu()
{
printf("\n");
printf("%*s",27,"");
printf("*********************欢迎使用城市公交咨询系统*********************\n");
printf("%*s",27,"");
printf("* *\n");
printf("%*s",27,"");
printf("* ------------------1: 显示全部站点信息 ------------------ *\n");
printf("%*s",27,"");
printf("* ------------------2: 新增公交站点 ------------------ *\n");
printf("%*s",27,"");
printf("* ------------------3: 修改公交站点 ------------------ *\n");
printf("%*s",27,"");
printf("* ------------------4: 删除公交站点 ------------------ *\n");
printf("%*s",27,"");
printf("* ------------------5: 新增公交线路 ------------------ *\n");
printf("%*s",27,"");
printf("* ------------------6: 调整公交线路 ------------------ *\n");
printf("%*s",27,"");
printf("* ------------------7: 查询公交线路 ------------------ *\n");
printf("%*s",27,"");
printf("* ------------------8: 查询站台信息 ------------------ *\n");
printf("%*s",27,"");
printf("* ------------------9: 添加城市 ------------------ *\n");
printf("%*s",27,"");
printf("* ------------------0: 输入初始数据 ------------------ *\n");
printf("%*s",27,"");
printf("* *\n");
printf("%*s",27,"");
printf("*******************请键入序号进行操作(′·ω·`)******************\n");
printf("%*s",27,"");
printf("\n请输入您的选择:\n");
}
int findstation(char *name,int m)//查找站台//
{
int i;
for(i=0;i<adjlist[m].stationnumber;i++)
if(strcmp(name,adjlist[m].busstation[i].Name)==0)
return i;
else printf("未找到该车站!\n");
return -1;
}
void init() //初始化函数
{
FILE *fp;
int i;
if((fp=fopen("bus.txt","r+"))==NULL)
{
printf("\n\t文件打开失败\n\t正在尝试创建新文件...\n");
fp=fopen("bus.txt","w");
if((fp=fopen("bus.txt","r+"))==NULL)
{
printf("\t\t文件创建失败!!!\n");
return;
}
}
fp=fopen("bus.txt","r+");
for(i=0;i<MAX;i++)
if(fread(&adjlist[i],sizeof(struct city),1,fp)!=1)
break;
fclose(fp);
printf("\n\t\t初始化完成!!!\n\n");
system("cls");
return;
}
int input()//向程序中输入数据//
{
FILE *fp=NULL;
int i,j,k,n;
printf("\n请输入城市序号:");
scanf("%d",&citynum);
for(n=0;n<citynum;n++)
{
printf("\n请输入城市名称:");
scanf("%s",&adjlist[n].cityname);
printf("\n请输入城市的公交站数量:");
scanf("%d",&adjlist[n].stationnumber);
printf("\n按路线划分,该城市不同种公交车数量:");
scanf("%d",&adjlist[n].busnum);
getchar();
printf("\n输入城市公交站:\n");
for(i=0;i<adjlist[n].stationnumber;i++)
{
scanf("%s",&adjlist[n].busstation);
}
for(i=0;i<adjlist[n].busnum;i++)
{
printf("\n输入公交编号:");
scanf("%s",&adjlist[n].Bus[i].buscode);
printf("\n%s路公交车站台数量:",adjlist[n].Bus[i].buscode);
scanf("%d",&adjlist[n].Bus[i].stationsnum);
printf("\n公交车线路为:");
for(j=0;j<adjlist[n].Bus[i].stationsnum;j++)
{
scanf("%s",&adjlist[n].Bus[i].station[j]);
}
}
save();
fflush(stdin);
getchar();
system("cls");
return 0; }
}
void save()
{
FILE *fp;
int i;
if((fp=fopen("bus.txt","w+"))==NULL)
{
printf("\n文件打开错误!");
return;
}
fp=fopen("bus.txt","w+");
for(i=0;i<citynum;i++) //将内存中的数据输出到磁盘中
if(fwrite(&adjlist[i],sizeof(struct city),1,fp)!=1)
break;
printf("\n保存成功\n");
fclose(fp);
}
void addcity()
{
char name[MAX];
citynum++;
printf("\n请输入城市名称:");
scanf("%s",&adjlist[citynum].cityname);
save();
printf("\n按回车键返回\n");
getchar();
system("cls");
}
void showstation(int m)
{
int i;
for(i=0;i<adjlist[m].stationnumber;i++)
{
printf("%d、%c",i+1,adjlist[m].busstation[i]);
}
printf("\n按回车键返回\n");
fflush(stdin);
getchar();
}
void addstation(int m)
{
char name[MAX];
printf("\n添加站点名称:");
scanf("%s",&name);
strcpy(adjlist[m].busstation[adjlist[m].stationnumber].Name,name);
adjlist[m].stationnumber++;
save();
printf("\n按回车键返回\n");
getchar();
system("cls");
}
void delstation(int m)
{
char name[MAX];
printf("\n删除站点名称:");
scanf("%s",&name);
int stationcode,i,j,k=0;
stationcode=findstation(name,m);
adjlist[m].stationnumber--;
for(i=stationcode;i<adjlist[m].stationnumber;i++)
{
strcpy(adjlist[m].busstation[i].Name,adjlist[m].busstation[i+1].Name);
for(j=0;j<adjlist[m].stationnumber;j++)
{
if(strcmp(adjlist[m].Bus[i].station[j].Name,name)==0)
{
for(k=j;k<adjlist[m].stationnumber;k++)
strcpy(adjlist[m].Bus[i].station[k].Name,adjlist[m].Bus[i].station[k+1].Name);
}
}
}
save();
printf("\n按回车键返回\n");
getchar();
}
void adjuststation(int m)
{
char oldname[MAX],newname[MAX];
printf("\n更名站点原名:");
scanf("%s",&oldname);
printf("\n更名站点新名:");
scanf("%s",&newname);
int stationcode,i,j,k=0;
stationcode=findstation(oldname,m);
for(i=stationcode;i<adjlist[m].stationnumber;i++)
{
for(j=0;j<adjlist[m].stationnumber;j++)
{
if(strcmp(adjlist[m].Bus[i].station[j].Name,oldname)==0)
{
strcpy(adjlist[m].Bus[i].station[k].Name,newname);
}
}
}
save();
printf("\n按回车键返回\n");
getchar();
system("cls");
}
int addbus(int m)
{
char code[MAX];
printf("\n新增公交车编号:");
scanf("%s",&code);
int i,j,k;
strcpy(adjlist[m].Bus[adjlist[m].busnum].buscode,code);
adjlist[m].busnum++;
printf("\n请输入新增公交的站台个数:");
scanf("%d",&adjlist[m].Bus[adjlist[m].busnum].stationsnum);
printf("请输入新增公交线路:");
for(i=0;i<adjlist[m].Bus[adjlist[m].busnum].stationsnum;i++)
{
printf("\n请输入第%d个站台名称:",i+1);
scanf("%s",&adjlist[m].Bus[adjlist[m].busnum].station[i]);
}
printf("生成新的公交线路:");
for(i=0;i<adjlist[m].Bus[adjlist[m].busnum].stationsnum;i++)
{
printf("%d、%s",i+1,adjlist[m].Bus[adjlist[m].busnum].station[i]);
}
save();
printf("\n按回车键返回\n");
getchar();
system("cls");
}
void adjustmenu()
{
printf("\n*********************调整公交线路*********************\n");
printf("\n* -------------1: 添加站点 --------------- *");
printf("\n* -------------2: 删除站点 --------------- *");
printf("\n* -------------3: 修改站点 --------------- *");
printf("\n*************请键入序号进行操作(′·ω·`)**************");
printf("\n请输入您的选择:");
}
void adjustroute(int m)
{
char code[MAX];
printf("\n进行调整的公交车编号:");
scanf("%s",&code);
int i,k,n;
char t;
char name[MAX];
for(i=0;i<adjlist[m].busnum;i++)
{
if(strcmp(adjlist[m].Bus[i].buscode,code)==0)
k=i;
}
printf("\n该公交原路线为:\n");
for(i=0;i<adjlist[m].Bus[k].stationsnum;i++)
printf("%d、%s",i+1,adjlist[m].Bus[k].station[i]);
system("cls");
adjustmenu();
scanf("%s",&t);
switch(t)
{
case '1':
{
printf("\n请输入添加位置及新的站点名称:");
scanf("%d %s",&n,&name);
adjlist[m].Bus[k].stationsnum++;
for(i=adjlist[m].Bus[k].stationsnum-1;i>n;i--)
{
strcpy(adjlist[m].Bus[k].station[i].Name,adjlist[m].Bus[k].station[i-1].Name);
}
strcpy(adjlist[m].Bus[k].station[n].Name,name);
save();
break;
}
case '2':
{
printf("\n请输入删除站点的序号:");
scanf("%d",&n);
for(i=n;i<adjlist[m].Bus[k].stationsnum;i++)
strcpy(adjlist[m].Bus[k].station[i].Name,adjlist[m].Bus[k].station[i+1].Name);
adjlist[m].Bus[k].stationsnum--;
save();
break;
}
case '3':
{
printf("\n请输入修改站点的序号及新名称:");
scanf("%d %s",&n,&name);
strcpy(adjlist[m].Bus[k].station[n].Name,name);
save();
break;
}
system("cls");
}
printf("\n该公交新路线为:\n");
for(i=0;i<adjlist[m].Bus[k].stationsnum;i++)
printf("%d、%s",i+1,adjlist[m].Bus[k].station[i]);
save();
printf("\n按回车键返回\n");
getchar();
system("cls");
}
void inquirebus(int m)
{
char code[MAX];
printf("\n进行查询的公交车编号:");
scanf("%s",&code);
int i,k;
for(i=0;i<adjlist[m].busnum;i++)
{
if(strcmp(adjlist[m].Bus[i].buscode,code)==0)
k=i;
}
printf("\n该公交路线为:\n");
for(i=0;i<adjlist[m].Bus[k].stationsnum;i++)
printf("%d、%s",i+1,adjlist[m].Bus[k].station[i]);
printf("\n按回车键返回\n");
getchar();
system("cls");
}
void inquirestation(int m)
{
char name[MAX];
printf("\n查询的公交站名称:");
scanf("%s",&name);
int i,j;
printf("\n在%c停留的公交车有:");
for(i=0;i<adjlist[m].busnum;i++)
{
for(j=0;j<adjlist[m].Bus[i].stationsnum;j++)
{
if(strcmp(adjlist[m].Bus[i].station[j].Name,name)==0)
printf(" %c ",adjlist[m].Bus[i].buscode);
}
}
printf("\n按回车键返回\n");
getchar();
system("cls");
}
int main()
{
int m,i;
int command;
while(1)
{
system("cls");
mainMenu();
scanf("%d",&command);
system("cls");
for(i=0;i<citynum;i++)
printf("%d、%s",i+1,adjlist[i].cityname);
printf("\n请选择城市:");
scanf("%d",&m);
if(m==0) system("cls");
system("cls");
if(command>=0&&command<=9)
{
switch(command)
{
case 1: system("cls");showstation(m);break;
case 2: system("cls");addstation(m);break;
case 3: system("cls");adjuststation(m);break;
case 4: system("cls");delstation(m);break;
case 5: system("cls");addbus(m);break;
case 6: system("cls");adjustroute(m);break;
case 7: system("cls");inquirebus(m);break;
case 8: system("cls");inquirestation(m);break;
case 9: system("cls");addcity();break;
case 0: system("cls");init();input();break;
}
}
}
return 0;
}
初始数据录入的时候就无法使用save函数,直接跳过了,我看见文件里面有我创建的数据,但是调用的时候一直无法显示,求助大佬啊啊啊啊啊啊