实在改不对了,刚开始学。


#include"stdio.h"
#include
#include
#include
void load();
void save();
void input();
void search();
void menu();
void search_name();
void search_writer();
void search_press();
void search_year();
int search_isbn();
void xiugai();
void add();
void shuchu();
void revise(int k);
void deletel(int k);
unsigned long suiji();
int M=0;
struct employee
{
    char name[20];
    char writer[20];
    unsigned long isbn;
    char press[20];
    int year;
    double price;
    char place[20];
};
struct employee emp[1000];
void menu()
{
    int a;
    while(1)
    {
        printf("==================图书信息管理系统==================\n");
        printf("  \t1.录入图书信息                       2.图书信息浏览\n");
        printf("  \t3.图书查询                           4.修改和删除图书信息\n");
        printf("  \t5.添加图书信息                       6.退出系统\n");
        printf("====================================================\n");
        printf("                请选择,输入1-键:                   ");
        scanf("%d",&a);
        switch(a)
        {
            case 1:input();break;
            case 2:shuchu();break;
            case 3:search();break;
            case 4:xiugai();break;
            case 5:add();break;
            case 6:exit(0);break;
            default:printf("\n非法操作!\n"); 
        } 
        system("pause");
        system("cls");
    }
}

void input()
{
    int i,j;
    printf("\n     欢迎进入录入图书信息\n");
    printf("===========================================\n");
    printf("\n输入要添加的图书的本数:");
    for(i=0;i<10;i++)
    {
        scanf("%d",&j);
        if(j<1000)
        {
            break;
        }
        printf("该系统只能存放1000本以内的信息,请重新输入\n");
        
     } 
     if(i==10)
     {
         printf("输入的本数超过范围\n");
         exit(0);
     }
     for(i=0;iprintf("请输入第%d本图书的书名:",i+1);
         scanf("%s",emp[i].name);
         printf("请输入第%d本图书的作者:",i+1);
         scanf("%s",emp[i].writer);
         printf("请输入第%d本图书的出版单位:",i+1);
         scanf("%s",emp[i].press);
         printf("请输入第%d本图书的出版年份:",i+1);
         scanf("%d",&emp[i].year);
         printf("请输入第%d本图书的价格:",i+1);
         scanf("%f",&emp[i].price);
        printf("请输入第%d本图书的位置:",i+1);
        scanf("%s",emp[i].place);
        emp[i].isbn=suiji();
        printf("该图书的isbn号被系统定义为:%1u\n",emp[i].isbn);  
     }
     M=j;
     save();
}
void save()
{
    FILE *fp;
    int i;
    if((fp=fopen("employee.txt","wb"))==NULL)
    {
        printf("Can not open the file!\n");
        exit(0);
    }
    for(i=0;ifwrite(&emp[i],sizeof(struct employee),1,fp);
    fclose(fp);
    printf("文件写入操作成功!\n");    
}
void load()
{
    FILE *fp;
    int i;
    if((fp=fopen("enployee.txt","rb"))==NULL)
    {
        printf("Can not open the file!\n");
        exit(0);
    }
    for(i=0;!feof(fp);i++)
        fread(&emp[i],sizeof(struct employee),1,fp);
    fclose(fp);
    M=i-1;    
}
unsigned long suiji()
{
    unsigned long h;
    srand(time (NULL));
    h=rand()%1000+2018000;
    return h;
}
void search()
{

    int b;
    printf("\t\t欢迎图书查询模块\n");
    printf("----------------------------------------------------------\n");
    printf("  1.按书名查询  2.按作者查询  3.按出版社查询  4.按年份查询  5.按isbn号查询\n");
    printf("输入您需要的查询方式:");
    scanf("%d",&b);
    switch(b)
    {
        case 1:search_name();break;
        case 2:search_writer();break;
        case 3:search_press();break;
        case 4:search_year();break;
        case 5:search_isbn();break;
        default:printf("\n非法操作!\n");
    }
}
void search_name()
{
    int i,j=0;
    char c1[10];
    load;
    printf("请输入你需要查找的书名:");
    getchar();
    gets(c1);
    for(i=0;iif(strcmp(c1,emp[i].name)==0)
        {
            if(j==0)
            {
                printf("=======================图书相关信息=====================\n");
                printf("序列  书名  作者  IBSN号  出版单位  出版年份  价格  位置\n");
            }
            printf("%2d",j+i);
            printf("%10s",emp[i].name);
            printf("%10s",emp[i].writer);
            printf("51u",emp[i].isbn);
            printf("%10s",emp[i].press);
            printf("%6d",emp[i].year);
            printf("%f",emp[i].price);
            printf("%10s",emp[i].place);
            printf("\n");
            j++;
        }
    if(j==0)
        printf("没有查找到此图书!!!\n"); 
}
void search_writer()
{
    int i,j=0;
    char c1[10];
    load();
    printf("请输入您需要查找的作者:");
    getchar();
    gets(c1);
    for(i=0;iif(strcmp(c1,emp[i].writer)==0)
        {
            if(j==0)
            {
                printf("=======================图书相关信息=====================\n");
                printf("序列  书名  作者  IBSN号  出版单位  出版年份  价格  位置\n");
            }
            printf("%2d",j+1);
            printf("%10s",emp[i].name);
            printf("%10s",emp[i].writer);
            printf("51u",emp[i].isbn);
            printf("%10s",emp[i].press);
            printf("%6d",emp[i].year);
            printf("%f",emp[i].price);
            printf("%10s",emp[i].place);
            printf("\n");
            j++;
        }
    if(j==0)
        printf("没有查找到此图书!!!\n"); 
}
void search_press()
{
    int i,j=0;
    char c1[10];
    load();
    printf("请输入您需要查找的出版社:");
    getchar();
    gets(c1);
    for(i=0;iif(strcmp(c1,emp[i].press)==0)
        {
            if(j==0)
            {
                printf("======================图书相关信息======================\n");
                printf("序列  书名  作者  IBSN号  出版单位  出版年份  价格  位置\n");
            }
            printf("%2d",j+1);
            printf("%10s",emp[i].name);
            printf("%10s",emp[i].writer);
            printf("51u",emp[i].isbn);
            printf("%10s",emp[i].press);
            printf("%6d",emp[i].year);
            printf("%f",emp[i].price);
            printf("%10s",emp[i].place);
            printf("\n");
            j++;
        }
    if(j==0)
        printf("没有查找到此图书!!!\n"); 
}
void search_year()
{
    int i,j=0,k;
    load();
    int s;
    printf("请输入查找的年份:");
    scanf("%d",&s);
    for(i=0;iif(s==emp[i].year)
        {
            
            
            printf("======================图书相关信息======================\n");
            printf("序列  书名  作者  IBSN号  出版单位  出版年份  价格  位置\n");
            k=i;
            printf("%2d",j+1);
            printf("%10s",emp[i].name);
            printf("%10s",emp[i].writer);
            printf("51u",emp[i].isbn);
            printf("%10s",emp[i].press);
            printf("%6d",emp[i].year);
            printf("%f",emp[i].price);
            printf("%10s",emp[i].place);
            printf("\n");
            j++;
            break;
        }
    if(j==0)
        printf("没有查找到此图书!!!\n");  
}
int search_isbn()
{
    load();
    int i,j=0,k;
    unsigned long n;
    printf("输入您需要查找的isbn号:");
    scanf("%1u",&n);
    for(i=0;iif(n==emp[i].isbn)
        {
            printf("======================图书相关信息======================\n");
            printf("序列  书名  作者  IBSN号  出版单位  出版年份  价格  位置\n");
            k=i;
            printf("%2d",j+1);
            printf("%10s",emp[i].name);
            printf("%10s",emp[i].writer);
            printf("51u",emp[i].isbn);
            printf("%10s",emp[i].press);
            printf("%6d",emp[i].year);
            printf("%f",emp[i].price);
            printf("%10s",emp[i].place);
            printf("\n");
            j++;
            break;
        }
        if(j==0)
        {
            printf("该isbn号不存在\n");
            k=-1;
        }
        return k;
}
void xiugai()
{
    int choice;
    printf("============欢迎进入信息修改模块=========\n");
    load();
    int k=search_isbn();
    if(k!=-1)
    {
        printf("1.删除信息   2.修改信息\n");
        printf("请输入您的选着\n");
        scanf("%d",&choice);
        switch(choice)
        {
            case 1:deletel(k);break;
            case 2:revise(k);break;
            default:printf("\n非法操作!\n");break; 
        }
    }
    else
    {
        printf("没有查找到您需要修改的的图书信息\n");
    }
}
void deletel(int k)
{
    char c1;
    int i;
    printf("确认删除?是输入y或Y,退出程序请按其它任意键\n");
    getchar();
    scanf("%c",&c1);
    if(c1=='Y'||c1=='y')
    {
        for(i=k;i-1;i++)
            emp[i]=emp[i+1];
        M=M-1;
        save();
        printf("删除成功\n");
    }
    else
        exit(0);
}
void revise(int z)
{
    char c2;
    int i=z;
    printf("请输入该图书的书名:\n");
    scanf("%s",emp[i].name);
    printf("请输入该图书的作者:\n");
    scanf("%s",emp[i].writer);
    printf("请输入该图书的出版单位:\n");
    scanf("%s",emp[i].press);
    printf("请输入该图书的出版年份:\n");
    scanf("%d",&emp[i].year);
    printf("请输入该图书的价格:\n");
    scanf("%f",&emp[i].price); 
    printf("请输入该图书的位置:\n");
    scanf("%s",emp[i].place);
    printf("确认删除?是输入y或Y,退出程序请按其它任意键\n");
    getchar();
    scanf("%c",&c2);
    if(c2=='y'||c2=='Y')
        save();
    else
        exit(0);
}
void add()
{
    load();
    int m,i,j;
    printf("===========进入添加信息模块===========\n");
    for(i=0;i<10;i++)
    {
        printf("请输入您需要添加的本书\n");
        scanf("%d",&j);
        if(j<1000-M)
        {
            m=j;
            break;
        }
        printf("该系统只能存放1000本以内的信息,剩余的%d本的空间,请重新输入\n",1000-M);
    }
    if(i==10)
    {
        printf("输入的本书超过范围\n");
        exit(0);
    }
    M=M+m;
    for(i=0;iprintf("请输入第%d本图书的书名:",i+1);
         scanf("%s",emp[i].name);
         printf("请输入第%d本图书的作者:",i+1);
         scanf("%s",emp[i].writer);
         printf("请输入第%d本图书的出版单位:",i+1);
         scanf("%s",emp[i].press);
         printf("请输入第%d本图书的出版年份:",i+1);
         scanf("%d",&emp[i].year);
         printf("请输入第%d本图书的价格:",i+1);
         scanf("%f",&emp[i].price);
        printf("请输入第%d本图书的位置:",i+1);
        scanf("%s",emp[i].place);
    }
    save();
}
void shuchu()
{
    load();
    int i;
 printf("---------------------------------------------------------\n");
    printf("                      图书相关信息                       \n");
 printf("---------------------------------------------------------\n");
    printf("序列  书名  作者  IBSN号  出版单位  出版年份  价格  位置\n");
    for(i=0;iprintf("%2d",i+i);
        printf("%10s",emp[i].name);
        printf("%10s",emp[i].writer);
        printf("51u",emp[i].isbn);
        printf("%10s",emp[i].press);
        printf("%6d",emp[i].year);
        printf("%f",emp[i].price);
        printf("%10s",emp[i].place);
        printf("\n");    
    }
}

首先要学会调试

  • 请看👉 :指针指向数组的初始化。
  • 除此之外, 这篇博客: 总结近期所学中的 循环建议 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 如果程序必须执行一次,就选择do…while
    如果不确定系统要执行的次数可以使用for语句

修改完善如下,供参考:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define MaxN 1000
void load();
void save();
void input();
void search();
void search_name();
void search_writer();
void search_press();
void search_year();
int  search_isbn();
void xiugai();
void add();
void shuchu();
void revise(int k);
void deletel(int k);
unsigned long suiji();
int M = 0;
struct employee
{
    char   name[20];
    char   writer[20];
    unsigned long isbn;
    char   press[20];
    int    year;
    double price;
    char   place[20];
};
struct employee emp[MaxN];
void main()         //menu() 
{
    int a;
    load();
    while (1)
    {
        printf("==================图书信息管理系统==================\n");
        printf("  \t1.录入图书信息                       2.图书信息浏览\n");
        printf("  \t3.图书查询                           4.修改和删除图书信息\n");
        printf("  \t5.添加图书信息                       6.退出系统\n");
        printf("====================================================\n");
        printf("                请选择,输入1-键:                   ");
        scanf("%d", &a);
        switch (a)
        {
        case 1:input(); break;
        case 2:shuchu(); break;
        case 3:search(); break;
        case 4:xiugai(); break;
        case 5:add(); break;
        case 6:save(); exit(0); break;
        default:printf("\n非法操作!\n");
        }
        system("pause");
        system("cls");
    }
}

void input()
{
    int i, j;
    if (M >= MaxN) {
        printf("数据库已满,不能再添加数据.\n");
        return;
    }
    printf("\n     欢迎进入录入图书信息\n");
    printf("===========================================\n");
    printf("\n输入要添加的图书的本数:");
    do {
        scanf("%d", &j);
        if (j + M > MaxN)
            printf("该系统只能存放%d本以内的信息,请重新输入.\n", MaxN - M);
    } while (j + M > MaxN);

    for (i = M; i < j + M; i++)
    {
        printf("请输入第%d本图书的书名:", i + 1);
        scanf("%s", emp[i].name);
        printf("请输入第%d本图书的作者:", i + 1);
        scanf("%s", emp[i].writer);
        printf("请输入第%d本图书的出版单位:", i + 1);
        scanf("%s", emp[i].press);
        printf("请输入第%d本图书的出版年份:", i + 1);
        scanf("%d", &emp[i].year);
        printf("请输入第%d本图书的价格:", i + 1);
        scanf("%lf", &emp[i].price);
        printf("请输入第%d本图书的位置:", i + 1);
        scanf("%s", emp[i].place);
        emp[i].isbn = suiji();
        printf("该图书的isbn号被系统定义为:%1u\n", emp[i].isbn);
    }
    M += j;
}
void save()
{
    FILE* fp;
    int i;
    if ((fp = fopen("employee.txt", "wb")) == NULL)
    {
        printf("Can not open the file!\n");
        exit(0);
    }
    for (i = 0; i < M; i++)
        fwrite(&emp[i], sizeof(struct employee), 1, fp);
    fclose(fp);
    printf("文件保存操作成功!\n");
}
void load()
{
    FILE* fp;
    int i;
    if ((fp = fopen("employee.txt", "rb")) == NULL)  //"enployee.txt"
    {
        printf("Can not open the file!\n");
        return;   
    }
    for (i = 0; ; i++)
        if (fread(&emp[i], sizeof(struct employee), 1, fp) != 1)  break;
    fclose(fp);
    M = i;
}
unsigned long suiji()
{
    unsigned long h;
    srand((unsigned int)time(NULL));
    h = rand() % 1000 + 2018000;
    return h;
}
void search()
{
    int b;
    printf("\t\t欢迎图书查询模块\n");
    printf("----------------------------------------------------------\n");
    printf("  1.按书名查询  2.按作者查询  3.按出版社查询  4.按年份查询  5.按isbn号查询\n");
    printf("输入您需要的查询方式:");
    scanf("%d", &b);
    switch (b)
    {
    case 1:search_name();   break;
    case 2:search_writer(); break;
    case 3:search_press();  break;
    case 4:search_year();   break;
    case 5:search_isbn();   break;
    default:printf("\n非法操作!\n"); break;
    }
}
void search_name()
{
    int i, j = 0;
    char c1[10];
    printf("请输入你需要查找的书名:");
    getchar();
    gets(c1);
    for (i = 0; i < M; i++)
        if (strcmp(c1, emp[i].name) == 0)
        {
            if (j == 0)
            {
                printf("=======================图书相关信息=====================\n");
                printf("序列  书名  作者  IBSN号  出版单位  出版年份  价格  位置\n");
            }
            printf("%2d",  i + 1);
            printf("%10s", emp[i].name);
            printf("%10s", emp[i].writer);
            printf("%1u",  emp[i].isbn);
            printf("%10s", emp[i].press);
            printf("%6d",  emp[i].year);
            printf("%f",   emp[i].price);
            printf("%10s", emp[i].place);
            printf("\n");
            j++;
        }
    if (j == 0)
        printf("没有查找到此图书!!!\n");
}
void search_writer()
{
    int i, j = 0;
    char c1[10];
    printf("请输入您需要查找的作者:");
    getchar();
    gets(c1);
    for (i = 0; i < M; i++)
        if (strcmp(c1, emp[i].writer) == 0)
        {
            if (j == 0)
            {
                printf("=======================图书相关信息=====================\n");
                printf("序列  书名  作者  IBSN号  出版单位  出版年份  价格  位置\n");
            }
            printf("%2d",  i + 1);
            printf("%10s", emp[i].name);
            printf("%10s", emp[i].writer);
            printf("%1u",  emp[i].isbn);
            printf("%10s", emp[i].press);
            printf("%6d",  emp[i].year);
            printf("%f",   emp[i].price);
            printf("%10s", emp[i].place);
            printf("\n");
            j++;
        }
    if (j == 0)
        printf("没有查找到此图书!!!\n");
}
void search_press()
{
    int i, j = 0;
    char c1[10];
    printf("请输入您需要查找的出版社:");
    getchar();
    gets(c1);
    for (i = 0; i < M; i++)
        if (strcmp(c1, emp[i].press) == 0)
        {
            if (j == 0)
            {
                printf("======================图书相关信息======================\n");
                printf("序列  书名  作者  IBSN号  出版单位  出版年份  价格  位置\n");
            }
            printf("%2d",  i + 1);
            printf("%10s", emp[i].name);
            printf("%10s", emp[i].writer);
            printf("%1u",  emp[i].isbn);
            printf("%10s", emp[i].press);
            printf("%6d",  emp[i].year);
            printf("%f",   emp[i].price);
            printf("%10s", emp[i].place);
            printf("\n");
            j++;
        }
    if (j == 0)
        printf("没有查找到此图书!!!\n");
}
void search_year()
{
    int i, j = 0, k;
    int s;
    printf("请输入查找的年份:");
    scanf("%d", &s);
    for (i = 0; i < M; i++)
        if (s == emp[i].year)
        {
            if (j == 0) {
                printf("======================图书相关信息======================\n");
                printf("序列  书名  作者  IBSN号  出版单位  出版年份  价格  位置\n");
            }
            printf("%2d",  i + 1);
            printf("%10s", emp[i].name);
            printf("%10s", emp[i].writer);
            printf("%1u",  emp[i].isbn);
            printf("%10s", emp[i].press);
            printf("%6d",  emp[i].year);
            printf("%f",   emp[i].price);
            printf("%10s", emp[i].place);
            printf("\n");
            j++;
        }
    if (j == 0)
        printf("没有查找到此图书!!!\n");
}
int search_isbn()
{
    int i, j = 0, k = -1;
    unsigned long n;
    printf("输入您需要查找的isbn号:");
    scanf("%lu", &n);
    for (i = 0; i < M; i++)
        if (n == emp[i].isbn)
        {
            printf("======================图书相关信息======================\n");
            printf("序列  书名  作者  IBSN号  出版单位  出版年份  价格  位置\n");
            k = i;
            printf("%2d",  i + 1);
            printf("%10s", emp[i].name);
            printf("%10s", emp[i].writer);
            printf("%lu",  emp[i].isbn);
            printf("%10s", emp[i].press);
            printf("%6d",  emp[i].year);
            printf("%f",   emp[i].price);
            printf("%10s", emp[i].place);
            printf("\n");
            j++;
            break;
        }
    if (j == 0)
        printf("该isbn号不存在\n");
    return k;
}
void xiugai()
{
    int choice;
    printf("============欢迎进入信息修改模块=========\n");
    int k = search_isbn();
    if (k != -1)
    {
        printf("1.删除信息   2.修改信息\n");
        printf("请输入您的选着\n");
        scanf("%d", &choice);
        switch (choice)
        {
        case 1:deletel(k); break;
        case 2:revise(k);  break;
        default:printf("\n非法操作!\n"); break;
        }
    }
    else
    {
        printf("没有查找到您需要修改的的图书信息\n");
    }
}
void deletel(int k)
{
    char c1;
    int i;
    printf("确认删除?是输入y或Y,退出程序请按其它任意键\n");
    getchar();
    scanf("%c", &c1);
    if (c1 == 'Y' || c1 == 'y')
    {
        for (i = k; i < M - 1; i++)
            emp[i] = emp[i + 1];
        M = M - 1;
        printf("删除成功\n");
    }
    return;
}
void revise(int z)
{
    char c2;
    int i = z;
    printf("请输入该图书的书名:\n");
    scanf("%s", emp[i].name);
    printf("请输入该图书的作者:\n");
    scanf("%s", emp[i].writer);
    printf("请输入该图书的出版单位:\n");
    scanf("%s", emp[i].press);
    printf("请输入该图书的出版年份:\n");
    scanf("%d", &emp[i].year);
    printf("请输入该图书的价格:\n");
    scanf("%lf", &emp[i].price);
    printf("请输入该图书的位置:\n");
    scanf("%s", emp[i].place);
}
void add()
{
    int i, j;
    if (M >= MaxN) {
        printf("数据库已满,不能再添加数据.\n");
        return;
    }
    printf("===========进入添加信息模块===========\n");
    do{
        printf("请输入您需要添加的书本数量\n");
        scanf("%d", &j);
        if (j + M > MaxN)
            printf("该系统只能存放%d本以内的信息,剩余的%d本的空间,请重新输入\n", MaxN, MaxN - M);
    } while (j + M > MaxN);
    for (i = M; i < M + j; i++)
    {
        printf("请输入第%d本图书的书名:", i + 1);
        scanf("%s", emp[i].name);
        printf("请输入第%d本图书的作者:", i + 1);
        scanf("%s", emp[i].writer);
        printf("请输入第%d本图书的出版单位:", i + 1);
        scanf("%s", emp[i].press);
        printf("请输入第%d本图书的出版年份:", i + 1);
        scanf("%d", &emp[i].year);
        printf("请输入第%d本图书的价格:", i + 1);
        scanf("%lf", &emp[i].price);
        printf("请输入第%d本图书的位置:", i + 1);
        scanf("%s", emp[i].place);
        emp[i].isbn = suiji();
        printf("该图书的isbn号被系统定义为:%lu\n", emp[i].isbn);
    }
    M += j;
}
void shuchu()
{
    int i;
    printf("---------------------------------------------------------\n");
    printf("                      图书相关信息                       \n");
    printf("---------------------------------------------------------\n");
    printf("序列  书名  作者  IBSN号  出版单位  出版年份  价格  位置 \n");
    for (i = 0; i < M; i++)
    {
        printf("%2d",  i + 1);
        printf("%10s", emp[i].name);
        printf("%10s", emp[i].writer);
        printf("%1u",  emp[i].isbn);
        printf("%10s", emp[i].press);
        printf("%6d",  emp[i].year);
        printf("%f",   emp[i].price);
        printf("%10s", emp[i].place);
        printf("\n");
    }
}