C++实现用户登录功能 要求第一次使用时需要进行用户名和密码的注册 用户名和密码需要保存在本地的数据库中,后续登录输入密码和用户名需要通过和本地mysql中提前注册的进行校验,成功后输出good
时间: 2023-09-08 22:10:44 浏览: 89
你可以使用 MySQL C++ Connector 库来连接 MySQL 数据库。下面是一个简单的实现用户登录功能的 C++ 代码示例:
```
#include <iostream>
#include <mysqlx/xdevapi.h>
using namespace std;
using namespace mysqlx;
string db_name = "test"; // 数据库名
string table_name = "users"; // 表名
string host = "localhost"; // 主机名
int port = 3306; // 端口号
string user = "root"; // 用户名
string password = "password"; // 密码
// 注册新用户
void register_user(string username, string password) {
try {
// 连接数据库
Session session(host, port, user, password);
Schema db = session.getSchema(db_name);
Table table = db.getTable(table_name);
// 检查用户名是否已存在
RowResult result = table.select().where("username = :username").bind("username", username).execute();
if (result.count() > 0) {
cout << "Username already exists!" << endl;
return;
}
// 插入新用户
table.insert("username", "password").values(username, password).execute();
cout << "Registration successful!" << endl;
}
catch (const Error& e) {
cout << "Error: " << e.what() << endl;
}
}
// 用户登录
void login(string username, string password) {
try {
// 连接数据库
Session session(host, port, user, password);
Schema db = session.getSchema(db_name);
Table table = db.getTable(table_name);
// 校验用户名和密码
RowResult result = table.select().where("username = :username and password = :password")
.bind("username", username).bind("password", password).execute();
if (result.count() == 0) {
cout << "Invalid username or password!" << endl;
return;
}
cout << "Good!" << endl;
}
catch (const Error& e) {
cout << "Error: " << e.what() << endl;
}
}
int main() {
// 注册新用户
register_user("user1", "password1");
// 用户登录
login("user1", "password1");
return 0;
}
```
在上面的代码中,`register_user` 函数用于注册新用户,`login` 函数用于用户登录。在 `register_user` 函数中,首先连接数据库,然后检查用户名是否已存在,如果不存在则插入新用户。在 `login` 函数中,同样先连接数据库,然后校验用户名和密码是否匹配。如果匹配成功,则输出 "Good!"。
当然,为了让上面的代码能够正常运行,你需要先在 MySQL 数据库中创建一个名为 "test" 的数据库,并创建一个名为 "users" 的表,表中需要有 "username" 和 "password" 两个字段。建表 SQL 语句如下:
```
CREATE TABLE `test`.`users` (
`id` INT NOT NULL AUTO_INCREMENT,
`username` VARCHAR(45) NOT NULL,
`password` VARCHAR(45) NOT NULL,
PRIMARY KEY (`id`));
```
阅读全文