C语言编程:实现用户的注册和登录
模拟用户注册和登陆可以用文件来保存用户名和密码。注册就是向文件里写,用if判断两次密码是否一致。连续三次,可以有一个变量芹漏誉,每次输入加一,变量大搜渣于三就提示登陆不成功。用户名不对,那你就把你输嫌段入的用户名和文件里的用户名是否一致。
c语言编写注册与登录的程序
希望对你有所帮助
#includestdio.h
#include乎脊stdlib.h
#includestring.h
#includectype.h
#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(l18||l1)
{
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(len6||len12)
{
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,char*p2)
{
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;isize;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”,u.user_id);
printf(“\n你注册姓名是:%s”,u.user_name);
printf(“\n你的爱好:%s”,u.like);
printf(“\n你的个性签名:%s”,u.sign);
}
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语言写登录界面 账号密码登录错误三次 管理员登录 员工登录两个
输入2,回车
输入账密,回车,再回车回到主界面
输入1,回车
错误测试,回车
正确测试,回车
接下来连续错误测试,再登入的时候
代码:
#includestdio.h
#include stdlib.h
#define MAXL 100
#define MAX_ERROR_TIME 3
int errorTime = 0;
int getLen(char s[]) {
int l = 0;
for (l = 0; s[l] != ‘\0’; l++);
return l;
}
void spaceRow() {
printf(“|”);
for (int i = 2; i MAXL; ++i)printf(” “);
printf(“|\n”);
}
void borderRow() {
for (int i = 0; i MAXL; ++i)printf(“-“);
printf(“\n”);
}
void fill(int row) {
if (row 4) {
for (int i = 0; i = (5 – row) 1; ++i)
spaceRow();
}
else spaceRow();
}
void show(char* s[],int row) {
borderRow();
fill(row);
for (int i = 0; i row; ++i) {
int len = getLen(s[i]), mid = (MAXL – len) 2;
printf(“|”);
for (int j = 1; j mid; ++j)printf(” “);
printf(“%s”, s[i]);
for (int j = 0; j MAXL – mid – len – 1; ++j)printf(” “);
printf(“|\n”);
}
fill(row);
borderRow();
}
int cmp(char a[], char b[]) {
for (int i = 0; a[i] != ‘\0’b[i] != ‘\0’; i++)
if (a[i] != b[i])return 0;
return 1;
}
void Index() {
char* a[3];
a[0] = “1.登录 “;
a[1] = “2.注册 “;
a[2] = “3.退出 “;
show(a, 3);
}
bool log() {
system(“cls”);
if (errorTime = MAX_ERROR_TIME) {
printf(“错误次数达到3次,无法登入\n”);
return 0;
}
printf(“请输入账号:”);
char user[1024], psw[1024], uc[1024], pc[1024];
scanf(“%s”, user);
printf(“请输入密码:”);
scanf(“%s”, psw);
FILE* u = fopen(“UserName.txt”, “r”);
FILE* p = fopen(“PassWord.txt”, “r”);
while (fgets(uc, 1024, u)) {
fgets(pc, 1024, p);
if (cmp(uc, user) cmp(psw, pc)) { fclose(u); fclose(p); return 1;}
if (feof(u))break;
}
fclose(u);
fclose(p);
return 0;
}
bool reg() {
system(“cls”);
char str[1024];
printf(“请输入账号(为-1则退出注册):”);
scanf(“%s”, str);
if (str[0] == ‘-‘ str[1] == ‘1’ str[2] == ‘\0’)return false;
FILE* fp = fopen(“UserName.txt”, “a+”);
fputs(str, fp);
fputs(“\n”, fp);
fclose(fp);
printf(“请输入密码:”);
scanf(“%s”, str);
fp = fopen(“PassWord.txt”, “a+”);
fputs(str, fp);
fputs(“\n”, fp);
fclose(fp);
return true;
}
int main() {
int s, flag = 1;
Index();
while (flag scanf(“%d”, s)) {
switch (s) {
case 1:if (log())printf(“登录成功\n”);
else { printf(“登录失败\n”); errorTime++; }
break;
case 2:
if (reg()) printf(“注册成功\n”);
else printf(“取消注册\n”);
break;
case 3:flag = 0; break;
}
printf(“按任意键继续\n”);
getchar();
getchar();
system(“cls”);
Index();
}
}
用C语言制作一个登陆界面1 注册 注册以后保存在文件中 2登陆时直接输入用户名和密码登陆?
这是一个用纯C语言和文件亏蠢操作实现的系统的登录、注册和忘记密码功能。可以用于c语烂岁… 登录:先输入账号和密码。然后饥空睁按账号从文件中读取,如果账