(c语言)编写登陆程序:已知一个密码:password,现登陆如果与初始密码一样则提示登陆成功

(c语言)编写登陆程序:已知一个密码:password,现登陆如果与初始密码一样则提示登陆成功,第1张

#include <stdioh>

#include<stringh>

#include<stdlibh>

int login(char password[]);

void main()

{ FILE fp;

char password[10];

int count=0,s;

printf("请输入密码:\n");

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语言程序,登录注册系统等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9437303.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存