1 Star 0 Fork 4

AmonYR/Qt_TrainTicketingSystem

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
mainwindow.cpp 4.35 KB
一键复制 编辑 原始数据 按行查看 历史
Takagi3 提交于 2022-12-14 17:09 . 最终版本
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QSqlQuery>
#include <QGraphicsDropShadowEffect>
#include <QDebug>
#include <QMessageBox>
#include <QCryptographicHash> // md5加密的库
#include "userInfoUtil.h"
/*
* Date: 2022/11/15
* Name: 王宇轩
* Student ID: 20301142
* Description: 这个类支持用户登陆、注册和密码找回三个功能,
* 通过stackedWidget存储这三个功能对应的界面,
* 点击按钮进行切换。
*/
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->setFixedSize(this->geometry().size());
//设置图片的阴影效果
QGraphicsDropShadowEffect *shadow = new QGraphicsDropShadowEffect(this);
shadow->setOffset(-3, 0);
shadow->setColor(QColor("#888888"));
shadow->setBlurRadius(30);
ui->label_image->setGraphicsEffect(shadow);
ui->label_rimage->setGraphicsEffect(shadow);
//槽函数
connect(this,SIGNAL(sendData(QString)),userWindow,SLOT(receiveData(QString)));
}
MainWindow::~MainWindow()
{
delete ui;
}
//**********************工具函数***********************
//清空此窗口所有输入框内的内容
void MainWindow::clearText()
{
ui->username->clear();
ui->password->clear();
ui->r_username->clear();
ui->r_pwd->clear();
ui->r_confirmPsd->clear();
}
//**********************登陆界面***********************
//登录功能
void MainWindow::on_loginButton_clicked()
{
//获取用户输入
QString username=ui->username->text();
QString password=ui->password->text();
//异常检测,若用户名或密码为空,则做出提示
if(username.isEmpty()||password.isEmpty()){
QMessageBox::information(this, "提示", "请输入用户名和密码!");
ui->username->setFocus();
return;
}
//判断是否存在该用户
if(!isUserExist(username)){
QMessageBox::critical(this, "提示", "当前用户不存在,请检查输入或注册用户");
return;
}
if(!isUserAndPswMatch(username,password)){
QMessageBox::critical(this, "提示", "用户名和密码不匹配!");
return;
}
//登陆成功,关闭当前窗口,打开系统主界面。
this->close();
emit this->sendData(username);
userWindow->show();
}
//注册功能
void MainWindow::on_registerButton_clicked()
{
//登陆界面点击注册按钮,切换到注册界面。
this->clearText();
ui->stackedWidget->setCurrentWidget(ui->registerPage);
}
//***********************注册界面***************************
//从注册界面返回登陆界面
void MainWindow::on_return_btn_clicked()
{
this->clearText();
ui->stackedWidget->setCurrentWidget(ui->loginPage);
}
//注册功能按钮
void MainWindow::on_register_btn_clicked()
{
//获取用户输入的注册信息
QString username=ui->r_username->text();
QString password=ui->r_pwd->text();
QString confirmPassword=ui->r_confirmPsd->text();
//异常检测,若用户名或密码为空,则做出提示
if(username.isEmpty()||password.isEmpty()||confirmPassword.isEmpty()){
QMessageBox::critical(this, "提示", "用户名或密码为空!");
ui->r_username->setFocus();
return;
}
if(!checkUsername(username)){
QMessageBox::critical(this, "提示", "请确保用户名由6-12位字母、数字、下划线组成");
return;
}
if(!checkPsw(password)){
QMessageBox::critical(this, "提示", "密码长度为6-12位,且必须为数字、大小写字母或符号中至少2种!");
return;
}
if(isUserExist(username)){
QMessageBox::critical(this, "提示", "当前用户名已被使用,请更换!");
return;
}
if(password!=confirmPassword){
QMessageBox::critical(this, "提示", "两次输入密码不一致!");
return;
}
// 将密码转换为md5格式
QString psw =
QCryptographicHash::hash(password.toLatin1(), QCryptographicHash::Md5).toHex();
QString sql=QString("insert into user(username,password) values('%1','%2')")
.arg(username,psw);
QSqlQuery result;
if(result.exec(sql)){
ui->stackedWidget->setCurrentWidget(ui->loginPage);
}else{
QMessageBox::critical(this, "提示", "注册失败!");
}
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/Amon152/qt_-train-ticketing-system-q.git
git@gitee.com:Amon152/qt_-train-ticketing-system-q.git
Amon152
qt_-train-ticketing-system-q
Qt_TrainTicketingSystem
master

搜索帮助

0d507c66 1850385 C8b1a773 1850385