图书信息管理系统设计c语言数据结构分析
时间: 2023-08-07 20:27:38 浏览: 97
设计一个图书信息管理系统,需要考虑以下几个方面:
1. 数据结构设计:需要考虑如何存储图书的信息,比如书名、作者、出版社、价格等等。可以使用结构体来定义一个图书信息的数据类型,如下所示:
```C
typedef struct book {
char name[50];
char author[20];
char publisher[30];
float price;
} Book;
```
2. 数据存储:可以使用文件来存储图书信息,每本书存储一行,不同属性之间用逗号分隔。可以使用 fscanf() 和 fprintf() 来读写文件。也可以使用链表等数据结构来存储图书信息,方便对数据进行增删改查操作。
3. 功能模块设计:需要设计几个功能模块,包括:添加图书信息、删除图书信息、修改图书信息、查询图书信息、显示所有图书信息等。可以使用 switch-case 语句来实现不同功能模块的调用。
下面是一个简单的例子:
```C
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct book {
char name[50];
char author[20];
char publisher[30];
float price;
} Book;
void add_book() {
FILE *fp;
Book book;
fp = fopen("books.dat", "a");
if (fp == NULL) {
printf("Error: cannot open file.\n");
return;
}
printf("Please enter book name: ");
scanf("%s", book.name);
printf("Please enter author name: ");
scanf("%s", book.author);
printf("Please enter publisher name: ");
scanf("%s", book.publisher);
printf("Please enter book price: ");
scanf("%f", &book.price);
fprintf(fp, "%s,%s,%s,%.2f\n", book.name, book.author, book.publisher, book.price);
fclose(fp);
}
void display_books() {
FILE *fp;
Book book;
fp = fopen("books.dat", "r");
if (fp == NULL) {
printf("Error: cannot open file.\n");
return;
}
printf("Book list:\n");
while (fscanf(fp, "%[^,],%[^,],%[^,],%f\n", book.name, book.author, book.publisher, &book.price) != EOF) {
printf("%s\t%s\t%s\t%.2f\n", book.name, book.author, book.publisher, book.price);
}
fclose(fp);
}
int main() {
int choice;
while (1) {
printf("Please choose an option:\n");
printf("1. Add a book\n");
printf("2. Display all books\n");
printf("3. Quit\n");
scanf("%d", &choice);
switch (choice) {
case 1:
add_book();
break;
case 2:
display_books();
break;
case 3:
exit(0);
default:
printf("Invalid option.\n");
break;
}
}
return 0;
}
```
这个程序可以不断添加图书信息,并且可以显示所有已添加的图书信息。可以根据需要扩展其他功能模块。
阅读全文