C语言小案例:登录界面 您所在的位置:网站首页 c怎么做图形界面 C语言小案例:登录界面

C语言小案例:登录界面

2024-01-25 12:12| 来源: 网络整理| 查看: 265

第二个小案例新鲜出炉啦,小人不才,斗胆将其公之于众,请各位大佬手下留情,也希望给出些许建议,万分感谢! 同是天涯码字猿,共勉,共勉! 在这里插入图片描述 案例目的:C语言实现登录界面 实现功能: 1.用户登录:用户名、用户密码登录,进入主菜单 密码正确:进入主菜单 密码错误:重新登录或找回密码 找回密码:输入绑定手机号,输入正确,返回账号信息 2.用户注册:注册账号、密码,账户密保,返回登录界面 注册账号:输入用户名:用户名重复,重新输入 输入密码:两次输入密码,密码不同,重新输入 输入验证码:产生验证码,输入验证码,不同重新输入 账户密保:绑定手机号,手机号重复,重新输入手机号

函数声明: #include #include #include #include #include #include void Exit(void); //退出函数 void Empty(int a); //清空返回 void IdentifyingCode(void); //生成验证码 void Create(void); //用户注册 int TestaCcount(char ch1[11]); //注册辅助函数:账号验证 void security(char ch1[11],char ch2[11]): //绑定手机 int TestaPhone(char ch1[11]); //绑定辅助函数:手机号验证 void Entry(); //登录账号 int TestaPassword(char ch1[11],char ch2[11]);//登录辅助函数:密码验证 void PasswordHelp(void); //密码错误 void FoundPassword (void); //找回密码 主函数:显示登录界面 int main() { int n; do { system("cls"); printf("\n $登录界面$\n"); printf("\n\n 1.用户注册 2.用户登录 3.退出程序\n"); printf("\n^*^请选择:"); scanf("%d",&n); switch(n) { case 1:Create();break; case 2:Entry();break; case 3:Exit();break; default:system("cls");printf("#输入有误#"); } }while(1); return 0; } 注册函数:注册新用户账号信息,显示注册页面 void Create(void) //用户注册 { FILE *fp; char ch1[11],ch2[11],ch3[11]; int k=0,i,h=0,g,n; if((fp=fopen("account.txt","ab"))==NULL) { printf("文件打开失败\n"); exit(-1); } system("cls"); do { printf("\n $注册$\n"); printf("\n 请输入账号:"); for(i=0;i h=1; fwrite(ch1,10*sizeof(char),1,fp); } else { system("cls"); printf("#账号已被注册,请重新输入账号#\n"); } }while(h==0); putchar(10); system("cls"); do { do { n=0; g=0; printf("\n $注册$\n"); printf("\n 请输入密码:"); for(i=0;i if(isalpha(ch2[i])) g=1; if(!(('1' system("cls"); printf("\n#密码应至少包含一个字母#\n"); } }while(g==0); putchar(10); printf(" 再次输入密码:"); for(i=0;i k=1; fwrite(ch2,10*sizeof(char),1,fp); } else { system("cls"); printf("#两次密码不一致#\n"); } }while(k==0); fclose(fp); security(ch1,ch2); Empty(1); return; } 注册辅助函数:验证账号是否已被注册 int TestaCcount(char ch1[11]) //账号验证 { FILE *fp; int g=0; char a[11]; if((fp=fopen("account.txt","rb"))==NULL) { printf("文件打开失败\n"); exit(-1); } while(feof(fp)==0) { fread(a,10*sizeof(char),1,fp); a[10]='\0'; if(strcmp(a,ch1)==0) g=1; } fclose(fp); if(g==0) return 0; else return 1; } 绑定函数:绑定手机号 void security(char ch1[11],char ch2[11]) //绑定手机 { FILE *fp; char ch3[11]; int i,k=0; if((fp=fopen("security.txt","ab"))==NULL) { printf("文件打开失败\n"); exit(-1); } system("cls"); do { printf("\n $绑定$\n"); printf("\n 手机号[10位]:"); for(i=0;i k=1; fwrite(ch3,10*sizeof(char),1,fp); fwrite(ch2,10*sizeof(char),1,fp); fwrite(ch1,10*sizeof(char),1,fp); } else { system("cls"); printf("#该手机号已被绑定#\n"); } }while(k==0); fclose(fp); putchar(10); IdentifyingCode(); return; } 绑定辅助函数:验证手机号是否已被绑定 int TestaPhone(char ch1[11]) //手机号验证 { FILE *fp; int g=0; char a[11]; if((fp=fopen("security.txt","rb"))==NULL) { printf("文件打开失败\n"); exit(-1); } while(feof(fp)==0) { fread(a,10*sizeof(char),1,fp); a[10]='\0'; if(strcmp(a,ch1)==0) g=1; } fclose(fp); if(g==0) return 0; else return 1; } 验证码函数:随机生成验证码 void IdentifyingCode(void) //验证码 { char ch1[5],ch2[5]; int a,i; srand(time(NULL)); system("cls"); do { for(i=0;i case 1:ch1[i]='2';break; case 2:ch1[i]='G';break; case 3:ch1[i]='a';break; case 4:ch1[i]='5';break; case 5:ch1[i]='Q';break; case 6:ch1[i]='0';break; case 7:ch1[i]='k';break; case 8:ch1[i]='7';break; case 9:ch1[i]='S';break; case 0:ch1[i]='W';break; default :ch1[i]='A'; } } ch1[4]='\0'; printf("\n $验证$\n"); printf("\n 5秒后生成验证码:"); Sleep(5000); printf("\n [%s]\n",ch1); printf(" 请输入验证码:"); scanf("%s",ch2); if(strcmp(ch1,ch2)==0) break; else { system("cls"); printf("#验证码错误#\n"); } }while(1); return; } 登录函数:登录账号 void Entry() //登录账号 { int k=0,i; char ch1[11],ch2[11]; system("cls"); do { printf("\n $登录$\n"); printf("\n 账号:"); for(i=0;i ch2[i]=getch(); printf("*"); } ch2[10]='\0'; if(TestaPassword(ch1,ch2)==1) k=1; else { PasswordHelp(); system("cls"); } }while(k==0); Empty(2); return; } 登录辅助函数:验证输入账号信息是否正确 int TestaPassword(char ch1[11],char ch2[11]) //密码验证 { FILE *fp; int c=0,g=0,k=0; char a[11],b[11]; if((fp=fopen("account.txt","rb"))==NULL) { printf("文件打开失败\n"); exit(-1); } while(c==0 && feof(fp)==0) { fread(a,10*sizeof(char),1,fp); a[10]='\0'; if(strcmp(a,ch1)==0) { fread(b,10*sizeof(char),1,fp); b[10]='\0'; if(strcmp(b,ch2)==0) c=1; g=1; } } fclose(fp); if(g==1 && c==1) return 1; else return 0; } 登录辅助函数:登录出错选择找回密码或重新登录 void PasswordHelp(void) //密码错误 { int n; system("cls"); do { printf("\n $密码错误$\n"); printf("\n\n 1.找回密码 2.重新登录\n"); printf("\n^*^请选择:"); scanf("%d",&n); if(n==1) { FoundPassword(); return; } if(n==2) return; else { system("cls"); printf("#输入错误#"); } }while(n!=1 && n!=2); return; } 找回密码函数:通过绑定的手机号找回密码 void FoundPassword (void) //找回密码 { FILE *fp; int g=0,i,n; char a[11],b[11],ch1[11],c[11]; if((fp=fopen("security.txt","rb"))==NULL) { printf("文件打开失败\n"); exit(-1); } system("cls"); do { printf("\n $找回密码$\n"); printf("\n 输入绑定手机号:"); for(i=0;i fread(a,10*sizeof(char),1,fp); a[10]='\0'; if(strcmp(a,ch1)==0) { fread(b,10*sizeof(char),1,fp); fread(c,10*sizeof(char),1,fp); b[10]='\0'; c[10]='\0'; g=1; } } if(g==0) { system("cls"); printf("#该手机号未被绑定#"); } else { system("cls"); printf("\n $找回成功$\n"); printf("\n 5秒后返回账号信息:\n"); Sleep(5000); printf("\n 账号: %s ",c); printf("\n 密码: %s ",b); } }while(g==0); fclose(fp); do { printf("\n\n ^*^输入 0 返回界面\n"); scanf("%d",&n); if(n==0) return; else { system("cls"); printf("#输入有误#\n\n"); } }while(n!=0); system("cls"); return; } 清屏函数:清空界面,返回主界面 void Empty(int a) //清空返回 { int n; system("cls"); do { if(a==1) { printf("\n $注册成功$\n"); printf("\n^*^输入 0 返回界面\n"); } if(a==2) { printf("\n $登录成功$\n"); printf("\n^*^输入 0 进入主菜单\n"); } scanf("%d",&n); if(n==0) return; else { system("cls"); printf("#输入有误#\n\n"); } }while(n!=0); } 退出函数:退出程序 void Exit(void) { system("cls"); printf("\n\n\n ^*^感谢使用手机模拟系统,祝您生活愉快!\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); exit(-1); }

注:1.程序通过建立文件,将账号信息写入所建文件,需要时从文件中读出所需信息,本程序共建立两个文件,分别是:account.txt 文件和 security.txt 文件,其中account.txt 文件储存注册的账号与密码,security.txt 文件储存绑定的手机号、账号以及密码。2.system(“cls”);为清屏函数。3.srand(“time(NULL)”);和rand();为随机数函数; 小小推荐: C语言案例系列: C语言小案例:学生管理系统1.0版 前端案例系列: 前端小案例:登录页面 撕烂数据爆锤算法系列: 撕烂数据爆锤算法:单链表 撕烂数据爆锤算法:循环链表 刚接触这方面的东西,有很多不解和疑问,希望大家能够多多支持,也希望我能在编程之路上越走越远,哈哈!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有