c语言编辑问道注册登录程序,C语言实现简单的注册登陆功能

之前在学习用C语言建立通讯录管理系统的时候有想过,怎么为每个用户单独设立通讯录,自然而然想到了最常见的注册与登陆功能,通过不同的账号达到单独设立通讯录的目的。肯定还存在许多问题,当给自己立个flag,未来慢慢磨。以下是实现过程:

注意头文件:

#include

#include

#include

#include

#define bool int //这里用define定义了布尔类型

#define true 1 //避免一些编译器如vs2010没有该头文件无法使用的情况发生

#define false 0 //有些编译器如code:blocks可以直接使用头文件

FILE *fp; //文件指针,不多说

bool judge=true;

先定义一个结构体Users,然后新建结构体pe用来存放用户名和密码。

typedef struct

{

char user[20];

char code[20];

}Users;

Users pe;

然后是编写注册模块。这里多增加了一个"阅读用户手册",可删改。

/*注册模块*/

void zhuce()

{

char temp[20],txt[100],cha; //定义两个数组,一个存放键盘输入的用户名和密码一个存放用户手册

do

{

printf("\t\t\t\t用户注册");

printf("\n\t\t1.直接注册 2.阅读用户手册");

cha=getch();

if(cha=='2')

{

if((fp=fopen("使用说明.txt","r"))==NULL)

{

printf("\n\t\t打开失败");

exit(0);

}

fread(txt,2,20,fp);

printf("\n\t\t%s",txt);

/*txt=fgets(txt,100,fp);

printf("%s",txt);

}

printf("\n\t\t按任意键继续");

getch();

system("cls");

/*以上部分用于打开用户手册,可删改*/

printf("\t\t\t\t用户注册");

printf("\n\t\t用户名:");

scanf("%s",pe.user);

fp=fopen(pe.user,"r");

/*判断用户名是否重复*/

if(fp!=NULL)

{

printf("\n\t该用户名已存在");

fclose(fp);

printf("\n\t继续注册?(Y/N)");

if(getch()=='Y') return zhuce();

else return denglu();

}

/*确认两次密码输入是否一致*/

printf("\n\t\t密 码:");

scanf("%s",pe.code);

printf("\n\t\t确认密码:");

scanf("%s",temp);

if(strcmp(pe.code,temp)!=0)

printf("\n\t\t两次密码不一致,请重新输入");

}while(strcmp(pe.code,temp)!=0);

/*用户名密码无误,写入文档储存用户信息*/

fp=fopen(pe.user,"w");

if(fp==NULL)

{

printf("\n\t注册失败\n");

exit(0);

}

else

{

system("cls");

printf("\n\t注册成功");

write(); //用户信息写入函数,底下给出

judge = false;

denglu(); //这里跳转到登陆模块

}

}

/*写入用户信息*/

void write()

{

if(fwrite(&pe,sizeof(User),1,fp)!=1)

{

printf("\n\t\t写入文件错误");

exit(0); //写入错误则退出程序

}

}

写完注册模块,接下来就是写登陆模块了,这里的关键就是读取之前存储好的用户信息以及用户的资料

void denglu()

{

char u[20],c[20],temp[20]; //定义两个数组,存放键盘输入的用户名和密码

printf("\n\t\t\t\t用户登录");

printf("\n\t\t用户名:");

scanf("%s",u);

/*判断用户名是否存在*/

fp=fopen(u,"r+");

temp[0]='0';

if(fp==NULL)

{

printf("\n\t\t用户不存在,请注册");

printf("\n\t\t1.注册 2.重新登陆");

temp[0]=getch();

if(temp[0]=='1')

{

system("cls");

zhuce();

}

else return denglu();

}

/*验证密码是否正确*/

do

{

if(judge==true) fread(&pe,sizeof(Users),1,fp); //读取用户信息,即用户名和密码

printf("\t\t密 码:");

scanf("%s",c);

if(strcmp(pe.code,c)!=0) //对比输入的密码和读取的密码

{

printf("\n\t\t密码错误(1.退出 2.重新输入)");

temp[0]=getch();

printf("\n");

if(temp[0]=='1')

{

fclose(fp); //关闭文件防止错误操作

return main();

}

}

}while(temp[0]=='2');

/*readfile();

该函数读取用户自己的资料,需要注意这里用户信息和其资料存储在一个文件中,读取是应适当使用rewind,ftell和fseek跳过一个User大小的空间读取的才是用户的资料*/

getch();

//这里可以设置跳转到操作界面

}

到这里登陆模块也编写好了,只需要将它添加到已有代码稍微修改下就可以了O(∩_∩)O~

虽然这个思路很简单,但当初思考的时候还是费劲脑汁,毕竟刚接触C语言,很多东西还不能融会贯通,不能运用自如,甚至会在很简单的问题上纠结几个小时,最后发现的时候真的想抽自己几巴掌,但当最后完工了,真的实现了,好开心好开心!O(∩_∩)O~

然而,实用性确实有限,只能供咱们这些新手小白消遣消遣,而且肯定存在许多漏洞,水平有限,又或者太懒了,真心不找了,这里立个flag,未来的学习之路,咱们慢慢磨!

(*^__^*) 嘻嘻……

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好,您想了解关于C语言注册登录的内容,我可以为您提供一些基本的知识点和代码实现。 首先,注册登录是一个常见的用户认证和授权的方式,它可以确保只有经过验证的用户才能访问应用程序或系统。 在C语言中,我们可以使用文件来存储用户的注册信息和登录状态。具体实现可以分为以下几个步骤: 1. 注册功能 - 提示用户输入账号和密码; - 将账号和密码写入文件中(可以使用fopen、fwrite、fclose等函数); - 注册成功后提示用户。 2. 登录功能 - 提示用户输入账号和密码; - 读取文件中的账号和密码(可以使用fopen、fread、fclose等函数); - 比较用户输入的账号和密码是否与文件中一致; - 如果一致,则登录成功,否则登录失败。 下面是一个简单C语言注册登录示例代码: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_USERNAME_LEN 20 #define MAX_PASSWORD_LEN 20 // 注册功能 void register_account() { char username[MAX_USERNAME_LEN]; char password[MAX_PASSWORD_LEN]; printf("请输入账号:"); scanf("%s", username); printf("请输入密码:"); scanf("%s", password); // 将账号和密码写入文件中 FILE *fp = fopen("users.txt", "a"); fprintf(fp, "%s %s\n", username, password); fclose(fp); printf("注册成功!\n"); } // 登录功能 void login() { char username[MAX_USERNAME_LEN]; char password[MAX_PASSWORD_LEN]; char file_username[MAX_USERNAME_LEN]; char file_password[MAX_PASSWORD_LEN]; int found = 0; printf("请输入账号:"); scanf("%s", username); printf("请输入密码:"); scanf("%s", password); // 读取文件中的账号和密码 FILE *fp = fopen("users.txt", "r"); while (fscanf(fp, "%s %s", file_username, file_password) != EOF) { if (strcmp(username, file_username) == 0 && strcmp(password, file_password) == 0) { found = 1; break; } } fclose(fp); if (found) { printf("登录成功!\n"); } else { printf("登录失败,请检查账号和密码是否正确。\n"); } } int main() { int choice; while (1) { printf("请选择功能:\n"); printf("1. 注册\n"); printf("2. 登录\n"); printf("3. 退出\n"); scanf("%d", &choice); switch (choice) { case 1: register_account(); break; case 2: login(); break; case 3: exit(0); default: printf("无效的选择,请重新输入。\n"); } } return 0; } ``` 以上代码仅供参考,实际应用中还需要考虑更多的安全性和错误处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值