杏子和橙子 2022-07-03 10:35 采纳率: 86.4%
浏览 87
已结题

图书管理系统的相关问题我无法解决,不知道为何无法运行,可能问题较多,希望大家能帮我修改修改

问题遇到的现象和发生背景

这是我今年暑假关于图书管理系统,,但是我不知道为什么会运行失败,可能代码里的问题比较多,希望大家帮我看看,我一开始会在c盘建立一个book.txt文件,里面会放10本书的相关资料,
麻烦大家帮我修改修改

问题相关代码,请勿粘贴截图
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct stu
{
    int id;
    char bookname[30];
    float money;
    char year[12];
    char press[30];
    int strock;
}books[20],books1[20],books2[20],books3[20],books4[20];
void page_title(char *menu_item)
{
    printf("\n图书管理系统\n-%s-\n",menu_item);
}
int main()
{
    int book_add();
    int book_show();
    int book_modify();
    int book_delete();
    int book_search();
    page_title("操作选单");
    printf("用数字选择操作\n");
    printf("\t1图书信息录入\t2显示图书\n");
    printf("\t3修改图书信息\t4图书信息删除\n");
    printf("\t5图书信息查询\t6退出\n");
    switch(getchar())
    {
    case 1:book_add();
        break;
    case 2:book_show();
        break;
    case 3:book_modify();
        break;
    case 4:book_delete();
        break;
    case 5:book_search();
        break;
    case 6:exit(0);
    }
    return 0;
}
//图书信息录入
int book_add()
{
    FILE *fp;
    int i,n;
    page_title("图书信息录入");
    printf("需要录入几本书\n");
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        printf("id:");
        scanf("%d",&books[i].id);
        printf("bookname:");
        scanf("%s",books[i].bookname);
        printf("money:");
        scanf("%f",&books[i].money);
        printf("year:");
        scanf("%s",books[i].year);
        printf("press:");
        scanf("%s",books[i].press);
        printf("strock:");
        scanf("%d",&books[i].strock);
    }
    if((fp=fopen("c:\\book.txt","r"))==NULL)
    {
        printf("\n文件打开失败\n");
        exit(0);
    }
    fwrite(books,sizeof(struct stu),1,fp);
    fclose(fp);
    return 0;
}
//图书显示
int book_show()
{
    FILE *fp;
    int i;
    page_title("图书显示");
    if((fp=fopen("c:\\book.txt","r"))==NULL)
    {
        printf("\n文件打开失败\n");
        exit(0);
    }
    printf("编号 书名 价格 出版日期 出版社 库存\n");
    for(i=0;i<20;i++)
    {
        fread(&books1[i],sizeof(struct stu),1,fp);
         printf("\n%2d %s %.2f %s %s %4d\n",books1[i].id,books1[i].bookname,books1[i].money,books1[i].year,books1[i].press,books1[i].strock);
    }
    fclose(fp);
    return 0;
}
//图书修改
int book_modify()
{
    FILE *fp;
    int i,id_change;
    page_title("图书修改");
    if((fp=fopen("c:\\book.txt","r"))==NULL)
    {
        printf("\n文件打开失败\n");
        exit(0);
    }
    for(i=0;i<20;i++)
        fread(&books2[i],sizeof(struct stu),1,fp);
    printf("输入要修改的图书的id:");
    scanf("%d",&id_change);
    for(i=0;i<20;i++)
    {
        if(books2[i].id==id_change)
        {
            printf("修改书名:");
            scanf("%s",books2[i].bookname);
            printf("修改价钱:");
            scanf("%f",books2[i].money);
            printf("修改出版日期:");
            scanf("%s",books2[i].year);
            printf("修改出版社:");
            scanf("%s",books2[i].press);
            printf("修改库存:");
            scanf("%d",books2[i].strock);
        }
    }
    fwrite(books2,sizeof(struct stu),1,fp);
    fclose(fp);
    return 0;
}
//图书删除
int books_delete()
{
    FILE *fp;
    int i,id_delete,j;
    page_title("图书删除");
    if((fp=fopen("c:\\book.txt","r"))==NULL)
    {
        printf("\n文件打开失败\n");
        exit(0);
    }
    for(i=0;i<20;i++)
        fread(&books3[i],sizeof(struct stu),1,fp);
    printf("输入要删除的图书的编号:");
    scanf("%d",&id_delete);
    for(i=0;i<20;i++)
    {
        if(books3[i].id==id_delete)
        {
            for(j=i;j<20;j++)
            {
                books3[j].id=books3[j+1].id;
                strcpy(books3[j].bookname,books3[j+1].bookname);
                books3[j].money=books3[j+1].money;
                strcpy(books3[j].year,books3[j].year);
                strcpy(books3[j].press,books3[j].press);
                books3[j].strock=books3[j+1].strock;
            }
        }
    }
    printf("此书已删除\n");
    fwrite(books3,sizeof(struct stu),1,fp);
    return 0;
}
//图书搜索
int book_search()
{
    FILE *fp;
    int i,flag=0;
    char num[30];
    page_title("图书搜索");
    printf("请输入书名:\n");
    scanf("%s",num);
    if((fp=fopen("c:\\book.txt","r"))==NULL)
    {
        printf("\n文件打开失败\n");
        exit(0);
    }
    for(i=0;i<20;i++)
        fread(&books4[i],sizeof(struct stu),1,fp);
    for(i=0;i<20&&flag==0;i++)
    {
        if(strcmp(books4[i].bookname,num)==0)
        {
            printf("图书编号:%d\t",books4[i].id);
            printf("书名:%s\t",books4[i].bookname);
            printf("价格:%.2f\t",books4[i].money);
            printf("出版日期:%s\t",books4[i].year);
            printf("出版社:%s\t",books4[i].press);
            printf("库存:%d\t",books4[i].strock);
            flag=1;
        }
    }
    return 0;
}

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

3条回答 默认 最新

  • emXiaoMing 2022-07-03 14:36
    关注

    133行books_delete改成book_delete

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月4日
  • 已采纳回答 7月4日
  • 创建了问题 7月3日

悬赏问题

  • ¥15 对于知识的学以致用的解释
  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败