是的,可以将程序中的修改和查找功能改为使用数据库文件。以下是修改后的程序示例:

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

#define MAX_SIZE 1000

typedef struct {
    char bookCode[20];
    char bookName[50];
    char author[50];
    char publisher[50];
    char bookkind[50];
    char bookkinds[50];
    int quantity;
} Book;

Book bookList[MAX_SIZE];
int count = 0;

void loadBookData() {
    sqlite3 *db;
    int rc = sqlite3_open("book_storage.db", &db);
    if (rc != SQLITE_OK) {
        printf("无法打开数据库文件!\n");
        return;
    }

    sqlite3_stmt *stmt;
    const char *sql = "SELECT * FROM book";
    rc = sqlite3_prepare_v2(db, sql, -1, &stmt, NULL);
    if (rc != SQLITE_OK) {
        printf("无法执行查询语句!\n");
        return;
    }

    while (sqlite3_step(stmt) == SQLITE_ROW) {
        strcpy(bookList[count].bookCode, sqlite3_column_text(stmt, 0));
        strcpy(bookList[count].bookName, sqlite3_column_text(stmt, 1));
        strcpy(bookList[count].author, sqlite3_column_text(stmt, 2));
        strcpy(bookList[count].publisher, sqlite3_column_text(stmt, 3));
        strcpy(bookList[count].bookkind, sqlite3_column_text(stmt, 4));
        strcpy(bookList[count].bookkinds, sqlite3_column_text(stmt, 5));
        bookList[count].quantity = sqlite3_column_int(stmt, 6);
        count++;
    }

    sqlite3_finalize(stmt);
    sqlite3_close(db);
}

void saveBookData() {
    sqlite3 *db;
    int rc = sqlite3_open("book_storage.db", &db);
    if (rc != SQLITE_OK) {
        printf("无法打开数据库文件!\n");
        return;
    }

    const char *sql = "CREATE TABLE IF NOT EXISTS book ("
                      "bookCode TEXT PRIMARY KEY,"
                      "bookName TEXT,"
                      "author TEXT,"
                      "publisher TEXT,"
                      "bookkind TEXT,"
                      "bookkinds TEXT,"
                      "quantity INTEGER);";
    rc = sqlite3_exec(db, sql, NULL, NULL, NULL);
    if (rc != SQLITE_OK) {
        printf("无法创建表格!\n");
        return;
    }

    sql = "DELETE FROM book;";
    rc = sqlite3_exec(db, sql, NULL, NULL, NULL);
    if (rc != SQLITE_OK) {
        printf("无法清空表格!\n");
        return;
    }

    sqlite3_stmt *stmt;
    sql = "INSERT INTO book (bookCode, bookName, author, publisher, bookkind, bookkinds, quantity) VALUES (?, ?, ?, ?, ?, ?, ?);";
    rc = sqlite3_prepare_v2(db, sql, -1, &stmt, NULL);
    if (rc != SQLITE_OK) {
        printf("无法执行插入语句!\n");
        return;
    }

    int i;
    for (i = 0; i < count; i++) {
        sqlite3_bind_text(stmt, 1, bookList[i].bookCode, -1, SQLITE_STATIC);
        sqlite3_bind_text(stmt, 2, bookList[i].bookName, -1, SQLITE_STATIC);
        sqlite3_bind_text(stmt, 3, bookList[i].author, -1, SQLITE_STATIC);
        sqlite3_bind_text(stmt, 4, bookList[i].publisher, -1, SQLITE_STATIC);
        sqlite3_bind_text(stmt, 5, bookList[i].bookkind, -1, SQLITE_STATIC);
        sqlite3_bind_text(stmt, 6, bookList[i].bookkinds, -1, SQLITE_STATIC);
        sqlite3_bind_int(stmt, 7, bookList[i].quantity);

        rc = sqlite3_step(stmt);
        if (rc != SQLITE_DONE) {
            printf("无法插入数据!\n");
            return;
        }

        sqlite3_reset(stmt);
    }

    sqlite3_finalize(stmt);
    sqlite3_close(db);
}

