用c语言程序创建文件编写图书信息管理系统代码,图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、 价格等。 试设计一图书信息管理系统,使之能提供以下功能: 1、系统以菜单方式工作 2、图书信息录入功能(图书信息用文件保存)--输入 3、图书信息浏览功能--输出 4、图书信息查询功能--算法 查询方式 按书名查询 按作者名查询 5、图书信息的删除与修改
时间: 2023-07-10 13:38:25 浏览: 49
以下是一个简单的图书信息管理系统的代码,使用 C 语言编写。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_BOOKS 100 // 最多可存储的图书数量
#define MAX_NAME_LENGTH 50 // 图书名的最大长度
#define MAX_AUTHOR_LENGTH 30 // 作者名的最大长度
#define FILENAME "books.dat" // 存储图书信息的文件名
// 图书结构体
typedef struct {
int id; // 登录号
char name[MAX_NAME_LENGTH]; // 书名
char author[MAX_AUTHOR_LENGTH]; // 作者名
int category; // 分类号
char publisher[50]; // 出版单位
char publish_date[20]; // 出版时间
float price; // 价格
} Book;
// 图书信息数组
Book books[MAX_BOOKS];
int num_books = 0; // 当前存储的图书数量
// 添加图书信息
void add_book() {
if (num_books >= MAX_BOOKS) {
printf("存储空间已满,无法继续添加图书信息。\n");
return;
}
Book book;
printf("请输入图书信息:\n");
printf("登录号:");
scanf("%d", &book.id);
printf("书名:");
scanf("%s", book.name);
printf("作者名:");
scanf("%s", book.author);
printf("分类号:");
scanf("%d", &book.category);
printf("出版单位:");
scanf("%s", book.publisher);
printf("出版时间:");
scanf("%s", book.publish_date);
printf("价格:");
scanf("%f", &book.price);
books[num_books++] = book;
printf("添加图书信息成功!\n");
}
// 浏览图书信息
void list_books() {
if (num_books == 0) {
printf("暂无图书信息。\n");
return;
}
printf("图书信息列表:\n");
printf("%-10s%-20s%-15s%-15s%-20s%-15s%-10s\n", "登录号", "书名", "作者名", "分类号", "出版单位", "出版时间", "价格");
for (int i = 0; i < num_books; i++) {
Book book = books[i];
printf("%-10d%-20s%-15s%-15d%-20s%-15s%-10.2f\n", book.id, book.name, book.author, book.category, book.publisher, book.publish_date, book.price);
}
}
// 按书名查询图书信息
void search_book_by_name() {
if (num_books == 0) {
printf("暂无图书信息。\n");
return;
}
char name[MAX_NAME_LENGTH];
printf("请输入要查询的书名:");
scanf("%s", name);
int found = 0;
printf("查询结果:\n");
printf("%-10s%-20s%-15s%-15s%-20s%-15s%-10s\n", "登录号", "书名", "作者名", "分类号", "出版单位", "出版时间", "价格");
for (int i = 0; i < num_books; i++) {
Book book = books[i];
if (strcmp(book.name, name) == 0) {
printf("%-10d%-20s%-15s%-15d%-20s%-15s%-10.2f\n", book.id, book.name, book.author, book.category, book.publisher, book.publish_date, book.price);
found = 1;
}
}
if (!found) {
printf("未找到该书名的图书信息。\n");
}
}
// 按作者名查询图书信息
void search_book_by_author() {
if (num_books == 0) {
printf("暂无图书信息。\n");
return;
}
char author[MAX_AUTHOR_LENGTH];
printf("请输入要查询的作者名:");
scanf("%s", author);
int found = 0;
printf("查询结果:\n");
printf("%-10s%-20s%-15s%-15s%-20s%-15s%-10s\n", "登录号", "书名", "作者名", "分类号", "出版单位", "出版时间", "价格");
for (int i = 0; i < num_books; i++) {
Book book = books[i];
if (strcmp(book.author, author) == 0) {
printf("%-10d%-20s%-15s%-15d%-20s%-15s%-10.2f\n", book.id, book.name, book.author, book.category, book.publisher, book.publish_date, book.price);
found = 1;
}
}
if (!found) {
printf("未找到该作者名的图书信息。\n");
}
}
// 删除图书信息
void delete_book() {
if (num_books == 0) {
printf("暂无图书信息。\n");
return;
}
int id;
printf("请输入要删除的图书的登录号:");
scanf("%d", &id);
int found = 0;
for (int i = 0; i < num_books; i++) {
if (books[i].id == id) {
found = 1;
for (int j = i; j < num_books - 1; j++) {
books[j] = books[j + 1];
}
num_books--;
printf("删除图书信息成功!\n");
break;
}
}
if (!found) {
printf("未找到该登录号的图书信息。\n");
}
}
// 修改图书信息
void edit_book() {
if (num_books == 0) {
printf("暂无图书信息。\n");
return;
}
int id;
printf("请输入要修改的图书的登录号:");
scanf("%d", &id);
int found = 0;
for (int i = 0; i < num_books; i++) {
if (books[i].id == id) {
found = 1;
printf("请输入新的图书信息:\n");
printf("书名:");
scanf("%s", books[i].name);
printf("作者名:");
scanf("%s", books[i].author);
printf("分类号:");
scanf("%d", &books[i].category);
printf("出版单位:");
scanf("%s", books[i].publisher);
printf("出版时间:");
scanf("%s", books[i].publish_date);
printf("价格:");
scanf("%f", &books[i].price);
printf("修改图书信息成功!\n");
break;
}
}
if (!found) {
printf("未找到该登录号的图书信息。\n");
}
}
// 保存图书信息到文件
void save_books() {
FILE *fp = fopen(FILENAME, "wb");
if (fp == NULL) {
printf("无法打开文件 %s 进行写入。\n", FILENAME);
return;
}
fwrite(&num_books, sizeof(int), 1, fp);
fwrite(books, sizeof(Book), num_books, fp);
fclose(fp);
printf("图书信息已保存到文件 %s 中。\n", FILENAME);
}
// 从文件中读取图书信息
void load_books() {
FILE *fp = fopen(FILENAME, "rb");
if (fp == NULL) {
printf("无法打开文件 %s 进行读取。\n", FILENAME);
return;
}
fread(&num_books, sizeof(int), 1, fp);
fread(books, sizeof(Book), num_books, fp);
fclose(fp);
printf("从文件 %s 中读取了 %d 条图书信息。\n", FILENAME, num_books);
}
// 显示菜单
int show_menu() {
int choice;
printf("\n图书信息管理系统\n");
printf("---------------------------\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("9. 退出系统\n");
printf("---------------------------\n");
printf("请选择操作:");
scanf("%d", &choice);
return choice;
}
// 主函数
int main() {
load_books();
int choice;
do {
choice = show_menu();
switch (choice) {
case 1:
add_book();
break;
case 2:
list_books();
break;
case 3:
search_book_by_name();
break;
case 4:
search_book_by_author();
break;
case 5:
delete_book();
break;
case 6:
edit_book();
break;
case 7:
save_books();
break;
case 8:
load_books();
break;
case 9:
printf("谢谢使用图书信息管理系统!\n");
break;
default:
printf("无效的操作,请重新选择!\n");
break;
}
} while (choice != 9);
return 0;
}
```
这个程序使用了一个图书结构体来表示图书信息,并且使用一个全局数组 `books` 来存储所有的图书信息。其中,`num_books` 变量记录了当前存储的图书数量。
程序提供了添加、浏览、查询、删除和修改图书信息的功能,并且可以将图书信息保存到文件中,也可以从文件中读取图书信息。具体实现可以参考代码中的注释。