用c语言写,图书借阅管理系统 主要分为两⼤功能: 1)图书管理(增加图书、查询图书、删除图书、图书借阅、还书); 2)会员管理(增加会员、查询会员、删除会员、借书信息);
时间: 2023-10-20 13:53:47 浏览: 30
以下是用C语言实现的图书借阅管理系统代码,包括图书管理和会员管理两大功能:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_BOOKS 100
#define MAX_MEMBERS 100
typedef struct {
char title[50];
char author[50];
int copies;
} Book;
typedef struct {
char name[50];
char email[50];
int books_borrowed[MAX_BOOKS];
int num_books_borrowed;
} Member;
Book books[MAX_BOOKS];
Member members[MAX_MEMBERS];
int num_books = 0;
int num_members = 0;
void add_book() {
if (num_books == MAX_BOOKS) {
printf("Error: book database is full\n");
return;
}
printf("Enter book title: ");
scanf("%s", books[num_books].title);
printf("Enter book author: ");
scanf("%s", books[num_books].author);
printf("Enter number of copies: ");
scanf("%d", &books[num_books].copies);
num_books++;
printf("Book added successfully!\n");
}
void search_book() {
char title[50];
int i, found = 0;
printf("Enter book title: ");
scanf("%s", title);
for (i = 0; i < num_books; i++) {
if (strcmp(title, books[i].title) == 0) {
printf("Title: %s\nAuthor: %s\nCopies: %d\n", books[i].title, books[i].author, books[i].copies);
found = 1;
break;
}
}
if (!found) {
printf("Book not found!\n");
}
}
void delete_book() {
char title[50];
int i, found = 0;
printf("Enter book title: ");
scanf("%s", title);
for (i = 0; i < num_books; i++) {
if (strcmp(title, books[i].title) == 0) {
books[i] = books[num_books - 1];
num_books--;
found = 1;
break;
}
}
if (found) {
printf("Book deleted successfully!\n");
} else {
printf("Book not found!\n");
}
}
void borrow_book() {
char title[50];
int i, j, found = 0, member_id;
printf("Enter book title: ");
scanf("%s", title);
for (i = 0; i < num_books; i++) {
if (strcmp(title, books[i].title) == 0) {
if (books[i].copies == 0) {
printf("All copies of this book are currently borrowed!\n");
return;
}
printf("Enter member ID: ");
scanf("%d", &member_id);
for (j = 0; j < num_members; j++) {
if (member_id == j) {
if (members[j].num_books_borrowed == MAX_BOOKS) {
printf("Error: member has borrowed maximum number of books!\n");
return;
}
members[j].books_borrowed[members[j].num_books_borrowed] = i;
members[j].num_books_borrowed++;
books[i].copies--;
printf("Book borrowed successfully!\n");
found = 1;
break;
}
}
if (!found) {
printf("Member not found!\n");
}
break;
}
}
if (!found) {
printf("Book not found!\n");
}
}
void return_book() {
char title[50];
int i, j, found = 0, member_id;
printf("Enter book title: ");
scanf("%s", title);
for (i = 0; i < num_books; i++) {
if (strcmp(title, books[i].title) == 0) {
printf("Enter member ID: ");
scanf("%d", &member_id);
for (j = 0; j < num_members; j++) {
if (member_id == j) {
int k, found_book = 0;
for (k = 0; k < members[j].num_books_borrowed; k++) {
if (members[j].books_borrowed[k] == i) {
members[j].books_borrowed[k] = members[j].books_borrowed[members[j].num_books_borrowed - 1];
members[j].num_books_borrowed--;
books[i].copies++;
printf("Book returned successfully!\n");
found_book = 1;
break;
}
}
if (!found_book) {
printf("Error: member has not borrowed this book!\n");
}
found = 1;
break;
}
}
if (!found) {
printf("Member not found!\n");
}
break;
}
}
if (!found) {
printf("Book not found!\n");
}
}
void add_member() {
if (num_members == MAX_MEMBERS) {
printf("Error: member database is full\n");
return;
}
printf("Enter member name: ");
scanf("%s", members[num_members].name);
printf("Enter member email: ");
scanf("%s", members[num_members].email);
members[num_members].num_books_borrowed = 0;
num_members++;
printf("Member added successfully!\n");
}
void search_member() {
char name[50];
int i, found = 0;
printf("Enter member name: ");
scanf("%s", name);
for (i = 0; i < num_members; i++) {
if (strcmp(name, members[i].name) == 0) {
printf("Name: %s\nEmail: %s\n", members[i].name, members[i].email);
found = 1;
break;
}
}
if (!found) {
printf("Member not found!\n");
}
}
void delete_member() {
char name[50];
int i, found = 0;
printf("Enter member name: ");
scanf("%s", name);
for (i = 0; i < num_members; i++) {
if (strcmp(name, members[i].name) == 0) {
members[i] = members[num_members - 1];
num_members--;
found = 1;
break;
}
}
if (found) {
printf("Member deleted successfully!\n");
} else {
printf("Member not found!\n");
}
}
void borrow_info() {
int i, j;
printf("Enter member ID: ");
scanf("%d", &i);
printf("Name: %s\nEmail: %s\nBooks borrowed:\n", members[i].name, members[i].email);
for (j = 0; j < members[i].num_books_borrowed; j++) {
printf("%s\n", books[members[i].books_borrowed[j]].title);
}
}
int main() {
int choice;
while (1) {
printf("\n1. Add book\n2. Search book\n3. Delete book\n4. Borrow book\n5. Return book\n6. Add member\n7. Search member\n8. Delete member\n9. Borrowing info\n10. Exit\n");
printf("Enter your choice: ");
scanf("%d", &choice);
switch (choice) {
case 1:
add_book();
break;
case 2:
search_book();
break;
case 3:
delete_book();
break;
case 4:
borrow_book();
break;
case 5:
return_book();
break;
case 6:
add_member();
break;
case 7:
search_member();
break;
case 8:
delete_member();
break;
case 9:
borrow_info();
break;
case 10:
exit(0);
default:
printf("Invalid choice!\n");
}
}
return 0;
}
```
在上面的代码中,我们使用了两个结构体Book和Member来分别存储图书和会员的信息。在各个功能函数中,我们使用了循环和条件语句来实现对图书和会员的增删查改等操作。我们使用了scanf函数来从用户输入中读取数据,使用printf函数来向用户输出信息。最后,我们使用了一个菜单循环来实现用户与程序的交互。