为什么前面录入的信息保存不了

img


为什么我这个代码只能录入一本图书呢,第二次录入会把上一次的覆盖,是哪里出了问题呀,应该如何修改

你这 每次都是 修改的 books[0] 的数据,当然 会覆盖了
把完整代码发出来,帮你改改

#include<stdio.h> //预处理
#include<string.h>
#include<stdlib.h>
#include<conio.h>
//定义结构体
struct book {
    int id;
    char name[31];
    char author[27];
    char publish[31];
    int store;
    int total;
    int user[10];
    int days[10];
}
books[100];
int count=0;
//显示整体标题标题函数
void page_title(char *menu_item) {
    printf("\t\t图书馆管理系统\n\n-%s-\n\n",menu_item);
}
//等待返回函数
void return_confirm() {
    printf("\n请按任意键返回……\n");
    getch();
}
void book_add() {
    void page_title(char *menu_item);
    int i;
    system("cls");
    //清屏
    page_title("注册新书");
    printf("序号:");
    scanf("%d",&books[count].id);
    printf("书名:");
    scanf("%s",&books[count].name);
    printf("作者:");
    scanf("%s",&books[count].author);
    printf("出版社:");
    scanf("%s",&books[count].publish);
    printf("数量:");
    scanf("%d",&books[count].total);
    books[count].store=books[count].total;
    printf("\n");
    count++;
}
void book_show() {
    int i,flag=0;
    system("cls");
    for (i=0;i<100;i++) {
        if(strlen(books[i].publish)!=0) {
            printf("序号:%d\t ",books[i].id);
            printf("书名:%s\t ",books[i].name);
            printf("作者:%s\t ",books[i].author);
            printf("出版社:%s\t ",books[i].publish);
            printf("存数:%d\t",books[i].store);
            printf("总数:%d\n\n",books[i].total);
            flag=1;
        }
    }
    if(flag==0) {
        printf("还没有相关书籍\n");
    }
    getch();
}
int book_search() {
    int n,i,flag=0;
    char nam[30];
    system("cls");
    printf("请输入书名:");
    scanf("%s",&nam);
    for (i=0;i<100;i++) {
        if(strcmp(books[i].name,nam)==0) {
            printf("序号:%d\t ",books[i].id);
            printf("书名:%s\t ",books[i].name);
            printf("作者:%s\t ",books[i].author);
            printf("出版社:%s\t ",books[i].publish);
            printf("存数:%d\t",books[i].store);
            printf("总数:%d\n",books[i].total);
            n=i;
            flag=1;
            getch();
            break;
        }
    }
    if(flag==0) {
        printf("\n没有找到相关书籍\n");
        getch();
        return -1;
    }
    return n;
}
void book_edit() {
    int i,id_change;
    system("cls");
    page_title("修改图书信息:");
    printf("输入要修改的图书序号:");
    scanf("%d",&id_change);
    for (i=0;i<100;i++) {
        if(books[i].id==id_change) {
            printf("修改书名:");
            scanf("%s",&books[i].name);
            printf("修改作者:");
            scanf("%s",&books[i].author);
            printf("修改出版社:");
            scanf("%s",&books[i].publish);
            printf("修改数量:");
            scanf("%d",&books[i].total);
            printf("修改图书信息成功\n");
            books[i].store=books[i].total;
        }
    }
    printf("\n没有找到相关信息\n");
    getch();
}
int book_del() {
    int i,num,j;
    system("cls");
    page_title("删除图书");
    printf("输入所要删除的书的序号:");
    scanf("%d",&num);
    for (i=0;i<100;i++) {
        if(books[i].id==num) {
            for (j=i;j<100;j++) {
                books[j].id=books[j+1].id;
                strcpy(books[j].name,books[j+1].name);
                strcpy(books[j].publish,books[j+1].publish);
                printf("该书已经删除了!!!\n");
                getch();
                return i;
            }
        }
    }
    printf("未找到相关记录\n");
    getch();
    return -1;
}
//借书
void book_out() {
    void page_title(char *menu_item);
    int n,s,i,d;
    system("cls");
    page_title("借阅图书");
    n=book_search();
    if(n!=-1&&books[n].store>0) {
        //赋初值,全为零
        for (i=0;i<10;i++) {
            books[n].user[i]=0;
            books[n].days[i]=0;
        }
        printf("借书证序号:");
        scanf("%d",&s);
        printf("输入可借天数:");
        scanf("%d",&d);
        books[n].user[0]=s;
        books[n].days[0]=d;
        books[n].store--;
        //    书上这有何意义
        //    for(i=0;i<10;i++)
        //    {
        //    if(books[n].user[i]==0)
        //    {
        //    books[n].user[i]=0;
        //    books[n].days[i]=0;
        //    break;
        //    }
        //    books[n].store--;
        //    }
    } else if(n!=-1&&books[n].store==0) {
        printf("此书已经完全借完\n\n");
        getch();
    } else
       ;
    return_confirm();
}
//归还图书
void book_in() {
    int n,s,i;
    page_title("归还图书");
    n=book_search();
    printf("%d",n);
    if(n!=-1&&books[n].store<books[n].total) {
        printf("借阅图书证列表\n");
        for (i=0;i<10;i++) {
            if(books[n].user!=0) {
                printf("[%d]--%d天\n",books[n].user[i],books[n].days[i]);
            }
            printf("输入借书证号:");
            scanf("%d",&s);
            for (i=0;i<10;i++) {
                if(books[n].user[i]==s) {
                    books[n].store++;
                }
            }
        }
    }
    if(n!=-1&&books[n].store==books[n].total) {
        printf("全部归还\n");
    } else if(n!=-1&&books[n].store<books[n].total) {
        printf("归还成功\n");
    } else
       ;
    return_confirm();
}

void main() {
    menu:page_title("操作选单");
    system("cls");
    printf("用数字选择操作\n\n");
    printf("\t\t1图书信息录入\t\t2显示图书\n");
    printf("\t\t3查询图书信息\t\t4修改图书信息\n");
    printf("\t\t5删除图书\t\t6借阅图书\n");
    printf("\t\t7归还图书\t\t8退出系统\n");
    printf("请按数字键:\n");
    switch(getchar()) {
        case'1': book_add();
        break;
        case'2': book_show();
        break;
        case'3': book_search();
        break;
        case'4': book_edit();
        break;
        case'5': book_del();
        break;
        case'6': book_out();
        break;
        case'7': book_in();
        break;
        case'8': exit(0);
    }
    goto menu;
}

for i = 0; i < 1; i++
那写来写去都是写在book[0]里面
你应该定义一个全局变量
int bookcount = 0;
在add里面
scanf("%d", &book[bookcount].id);
... 下面类似
最后
bookcount++;