# 基于Qt6.3.0开发的教室预约系统
## 软件信息
- Qt6.3.0,x64,社区版
- Mysql8.0,x64,社区版
- DataGrip 2021.3.4,x64
- ODBC,x64
注意:如果Qt的ming_w和Mysql的位数不一样,可能无法连接数据库
## Qt使用说明
组件:比如按钮,文本输入框等等
信号:就是你对组件的操作,比如点击
槽:对组件绑定一个函数,并且找个函数是在private slots:里面声明过的,这样对组件进行操作时候就会触发相应函数执行
## 数据库相关配置
### Mysql配置
把需要的表建出来,建议可以用DataGrip
### ODBC配置
本人使用ODBC连接的mysql,具体操作见下图
![第一步](https://user-images.githubusercontent.com/92586621/168582538-ad091af7-052b-47df-b0fe-ef8715c3b80b.png)
![第二步](https://user-images.githubusercontent.com/92586621/168582544-50a4e958-4043-40d9-b34b-fc90fbc9c581.png)
![第三步](https://user-images.githubusercontent.com/92586621/168582549-71cd62b9-61e7-405a-924c-14d35df90d3f.png)
### 需要的代码
#### pro文件
前提:创建项目选择qmake作为Build system
```c++
QT += sql // 必须要有,要不然就没有办法使用操作数据库的相关函数
```
#### .h文件
把相关函数声明出来
#### .cpp文件
函数的实现
#### 注意事项
- 建议把相关变量单独抽出来声明定义,作为配置文件使用
```c++
// .h文件
#ifndef GLOBE_H
#define GLOBE_H
#include <QObject>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
#include <QPluginLoader>
#include <QDebug>
#include <QMessageBox>
#include <QSqlRecord>
#include <string>
using namespace std;
extern QSqlDatabase db;
extern string hostname;
extern string databaseName;
extern string databaseUsername;
extern string databasePassword;
extern int port;
extern QString id;
#endif // GLOBE_H
// .cpp文件
#include "globe.h"
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
string hostname = "localhost"; // ip,写localhost就行
string databaseName = "system_db"; // 要操作的数据库名称
string databaseUsername = ""; // 登录mysql账号
string databasePassword = ""; // 登录mysql密码
int port = 3306;
```
- 建议定义一个数据库工具类
```c++
// .h文件里面声明你要用的操作数据库函数并在.cpp实现,到时候直接加载头文件调用
// 建议在析构函数中初始化,减少重复代码
utils_db::utils_db()
{
db.setHostName(QString::fromStdString(hostname));
db.setPort(3306);
db.setDatabaseName(QString::fromStdString(databaseName));
db.setUserName(QString::fromStdString(databaseUsername));
db.setPassword(QString::fromStdString(databasePassword));
bool connectState = db.open();
if (connectState){
qDebug() << "success to connect databse system_db";
}
else {
qDebug() << "fail to connect databse system_db";
}
}
```
## 如何使用相关函数
```c++
// 查询,此处介绍条件查询使用的prepare函数
QSqlQuery query(db); // 必须有
query.prepare(sql语句); // 该方法防止了sql注入,是但是需要调用addBindValue()或者bindValue()对参数参数绑定,具体使用查询代码
query.addBindValue(xx); //绑定参数
query.exec(); //执行
return query.first(); //如果返回query.exec()会出现始终返回true,所以返回query.first()
// 插入,删除,修改
与查询步骤一样,只有sql语句和返回值不一样,可以直接返回insert.exec(),如果是条件查询建议使用prepare函数
```
## 数据库查询可视化
建议使用QSqlTableModel,这个是将数据库查询所有内容按照表格样式输出到Table View这个组件上,使用前必须创建Table View组件
```c++
QSqlTableModel *model = new QSqlTableModel(this, db); // 这个是核心对象
model->setTable(要查的表);
model->setEditStrategy(QSqlTableModel::OnManualSubmit); // 实现修改完之后就可以在数据库更新,不过我没有使用
model->setHeaderData(第几列, Qt::Horizontal, model->tr(列的名称)); // 这个是设置列头的样式,有一个删除列数的方法可以删除你不想要的列,但是我忘记了
ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); // 这个设置自动调整列宽
ui->tableView->setModel(model); // 把模型传进tableView
ui->tableView->show(); // 展示
// 一些有用的方法
int row = ui->tableView->currentIndex().row(); // 获取鼠标点击表格位数的行数,可以用来获取该行相关数据,调用getVal方法
model->setFilter(QObject::tr("条件字段 = '%1'").arg(参数)); // 该方法放在ui->tableView->setModel(model)之前用来,筛选查询的数据,'%1'这个是占位符,那个数字可以位任意,多个参数直接在.arg()后面再加.arg()
```
## 提示框
```c++
QMessageBox::information(w ,w->tr(this), w->tr(提示信息)); //这个是提示框
QMessageBox::warning(this, "警告", 警告信息, QMessageBox::Yes); // 这个是警告框
// 单独抽取出来做成一个工具类可以看我的具体代码
```
**我的所有命名都是见名知意**
上面关于数据库的连接和操作以及把数据库查找出来的数据展示到表格上已经介绍的很详细了,代码里面写的也很清楚,不懂的可以直接找相关代码CV
ps:如果想设计图标可以参考下列代码
```c++
//pro文件
RC_ICONS = logo.ico // 这个logo.ico是你选择的照片的ico格式,可以直接在网上找个转换器转换就可以
```
##### 记录第一次使用Qt开发
##### 如果觉得能帮助到你的话可以给我点个star ~~
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【资源说明】 毕业设计-基于Qt和C++开发的教室预约系统源码.zip毕业设计-基于Qt和C++开发的教室预约系统源码.zip毕业设计-基于Qt和C++开发的教室预约系统源码.zip毕业设计-基于Qt和C++开发的教室预约系统源码.zip毕业设计-基于Qt和C++开发的教室预约系统源码.zip毕业设计-基于Qt和C++开发的教室预约系统源码.zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
资源推荐
资源详情
资源评论
收起资源包目录
毕业设计-基于Qt和C++开发的教室预约系统源码.zip (62个子文件)
teachermanageclassrooms.ui 3KB
adminqueryreservation.cpp 2KB
updateuser.ui 5KB
teacherqueryhisreservation.h 943B
utils_tablemodel.h 777B
teacherqueryhisreservation.ui 6KB
classroomReserve.pro 2KB
admincheckreservation.ui 3KB
teacherreserveclassroom.h 798B
admincheckreservation.cpp 1KB
utils_inform.h 343B
mainwindow.h 673B
teacherreserveclassroom.cpp 1KB
adminmenu.ui 4KB
teacherqueryhisreservation.cpp 4KB
system_db_classroom.sql 8KB
adminmanageclassrooms.h 948B
adminmanageclassrooms.ui 6KB
classroom.cpp 934B
reservation.h 526B
功能模块图解.jpg 22KB
adminmenu.h 468B
utils_inform.cpp 602B
admin.h 384B
mainwindow.cpp 2KB
admin.cpp 710B
teacher.h 384B
程序流程图.png 88KB
teacherreserveclassroom.ui 2KB
globe.h 444B
updateuser.h 746B
adminqueryreservation.h 914B
main.cpp 387B
identity.cpp 691B
mainwindow.ui 5KB
utils_tablemodel.cpp 3KB
teachermanageclassrooms.h 725B
adminqueryreservation.ui 5KB
adminmenu.cpp 827B
classroom.h 743B
adminmanageclassrooms.cpp 3KB
identity.h 508B
system_db_admin_reservation.sql 1KB
utils_db.cpp 9KB
数据库中表的相关配置.md 1KB
system_db_teacher.sql 6KB
utils_db.h 2KB
reservation.cpp 493B
globe.cpp 263B
teacher.cpp 785B
teachermenu.ui 4KB
updateuser.cpp 2KB
classroomReserve.pro.user 19KB
teachermanageclassrooms.cpp 1KB
README.md 6KB
teachermenu.cpp 648B
system_db_user_teacher.sql 3KB
admincheckreservation.h 818B
logo.ico 264KB
程序安装包.md 576B
teachermenu.h 506B
system_db_user_admin.sql 340B
共 62 条
- 1
资源评论
- m0_686600852024-03-03这个资源总结的也太全面了吧,内容详实,对我帮助很大。
Make程序设计
- 粉丝: 5623
- 资源: 3567
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功