这是一个用纯C语言和文件操作实现的系统的登录、注册和忘记密码功能。可以用于c语言大作业的登录系统。下面分享一下具体的代码。

首先定义一个结构体来存放用户的注册信息,账号密码等。

typedefstructThe_users//typedef可以定义结构体别名 { charid[11];//账号 charpwd[20];//密码 charname[15];//姓名为字符串 charsex;//性别为单个字符 longphone;//电话号码为长整型 }users;

然后写一个函数用来创建储存用户账号密码的文件。

/*创建储存用户账号密码的文件*/ voidCreate_File() { FILE*fp; if((fp=fopen("users.txt","rb"))==NULL)/*如果此文件不存在*/ { if((fp=fopen("users.txt","wb+"))==NULL) { printf("无法建立文件!\n"); exit(0); } } }

注册

将存放用户的信息的结构体直接存入文件中,每次存入分配该结构体大小的空间,然后该用户的信息就可以按结构体整体来读取。还加入了一些错误提示,如果输入错误就提示重新输入。

/*注册账号*/ voidregisters()//按结构体的大小,一次写入或者读入1个结构体大小 { usersa,b;//结构体The_users重命名定义 FILE*fp; chartemp[20]; intcount=0; printf("欢迎来到注册界面!\n"); Sleep(1000); fp=fopen("users.txt","r"); fread(&b,sizeof(structThe_users),1,fp);//读入一个结构体字符块到b printf("请输入账号\n"); scanf("%s",&a.id); while(1) { if(strcmp(a.id,b.id))/*如果两串不相等*/ { if(!feof(fp))/*如果未到文件尾*/ { fread(&b,sizeof(structThe_users),1,fp); }else break; } else { printf("此用户名已存在!请重新注册!\n"); Sleep(1000); fclose(fp); return; } } printf("请输入姓名:\n"); scanf("%s",&a.name); printf("请输入性别(f(女)/m(男)):\n");scanf("%c",&a.sex); do{ if(a.sex!='f'&&a.sex!='m'){ printf("性别输入错误!请重新输入!\n"); scanf("%c",&a.sex); } }while(a.sex!='f'&&a.sex!='m'); getchar(); printf("请输入电话号码:\n");scanf("%ld",&a.phone); printf("请输入密码\n"); scanf("%s",&a.pwd); printf("请确认密码\n"); scanf("%s",&temp); do{ if(!strcmp(a.pwd,temp)){ fp=fopen("users.txt","a"); fwrite(&a,sizeof(structThe_users),1,fp); printf("账号注册成功,请登录!\n"); Sleep(500); fclose(fp); return; }else{ printf("两次密码不匹配!请重新输入!\n"); scanf("%s",&a.pwd); printf("请确认密码\n"); scanf("%s",&temp); } }while(1); }

登录

先输入账号和密码。然后按账号从文件中读取,如果账号匹配就读取密码,如果密码也匹配就登录成功,否则重新输入密码。

