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

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

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

#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

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632