Qt mysql版学生成绩管理系统
Posted tangbolibao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt mysql版学生成绩管理系统相关的知识,希望对你有一定的参考价值。
基于Qt的mysql版学生管理系统
Qt加载驱动博主这里用的Qt提供的QODBC
有关QODBC的使用可以访问:
https://blog.csdn.net/joey_ro/article/details/105411135
注意事项:
1.mysql和qt的位数一定要一致,要么都是32位,要么都是64位!! 2.添加ODBC的数据库源名称一定要记住
1.在可视化数据库应用中创建一个数据库,名称为student;
博主这里使用的是sqlyon
- 打开我们的ODBC,添加student数据库,具体设置如下
这里ok就行了
3.打开Qt进行ui设计
我们这里先ui设计一下前端模块
这一步大家根据自身喜好可以自己设置,然后对pushbtton按钮进行一个转到槽的操作,下面是源码:
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include<QSqlDatabase>
#include<QSqlQuery>
#include<QSqlQueryModel>
#include<QSqlError>
#include<QDebug>
#include<QMessageBox>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
private:
//创建数据库
void createDB();
//创建数据表
void ceraTabel();
//执行查询操作
void queryTabel();
private slots:
//添加
void on_add_Pusbtn_clicked();
//删除
void on_de_Pusbtn_clicked();
//修改
void on_upd_Pusbtn_clicked();
//排序
void on_sort_Psbton_clicked();
private:
Ui::Widget *ui;
QSqlDatabase db; //建立和数据库的连接
QSqlQueryModel model; //保存结果集
};
#endif // WIDGET_H
4.构造函数的执行
//这个是固定窗口的大小,根据自身需求可以保留或者去掉
this->setFixedSize(this->width(),this->height());
//创建数据库
this->createDB();
//创建数据表
this->ceraTabel();
//显示成员
this->queryTabel();
//构造函数加这么几句话就行了
5.接下来是模块化的编写,第一步,连接数据库,createDB模块编写
this->db = QSqlDatabase::addDatabase("QODBC");
//这里的2代表着刚刚在OBDC中设置的数据库源名称
db.setDatabaseName("2");
//打开数据库
if(db.open()==true)
{
qDebug()<<"数据库连接成功";
}
else
{
qDebug()<<"数据库连接失败";
}
//这里只会连接成功一次,不会重复连接,二次操作会失败,属于正常现象
6.创建数据表 ceraTabel模块
//QSqlQuery是Qt执行mysql语句的类
QSqlQuery query;
QString str = QString ("CREATE TABLE student("
"id INT PRIMARY KEY NOT NULL,"
"name TEXT NOT NULL,"
"sorce REAL NOT NULL)");
if(query.exec(str)==false)
{
qDebug()<<"str";
}
else
{
qDebug()<<"创建成功";
}
7.执行查询语句 queryTabel模块
QString str = QStringLiteral("SELECT * FROM student");
//储存查询表结果集
model.setQuery(str);
//在tableView控件中显示
ui->tableView->setModel(&model);
8.添加信息 on_add_Pusbtn_clicked模块
QSqlQuery query;
int id = ui->iD_Edit->text().toInt();
if(id==0)
{
QMessageBox::critical(this,"Error","学号输入错误");
return;
}
QString name = ui->name_Edit->text();
if(name=="")
{
QMessageBox::critical(this,"Error","姓名输入错误");
return;
}
double score = ui->sorce_Edit->text().toDouble();
if(score>100||score<0)
{
QMessageBox::critical(this,"Error","成绩输入错误");
return;
}
QString str = QString("INSERT INTO student VALUES(%1,'%2',%3)"
).arg(id).arg(name).arg(score);
if(query.exec(str)==false)
{
qDebug()<<str;
}
else
{
qDebug()<<"执行插入数据成功!!";
queryTabel();
}
9.删除信息 on_de_Pusbtn_clicked模块
QSqlQuery query;
int id = ui->iD_Edit->text().toInt();
QString str = QString("DELETE FROM student WHERE id=%1").arg(id);
if(QMessageBox::question(
this,"删除","确定删除吗?",QMessageBox::Yes|QMessageBox::No)==QMessageBox::No)
{
return;
}
if(query.exec(str)==false)
{
qDebug()<<str;
}
else
{
qDebug()<<"删除成功";
}
this->queryTabel();
10.修改信息 on_upd_Pusbtn_clicked 模块
//这里我们只需要在学号和成绩处修改就行了,先识别学号,然后对成绩做出修改的这么一个逻辑
QSqlQuery query;
int id =ui->iD_Edit->text().toInt();
double score = ui->sorce_Edit->text().toDouble();
QString str = QString("UPDATE student SET sorce=%1 WHERE id=%2").arg(score).arg(id);
if(query.exec(str)==false)
{
qDebug()<<str;
}
else
{
qDebug()<<"修改成功";
}
this->queryTabel();
11.排序模块
QString value ="学号";
if(value=="学号")
{
value="id";
}
else
{
value="sorce";
}
QString condition;
if(ui->sort_Combox->currentIndex() == 0)
{
condition = "ASC";
}
else
{
condition = "DESC";
}
QString str = QString("SELECT * FROM student ORDER BY %1 %2").arg(value).arg(condition);
qDebug()<<value;
model.setQuery(str);
ui->tableView->setModel(&model);
以上,是学生成绩管理系统的整体模块和编程思想,有问题欢迎和博主一起讨论!!
以上是关于Qt mysql版学生成绩管理系统的主要内容,如果未能解决你的问题,请参考以下文章
mysql版 查询各科成绩前三名的记录:(不考虑成绩并列情况)
基于java eclipse+jsp+mysql+servlet+Spring的学生信息管理系统基础版建议收藏