| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1767 人关注过本帖
标题:公交车管理系统文件无法读取,求助大佬,今晚要答辩,挺急的
取消只看楼主 加入收藏
有猫
Rank: 1
等 级:新手上路
帖 子:3
专家分:7
注 册:2020-6-23
结帖率:0
收藏
已结贴  问题点数:20 回复次数:1 
公交车管理系统文件无法读取,求助大佬,今晚要答辩,挺急的
#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函数,直接跳过了,我看见文件里面有我创建的数据,但是调用的时候一直无法显示,求助大佬啊啊啊啊啊啊
搜索更多相关主题的帖子: for name int printf scanf 
2020-06-23 14:48
有猫
Rank: 1
等 级:新手上路
帖 子:3
专家分:7
注 册:2020-6-23
收藏
得分:0 
    Error: value of 000000e94c3654c2 too large for field of 4 bytes at 0000000000000402
还有这个问题一直出现,大概理解却不知道怎么改
2020-06-23 15:09
快速回复:公交车管理系统文件无法读取,求助大佬,今晚要答辩,挺急的
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025923 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved