C++(类模板的运用)
使用vector实现一个简单的本地注册登录系统 注册:将账号密码存入vector里面,注意防重复判断 登录:判断登录的账号密码是否正确
#include <iostream>
#include <vector>
#include <fstream>
#include <sstream>
using namespace std;
struct usr {
string pin;
string psw;
};
vector<usr> readUsers(const string& filename) {
vector<usr> users;
ifstream infile(filename);
string pin, psw;
while (infile >> pin >> psw) {
users.push_back({pin, psw});
}
infile.close();
return users;
}
bool isDuplicate(const vector<usr>& users, const string& pin) {
for (const auto& u : users) {
if (u.pin == pin) {
return true;
}
}
return false;
}
bool loginValid(const vector<usr>& users, const string& pin, const string& psw) {
for (const auto& u : users) {
if (u.pin == pin && u.psw == psw) {
return true;
}
}
return false;
}
void writeUser(const string& filename, const usr& user) {
ofstream outfile(filename, ios::app); // 追加写入
outfile << user.pin << " " << user.psw << endl;
outfile.close();
}
int main() {
const string filename = "1.txt";
while (true) {
cout << "选择操作:" << endl;
cout << "1. 注册" << endl;
cout << "2. 登录" << endl;
cout << "3. 退出" << endl;
int choice;
cin >> choice;
if (choice == 1) {
usr user;
cout << "请输入账号和密码:" << endl;
cin >> user.pin >> user.psw;
vector<usr> users = readUsers(filename);
if (isDuplicate(users, user.pin)) {
cout << "账号已存在" << endl;
} else {
writeUser(filename, user);
cout << "注册成功" << endl;
}
}
else if (choice == 2) {
string pin, psw;
cout << "请输入账号和密码:" << endl;
cin >> pin >> psw;
vector<usr> users = readUsers(filename);
if (loginValid(users, pin, psw)) {
cout << "登录成功" << pin << endl;
} else {
cout << "登录失败" << endl;
}
}
else if (choice == 3) {
cout << "已退出" << endl;
break;
}
else {
cout << "请输入正确选项" << endl;
}
cout << endl;
}
return 0;
}