基于qt和sqlite实现的简易点餐系统

您所在的位置:网站首页 电脑如何做点餐系统设计 基于qt和sqlite实现的简易点餐系统

基于qt和sqlite实现的简易点餐系统

2023-08-15 11:48| 来源: 网络整理| 查看: 265

JLU—Restaurant~吉大餐厅 项目模块介绍: 1.登录页面 2.前台或选桌页面 3.点餐页面 4.结算页面 5.后厨端页面 具体步骤:

登录页面:基于数据库sqlite实现和UI的注册登录页面,必须先注册后登录,用户信息存储在user.db中。

必须先注册后登录否则会出现如下页面: 在这里插入图片描述 注册后的数据都存在user.db里,生成的db文件一般不在工程文件下,而在一个同级的build文件下,可以通过Navicat打开实时查看,下面就是我注册过的用户名,只有这些用户才能登入。 在这里插入图片描述 登录代码:

#include "logindialog.h" #include "restmap.h" #include "ui_logindialog.h" #include #include #include #include #include LoginDialog::LoginDialog(QWidget *parent) ://构造函数 QDialog(parent), ui(new Ui::LoginDialog) { ui->setupUi(this); //设置背景 this->setStyleSheet("QWidget {background-image:url(:/new/bj/19.png)}"); } LoginDialog::~LoginDialog()//析构函数 { delete ui; } void LoginDialog::on_pushButton_clicked() { //添加数据库驱动 QSqlDatabase db; if(QSqlDatabase::contains("qt_sql_default_connection"))//默认的连接名是否存在 db = QSqlDatabase::database("qt_sql_default_connection"); else //默认连接名不存在,头次连接 db = QSqlDatabase::addDatabase("QSQLITE"); //设置数据库名称 db.setDatabaseName("user.db"); //打开数据库 if(!db.open()) { //打开失败 QMessageBox::critical(this, "错误", "数据库访问错误!"); return; } //以下执行相关sql语句 QSqlQuery query; //判断user表是否存在 if(!IsTableExist(query, "user")){ // //新建user表,id设置为主键 // query.exec("create table user(_id INTEGER PRIMARY KEY AUTOINCREMENT, username varchar, password varchar, name varchar)"); QMessageBox::critical(this, "错误", "没有注册用户,请先注册再登录!"); return; } //查找用户名及密码 query.exec("select * from user where username='" + ui->lineEdit->text() + "' and password='" + ui->lineEdit_2->text() + "'"); if(query.next()){ RestMap *m = new RestMap(); m->show(); //跳到RestMap页面 this->hide(); }else{ QMessageBox::critical(this, "错误", "没有注册用户,请先注册再登录!"); } } void LoginDialog::on_pushButton_2_clicked()//注册用户 { QDialog dialog(this); QFormLayout layout(&dialog); QLabel usernameLabel(&dialog); usernameLabel.setText("用户名"); QLabel passwordLabel(&dialog); passwordLabel.setText("密码"); QLabel nameLabel(&dialog); nameLabel.setText("姓名"); QLineEdit usernameLineEdit(&dialog); QLineEdit passwordLineEdit(&dialog); QLineEdit nameLineEdit(&dialog); QDialogButtonBox box(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal, &dialog); layout.addRow(&usernameLabel, &usernameLineEdit); layout.addRow(&passwordLabel, &passwordLineEdit); layout.addRow(&nameLabel, &nameLineEdit); layout.addRow(&box); connect(&box, SIGNAL(accepted()), &dialog, SLOT(accept())); connect(&box, SIGNAL(rejected()), &dialog, SLOT(reject())); if(dialog.exec() == QDialog::Accepted){ //添加数据库驱动 QSqlDatabase db; if(QSqlDatabase::contains("qt_sql_default_connection"))//默认的连接名是否存在 db = QSqlDatabase::database("qt_sql_default_connection"); else //默认连接名不存在,头次连接 db = QSqlDatabase::addDatabase("QSQLITE"); //设置数据库名称 db.setDatabaseName("user.db"); //打开数据库 if(!db.open()) { QMessageBox::critical(this, "错误", "数据库访问错误!"); return; } //以下执行相关sql语句 QSqlQuery query; //判断user表是否存在 if(!IsTableExist(query, "user")){ //新建user表,id设置为主键 query.exec("create table user(_id INTEGER PRIMARY KEY AUTOINCREMENT, username varchar, password varchar, name varchar)"); } // 添加记录 query.exec("insert into user values(null,'" + usernameLineEdit.text() + "','" + passwordLineEdit.text() + "','" + nameLineEdit.text() + "')"); } } bool LoginDialog::IsTableExist(QSqlQuery &query,QString table) //判断user表是否存在 { QString sql = QString("select * from sqlite_master where name='%1'").arg(table); query.exec(sql); return query.next(); }

前台(选桌)页面:可以实时观看餐桌使用情况,空闲的餐桌才能点击使用,点击处于使用中餐桌将弹窗告知,并再次选桌。

请添加图片描述 这里有一个细节,点击空闲的餐桌后,餐桌会变成使用中,我是过修改setText函数修改push_button中的字符串实现的。

//截取餐桌状态 QString str = ui->pushButton_1->text().section('\n',1,1); if(str == tr("空闲"))//下单 { //更改餐桌状态 ui->pushButton_1->setText("一号桌\n使用"); QTimer *timer = new QTimer(this); connect(timer, SIGNAL(timeout()), this, SLOT(update())); timer->start(5000); Menu* m = new Menu(1); m->show(); }else{//再次选桌 QMessageBox msgBox; msgBox.setText("此餐桌正在使用,请另选餐桌!"); msgBox.exec(); }

点餐页面:点餐实时更新数量和金额,可以生成订单或者清楚购物车,并可以跳转后厨端或者退回登录页面。

结算页面: 在这里插入图片描述

后厨页面:方便查看所有餐桌的订单。 在这里插入图片描述 **项目网盘: 添加链接描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3