C语言寒假作业:《图书馆管理系统(非链表)》

#include "stdio.h"
#include "math.h"
#include "stdlib.h"
#include "windows.h"
#define length 500
//主要功能:注册、登录、借书、还书等操作

//菜单
void main_title();//主界面标题
void main_menu();//主界面菜单
void administrator_title();//管理员系统页面标题
void administrator_menu();//管理员系统菜单
void user_title();//用户系统标题
void enroll_title();//注册页面标题
void login_title();//登录页面标题
void borrow_title();//借阅图书页面标题
void borrow_book_situation();//借阅图书页面书目
void return_title();//归还图书页面标题
void return_printf();//归还图书页面书目
void reduce_book_title();//删除图书页面标题

//主要功能
void user();//用户系统
void enroll();//注册
void login();//登录
void administrator();//图书管理员系统
void admin_enroll();//图书管理员注册系统 
void admin_login();//图书管理员登入系统 
void administrator_login();//图书管理员登录系统
void administrator_book();//图书管理员管理图书系统
void borrow_main();//借阅图书系统
void return_system();//归还图书系统 
void user_modify();//用户修改系统
void administrator_modify();//图书管理员修改系统
void administrator_user();//图书管理员管理用户系统
void administrator_user_select();//图书管理员查找所有的用户 
void add_book();//加书 
void clear_book();//减书 

//用户信息
struct student{
    char name[length];//用户名 
    char id[length];//用户账号 
    char password[length];//用户密码 
    char bookborrow[length][length];//用户借阅书本的数量 
}User[length];

//管理员系统
struct administrator{
    char admin_name[length];
    char admin_id[length];
    char admin_password[length]; 
}Admin[length];

//标题函数调用部分
void main_title(){
    printf("\n********************************欢迎来到图书馆********************************\n");
}

void administrator_title(){
    printf("\n*******************************图书馆管理员系统*******************************\n");
}

void user_title(){
    printf("\n****************图书馆用户系统****************\n");
}

void administrator_book_title(){
    printf("\n****************图书馆管理员系统****************\n");
}

void admin_enroll_title(){
    printf("\n****************图书馆管理员账号注册系统****************\n");
}

void admin_login_title(){
    printf("\n****************管理员登录系统****************\n");
}

void reduce_book_title(){
    printf("\n****************管理员删除图书系统****************\n");
}

void add_book_title(){
    printf("\n****************管理员添加图书系统****************\n");
}

void add_book_title_menu(){
    printf("\n                 1.增添书本");
    printf("\n                 2.删除书本");
    printf("\n                 0.返回上一级\n");
}

void administrator_book_select(){
    printf("\n****************管理员查看图书系统****************\n");
}

void administrator_user_title(){
    printf("\n****************管理员修改用户系统****************\n");
}

void administrator_user_select_title(){
    printf("\n****************管理员查看用户系统****************\n");
}

void administrator_user_select_menu(){
    printf("\n                 1.查询用户");
    printf("\n                 2.返回上一级\n"); 
}

void enroll_title(){
    printf("\n****************图书馆账号注册系统****************\n");
}

void login_title(){
    printf("\n****************图书馆账号登录系统****************\n");
}

void user_modify_title(){
    printf("\n****************修改密码系统****************\n");
}

void user_modify_menu(){
    printf("\n                1.修改密码\n");
    printf("                0.返回上一页\n");
    printf("\n********************************************\n");
}

void user_modify_password(){
    printf("*********************修改密码*********************\n\n");
}

void borrow_title(){
    printf("\n****************图书馆借书系统****************\n");
}

void return_title(){
    printf("\n***************图书馆还书系统***************\n");
}

void main_menu(){
    printf("\n\t                            1.用户系统\n");
    printf("\t                            2.借书系统\n");
    printf("\t                            3.还书系统\n");
    printf("\t                            4.管理员系统\n");
    printf("\t                            0.退出程序\n");
    printf("\n**********************************************************************************\n");
    printf("\n请选择您需要功能的序号:");
}

//菜单调用函数部分
void administrator_menu(){//管理员
    printf("\n                   1.注册管理员账号\n");
    printf("                   2.登录管理员账号\n");
    printf("                   3.修改管理员密码\n");
    printf("                   4.图书管理\n");
    printf("                   5.用户管理\n");
    printf("                   0.返回主界面\n");
    printf("\n****************************************************\n");
}

void user_menu(){
    printf("\n\t            1.注册账号\n");
    printf("\t            2.登录账号\n");
    printf("\t            3.修改密码\n");
    printf("\t            4.退出登录\n");
    printf("\t            0.返回主界面\n");
}

//全局变量 
int count;//用户账号的下标 
int state=0;//判断是否已经登入
int member=0;//成员数量
int administrator_state=0;//管理员账号登入情况
int number=1;//管理员账号
char book_name[length][length]={"C Primer Plus","离散数学","数据结构","假如我三天不用学习"};//书本 
int book_number=4;//书本的数量
int book_cover[]={0};
int subscript;//管理员账号的下标 

//主标题目录----------------------------------------------------------------------------//
int main(){
    SetConsoleTitle("图书馆管理系统");//改文件框标题 
    char option;
    int i; 
    while(1){
        system("cls");
        main_title();
        main_menu();
        scanf("%s",&option);
        for(i=0;;i++){
            if(option=='1'){
                user();//用户系统 
                break; 
            }
            else if(option=='2'){
                borrow_main();
                break;
            }
            else if(option=='3'){
                return_system();
                break;
            }
            else if(option=='4'){
                administrator();//管理员系统 
                break;
            }
            else if(option=='0'){
                printf("\n不学习就是好孩子呢!恭喜你,退出成功!\n");
                exit(0);//正常退出 
                system("pause");
                break;
            }
            else{
                printf("\n狗修金没有这个选项呢!请重新输入!\n");
                system("pause");
                break;
            }
        }
    }
}
//************************************************************************************//

//用户系统
void user(){
    char project;
    int i,flag=0;//用于退出双循环 
    while(1){
        system("cls");
        user_title();
        user_menu();
        printf("\n**************************************************\n");
        printf("\n输入您需要的选项:");
        scanf("%s",&project);
        switch(project){
            case '1':
                enroll();
                system("pause");
                break;
            case '2':
                login();
                system("pause");
                break; 
            case '3':
                user_modify();
                system("pause");
                break;
            case '4':
                if(state==0){
                    printf("\n您还未登入账号,请先登入账号。\n");
                    system("pause");
                    break;
                }
                else{
                    printf("\n退出成功卷王数量-1。\n");
                    state = 0;
                    system("pause");
                    break;
                }
            case '0':
                flag = 1; 
                printf("\n很好又少了一个卷王\n");
                system("pause");
                break;
            default :
                printf("\n请输入正确的序号。\n");
                system("pause");
                break;
        }
        if(flag){
            break;
        }
    }
}

//用户注册系统(finishi) 
void enroll(){
    while(1){
        int i,j,temp=0;//temp判断账号是否重复 
        char clear[length] = "";//如果账号重复则清空内存当中的重复的用户名账号密码等
        for(i=member;;){//member全局变量前面有,用来确认账号数量
            system("cls");
            enroll_title();
            printf("\n请输入您的注册用户名(如果你后悔了请输入一个0退出):");
            scanf("%s",&User[i].name);
            if(User[i].name[0]=='0'&&strlen(User[i].name)==1){
                printf("\n好样的!不学习真的是太好了!");
                break;
            }
            printf("\n请输入您想要注册的账号:");
            scanf("%s",&User[i].id);
            printf("\n请输入您的密码:");
            scanf("%s",&User[i].password);
            for(j=0;j<i;j++){
                if(j!=i&&strcmp(User[i].id,User[j].id)==0){
                    temp = 1;
                }
            }
            if(temp==0){
                printf("\n恭喜您注册成功,稍后可以进行登入体验完整版内容。\n");
                member++;
            } 
            else if(temp==1){
                printf("\n该账号已被注册,请重新注册一个。\n");
                strcmp(User[i].name,clear);
                strcmp(User[i].id,clear);
                strcmp(User[i].password,clear);
            }
            break;
        }
        break;
    }
}

