m0_64001347 2021-12-29 09:39 采纳率: 83.3%
浏览 411
已结题

C语言图书借阅管理系统。

图书管理信息包括:图书编号、图书名称、单价、作者、数量、存在状态(可以设为整型,1为未借,0为已借)、借书人学号、姓名。
实现以下菜单显示的功能:
1、新进图书基本信息的录入,按书号从小到大的顺序将图书信息存入文件中。
2、办理借书手续。
提示:借书时,图书数量会减少,存在状态有修改
3、办理还书手续
提示:还书时,图书数量会增加,存在状态有修改
4、图书管理信息的查询,查询图书借阅情况。
按图书编号查询借阅情况
按借书人学号查询借阅情况
5、图书基本信息的删除。
6、浏览,从文件中读取每本图书的借阅信息并显示。
7、退出
要求:使用文件存储数据,系统以菜单方式工作。

  • 写回答

1条回答 默认 最新

  • 关注

    参考:

    #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];
    //显示整体标题标题函数
    void page_title(char *menu_item)
    {
    printf("\t\t使用图书馆管理系统\n\n-%s-\n\n",menu_item);
    }
    //等待返回函数
    void return_confirm()
    {
    printf("\n请按任意键返回……\n");
    getch();
    }
    book_add()
    {
    int i;
    system("cls"); //清屏
    page_title("注册新书");
    for(i=0;i<12;i++)
    {
    printf("序号:");
    scanf("%d",&books[i].id);
    printf("书名:");
    scanf("%s",&books[i].name);
    printf("作者:");
    scanf("%s",&books[i].author);
    printf("出版社:");
    scanf("%s",&books[i].publish);
    printf("数量:");
    scanf("%d",&books[i].total);
    books[i].store=books[i].total;
    printf("\n");
    
    }
    }
    
    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();
    return i; }
    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;
    }
    
    book_edit()
    {
    int i,id_change;
    system("cls");
    page_title("修改图书信息:");
    printf("输入要修改的图书id:");
    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;
    return i;
    }
    }
    
    printf("\n没有找到相关信息\n");
    getch();
    return -1;
    }
    
    int book_del()
    {
    int i,num,j;
    system("cls");
    page_title("删除图书");
    printf("输入所要删除的书的id:");
    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();//暂停程序运行,等待键盘IO输入
    return -1;
    }
    
    //借书
    book_out()
    {
    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();
    }
    
    main()
    {
    menu:page_title("操作选单");
    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;//goto跳转语句
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月1日
  • 已采纳回答 12月29日
  • 创建了问题 12月29日

悬赏问题

  • ¥15 如何在node.js中或者java中给wav格式的音频编码成sil格式呢
  • ¥15 不小心不正规的开发公司导致不给我们y码,
  • ¥15 我的代码无法在vc++中运行呀,错误很多
  • ¥50 求一个win系统下运行的可自动抓取arm64架构deb安装包和其依赖包的软件。
  • ¥60 fail to initialize keyboard hotkeys through kernel.0000000000
  • ¥30 ppOCRLabel导出识别结果失败
  • ¥15 Centos7 / PETGEM
  • ¥15 csmar数据进行spss描述性统计分析
  • ¥15 各位请问平行检验趋势图这样要怎么调整?说标准差差异太大了
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题