C语言实现共享单车管理系统

本文实例为大家分享了C语言实现共享单车管理系统的具体代码,供大家参考,具体内容如下

1.功能模块图;

2.各个模块详细的功能描述。

1.登陆:登陆分为用户登陆,管理员登陆以及维修员登录,登陆后不同的用户所执行的操作不同,权限不同。

(1)管理员登录:管理员登陆之后,可使用键盘的上下键来控制菜单上的选项,管理员权限不多,可执行最多的操作,可以对单车进行投放,删除,修改,查找,车牌号排序,查看所有单车信息,所有用户信息,管理员能通过或驳回正在申请注册的维修员,还可以查看完全通过认证的维修员。

(2)用户登录:用户登录时需要输入注册时的账号和密码,或者是之前注册的有效账号及密码,用户可以查看自己附近的车,立即用车当车密码出现的时候就开始计时了,还车后停止计时,一个时间段内没有还车不能再借车了,另外还有报修,报修的信息会上传到维修员那里,还可以查看自己的信息修改自己的信息,当用户账号不足100元时不能再借车了,所以还有充值这一项功能。

(3)维修员登录:维修员登录时也需要账户和密码(管理员认证的),维修员权限较大,只可以查看自己的信息,修改自己的信息,以及查看用户报修的单车信息。

2.注册:注册有用户注册和维修员注册。

(1)用户注册:用户注册时,手机号即为登录账户,有查重的功能,每个手机号只能注册一个用户,设置密码时,系统会对你的密码的安全系数进行评分,以及需要确认密码,两次不一致注册失败,输入年龄,年龄不满10岁不可注册,注册成功后需要起一个用户名,需要绑定充值卡,首次充值200元,即可登录。

(2)维修员注册:维修员注册时,手机号即为登录账户,也有查重的功能,每个手机号只能注册一个用户,设置密码时,系统会对你的密码的安全系数进行评分,以及需要确认密码,两次不一致注册失败,后需要起一个用户名,输入年龄,年龄不满18岁不可注册,但此时并没有注册成功,只是完成了申请,不可登录,等待管理员认证,通过,注册成功,即可登录,驳回,注册失败。

3.增加:增加单车信息到文件 中。

4.修改:修改单车信息,修改用户个人信息,修改维修员个人信息。

5.删除:删除单车。

6.查找:查找单车并按所选顺序查看。

3.详细设计

(1).功能函数的调用关系图

(2).各功能函数的数据流程图

a.(查找单车)

b.(增加单车)

c.(删除单车)

d.(修改单车信息)

e.(查看所有用户信息)

f.(查看所有维修员信息)

g.(注册)

h.(登陆)

3.代码:

#include<stdio.h>
#include<string.h> 
#include<stdlib.h>
#include<conio.h>
#include<windows.h> 
#include<time.h>
#include<process.h>
#define Up 0x48
#define Down 0x50
#define LEN sizeof(struct node)
#define LEN_ sizeof(struct node_user)
#define LEN_1 sizeof(struct node_repairman)
typedef struct node
{    
    char number[100];
    char mima[100];
    char address[100];
    char profit[100];
    struct node *next;    
}NODE;
typedef struct node_user
{    
    char number_user[200];
    char mima_user[100];
    char mima_user2[100];
    char name_user[200];
    char bank_card[200];
    int age;
    int h;
    int purse;
    struct node_user *next;    
}NODE_USER;
typedef struct node_repairman
{    
    char number_repairman[100];
    char mima_repairman[100];
    char mima_repairman2[100];
    char name_repairman[100];
    int age;
    struct node_repairman *next;    
}NODE_REPAIRMAN;
int icount,j,w=1,k;
//**********************函数声明**************************
void Gotoxy(int x, int y); 
NODE *input ();    
void show ();                             //管理员创建单车信息 
NODE * add_node (NODE *phead);                  //管理员增加单车信息 
void delete_node ();                      //管理员删除单车信息 
void print ();
void print_user(NODE_USER *m);
void print_repairman_(NODE_REPAIRMAN *m);
void print_repairman_1(NODE_REPAIRMAN *m);               //输出 
void modify ();       //修改 
NODE *look_for ();
void look_for2 (NODE_USER *n);
NODE_REPAIRMAN *look_for3 ();
void look_for_bike (NODE *a);
NODE *look_for_repetition (char a[20]);                 //查找 
void savefile(NODE *phead);       //写文件(A+) 
void savefile_(NODE *phead);
void savefile_user(NODE *phead);
void savefile_user_(NODE_USER *m);
void savefile_repairman_check_1();            //写文件(W) 
NODE *readfile();
NODE_USER *readfile_user();    
NODE_REPAIRMAN *readfile_repairman();
void user (NODE_USER *l);
void repairman_ (NODE_REPAIRMAN *l);
void admin ();      //读文件 
void welcome();               //欢迎函数 
void send_back (NODE *d); 
void sort_num();
void sign_in ();                                                            
void menu_1 ();           //菜单 
void choice ();
void goodbye(); 
//********************************************************
void Gotoxy(int x, int y)  //光标移动
{
    HANDLE hout;//定义句柄变量
    COORD coord;//定义结构体
    coord.X = x;
    coord.Y = y;
    hout = GetStdHandle(STD_OUTPUT_HANDLE);//获得标准输出句柄
    SetConsoleCursorPosition(hout, coord);//移动光标
    return;
}
NODE *input ()       //管理员创建单车信息 
{
    char s[100];
    NODE *phead,*pnew,*pend;
    phead=NULL;
    icount=0;
    pend=pnew=(NODE *)malloc(LEN);
    for(;;)
    {
        printf("\t\t\t共享单车的车牌号(数字):");
        scanf("%s",pnew->number);
        strcpy(s,pnew->number);
        if(strlen(pnew->number)>8) 
        {
            printf("请输入少于8位的车牌号!\n");
        }     
        for(j=0;(size_t)j<strlen(s);j++)
        {
            if(s[j]<'0'||s[j]>'9')
            {
                   printf("车牌号只能为数字!重新输入!\n");
                break;
            }         
        }
        if(strlen(pnew->number)<=8&&(size_t)j==strlen(s))
        {
            break;
        }
    }
    printf("\n\n\t\t\t请为该共享单车设置密码:");
    scanf("%s",pnew->mima);
    for(;;)
    {
        loop2:
        menu_1();
    //    system("color 07");
        printf("请选择该共享单车的初始投放地点:");
        scanf("%s",pnew->address);
        strcpy(s,pnew->address);
        for(j=0;(size_t)j<strlen(s);j++)
        {
            if(s[j]<'0'||s[j]>'7')
            {
                system("cls");
                printf("\a");
          //      system("color 0A");
                   printf("\n\n\n\n\n\t\t\t\t抱歉,目前只有这几个投放地点呦! ^_^ \n");
                   Sleep(500);
                   system("cls");
                   goto loop2;
            }         
        }
        if(strlen(pnew->address)<=8&&(size_t)j==strlen(s))
        {
            break;
        } 
    }
    while(strcmp(pnew->number,"0")==1)
    {
        system("cls");
        icount++;
        if(icount==1)
        {
            pnew->next=NULL;
            phead=pnew;
        } 
        else
        {
            pnew->next=NULL;
            pend->next=pnew;
            pend=pnew;
        }
        pnew=(NODE *)malloc(LEN);
        for(;;)
        {
            printf("共享单车的车牌号(数字):");
            scanf("%s",pnew->number);
            strcpy(s,pnew->number);
            if(strlen(pnew->number)>8) 
            {
                printf("请输入少于8位的车牌号!\n");
            }     
            for(j=0;(size_t)j<strlen(s);j++)
            {
                if(s[j]<'0'||s[j]>'9')
                {
                       printf("车牌号只能为数字!重新输入!\n");
                    break;
                }         
            }
            if(strlen(pnew->number)<=8&&(size_t)j==strlen(s))
            {
                break;
            }
        }
        printf("请为该共享单车设置密码:");
        scanf("%s",pnew->mima);
        for(;;)
        {
            loop3:
            menu_1();
        //    system("color 07");
            printf("请选择该共享单车的初始投放地点:");
            scanf("%s",pnew->address);
            strcpy(s,pnew->address);
            for(j=0;(size_t)j<strlen(s);j++)
            {
                if(s[j]<'0'||s[j]>'7')
                {
                    system("cls");
                    printf("\a");
            //        system("color 0A");
                       printf("\n\n\n\n\n\t\t\t\t抱歉,目前只有这几个投放地点呦! ^_^  \n");
                       Sleep(500);
                       system("cls");
                       goto loop3;
                }         
            }
            if(strlen(pnew->address)<=8&&(size_t)j==strlen(s))
            {
                break;
            } 
        }
    }
    printf("正在保存!");
    savefile(phead);
    free(pnew);
    return phead;
}
void delete_node ()     //管理员删除单车信息 
{
    NODE *l,*n,*m;
    char s[100];
    m=l=readfile();
    printf("\t\t\t\t请输入您要删除的共享单车的车牌号:\n");
    scanf("%s",s);
    while(l!=NULL)
    {
        if(strcmp(m->number,s)==0)
        {
            m=m->next;
            printf("删除成功!\n");    
            break;
        } 
        if(strcmp(l->next->number,s)==0)
        {
            n=l;
            n=n->next;
            l->next=n->next;
            printf("删除成功!\n");
            break;
        } 
        l=l->next;
        if(l->next==NULL)
        {
            printf("\t\t\t\t无删除项\n");
            break;
        } 
    } 
    free(n);
    savefile_(m);
} 
void modify ()    //管理员修改单车信息 
{
    NODE *ma,*m;
    char z[100];
    m=ma=readfile();
    printf("\t\t\t\t请输入您要修改共享单车的车牌号:\n");
    scanf("%s",z);
    while(ma!=NULL)
    {
        if(strcmp(ma->number,z)==0)
        {
            printf("请修改该共享单车的密码:");
            scanf("%s",ma->mima);
            break;
        }
        ma=ma->next;
        if(ma->next==NULL)
        {
            printf("无修改项!\n");
            break;
        }    
    }
    savefile_(m);
}

