reimu2018 2022-01-29 17:15 采纳率: 100%
浏览 265
已结题

定义一个结构体数据类型,用来描述学校图书馆中图书的基本信息

定义一个结构体数据类型,用来描述我校图书馆中图书的基本
信息,信息包含:
统一-书号(不超过13字符)
书名(不超过30字符)
作者(不超过20字符)
出版社(不超过30字符)
出版日期(包括:年、月、日)
价格(精确到分)
假设10本图书的基本信息已经存放到一一个数组中,要求:根
据输入的书号查询该书,若查找到,输出该书的所有基本信
息,若未查到,给出提示信息。
(要求定义以下函数实现相应功能,并在主函数中调用他们)
如果有人能解答一下的话,就真的帮大忙了,谢谢

  • 写回答

2条回答 默认 最新

  • 慕雪华年 C/C++领域新星创作者 2022-01-29 17:47
    关注

    写了一个管理系统,你可以测试一下!

    #include <stdio.h>
    #include <assert.h>
    #include <string.h>
    
    #define MAX 10
    
    typedef struct book
    {
        char ID[15];
        char BookName[30];
        char Writer[20];
        char Publish[30];
        char date[12];
        float price;
    }BOOK;
    
    typedef struct Contact
    {
        BOOK data[MAX];//存放数据
        int sz;//有效数据个数
    }Contact;
    
    
    void menu()
    {
        printf("*********************************\n");
        printf("****** 1.add     2.show    ******\n");
        printf("****** 3.search  0.exit    ******\n");
        printf("*********************************\n");
    }
    
    //增加书籍
    void AddBook(Contact* pc)
    {
        if (pc->sz == MAX)
        {
            printf("书籍已满\n");
            return;
        }
        printf("输入书号>"); 
        scanf("%s", pc->data[pc->sz].ID);
        printf("输入书名>");
        scanf("%s", pc->data[pc->sz].BookName);
        printf("输入作者>");
        scanf("%s", pc->data[pc->sz].Writer);
        printf("输入出版社>");
        scanf("%s", pc->data[pc->sz].Publish);
        printf("输入出版日期>");
        scanf("%s", pc->data[pc->sz].date);
        printf("输入价格>");
        scanf("%f", &pc->data[pc->sz].price);
    
        pc->sz++;
        printf("增加书籍成功\n");
    }
    
    
    int FindBook(Contact* pc)
    {
        assert(pc);
        char ID[15] = { 0 };
        scanf("%s", ID);
        int i = 0;
        for (i = 0; i < pc->sz; i++)
        {
            if (strcmp(ID, pc->data[i].ID) == 0)
            {
                return i;
            }
        }
        return -1;
    }
    //查找到后需要打印
    void SearchBook(Contact* pc)
    {
        assert(pc);
        printf("输入需要查找的书号>");
        int i = FindBook(pc);
        if (i != -1)
        {
            printf("找到书籍如下:\n");
            printf("%-15s\t%-30s\t%-20s\t%-30s\t%-10s\t%-5s\t\n", "书号", "书名", "作者", "出版社", "出版日期","价格");
            printf("%-15s\t%-30s\t%-20s\t%-30s\t%-10s\t%-5.2f\t\n",
              pc->data[i].ID, pc->data[i].BookName, pc->data[i].Writer, pc->data[i].Publish, pc->data[i].date,pc->data[i].price);
        }
        else
        {
            printf("该书籍不存在\n");
        }
    }
    
    
    void ShowBook(Contact* pc)
    {
        assert(pc);
        if (pc->sz == 0)
        {
            printf("书架为空\n");
            return;
        }
        printf("%-15s\t%-30s\t%-20s\t%-30s\t%-10s\t%-5s\t\n", "书号", "书名", "作者", "出版社", "出版日期", "价格");
        int i = 0;
        for (i = 0; i < pc->sz; i++)
        {
            printf("%-15s\t%-30s\t%-20s\t%-30s\t%-10s\t%-5.2f\t\n",
                pc->data[i].ID, pc->data[i].BookName, pc->data[i].Writer, pc->data[i].Publish, pc->data[i].date, pc->data[i].price);
        }
    
    }
    
    int main()
    {
        int input;
        Contact con = { 0 };
        do
        {
            menu();
            scanf("%d", &input);
            switch (input)
            {
            case 1:
                AddBook(&con);
                break;
            case 2:
                ShowBook(&con);
                break;
            case 3:
                SearchBook(&con);
                break;
            case 0:
                printf("退出系统\n");
                break;
            default:
                printf("输入错误\n");
                break;
            }
        } while (input);
        
    
        return 0;
    }
    

    效果如图

    img

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

报告相同问题?

问题事件

  • 系统已结题 2月6日
  • 已采纳回答 1月29日
  • 创建了问题 1月29日

悬赏问题

  • ¥15 做个有关计算的小程序
  • ¥15 MPI读取tif文件无法正常给各进程分配路径
  • ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化