当前位置: 首页 > news >正文

香港特别行政区网站建设_网站建设公司_MongoDB_seo优化

网站在线建设,网站建设公司-好发信息网,如何做微信网站防封,企业官方网站有哪些目录 实现使用数据库的登录注册功能 头文件#xff1a; registrwidget.h: widget.h: 源文件#xff1a; registrwidget.c: widget.h: 效果图#xff1a; 思维导图 实现使用数据库的登录注册功能 头文件#xff1a; registrwidget.h: #ifndef REGISTRWIDGET_H #de…目录 实现使用数据库的登录注册功能 头文件 registrwidget.h: widget.h: 源文件 registrwidget.c: widget.h: 效果图 思维导图 实现使用数据库的登录注册功能 头文件 registrwidget.h: #ifndef REGISTRWIDGET_H #define REGISTRWIDGET_H#include QWidget #include QPushButton #include QLabel #include QLineEdit #include QMessageBox #include QSqlDatabase //数据库管理类 #include QSqlQuery //执行sql语句的类 #include QSqlRecord //记录数据库记录的类namespace Ui { class registrwidget; }class registrwidget : public QWidget {Q_OBJECT public slots:void jumpToRegister_slot();public:explicit registrwidget(QWidget *parent nullptr);~registrwidget();// void jumpToWid();void cancel_btn_clicked_slot();void register_btn_clicked_slot();private:Ui::registrwidget *ui;QPushButton *register_btn;QPushButton *cancel_btn;QLabel *lab1;QLineEdit *edit1;QLineEdit *edit2;QLineEdit *edit3;QLabel *lab2;QLabel *lab3;QLabel *lab4;QSqlDatabase db; //定义一个数据库的类对象//Widget *wid; };#endif // REGISTRWIDGET_Hwidget.h: #ifndef WIDGET_H #define WIDGET_H#include registrwidget.h #include QWidget #include QLabel #include QLineEdit #include QPushButton #include QObject #include QMessageBox #include QSqlDatabase //数据库管理类 #include QSqlQuery //执行sql语句的类 #include QSqlRecord //记录数据库记录的类QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);~Widget();signals://void jumpToLogin();void jumpToRegister();public slots:void loginBtn_slot();void cancelBtn_slot();void registerBtn_slot();private:Ui::Widget *ui;QLabel *lab1;QLineEdit *edit1;QLineEdit *edit2;QLabel *lab2;QLabel *lab3;QPushButton *btn1;QPushButton *btn2;QPushButton *btn3;QSqlDatabase db; //定义一个数据库的类对象//login *l1;registrwidget *reg_wid; }; #endif // WIDGET_H源文件 registrwidget.c: #include registrwidget.h #include ui_registrwidget.hvoid registrwidget::jumpToRegister_slot() {this-show(); //展示自己的界面 }registrwidget::registrwidget(QWidget *parent) :QWidget(parent),ui(new Ui::registrwidget) {ui-setupUi(this);//判断自己的数据库对象中是否包含了要处理的数据库如果没有就添加如果包含就打开if(!db.contains(registeredusr.db)){//添加一个数据库db QSqlDatabase::addDatabase(QSQLITE);//设置数据库的名字db.setDatabaseName(registeredusr.db);}//此时已经有一个名为registeredusr.db的数据库//打开数据库if(!db.open()){QMessageBox::critical(this, 失败, 打开失败);return;}//说明数据库打开成功//需要使用sql语句进行创建表的操作//准备sql语句QString sql(create table if not exists regedusr( //创建表usrname varchar(20) primary key, //账号passwd varchar(20))); //密码//准备语句执行者QSqlQuery query;//让语句执行者执行sql语句if(!query.exec(sql)){QMessageBox::critical(this, 失败, 创建失败);return;}//将图形化界面的名字改成Login screen登录界面this-setWindowTitle(Register screen);//将ui的图标改成想要的this-setWindowIcon(QIcon(:/icon/wodepeizhenshi.png));//设置ui界面的大小为合适的大小this-setFixedSize(QSize(400,300));//插入一个label它的宽度与ui等宽高度大约为整个ui界面高度的4/9lab1 new QLabel(this);lab1-resize(QSize(400,133));lab1-move(0,0);//label的内容要是一张图片lab1-setPixmap(QPixmap(:/icon/logo.png));//设置图片填充lab1-setScaledContents(true);//插入两个行编辑器第一个用于输入账号edit1 new QLineEdit(this);edit1-resize(QSize(240,30));edit1-move(110,145);edit1-setPlaceholderText(账号);//第二个用于输入密码edit2 new QLineEdit(this);edit2-resize(QSize(240,30));edit2-move(edit1-x(),edit1-y()35);edit2-setPlaceholderText(密码);//第二个回显模式是密码模式edit2-setEchoMode(QLineEdit::Password);//第三个用于确认密码edit3 new QLineEdit(this);edit3-resize(QSize(240,30));edit3-move(edit1-x(),edit2-y()35);edit3-setPlaceholderText(请确认密码);//第三个回显模式也是密码模式edit3-setEchoMode(QLineEdit::Password);//每个行编辑器前都要有一个label内容为图片lab2 new QLabel(this);lab2-resize(37,30);lab2-setPixmap(QPixmap(:/icon/userName.jpg));lab2-setScaledContents(true);lab2-move(edit1-x()-60,edit1-y());lab3 new QLabel(this);lab3-resize(37,30);lab3-setPixmap(QPixmap(:/icon/passwd.jpg));lab3-setScaledContents(true);lab3-move(edit2-x()-60,edit2-y());lab4 new QLabel(this);lab4-resize(37,30);lab4-setPixmap(QPixmap(:/icon/passwd.jpg));lab4-setScaledContents(true);lab4-move(edit3-x()-60,edit3-y());//实例化登录按钮和退出按钮register_btn new QPushButton(注册, this);cancel_btn new QPushButton(取消, this);register_btn-resize(60,30);cancel_btn-resize(60,30);register_btn-move(120, edit3-y()45);cancel_btn-move(register_btn-x()120, register_btn-y());//将取消按钮的按下信号与对应的槽函数连接点击取消就关闭注册界面connect(cancel_btn, QPushButton::clicked, this, registrwidget::cancel_btn_clicked_slot);//将注册按钮的按下信号与对应的槽函数连接点击注册就进行对应的操作connect(register_btn, QPushButton::clicked, this, registrwidget::register_btn_clicked_slot); }registrwidget::~registrwidget() {delete ui; }void registrwidget::cancel_btn_clicked_slot() {//使用静态成员函数的方式打开一个对话框int ret QMessageBox::question(this,取消,是否确认取消注册,QMessageBox::Yes|QMessageBox::No,QMessageBox::No);switch (ret) {case QMessageBox::Yes://确认就退出this-close();break;case QMessageBox::No://否就不进行任何操作break;default://应该不会有这种可能性break;} }void registrwidget::register_btn_clicked_slot() {QString usrname edit1-text();QString passwd edit2-text();QString repasswd edit3-text();//确保每个容器中都有数据if(usrname.isEmpty() ||passwd.isEmpty() || repasswd.isEmpty()){QMessageBox::warning(this, 警告, 请将信息填写完整);return;}//判断如果两个密码输入框中的密码不同就给出消息框提示并清空密码框if(passwd ! repasswd){QMessageBox::critical(this, 错误, 请确保两次密码都输入正确);edit2-clear();edit3-clear();return;}//此时容器中都有数据且确认密码正确判断用户名是否存在//准备sql语句QString sql QString(select passwd from regedusr where usrname%1;).arg(usrname);//准备语句执行者QSqlQuery query;//让语句执行者执行sql语句if(!query.exec(sql)){QMessageBox::critical(this, 失败, 注册失败);return;}if(query.next()){QMessageBox::critical(this, 失败, 用户名已存在);return;}//此时可以进行插入操作//准备sql语句sql QString(insert into regedusr(usrname, passwd)values(%1, %2)).arg(usrname).arg(passwd);//让语句执行者执行sql语句if(!query.exec(sql)){QMessageBox::critical(this, 失败, 注册失败);return;}//此时注册成功QMessageBox::information(this, 成功, 注册成功);//注册成功后自动退出注册界面this-close();}widget.h: #include widget.h #include ui_widget.hWidget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui-setupUi(this);reg_wid new registrwidget;//判断自己的数据库对象中是否包含了要处理的数据库如果没有就添加如果包含就打开if(!db.contains(registeredusr.db)){//添加一个数据库db QSqlDatabase::addDatabase(QSQLITE);//设置数据库的名字db.setDatabaseName(registeredusr.db);}//此时已经有一个名为registeredusr.db的数据库//打开数据库if(!db.open()){QMessageBox::critical(this, 失败, 打开失败);return;}//说明数据库打开成功//需要使用sql语句进行创建表的操作//准备sql语句QString sql(create table if not exists regedusr( //创建表usrname varchar(20) primary key, //账号passwd varchar(20))); //密码//准备语句执行者QSqlQuery query;//让语句执行者执行sql语句if(!query.exec(sql)){QMessageBox::critical(this, 失败, 创建失败);return;}//将图形化界面的名字改成Login screen登录界面this-setWindowTitle(Login screen);//将ui的图标改成想要的this-setWindowIcon(QIcon(:/icon/wodepeizhenshi.png));//设置ui界面的大小为合适的大小this-setFixedSize(QSize(400,300));//插入一个label它的宽度与ui等宽高度大约为整个ui界面高度的4/9lab1 new QLabel(this);lab1-resize(QSize(400,133));lab1-move(0,0);//label的内容要是一张图片lab1-setPixmap(QPixmap(:/icon/logo.png));//设置图片填充lab1-setScaledContents(true);//插入两个行编辑器第一个用于输入账号edit1 new QLineEdit(this);edit1-resize(QSize(240,40));edit1-move(110,150);edit1-setPlaceholderText(账号);//第二个用于输入密码edit2 new QLineEdit(this);edit2-resize(QSize(240,40));edit2-move(edit1-x(),edit1-y()55);edit2-setPlaceholderText(密码);//第二个回显模式是密码模式edit2-setEchoMode(QLineEdit::Password);//每个行编辑器前都要有一个label内容为图片lab2 new QLabel(this);lab2-resize(50,40);lab2-setPixmap(QPixmap(:/icon/userName.jpg));lab2-setScaledContents(true);lab2-move(edit1-x()-60,edit1-y());lab3 new QLabel(this);lab3-resize(50,40);lab3-setPixmap(QPixmap(:/icon/passwd.jpg));lab3-setScaledContents(true);lab3-move(edit2-x()-60,edit2-y());//要有两个pushbutton,一个是登录另一个是取消btn1 new QPushButton(登录,this);btn2 new QPushButton(取消,this);//重设他们的尺寸btn1-resize(QSize(60,30));btn2-resize(btn1-size());//移动他们的位置到合适btn1-move(170,edit2-y()55);btn2-move(270,edit2-y()55);//内容都会有一个图片btn1-setIcon(QIcon(:/icon/login.png));btn2-setIcon(QIcon(:/icon/cancel.png));//实例化一个注册按钮btn3 new QPushButton(注册, this);btn3-resize(btn1-size());//移动到一个合适的位置btn3-move(btn1-x()-100,btn1-y());//将登录按钮点击发信号与处理函数连接connect(this-btn1, QPushButton::clicked, this, Widget::loginBtn_slot);//将取消按钮点击发信号与处理函数连接connect(this-btn2, QPushButton::clicked, this, Widget::cancelBtn_slot);//将跳转信号与registrwidget界面的处理函数连接connect(this, Widget::jumpToRegister, reg_wid, registrwidget::jumpToRegister_slot);//将注册按钮点击信号与跳转向注册界面的信号连接点击注册按钮自动跳转到注册界面connect(this-btn3, QPushButton::clicked, this, Widget::registerBtn_slot);}Widget::~Widget() {delete ui; }void Widget::loginBtn_slot() {QString usrname edit1-text();QString passwd edit2-text();//准备sql语句//按照用户名查找密码项QString sql QString(select passwd from regedusr where usrname%1;).arg(usrname);//准备语句执行者QSqlQuery query;//让语句执行者执行sql语句if(!query.exec(sql)){QMessageBox::critical(this, 失败, 登录失败);return;}if(!query.next()){QMessageBox::critical(this, 登录失败, 用户名不存在请先注册);edit2-clear();return;}else{//此时数据表中对应的用户名是存在对应密码的if(passwd query.value(0).toString()){//对象版实现打开一个信息对话框QMessageBox box(QMessageBox::Information,登录成功,登录成功,QMessageBox::Ok,this);box.exec();}else{//对象版实现打开一个错误对话框QMessageBox box(QMessageBox::Critical,错误,账号密码不匹配是否重新登录,QMessageBox::Ok|QMessageBox::Cancel,this);//设置默认选择的按钮box.setDefaultButton(QMessageBox::Ok);int ret box.exec();//有两个按钮需要判断if(QMessageBox::Okret){edit2-clear();}else{this-close();}}} }void Widget::cancelBtn_slot() {//使用静态成员函数的方式打开一个对话框int ret QMessageBox::question(this,请问,是否确认要退出,QMessageBox::Yes|QMessageBox::No,QMessageBox::No);switch (ret) {case QMessageBox::Yes://确认就退出this-close();break;case QMessageBox::No://否就不进行任何操作break;default://应该不会有这种可能性break;} }void Widget::registerBtn_slot() {emit jumpToRegister(); } 效果图 使用一个未注册的账户进行登录 点击注册 如果用户名已注册 正确输入账号和密码 注册成功后登录的效果: 如果登录的时候密码错误 思维导图
http://www.lebaoying.cn/news/10838.html