//用户登入系统(finishi) 
void login(){
    char unid[length],unpassword[length];
    int stand,symbol,a,x,y;
    stand = 0;//判断密码是否正确 
    symbol = 0;//判断是否是已经注册过的账号
    while(1){
        system("cls");
        login_title();
        printf("\n请输入你的账号:");
        scanf("%s",&unid);
        printf("\n请输入你的密扣:");
        scanf("%s",&unpassword);
        for(a=0;a<member;a++){
            x = strcmp(unid,User[a].id);
            y = strcmp(unpassword,User[a].password);
            if(x==0&&y==0){
                stand = 1;//账号正确
                symbol = 1;//密码正确
                break;
            }
            else if(x==0&&y!=0){
                stand = 1;//账号正确 
                symbol = 0;//密码不正确
                break; 
            }
            else if(x!=0&&y==0){
                stand = 0;//账号不正确 
                symbol = 1;//密码正确
                break; 
            }
            else{
                stand = 0;
                symbol = 0;
                break;
            }
        }
        if(stand==1){
            if(symbol==1){
                printf("\n恭喜您成功登入图书库!\n");
                state = 1;
                count = a;
            }
            else{
                printf("\n很抱歉,密码错误,如果忘记密码,可以返回主界面进行密码修改\n");
            }
        }
        else if(stand==0){
            printf("\n很抱歉,该账号未被注册,如需注册账号请返回用户系统进行注册\n");
        }
        break;
    }
}

//用户修改密码系统(finishi) 
void user_modify(){
    char option;
    int wu=0;
    if(state==0){
        system("cls");
        printf("\n您还未登入账号,请先登入账号再进行修改密码!\n");
    }
    else{
        while(1){
            system("cls");
            user_modify_title();
            user_modify_menu();
            printf("\n请选择你需要的服务:\n");
            scanf("%s",&option);
            switch(option){
                case '0':
                    wu = 1;
                    break;
                case '1':
                    system("cls");
                    user_modify_password();
                    printf("\n请输入你的新密码:\n");
                    scanf("%s",&User[member].password);
                    printf("\n密码已经修改成功\n");
                    state = 0;
                    wu = 1;
                    break;
                default :
                    printf("\n请输入正确的序号\n");
                    system("pause");
            }
            if(wu==1){
                break;
            }
        }
    }
}

//*************************************************************************//
//管理员系统
void administrator(){
    while(1){
        system("cls");
        administrator_book_title();
        administrator_menu();
        char option;
        int bu=0;
        printf("\n尊敬的管理员先生,请问有什么是我能为您效劳的吗(请选择一个序号):");
        scanf("%s",&option);
        switch(option){
            case '1':
                admin_enroll();
                system("pause"); 
                break;
            case '2':
                admin_login();
                system ("pause");
                break;
            case '3':
                administrator_modify();
                system("pause");
                break;
            case '4':
                administrator_book();
                break; 
            case '5':
                administrator_user();
                system("pause");
                break;
            case '0':
                bu = 1;
                printf("\n再见了!管理员!\n");
                system("pause");
                break;
            default :
                bu = 1; 
                printf("\n请输入正确的序号。\n");
                system("pause");
                break; 
        }    
        if(bu){
            break;
        }
    }
}

//管理员账号注册系统(finishi) 
void  admin_enroll(){
    while(1){
        int l,m,sign=0;//sign判断账号是否重复 
        char purify[length] = "";//如果账号重复则清空内存当中的重复的用户名账号密码等
        for(l=number;;){//number为全局变量前面有,用来确认管理员账号的下标
            system("cls");
            admin_enroll_title();
            printf("\n尊敬的管理员先生,请输入您的用户名(如若退出请输入0):");
            scanf("%s",&Admin[l].admin_name);
            if(Admin[l].admin_name[0]=='0'&&strlen(Admin[l].admin_name)==1){
                printf("\n真遗憾!失去了一名管理员!");
                break;
            }
            printf("\n尊敬的管理员先生请输入您想要注册的账号:");
            scanf("%s",&Admin[l].admin_id);
            printf("\n尊敬的管理员先生请输入您想要注册的账号的密码:");
            scanf("%s",&Admin[l].admin_password);
            for(m=1;m<l;m++){
                if(l!=m&&strcmp(Admin[l].admin_id,Admin[m].admin_id)==0){
                    sign = 1;
                }
            }
            if(sign==0){
                printf("\n恭喜管理员先生注册成功!\n");
                number++;
            }
            else if(sign==1){
                printf("\n该账号已被其他管理员注册,请重新注册一个。\n");
                strcmp(Admin[l].admin_name,purify);
                strcmp(Admin[l].admin_id,purify);
                strcmp(Admin[l].admin_password,purify);
            }
            break;
        }
        break;
    }
}

