c语言图书馆管理系统代码
时间: 2024-06-13 09:01:37 浏览: 140
C语言图书馆管理系统源代码
C语言图书馆管理系统通常包含以下模块:读者管理、图书管理、借阅管理和系统管理。其中,读者管理模块包括读者信息的添加、查询、修改和删除等功能;图书管理模块包括图书信息的添加、查询、修改和删除等功能;借阅管理模块包括借书和还书等功能;系统管理模块包括管理员账号的管理、系统设置等功能。
下面是一个简单的C语言图书馆管理系统代码示例:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 100
// 读者结构体
typedef struct Reader{
char name[20]; // 姓名
char id[10]; // 学号/工号
char book[10][20]; // 已借图书
int book_num; // 已借图书数量
}Reader;
// 图书结构体
typedef struct Book{
char name[20]; // 书名
char author[20]; // 作者
char ISBN[10]; // ISBN号
int total_num; // 总数量
int left_num; // 剩余数量
}Book;
Reader reader[MAX];
Book book[MAX];
int reader_num = 0;
int book_num = 0;
// 添加读者信息
void add_reader(){
if(reader_num >= MAX){
printf("已达到最大读者数量,无法添加!\n");
return;
}
printf("请输入姓名:");
scanf("%s", reader[reader_num].name);
printf("请输入学号/工号:");
scanf("%s", reader[reader_num].id);
reader[reader_num].book_num = 0;
printf("读者信息添加成功!\n");
reader_num++;
}
// 查询读者信息
void search_reader(){
char id[10];
printf("请输入要查询的学号/工号:");
scanf("%s", id);
for(int i=0; i<reader_num; i++){
if(strcmp(reader[i].id, id) == 0){
printf("姓名:%s\n", reader[i].name);
printf("学号/工号:%s\n", reader[i].id);
printf("已借图书:\n");
for(int j=0; j<reader[i].book_num; j++){
printf("%s\n", reader[i].book[j]);
}
return;
}
}
printf("未找到该读者信息!\n");
}
// 添加图书信息
void add_book(){
if(book_num >= MAX){
printf("已达到最大图书数量,无法添加!\n");
return;
}
printf("请输入书名:");
scanf("%s", book[book_num].name);
printf("请输入作者:");
scanf("%s", book[book_num].author);
printf("请输入ISBN号:");
scanf("%s", book[book_num].ISBN);
printf("请输入总数量:");
scanf("%d", &book[book_num].total_num);
book[book_num].left_num = book[book_num].total_num;
printf("图书信息添加成功!\n");
book_num++;
}
// 查询图书信息
void search_book(){
char ISBN[10];
printf("请输入要查询的ISBN号:");
scanf("%s", ISBN);
for(int i=0; i<book_num; i++){
if(strcmp(book[i].ISBN, ISBN) == 0){
printf("书名:%s\n", book[i].name);
printf("作者:%s\n", book[i].author);
printf("ISBN号:%s\n", book[i].ISBN);
printf("总数量:%d\n", book[i].total_num);
printf("剩余数量:%d\n", book[i].left_num);
return;
}
}
printf("未找到该图书信息!\n");
}
// 借阅图书
void borrow_book(){
char id[10], ISBN[10];
int reader_index, book_index;
printf("请输入学号/工号:");
scanf("%s", id);
for(int i=0; i<reader_num; i++){
if(strcmp(reader[i].id, id) == 0){
reader_index = i;
break;
}
if(i == reader_num-1){
printf("未找到该读者信息!\n");
return;
}
}
printf("请输入要借阅的ISBN号:");
scanf("%s", ISBN);
for(int i=0; i<book_num; i++){
if(strcmp(book[i].ISBN, ISBN) == 0){
book_index = i;
break;
}
if(i == book_num-1){
printf("未找到该图书信息!\n");
return;
}
}
if(book[book_index].left_num == 0){
printf("该图书已全部借出,无法借阅!\n");
return;
}
for(int i=0; i<reader[reader_index].book_num; i++){
if(strcmp(reader[reader_index].book[i], book[book_index].name) == 0){
printf("该读者已借阅该图书,无法重复借阅!\n");
return;
}
}
strcpy(reader[reader_index].book[reader[reader_index].book_num], book[book_index].name);
reader[reader_index].book_num++;
book[book_index].left_num--;
printf("借阅成功!\n");
}
// 归还图书
void return_book(){
char id[10], ISBN[10];
int reader_index, book_index;
printf("请输入学号/工号:");
scanf("%s", id);
for(int i=0; i<reader_num; i++){
if(strcmp(reader[i].id, id) == 0){
reader_index = i;
break;
}
if(i == reader_num-1){
printf("未找到该读者信息!\n");
return;
}
}
printf("请输入要归还的ISBN号:");
scanf("%s", ISBN);
for(int i=0; i<book_num; i++){
if(strcmp(book[i].ISBN, ISBN) == 0){
book_index = i;
break;
}
if(i == book_num-1){
printf("未找到该图书信息!\n");
return;
}
}
for(int i=0; i<reader[reader_index].book_num; i++){
if(strcmp(reader[reader_index].book[i], book[book_index].name) == 0){
strcpy(reader[reader_index].book[i], "");
reader[reader_index].book_num--;
book[book_index].left_num++;
printf("归还成功!\n");
return;
}
}
printf("该读者未借阅该图书,无法归还!\n");
}
int main(){
int choice;
while(1){
printf("\n1. 添加读者信息\n");
printf("2. 查询读者信息\n");
printf("3. 添加图书信息\n");
printf("4. 查询图书信息\n");
printf("5. 借阅图书\n");
printf("6. 归还图书\n");
printf("7. 退出系统\n");
printf("\n请选择功能:");
scanf("%d", &choice);
switch(choice){
case 1:
add_reader();
break;
case 2:
search_reader();
break;
case 3:
add_book();
break;
case 4:
search_book();
break;
case 5:
borrow_book();
break;
case 6:
return_book();
break;
case 7:
exit(0);
break;
default:
printf("请输入正确的选项!\n");
break;
}
fflush(stdin); // 清空缓存区,避免输入错误影响下一次输入
}
return 0;
}
```
阅读全文