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

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

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

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

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

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

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

命令行参数如下:
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:每行一本书,第一行的书编号为1readers.txt:每行一个读者姓名,第一行的读者编号为1administrators.txt:每行一个管理员姓名,第管理员一行的读者编号为1books'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!