计图书信息管理系统,图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。试设计一个图书信息管理系统,使之能提供以下功能:1、系统以菜单方式工作2、图书信息录入功能(图书信息用文件保存)--输入3、图书信息浏览功能--输出4、图书信息查询功能--算法按书名查询按作者名查询
时间: 2023-07-04 15:10:14 浏览: 107
好的,我可以为您设计一个简单的图书信息管理系统,具有以下功能:
1. 系统以菜单方式工作,用户可以选择相应的功能进行操作。
2. 图书信息录入功能:用户可以输入图书信息,并将其保存到文件中。
3. 图书信息浏览功能:用户可以查看已经录入的所有图书信息。
4. 图书信息查询功能:用户可以按照书名或者作者名查询图书信息。
以下是该系统的设计思路:
1. 首先,我们需要定义一个图书信息的结构体,包括登录号、书名、作者名、分类号、出版单位、出版时间、价格等字段。
2. 接下来,我们需要实现图书信息录入功能。用户可以通过菜单选择该功能,然后输入每本书的信息,将其保存到文件中。可以使用C语言中的文件操作函数来实现文件的读写功能。
3. 实现图书信息浏览功能。用户可以通过菜单选择该功能,然后从文件中读取已经保存的所有图书信息,打印出来供用户查看。
4. 实现图书信息查询功能。用户可以通过菜单选择该功能,然后输入要查询的书名或者作者名,程序将按照输入的关键字从文件中读取对应的图书信息,并打印出来。
下面是一个简单的代码示例,用于实现上述功能:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义图书信息结构体
typedef struct {
int id; // 登录号
char title[50]; // 书名
char author[50]; // 作者名
char category[20]; // 分类号
char publisher[50]; // 出版单位
char publish_date[20]; // 出版时间
float price; // 价格
} Book;
// 保存图书信息到文件中
void save_book_info(Book book) {
FILE *fp;
fp = fopen("book_info.txt", "a"); // 以追加模式打开文件
fprintf(fp, "%d,%s,%s,%s,%s,%s,%.2f\n", book.id, book.title, book.author,
book.category, book.publisher, book.publish_date, book.price);
fclose(fp);
}
// 从文件中读取图书信息
void read_book_info() {
FILE *fp;
Book book;
fp = fopen("book_info.txt", "r");
if (fp == NULL) {
printf("File open failed!");
return;
}
printf("ID\tTitle\tAuthor\tCategory\tPublisher\tPublish Date\tPrice\n");
while (fscanf(fp, "%d,%[^,],%[^,],%[^,],%[^,],%[^,],%f\n", &book.id, book.title, book.author,
book.category, book.publisher, book.publish_date, &book.price) != EOF) {
printf("%d\t%s\t%s\t%s\t%s\t%s\t%.2f\n", book.id, book.title, book.author,
book.category, book.publisher, book.publish_date, book.price);
}
fclose(fp);
}
// 按照书名查询图书信息
void search_by_title(char *title) {
FILE *fp;
Book book;
fp = fopen("book_info.txt", "r");
if (fp == NULL) {
printf("File open failed!");
return;
}
while (fscanf(fp, "%d,%[^,],%[^,],%[^,],%[^,],%[^,],%f\n", &book.id, book.title, book.author,
book.category, book.publisher, book.publish_date, &book.price) != EOF) {
if (strcmp(book.title, title) == 0) {
printf("%d\t%s\t%s\t%s\t%s\t%s\t%.2f\n", book.id, book.title, book.author,
book.category, book.publisher, book.publish_date, book.price);
}
}
fclose(fp);
}
// 按照作者名查询图书信息
void search_by_author(char *author) {
FILE *fp;
Book book;
fp = fopen("book_info.txt", "r");
if (fp == NULL) {
printf("File open failed!");
return;
}
while (fscanf(fp, "%d,%[^,],%[^,],%[^,],%[^,],%[^,],%f\n", &book.id, book.title, book.author,
book.category, book.publisher, book.publish_date, &book.price) != EOF) {
if (strcmp(book.author, author) == 0) {
printf("%d\t%s\t%s\t%s\t%s\t%s\t%.2f\n", book.id, book.title, book.author,
book.category, book.publisher, book.publish_date, book.price);
}
}
fclose(fp);
}
int main() {
int choice;
Book book;
while (1) {
printf("\n");
printf("1. Add book info\n");
printf("2. View book info\n");
printf("3. Search by title\n");
printf("4. Search by author\n");
printf("5. Exit\n");
printf("Enter your choice: ");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("Enter book id: ");
scanf("%d", &book.id);
printf("Enter book title: ");
scanf("%s", book.title);
printf("Enter author name: ");
scanf("%s", book.author);
printf("Enter category: ");
scanf("%s", book.category);
printf("Enter publisher: ");
scanf("%s", book.publisher);
printf("Enter publish date: ");
scanf("%s", book.publish_date);
printf("Enter price: ");
scanf("%f", &book.price);
save_book_info(book);
break;
case 2:
read_book_info();
break;
case 3:
printf("Enter book title to search: ");
scanf("%s", book.title);
search_by_title(book.title);
break;
case 4:
printf("Enter author name to search: ");
scanf("%s", book.author);
search_by_author(book.author);
break;
case 5:
exit(0);
default:
printf("Invalid choice!\n");
break;
}
}
return 0;
}
```
注意:以上代码仅供参考,可能存在一些错误或不足之处,使用时需要自行检查和修改。
阅读全文