linux 下的用C语言写的图书管理系统完整代码
时间: 2024-03-11 08:50:51 浏览: 117
这里提供一个简单的图书管理系统的C语言代码,包含基本的借阅、归还、查询等功能。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_BOOK_NUM 100 // 最大书籍数量
#define MAX_NAME_LEN 20 // 书名最大长度
#define MAX_AUTHOR_LEN 10 // 作者最大长度
// 定义书籍结构体
typedef struct {
char name[MAX_NAME_LEN]; // 书名
char author[MAX_AUTHOR_LEN]; // 作者
int borrowed; // 是否借出,1表示借出,0表示未借出
char borrower[MAX_NAME_LEN]; // 借阅人姓名
} Book;
// 声明函数
void initBooks(Book books[]); // 初始化书籍列表
void borrowBook(Book books[]); // 借阅书籍
void returnBook(Book books[]); // 归还书籍
void searchBook(Book books[]); // 查询书籍
void listBooks(Book books[]); // 列出所有书籍
// 主函数
int main() {
Book books[MAX_BOOK_NUM]; // 书籍列表
int choice; // 用户选择的操作
// 初始化书籍列表
initBooks(books);
// 显示操作菜单,直到用户选择退出
do {
printf("\n请选择操作:\n");
printf("1. 借阅书籍\n");
printf("2. 归还书籍\n");
printf("3. 查询书籍\n");
printf("4. 列出所有书籍\n");
printf("0. 退出\n");
printf("请输入操作编号:");
scanf("%d", &choice);
// 根据用户选择执行相应操作
switch (choice) {
case 1:
borrowBook(books);
break;
case 2:
returnBook(books);
break;
case 3:
searchBook(books);
break;
case 4:
listBooks(books);
break;
case 0:
printf("谢谢使用,再见!\n");
break;
default:
printf("无效操作,请重新选择!\n");
}
} while (choice != 0);
return 0;
}
// 初始化书籍列表
void initBooks(Book books[]) {
int i;
for (i = 0; i < MAX_BOOK_NUM; i++) {
strcpy(books[i].name, "");
strcpy(books[i].author, "");
books[i].borrowed = 0;
strcpy(books[i].borrower, "");
}
strcpy(books[0].name, "C语言程序设计");
strcpy(books[0].author, "谭浩强");
strcpy(books[1].name, "C++程序设计");
strcpy(books[1].author, "李文新");
strcpy(books[2].name, "Java程序设计");
strcpy(books[2].author, "张学友");
}
// 借阅书籍
void borrowBook(Book books[]) {
char name[MAX_NAME_LEN];
int i, found = 0;
printf("请输入要借阅的书籍名称:");
scanf("%s", name);
for (i = 0; i < MAX_BOOK_NUM; i++) {
if (strcmp(books[i].name, name) == 0) {
found = 1;
if (books[i].borrowed == 1) {
printf("该书已经被借出!\n");
} else {
printf("借阅成功!\n");
books[i].borrowed = 1;
printf("请输入借阅人姓名:");
scanf("%s", books[i].borrower);
}
break;
}
}
if (!found) {
printf("未找到该书籍!\n");
}
}
// 归还书籍
void returnBook(Book books[]) {
char name[MAX_NAME_LEN];
int i, found = 0;
printf("请输入要归还的书籍名称:");
scanf("%s", name);
for (i = 0; i < MAX_BOOK_NUM; i++) {
if (strcmp(books[i].name, name) == 0) {
found = 1;
if (books[i].borrowed == 0) {
printf("该书未被借出!\n");
} else {
printf("归还成功!\n");
books[i].borrowed = 0;
strcpy(books[i].borrower, "");
}
break;
}
}
if (!found) {
printf("未找到该书籍!\n");
}
}
// 查询书籍
void searchBook(Book books[]) {
char name[MAX_NAME_LEN];
int i, found = 0;
printf("请输入要查询的书籍名称:");
scanf("%s", name);
for (i = 0; i < MAX_BOOK_NUM; i++) {
if (strcmp(books[i].name, name) == 0) {
found = 1;
printf("书名:%s\n", books[i].name);
printf("作者:%s\n", books[i].author);
if (books[i].borrowed == 1) {
printf("状态:已借出\n");
printf("借阅人:%s\n", books[i].borrower);
} else {
printf("状态:未借出\n");
}
break;
}
}
if (!found) {
printf("未找到该书籍!\n");
}
}
// 列出所有书籍
void listBooks(Book books[]) {
int i;
printf("书籍列表:\n");
printf("%-20s %-10s %-10s\n", "书名", "作者", "状态");
for (i = 0; i < MAX_BOOK_NUM; i++) {
if (strlen(books[i].name) > 0) {
printf("%-20s %-10s ", books[i].name, books[i].author);
if (books[i].borrowed == 1) {
printf("%-10s\n", "已借出");
} else {
printf("%-10s\n", "未借出");
}
}
}
}
```
注意,这是一个简单的图书管理系统,没有考虑并发、持久化等复杂问题,仅供学习参考。如果您需要更复杂的图书管理系统,建议使用数据库等技术来实现。
阅读全文