void addBook() {
    Book newBook;
    printf("请输入图书编号:");
    scanf("%s", newBook.bookCode);
    printf("请输入书名:");
    scanf("%s", newBook.bookName);
    printf("请输入作者:");
    scanf("%s", newBook.author);
    printf("请输入出版社:");
    scanf("%s", newBook.publisher);
    printf("请输入图书种类:");
    scanf("%s", newBook.bookkind);
    printf("请输入图书种类编号:");
    scanf("%s", newBook.bookkinds);
    printf("请输入价格:");
    scanf("%d", &newBook.quantity);

    bookList[count++] = newBook;

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

void deleteBook() {
    char bookCode[20];
    printf("请输入要删除的图书编号:");
    scanf("%s", bookCode);

    int i, j;
    for (i = 0; i < count; i++) {
        if (strcmp(bookList[i].bookCode, bookCode) == 0) {
            for (j = i; j < count - 1; j++) {
                bookList[j] = bookList[j + 1];
            }
            count--;
            printf("删除成功!\n");
            return;
        }
    }

    printf("没有找到相关图书!\n");
}

void modifyBook() {
    char bookCode[20];
    printf("请输入要修改的图书编号:");
    scanf("%s", bookCode);

    int i;
    for (i = 0; i < count; i++) {
        if (strcmp(bookList[i].bookCode, bookCode) == 0) {
            printf("请输入新的书名:");
            scanf("%s", bookList[i].bookName);
            printf("请输入新的作者:");
            scanf("%s", bookList[i].author);
            printf("请输入新的出版社:");
            scanf("%s", bookList[i].publisher);
            printf("请输入新的图书种类:");
            scanf("%s", bookList[i].bookkind);
            printf("请输入新的图书种类编号:");
            scanf("%s", bookList[i].bookkinds);
            printf("请输入新的价格:");
            scanf("%d", &bookList[i].quantity);
            printf("修改成功!\n");
            return;
        }
    }

    printf("没有找到相关图书!\n");
}

void searchBook() {
    char bookName[50];
    printf("请输入要查找的书名:");
    scanf("%s", bookName);

    int i;
    int found = 0;
    for (i = 0; i < count; i++) {
        if (strcmp(bookList[i].bookName, bookName) == 0) {
            printf("图书编号:%s\n", bookList[i].bookCode);
            printf("书名:%s\n", bookList[i].bookName);
            printf("作者:%s\n", bookList[i].author);
            printf("出版社:%s\n", bookList[i].publisher);
            printf("图书种类:%s\n", bookList[i].bookkind);
            printf("图书种类编号:%s\n", bookList[i].bookkinds);
            printf("价格:%d\n", bookList[i].quantity);
            found = 1;
        }
    }

    if (!found) {
        printf("没有找到相关图书!\n");
    }
}

void displayBook() {
    int i;
    for (i = 0; i < count; i++) {
        printf("图书编号:%s\n", bookList[i].bookCode);
        printf("书名:%s\n", bookList[i].bookName);
        printf("作者:%s\n", bookList[i].author);
        printf("出版社:%s\n", bookList[i].publisher);
        printf("图书种类:%s\n", bookList[i].bookkind);
        printf("图书种类编号:%s\n", bookList[i].bookkinds);
        printf("价格:%d\n", bookList[i].quantity);
        
        printf("\n");
    }
    printf("图书种数:%d\n",count);
}

int main() {
    loadBookData();

    while (1) {
        printf("*****欢迎使用图书管理系统*****\n");
        printf("1. 添加图书信息\n");
        printf("2. 删除图书信息\n");
        printf("3. 修改图书信息\n");
        printf("4. 查找图书信息\n");
        printf("5. 显示图书信息\n");
        printf("0. 退出程序\n");
        printf("请输入您的选择:");

        int choice;
        scanf("%d", &choice);

        switch (choice) {
            case 1:
                addBook();
                break;
            case 2:
                deleteBook();
                break;
            case 3:
                modifyBook();
                break;
            case 4:
                searchBook();
                break;
            case 5:
                displayBook();
                break;
            case 0:
                saveBookData();
                printf("感谢使用,再见!\n");
                exit(0);
            default:
                printf("输入有误,请重新输入!\n");
                break;
        }
    }

    return 0;
}

以上是将修改和查找功能改为使用数据库文件的示例。在程序中使用了SQLite数据库,通过SQLite C接口进行数据库操作。程序中使用的数据库文件名为"book_storage.db",如果该文件不存在,程序会自动创建并初始化数据库表格。

#include stdioh#include stdlibh#include stringh#define MAX_SIZE 1000typedef struct char bookCode20; char bookName50; char author50; char publisher50; char bookkind50; char bookkinds

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

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