用C语言开发一个简单的图书信息管理系统。实现图书的管理,读者信息管理以及借阅管理功能。
时间: 2024-05-03 22:18:47 浏览: 109
好的,我可以给你一个简单的图书信息管理系统的框架,你可以在此基础上进行开发。
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义图书结构体
typedef struct book {
char name[50]; // 书名
char author[20]; // 作者
char publisher[20]; // 出版社
float price; // 价格
int borrow; // 是否被借阅,0表示未借,1表示已借
char borrower[20]; // 借阅者姓名
} Book;
// 定义读者结构体
typedef struct reader {
char name[20]; // 姓名
char ID[20]; // 学号/工号
int borrow_num; // 借阅数量
} Reader;
// 定义图书数组和读者数组
Book books[100];
Reader readers[100];
// 定义全局变量,记录图书和读者的数量
int book_num = 0;
int reader_num = 0;
// 添加图书函数
void add_book() {
if (book_num >= 100) {
printf("图书数量已达上限,无法添加新的图书!\n");
return;
}
Book new_book;
printf("请输入新图书的信息:\n");
printf("书名:");
scanf("%s", new_book.name);
printf("作者:");
scanf("%s", new_book.author);
printf("出版社:");
scanf("%s", new_book.publisher);
printf("价格:");
scanf("%f", &new_book.price);
new_book.borrow = 0; // 新添加的图书默认未被借阅
strcpy(new_book.borrower, ""); // 借阅者姓名为空字符串
books[book_num++] = new_book; // 将新图书添加到数组中
printf("添加成功!\n");
}
// 添加读者函数
void add_reader() {
if (reader_num >= 100) {
printf("读者数量已达上限,无法添加新的读者!\n");
return;
}
Reader new_reader;
printf("请输入新读者的信息:\n");
printf("姓名:");
scanf("%s", new_reader.name);
printf("学号/工号:");
scanf("%s", new_reader.ID);
new_reader.borrow_num = 0; // 新添加的读者默认借阅数量为0
readers[reader_num++] = new_reader; // 将新读者添加到数组中
printf("添加成功!\n");
}
// 显示图书列表函数
void display_books() {
printf("所有图书列表如下:\n");
printf("编号\t书名\t作者\t出版社\t价格\t状态\t借阅者\n");
for (int i = 0; i < book_num; i++) {
printf("%d\t%s\t%s\t%s\t%.2f\t", i+1, books[i].name, books[i].author, books[i].publisher, books[i].price);
if (books[i].borrow == 0) {
printf("未借出\t-\n");
} else {
printf("已借出\t%s\n", books[i].borrower);
}
}
}
// 显示读者列表函数
void display_readers() {
printf("所有读者列表如下:\n");
printf("编号\t姓名\t学号/工号\t借阅数量\n");
for (int i = 0; i < reader_num; i++) {
printf("%d\t%s\t%s\t%d\n", i+1, readers[i].name, readers[i].ID, readers[i].borrow_num);
}
}
// 借书函数
void borrow_book() {
printf("请输入借阅者的学号/工号:");
char ID[20];
scanf("%s", ID);
int reader_index = -1; // 记录借阅者在数组中的下标
for (int i = 0; i < reader_num; i++) {
if (strcmp(ID, readers[i].ID) == 0) {
reader_index = i;
break;
}
}
if (reader_index == -1) {
printf("找不到该借阅者,请检查输入的学号/工号是否正确!\n");
return;
}
if (readers[reader_index].borrow_num >= 5) {
printf("该借阅者已达到最大借阅数量,无法再借阅图书!\n");
return;
}
printf("请输入要借阅的图书编号:");
int book_index;
scanf("%d", &book_index);
book_index--; // 数组下标从0开始,需要减1
if (book_index < 0 || book_index >= book_num) {
printf("找不到该图书,请检查输入的编号是否正确!\n");
return;
}
if (books[book_index].borrow == 1) {
printf("该图书已被借阅!\n");
return;
}
// 借阅成功,更新图书和借阅者信息
books[book_index].borrow = 1;
strcpy(books[book_index].borrower, readers[reader_index].name);
readers[reader_index].borrow_num++;
printf("借阅成功!\n");
}
// 还书函数
void return_book() {
printf("请输入归还的图书编号:");
int book_index;
scanf("%d", &book_index);
book_index--; // 数组下标从0开始,需要减1
if (book_index < 0 || book_index >= book_num) {
printf("找不到该图书,请检查输入的编号是否正确!\n");
return;
}
if (books[book_index].borrow == 0) {
printf("该图书未被借阅!\n");
return;
}
// 还书成功,更新图书和借阅者信息
books[book_index].borrow = 0;
strcpy(books[book_index].borrower, "");
printf("还书成功!\n");
}
int main() {
int choice;
do {
// 显示菜单
printf("\n======================\n");
printf("1. 添加图书\n");
printf("2. 添加读者\n");
printf("3. 显示图书列表\n");
printf("4. 显示读者列表\n");
printf("5. 借书\n");
printf("6. 还书\n");
printf("0. 退出\n");
printf("======================\n");
printf("请输入您的选择:");
scanf("%d", &choice);
switch (choice) {
case 1:
add_book();
break;
case 2:
add_reader();
break;
case 3:
display_books();
break;
case 4:
display_readers();
break;
case 5:
borrow_book();
break;
case 6:
return_book();
break;
case 0:
break;
default:
printf("输入有误,请重新输入!\n");
break;
}
} while (choice != 0);
return 0;
}
```
这个简单的图书信息管理系统包括了添加图书、添加读者、显示图书列表、显示读者列表、借书和还书等基本功能。你可以根据自己的需求进行修改和扩展。当然,这个系统还有很多不足之处,比如没有进行输入检查、没有持久化存储数据等,但是这个框架可以帮助你快速入门图书信息管理系统的开发。
阅读全文