标签:
最近的一个课程设计要求的一个用户登录的程序,通常软件网页等的用户登录注册都是涉及到数据库。但像课程设计这种小程序要求的安全度不高就可以用c/c++实现。
首先,我们要清楚用户登录的流程。应该大家对这些并不陌生。
首先说说注册流程
1、要求输入用户名(如果该用户名已被注册则重新输入)
2、要求输入密码。
3、要求再次输入密码(如果两次密码输入相同则注册成功,否则重新注册)。】
其次是登陆流程
1、输入用户名(如果该用户名不存在则重新输入)
2、输入密码(如果正确则进入程序,否则重新登录)
那么下面就用代码来实现:
有两种方式实现,一、使用 fstream 文件读写流。二、使用结构体链表(该方法以后补充)
一、使用 fstream 文件读写流
1 void regist() 2 { //注册 3 char *password = new char[20];//分配20个字节,然后返回首地址给password,即password可以看做一个20字节的字符数组,即字符串 4 string name; 5 /*struct user 6 { 7 string password; 8 string name; 9 };定义的用户结构体*/ 10 user c; 11 ifstream fin;//声明 ifstream 对象 12 fin.open("user.txr",ios::in);//关联文件 13 cout << "请输入用户名:"; 14 cin>>name; 15 while(fin >> c.name >> c.password)//读取成功返回1 16 { 17 if(c.name==name) 18 {cout << "该用户名已被注册" <<endl;regist();} 19 } 20 char test ;int i=0; 21 cout << "输入密码:"; 22 while((test=getch())!=‘\r‘) 23 { 24 if(test==8)//ASC2码8为退格 25 { 26 if(i>0) 27 { 28 cout << test << " " << test; 29 password[i--]=‘\0‘; 30 } 31 } 32 else 33 { 34 if(i<20) 35 { 36 cout << "*" ; 37 password[i]=test; 38 i++; 39 } 40 } 41 } 42 password[i] = ‘\0‘; 43 cout << "再次输入密码" ; 44 char *password2 = new char[20]; 45 i=0; 46 while((test=getch())!=‘\r‘) 47 { 48 if(test==8) 49 { 50 if(i>0) 51 { 52 cout << test << " " << test ; 53 password2[i--]=‘\0‘; 54 } 55 } 56 else 57 { 58 if(i<20) 59 { 60 cout << "*"; 61 password2[i]=test; 62 i++; 63 } 64 } 65 password2[i]=‘\0‘; 66 } 67 if(strcmp(password,password2)!=0) 68 { 69 70 cout << "密码两次输入不正确"; 71 regist(); 72 } 73 else 74 { 75 cout << "注册成功"; 76 } 77 ofstream fout; 78 fout.open("user.txr",ios_base::out|ios_base::app); 79 fout << name << " " << password << endl; 80 fout.close();//关闭文件连接,但不会删除流 81 cout << "三秒后返回登陆界面"; 82 nterface();//界面 83 }
1 void logo() 2 {//登录 3 char *password = new char [20]; 4 string name; 5 cout << "用户名:"<<endl; 6 cin>>name; 7 cout <<" 密码:"<<endl; 8 char test;int i=0; 9 while((test=getch())!=‘\r‘) 10 { 11 if(test==8)//ASC2码8为退格 12 { 13 if(i>0) 14 { 15 cout << test << " " << test; 16 password[i--]=‘\0‘; 17 } 18 } 19 else 20 { 21 if(i<20) 22 cout << "*"; 23 password[i]=test; 24 i++; 25 } 26 } 27 password[i]=‘\0‘; 28 ifstream fin; 29 fin.open("user.txr",ios_base::in); 30 if(fin.fail()) 31 { 32 cout << "文件打开失败"; 33 } 34 user c;int f1; 35 while(fin>>c.name>>c.password) 36 { 37 if(c.name==name&&c.password==password) 38 { 39 cout << "登陆成功"; 40 f1=1;//登录成功标志 41 nterface(); 42 } 43 } 44 if(f1==0)//f1==0登录失败 45 { 46 cout << "用户名或密码错误"; 47 logo(); 48 } 49 }
标签:
原文地址:http://www.cnblogs.com/LizG192/p/5410677.html