基于 c 语言的图书管理系统实现
1个回答
关注
展开全部
基于 C 语言的图书管理系统可以通过文件存储来实现,以下是简单的实现步骤: 1. 定义图书结构体(book),包括书名、作者、出版社、出版日期、价格等信息。 2. 定义图书管理结构体(library),包括所管理的图书数组指针、当前图书数量、图书数组大小、图书存储文件名等信息。 3. 实现图书的增加、删除、查找、编辑等操作,通过调用数组的相关操作来实现。 4. 数据的持久化保存,通过将当前图书数组保存到文件中,实现图书数据的持久化。
咨询记录 · 回答于2023-05-12
基于 c 语言的图书管理系统实现
基于 C 语言的图书管理系统可以通过文件存储来实现,以下是简单的实现步骤: 1. 定义图书结构体(book),包括书名、作者、出版社、出版日期、价格等信息。 2. 定义图书管理结构体(library),包括所管理的图书数组指针、当前图书数量、图书数组大小、图书存储文件名等信息。 3. 实现图书的增加、删除、查找、编辑等操作,通过调用数组的相关操作来实现。 4. 数据的持久化保存,通过将当前图书数组保存到文件中,实现图书数据的持久化。
#include #include // 定义图书结构体typedef struct { char title[100]; // 书名 char author[50]; // 作者 char publisher[50]; // 出版社 char publish_date[20]; // 出版日期 float price; // 价格} Book;// 定义图书管理结构体typedef struct { Book *books; // 图书指针数组 int count; // 当前图书数量 int capacity; // 图书数组大小 char filename[100]; // 图书文件名} Library;
"); return; } lib->books[lib->count++] = book; } // 删除图书 void delete_book(Library *lib, char *title) { int index = -1; for (int i = 0; i lib->count; i++) { if (strcmp(lib->books[i].title, title) == 0) { index = i; break; } } if (index != -1) { for (int i = index; i lib->count - 1; i++) { lib->books[i] = lib->books[i + 1]; } lib->count--; } else { printf("Error: The book is not found. ");
小红书风格文案输入你想发布的内容,帮你生成小红书的风格。写文案为任何产品撰写介绍文案写日报定制生成各领域的工作日报翻译对各种语言进行翻译SWOT分析法详细描述目前事件的情势,小助手会帮你生成一份SWOT分析报告佛祖解惑佛祖为您解惑林黛玉以林黛玉的风格进行回答更多模板文案、效率工具、角色扮演、娱乐等模板小魔咒AI绘画打开每天可领 8 次AI问答次数哦 如需使用电脑版,可在电脑微信打开小程序 防止迷路,请尽量、尽量、尽量关注公众号左下角菜单点击每日领次数即可关注公众号点击查看历史记录TH车载syu一android非常抱歉,您的输入并不是一个完整的句子,我无法理解您想要什么帮助。请您提供更多信息或者明确您的问题。谢谢!长按信息复制TH车载syu一android是什么车载SYU是“智能车联网操作系统”,它是在汽车上运行的一款软件,提供了丰富的汽车信息和服务,包括导航、多媒体播放、语音识别、远程控制等功能。而Android是一种移动操作系统,目前主要用于智能手机、平板电脑等移动设备上。 因此,车载SYU一Android可以理解为在汽车上运行的使用Android系统的车载智能操作系统,
// 查找图书 void find_book(Library *lib, char *title) { int index = -1; for (int i = 0; i lib->count; i++) { if (strcmp(lib->books[i].title, title) == 0) { index = i; break; } } if (index != -1) { Book *book = &lib->books[index]; printf("Title: %s ", book->title); printf("Author: %s ", book->author); printf("Publisher: %s ", book->publisher); printf("Publish Date: %s ", book->publish_date); printf("Price: %.2f ", book->price);
book->price); } else { printf("Error: The book is not found. "); } } // 编辑图书 void edit_book(Library *lib, char *title, Book book) { int index = -1; for (int i = 0; i lib->count; i++) { if (strcmp(lib->books[i].title, title) == 0) { index = i; break; } } if (index != -1) { lib->books[index] = book; } else { printf("Error: The book is not found. "); }
// 加载图书 void load_books(Library *lib) { FILE *fp = fopen(lib->filename, "r"); if (fp == NULL) { return; } fread(&lib->count, sizeof(int), 1, fp); fread(lib->books, sizeof(Book), lib->count, fp); fclose(fp); } // 保存图书 void save_books(Library *lib) { FILE *fp = fopen(lib->filename, "w"); if (fp == NULL) { return; } fwrite(&lib->count, sizeof(int), 1, fp); fwrite(lib->books, sizeof(Book), lib->count, fp); fclose(fp); }
// 主函数 int main() { Library lib; init_library(&lib, "books.dat", 100); load_books(&lib); // 添加新图书 Book book1 = {"The C Programming Language", "Brian W. Kernighan and Dennis M. Ritchie", "Prentice Hall", "1978-02-22", 22.99}; add_book(&lib, book1); // 删除图书 char title[] = "C++ Primer Plus"; delete_book(&lib, title); // 查找图书 char title2[] = "The C Programming Language"; find_book(&lib, title2);
// 编辑图书 char title3[] = "Programming Perl"; Book book2 = {"Learning Perl", "Randal L. Schwartz and Tom Phoenix", "O'Reilly Media", "2011-07-01", 23.99}; edit_book(&lib, title3, book2); save_books(&lib); free(lib.books);
在上述实现中,我们定义了图书结构体和图书管理结构体,通过库函数malloc动态分配了空间。然后,我们实现了图书的增删查改等操作函数,并通过文件的读写操作,实现了数据的持久化,确保了图书信息不会因程序退出而消失。