欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
圖書管理系統(tǒng)-C語言代碼
[打印本頁]
作者:
rong666
時間:
2023-3-26 15:37
標題:
圖書管理系統(tǒng)-C語言代碼
1. 定義圖書類Book,包括如下屬性:
- 書名
- 作者
- 出版社
- 出版日期
- ISBN號
- 借出狀態(tài)
2. 定義讀者類Reader,包括如下屬性:
- 姓名
- 學號/工號
- 借閱書籍數量
- 借閱歷史
3. 定義圖書館類Library,包括如下屬性:
- 圖書館名稱
- 圖書總量
- 已借出圖書數量
- 圖書列表
4. 定義如下函數進行圖書管理:
- add_book():添加書籍
- remove_book():刪除書籍
- borrow_book():借閱書籍
- return_book():歸還書籍
- check_book_status():檢查書籍借出狀態(tài)
- search_book():查找書籍
- add_reader():添加讀者
- remove_reader():刪除讀者
- borrow_history():查看借閱歷史
- check_reader_status():檢查讀者借書狀態(tài)
- search_reader():查找讀者
5. 根據以上函數實現一個完整的圖書館管理系統(tǒng)。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 圖書類
typedef struct book_struct {
char name[100];
char author[50];
char publisher[50];
char publish_date[20];
char isbn[50];
int borrowed;
} Book;
// 讀者類
typedef struct reader_struct {
char name[50];
char id[50];
int borrow_amount;
Book *borrow_list[10]; // 保存借閱記錄
} Reader;
// 圖書館類
typedef struct library_struct {
char name[50];
int total_books;
int borrowed_books;
Book *book_list[10000]; // 最多保存10000本書
Reader *reader_list[1000]; // 最多保存1000名讀者
} Library;
// 函數聲明
void add_book(Library *lib, Book *book);
void remove_book(Library *lib, Book *book);
void borrow_book(Library *lib, Reader *reader, Book *book);
void return_book(Library *lib, Reader *reader, Book *book);
void check_book_status(Book *book);
Book* search_book(Library *lib, char *name);
void add_reader(Library *lib, Reader *reader);
void remove_reader(Library *lib, Reader *reader);
void borrow_history(Reader *reader);
void check_reader_status(Reader *reader);
Reader* search_reader(Library *lib, char *name);
int main() {
// 初始化圖書館
Library lib = {"XX大學圖書館", 0, 0, {NULL}, {NULL}};
// 初始化幾本書
Book b1 = {"算法導論", "Thomas H. Cormen", "機械工業(yè)出版社", "2006-8-1", "9787111187776", 0};
Book b2 = {"UNIX編程藝術", "Eric S. Raymond", "人民郵電出版社", "2004-1-1", "9787115120024", 0};
Book b3 = {"信息簡史", "James Gleick", "中信出版社", "2002-7-1", "9787508600987", 0};
// 添加幾本書到圖書館
add_book(&lib, &b1);
add_book(&lib, &b2);
add_book(&lib, &b3);
// 初始化讀者
Reader r1 = {"張三", "2018001", 0, {NULL}};
// 添加讀者
add_reader(&lib, &r1);
// 借一本書
borrow_book(&lib, &r1, &b1);
// 返還一本書
return_book(&lib, &r1, &b1);
return 0;
}
// 添加書籍
void add_book(Library *lib, Book *book) {
if(lib->total_books >= 10000) {
printf("Error: 圖書館容量已滿,無法添加新書!\n");
return;
}
lib->book_list[lib->total_books] = book;
lib->total_books++;
printf("添加 \"%s\" 成功!\n", book->name);
}
// 刪除書籍
void remove_book(Library *lib, Book *book) {
for(int i=0; i<lib->total_books; i++) {
if(strcmp(lib->book_list[i]->name, book->name)==0) {
// 如果這本書借出去了,不允許刪除
if(lib->book_list[i]->borrowed) {
printf("Error: 書籍 \"%s\" 已借出,無法刪除!\n", book->name);
return;
}
lib->total_books--;
for(int j=i; j<lib->total_books; j++) {
lib->book_list[j] = lib->book_list[j+1];
}
printf("刪除 \"%s\" 成功!\n", book->name);
return;
}
}
printf("Error: 沒有找到要刪除的書籍!\n");
}
// 借閱書籍
void borrow_book(Library *lib, Reader *reader, Book *book) {
// 判斷讀者已經借了多少本書了
if(reader->borrow_amount >= 10) {
printf("Error: 讀者 \"%s\" 借書已達上限!\n", reader->name);
return;
}
// 判斷這本書是否已經借出去了
if(book->borrowed) {
printf("Error: 書籍 \"%s\" 已被借出!\n", book->name);
return;
}
reader->borrow_list[reader->borrow_amount] = book;
reader->borrow_amount++;
book->borrowed = 1;
lib->borrowed_books++;
printf("\"%s\" 已被 \"%s\" 借閱!\n", book->name, reader->name);
}
// 歸還書籍
void return_book(Library *lib, Reader *reader, Book *book) {
// 查找這本書是否由該讀者借閱
int found = 0;
for(int i=0; i<reader->borrow_amount; i++) {
if(reader->borrow_list[i] == book) {
found = 1;
for(int j=i; j<reader->borrow_amount-1; j++) {
reader->borrow_list[j] = reader->borrow_list[j+1];
}
reader->borrow_list[reader->borrow_amount-1] = NULL;
reader->borrow_amount--;
book->borrowed = 0;
lib->borrowed_books--;
printf("\"%s\" 已被 \"%s\" 歸還!\n", book->name, reader->name);
break;
}
}
if(!found) {
printf("Error: \"%s\" 并沒有借閱 \"%s\"!\n", reader->name, book->name);
}
}
// 檢查書籍的借出狀態(tài)
void check_book_status(Book *book) {
if(book->borrowed) {
printf("\"%s\" 已經被借出了!\n", book->name);
} else {
printf("\"%s\" 目前還沒被借出!\n", book->name);
}
}
// 查找書籍
Book* search_book(Library *lib, char *name) {
for(int i=0; i<lib->total_books; i++) {
if(strcmp(lib->book_list[i]->name, name)==0) {
return lib->book_list[i];
}
}
printf("Error: 沒有找到書籍 \"%s\"!\n", name);
return NULL;
}
// 添加讀者
void add_reader(Library *lib, Reader *reader) {
if(lib->total_books >= 1000) {
printf("Error: 圖書館讀者容量已滿,無法添加新讀者!\n");
return;
}
lib->reader_list[lib->total_books] = reader;
lib->total_books++;
printf("添加讀者 \"%s\" 成功!\n", reader->name);
}
// 刪除讀者
void remove_reader(Library *lib, Reader *reader) {
for(int i=0; i<lib->total_books; i++) {
if(lib->reader_list[i] == reader) {
// 如果這個讀者還有未歸還的書,不允許刪除
if(reader->borrow_amount > 0) {
printf("Error: 讀者 \"%s\" 還有未歸還的書籍,無法刪除!\n", reader->name);
return;
}
lib->total_books--;
for(int j=i; j<lib->total_books; j++) {
lib->reader_list[j] = lib->reader_list[j+1];
}
printf("刪除讀者 \"%s\" 成功!\n", reader->name);
return;
}
}
printf("Error: 沒有找到要刪除的讀者!\n");
}
// 查看讀者借閱記錄
void borrow_history(Reader *reader) {
printf("%s 的借閱歷史:\n", reader->name);
for(int i=0; i<reader->borrow_amount; i++) {
printf("%d. %s (%s)\n", i+1, reader->borrow_list[i]->name, reader->borrow_list[i]->author);
}
}
// 檢查讀者是否有借書超期未歸還的情況
void check_reader_status(Reader *reader) {
if(reader->borrow_amount == 0) {
return;
}
printf("檢查 %s 是否有超期未歸還的書籍...\n", reader->name);
// 模擬檢查過程,假設借閱期限為14天,超過14天就算超期
for(int i=0; i<reader->borrow_amount; i++) {
if(reader->borrow_list[i]->borrowed == 1) {
printf("警告:\"%s\" 已經超期未歸還 %d 天!\n", reader->borrow_list[i]->name, 28);
}
}
}
// 查找讀者
Reader* search_reader(Library *lib, char *name) {
for(int i=0; i<lib->total_books; i++) {
if(strcmp(lib->reader_list[i]->name, name)==0) {
return lib->reader_list[i];
}
}
printf("Error: 沒有找到讀者 \"%s\"!\n", name);
return NULL;
}
復制代碼
作者:
glinfei
時間:
2023-3-26 22:46
這應該是學習鏈表的代碼,怎么不用呢?還有菜單也沒寫
作者:
a185980800
時間:
2023-3-26 23:16
牛,做個記號
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1