栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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("tttt用户注册");
 printf("ntt1.直接注册 2.阅读用户手册");
 cha=getch();
 if(cha=='2')
 {
     if((fp=fopen("使用说明.txt","r"))==NULL)
  {
  printf("ntt打开失败");
  exit(0);
  }
  fread(txt,2,20,fp);
  printf("ntt%s",txt);
  
 printf("tttt用户注册");
 printf("ntt用户名:");
 scanf("%s",pe.user);
 fp=fopen(pe.user,"r");
 
 if(fp!=NULL) 
 {
    printf("nt该用户名已存在");
    fclose(fp);
    printf("nt继续注册?(Y/N)");
    if(getch()=='Y') return zhuce();
    else return denglu();
 }
 
 printf("ntt密  码:");
 scanf("%s",pe.code);
 printf("ntt确认密码:");
 scanf("%s",temp);
 if(strcmp(pe.code,temp)!=0)
 printf("ntt两次密码不一致,请重新输入");
    }while(strcmp(pe.code,temp)!=0);
    
    fp=fopen(pe.user,"w");
    if(fp==NULL)
{
   printf("nt注册失败n");
   exit(0);
}
    else 
    {
 system("cls");
 printf("nt注册成功");
 write(); //用户信息写入函数,底下给出
 judge = false;
 denglu();      //这里跳转到登陆模块
    }
}

void write()
{
    if(fwrite(&pe,sizeof(User),1,fp)!=1)
    {
 printf("ntt写入文件错误");
 exit(0);//写入错误则退出程序
    }
}

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

void denglu()
{
    char u[20],c[20],temp[20];      //定义两个数组,存放键盘输入的用户名和密码
    printf("ntttt用户登录");
    printf("ntt用户名:");
    scanf("%s",u);
    
    fp=fopen(u,"r+");
    temp[0]='0';
    if(fp==NULL)
    {
 printf("ntt用户不存在,请注册");
 printf("ntt1.注册   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("tt密  码:");
 scanf("%s",c);
 if(strcmp(pe.code,c)!=0) //对比输入的密码和读取的密码
 {
     printf("ntt密码错误(1.退出 2.重新输入)");
     temp[0]=getch();
     printf("n");
     if(temp[0]=='1')
     {
  fclose(fp);      //关闭文件防止错误操作
  return main();
     }
 }
    }while(temp[0]=='2');
    
    getch();
    //这里可以设置跳转到操作界面
}

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

虽然这个思路很简单,但当初思考的时候还是费劲脑汁,毕竟刚接触C语言,很多东西还不能融会贯通,不能运用自如,甚至会在很简单的问题上纠结几个小时,最后发现的时候真的想抽自己几巴掌,但当最后完工了,真的实现了,好开心好开心!O(∩_∩)O~
然而,实用性确实有限,只能供咱们这些新手小白消遣消遣,而且肯定存在许多漏洞,水平有限,又或者太懒了,真心不找了,这里立个flag,未来的学习之路,咱们慢慢磨!
(*^__^*) 嘻嘻……

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/233595.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号