C语言编程题实现一个简易的图书管理系统

C语言中,实现一个简易的图书管理系统。这个系统应该能够执行基本的图书管理操作,如添加图书、删除图书、查找图书和显示所有图书信息。

1、定义书籍

需要定义一个结构体来表示一本书,包含书名、作者、ISBN、出版日期等信息。可以根据需要增加或减少字段。

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

#define MAX_BOOKS 100
#define MAX_TITLE_LEN 100
#define MAX_AUTHOR_LEN 100

typedef struct {
    int id;
    char title[MAX_TITLE_LEN];
    char author[MAX_AUTHOR_LEN];
} Book;

Book library[MAX_BOOKS];
int book_count = 0;

int main() {
  printf("Hello, World!");
  return 0;
}

2、添加新书籍

需要实现一个函数,用于向系统中添加新的书籍。这个函数需要接收用户输入的书籍信息,并将其存储在合适的位置。

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

#define MAX_BOOKS 100
#define MAX_TITLE_LEN 100
#define MAX_AUTHOR_LEN 100

typedef struct {
    int id;
    char title[MAX_TITLE_LEN];
    char author[MAX_AUTHOR_LEN];
} Book;

Book library[MAX_BOOKS];
int book_count = 0;

void add_book() {
    if (book_count >= MAX_BOOKS) {
        printf("图书馆已满,无法添加更多书籍。\n");
        return;
    }

    Book new_book;
    new_book.id = book_count + 1;

    printf("请输入书名: ");
    getchar(); // 清除缓冲区的换行符
    fgets(new_book.title, MAX_TITLE_LEN, stdin);
    new_book.title[strcspn(new_book.title, "\n")] = '\0'; // 移除换行符

    printf("请输入作者: ");
    fgets(new_book.author, MAX_AUTHOR_LEN, stdin);
    new_book.author[strcspn(new_book.author, "\n")] = '\0'; // 移除换行符

    library[book_count] = new_book;
    book_count++;

    printf("书籍添加成功!\n");
}


int main() {
  printf("Hello, World!");
  return 0;
}

3、删除书籍

通过遍历书籍库找到指定ID的书籍,然后将其后面的书籍向前移动以填补空缺,最后减少书籍总数。

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

#define MAX_BOOKS 100
#define MAX_TITLE_LEN 100
#define MAX_AUTHOR_LEN 100

typedef struct {
    int id;
    char title[MAX_TITLE_LEN];
    char author[MAX_AUTHOR_LEN];
} Book;

Book library[MAX_BOOKS];
int book_count = 0;


void delete_book() {
    int id;
    printf("请输入要删除的书籍ID: ");
    scanf("%d", &id);

    int found = 0;
    for (int i = 0; i < book_count; i++) {
        if (library[i].id == id) {
            found = 1;
            for (int j = i; j < book_count - 1; j++) {
                library[j] = library[j + 1];
            }
            book_count--;
            printf("书籍删除成功!\n");
            break;
        }
    }

    if (!found) {
        printf("未找到该ID的书籍。\n");
    }
}


int main() {
  printf("Hello, World!");
  return 0;
}

4、查找书籍

定义了一个search_book函数,该函数接收一个Book数组(代表图书馆)、书籍数量和要查找的书籍ID作为参数。函数通过遍历图书馆数组,查找与给定ID匹配的书籍,并输出相关信息。

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

#define MAX_BOOKS 100
#define MAX_TITLE_LEN 100
#define MAX_AUTHOR_LEN 100

typedef struct {
    int id;
    char title[MAX_TITLE_LEN];
    char author[MAX_AUTHOR_LEN];
} Book;

Book library[MAX_BOOKS];
int book_count = 0;

void search_book() {
    char title[MAX_TITLE_LEN];
    printf("请输入要查找的书名: ");
    getchar(); // 清除缓冲区的换行符
    fgets(title, MAX_TITLE_LEN, stdin);
    title[strcspn(title, "\n")] = '\0'; // 移除换行符

    int found = 0;
    for (int i = 0; i < book_count; i++) {
        if (strcmp(library[i].title, title) == 0) {
            printf("找到书籍: ID=%d, 书名=%s, 作者=%s\n", library[i].id, library[i].title, library[i].author);
            found = 1;
        }
    }

    if (!found) {
        printf("未找到该书籍。\n");
    }
}