//管理员登入系统(finishi) 
void admin_login(){
    system("cls");
    admin_login_title();
    char admin_unid[length],admin_unpassword[length];
    int f,g,b=subscript;
    int hen=0,chicken=0;//判断账号密码是否正确
    while(1){
        printf("\n请输入您的管理员账号:");
        scanf("%s",&admin_unid);
        printf("\n请输入您的管理员密码:");
        scanf("%s",&admin_unpassword);
        for(b=1;b<number;b++){
            g = strcmp(Admin[b].admin_id,admin_unid);
            f = strcmp(Admin[b].admin_password,admin_unpassword);
            if(g==0&&f==0){
                hen = 1;
                chicken = 1;
                break;
            }
            else if(g==0&&f!=0){
                hen = 1;
                chicken = 0;
                break;
            }
            else if(g!=0&&f==0){
                hen = 0;
                chicken = 1;
                break;
            }
            else if(g!=0&&f!=0){
                hen = 0;
                chicken = 0;
                break;
            }
        }
        if(hen==1){
            if(chicken==1){
                printf("\n欢迎回家管理员先生\n");
                administrator_state = 1;
                subscript = b;
            }
            else{
                printf("\n不好意思,密码错误!\n");
            }
        }
        else if(hen==0){
            if(chicken==1){
                printf("\n该账号有误!\n");
            }
            else if(chicken==0){
                printf("\n该账号有误!密码有误!\n");
            }
        }
        break;
    }
}

//修改管理员密码(finishi) 
void administrator_modify(){
    char option;
    int uu=0;
    if(administrator_state==0){
        printf("\n\n管理员先生,请先登入您的账号再进行密码修改操作!\n");
    }
    else{
        while(1){
            system("cls");
            user_modify_title();
            user_modify_menu();
            printf("请选择您的操作:");
            scanf("%s",&option);
            switch(option){
                case '0':
                    uu = 1;
                    break;
                case '1':
                    system("cls");
                    user_modify_title();
                    printf("\n请输入你的新密码:\n");
                    scanf("%s",&Admin[subscript].admin_password);
                    printf("\n密码已经修改成功\n");
                    administrator_state = 0;
                    uu = 1;
                    break;
                default :
                    printf("\n管理员先生请输入正确的序号!\n");
                    system("pause");
            }
            if(uu){
                break;
            }
        }
    }
}

//管理用户名单系统(finishi) 
void administrator_user(){
    if(administrator_state==0){
        printf("\n尊敬的管理员,请先登入再进行管理用户操作!\n");
    }
    else{
        int cp=0;
        while(1){
            char option;
            system("cls");
            administrator_user_select_title();
            administrator_user_select_menu();
            printf("\n**************************************************\n"); 
            printf("\n请选择您需要的服务:");
            scanf("%s",&option);
            switch(option){
                case '0':
                    cp = 1;
                    break;
                case '1':
                    administrator_user_select();
                    cp = 1;
                    break;
                default :
                    printf("\n请输入正确的序号!\n");
                    system("pause");
                    break;
            }
            if(cp){
                break;
            }
        }
    }
}
//查看所有用户(finishi) 
void administrator_user_select(){
    system("cls");
    administrator_user_select_title();
    int o;
    printf("\n  ID        用户名              账号\n\n");
    for(o=1;o<member;o++){
        printf("  ");
        printf("%2d",o);
        printf("       ");
        printf("%-20s",User[o].name);
        printf("%-30s",User[o].id);
        printf("\n");
    }
}

//查看所有图书并且增删图书 
void administrator_book(){
    if(administrator_state==0){
        printf("\n管理员先生,请先登入你的管理员账号!\n");
    }
    else{
        system("cls");
        administrator_book_select();
        int p;
        printf("\n  ID        书名\n\n");
        for(p=0;p<book_number;p++){
            printf("  ");
            printf("%2d",p+1);
            printf("       ");
            printf("《%-20s》",book_name[p]);
            printf("\n");
            printf("\n");
        }
        printf("\n\n");
        add_book_title_menu();
        printf("\n\n请问您要对现有的图书进行什么操作?\n");
        printf("请输入一个选项:");
        char option;
        while(1){
            int op=1;
            scanf("%s",&option);
            switch(option){
                case '1' :
                    add_book();
                    op = 1;
                    break;
                case '2' :
                    clear_book();
                    op = 1;
                    break;
                case '0' :
                    op = 1;
                    break;
                default :
                    op = 1;
                    printf("\n请输入正确的选项!\n");
                    break;
            }
            if(op){
                break;
            }
        }
    }
}

