C语言实现简单注册登陆功能

您所在的位置:网站首页 简单的文件系统C语言 C语言实现简单注册登陆功能

C语言实现简单注册登陆功能

2024-06-10 21:09| 来源: 网络整理| 查看: 265

之前在学习用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,未来的学习之路,咱们慢慢磨! (*^__^*) 嘻嘻……



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3