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

2022-08-31 14:42:30

本文实例为大家分享了C语言实现共享单车管理系统的具体代码,供大家参考,具体内容如下1.功能模块图;2.各个模块详细的功能描述。1.登陆:登陆分为用户登陆,管理员登陆以及维修员登录,登陆后不同的用户所执...

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

1.功能模块图;

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

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

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

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

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

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

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

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

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

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

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

5.删除:删除单车。

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

3.详细设计

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

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

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

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

a.(查找单车)

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

b.(增加单车)

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

c.(删除单车)

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

d.(修改单车信息)

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

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

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

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

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

g.(注册)

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

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();
}

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