#include <stdio.h> #include <stdbool.h> #include <string.h>

#define MAX_SIZE 100

struct Book { char isbn[20]; char title[100]; float price; };

struct Library { struct Book books[MAX_SIZE]; int size; };

void initializeLibrary(struct Library* library) { library->size = 0; }

boolean isLibraryEmpty(struct Library* library) { return library->size == 0; }

boolean isLibraryFull(struct Library* library) { return library->size == MAX_SIZE; }

void insertBook(struct Library* library, struct Book book) { if (isLibraryFull(library)) { printf("图书馆已满,无法插入图书。\n"); return; }

library->books[library->size] = book;
library->size++;
printf("图书已成功插入。\n");

}

int findBook(struct Library* library, char* isbn) { for (int i = 0; i < library->size; i++) { if (strcmp(library->books[i].isbn, isbn) == 0) { return i; } } return -1; }

void deleteBook(struct Library* library, char* isbn) { int index = findBook(library, isbn); if (index == -1) { printf("未找到图书,无法删除。\n"); return; }

for (int i = index; i < library->size - 1; i++) {
    library->books[i] = library->books[i + 1];
}
library->size--;
printf("图书已成功删除。\n");

}

void updateBook(struct Library* library, char* isbn, struct Book newBook) { int index = findBook(library, isbn); if (index == -1) { printf("未找到图书,无法更新。\n"); return; }

library->books[index] = newBook;
printf("图书已成功更新。\n");

}

void sortByTitle(struct Library* library) { for (int i = 0; i < library->size - 1; i++) { for (int j = 0; j < library->size - i - 1; j++) { if (strcmp(library->books[j].title, library->books[j + 1].title) > 0) { struct Book temp = library->books[j]; library->books[j] = library->books[j + 1]; library->books[j + 1] = temp; } } } printf("图书已按标题成功排序。\n"); }

void printLibrary(struct Library* library) { printf("ISBN\t\t\t\t\t标题\t\t\t价格\n"); printf("--------------------------------------------------\n"); for (int i = 0; i < library->size; i++) { printf("%s\t%s\t%.2f\n", library->books[i].isbn, library->books[i].title, library->books[i].price); } printf("--------------------------------------------------\n"); }

void saveLibraryToFile(struct Library* library) { FILE* file = fopen("library.txt", "w");

if (file == NULL) {
    printf("无法打开文件。\n");
    return;
}

for (int i = 0; i < library->size; i++) {
    fprintf(file, "%s,%s,%.2f\n", library->books[i].isbn, library->books[i].title, library->books[i].price);
}

fclose(file);
printf("图书馆已成功保存到文件。\n");

}

void loadLibraryFromFile(struct Library* library) { FILE* file = fopen("library.txt", "r");

if (file == NULL) {
    printf("无法打开文件。\n");
    return;
}

char line[100];
while (fgets(line, sizeof(line), file)) {
    struct Book book;
    sscanf(line, "%[^,],%[^,],%f", book.isbn, book.title, &book.price);
    insertBook(library, book);
}

fclose(file); 
printf("图书馆已成功从文件加载。\n");

}

int main() { struct Library library; initializeLibrary(&library);

int choice;
while (1) {
    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("8. 从文件中加载图书馆\n");
    printf("0. 退出\n");
    printf("请输入您的选择:");
    scanf("%d", &choice);

    if (choice == 0) {
        break;
    }

    switch (choice) {
    case 1: {
        struct Book book;
        printf("请输入ISBN:");
        scanf("%s", book.isbn);
        printf("请输入标题:");
        scanf(" %[^

]s", book.title); printf("请输入价格:"); scanf("%f", &book.price);

        insertBook(&library, book);
        break;
    }
    case 2: {
        char isbn[20];
        printf("请输入ISBN:");
        scanf("%s", isbn);

        deleteBook(&library, isbn);
        break;
    }
    case 3: {
        char isbn[20];
        printf("请输入ISBN:");
        scanf("%s", isbn);

        struct Book newBook;
        printf("请输入新的ISBN:");
        scanf("%s", newBook.isbn);
        printf("请输入新的标题:");
        scanf(" %[^

]s", newBook.title); printf("请输入新的价格:"); scanf("%f", &newBook.price);

        updateBook(&library, isbn, newBook);
        break;
    }
    case 4: {
        char isbn[20];
        printf("请输入ISBN:");
        scanf("%s", isbn);

        int index = findBook(&library, isbn);
        if (index == -1) {
            printf("未找到该图书。\n");
        }
        else {
            printf("该图书位于索引 %d。\n", index);
        }
        break;
    }
    case 5: {
        sortByTitle(&library);
        break;
    }
    case 6: {
        printLibrary(&library);
        break;
    }
    case 7: {
        saveLibraryToFile(&library);
        break;
    }
    case 8: {
        loadLibraryFromFile(&library);
        break;
    }
    default:
        printf("无效选择。请重新选择。\n");
    }
}

return 0;
C 语言图书管理系统:添加、删除、更新、查找和排序书籍

原文地址: https://www.cveoy.top/t/topic/pNUT 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录