相关文章:

  • 个人主页网站模板免费推广软件平台排行榜
  • 建站程序的作用wordpress 社交登录
  • 网站主办单位变更企业管理培训课程价格
  • 石家庄专业模板网站制作价格50款软件app免费下载大全
  • 成都有哪些网站建设湛江模板建站定制网站
  • 网站推广的主要方法有哪些python搭建个人网站
  • 全屏网站制作百科网站源码
  • d8 wordpress广州中小企业seo推广运营
  • 网站设计的逻辑wordpress+屏蔽ip插件
  • asp网站怎么做三语建设网咨询
  • 做网站什么公司好食品网站模板
  • 中亿丰建设集团股份有限公司网站网站建设挣钱的需要什么
  • 网站建设单一来源谈判文件怎么用wordpress打开网站吗
  • ps做网站的优点江苏中高风险地区
  • 深圳网站建设制作公司排名建设数字官方网站
  • 用织梦建网站建设一个网站需要什么人员
  • 甘肃网站怎样备案河北网页设计
  • 电视台网站开发网站的设计与维护摘要
  • 福田做棋牌网站建设找哪家公司好网站开发背景400字
  • 商城网站备案能通过吗新闻最新热点
  • 关于网站建设的图片北京网站建设找降龙
  • 手机能创建网站吗建设专业网站运营团队
  • 教育平台网站跟换网站域名
  • 苏州城乡建设局的网站制作手机网站建设
  • 江苏常州青之峰做网站怎么推广自己的店铺
  • 网站开发外包项目网站北京网站建设价格行情
  • 公众号登录入口官网网站做个seo要多少钱
  • 创建网站宝典淘宝客网站建好了没有数据库
  • 建站视频教程网第一活动线报网
  • 杭州商城网站建设施工企业会计王玉红课后答案