//增添书本
void add_book(){
    while(1){
        int p;
        char add[length];
        system("cls");
        add_book_title();
        printf("\n");
        printf("\n  ID        书名\n\n");
        for(p=0;p<book_number;p++){
            printf("  ");
            printf("%2d",p+1);
            printf("       ");
            printf("《%-20s》",book_name[p]);
            printf("\n");
            printf("\n");
        }
        printf("\n**************************************************\n");
        printf("请输入要添加图书的书名(输入‘0’取消):\n");
        scanf("%s",&add[0]);
        if(add[0]=='0'){
            break;
        }
        else{
            strcpy(book_name[book_number],add);
            book_number++;
            printf("好耶!添加成功!\n");
            system("pause");
        }
    }
}

//删除书本(finishi) 
void clear_book(){
    int u;
    char decrease;
    while(1){
        system("cls");
        reduce_book_title();
        printf("\n");
        printf("\n  ID        书名\n\n");
        for(u=0;u<book_number;u++){
            printf("  ");
            printf("%2d",u+1);
            printf("       ");
            printf("《%-20s》",book_name[u]);
            printf("\n");
            printf("\n");
        }
        printf("\n**************************************************\n");
        printf("请选择要删除的图书(输入‘0’返回上一级):");
        scanf("%s",&decrease);                                        //  选择要删除的书
        if(decrease>'0'&&decrease<book_number+49){                           //  判断输入的编号是否有此书
            for(u=decrease-49;u<book_number;u++){                        //  对在图书馆的书进行循环
                strcpy(book_name[u],book_name[u+1]);                //  将后面的书往前移
            }
            book_number--;
            printf("删除成功!\n");
            system("pause");
        }
        else if(decrease==48){                                       //  输入为0时,退出循环
            break;
        }
        else{
            printf("输入有误,请重试。\n");
            system("pause");
        }
    }
}
//***************************************************************************//
//借书系统(finishi) 
void borrow_main(){
    if(state==0){
        printf("\n请先登入用户系统再进行借书操作!\n");
        system("pause");
    }
    else{
        while(1){
            system("cls");
            borrow_title();
            char option;
            int t;
            printf("\n请选择您需要借阅的书籍\n");
            printf("   序号                               书名\n");
            borrow_book_situation();
            printf("\n**************************************************\n");
            printf("\n请问需要借哪本书,请输入正确的序号(输入0返回):");
            scanf("%s",&option);
            if(option>48&&option<=book_number+48){
                strcpy(User[count].bookborrow[book_cover[count]],book_name[option-49]);
                for(t=option-49;t<book_number;t++){
                    strcpy(book_name[t],book_name[t+1]);
                }
                book_number--;
                book_cover[count]++;
            }
            else if(option==48){
                printf("\n返回成功!");
                system("pause");
                break;
            }
            else{
                printf("\n很抱歉,查无此书!\n");
                system("pause"); 
            }
        }
    }
}

//序号和书的名字
void borrow_book_situation(){
    int k;
    for(k=0;k<book_number;k++){
        printf("    ");
        printf("%-30d",k+1);
        printf("《%s》",book_name[k]);
        printf("\n");
        printf("\n");
    }
}

//**********************************************************************************************//
//还书系统(finishi) 
void return_system(){
    while(1){
        system("cls");
        return_title();
        printf("\n请选择您想要归还的书籍编号");
        printf("  序号           书名\n\n");
        return_printf();
        printf("\n************************************************\n");
        printf("\n请输入您需要归还书籍的编号(若需返回上一级请输入“0”):");
        int r,s;
        char option;
        scanf("%s",&option);
        if(option>48&&option<=book_cover[count]+48){
            strcpy(book_name[book_number],User[count].bookborrow[option-49]);
            for(r=option-49;r<book_cover[count];r++){
                strcpy(User[count].bookborrow[r],User[count].bookborrow[r+1]);
            }
            book_number++;
            book_cover[count]--;
        }
        else if(option==48){
            printf("返回成功!\n");
            break;
        }
        else{
            printf("请输入正确的编号!\n");
            system("pause");
        }
    }
}

//还书目录(finishi) 
void return_printf(){ 
    int q;
    printf("\n");
    for(q=0;q<book_cover[count];q++){
        printf("   ");
        printf("%27d",q+1);
        printf("          《%s》",User[count].bookborrow[q]);
        printf("\n");
    }
}

此段代码不足的地方就是注册多个账号但只能登录成功第一个注册的账号

未经过作者允许禁止转载,但是可以拿去交作业呦!!!

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值