普通人類 2022-05-13 11:38 采纳率: 0%
浏览 74
已结题

制作一个简易图书管理系统(需要读取记事本的数据) 用c语言 把功能注释好

img

采用c语言 需要使用记事本读取数据,可只做出查询,排序,添加功能,每行进行相应的注释,感谢

  • 写回答

3条回答 默认 最新

  • 吕布辕门 新星创作者: 后端开发技术领域 2022-05-13 12:10
    关注
    获得2.60元问题酬金

    给你个参考吧,类似的,如有问题可以问。

    
    #include <stdio.h>
    #include <stdlib.h>
    #include <assert.h>
    #include <string.h>
    
    #define EMPTY     -1        // 初始标志
    #define DEL_EMPTY  0        // 删除标志
    #define _MAX       200      //库存最大数量
    
    typedef struct BookInfo {
        int _count;
        int _price;
        char _id[10];
        char _author[20];
        char _name[50];
        char _introduction[100];
    }BookData;
    
    BookData books_house[_MAX] = { -1, 0,"","", "", "", };
    
    // 书仓信息
    void books_house_info()
    {
        printf("--------------------书籍信息--------------------\n");
        printf("ID\t书名\t作者\t价格\t数量\t简介\n");
        for (int i = 0; i < _MAX; ++i) {
            if (books_house[i]._count == EMPTY)
                break;
            else if (books_house[i]._count == DEL_EMPTY)
                continue;
            printf("%s\t", books_house[i]._id);
            printf("%s\t", books_house[i]._name);
            printf("%s\t", books_house[i]._author);
            printf("%d\t", books_house[i]._price);
            printf("%d\t", books_house[i]._count);
            printf("%s\t", books_house[i]._introduction);
            printf("\n");
        }
        printf("------------------------------------------------\n");
    }
    
    // 增添书
    bool books_house_add(BookData info)
    {
        for (int i = 0; i < _MAX; ++i) {
            if (books_house[i]._count == EMPTY ||
                books_house[i]._count == DEL_EMPTY) {
                for (int j = 0; j < _MAX; ++j) {
                    if (strcmp(books_house[j]._id, info._id) == 0 ||
                        strcmp(books_house[j]._name, info._name) == 0) {
                        return false;
                    }
                }
                books_house[i] = info; break;
            }
        }
        books_house_info();
        return true;
    }
    
    // 删除书
    void books_house_del(BookData info)
    {
        for (int i = 0; i < _MAX; ++i) {
            if (strcmp(books_house[i]._name, info._name) == 0) {
                books_house[i]._count = DEL_EMPTY;
                break;
            }
        }
        books_house_info();
    }
    
    // 价格排序(升序)
    void books_house_sort()
    {
        for (int i = 0; i < _MAX - 1; ++i) {
            if (books_house[i]._count == EMPTY) break;
            else if (books_house[i]._count == DEL_EMPTY) continue;
            for (int j = 0; j < _MAX - i - 1; ++j) {
                if (books_house[j]._price > books_house[j + 1]._price) {
                    BookData tmp = books_house[j];
                    books_house[j] = books_house[j + 1];
                    books_house[j + 1] = tmp;
                }
            }
        }
    
        books_house_info();
    }
    
    // 修改书籍信息
    void books_house_modify(BookData info)
    {
        for (int i = 0; i < _MAX; ++i) {
            if (strcmp(books_house[i]._name, info._name) == 0) {
                books_house[i] = info; break;
            }
        }
        books_house_info();
    }
    
    // 根据书ID查找
    bool books_house_search(BookData info)
    {
        printf("\n--------------------查询结果--------------------\n");
        printf("ID\t书名\t作者\t价格\t数量\t简介\n");
        for (int i = 0; i < _MAX; ++i) {
            if (strcmp(books_house[i]._id, info._id) == 0) {
                printf("%s\t", books_house[i]._id);
                printf("%s\t", books_house[i]._name);
                printf("%s\t", books_house[i]._author);
                printf("%d\t", books_house[i]._price);
                printf("%d\t", books_house[i]._count);
                printf("%s\t", books_house[i]._introduction);
                printf("\n");
                return true;
                break;
            }
        }
        return false;
    }
    
    // 书籍信息
    void set_book_info(BookData *book)
    {
        printf("输入ID:");
        scanf_s("%s", book->_id, sizeof(book->_id));
    
        printf("输入书名:");
        scanf_s("%s", book->_name, sizeof(book->_name));
    
        printf("输入作者:");
        scanf_s("%s", book->_author, sizeof(book->_author));
    
        printf("输入简介:");
        scanf_s("%s", book->_introduction, sizeof(book->_introduction));
    
        printf("输入数量:");
        scanf_s("%d", &book->_count);
    
        printf("输入价格:");
        scanf_s("%d", &book->_price);
    }
    
    void books_house_manage_menu()
    {
        system("cls");
        printf("                图书管理系统    \n\n");
        printf("            |    1.查看库存    |\n");
        printf("                2.录入书籍     \n");
        printf("            |    3.删除书籍    |\n");
        printf("                4.查询书籍     \n");
        printf("            |    5.价格排序    |\n");
        printf("                6.修改信息     \n");
        printf("            |    7.退出        |\n");
        printf("\n-----\n");
        printf("请问你想操作什么: ");
    }
    
    int main(int argc, char **argv)
    {
        do {
            int select;
            books_house_manage_menu();
            scanf_s("%d", &select);
            switch (select)
            {
            case 1: {
                books_house_info();
                break;
            }
            case 2: {
                BookData book;
                set_book_info(&book);
                books_house_add(book) ? NULL : printf("**该书籍已存在!请勿重复输入!\n");
                break;
            }
            case 3: {
                BookData book;
                printf("输入需要删除的书名:");
                scanf_s("%s", book._name, sizeof(book._name));
                books_house_del(book);
                break;
            }
            case 4: {
                BookData book;
                printf("输入需要查询的ID号:");
                scanf_s("%s", book._id, sizeof(book._id));
                books_house_search(book);
                break;
            }
            case 5: {
                books_house_sort();
                break;
            }
            case 6: {
                BookData book;
                printf("输入需要修改书籍的ID:");
                scanf_s("%s", book._id, sizeof(book._id));
                if (books_house_search(book)) {
                    printf("请输入以下提示的修改信息\n");
                    set_book_info(&book);
                    books_house_modify(book);
                }
                break;
            }
            case 7: {
                return 0;
            }
            default:
                break;
            }
            printf("\n");
            system("pause");
        } while (true);
    
        return 0;
    }
    
    
    
    
    评论

报告相同问题?

问题事件

  • 系统已结题 5月21日
  • 提问应符合社区要求 5月14日
  • 修改了问题 5月13日
  • 提问应符合社区要求 5月13日
  • 展开全部