当前位置:   article > 正文

手把手教你实现一个基于c++的图书管理系统(保姆级)

手把手教你实现一个基于c++的图书管理系统(保姆级)

图书管理系统,主要实现了以下功能:

  1. 录入新书籍信息
  2. 删除指定书籍信息
  3. 将书籍按照价格从小到大排序
  4. 修改指定书籍信息
  5. 查询指定书籍信息
  6. 退出系统
    完整系统:https://download.csdn.net/download/weixin_45741872/89045421
    现在逐个函数进行解释:

void judge(int jdg)

这个函数根据传入的功能选项 jdg 来执行相应的操作。根据 switch 语句,可以实现不同选项对应的不同功能。

void judge(int jdg) {
    int n;
    char bkNum[20];
    switch (jdg) {
    case 1:
        printf("请输入要录入书籍的个数:");
        scanf("%d", &n);
        for (i = tmp; i < n + tmp; i++) {
            inputBk(&bk[i], i); // 录入新书籍信息
        }
        tmp = n + tmp; // 更新书籍数量
        break;
    case 2:
        printf("请输入要删除的书号:");
        scanf("%s", bkNum);
        deleteBK(bkNum); // 删除指定书籍信息
        break;
    case 3:
        sortInfo(bk, tmp); // 对书籍按照价格从小到大排序
        printf("排序后:\n");
        for (i = 0; i < tmp; i++) {
            outputInfo(&bk[i]); // 输出排序后的书籍信息
        }
        break;
    case 4:
        printf("请输入要修改的书号:");
        scanf("%s", bkNum);
        updateInfo(bkNum); // 修改指定书籍信息
        break;
    case 5:
        printf("请输入要查询的书号:");
        scanf("%s", bkNum);
        serchInfo(bkNum); // 查询指定书籍信息
        break;
    case 6:
        flag = 0; // 退出系统
        break;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39

void inputBk(BK *p, int i)

这个函数用于录入新书籍信息,接受一个指向 BK 结构体的指针 p 和一个整数 i,表示书籍的序号。通过 scanf 函数依次输入书号、书名、作者、单价、数量和简介。

void inputBk(BK *p, int i) {
    printf("请录入第%d本书:\n", i + 1);
    printf("请输入书号:");
    scanf("%s", p->num);
    printf("请输入书名:");
    scanf("%s", p->name);
    printf("请输入作者:");
    scanf("%s", p->author);
    printf("请输入单价:");
    scanf("%d", &(p->price));
    printf("请输入数量:");
    scanf("%d", &(p->total));
    printf("请输入简介:");
    scanf("%s", p->introduce);
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

void deleteBK(char bkNum[])

这个函数用于删除指定书号的书籍信息。首先根据输入的书号 bkNum 遍历书籍数组 bk,找到对应的书籍信息,然后将其后的书籍依次前移一位,实现删除操作。

void deleteBK(char bkNum[]) {
    int assert = 0;
    for (i = 0; i < tmp; i++) {
        if (strcmp(bkNum, bk[i].num) == 0) {
            for (int j = i; j < tmp - 1; j++) {
                // 删除指定书籍信息
                strcpy(bk[j].num, bk[j + 1].num);
                strcpy(bk[j].name, bk[j + 1].name);
                strcpy(bk[j].author, bk[j + 1].author);
                strcpy(bk[j].introduce, bk[j + 1].introduce);
                bk[j].price = bk[j].price;
                bk[j].total = bk[j].total;

                tmp = tmp - 1; // 更新书籍数量
                assert = 1;
                break;
            }
        }
    }

    // 输出提示信息
    if (assert) {
        printf("已经删除该书籍信息\n");
    } else {
        printf("没有找到该书籍\n");
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

void sortInfo(BK bk[], int n)

这个函数用于对书籍信息按照价格从小到大进行排序。采用冒泡排序算法实现,遍历书籍数组,比较相邻两个书籍的价格,将价格较大的书籍往后移,直到将最小的价格移到最前面。

void sortInfo(BK bk[], int n) {
    int i, j;
    for (i = 0; i < n - 1; i++) {
        for (j = 0; j < n - 1 - i; j++) {
            if (bk[j].price > bk[j + 1].price) {
                swapInfo(&bk[j], &bk[j + 1]); // 交换两个书籍的位置
            }
        }
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

void swapInfo(BK *p, BK *q)

这个函数用于交换两个书籍信息的位置,接受两个 BK 结构体指针作为参数,通过一个临时变量实现交换。

void swapInfo(BK *p, BK *q) {
    BK trmp;
    trmp = *p;
    *p = *q;
    *q = trmp;
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

void outputInfo(BK *p)

这个函数用于输出一本书籍的信息,接受一个 BK 结构体指针作为参数,通过 printf 函数将书号、书名、作者、单价、数量和简介输出到屏幕上。

void outputInfo(BK *p) {
    printf("%s\t%s\t%s\t%d\t%d\t%s\n", p->num, p->name, p->author, p->price, p->total, p->introduce);
}
  • 1
  • 2
  • 3

完整系统:https://download.csdn.net/download/weixin_45741872/89045421

void updateInfo(char bkNum[])

这个函数用于修改指定书号的书籍信息。首先根据输入的书号 bkNum 找到对应的书籍信息,然后通过 scanf 函数重新输入新的书籍信息,完成修改。

void updateInfo(char bkNum[]) {
    int assert = 0;
    for (i = 0; i < tmp; i++) {
        if (strcmp(bkNum, bk[i].num) == 0) {
            printf("请修改图书馆第%d本书:\n", i + 1);
            printf("请修改书号:");
            scanf("%s", bk[i].num);
            printf("请修改书名:");
            scanf("%s", bk[i].name);
            printf("请修改作者:");
            scanf("%s", bk[i].author);
            printf("请修改单价:");
            scanf("%d", &(bk[i].price));
            printf("请修改数量:");
            scanf("%d", &(bk[i].total));
            printf("请修改简介:");
            scanf("%s", bk[i].introduce);
            assert = 1;
            break;
        }
    }

    // 输出提示信息
    if (assert) {
        printf("已经修改该书籍信息\n");
    } else {
        printf("没有找到该名称书籍\n");
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

void serchInfo(char bkNum[])

这个函数用于查询指定书号的书籍信息。首先根据输入的书号 bkNum 找到对应的书籍信息,然后调用 outputInfo 函数将书籍信息输出到屏幕上。

void serchInfo(char bkNum[]) {
    int assert = 0;
    for (i = 0; i < tmp; i++) {
        if (strcmp(bkNum, bk[i].num) == 0) {
            outputInfo(&bk[i]); // 输出指定书籍信息
            assert = 1;
            break;
        }
    }

    // 输出提示信息
    if (assert) {
        printf("已经查询到该书籍信息\n");
    } else {
        printf("没有找到该名称的书籍\n");
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

主函数 int main()

主函数中包含一个 while 循环,不断显示菜单栏,并根据用户的选择调用相应的函数,直到用户选择退出系统。

int main() {
    while (flag) { // 循环显示菜单栏,直到用户选择退出
        do {
            // 显示菜单栏
            printf("############################################菜单栏######################################\n");
            printf("请输入想要实现的功能选项\n");
            printf("1、录入新书籍\n");
            printf("2、删除指定书籍\n");
            printf("3、价格从小到大排序书籍\n");
            printf("4、修改指定书籍\n");
            printf("5、查询指定书籍\n");
            printf("6、退出菜单栏\n");
            printf("############################################菜单栏######################################\n");
            printf("请输入选项:");
            scanf("%d", &menu);
        } while (menu > 6 || menu < 1);

        // 根据用户选择调用相应的函数
        judge(menu);
    }
    getchar(); getchar(); getchar(); // 暂停屏幕,防止程序一闪而过
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

完整系统:https://download.csdn.net/download/weixin_45741872/89045421

测试

录入书籍

image-20240328144013698

按价格排序书籍

image-20240328144050436

修改指定书籍

image-20240328144131263

查询指定书籍

image-20240328144156516

删除指定书籍

image-20240328144230042
完整系统:https://download.csdn.net/download/weixin_45741872/89045421

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/530595
推荐阅读
相关标签
  

闽ICP备14008679号