dai15234791133 发表于 2020-1-5 13:52

图书管理c语音求组大佬们

本帖最后由 dai15234791133 于 2020-1-5 19:20 编辑

大佬们帮忙看看,图书管理这个我就剩下个删除了,但是删除一本书后然后还显示俩行但序号是继承的下本书的,书名作者那些都不变。
题目四:图书借阅管理内容:1、使用结构体数组定义图书基本信息(图书编号、图书借阅人、借阅天数、图书总量、图书库存、书名、图书作者)。2、实现图书基本信息(图书编号、图书借阅人、借阅天数、图书总量、图书库存、书名、图书作者)的录入。3、实现对图书的借阅管理。4、实现对图书的删除(根据图书编号)、查询(根据图书编号)和图书信息修改的操作。      5、输出显示功能选择提示。      6、每个功能以一个单独的函数实现。
网上

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//图书结构体
struct Book//图书的结构体
{
    int id;                //书的编号
        char name;            //书的名字
        char Author;            //书的作者
        char borrower;          //借阅人
        int store;   
        int total;
        int user;   
        int days;               //图书是否被借出
}
books;
int count;      //当前图书的数量
//显示菜单,并返回选择的菜单号
int ShowMenu()
{
      int num;
      system("cls");
      printf("**********欢迎使用图书馆管理系统******************\n");
      printf("\t\t1.添加图书\n");
      printf("\t\t2.查看图书\n");
      printf("\t\t3.借阅图书\n");
      printf("\t\t4.归还图书\n");
      printf("\t\t5.修改图书信息\n");
      printf("\t\t6.删除图书\n");
      printf("\t\t7.查找图书\n");
      printf("\t\t0.退出系统\n");
      printf("--------------------请选择-----------------------\n");
      while(scanf("%d", &num) != 1 || num < 0 || num > 7)
      {
                printf("你选择的菜单错误!按任意键重新选择。\n");
                system("pause");
                fflush(stdin);//清空输入缓冲区
      }
      return num;
}
//添加图书
void AddBook()
{
        int i;
        system("cls");   //清屏
        for(i=0;i<2;i++)
        {       
          printf("序号:");
                scanf("%d",&books.id);
                printf("书名:");
                scanf("%s",&books.name);
                printf("作者:");
                scanf("%s",&books.Author);
                printf("数量:");
                scanf("%d",&books.total);
                books.store=books.total;
                printf("\n");
                       
        }
        printf("图书添加成功!\n");
}
//////////////////////////////////////////////////////////////////////////
//查看图书
int ShowBooks()
{
        int i,flag=0;
        system("cls");
        for(i=0;i<100;i++)
        {   
                if(strlen(books.Author)!=0)
                {
                        printf("序号:%d\t",books.id);
                        printf("书名:%s\t",books.name);
                        printf("作者:%s\t",books.Author);
                        printf("存数:%d\t",books.store);
                        printf("总数:%d\n\n",books.total);
                        flag=1;
                }       
        }
        if(flag==0)
        {
                printf("没有找到相关书籍\n");       
        }
        //ShowMenu();
        return i;       
}
/////////////////////////////////////////////////////
//查找图书
int book_search()
{
        int n,i,flag=0;
        char nam;
        system("cls");
        printf("请输入书名:");
        scanf("%s",&nam);
        for(i=0;i<100;i++)
        {
                if(strcmp(books.name,nam)==0)
                {
                        printf("序号:%d\t",books.id);
                        printf("书名:%s\t",books.name);
                        printf("作者:%s\t",books.Author);
                        printf("存数:%d\t",books.store);
                        printf("总数:%d\n",books.total);
                        n=i;
                        flag=1;
                        break;
                }       
        }
                if(flag==0)
                {
                        printf("\n没有找到相关书籍\n");
                        return -1;
                }
        return n;
}
/////////////////////////////////////////////////////////////////////////
//借阅图书
void borrowbook()
{   
    int n,s,i,d;
        system("cls");
        n=book_search();
        if(n!=-1&&books.store>0)
        {
                //赋初值,全为零
        for(i=0;i<10;i++)
                {
                                books.user=0;
                                books.days=0;               
                }                       
                printf("借书证序号:");
                scanf("%d",&s);
                printf("借书人:");
                scanf("%s",&books.borrower);
                printf("输入可借天数:");
                scanf("%d",&d);                
                books.user=s;
                books.days=d;
                books.store--;                       
        }
       
        else if(n!=-1&&books.store==0)
        {
                printf("此书已经完全借完\n\n");
        //        ShowMenu();
        }
        else;       
        printf("\n请按任意键返回……\n");
          
}
////////////////////////////////////////////////////////////////////////
//修改图书
int book_edit()
{
        int i,id_change;
        system("cls");
        printf("输入要修改的图书id:");
        scanf("%d",&id_change);
        for(i=0;i<100;i++)
        {
                if(books.id==id_change)
                {
                printf("修改书名:");
                scanf("%s",&books.name);
                printf("修改作者:");
                scanf("%s",&books.Author);
                printf("修改数量:");
                scanf("%d",&books.total);
                printf("修改图书信息成功\n");
                books.store=books.total;
                return i;
                }       
        }
}
/////////////////////////////////////////////////////////////////
//删除图书
int book_del()
{
        int i,num,j;
        system("cls");
        printf("输入所要删除的书的id:");
        scanf("%d",&num);
        for(i=0;i<100;i++)
        {
                if(books.id==num)
                {
                        for(j=i;j<100;j++)
                        {
                                books.id=books.id;
                                strcpy(books.name,books.name);
                                strcpy(books.borrower,books.borrower);
                                printf("该书已经删除了!!!\n");
                                //ShowMenu();
                                return i;
                        }
                }       
        }
        printf("未找到相关记录\n");
        return -1;
}
////////////////////////////////////////////////////////////////////////
//归还图书
void book_in()
{
        int n,s,i;
        n=book_search();
        printf("%d",n);
        if(n!=-1&&books.store<books.total)
        {
                printf("借阅图书证列表\n");
                for(i=0;i<10;i++)
                {
                        if(books.user!=0)
                        {
                                printf("[%d]--%d天\n",books.user,books.days);
                        }
                        printf("输入借书证号:");
                        scanf("%d",&s);
                        for(i=0;i<10;i++)
                        {
                                if(books.user==s)
                                {
                                        books.store++;
                                }
                        }
                }
        }
        if(n!=-1&&books.store==books.total)
                {
                        printf("全部归还\n");
                }
        else if(n!=-1&&books.store<books.total)
        {
                printf("归还成功\n");
        }
}
int main()
{
      int quit = 0;
      while(quit == 0)
      {
                switch(ShowMenu())
                {
                        case 0:
                        quit = 1;
                        break;
                        case 1:
//                        printf("添加图书!\n");
                        AddBook();
                        break;
                        case 2:
//                        printf("查看图书!\n");
                        ShowBooks();
                        break;
                        case 3:
//                        printf("借阅图书!\n");
                        borrowbook();
                        break;
                        case 4:
//                        printf("归还图书!\n");
                        book_in();
                        break;
                        case 5:
//                        printf("修改图书信息!\n");
                        book_edit();
                        break;
                        case 6:
//                        printf("删除图书!\n");
                        book_del();
                        break;
                        case 7:
//                        printf("查找图书!\n");
                        book_search();
                        break;
                }
                system("pause");
      }
      return 0;
}

z1390595 发表于 2020-1-12 17:01

不太明白楼主你的意思,你这边删除的操作是要找到这本书(i),然后把后面的每一本书都往前挪吗?
如果是的话,问题应该在这段里

                        for(j=i;j<100;j++)
                        {
                              books.id=books.id;
                              strcpy(books.name,books.name);
                              strcpy(books.borrower,books.borrower);
                              printf("该书已经删除了!!!\n");
                              //ShowMenu();
                              return i;
                        }

这个循环中,j执行了一次后就return了。。。。。这样子只能将i后面的那本书移到i这个位置来。
如果你是要后面的每本都往前挪的话,那至少return i; 这一句要提到这个循环之外,放到i的那个循环中。
页: [1]
查看完整版本: 图书管理c语音求组大佬们