C语言图书借阅系统是一个非常基础的实现管理图书的系统,通常包含图书的信息、借阅状态等要素。以下是完整的攻略:
1. 系统功能设计
1.1 系统界面设计
考虑到C语言的控制台界面较为基础,因此可以采用类似以下的控制台菜单交互方式:
欢迎使用图书借阅系统
1. 添加图书信息
2. 显示图书信息
3. 借阅图书
4. 归还图书
5. 统计图书信息
6. 退出
请选择操作:
1.2 功能实现
根据上述菜单设计应用程序的各项功能实现:
- 添加图书信息
用户输入图书信息,如书名、作者、出版社等,将信息存入文件或数据库。关于文件操作,可以使用C语言库函数进行操作。例如,使用fprintf
函数将图书信息写入文件:
```c
FILE *fp;
char filename[20];
printf("请输入文件名:");
scanf("%s", filename);
fp = fopen(filename, "a");
fprintf(fp, "图书名称:%s,作者:%s,出版社:%s\n", book_name, author, publisher);
fclose(fp);
```
- 显示图书信息
将保存在文件或数据库中的图书信息读取出来,并在控制台上显示出来。使用fscanf
函数读取文件中的内容,并使用printf
函数在控制台上显示信息。
```c
FILE *fp;
char filename[20];
printf("请输入文件名:");
scanf("%s", filename);
fp = fopen(filename, "r");
while(fscanf(fp, "图书名称:%s,作者:%s,出版社:%s\n", book_name, author, publisher) != EOF) {
printf("图书名称:%s,作者:%s,出版社:%s\n", book_name, author, publisher);
}
fclose(fp);
```
- 借阅图书
从保存在文件或数据库中的图书信息中查询指定书名的图书信息,将借阅状态修改为“借阅中”。对于文件操作,可以先将所有数据读取到内存中,进行相应修改后再将修改后的数据写回文件中。例如:
```c
FILE *fp;
char filename[20];
char book_name[20];
Book books[100];
int i = 0;
int is_find = 0;
printf("请输入文件名:");
scanf("%s", filename);
printf("请输入图书名称:");
scanf("%s", book_name);
fp = fopen(filename, "r");
while(fscanf(fp, "图书名称:%s,作者:%s,出版社:%s,借阅状态:%d\n", books[i].book_name, books[i].author, books[i].publisher, &books[i].status) != EOF) {
if(strcmp(book_name, books[i].book_name) == 0) {
books[i].status = BORROWED;
is_find = 1;
break;
}
i++;
}
fclose(fp);
if(is_find) {
fp = fopen(filename, "w");
for(int j = 0; j <= i; j++) {
fprintf(fp, "图书名称:%s,作者:%s,出版社:%s,借阅状态:%d\n", books[j].book_name, books[j].author, books[j].publisher, books[j].status);
}
fclose(fp);
printf("借阅成功!\n");
} else {
printf("未找到该书籍!\n");
}
```
- 归还图书
从文件或数据库中查询指定书名的图书信息,将借阅状态修改为“未借阅”。同样可以先将所有数据读取到内存中,进行相应修改后再将修改后的数据写回文件中。
- 统计图书信息
统计图书库存总数、已借出图书数和未借出图书数。可以先读取所有数据到内存中,再进行相应统计。例如:
```c
FILE *fp;
char filename[20];
Book books[100];
int i = 0;
int total = 0, borrowed = 0, available = 0;
printf("请输入文件名:");
scanf("%s", filename);
fp = fopen(filename, "r");
while(fscanf(fp, "图书名称:%s,作者:%s,出版社:%s,借阅状态:%d\n", books[i].book_name, books[i].author, books[i].publisher, &books[i].status) != EOF) {
total++;
if(books[i].status == BORROWED) {
borrowed++;
} else if(books[i].status == AVAILABLE) {
available++;
}
i++;
}
fclose(fp);
printf("共计图书%d本,其中已借出%d本,未借出%d本。\n", total, borrowed, available);
```
2. 示例说明
以下是两个示例,分别演示了添加图书信息和统计图书信息的操作:
2.1 示例一:添加图书信息
以下是一段示例代码,演示了添加图书信息的操作。图书信息将保存在文件中,文件名由用户输入。
#include <stdio.h>
int main() {
char book_name[20];
char author[20];
char publisher[20];
char filename[20];
FILE *fp;
printf("请输入文件名:");
scanf("%s", filename);
printf("请输入图书名称:");
scanf("%s", book_name);
printf("请输入作者:");
scanf("%s", author);
printf("请输入出版社:");
scanf("%s", publisher);
fp = fopen(filename, "a");
fprintf(fp, "图书名称:%s,作者:%s,出版社:%s\n", book_name, author, publisher);
fclose(fp);
printf("添加成功!\n");
return 0;
}
2.2 示例二:统计图书信息
以下是一段示例代码,演示了统计图书信息的操作。图书信息保存在文件中,文件名由用户输入。
#include <stdio.h>
typedef enum {
AVAILABLE = 0,
BORROWED = 1
} BookStatus;
typedef struct {
char book_name[20];
char author[20];
char publisher[20];
BookStatus status;
} Book;
int main() {
char filename[20];
Book books[100];
int i = 0;
int total = 0, borrowed = 0, available = 0;
printf("请输入文件名:");
scanf("%s", filename);
FILE *fp = fopen(filename, "r");
while(fscanf(fp, "图书名称:%s,作者:%s,出版社:%s,借阅状态:%d\n", books[i].book_name, books[i].author, books[i].publisher, &books[i].status) != EOF) {
total++;
if(books[i].status == BORROWED) {
borrowed++;
} else if(books[i].status == AVAILABLE) {
available++;
}
i++;
}
printf("共计图书%d本,其中已借出%d本,未借出%d本。\n", total, borrowed, available);
fclose(fp);
return 0;
}
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言图书借阅系统源码 - Python技术站