int main() {
  printf("Hello, World!");
  return 0;
}

5、显示所有书籍

book_count表示图书馆中书籍的数量。display_books函数通过一个for循环遍历图书馆中的每一本书,并打印其ID、书名和作者。

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

#define MAX_BOOKS 100
#define MAX_TITLE_LEN 100
#define MAX_AUTHOR_LEN 100

typedef struct {
    int id;
    char title[MAX_TITLE_LEN];
    char author[MAX_AUTHOR_LEN];
} Book;

Book library[MAX_BOOKS];
int book_count = 0;


void display_books() {
    if (book_count == 0) {
        printf("图书馆中没有书籍。\n");
        return;
    }

    printf("图书馆中的书籍:\n");
    for (int i = 0; i < book_count; i++) {
        printf("ID=%d, 书名=%s, 作者=%s\n", library[i].id, library[i].title, library[i].author);
    }
}

int main() {
  printf("Hello, World!");
  return 0;
}

6、完整代码

一个简易的图书管理系统,可以根据自己的需求进行扩展和完善。

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

#define MAX_BOOKS 100
#define MAX_TITLE_LEN 100
#define MAX_AUTHOR_LEN 100

typedef struct {
    int id;
    char title[MAX_TITLE_LEN];
    char author[MAX_AUTHOR_LEN];
} Book;

Book library[MAX_BOOKS];
int book_count = 0;

void add_book() {
    if (book_count >= MAX_BOOKS) {
        printf("图书馆已满,无法添加更多书籍。\n");
        return;
    }

    Book new_book;
    new_book.id = book_count + 1;

    printf("请输入书名: ");
    getchar(); // 清除缓冲区的换行符
    fgets(new_book.title, MAX_TITLE_LEN, stdin);
    new_book.title[strcspn(new_book.title, "\n")] = '\0'; // 移除换行符

    printf("请输入作者: ");
    fgets(new_book.author, MAX_AUTHOR_LEN, stdin);
    new_book.author[strcspn(new_book.author, "\n")] = '\0'; // 移除换行符

    library[book_count] = new_book;
    book_count++;

    printf("书籍添加成功!\n");
}

void delete_book() {
    int id;
    printf("请输入要删除的书籍ID: ");
    scanf("%d", &id);

    int found = 0;
    for (int i = 0; i < book_count; i++) {
        if (library[i].id == id) {
            found = 1;
            for (int j = i; j < book_count - 1; j++) {
                library[j] = library[j + 1];
            }
            book_count--;
            printf("书籍删除成功!\n");
            break;
        }
    }

    if (!found) {
        printf("未找到该ID的书籍。\n");
    }
}

void search_book() {
    char title[MAX_TITLE_LEN];
    printf("请输入要查找的书名: ");
    getchar(); // 清除缓冲区的换行符
    fgets(title, MAX_TITLE_LEN, stdin);
    title[strcspn(title, "\n")] = '\0'; // 移除换行符

    int found = 0;
    for (int i = 0; i < book_count; i++) {
        if (strcmp(library[i].title, title) == 0) {
            printf("找到书籍: ID=%d, 书名=%s, 作者=%s\n", library[i].id, library[i].title, library[i].author);
            found = 1;
        }
    }

    if (!found) {
        printf("未找到该书籍。\n");
    }
}

void display_books() {
    if (book_count == 0) {
        printf("图书馆中没有书籍。\n");
        return;
    }

    printf("图书馆中的书籍:\n");
    for (int i = 0; i < book_count; i++) {
        printf("ID=%d, 书名=%s, 作者=%s\n", library[i].id, library[i].title, library[i].author);
    }
}

int main() {
    int choice;

    do {
        printf("\n图书管理系统\n");
        printf("1. 添加书籍\n");
        printf("2. 删除书籍\n");
        printf("3. 查找书籍\n");
        printf("4. 显示所有书籍\n");
        printf("5. 退出\n");
        printf("请选择操作(1-5): ");
        scanf("%d", &choice);

        switch (choice) {
            case 1:
                add_book();
                break;
            case 2:
                delete_book();
                break;
            case 3:
                search_book();
                break;
            case 4:
                display_books();
                break;
            case 5:
                printf("退出系统。\n");
                break;
            default:
                printf("无效的选择,请重新选择。\n");
        }
    } while (choice != 5);

    return 0;
}

推荐阅读
cjavapy编程之路首页