c语言程序设计图书管理系统
时间: 2023-07-13 15:39:01 浏览: 187
好的,你想了解关于C语言程序设计的图书管理系统。一般来说,图书管理系统需要实现以下功能:
1. 图书信息的录入、修改、删除和查询
2. 读者信息的录入、修改、删除和查询
3. 图书借阅、归还和续借功能
4. 图书库存管理和统计功能
5. 系统登录和权限管理功能
在C语言中,可以使用文件来存储和读取图书和读者信息。同时,可以使用结构体来定义图书和读者的属性,如书名、作者、ISBN号、出版社、借阅状态等。
以下是一个简单的C语言程序设计的图书管理系统示例:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_BOOKS 100 // 最大书籍数量
#define MAX_READERS 100 // 最大读者数量
// 定义图书结构体
typedef struct Book {
int id; // 书籍编号
char title[50]; // 书名
char author[50]; // 作者
char publisher[50]; // 出版社
int status; // 借阅状态,1代表已借出,0代表未借出
} Book;
// 定义读者结构体
typedef struct Reader {
int id; // 读者编号
char name[50]; // 姓名
char email[50]; // 电子邮件
int books[3]; // 借阅书籍编号,最多借阅3本
} Reader;
// 定义图书馆结构体
typedef struct Library {
Book books[MAX_BOOKS]; // 书籍数组
Reader readers[MAX_READERS]; // 读者数组
int book_count; // 当前书籍数量
int reader_count; // 当前读者数量
} Library;
// 初始化图书馆
void init_library(Library *lib) {
lib->book_count = 0;
lib->reader_count = 0;
}
// 添加书籍
void add_book(Library *lib, Book book) {
if (lib->book_count >= MAX_BOOKS) {
printf("图书馆已满,无法添加新书籍!\n");
return;
}
book.id = lib->book_count + 1;
lib->books[lib->book_count] = book;
lib->book_count++;
printf("添加成功!\n");
}
// 添加读者
void add_reader(Library *lib, Reader reader) {
if (lib->reader_count >= MAX_READERS) {
printf("图书馆已满,无法添加新读者!\n");
return;
}
reader.id = lib->reader_count + 1;
lib->readers[lib->reader_count] = reader;
lib->reader_count++;
printf("添加成功!\n");
}
// 借书
void borrow_book(Library *lib, int book_id, int reader_id) {
Book *book = NULL;
Reader *reader = NULL;
for (int i = 0; i < lib->book_count; i++) {
if (lib->books[i].id == book_id) {
book = &lib->books[i];
break;
}
}
for (int i = 0; i < lib->reader_count; i++) {
if (lib->readers[i].id == reader_id) {
reader = &lib->readers[i];
break;
}
}
if (book == NULL || reader == NULL) {
printf("借书失败!未找到对应的书籍或读者。\n");
return;
}
if (book->status == 1) {
printf("借书失败!该书籍已被借出。\n");
return;
}
if (reader->books[0] != 0 && reader->books[1] != 0 && reader->books[2] != 0) {
printf("借书失败!该读者已达到借阅上限。\n");
return;
}
for (int i = 0; i < 3; i++) {
if (reader->books[i] == 0) {
reader->books[i] = book_id;
break;
}
}
book->status = 1;
printf("借书成功!\n");
}
// 还书
void return_book(Library *lib, int book_id, int reader_id) {
Book *book = NULL;
Reader *reader = NULL;
for (int i = 0; i < lib->book_count; i++) {
if (lib->books[i].id == book_id) {
book = &lib->books[i];
break;
}
}
for (int i = 0; i < lib->reader_count; i++) {
if (lib->readers[i].id == reader_id) {
reader = &lib->readers[i];
break;
}
}
if (book == NULL || reader == NULL) {
printf("还书失败!未找到对应的书籍或读者。\n");
return;
}
if (book->status == 0) {
printf("还书失败!该书籍未被借出。\n");
return;
}
int index = -1;
for (int i = 0; i < 3; i++) {
if (reader->books[i] == book_id) {
index = i;
break;
}
}
if (index == -1) {
printf("还书失败!该读者未借阅该书籍。\n");
return;
}
reader->books[index] = 0;
book->status = 0;
printf("还书成功!\n");
}
// 显示所有书籍
void show_all_books(Library *lib) {
printf("所有书籍信息:\n");
for (int i = 0; i < lib->book_count; i++) {
printf("编号:%d,书名:%s,作者:%s,出版社:%s,借阅状态:%s\n",
lib->books[i].id, lib->books[i].title, lib->books[i].author,
lib->books[i].publisher, lib->books[i].status == 1 ? "已借出" : "未借出");
}
}
// 显示所有读者
void show_all_readers(Library *lib) {
printf("所有读者信息:\n");
for (int i = 0; i < lib->reader_count; i++) {
printf("编号:%d,姓名:%s,电子邮件:%s,借阅书籍编号:", lib->readers[i].id, lib->readers[i].name, lib->readers[i].email);
for (int j = 0; j < 3; j++) {
if (lib->readers[i].books[j] != 0) {
printf("%d ", lib->readers[i].books[j]);
}
}
printf("\n");
}
}
int main() {
Library lib;
init_library(&lib);
while (1) {
printf("请选择操作:\n");
printf("1. 添加书籍\n");
printf("2. 添加读者\n");
printf("3. 借书\n");
printf("4. 还书\n");
printf("5. 显示所有书籍\n");
printf("6. 显示所有读者\n");
printf("0. 退出\n");
int choice;
scanf("%d", &choice);
switch (choice) {
case 1: {
Book book;
printf("请输入书籍信息:\n");
printf("书名:");
scanf("%s", book.title);
printf("作者:");
scanf("%s", book.author);
printf("出版社:");
scanf("%s", book.publisher);
book.status = 0;
add_book(&lib, book);
break;
}
case 2: {
Reader reader;
printf("请输入读者信息:\n");
printf("姓名:");
scanf("%s", reader.name);
printf("电子邮件:");
scanf("%s", reader.email);
memset(reader.books, 0, sizeof(reader.books));
add_reader(&lib, reader);
break;
}
case 3: {
int book_id, reader_id;
printf("请输入借书信息:\n");
printf("书籍编号:");
scanf("%d", &book_id);
printf("读者编号:");
scanf("%d", &reader_id);
borrow_book(&lib, book_id, reader_id);
break;
}
case 4: {
int book_id, reader_id;
printf("请输入还书信息:\n");
printf("书籍编号:");
scanf("%d", &book_id);
printf("读者编号:");
scanf("%d", &reader_id);
return_book(&lib, book_id, reader_id);
break;
}
case 5: {
show_all_books(&lib);
break;
}
case 6: {
show_all_readers(&lib);
break;
}
case 0: {
printf("程序已退出!\n");
exit(0);
}
default: {
printf("输入错误,请重新输入!\n");
}
}
}
return 0;
}
```
以上是一个简单的C语言程序设计的图书管理系统实现,希望对你有所帮助。
阅读全文