📄 check_user.cpp
字号:
#include "head.h"
int check_user(userL * p)
{
struct userL *head=NULL;
struct user *q=NULL;
q=(struct user *)malloc(sizeof(struct user));
char user[10]={'a'};
int i=0, number=0, k=0; //k记录用户输入次数和级别 k=6为超级管理员,k=1 为管理员 ,k=0为普通用户,k=4为连续三次输入错误强制退出。
char word[6]={' '};
do{
star1:
system("cls");
printf("\n\n\n\n\n\n\n\t\t\t请输入用户名: ");
fflush(stdin);
for(i=0;i<=10;i++)
{
number=number+1;
if(number>9)
{
printf("用户名不能大于10位!\n"); //验证位数
number=0;
i=0;
goto star1;
}
scanf("%c",&user[i]);
if(user[i]=='\n')
{
user[i]='\0';
break;
}
}
star2:
number=0;
printf("\n\t\t\t密码: ");
fflush(stdin);
for(i=0;i<6;i++)
{
if(number>6)
{
printf("\n\t\t\t密码不能大于6位!\n"); //验证位数
number=0;
i=0;
goto star2;
}
word[i]=getch();//不带回显
if((word[i]!='\r')&&(word[i]!=8))
{
printf("*");
number=number+1;
}
if(word[i]==8)
printf("\b\40\b"); //退格用空格替换再退
if(word[i]=='\r')
{
word[i]='\0';
break;
}
}
printf("\n");
strcpy(q->name,user);
strcpy(q->password,word);
//判断用户数否为管理员
if((strcmp(q->name,"mm")==0) || (strcmp(q->password,"mm")==0))
{
k=6;
return k;
}
else
{
k = check_name_pass(q,p) ;
if (k==0)
{
return k;
}
if((k!=1)&&(k==3))
{
printf("\n\t\t\t输入错误次数太多!请从新启动\n");
printf("\n\t\t\t");
k=4;
return 4;
}
}
}while(1==1);
}
// 查找用户权限
int check_name_pass( user * q , userL * p)
{
struct userL*head=NULL;
static k=0; //记录输入次数
head=p;
while(head!=NULL)
{
if((strcmp(q->name,head->name)==0)&&(strcmp(q->password,head->password)==0))
{
return 0;
break;
}
head=head->next;
}
if(k!=2)
{
printf("\n\t\t\t用户名或密码错误,请从新输入\n");
getch();
}
k=k+1;
return k;
fflush(stdin);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -