代码如下:
#include<stdio.h>
#pragma warning(disable:4996)
#include<string.h>
int main()
{
int i = 0
char password[10] = { 0 }
printf("请输入密码:")
while (i <3)
{
scanf("%s", password)
printf("\n")
if (strcmp(password, "972816") == 0)
{
printf("登录成功\n")
break
}
else
{
i++
if (i != 3)
printf("再输入一次")
}
}
if (i == 3)
printf("密码错误三次退出登录界面\n")
system("pause")
return 0
扩展资料:
#include后面有两种方式,<>;和""前者先在标准库中查找,查找不到在path中查找。后者为文件路径,若直接是文件名则在项目根目录下查找。
引用方法:#include <stdio.h>
注意事项:在TC2.0中,允许不引用此头文件而直接调用其中的函数,但这种做法是不标准的。也不建议这样做。以避免出现在其他IDE中无法编译或执行的问题。
参考资料来源:百度百科—include
参考资料来源:百度百科—stdio.h
C语言的话,一般用户信息存储在结构体链表里你输入用户名回车以后,需要遍历链表,使用strcmp()函数逐一对比链表里是否存储了你输入的用户名。不存在输出“无此用户”,存在继续输入密码,将密码与此结点的密码信息对比,处理方式同用户名;
至少三次输入错误,可设一个整形变量index = 0,每错误一次执行index++,当if(index==3)成立时,输出相应信息,并执行exit(1)
#include <stdio.h>#include <string.h>
#include<conio.h>
typedef struct
{
char name[30]
char password[20]
}userinfo
FILE *fp
int n //用于存储用户人数
void admin()//管理员建立初始用户信息
int check_info()//返回值为1时表示检查通过,为0时表示登陆失败
int modify_pass()//密码修改,修改成功返回值为1,否则,返回值为 0
void menu() //选择菜单
int main(void)
{
char choice
while(1)
{
menu()
printf("请输入你的选择(1~3)后按回车键:")
fflush(stdin)
choice=getchar()
switch(choice)
{
case '1': admin()break
case '2':
if(check_info())
{
printf("\n你已成功登陆,是否修改密码?(y/n)")
fflush(stdin)
choice =getchar()
if(choice=='y'||choice=='Y')
if(modify_pass()) printf("密码修改成功1\n")
}
else printf("登录失败")
break
case '3': exit (0)
}
}
return 0
}
void admin()//管理员建立初始用户信息
{
int i
userinfo user[30]//最多可以有30个用户
if((fp=fopen("password.txt","wb"))==NULL)
{ printf("系统出错,退出录入\n")exit(1) }
printf("输入要建立的用户的数目(n<=30):")
scanf("%d",&n)
fflush(stdin)
for( i = 0i <ni++ )
{gets(user[i].name)gets(user[i].password)}
for( i = 0i <ni++ )
{ fwrite(&user[i],sizeof(userinfo),1,fp)}
fclose(fp)
}
int check_info()//用户登陆检查
{
int i,j,k,flag=0
char userid[30],password[20]
userinfo us
if((fp=fopen("password.txt","r+"))==NULL)
{ printf("系统出错,退出登录\n")exit(1) }
printf("请输入用户名:")
fflush(stdin)
scanf("%s",userid)
for(i=0i<ni++)
{
fread( &us,sizeof(userinfo),1,fp)
if(strcmp(userid,us.name)==0)
{
flag=1
printf("请输入密码(不要超过19位):")
j=1
while(j<=3)
{
fflush(stdin)
k=0
while( (password[k++]=getch())!='\r')
{
putchar('*')
}
password[--k]='\0'
if(strcmp(us.password,password))
{
printf("\n密码错误,请重新输入")j++
}
else break
}
if(j>3)
{ printf("3次验证结束,程序退出!\n")exit (0)}
else break
}
}
fclose(fp)
return flag
}
void menu()//菜单
{
printf("\n\n\t***********************************\n")
printf("\t\t1、管理员建立密码信息表\n")
printf("\t\t2、用户登陆\n")
printf("\t\t3、退出系统\n")
printf("\t***********************************\n")
}
int modify_pass()//密码修改
{
int i,j=1,k,flag=0
char userid[30],password[20]
userinfo us
if((fp=fopen("password.txt","r+"))==NULL)
{ printf("系统出错,退出登录\n")exit(1) }
printf("请重新输入你的用户名:")
fflush(stdin)
scanf("%s",userid)
for(i=0i<ni++)
{
fread( &us,sizeof(userinfo),1,fp)
if(strcmp(userid,us.name)==0)
{
flag=1
printf("请输入新密码(不要超过19位):")
fflush(stdin)
k=0
while( (password[k++]=getch())!='\r')
{
putchar('*')
}
password[--k]='\0'
strcpy(us.password,password)
break
}
}
if(flag)
{
fseek(fp,-sizeof(userinfo),SEEK_CUR)
fwrite(&us,sizeof(userinfo),1,fp)
}
fclose(fp)
return flag
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)