NODE *look_for (NODE_USER *l)            //管理员查找单车信息  
{
    NODE *m;
    char q[100];
    m=readfile();
    if(l->purse <=100)
    {
        printf("您的金额已经不足100元!请尽快充值!\n\n");
        Sleep(500);
        return NULL;
    }
    printf("\t\t\t\t请输入你要查找的共享单车的车牌号:\n");
    scanf("%s",q);
    while(m!=NULL)
    {
        if(strcmp(m->number,q)==0)
        {
            l->h=1;
            printf("车牌号        密码      停放地点\n\n");
            printf("%s\t  \t",m->number);
            printf("%s\t  ",m->mima);
            if(strcmp(m->address,"0")==0)
                printf("长安广场");
            if(strcmp(m->address,"1")==0)
                printf("南大学城");
            if(strcmp(m->address,"2")==0)
                printf("三森");
            if(strcmp(m->address,"3")==0)
                printf("紫薇都市");
            if(strcmp(m->address,"4")==0)
                printf("韦曲西街");
            if(strcmp(m->address,"5")==0)
                printf("航天城");
            if(strcmp(m->address,"6")==0)
                printf("韦曲南站"); 
            if(strcmp(m->address,"7")==0)
                printf("秦岭沿线"); 
            break;
        }
        m=m->next;
    }
    if(m==NULL)
        printf("\n还没有投放该编号的车哦!"); 
    printf("\n");
    return m;
} 
NODE *look_for_0 ()      //管理员查找单车信息  
{
    NODE *m,*n;
    int a,b=0;
    char q[100],p[100];
    n=m=readfile();
    int flag;
    int l = 8;
    printf("\n");
    printf("-->管理员端"); 
    while (1)
    {
        b=0;
        Gotoxy(53, 8);
        printf("1.按车牌号查找");
        Gotoxy(53, 10); 
        printf("2.按停放地点查询");
        Gotoxy(53, 12);
        printf("3.按车号和地点查询");
        Gotoxy(53, 14);
        printf("4.退出查询");
        Gotoxy(52, l);
        printf("★");
        flag = _getch();
        if (flag == Down)
        {
            l=l+2;
            if (l == 16)
                l = 8;
        }
        if (flag == Up)
        {
            l=l-2;
            if (l == 6)
                l = 14;
        }
        if (flag == 13)
        {
            if (l == 8)   
            {
                system("cls");
                printf("\n->请输入您要查找的车的车牌号:");
                scanf("%s",q);
                while(n!=NULL)
                {
                    if(strcmp(n->number,q)==0)
                    {
                        b++;
                    }    
                    n=n->next;
                }
                if(b!=0)
                    printf("车牌号        密码      停放地点\n\n");
                while(m!=NULL)
                {
                    if(strcmp(m->number,q)==0)
                    {
                        printf("%s\t  \t",m->number);
                        printf("%s\t  ",m->mima);
                        if(strcmp(m->address,"0")==0)
                            printf("长安广场");
                        if(strcmp(m->address,"1")==0)
                            printf("南大学城");
                        if(strcmp(m->address,"2")==0)
                            printf("三森");
                        if(strcmp(m->address,"3")==0)
                            printf("紫薇都市");
                        if(strcmp(m->address,"4")==0)
                            printf("韦曲西街");
                        if(strcmp(m->address,"5")==0)
                            printf("航天城");
                        if(strcmp(m->address,"6")==0)
                            printf("韦曲南站"); 
                        if(strcmp(m->address,"7")==0)
                            printf("秦岭沿线"); 
                        break;
                    }
                    m=m->next;
                }
                if(m==NULL)
                    printf("\n还没有投放该编号的车哦!"); 
                printf("\n");
                _getch();
            }
            if (l == 10)
            {
                system("cls");
                menu_1();
                printf("\n->请输入您要查找在该停放位置的车:");
                scanf("%s",q);
                while(n!=NULL)
                {
                    if(strcmp(n->address,q)==0)
                    {
                        b++;
                    }    
                    n=n->next;
                }
                if(b!=0)
                    printf("车牌号        密码      停放地点\n\n");
                while(m!=NULL)
                {
                    if(strcmp(m->address,q)==0)
                    {
                        printf("%s\t  \t",m->number);
                        printf("%s\t  ",m->mima);
                        if(strcmp(m->address,"0")==0)
                            printf("长安广场");
                        if(strcmp(m->address,"1")==0)
                            printf("南大学城");
                        if(strcmp(m->address,"2")==0)
                            printf("三森");
                        if(strcmp(m->address,"3")==0)
                            printf("紫薇都市");
                        if(strcmp(m->address,"4")==0)
                            printf("韦曲西街");
                        if(strcmp(m->address,"5")==0)
                            printf("航天城");
                        if(strcmp(m->address,"6")==0)
                            printf("韦曲南站"); 
                        if(strcmp(m->address,"7")==0)
                            printf("秦岭沿线"); 
                        a=1;
                        printf("\n");
                    }
                    m=m->next;
                }
                if(a!=1)
                {
                    printf("\n\n\n->该停放点的车都被骑走了哟!");
                }
                _getch();
            }
            if (l == 12)
            {
                system("cls");
                printf("\n->请输入您要查找的车的车牌号:");
                scanf("%s",q);
                menu_1();
                printf("\n->请输入您要查找在该停放位置的车:");
                scanf("%s",p);
                while(m!=NULL)
                {
                    if(strcmp(m->number,q)==0 && strcmp(m->address,p)==0)
                    {
                        printf("车牌号        密码      停放地点\n\n");
                        printf("%s\t  \t",m->number);
                        printf("%s\t  ",m->mima);
                        if(strcmp(m->address,"0")==0)
                            printf("长安广场");
                        if(strcmp(m->address,"1")==0)
                            printf("南大学城");
                        if(strcmp(m->address,"2")==0)
                            printf("三森");
                        if(strcmp(m->address,"3")==0)
                            printf("紫薇都市");
                        if(strcmp(m->address,"4")==0)
                            printf("韦曲西街");
                        if(strcmp(m->address,"5")==0)
                            printf("航天城");
                        if(strcmp(m->address,"6")==0)
                            printf("韦曲南站"); 
                        if(strcmp(m->address,"7")==0)
                            printf("秦岭沿线"); 
                    }
                    m=m->next;
                }
                if(m==NULL)
                    printf("\n没有符合条件的车哦!"); 
                printf("\n");
                _getch();
            }
            if(l == 14)
            {
                return NULL;
            } 
            return m;
        }
    }        
} 
NODE *look_for_bike (char a[100])           //报修时查找单车信息  
{
    NODE *m;
    m=readfile();
    while(m!=NULL)
    {
        if(strcmp(m->number,a)==0)
        {
            break;
        }
        m=m->next;
    }
    if(m==NULL)
        printf("\n亲!报修信息有误!还没有投放该编号的车哦!"); 
    printf("\n");
    return m;
} 
void send_back (NODE *d)      //用户归还共享单车 
{
    NODE *m,*l;
    char s[100];
    l=m=readfile();
    while(m!=NULL)
    {
        if(strcmp(m->number,d->number)==0)
        {
            menu_1 ();
            printf("\t\t\t请选择您归还的地点:"); 
            scanf("%s",m->address); 
            strcpy(s,m->address);
            for(j=0;(size_t)j<strlen(s);j++)
            {
                if(s[j]<'0'||s[j]>'7')
                {
                    system("cls");
                    printf("\a");
                       printf("\n\n\n\n\n\t\t\t\t抱歉,目前只有这几个投放地点呦! ^_^ \n");
                       Sleep(500);
                       system("cls");
                }         
            }
            if(strlen(m->address)<=8&&(size_t)j==strlen(s))
            {
                break;
            } 
        }
        m=m->next;
    }
    if(m==NULL)
        printf("\n还没有投放该编号的车哦!"); 
    printf("\n");
    savefile_(l);        
} 
NODE_USER *look_for2 ()       //登录 
{ 
    loop_:
    NODE_USER *m,*n;
    int i=0;
    char c,a[100],b[100];
    char x[100],password[100],p[100];
    int l = 8;
    system("cls");
    n=m=readfile_user();
    printf("-->请输入正确的账号和密码\n"); 
    printf("\n\n\n\n");
    printf("\t\t\t\t\t╔════════════════╗\t\t\t\n");
    printf("\t\t\t\t\t║☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆║\t\t\t\n");
    printf("\t\t\t\t\t║┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄║\t\t\t\n");
    printf("\t\t\t\t\t║                                ║\t\t\t\n");
    printf("\t\t\t\t\t║                                ║\t\t\t\n");
    printf("\t\t\t\t\t║                                ║\t\t\t\n");
    printf("\t\t\t\t\t╚════════════════╝\t\t\t\n");
    while (1)
    {
        Gotoxy(44, 8);
        printf("★我的账号:");
        Gotoxy(44, 10); 
        printf("★我的密码:");
        Gotoxy(44, l);
        if(l == 8)
        {
            printf("☆");
            Gotoxy(56,8);
            scanf("%s",x);
            Gotoxy(44,10);
            printf("☆");
            Gotoxy(56,10);
            while((c=getch())!=13)
            {
                if(c==8)
                {
                    printf("\b \b");
                    i--;
                    continue;
                }
                password[i++]=c;
                putchar('*');
            }
            password[i]='\0';
            printf("\n");
        }
        break;
    }
    while(m!=NULL)
    {
        if(strcmp(m->number_user,x)==0&&strcmp(m->mima_user,password)==0)
        {
            system("cls");
            printf("登陆成功!"); 
            break;
        }
        m=m->next;
    }
    if(m==NULL)
    {
        mm:
        printf("\n\n\n\t\t\t\t\t 账号或密码错误!请重新输入!\n");
        Sleep(500);
        printf("是否忘记密码,需要找回?"); 
        scanf("%s",p);
        for(;;)
        {
            if(strcmp(p,"y")==0||strcmp(p,"Y")==0)
            {
                printf("\n->请输入账号:");
                scanf("%s",a);
                printf("\n->请输入充值卡号:");
                scanf("%s",b);
                while(n!=NULL)
                {
                    if(strcmp(n->number_user,a)==0 && strcmp(n->bank_card,b)==0)
                    {
                        system("cls");
                        printf("\n\n->成功找回!下次可别忘了哟!"); 
                        printf("\n\n我的用户名:%s",n->name_user);
                        printf("\n\n我的账号:%s\t",n->number_user);
                        printf("\n\n我的密码:%s\t",n->mima_user);
                        printf("\n\n我的钱包:¥ %d",n->purse);
                        getch();
                        break;
                    }
                    n=n->next;
                }
                break;
            }
            else if(strcmp(p,"n")==0||strcmp(p,"N")==0)
            {
                printf("->已取消操作!\n");
                Sleep(500);
                system("cls");
                break;
            }
            else if(strcmp(p,"y")!=0 && strcmp(p,"Y")!=0 && strcmp(p,"n")!=0 && strcmp(p,"N")!=0)
            {
                printf("亲!只能输入y/n哦!手误的话重新输入吧!^_^\n");
                Sleep(500);
                system("cls");
                goto mm;
            }
        }
        goto loop_; 
    }    
    printf("\n");
    return m;
}
NODE_REPAIRMAN *look_for3 ()      //登录 
{ 
    loop_:
    int i=0;
    char c;
    char x[100],password[100];
    int l = 8;
    NODE_REPAIRMAN *m;
    system("cls");
    m=readfile_repairman();
    printf("-->请输入正确的账号和密码\n"); 
    printf("\n\n\n\n");
    printf("\t\t\t\t\t╔════════════════╗\t\t\t\n");
    printf("\t\t\t\t\t║☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆║\t\t\t\n");
    printf("\t\t\t\t\t║┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄║\t\t\t\n");
    printf("\t\t\t\t\t║                                ║\t\t\t\n");
    printf("\t\t\t\t\t║                                ║\t\t\t\n");
    printf("\t\t\t\t\t║                                ║\t\t\t\n");
    printf("\t\t\t\t\t╚════════════════╝\t\t\t\n");
    while (1)
    {
        Gotoxy(44, 8);
        printf("★我的账号:");
        Gotoxy(44, 10); 
        printf("★我的密码:");
        Gotoxy(44, l);
        if(l == 8)
        {
            printf("☆");
            Gotoxy(56,8);
            scanf("%s",x);
            Gotoxy(44,10);
            printf("☆");
            Gotoxy(56,10);
            while((c=getch())!=13)
            {
                if(c==8)
                {
                    printf("\b \b");
                    i--;
                    continue;
                }
                password[i++]=c;
                putchar('*');
            }
            password[i]='\0';
            printf("\n");
        }
        break;
    }
    while(m!=NULL)
    {
        if(strcmp(m->number_repairman,x)==0&&strcmp(m->mima_repairman,password)==0)
        {
            system("cls");
            printf("登陆成功!"); 
            break;
        }
        m=m->next;
    }
    if(m==NULL)
    {
        printf("\n\n\t\t\t\t\t 账号或密码错误!请重新输入!\n");
        goto loop_; 
    }    
    printf("\n");
    return m;
}
void look_for_user (NODE_USER *m)            //查找 
{ 
    NODE_USER *n;
    n=readfile_user();
    while(n!=NULL)
    {
        if(strcmp(n->number_user,m->number_user)==0)
        {
            system("cls");
            printf("****我的信息->\n"); 
            printf("用户名:%s\n",n->name_user);
            printf("账号:%s\n",n->number_user);
            printf("密码:%s\n",n->mima_user);
            break;
        }
        n=n->next;
    }    
    printf("\n");
}
void look_for_repairman (NODE_REPAIRMAN *m)                //查找 
{ 
    NODE_REPAIRMAN *n;
    n=readfile_repairman();
    while(n!=NULL)
    {
        if(strcmp(n->number_repairman,m->number_repairman)==0)
        {
            system("cls");
            printf("****我的信息->\n"); 
            printf("用户名:%s\n",n->name_repairman);
            printf("账号:%s\n",n->number_repairman);
            printf("密码:%s\n",n->mima_repairman);
            break;
        }
        n=n->next;
    }    
    printf("\n");
}
void savefile(NODE *phead)          //写文件 
{
    FILE *fp;
    NODE *p;
    if((fp = fopen("bike.txt", "a+"))==NULL)
        printf("\a error! Can not open the file!");
//    fputs("车牌号 密码 停车点\n",fp); 
    for(p=phead;p!=NULL;p=p->next)
    {
        fprintf(fp,"%s %s %s \n",p->number,p->mima,p->address);
    }
    printf("\n\n->按任意键返回!\n");
    fclose(fp);
}
void savefile_(NODE *phead)    //写文件 
{
    FILE *fp;
    NODE *p;
    if((fp = fopen("bike.txt", "w"))==NULL)
        printf("\a error! Can not open the file!");
    for(p=phead;p!=NULL;p=p->next)
    {
        fprintf(fp,"%s %s %s \n",p->number,p->mima,p->address);
    }
    fclose(fp);
}
void savefile_user_bike(NODE *m)      //写文件 
{
    FILE *fp;
    if((fp = fopen("repairman_.txt", "a+"))==NULL)
        printf("\a error! Can not open the file!");
    fprintf(fp,"%s %s %s \n",m->number,m->mima,m->address);
    printf("\n\n->按任意键返回!\n");
    fclose(fp);
}
void savefile_user(NODE_USER *m)      //写文件 
{
    FILE *fp;
    if((fp = fopen("user.txt", "a+"))==NULL)
        printf("\a error! Can not open the file!");
        fprintf(fp,"%s %s %s %s %d \n",m->name_user,m->number_user,m->mima_user,m->bank_card,m->purse);
    printf("\n\n->按任意键返回!\n");
    fclose(fp);
}
void savefile_user_(NODE_USER *n)     //写文件 
{
    NODE_USER *m;
    FILE *fp;
    if((fp = fopen("user.txt", "w"))==NULL)
        printf("\a error! Can not open the file!");
    for(m=n;m!=NULL;m=m->next)
    {
        fprintf(fp,"%s %s %s %s %d \n",m->name_user,m->number_user,m->mima_user,m->bank_card,m->purse);
    }
    printf("\n\n->按任意键返回!\n");
    fclose(fp);
}
void savefile_repairman(NODE_REPAIRMAN *m)            //写文件 
{
    FILE *fp;
    if((fp = fopen("repairman.txt", "a+"))==NULL)
        printf("\a error! Can not open the file!");
        fprintf(fp,"%s %s %s \n",m->name_repairman,m->number_repairman,m->mima_repairman);
    printf("\n\n->按任意键返回!\n");
    fclose(fp);
}
void savefile_repairman_check(NODE_REPAIRMAN *m)                                                         //写文件 
{
    FILE *fp;
    if((fp = fopen("repairman_check.txt", "a+"))==NULL)
        printf("\a error! Can not open the file!");
    fprintf(fp," %s %s %s \n",m->name_repairman,m->number_repairman,m->mima_repairman);
/*    fprintf(fp,"%s\n",m->name_repairman);
    fprintf(fp,"%s\n",m->number_repairman);
    fprintf(fp,"%s\n",m->mima_repairman);*/
    printf("\n\n->按任意键返回!\n");
    fclose(fp);
}
void savefile_repairman_check_1()  //写文件 
{
    FILE *fp;
    fp = fopen("repairman_check.txt", "w");
    fclose(fp);
}
NODE *readfile()            //读文件 
{ 
    NODE *head,*u;
    FILE *fp;
    head=(NODE *)malloc(LEN);
    head->next=NULL;
    fp=fopen("bike.txt","a+");
    fclose(fp);
    if((fp=fopen("bike.txt","r"))==NULL)  
    {  
        printf("\n--->没有找到文件!\n");  
        Sleep(1000);
        exit(0);
    } 
  /*  else
    {
        rewind(fp); 
        fgets(a,66,fp);
    } 
    */
    while(!feof(fp))
    {
        u=(NODE *)malloc(LEN);
        u->next=NULL;
        fscanf(fp,"%s %s %s \n",u->number,u->mima,u->address);
        u->next=head->next;
        head->next=u;
    }
    fclose(fp);
    return (head->next);
} 
NODE_USER *readfile_user()        //读文件 
{ 
    NODE_USER *head,*m;
    FILE *fp;
    head=(NODE_USER *)malloc(LEN_);
    head->next=NULL;
    fp=fopen("user.txt","a+");
    fclose(fp);
    if((fp=fopen("user.txt","r"))==NULL)  
    {  
        printf("\n--->没有找到文件!\n");  
        Sleep(1000);
        exit(0);
    }
    while(!feof(fp))
    {
        m=(NODE_USER *)malloc(LEN_);
        m->next=NULL;
        fscanf(fp,"%s %s %s %s %d \n",m->name_user,m->number_user,m->mima_user,m->bank_card,&m->purse);
        m->next=head->next;
        head->next=m;
    }
    fclose(fp);
    return (head->next);
} 
NODE *readfile_user_bike()
{
    char ch;
    NODE *head,*m;
    FILE *fp;
    head=(NODE *)malloc(LEN);
    head->next=NULL;
    fp=fopen("repairman_.txt","a+");
    fclose(fp);
    if((fp=fopen("repairman_.txt","r"))==NULL)  
    {  
        printf("\n--->没有找到文件!\n");  
        Sleep(1000);
        exit(0);
    }
    ch=fgetc(fp);
    if(ch==EOF)
    {
        printf("还没有人报修呢!可以休息等等哦!\n\n");
        k=1;
        return NULL;
    }
    while(!feof(fp))
    {
        m=(NODE *)malloc(LEN);
        m->next=NULL;
        fscanf(fp,"%s %s %s \n",m->number,m->mima,m->address);
        m->next=head->next;
        head->next=m;
    }
    fclose(fp);
    return (head->next);
}
NODE_REPAIRMAN *readfile_repairman()   //读文件 
{ 
    NODE_REPAIRMAN *head,*m;
    FILE *fp;
    head=(NODE_REPAIRMAN *)malloc(LEN_);
    head->next=NULL;
    fp=fopen("repairman.txt","a+");
    fclose(fp);
    if((fp=fopen("repairman.txt","r"))==NULL)  
    {  
        printf("\n--->没有找到文件!\n");  
        Sleep(1000);
        exit(0);
    }
    while(!feof(fp))
    {
        m=(NODE_REPAIRMAN *)malloc(LEN_);
        m->next=NULL;
        fscanf(fp,"%s %s %s \n",m->name_repairman,m->number_repairman,m->mima_repairman);
        m->next=head->next;
        head->next=m;
    }
    fclose(fp);
    return (head->next);
}
NODE_REPAIRMAN *readfile_repairman_check()      //读文件 
{ 
    char ch;
    NODE_REPAIRMAN *head,*m;
    FILE *fp;
    head=(NODE_REPAIRMAN *)malloc(LEN_);
    head->next=NULL;
    fp=fopen("repairman_check.txt","a+");
    fclose(fp);
    if((fp=fopen("repairman_check.txt","r"))==NULL)  
    {  
        printf("\n--->没有找到文件!\n");  
        Sleep(1000);
        exit(0);
    }
    ch=fgetc(fp);
    if(ch==EOF)
    {
        w=0;
    }
    while(!feof(fp))
    {
        m=(NODE_REPAIRMAN *)malloc(LEN_);
        m->next=NULL;
        fscanf(fp," %s %s %s \n",m->name_repairman,m->number_repairman,m->mima_repairman);
        m->next=head->next;
        head->next=m;
    }
    fclose(fp);
    return (head->next);
} 
void submit()
{
    int i; 
    system("cls");   
    printf("\n\n\n\n\t\t\t\t");
       printf("★正在提交您的信息!★");
       printf("\n\t\t\t     ");
      for(i=0;i<7;i++)
       {
        printf("->  ");
        Sleep(300);
    }
    system("cls");
}
void goodbye()
{
    int i; 
    system("cls");   
    printf("\n\n\n\n\t\t\t\t");
       printf("★正在退出!★");
       printf("\n\t\t\t     ");
      for(i=0;i<5;i++)
       {
        printf("->  ");
        Sleep(300);
    }
    system("cls");
}
void show ()
{
    printf("-->使用指南!\n\n");
    printf("    欢迎使用共享单车系统!该管理系统面向大众,可使用手机号自\n\n");
    Sleep(500);
    printf("行注册用户端以及维修员,用户完成注册后即可使用,维修员需要等\n\n");
    Sleep(500);
    printf("待管理员审核通过即可工作,每个手机号只能注册一次。\n\n\n");
    Sleep(500);
    printf("    用户租车收费:每半个小时1元,不满半小时按照一小时计算。\n\n\n\n\n\n\n");
    Sleep(500);
    printf("感谢您的阅读。按任意键进入系统 ^_^ ");
    getch();
}
void check ()
{
    NODE_REPAIRMAN *d;
    int flag;
    int l = 8;
    printf("\n");
    printf("-->管理员端"); 
    while (1)
    {
        Gotoxy(53, 8);
        printf("1.待认证的维修员 ");
        Gotoxy(53, 10); 
        printf("2.已注册的维修员");
        Gotoxy(53, 12);
        printf("3.返回上一层");
        Gotoxy(52, l);
        printf("★");
        flag = _getch();
        if (flag == Down)
        {
            l=l+2;
            if (l == 14)
                l = 8;
        }
        if (flag == Up)
        {
            l=l-2;
            if (l == 6)
                l = 12;
        }
        if (flag == 13)
        {
            if (l == 8)   
            {
                system("cls");
                d=readfile_repairman_check();
                print_repairman_(d);
                _getch();
            }
            if (l == 10)
            {
                system("cls");
                d=readfile_repairman();
                print_repairman_1(d);
                printf("\n\n->按任意键继续!");
                getch();
                system("cls");
                _getch();
            }
            if (l == 12)
            {
                system("cls");
                return;
            }
        }
    }
}
void menu_1 ()
{
    printf("\t\t ----------------------------------------------------------- \t\t\t\n");
    printf("\t\t|                  共享单车 长安区停放地点                  |\t\t\t\n");
    printf("\t\t|-----------------------------------------------------------|\t\t\t\n");
    printf("\t\t|  【0】:长安广场      【1】:南大学城      【2】:三森    |\t\t\t\n");
    printf("\t\t|                                                           |\t\t\t\n");
    printf("\t\t|  【3】:紫薇都市      【4】:韦曲西街      【5】:航天城  |\t\t\t\n");
    printf("\t\t|                                                           |\t\t\t\n");
    printf("\t\t|  【6】:韦曲南站      【7】:秦岭沿线                     |\t\t\t\n");
    printf("\t\t ----------------------------------------------------------- \t\t\t\n");
} 
void sign_in ()
{
    NODE_USER *n;
    NODE_REPAIRMAN *l;
    int flag;
    int z = 8;
    system("cls");
    while (1)
    {
        Gotoxy(53, 8);
        printf("1.管理员登陆");
        Gotoxy(53, 10); 
        printf("2.用户登陆");
        Gotoxy(53, 12);
        printf("3.维修员登陆");
        Gotoxy(53, 14);
        printf("0.退出登录");
        Gotoxy(52, z);
        printf("★");
        flag = _getch();
        if (flag == Down)
        {
            z=z+2;
            if (z == 16)
                z = 8;
        }
        if (flag == Up)
        {
            z=z-2;
            if (z == 6)
                z = 14;
        }
        if (flag == 13)
        {
            if (z == 8)
            {
                system("cls");
                admin();
                _getch();
            }
            if (z == 10)
            {
                    n=look_for2();
                    user (n);
                    system("cls");
                    _getch();
            }
            if (z == 12)   //权限在老师端之上才能注册
            {
                    l=look_for3();
                    repairman_(l);
                    _getch();
            }
            if (z == 14)
            {
                system("cls");
                return;
            }
        }
    }
}
void print ()           //输出单车信息 
{
    NODE *m;
    m=readfile();
    printf("车牌号           密码       停放地点\n\n");
    while(m!=NULL)
    {
        printf("%s\t\t",m->number);
        printf("%s\t  ",m->mima);
        if(strcmp(m->address,"0")==0)
            printf("长安广场");
        if(strcmp(m->address,"1")==0)
            printf("南大学城");
        if(strcmp(m->address,"2")==0)
            printf("三森");
        if(strcmp(m->address,"3")==0)
            printf("紫薇都市");
        if(strcmp(m->address,"4")==0)
            printf("韦曲西街");
        if(strcmp(m->address,"5")==0)
            printf("航天城");
        if(strcmp(m->address,"6")==0)
            printf("韦曲南站"); 
        if(strcmp(m->address,"7")==0)
            printf("秦岭沿线"); 
        m=m->next;
        printf("\n\n");
    }    
} 
void print_user(NODE_USER *m)
{
    int i=0;
    while(m!=NULL)
    {
        i++;
        printf("第%d个用户:\t",i);
        printf("用户名:%-16s",m->name_user);
        printf("账号:%-16s\t",m->number_user);
        printf("密码:%-16s\t",m->mima_user);
        printf("账户余额:¥ %d",m->purse);
        m=m->next;
        printf("\n\n");
    }
    printf("->按任意键继续!");
    getch();
}
void print_repairman_(NODE_REPAIRMAN *m)
{
    int i=0;
    char n[10];
    if(w==0)
    {
        printf("\n-->还没有人申请哦!\n");
        printf("\n->请按任意键继续。"); 
        return;
    }
    printf("-->正等待认证通过\n\n\n"); 
    while(m!=NULL)
    {
        i++;
        printf("第%d个申报维修人员:\t",i);
        printf("用户名:%s\t\t",m->name_repairman);
        printf("账号:%s\t\t",m->number_repairman);
        printf("密码:%s\t\t",m->mima_repairman);
        printf("\n\n是否通过?(y/n):"); 
        scanf("%s",n);
        if(strcmp(n,"y")==0 || strcmp(n,"Y")==0)
        {
            printf("\n\n->已通过认证!\n");
            savefile_repairman(m); 
        }
        if(strcmp(n,"n")==0 || strcmp(n,"N")==0)
        {
            printf("\n\n->已驳回申诉!\n");
        }
        m=m->next;
        printf("\n\n");
    }
    savefile_repairman_check_1();
}
void print_repairman_1(NODE_REPAIRMAN *m)
{
    int i=0;
    while(m!=NULL)
    {
        i++;
        printf("第%d个维修人员:",i);
        printf("用户名:%-15s",m->name_repairman);
        printf("账号:%-18s",m->number_repairman);
        printf("密码:%s",m->mima_repairman);
        m=m->next;
        printf("\n\n");
    }
}
void print_repairman ()     //输出报修单车信息 
{
    NODE *m;
    m=readfile_user_bike();
    if(k==0)
        printf("车牌号           密码       停放地点\n\n");
    while(m!=NULL)
    {
        printf("%s\t\t",m->number);
        printf("%s\t  ",m->mima);
        if(strcmp(m->address,"0")==0)
            printf("长安广场");
        if(strcmp(m->address,"1")==0)
            printf("南大学城");
        if(strcmp(m->address,"2")==0)
            printf("三森");
        if(strcmp(m->address,"3")==0)
            printf("紫薇都市");
        if(strcmp(m->address,"4")==0)
            printf("韦曲西街");
        if(strcmp(m->address,"5")==0)
            printf("航天城");
        if(strcmp(m->address,"6")==0)
            printf("韦曲南站"); 
        if(strcmp(m->address,"7")==0)
            printf("秦岭沿线"); 
        m=m->next;
        printf("\n\n");
    }    
}
void welcome()         //输入密钥进入管理员 
{ 
    int i=0;
    char c;
    char password[100];
    char num[100];
    strcpy(num,"152323");
    loopback3:
    system("cls");
    printf(" \n\n\n\n\n\n\n\n");
    printf("\t\t\t\t欢迎使用共享单车管理系统!\n\n\n");
    printf("\t\t\t\t请输入管理员密码:");
    while((c=getch())!=13)
    {
        if(c==8)
        {
            printf("\b \b");
            i--;
            continue;
        }
        password[i++]=c;
        putchar('*');
    }
    password[i]='\0';
    if(strcmp(password,num)==0)
    {  
        system("cls");
    }
    else
    {
        printf("\t\t\t\t 密码错误!");         //密码错误重新输出 
        Sleep(100);
        system("cls");
        goto loopback3;
    } 
}
void user (NODE_USER *l)
{
    time_t first,second;
    double s;
    int p=1,q=0,t=0;
    char n[100],yn[100],h[100]; 
    NODE *m,*g,*v,*y;
    NODE_USER *o,*k,*f;
    int flag;
    int z = 4,d;
    f=k=o=readfile_user();
    while(k!=NULL)
    {
        if(strcmp(l->number_user,k->number_user)==0)
            break;
        k=k->next;
    }
    printf("\n");
    printf("-->用户端"); 
    while (1)
    {
        q=0;
        Gotoxy(53, 4); 
        printf("1.附近的车");
        Gotoxy(53, 6);
        printf("2.立即用车");
        Gotoxy(53, 8); 
        printf("3.立即还车");
        Gotoxy(53, 10);
        printf("4.我要报修");
        Gotoxy(53, 12);
        printf("5.我的信息");
        Gotoxy(53, 14);
        printf("6.我去充值");
        Gotoxy(53, 16); 
        printf("0.退出登录");
        Gotoxy(52, z);
        printf("★");
        flag = _getch();
        if (flag == Down)
        {
            z=z+2;
            if (z == 18)
                z = 4;
        }
        if (flag == Up)
        {
            z=z-2;
            if (z == 2)
                z = 16;
        }
        if (flag == 13)
        {
            if(z == 4)
            {
                system("cls");
                menu_1();
                printf("请选择您所在的地点代号:"); 
                scanf("%s",h);
                y=v=readfile();
                while(y!=NULL)
                {
                    if(strcmp(y->address,h)==0)
                    {
                        t++;
                    }
                    y=y->next;
                }
                if(t!=0)
                    printf("车牌号        密码      停放地点\n\n");
                while(v!=NULL)
                {
                    if(strcmp(v->address,h)==0)
                    {
                        q=1;
                        printf("%s\t  \t",v->number);
                        printf("%s\t  ",v->mima);
                        if(strcmp(v->address,"0")==0)
                            printf("长安广场");
                        if(strcmp(v->address,"1")==0)
                            printf("南大学城");
                        if(strcmp(v->address,"2")==0)
                            printf("三森");
                        if(strcmp(v->address,"3")==0)
                            printf("紫薇都市");
                        if(strcmp(v->address,"4")==0)
                            printf("韦曲西街");
                        if(strcmp(v->address,"5")==0)
                            printf("航天城");
                        if(strcmp(v->address,"6")==0)
                            printf("韦曲南站"); 
                        if(strcmp(v->address,"7")==0)
                            printf("秦岭沿线");
                        printf("\n"); 
                    }
                    v=v->next;
                }
                if(q==0)
                {
                    printf("\n\n->这里的小车都被骑走啦!"); 
                    Sleep(500);
                }
                printf("\n");
                getch();
                system("cls");
            } 
            if (z == 6)   
            {
                system("cls");
                if(k->h==1)
                {
                    printf("->您已经在使用共享单车了!一个账号只能同时租一个哦!\n");
                    printf("->按任意键继续。。。\n");
                    getch();
                }
                else
                {
                    system("cls");
                    g=look_for (k);
                    first=time(NULL);
                    printf("->按任意键继续。。。\n");
                    getch();
                }
                _getch();
            }
            if (z == 8)
            {
                system("cls");
                if(k->h==1)
                {
                    send_back(g);
                    second=time(NULL);
                    s=difftime(second,first);
                    k->h=0;
                } 
                else
                {
                    printf("还没有借车呐!快去骑共享单车哦!\n\n");
                    goto mn;
                     
                }
                while(1)
                {
                    if(s > 1800.0)
                    {
                        s=s-1800.0;
                        p++;
                    }
                    else
                        break;
                }
                system("cls");
                if(p==1)
                {
                    k->purse=k->purse-1;
                    printf("您总共骑行%0.1f秒,您需要支付 $1 yuan\n",s);
                    printf("\n\n账户余额%d元",k->purse);
                    savefile_user_(o);    
                }    
                else
                    printf("您总共骑行%0.1f秒,您需要支付 $%d yuan\n",s,p);
                mn:
                _getch();
            }
            if (z == 10)
            {
                system("cls");
                loop__1:
                while(1)
                {
                    printf("请输入您要报修的共享单车的车牌号:");
                    scanf("%s",n);
                    m=look_for_bike (n);
                    if(m!=0)
                    {
                        break;
                    }
                }
                printf("您确定要报修吗?(y/n)");
                scanf("%s",yn);
                for(;;)
                {
                    if(strcmp(yn,"y")==0||strcmp(yn,"Y")==0)
                    {
                        printf("感谢您的反馈!如果我们确认申报无误的话,会给您加分哦!\n");
                        savefile_user_bike(m);
                        break;
                    }
                    else if(strcmp(yn,"n")==0||strcmp(yn,"N")==0)
                    {
                        printf("->已取消操作!\n");
                        Sleep(500);
                        system("cls");
                        break;
                    }
                    else if(strcmp(yn,"y")!=0 && strcmp(yn,"Y")!=0 && strcmp(yn,"n")!=0 && strcmp(yn,"N")!=0)
                    {
                        printf("亲!只能输入y/n哦!手误的话重新输入吧!^_^\n");
                        Sleep(500);
                        system("cls");
                        goto loop__1;
                    }
                }
                _getch();
            }
            if (z == 12)
            {
                system("cls");
                look_for_user (l);
                printf("浏览完毕后,按任意键继续!\n");
                _getch();
            }
            if (z == 14)
            {
                system("cls");
                printf("您已绑定充值卡!请输入充值金额:");
                scanf("%d",&d);
                while(f!=NULL)
                {
                    if(strcmp(l->number_user,f->number_user)==0)
                        break;
                    f=f->next;
                } 
                printf("\n当前余额%d元,充值后为%d元",f->purse,f->purse+d);
                f->purse=f->purse+d;
                savefile_user_(o);
                printf("\n\n->充值成功!"); 
                Sleep(1000);
                system("cls");
            }
            if (z == 16)
            {
                return;
            }
        }
    }
}
void repairman_ (NODE_REPAIRMAN *l)
{
    int flag;
    int z = 8;
    system("cls");
    printf("\n->维修员端");
    while (1)
    {
        Gotoxy(53, 8);
        printf("1.我的信息");
        Gotoxy(53, 10); 
        printf("2.用户报修车辆");
        Gotoxy(53, 12);
        printf("0.返回上一层");
        Gotoxy(52, z);
        printf("★");
        flag = _getch();
        if (flag == Down)
        {
            z=z+2;
            if (z == 14)
                z = 8;
        }
        if (flag == Up)
        {
            z=z-2;
            if (z == 6)
                z = 12;
        }
        if (flag == 13)
        {
            if (z == 8)
            {
                system("cls");
                look_for_repairman (l);
                _getch();
            }
            if (z == 10)
            {
                    system("cls");
                    print_repairman ();
                    _getch();
            }
            if (z == 12)   //权限在老师端之上才能注册
            {
                system("cls");
                return; 
            }
        }
    }    
}
void admin ()
{
    NODE_USER *m;
    welcome(); 
    NODE *phead;
    int flag;
    int l = 4;
    printf("\n");
    printf("-->管理员端"); 
    while (1)
    {
        Gotoxy(53, 4);
        printf("1.添加单车");
        Gotoxy(53, 6); 
        printf("2.删除单车");
        Gotoxy(53, 8);
        printf("3.修改单车密码");
        Gotoxy(53, 10); 
        printf("4.查找单车");
        Gotoxy(53, 12);
        printf("5.所有单车及其盈利");
        Gotoxy(53, 14);
        printf("6.用户信息");
        Gotoxy(53, 16);
        printf("7.维修员信息");
        Gotoxy(53, 18); 
        printf("0.退出登录");
        Gotoxy(52, l);
        printf("★");
        flag = _getch();
        if (flag == Down)
        {
            l=l+2;
            if (l == 20)
                l = 4;
        }
        if (flag == Up)
        {
            l=l-2;
            if (l == 2)
                l = 18;
        }
        if (flag == 13)
        {
            if (l == 4)
            {
                system("cls");
                phead=input ();
                printf("\a 保存成功!");
                Sleep(500);
                system("cls");
                _getch();
            }
            if (l == 6)
            {
                system("cls");
                delete_node ();
                system("cls");
                _getch();
            }
            if (l == 8)   
            {
                system("cls");
                modify ();
                system("cls");
                _getch();
            }
            if (l == 10)
            {
                system("cls");
                look_for_0();
                system("cls");
                _getch();
            }
            if (l == 12)
            {
                system("cls");
                printf("--->读取成功!\n\n");
                print() ;
                getch();
            //    system("cls");
                _getch();
            }
            if (l == 14)
            {
                system("cls");
                m=readfile_user();
                print_user(m);
                system("cls");
                _getch();
            }
            if (l == 16)
            {
                system("cls");
                check();
                system("cls");
                _getch();
            }
            if (l == 18)
            {
                system("cls");
                return;
            }
        }
    }    
}
void choice()
{
    char c[5];
    int flag;
    int z = 8;
    while (1)
    {
        Gotoxy(53, 8);
        printf("1.登录");
        Gotoxy(53, 10); 
        printf("2.注册");
        Gotoxy(53, 12);
        printf("3.退出");
        Gotoxy(52, z);
        printf("★");
        flag = _getch();
        if (flag == Down)
        {
            z=z+2;
            if (z == 14)
                z = 8;
        }
        if (flag == Up)
        {
            z=z-2;
            if (z == 6)
                z = 12;
        }
        if (flag == 13)
        {
            if (z == 8)
            {
                sign_in ();
            }
            if (z == 10)
            {
                    NODE_USER *m,*n;
                    m=(NODE_USER *)malloc(LEN_);
                    m->next=NULL;
                    NODE_REPAIRMAN *k,*l;
                    k=(NODE_REPAIRMAN *)malloc(LEN_1);
                    k->next=NULL;
                    system("cls");
                    printf("注册用户请按1\t注册维修员请按2(需要等待审核)\n\n");
                    printf("请选择:");
                    scanf("%s",c);
                    if(strcmp(c,"1")==0)
                    {
                        printf("★亲!请按照指示操作完成用户注册哦!\n");
                        for(;;)
                        {
                            printf("\n\n请输入绑定的手机号(账号):");
                            scanf("%s",m->number_user);          //报修时查找单车信息  
                            n=readfile_user();
                            while(n!=NULL)
                            {
                                if(strcmp(n->number_user,m->number_user)==0)
                                {
                                    printf("亲!这个手机号已经被注册过了呦!");
                                    break;
                                }
                                n=n->next;
                            }
                            if(n==NULL)
                            {
                                printf("\t\t\t\t\t-------这个账号还没有人注册过呢!");
                                break;    
                            }
                            printf("\n");
                        } 
                        for(;;)
                        {
                            printf("\n\n请设置密码:");
                            scanf("%s",m->mima_user);
                            if(strlen(m->mima_user)<=2)
                                printf("\t\t\t\t\t安全系数★★,很不安全哦!");
                            if(strlen(m->mima_user)<=6&&strlen(m->mima_user)>2)
                                printf("\t\t\t\t\t安全系数★★★,一般安全!");
                            if(strlen(m->mima_user)>7)
                                printf("\t\t\t\t\t安全系数★★★★★,非常安全!");    
                            printf("\n\n请确认密码:"); 
                            scanf("%s",m->mima_user2);
                            printf("\n\n请输入您的年龄:");
                            scanf("%d",&m->age);
                            if(m->age <= 10)
                            {
                                printf("年龄过小哦!长大再骑吧!共享单车伴你成长!\n");
                                system("cls");
                                break;
                            }
                            if(m->age >= 65)
                            {
                                printf("您已超过使用年限!抱歉!\n");
                                system("cls");
                                break;
                            }
                            if(strcmp(m->mima_user,m->mima_user2)==0)
                            {
                                system("cls");
                                submit();
                                printf("\n->注册成功!");
                                printf("\n\n快为自己起一个霸气的用户名吧!\n");
                                scanf("%s",m->name_user);
                                printf("\n\n请先给自己钱包充值哦!(200元)");
                                printf("\n\n请输入充值卡号(系统将自动为您扣除):"); 
                                scanf("%s",m->bank_card);
                                m->purse=200;
                                savefile_user(m); 
                                break;
                            }
                            if(strcmp(m->mima_user,m->mima_user2)!=0)
                            {
                                printf("\a亲,两次输入密码不一样哦!\n");
                                Sleep(500);
                            }    
                        }
                    }
                    if(strcmp(c,"2")==0)
                    {
                        printf("★亲!请按照指示操作完成维修员注册哦!\n");
                        for(;;)
                        {
                            printf("\n\n请输入绑定的手机号(账号):");
                            scanf("%s",k->number_repairman);
                            getchar();
                            l=readfile_repairman();
                            while(l!=NULL)
                            {
                                if(strcmp(l->number_repairman,k->number_repairman)==0)
                                {
                                    printf("亲!这个手机号已经被注册过了呦!");
                                    break;
                                }
                                l=l->next;
                            }
                            if(l==NULL)
                            {
                                printf("\t\t\t\t\t-------这个账号还没有人注册过呢!");
                                break;    
                            }
                            printf("\n");
                        } 
                        for(;;)
                        {
                            printf("\n\n请设置密码:");
                            scanf("%s",k->mima_repairman);
                            getchar();
                            if(strlen(k->mima_repairman)<=2)
                                printf("\t\t\t\t\t安全系数★★,很不安全哦!");
                            if(strlen(k->mima_repairman)<=6&&strlen(k->mima_repairman)>2)
                                printf("\t\t\t\t\t安全系数★★★,一般安全!");
                            if(strlen(k->mima_repairman)>7)
                                printf("\t\t\t\t\t安全系数★★★★★,非常安全!");    
                            printf("\n\n请确认密码:"); 
                            scanf("%s",k->mima_repairman2);
                            printf("\n\n请输入您的年龄:");
                            scanf("%d",&k->age);
                            getchar();
                            if(k->age <= 10)
                            {
                                printf("年龄过小哦!不能注册维修员,共享单车伴你成长!\n");
                                system("cls");
                                break;
                            }
                            if(k->age >= 65)
                            {
                                printf("您已超过使用年限!抱歉!\n");
                                system("cls");
                                break;
                            }
                            if(strcmp(k->mima_repairman,k->mima_repairman2)==0)
                            {
                                system("cls");
                                submit();
                                printf("\n->申请成功!等待管理员审核!");
                                printf("\n\n快为自己起一个霸气的用户名吧!\n");
                                scanf("%s",k->name_repairman);
                                savefile_repairman_check(k); 
                                break;
                            }
                            if(strcmp(k->mima_repairman,k->mima_repairman2)!=0)
                            {
                                printf("\a亲,两次输入密码不一样哦!\n");
                                Sleep(500);
                            }    
                        }
                    }
                    _getch();
            }
            if (z == 12)  
            {
                goodbye();
                exit(0);
            }
        }
    }
}
//    admin();        //管理员
//    user();      //用户
//repairman();      //维修员 
int main (void)
{
    system("color F1");
    show ();
    system("cls");
    choice();
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C语言实现车辆信息管理系统

    本文实例为大家分享了C语言实现车辆信息管理系统的具体代码,供大家参考,具体内容如下 车辆信息管理系统 问题描述:建立车辆信息管理系统,实现车辆信息的添加和维护管理. 系统存储数据要求:每台车辆至少需要包含以下属性,系统中保存多台车辆的信息: 车辆型号(如思域.卡罗拉.天籁等) 厂商(如广汽本田.一汽大众.东风日产等) 车型级别(如紧凑型车.中型车.SUV等) 座位数(如5座.7座等) 排量(如1.2T.1.4T.1.5T.1.6T等) 变速箱(如手动.手自一体.无级变速等) 车身颜色(白色.黑色

  • C语言实现自行车管理系统

    在大家学完C语言后,经常会被学校要求做很多管理系统,主流做法当选链表,但是很多问题就来了,在学习阶段写过最多基本上就是50行代码左右了,一下子做个小型管理系统问题就比较多.小编当然也是在学完初阶C语言之后过了半年才完整做出来. 所以分享一下经验. 1:首先数据结构:链表要会,而且要熟练掌握其增删查改:2:调试代码要会,很多代码一行一行的看到最后真的是很让人头大; 不会调试和监控变量是个很痛苦的过程,就算写出来bug多到炸也是很繁琐的: 3:最关键的就是这个框架问题了,如果框架不好,这个代码量会数

  • C语言实现车辆出租管理系统

    这个项目是我今年的C语言课设.做这个项目一个人大概用了一天的时间来完成,整体将近700行,量不是很多,所以也没用多文件什么的,当然也是采用了模块化设计的思路,在代码中写了几个函数来实现特定的功能. 以下是这个项目的一些要求和全部源码. 一.软件开发目的 该软件主要是使用C语言设计开发一个简单的车辆租赁管理系统,实现租赁信息的查询.修改.删除.添加以及订单的查询等功能. 二.数据结构 程序中采用结构体数组存储租赁信息.租赁结构体成员包括:订单号.身份证号.车牌号.费用.数组的长度不超过100. 三

  • C语言数组实现公交车管理系统

    本文实例为大家分享了C语言实现公交车管理系统的具体代码,供大家参考,具体内容如下 /**************************头文件声明************************************/ #include "stdio.h" #include "stdlib.h" #include "string.h" #include "conio.h" /*************************

  • C语言实现自行车存放管理系统

    本文实例为大家分享了C语言实现自行车存放管理系统的具体代码,供大家参考,具体内容如下 系统包括以下内容 1.数据录入:录入系统基本数据,用数组或链表组织: 2.数据存储:用文件的形式将录入的数据存储: 3.数据读写:对文件中的数据可以进行读写操作: 4.数据修改:可以对已存在的旧数据进行修改操作: 5.数据插入:可以将新数据插入到任意指定的位置: 6.数据删除:可以对已存在的旧数据进行删除操作: 7.数据查询:按要求对数据进行查询,至少含两项                   简单查询以及一项

  • C语言实现共享单车管理系统

    本文实例为大家分享了C语言实现共享单车管理系统的具体代码,供大家参考,具体内容如下 1.功能模块图: 2.各个模块详细的功能描述. 1.登陆:登陆分为用户登陆,管理员登陆以及维修员登录,登陆后不同的用户所执行的操作不同,权限不同. (1)管理员登录:管理员登陆之后,可使用键盘的上下键来控制菜单上的选项,管理员权限不多,可执行最多的操作,可以对单车进行投放,删除,修改,查找,车牌号排序,查看所有单车信息,所有用户信息,管理员能通过或驳回正在申请注册的维修员,还可以查看完全通过认证的维修员. (2)

  • Android 仿摩拜单车共享单车进度条实现StepView效果

    先看效果图: Step1:定义StepBean 定义五个状态,分别为:为完成.正在进行.已完成.终点完成.终点未完成. public class StepBean{ public static final int STEP_UNDO = -1;//未完成 public static final int STEP_CURRENT = 0;//正在进行 public static final int STEP_COMPLETED = 1;//已完成 public static final int S

  • C语言实现学生成绩管理系统

    设计一个学生成绩管理系统,实现对学生成绩的动态管理,实现对学生成绩的输入,显示,删除,查找,插入,最佳,保存,计算,排序等主要功能. 功能要求 1.每一条记录包括一个学生的学号.姓名.3门课成绩.平均成绩. 2.输入功能:可以一次完成若干条记录的输入. 3.显示功能:完成全部学生记录的显示. 4.查找功能:完成按姓名查找学生记录,并显示. 5.排序功能:按学生平均成绩进行排序. 6.插入功能:按平均成绩高低插入一条学生记录 7.删除功能:如果输入错误,可以删除学生记录: 8.退出. 代码: #i

  • C语言实现学生信息管理系统(单链表)

    本文实例为大家分享了C语言实现学生信息管理系统的具体代码,供大家参考,具体内容如下 /*copyright(c)2016.烟台大学计算机学院 * All rights reserved, * 文件名称:text.Cpp * 作者:吴敬超 * 完成日期:2016年7月1日 * 版本号:codeblock * * 问题描述: 学生信息管理系统 * 输入描述: * 程序输出: 输出结果 */ #include <stdio.h> #include <stdlib.h> #include

  • C语言版学生成绩管理系统

    本文实例为大家分享了C语言版学生成绩管理系统的具体代码,供大家参考,具体内容如下 #include<stdio.h> #include<stdlib.h> #include<time.h> #include<conio.h> #include<string.h> #include<algorithm> char buf[255]; char c=14; char path[]="D:\\data"; char tm

  • 基于C语言实现学生成绩管理系统

    本文实例为大家分享了C语言实现学生成绩管理系统的具体代码,供大家参考,具体内容如下 这里只贴代码,具体介绍省略. #include <stdio.h> #include <io.h> #include <conio.h> #include <stdlib.h> #include <string.h> #define MAX 200 struct student { char no[10]; // 学号 char name[50]; // 姓名 f

  • C语言实现学生学籍管理系统

    本文实例为大家分享了C语言实现学生学籍管理系统的具体代码,供大家参考,具体内容如下 #include<stdio.h> #include<conio.h> #include<stdlib.h> #include<string.h> #include<windows.h> //**********************************结构体************************************* struct score

  • C语言实现歌曲信息管理系统

    本文实例为大家分享了C语言实现歌曲信息管理系统的具体代码,供大家参考,具体内容如下 系统功能:该系统以菜单方式工作,歌曲信息包括:歌名.演唱者.作词.作曲.所属专辑.出版时间.出版公司.试设计一歌厅歌曲管理系统,使之能提供以下功能:歌曲信息录入.修改.插入.删除功能:歌曲排序浏览功能:按歌名查询.按演唱者查询等功能. 完整的实现代码如下: #include "stdio.h" #include "stdlib.h" #include "string.h&q

  • C语言链表实现图书管理系统

    之前参照网上的资料用链表实现了图书管理系统,包括简单的增删改查功能以及借书还书功能,我是VC6.0下写的一个控制台程序,格式参照的网上的.在动手编码之前,你需要理清自己的思路.首先,需要确定图书馆里系统中主要有那几个对象,这里我写了学生对象和图书对象.不妨在纸上写出或画出它们主要包括哪些属性以及其可能的对应关系,这里根据不同人的要求会有所不同.清楚这些之后,就可以设计学生和图书的数据结构,比如这里我用的结构体存储其信息.然后就需要考虑,我想要哪些功能,除了基本的增删改查之外,我还想要哪些功能?比

  • 运用PyTorch动手搭建一个共享单车预测器

    本文摘自 <深度学习原理与PyTorch实战> 我们将从预测某地的共享单车数量这个实际问题出发,带领读者走进神经网络的殿堂,运用PyTorch动手搭建一个共享单车预测器,在实战过程中掌握神经元.神经网络.激活函数.机器学习等基本概念,以及数据预处理的方法.此外,还会揭秘神经网络这个"黑箱",看看它如何工作,哪个神经元起到了关键作用,从而让读者对神经网络的运作原理有更深入的了解. 3.1 共享单车的烦恼 大约从2016年起,我们的身边出现了很多共享单车.五颜六色.各式各样的共

随机推荐