
#include <stdioh>
#include<stringh>
#include<stdlibh>
int login(char password[]);
void main()
{ FILE fp;
char password[10];
int count=0,s;
scanf("%s",password);
s=login(password);
if(s==1)
{ fp=fopen("d:\\passwordtxt","w");
fprintf(fp,"%s",password);
fclose(fp);
}
if(s==0)
{ count++;
while(count!=3)
{ printf("请再次输入密码:\n");
scanf("%s",password);
s=login(password);
if(s==1)
{ fp=fopen("d:\\passwordtxt","w");
fprintf(fp,"%s",password);
fclose(fp);
return;
}
if(s==0) count++;
}
if(count==3) printf("已经输入3次,系统退出!\n");
exit(0);
}
}
int login(char password[])
{
static char key[10]="123";
if(strcmp(password,key)==0) //比较输入字符和系统设定的密码是否相同
return 1;
else
return 0;
}
#include<stdioh>
#include<stringh>
int main()
{
int i = 0;
int n = 3;
char pwd[100];
while(i < n)
{
printf("请输入密码:\n");
scanf("%s", pwd);
if(0 == strcmp("123456", pwd))//假设密码是123456
{
printf("密码正确,登录成功!\n\n");
return 0;
}
printf("密码错误,请重新输入!\n\n");
++i;
}
printf("登录失败,密码错误超限(3次)!\n\n");
return 0;
}
提供一个思路,将txt文件中的内容读取到一个数组中,这个数组中的数据应该是你自定义的结构体。然后将该用户名与数组中的内容循环比较。如果发现有相等的(即已存在),则注册失败!给个例子:
#include <stdioh>int main()
{
int v[100];//开一个足够大的数组。
int i = 0, j;
FILE fp;//文件指针
fp = fopen("intxt", "r");//以文本方式打开文件。
if(fp == NULL) //打开文件出错。
return -1;
while(fscanf(fp, "%s", v[i]) != EOF) //读取数据到数组,直到文件结尾(返回EOF)
i++;
fclose(fp);//关闭文件
char registerName[20];
for(j = 0; j < i; j ++)//循环输出数组元素。
{
if (strcmp(registerName, v[i]name) == 0)
{
printf("该用户名已存在!\n");
break;
}
}
return 0;
}
大概就这样的。具体的细节你自己调试。
#include "stdafxh"\x0d\#include "stringh"\x0d\#define n 20\x0d\\x0d\void zhuce();\x0d\void denglu();\x0d\char yhm[n],mm[n];\x0d\int main(int argc, char argv[])\x0d\{\x0d\int i;\x0d\\x0d\printf("-----------\n1注册\n2登陆\n3继续\n0退出\n");\x0d\scanf("%d",&i);\x0d\switch(i)\x0d\{case 0: break;\x0d\case 1 : zhuce();break;\x0d\case 2: denglu();break;\x0d\\x0d\}\x0d\\x0d\return 0;\x0d\}\x0d\void zhuce( )\x0d\{char temp1[n],temp2[n],temp3[n],yhmtmp[n];\x0d\\x0d\printf("输入用户名\n");\x0d\fflush(stdin);//清空缓存\x0d\ gets(yhmtmp);\x0d\\x0d\printf("输入密码\n");\x0d\fflush(stdin);\x0d\ gets(temp1);\x0d\printf("输入密码确认\n");\x0d\fflush(stdin);\x0d\gets(temp2);\x0d\if(!strcmp(temp1,temp2))\x0d\{strcpy(mm,temp1);\x0d\printf("注册成功\n");\x0d\\x0d\}\x0d\else\x0d\{printf("输入密码确认\n");\x0d\gets(temp3);\x0d\if(!strcmp(temp1,temp3))\x0d\{strcpy(mm,temp1);\x0d\printf("注册成功\n");\x0d\\x0d\}\x0d\else\x0d\\x0d\printf("注册失败\n");\x0d\\x0d\}\x0d\\x0d\}\x0d\void denglu( )\x0d\{\x0d\char s1[n],s2[n];\x0d\printf("输入用户名\n");\x0d\fflush(stdin);\x0d\gets(s1);\x0d\printf("输入密码\n");\x0d\fflush(stdin);\x0d\gets(s2);\x0d\if((strcmp(s1,yhm))&&(strcmp(s2,mm)))\x0d\printf("登陆成功\n");\x0d\\x0d\}
希望对你有所帮助
#include<stdioh>
#include<stdlibh>
#include<stringh>
#include<ctypeh>
#define N 100
struct user
{
int user_id;
char user_name[19];//最大18位
char password[13];//最大13位
char like[255];
char sign[255];
};
/
验证用户名长度是否合法
/
int length_user_name(char p)
{
int l;
l=strlen(p);
if(l>18||l<1)
{
return 0;
}
else
return l;
}
/
判断用户名是否有效
/
int valid_user_name(char p)
{
int i=0;
int len = strlen(p);
if((p >= 'a' && p <= 'z') || (p >= 'A' && p <='Z')) //判断首字符是不是字母
{
for(i = 0; i < len; i++)
{
if(!(p[i] == '_' || (p[i] >= 'a' && p[i] <= 'z') || (p[i] >= 'A' && p[i] <='Z')
||(p[i] >='0' && p[i] <= '9'))) //判断后面字符是否有效
return 0;
}
return 1;
}
else
return 0;
}
/
判断用户名是否有效
/
int is_username_valid(char p)
{
if((p >= 'a' && p <= 'z') || (p >= 'A' && p <='Z'))
{
p++;
while(p)
{
if(!(isalpha(p) || p == '_' || isdigit(p)))
return 0;
p++;
}
return 1;
}
else
{
return 0;
}
}
/
密码长度有效性验证
/
int length_password(char p)
{
int len;
len = strlen(p);
if(len<6||len>12)
{
return 0;
}
else
return len;
}
/
密码的有效性验证
/
int is_password_valid(char p)
{
int i=0;
for(;p != '\0'; p++)
{
if(!( (p >= 'a' && p <= 'z') || (p >= 'A' && p <='Z')
||(p >='0' && p <= '9'))) //判断字符是否有效
return 0;
}
return 1;
}
int two_password_valid(char p1,charp2)
{
if(strcmp(p1,p2)==0)
return 1;
else
return 0;
}
/
完成注册功能
/
int user_register(struct user ptr_user,int size)
{
char password[13];
char repassword[13];
if(size==N)
{
puts("注册人数以满!");
return 0;
}
printf("请输入注册姓名:");
fflush(stdin);
gets(ptr_user[size]user_name);
if(!(length_user_name(ptr_user[size]user_name)&&valid_user_name(ptr_user[size]user_name)))
{
printf("您输入的姓名无效,用户名在1-18之间,首字符为字母,后面必须为字母,数字或下划线!!!");
return 0;
}
printf("请输入注册密码:");
fflush(stdin);
gets(password);
printf("请再次输入注册密码:");
fflush(stdin);
gets(repassword);
if(!two_password_valid(password,repassword))
{
printf("\n两次输入的密码不一致!");
return 0;
}
else
{
strcpy(ptr_user[size]password,password);
}
if(!(length_password(ptr_user[size]password)&&is_password_valid(ptr_user[size]password)))
{
printf("您输入的密码无效,密码应在6-12之间,密码只能包含字母和数字!!!");
return 0;
}
printf("请输入您的爱好:");
fflush(stdin);
gets(ptr_user[size]like);
printf("请输入您的个性签名:");
fflush(stdin);
gets(ptr_user[size]sign);
printf("您的编号为:%d,这将是您的登陆帐号",ptr_user[size]user_id=10000+size);
return 1;
}
/
如果登陆成功则返回第i+1个用户的信息,否则返回0
/
int is_my_user(struct user p,int size)
{
int i;
int zhanghu;
char mima[15];
printf("请输入您的帐号: ");
scanf("%d",&zhanghu);
fflush(stdin);
printf("请输入您的密码: ");
gets(mima);
for(i=0;i<size;i++)
{
if((zhanghu == p[i]user_id)&&(strcmp(mima,p[i]password)==0))
{
return i + 1;
}
}
return 0;
}
void display_user(struct user u)
{
printf("\n你的帐号是:%d",uuser_id);
printf("\n你注册姓名是:%s",uuser_name);
printf("\n你的爱好:%s",ulike);
printf("\n你的个性签名:%s",usign);
}
void update_password(struct user ptr_user,int size)
{
char mima1[13],mima2[13];
int i = is_my_user(ptr_user,size);
if(i)
{
i--;
}
else
{
printf("\n帐号密码不存在!");
return;
}
printf("请输入新密码: ");
scanf("%s",mima1);
printf("请再次输入新密码: ");
scanf("%s",mima2);
if(two_password_valid(mima1,mima2) && length_password(mima1) && is_password_valid(mima1))
{
strcpy(ptr_user[i]password,mima1);//完成新旧密码的调换
printf("\n您的的密码修改成功!");
}
else
printf("\您的密码修改失败!");
}
//显示菜单
int show_menu()
{
int choice;
printf("\n1注册");
printf("\n2登陆");
printf("\n3修改密码");
printf("\n4退出");
printf("\n请选择1-4\n");
scanf("%d",&choice);
return choice;
}
int main()
{
struct user our_users[N];
int count = 0;
int current_user;
while(1)
{
switch(show_menu())
{
case 1:
if(user_register(our_users,count))
{
count++;
printf("\n注册成功!");
}
break;
//注册
case 2:
if((current_user = is_my_user(our_users,count)))
{
printf("\n登陆成功!");
display_user(our_users[current_user - 1]);
}
else
printf("\n登陆失败!");
break;
//登陆
case 3:
update_password(our_users,count);
break;
//修改密码
case 4:
exit(1);
break;
//退出
default:
printf("请正确输入");
}
}
return 0;
}
#include <stdioh>
#include <stringh>
#include <stdlibh>
#include <timeh>
/随机码产生函数/
void RandomCode (char Rcode[])
{
int i;
srand ((unsigned int)time(NULL));
for (i = 0; i < 3; ++i)
Rcode[i] = rand()%10 + '0';
Rcode[i] = '\0';
}
/登陆函数,判断信息是否匹配,若匹配返回1,否则返回0/
int LandedApp (char password[], char Rcode[])
{
char name[10] = {0};
char pword[10] = {0};
char rcode[4] = {0};
printf ("用户名 : ");
gets (name);
printf ("密码 : ");
gets (pword);
printf ("随机码 : ");
gets (rcode);
if (strcmp (name, password[0]) != 0 || strcmp (pword, password[1]) != 0 || strcmp (rcode, Rcode) != 0)
return 0;
else
return 1;
}
int main ()
{
char password[2] = {"admin", "admin123"}; //用户名和密码
char rc[4] = {0}; //随机码
int count = 3; //可输入次数
puts ("请输入用户名,密码和随机码:");
while (count)
{
RandomCode (rc);
printf ("随机码 : %s\n", rc);
if (LandedApp(password, rc) != 0)
break;
--count;
if (count != 0)
puts ("错误的用户名或密码或随机码,请重新输入: ");
}
if (count != 0)
puts ("\n成功登陆!");
else
puts ("\n登录失败 !");
return 0;
}
#include<stdioh>
#include<stdlibh>
#include<stringh>
#include<ctypeh>
#define N 100
struct user
{
int user_id;
char user_name[19];//最大18位
char password[13];//最大13位
char like[255];
char sign[255];
};
/
验证用户名长度是否合法
/
int length_user_name(char p)
{
int l;
l=strlen(p);
if(l>18||l<1)
{
return 0;
}
else
return l;
}
/
判断用户名是否有效
/
int valid_user_name(char p)
{
int i=0;
int len = strlen(p);
if((p >= 'a' && p <= 'z') || (p >= 'A' && p <='Z')) //判断首字符是不是字母
{
for(i = 0; i < len; i++)
{
if(!(p[i] == '_' || (p[i] >= 'a' && p[i] <= 'z') || (p[i] >= 'A' && p[i] <='Z')
||(p[i] >='0' && p[i] <= '9'))) //判断后面字符是否有效
return 0;
}
return 1;
}
else
return 0;
}
/
判断用户名是否有效
/
int is_username_valid(char p)
{
if((p >= 'a' && p <= 'z') || (p >= 'A' && p <='Z'))
{
p++;
while(p)
{
if(!(isalpha(p) || p == '_' || isdigit(p)))
return 0;
p++;
}
return 1;
}
else
{
return 0;
}
}
/
密码长度有效性验证
/
int length_password(char p)
{
int len;
len = strlen(p);
if(len<6||len>12)
{
return 0;
}
else
return len;
}
/
密码的有效性验证
/
int is_password_valid(char p)
{
int i=0;
for(;p != '\0'; p++)
{
if(!( (p >= 'a' && p <= 'z') || (p >= 'A' && p <='Z')
||(p >='0' && p <= '9'))) //判断字符是否有效
return 0;
}
return 1;
}
int two_password_valid(char p1,charp2)
{
if(strcmp(p1,p2)==0)
return 1;
else
return 0;
}
/
完成注册功能
/
int user_register(struct user ptr_user,int size)
{
char password[13];
char repassword[13];
if(size==N)
{
puts("注册人数以满!");
return 0;
}
printf("请输入注册姓名:");
fflush(stdin);
gets(ptr_user[size]user_name);
if(!(length_user_name(ptr_user[size]user_name)&&valid_user_name(ptr_user[size]user_name)))
{
printf("您输入的姓名无效,用户名在1-18之间,首字符为字母,后面必须为字母,数字或下划线!!!");
return 0;
}
printf("请输入注册密码:");
fflush(stdin);
gets(password);
printf("请再次输入注册密码:");
fflush(stdin);
gets(repassword);
if(!two_password_valid(password,repassword))
{
printf("\n两次输入的密码不一致!");
return 0;
}
else
{
strcpy(ptr_user[size]password,password);
}
if(!(length_password(ptr_user[size]password)&&is_password_valid(ptr_user[size]password)))
{
printf("您输入的密码无效,密码应在6-12之间,密码只能包含字母和数字!!!");
return 0;
}
printf("请输入您的爱好:");
fflush(stdin);
gets(ptr_user[size]like);
printf("请输入您的个性签名:");
fflush(stdin);
gets(ptr_user[size]sign);
printf("您的编号为:%d,这将是您的登陆帐号",ptr_user[size]user_id=10000+size);
return 1;
}
/
如果登陆成功则返回第i+1个用户的信息,否则返回0
/
int is_my_user(struct user p,int size)
{
int i;
int zhanghu;
char mima[15];
printf("请输入您的帐号: ");
scanf("%d",&zhanghu);
fflush(stdin);
printf("请输入您的密码: ");
gets(mima);
for(i=0;i<size;i++)
{
if((zhanghu == p[i]user_id)&&(strcmp(mima,p[i]password)==0))
{
return i + 1;
}
}
return 0;
}
void display_user(struct user u)
{
printf("\n你的帐号是:%d",uuser_id);
printf("\n你注册姓名是:%s",uuser_name);
printf("\n你的爱好:%s",ulike);
printf("\n你的个性签名:%s",usign);
}
void update_password(struct user ptr_user,int size)
{
char mima1[13],mima2[13];
int i = is_my_user(ptr_user,size);
if(i)
{
i--;
}
else
{
printf("\n帐号密码不存在!");
return;
}
printf("请输入新密码: ");
scanf("%s",mima1);
printf("请再次输入新密码: ");
scanf("%s",mima2);
if(two_password_valid(mima1,mima2) && length_password(mima1) && is_password_valid(mima1))
{
strcpy(ptr_user[i]password,mima1);//完成新旧密码的调换
printf("\n您的的密码修改成功!");
}
else
printf("\您的密码修改失败!");
}
//显示菜单
int show_menu()
{
int choice;
printf("\n1注册");
printf("\n2登陆");
printf("\n3修改密码");
printf("\n4退出");
printf("\n请选择1-4\n");
scanf("%d",&choice);
return choice;
}
int main()
{
struct user our_users[N];
int count = 0;
int current_user;
while(1)
{
switch(show_menu())
{
case 1:
if(user_register(our_users,count))
{
count++;
printf("\n注册成功!");
}
break;
//注册
case 2:
if((current_user = is_my_user(our_users,count)))
{
printf("\n登陆成功!");
display_user(our_users[current_user - 1]);
}
else
printf("\n登陆失败!");
break;
//登陆
case 3:
update_password(our_users,count);
break;
//修改密码
case 4:
exit(1);
break;
//退出
default:
printf("请正确输入");
}
}
return 0;
}
以上就是关于(c语言)编写登陆程序:已知一个密码:password,现登陆如果与初始密码一样则提示登陆成功全部的内容,包括:(c语言)编写登陆程序:已知一个密码:password,现登陆如果与初始密码一样则提示登陆成功、求C++程序,循环登录系统,密码输入错误三次就登录失败。要求用C语言编写,谢谢了!、c语言程序,登录注册系统等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)