改良的用户注册和登录系统(2)
2017-04-30 11:14
225 查看
#include <stdio.h> #include <string.h> //用户登录验证系统-改良 struct log //定义log结构用于存储用户账号和密码信息 { char name[15]; char password[10]; }; int num; void logging(struct log person); //登录函数 void regis(struct log person); //注册函数 void jiami(char*p); //密码加密函数 int main() { FILE*fp; int choice; //操作序号 struct log person; if ((fp=fopen("num.dat","rb"))!=NULL) //读取当前已注册用户的人数 { fread(&num,sizeof(int),1,fp); fclose(fp); } do{ printf("输入操作对应序号:1.登录 2.注册 3.退出(目前已注册用户:%d)\n",num); scanf("%d",&choice); switch (choice) { case 1:logging(person);break; case 2:regis(person);break; case 3:break; default:break; } }while(choice!=3); if ((fp=fopen("num.dat","wb"))!=NULL) //存储当前已注册用户的人数 { fwrite(&num,sizeof(int),1,fp); fclose(fp); } return 0; } void logging(struct log person) { FILE*fp; struct log read; int flag=0; //辅助开关 if ((fp=fopen("logging.dat","rb"))==NULL) //若没有一个注册用户,则无法登录 { printf("不存在注册用户\n"); }else { printf("请输入账号\n"); scanf("%s",person.name); printf("请输入密码\n"); scanf("%s",person.password); jiami(person.password); fread(&read,sizeof(struct log),1,fp); while(!feof(fp)) { if((strcmp(person.name,read.name)==0) && (strcmp(person.password,read.password)==0)) //从注册信息文件读取信息,验证账号和密码 { printf("登录成功\n"); fclose(fp); flag=1; break; } fread(&read,sizeof(struct log),1,fp); } if (flag==0) {printf("用户名不存在或密码不正确\n"); fclose(fp);} } } void regis(struct log person) { FILE*fp; char check[10]; int flag_check,flag_check1; //两个辅助开关 struct log read; do{ flag_check1=0; printf("请输入新账号\n"); scanf("%s",person.name); if ((fp=fopen("logging.dat","rb"))!=NULL) { fread(&read,sizeof(struct log),1,fp); while(!feof(fp)) { if (strcmp(person.name,read.name)==0) //防止用户名被重复注册 { printf("该账户已被注册\n"); flag_check1=1; break; } fread(&read,sizeof(struct log),1,fp); } fclose(fp); } }while(flag_check1); do{ flag_check=0; printf("请输入新账号的密码\n"); scanf("%s",person.password); printf("请再次输入密码\n"); scanf("%s",check); if (strcmp(person.password,check)!=0) //防止密码误输入 { printf("两次输入的密码不一致\n"); flag_check=1; } }while(flag_check); jiami(person.password); if ((fp=fopen("logging.dat","ab"))==NULL) { printf("注册失败\n"); }else { fwrite(&person,sizeof(struct log),1,fp); //把账号和密码写入注册文件 printf("注册成功\n"); num++; fclose(fp); } } void jiami(char*p) //对密码进行加密 { for (;*p!='\0';p++) { *p=*p^15; } }
用二进制形式存储账号和密码信息,提高安全性
相关文章推荐
- 黑马程序员--用户注册登录管理系统…
- 【Struts2+Hibernate3+Spring3】利用SSH整合,完成打印用户表,用户登录、注册、修改密码系统
- 银行管理系统 实现用户注册 登录 存、取款 交易记录查询和修改用户信息等功能
- 使用MVC实现用户登录注册系统—银行管理系统
- 用户注册,登录,留言系统
- python实现的简单用户注册登录系统
- 【Spring+SpringMVC+Mybatis】利用SSM整合,完成用户登录、注册、修改密码系统
- 黑马程序员--用户注册登录管理系统…
- 黑马程序员--用户注册登录管理系统…
- 黑马程序员--用户注册登录管理系统…
- 【Struts2+Hibernate3+Spring3】利用SSH整合,完成打印用户表,用户登录、注册、修改密码系统
- 简易的用户注册和登录系统.
- J2EE初级学习项目——JSP+Servlet+JavaBean开发模式+Filter+(Listener)+Jdbc的用户登录注册系统
- 黑马程序员--用户注册登录管理系统…
- MD5算法原理简要介绍并采用C#应用在桌面应用系统的用户登录与注册中
- 慧都UPMS通用用户权限系统开发指南——用户登录和注册
- 使用Eclipse+MyEclipse+MySql开发一个用户注册登录系统
- 黑马程序员--用户注册登录管理系统…
- .NET2.0下CommunityServer21新注册用户成功,注销重新登录失败的问题
- 在jsp中用bean和servlet联合实现用户注册、登录