我的MySQL因为电脑的反复重装实在是装不好了,不知道少卸载了什么导致MySQL装不好。那么我就自己写一个文件来保存用户名和密码这两个登录信息吧。整体上用到了文件的读写操作。
我用到了两个函数,分别是int regest()和int login(),分别处理用户的注册和登录消息。注册用户只需要查找之前有没有用户名,如果有,那么返回0,通知有重复的用户名,换一个用户名;如果没有那么可以注册,返回1。登录的情况稍微复杂一点,需要首先看用户名是否存在,如果用户名不存在返回2,如果用户名在那么看数据库密码和用户提供的密码是不是匹配。如果匹配说明登录成功,返回1,如果不匹配接着寻找,寻找完数据库中的所有数据,还是不匹配则返回3,表示密码错误。
代码部分如下:
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>
#include <iomanip>
using std::cin;
using std::cout;
using std::endl;
using std::ifstream;
using std::ofstream;
using std::ios;
using std::cerr;
using std::string;
using std::setw;
struct UsrInfo//用户名的账户和密码信息
{
char UsrName[20];
char Psword[20];
};
/*
注意我的文件中用户名是一行,密码是一样。在注册的时候只需要看用户名,不需要看密码是不是相符,所以设置i为计数变量,当i不能整除2
的时候是访问用户名的时候,当i整除2的时候是访问密码的时候。读入密码这一行直接跳出去就行了。
*/
int regest(struct UsrInfo* usr){//注册程序
char usrname[20];
char psword[20];
strcpy_s(usrname, usr->UsrName);
strcpy_s(psword, usr->Psword);
string temp;
int flag = 0;
int i = 0;
ifstream fin("E:\\VS2013_code\\fileReadWrite\\UsrInfo.txt", ios::in);//在这个路径下读入文件
ofstream fout("E:\\VS2013_code\\fileReadWrite\\UsrInfo.txt", ios::app);//在同一个路径下,如果注册成功则写入文件
while (std::getline(fin, temp))//每次读一行的数据进入temp中。
{
i++;
if (i % 2 == 0) continue;//访问的是密码这一行,跳出。
if (!strcmp(usrname, temp.c_str())) flag = 1;//flag=1说明用户名已经被注册了
}
fin.close();
if (flag){
return 0;//之前有重复的账户名
}
else{//没注册
fout << usrname << endl;//向文件写入注册者的用户名,然后换一行
fout << psword << endl;//写入密码,换行
fout.close();
return 1;//注册成功
}
}
int login(struct UsrInfo* usr){
char usrname[20];
char psword[20];
strcpy_s(usrname, usr->UsrName);
strcpy_s(psword, usr->Psword);
string temp1;
string temp2;
int existname = 0;
int match = 0;
int i = 0;
ifstream fin("E:\\VS2013_code\\fileReadWrite\\UsrInfo.txt", ios::in);
while (std::getline(fin, temp1))
{
std::getline(fin, temp2);//一次读进去两行,分别是用户名和密码
if (!strcmp(usrname, temp1.c_str())){//有这个用户名了,接下来看看密码是不是相符的
existname = 1;
if (!strcmp(psword, temp2.c_str())){//相符
match = 1;
break;
}
}
}
fin.close();
if (!existname){
return 2;//没有账户名
}
else{
if (match) return 1;
else return 3;//用户名和密码不匹配
}
}
int main()
{
UsrInfo test1;//用于测试注册程序的。
strcpy_s(test1.UsrName, "admin1");
strcpy_s(test1.Psword, "wzn");
switch (regest(&test1))
{
case 1:
cout << "注册成功" << endl;
break;
case 0:
cout << "用户名已被注册,请重新选择用户名" << endl;
break;
default:
break;
}
UsrInfo test2;//用于测试注册程序的。
strcpy_s(test2.UsrName, "admin1");
strcpy_s(test2.Psword, "wzn");
switch (login(&test2))
{
case 1:
cout << "登录成功" << endl;
break;
case 3:
cout << "密码错误" << endl;
break;
case 2:
cout << "没有此用户名,请注册" << endl;
break;
default:
break;
}
return 0;
}
所以谁有办法叫我MySQL除了重装系统以外怎么重新安装啊,,,,