C语言实现密码本
本文实例为大家分享了C语言实现密码本的具体代码,供大家参考,具体内容如下
功能简述:
1.账号登陆(密码验证,三次锁定账号)
2.功能选择:1、查看所有密码2、新增密码3、删除密码4、修改密码5、查询密码6、解除锁定7、退出登陆
3.保存密码,文件加密
4.流程图:
数据定义部分
#pragmaonce //变量声明 #defineNUM100//初始密码本容量 externintg_nNum;//当前密码本容量 externintg_lock_flag;//锁定标志 /*定义存储账户密码的结构体****************************/ typedefstruct_PASSWORD { charwebsite[100];//站点名 charuserName[40]; charpassWord[20]; charnote[100];//备注 }PASSWORD,*PPASSWORD; /*定义用户操作枚举*************************************/ #define查看所有密码1 #define新增密码2 #define删除密码3 #define修改密码4 #define查询密码5 #define解除锁定6 #define退出7
界面与用户交互
intmain() { /*全局变量初始化**********************************************************************/ g_nNum=0;//当前密码本容量 g_lock_flag=1;//锁定标志 /*局部变量定义************************************************************************/ PPASSWORDpPwd=nullptr;//密码数组指针 intnCount=0;//当前密码个数 intop=0;//用户操作 /*本地读取,初始化密码本,锁定标志*****************************************************/ readInfo(&pPwd,&nCount); /*登陆验证==>注册和登陆****************************************************************/ if(!g_lock_flag) { printf("账户已锁定,请解锁!\n"); unLock(pPwd,nCount); } else { login(pPwd,&nCount); } /*循环扫描,功能选择*********************************************************************/ /*1、查看所有2、新增3、删除4、修改5、查询6、解除锁定7、退出*/ /*密码校验机制,三次锁定,可以登陆,权限锁定*/ while(1) { Dlg_print(); printf("请输入操作:"); scanf_s("%d",&op); switch(op) { case查看所有密码:searchAllInfo(pPwd,nCount);break; case新增密码:insertInfo(pPwd,&nCount);break; case删除密码:deleInfo(pPwd,&nCount);break; case修改密码:reviseInfo(pPwd,nCount);break; case查询密码:queryInfo(pPwd,nCount);break; case解除锁定:unLock(pPwd,nCount);break; case退出:admExit(pPwd,nCount);break; } } return0; }
读取和保存
/*本地读取,初始化密码本*/ voidreadInfo(PPASSWORD*ppPwd,int*pnCount) { FILE*fp=NULL; errno_terr; if((err=fopen_s(&fp,"password.txt","rb"))!=0) { //开辟最大容量空间等待输入密码 printf("文件不存在,请注册账号……\n"); //密码数组指针为空,给密码数组指针的地址赋值 *ppPwd=(PPASSWORD)malloc(sizeof(PASSWORD)*NUM); memset(*ppPwd,0,sizeof(PASSWORD)*NUM); g_nNum=NUM; return; } fread(pnCount,sizeof(int),1,fp); fread(&g_lock_flag,sizeof(int),1,fp); g_nNum=*pnCount; *ppPwd=(PPASSWORD)malloc(sizeof(PASSWORD)*g_nNum); memset(*ppPwd,0,sizeof(PASSWORD)*g_nNum); size_trlen=fread(*ppPwd,sizeof(PASSWORD),g_nNum,fp); /*printf("密码本密码数量:%d\n",*pnCount); printf("密码本锁定状态:%d\n",g_lock_flag); printf("密码本当前容量:%d\n",g_nNum);*/ /*解密*/ if(rlen!=g_nNum) { printf("密码文件读取错误\n"); fclose(fp); return; } size_tbyteSize=sizeof(PASSWORD)*g_nNum; char*buf=(char*)*ppPwd; for(size_ti=0;i登陆
voidlogin(PASSWORDpwd[],int*pnCount) { charadmName[40]={0}; charadmPwd1[20]={0}; charadmPwd2[20]={0}; printf("*******************************************\n"); printf("-------------欢迎使用1024密码本------------\n"); printf("账户:"); scanf_s("%s",admName,40); printf("密码:"); scanf_s("%s",admPwd1,20); if(strlen(pwd[0].userName)==0||g_nNum==0) { //账户不存在---注册---保存账号密码 printf("重新输入密码:"); scanf_s("%s",admPwd2,20); if(strcmp(admPwd1,admPwd2)!=0) { printf("两次密码不一致,请重新输入\n"); exit(1); } strcpy_s(pwd[0].website,100,"密码本"); strcpy_s(pwd[0].userName,40,admName); strcpy_s(pwd[0].passWord,20,admPwd1); strcpy_s(pwd[0].note,100,"管理员账户"); printf("注册成功\n"); (*pnCount)++; saveInfo(pwd,*pnCount); } elseif(strcmp(admName,pwd[0].userName)==0) { //账户存在,验证密码 inti=0; while(strcmp(admPwd1,pwd[0].passWord)!=0) { i++; if(i>=3) { g_lock_flag=0; printf("您的账户已被锁定!请解锁后再操作!\n"); exit(1); } printf("密码错误,请重新输入:"); scanf_s("%s",admPwd1,20); } } else { printf("账号密码错误\n"); system("pause"); exit(1); } }功能就不写了,源代码上传了,下面是运行结果
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。