/*登录系统*/ voidInput_login() { usersa,b;//定义结构体The_users别名 FILE*fp; printf("欢迎来到登录界面!\n"); Sleep(1000); fp=fopen("users.txt","r"); fread(&b,sizeof(structThe_users),1,fp);//读入一个结构体字符块写入b printf("请输入账号\n"); scanf("%s",&a.id); while(1) { if(strcmp(a.id,b.id)==0)//如果有此用户名 { break; } else { if(!feof(fp))//如果文件没有读完 { fread(&b,sizeof(structThe_users),1,fp); }else { printf("此用户名不存在,请重新输入!\n"); Sleep(500); fclose(fp); return; } } }printf("请输入密码\n"); scanf("%s",&a.pwd); do{ if(strcmp(a.pwd,b.pwd)==0)/*如果密码匹配*/ { fclose(fp); printf("登录成功,欢迎使用!"); Sleep(500); return; } else {printf("密码不正确!请重新输入密码\n"); scanf("%s",&a.pwd); } }while(strcmp(a.pwd,b.pwd)==0); }

找回密码

根据输入的账号获取该账号的结构体信息,然后与其他信息进行匹配,如果全部匹配成功,则显示该账号的密码。

/*找回密码*/ voidreback()//按结构体的大小,一次写入或者读入1个结构体大小 { usersa,b;//结构体The_users重命名定义 FILE*fp; chartemp[20]; intcount=0; printf("欢迎来到找回密码界面!\n"); Sleep(1000); fp=fopen("users.txt","r"); fread(&b,sizeof(structThe_users),1,fp);//读入一个结构体字符块写入b printf("请输入账号\n"); scanf("%s",&a.id); while(1) { if(strcmp(a.id,b.id)==0)//如果有此用户名 { break; } else { if(!feof(fp))//如果文件没有读完 { fread(&b,sizeof(structThe_users),1,fp); }else { printf("此用户名不存在,请重新输入!\n"); Sleep(500); fclose(fp); return; } } } printf("请输入姓名:\n"); scanf("%s",&a.name); do{ if(strcmp(a.name,b.name)){ printf("姓名输入错误!请重新输入!\n");scanf("%s",&a.name); } }while(strcmp(a.name,b.name)); printf("请输入电话号码:\n"); scanf("%ld",&a.phone); do{ if(a.phone!=b.phone){ printf("电话号码输入错误!请重新输入!\n"); scanf("%ld",&a.phone); } }while(a.phone!=b.phone); printf("您的密码是:%s",b.pwd); Sleep(3000); }

另外如果你想更好的提升你的编程能力,学好C语言C++编程!弯道超车,快人一步!笔者这里或许可以帮到你~

UP在主页上传了一些学习C/C++编程的视频教程,有兴趣或者正在学习的小伙伴一定要去看一看哦!会对你有帮助的~

分享(源码、项目实战视频、项目笔记,基础入门教程)

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!

编程学习:

编程学习:

c/c++编程日记:纯C实现登录注册和忘记密码功能(附源码)相关推荐

  1. php万圣节源码,如何使用纯CSS实现万圣节的toggle控件(附源码)

    本篇文章给大家带来的内容是关于如何使用纯CSS实现万圣节的toggle控件(附源码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 效果预览 源代码地址 https://github ...

  2. discuz论坛整合ucenter免激活,同步登录,同步退出解决方案(附源码)

    UCenter作为整合用户的这样一个开源插件,对于PHP开发的,甚至其它开发语言如.net,java.asp等开发人员解决多个项目整合到一起,用户进行同步登录,同步退出等,同步消息等都是非常有用的.下 ...

  3. 越过验证码 selenium模拟登录B站项目实战(附源码)

    实战:selenium模拟登录B站 登录验证码处理 selenium 中的难点验证码破解因为确实没有很好的方式,一般都需要通过第三方平台实现破解,本案例中使用的是超级鹰平台(收费,大概1元30次,测试 ...

  4. 心形源码HTML,纯CSS实现心形加载动画(附源码)

    本篇文章给大家介绍一下纯CSS实现心形加载动画的方法.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. 废话不多说上代码,代码很简答,研究一下就明白了,有不明白的可以问我. .hear ...

  5. 教你用纯Java实现一个网页版的Xshell(附源码)

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:今天给大家推荐 6 个 Spring Boot 项目,拿来就可以赚钱! 个人原创100W+访问量博客:点击前往, ...

  6. java websocket_教你用纯Java实现一个网页版的Xshell(附源码)

    前言 最近由于项目需求,项目中需要实现一个WebSSH连接终端的功能,由于自己第一次做这类型功能,所以首先上了GitHub找了找有没有现成的轮子可以拿来直接用,当时看到了很多这方面的项目,例如:Gat ...

  7. 「兔了个兔」福兔贺春,纯CSS实现超精美月兔404界面(附源码)

  8. 微信小程序-传统开发模式实现授权注册登录流程【超详细,附源码】

  9. 【原创纯手打】如何使用Vue写微信朋友圈中的留言回复功能(附源码)

    简单的留言板懂的都懂,问题是如何添加留言功能 当我们添加写的内容存储到数组,然后将其遍历出来,在外部渲染时,再次遍历item.children,然后对其添加新的页面渲染 绑定回复键,在store.js ...

最新文章

  1. windows2003系列(之)搭建DHCP服务与中继代理图解
  2. 高效使用hibernate-validator校验框架
  3. CentOS 国内yum源
  4. python什么是数据结构_python算法与数据结构-数据结构介绍(38)
  5. 计算机主机红灯不闪硬盘工作,电脑主机红灯一直闪正常吗
  6. 通过代理截取并修改非对称密钥加密信息
  7. sqlite使用手册
  8. 最全最详细的小白快速上手Modelsim教程
  9. tar.bz2解压报错误 Error is not recoverable: exiting now
  10. java解析json list
  11. 选型宝访谈:打造细胞级的IT透视能力,构建健壮的业务运维体系!
  12. oracle rac告警,oracle11.2.0.4 RAC 日志总有告警
  13. azkaban跑项目的时候,一直running,
  14. IDDPM官方gituhb项目--模型构建
  15. Opencv--waitKey()函数详解
  16. idea设置类注释和方法注释模板
  17. webservice执行超长引发的两个问题
  18. MFC中如何给控件关联变量
  19. JAVA实体Do-Dto转换类 Converter
  20. win10向VMware中的win7传文件

热门文章

  1. Swift MonkeyKing分享工具
  2. Content Provider (内容提供者)
  3. 审批流程设计方案-介绍(一)
  4. elementUI:阻止form的enter(回车键)事件
  5. 可以一键去除水印的工具哪个好
  6. folly库安装(2)openssl升级、python3.8安装
  7. Pytorch-模型参数:named_parameters()、parameters()、state_dict()区别
  8. UDT协议-基于UDP的可靠数据传输协议
  9. 合资品牌车联网或率先尝到车联网技术的甜头?
  10. spring报MySQLSyntaxErrorException: Unknown error 1146