📄 paword.cpp
字号:
//添加用户
#include "head.h"
int password(userL *p)
{
char user[10]={'a'};
int number=0,i=0;
int ID=0;
char word[6]={' '};
char word2[6]={' '};
struct user user_struct;
struct userL *head=p, *taill=p;
if (p==NULL) //如果无记录就添加新用户
{
ID=1; //管理员
}
else
{
ID=0; //普通用户
}
star1:
printf("\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;
}
}
while(head!=NULL)
{
if(strcmp(user,head->name)==0 || strcmp(user,"mm")==0)
{
printf("用户名已存在,请从新输入!\n");
goto star1;
}
head=head->next;
}
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");
number=0;
printf("\n\t\t\t请再次确认:"); //密码确认
for(i=0;i<=6;i++)
{
word2[i]=getch();//不带回显
if((word2[i]!='\r')&&(word2[i]!=8))
{
number=number+1;
printf("*");
}
if(word2[i]==8) //退格用空格替换再
{
printf("\b\40\b");
number=number-1;
}
if(word2[i]=='\r')
{
word2[i]='\0';
break;
}
}
printf("\n");
if(strcmp(word,word2)!=0)
{
printf("\n\t\t\t两次输入不一样请从新输入:\n");
goto star2;
}
//将指针指向最后
head=p;
if (head!=NULL)
{
while(head!=NULL)
{
taill=head;
head=head->next;
}
taill->next=(struct userL *)malloc(sizeof(struct userL));
taill->next->next=NULL;
}
if(p!=NULL)
{
strcpy(taill->next->name,user);
strcpy(taill->next->password,word);
taill->next->ID=ID;
}
if (p==NULL)
{
taill=(struct userL *)malloc(sizeof(struct userL));
p=taill;
p->next=NULL;
strcpy(taill->name,user);
strcpy(taill->password,word);
taill->ID=ID;
}
saver_user(p);
printf("\t\t\tusername=%s \n",user);
printf("\t\t\tpassword=%s \n\n",word);
if(ID==1)
printf("\t\t\t权 限:管理员 \n");
else if(ID==0)
printf("\t\t\t权 限:普通用户 \n");
getch();
return ID;
}
//保存用户记录
void saver_user(struct userL * p)
{
FILE *fp;
struct user stu;
struct userL *head=p;
fp=fopen("password.dat","wb");
if(fp==NULL)
{
printf("不能打开!\n");
getch();
exit(1);
}
while(head!=NULL)
{
strcpy(stu.name,head->name);
strcpy(stu.password,head->password);
stu.ID=head->ID;
if(fwrite(&stu,sizeof(struct user),1,fp)!=1)
//if(fwrite(&stu,sizeof(struct user),1,fp)!=1)
{
printf("文件不能写入数据,请检查后从新输入。\n");
exit(1); //非正常退出
}
head=head->next;
}
fclose(fp);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -