用C语言写一个图书管理系统 目的:顺序表的应用 该系统含有的功能为:a、把图书按照专业进修分类,每个类的图书建立一个顺序表b、对图书的状态进行标注(数量、可借、不可借)c、如果可以借,标明馆藏地 d、如果借出,标明归还日期
时间: 2023-07-10 09:15:11 浏览: 45
以下是一个简单的图书管理系统的 C 代码,使用了顺序表来实现:
```c
#include <stdio.h>
#include <string.h>
#include <time.h>
#define MAX_BOOKS 1000 // 图书馆最大书籍数量
#define MAX_NAME_LEN 50 // 书名最大长度
#define MAX_AUTHOR_LEN 50 // 作者名最大长度
// 书籍结构体
typedef struct {
char name[MAX_NAME_LEN];
char author[MAX_AUTHOR_LEN];
int count;
int available;
char location[20];
time_t due_date;
} book_t;
// 图书馆结构体
typedef struct {
char name[50];
book_t books[MAX_BOOKS];
int count;
} library_t;
// 初始化图书馆
void init_library(library_t *library, char *name) {
strcpy(library->name, name);
library->count = 0;
}
// 添加书籍
void add_book(library_t *library, int category, char *name, char *author, int count, char *location) {
book_t book;
strcpy(book.name, name);
strcpy(book.author, author);
book.count = count;
book.available = count;
strcpy(book.location, location);
book.due_date = 0;
library->books[category * MAX_BOOKS + library->count++] = book;
}
// 借书
void borrow_book(library_t *library, int category, int book_index) {
book_t *book = &library->books[category * MAX_BOOKS + book_index];
if (book->available > 0) {
book->available--;
book->due_date = time(NULL) + 7 * 24 * 60 * 60; // 归还日期为一周后
printf("借阅成功!请在 %s 归还。\n", ctime(&book->due_date));
} else {
printf("该书籍已全部被借出!\n");
}
}
// 还书
void return_book(library_t *library, int category, int book_index) {
book_t *book = &library->books[category * MAX_BOOKS + book_index];
if (book->available < book->count) {
book->available++;
book->due_date = 0;
printf("归还成功!\n");
} else {
printf("该书籍未被借出或已全部归还!\n");
}
}
// 显示书籍信息
void show_book_info(book_t *book) {
printf("书名:%s\n", book->name);
printf("作者:%s\n", book->author);
printf("总数:%d\n", book->count);
printf("可借:%d\n", book->available);
printf("馆藏地:%s\n", book->location);
if (book->due_date != 0) {
printf("归还日期:%s", ctime(&book->due_date));
}
}
// 显示某个类别的所有书籍信息
void show_category_books(library_t *library, int category) {
printf("类别:%d\n", category);
printf("书籍数量:%d\n", library->count);
for (int i = 0; i < library->count; i++) {
book_t *book = &library->books[category * MAX_BOOKS + i];
printf("书籍编号:%d\n", i);
show_book_info(book);
printf("\n");
}
}
int main() {
library_t library;
init_library(&library, "图书馆");
// 模拟添加书籍
add_book(&library, 0, "C语言程序设计", "谭浩强", 10, "1A");
add_book(&library, 1, "Java编程思想", "Bruce Eckel", 5, "2B");
add_book(&library, 1, "Java核心技术", "Cay S. Horstmann", 8, "2A");
// 显示所有书籍信息
for (int i = 0; i < 2; i++) {
show_category_books(&library, i);
}
// 借阅一本书
borrow_book(&library, 1, 0);
// 归还一本书
return_book(&library, 1, 0);
return 0;
}
```
这个图书管理系统使用了一个 library_t 结构体来表示整个图书馆,其中包含了一个图书数组 books,每个类别的图书都存储在一个顺序表中。通过调用 add_book 函数可以添加图书,通过调用 borrow_book 和 return_book 函数可以借阅和归还图书。通过调用 show_category_books 函数可以显示某个类别的所有书籍信息。