#include <stdio.h>
#include <string.h>
//用户登录验证系统
struct log //定义log结构用于存储用户账号和密码信息
{
char name[15];
char password[10];
};
void logging(struct log person); //登录函数
void regis(struct log person); //注册函数
void jiami(char*p); //密码加密函数
int main()
{
int choice; //操作序号
FILE *fp; //定义文件指针
struct log person;
do{
printf("输入操作对应序号:1.登录 2.注册 3.退出\n");
scanf("%d",&choice);
if ((fp=fopen("logging.txt","r"))==NULL && choice==1) //当没有一个用户注册时,不能进行登录操作
{
printf("尚未有用户注册,需要提前注册\n");
choice=4;
}
switch (choice)
{
case 1:logging(person);break;
case 2:regis(person);break;
case 3:break;
default:break;
}
}while(choice!=3);
return 0;
}
void logging(struct log person)
{
FILE*fp;
char s[30]; //用于储存从文件中读取的已有的用户账号和密码信息
char loginfo[30]; //用于储存用户输入的账号和密码信息
int flag=1;
printf("请输入账号:\n");
scanf("%s",person.name);
printf("请输入密码:\n");
scanf("%s",person.password);
jiami(person.password);
strcpy(loginfo,person.name);
strcat(loginfo," ");
strcat(loginfo,person.password);
strcat(loginfo,"\n");
if ((fp=fopen("logging.txt","r"))==NULL)
{
printf("登录失败\n");
}else
{
while (!feof(fp)) //一直循坏到文件尾
{
fgets(s,30,fp);
if (strcmp(s,loginfo)==0) //如果账号和密码信息同时符合,则登录成功
{
printf("登录成功\n");
flag=0;
break;
}
}
if (flag==1) printf("用户名或密码不正确\n"); //否则登录失败
}
if (fclose(fp))
{
printf("关闭文件失败");
}
}
void regis(struct log person)
{
FILE*fp;
int flag;
char s[30]; //用于储存用户输入的账号和密码信息
char pername[15]; //用于储存从文件中读取的账号信息
char perpassword[10]; //用于储存从文件中读取的密码信息
do {
flag=0;
printf("请输入新账号:\n");
scanf("%s",person.name);
printf("请输入新账号的密码:\n");
scanf("%s",person.password);
jiami(person.password);
if ((fp=fopen("logging.txt","r"))==NULL) //防止用户名被重复注册
{
printf("首次注册\n");
}else
{
fscanf(fp,"%s %s",pername,perpassword);
while(!feof(fp))
{
if (strcmp(pername,person.name)==0)
{
printf("用户名已存在\n");
flag=1;
}
fscanf(fp,"%s %s",pername,perpassword);
}
fclose(fp);
}
} while(flag==1);
strcpy(s,person.name);
strcat(s," ");
strcat(s,person.password);
strcat(s,"\n");
if ((fp=fopen("logging.txt","a"))==NULL) //如果注册文件不存在
{
if ((fp=fopen("logging.txt","w"))==NULL) //新建注册文件
{
printf("注册失败\n");
}else
{
if(fputs(s,fp)==EOF)
{
printf("注册失败\n");
}
}
}else
{
if(fputs(s,fp)==EOF)
{
printf("注册失败\n");
}else
{
printf("注册成功\n");
}
}
if (fclose(fp))
{
printf("关闭文件失败");
}
}
void jiami(char*p) //对密码进行加密
{
for (;*p!='\0';p++)
{
*p=*p^15;
}
}
简易的用户账号注册和登录验证程序(1)
最新推荐文章于 2024-08-26 13:34:22 发布