共享单车管理系统

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




 

 

猜你喜欢

转载自blog.csdn.net/q___narcissus/article/details/76382997