乐趣区

关于c:西电C语言程序设计实验之图书馆管理系统

简略文件数据库 - 模仿图书馆管理系统

波及知识点:文件读写、内存治理、构造体定义、根本数据结构、高级格式化输入输出

要求:编写一个程序模仿图书管理系统。

用户分为 管理员和读者 两类,别离显示不同文本格式菜单,通过菜单项对应数字进行抉择。

读者菜单包含 借书、还书、查问 等性能。
管理员菜单包含图书和读者信息 录入、批改和删除

图书信息至多应包含:编号、书名、数量
读者信息至多应包含:编号、姓名、所借图书

可依据图书名称或编号进行图书信息查问,可查问某本书当初被哪些读者借走。

命令行参数如下:
Libsim –a(-u) xxxx

第一个参数为可执行程序名称;
第二个参数为用户身份,- a 示意管理员,- u 示意读者;
第三个参数为用户名

几个函数阐明:

展现读者和图书信息

void ShowBook(char* bname);
void ShowReader(char* rname);

图书借阅和偿还

void BookLend(char *rname, char *bname);
void BookReturn(char *rname, char* bname);

图书和读者信息增删

void AddBook(char* bname);
void DelBook(char* bname);
void AddReader(char* rname, char* reroot);                            
void DelReader(char* rname);

读取读者,管理员和图书信息

void ReadBooksInfo();
void ReadReadersInfo();
void ReadAdministratorsInfo();

更新读者,管理员和图书信息

void UpdateBorrowerList();
void UpdateBorrowedBookList();
void UpdateBookleft();
void UpdateBooks();
void UpdateReaders();
void UpdateAdministrators();
void UpdateReroots();
void UpdateAdroots();

图书馆信息:

信息编写规定:

每个文件以 end 作为结尾
而 null 示意该书或读者曾经被删除

books.txt:每行一本书,第一行的书编号为 1
readers.txt:
每行一个读者姓名,第一行的读者编号为 1
administrators.txt:
每行一个管理员姓名,第管理员一行的读者编号为 1

books'borrowers.txt:
每行若干个人名,第一行对应编号为 1 的书的借阅人
borrowers'books.txt:
每行若干个书名,第一行对应编号为 1 的人的在借书

reroots.txt:
每行一个明码,第一行对应编号为 1 的读者的明码
adroots.txt
每行一个明码,第一行对应编号为 1 的管理员的明码



源码(不蕴含函数局部)

#include<stdio.h>
#include<string.h>
typedef struct Book{char name[20];// 名称 
    int num;      // 编号 
    int left;     // 库存  
}Book;
typedef struct Reader{char name[20];// 姓名 
    int num;      // 编号
    char root[20];// 明码 
}Reader;
typedef struct Administrator{char name[20];// 姓名 
    int num;         // 编号
    char root[20];// 明码 
}Administrator;  

Book books[110];                  // 图书信息 
Reader readers[110];              // 读者信息 
Administrator administrators[10]; // 管理员信息 
char borrowerList[110][100];      // 图书在借人 
char borrowedBookList[110][100];  // 读者在借书 
 
void ShowBook(char* bname);
void ShowReader(char* rname);
void BookLend(char *rname, char *bname);
void BookReturn(char *rname, char* bname);
void ReadBooksInfo();
void ReadReadersInfo();
void ReadAdministratorsInfo();
void UpdateBorrowerList();
void UpdateBorrowedBookList();
void UpdateBookleft();
void UpdateBooks();
void UpdateReaders();
void UpdateAdministrators();
void UpdateReroots();
void UpdateAdroots();
void AddBook(char* bname);
void DelBook(char* bname);
void AddReader(char* rname, char* reroot);                            
void DelReader(char* rname);

//Libsim –a(-u) xxxx
// 第一个参数为可执行程序名称;第二个参数为用户身份,- a 示意管理员,- u 示意读者;第三个参数为用户名

int main(int argc, char *argv[]) {ReadBooksInfo();
    ReadReadersInfo();
    ReadAdministratorsInfo();
    char *command = argv[1], *name = argv[2];
    printf("Hello, %s! Welcome to XDULibrary!\n", name);
    if(!strcmp(command, "-a")){char root[10];
        printf("Please enter your root:\n");
        scanf("%s", root);
        int i, flag = 0, choice;
        for(i = 0; i < 10; i++)
            if(!strcmp(administrators[i].root, root))    flag = 1;
        if(!flag){printf("wrong root\n");
            return -1;
        }
        printf("0.exit\n1.show books\n2.show readers\n3.delete readers\n4.delete books\n5.add readers\n6.add books\n");
        while (1) {printf("please choose what to do:\n");
            scanf("%d", &choice);
            if (choice == 0){printf("exit successfully");
                return 0;
            }
            switch(choice){
                case 1:{char bname[20];
                    printf("please enter book's name:\n");
                    scanf("%s", bname);
                    ShowBook(bname);
                    break;
                }
                case 2:{char rname[20];
                    printf("please enter reader's name:\n");
                    scanf("%s", rname);
                    ShowReader(rname);
                    break;
                }
                case 3:{char rname[20];
                    printf("please enter reader's name:\n");
                    scanf("%s", rname);                                                                    
                    DelReader(rname);
                    break;
                }
                case 4:{char bname[20];
                    printf("please enter book's name:\n");
                    scanf("%s", bname);                                                                    
                    DelBook(bname);            
                    break;
                }
                case 5:{char rname[20], reroot[20];
                    printf("please enter reader's name:\n");
                    scanf("%s", rname);
                    printf("please enter reader's root:\n");
                    scanf("%s", reroot);
                    AddReader(rname, reroot);            
                    break;
                }
                case 6:{char bname[20];
                    printf("please enter book's name:\n");
                    scanf("%s", bname);
                    AddBook(bname);        
                    break;
                }
                default:{printf("illegal input\n");
                    break;
                }
            }
        }
    }
    else if (!strcmp(command, "-u")){char root[10];
        printf("Please enter your root:\n");
        scanf("%s", root);
        int i, flag = 0, choice;
        for(i = 0; i < 10; i++){if(!strcmp(readers[i].root, root))    flag = 1;
        }
        if(!flag){printf("wrong root\n");
            return -1;
        }
        printf("0.exit\n1.show books\n2.show readers\n3.lend books\n4.return books\n");
        while (1) {printf("please choose what to do:\n");
            scanf("%d", &choice);
            if (choice == 0){printf("exit successfully");
                return 0;
            }
            switch(choice){
                case 1:{char bname[20];
                    printf("please enter book's name:\n");
                    scanf("%s", bname);
                    ShowBook(bname);
                    break;
                }
                case 2:{char rname[20];
                    printf("please enter reader's name:\n");
                    scanf("%s", rname);
                    ShowReader(rname);
                    break;
                }
                case 3:{char bname[20];
                    printf("please enter book's name:\n");
                    scanf("%s", bname);
                    BookLend(name, bname);
                    break;
                }
                case 4:{char bname[20];
                    printf("please enter book's name:\n");
                    scanf("%s", bname);
                    BookReturn(name, bname);
                    break;
                }
                default:{printf("illegal input\n");
                    break;
                }
            }
        }
    }
    else{printf("illegal input\n");
        return -1; 
    }
    return 0;
}

// 编写函数的地位:…………………………………………
…………………………………………

须要残缺源码可移步评论区留言,一键三连是对创作者最大的激励~

或者能够间接在 github 或 gitee 进行 clone, 后续若发现程序有问题,会进行版本更新。

https://gitee.com/jiang-zhihang/library-system.git
https://github.com/akynazh/LibrarySystem.git

over!

退出移动版