【QT】利用QT+Sqlite数据库编写简易的学生信息管理系统
利用QT+Sqlite数据库编写简易的学生信息管理系统1.编辑uiSqliteQtDialog.h2.添加头文件#include <QDialog>#include <QSqlDatabase>#include <QSqlQuery>#include <QSqlError>#include <QMessageBox...
·
利用QT+Sqlite数据库编写简易的学生信息管理系统
1.编辑ui
SqliteQtDialog.h
2.添加头文件
#include <QDialog>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
#include <QMessageBox>
#include <QSqlQueryModel>
#include <QDebug>
3.添加函数声明
private slots:
void on_insertButton_clicked();
void on_deleteButton_clicked();
void on_modifyButton_clicked();
void on_sortButton_clicked();
private:
void createDB(void);//创建数据库
void createTable(void);//创建学生成绩表
void queryTable(void);//查询数据表
private:
Ui::SqliteQtDialog *ui;
QSqlDatabase db;//建立和qt和数据库连接
QSqlQueryModel model;//保存和遍历select结果
SqliteQtDialog.cpp
4.添加函数
#include "SqliteQtDialog.h"
#include "ui_SqliteQtDialog.h"
SqliteQtDialog::SqliteQtDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::SqliteQtDialog)
{
ui->setupUi(this);
createDB();
createTable();
//查询和显示
queryTable();
}
SqliteQtDialog::~SqliteQtDialog()
{
delete ui;
}
void SqliteQtDialog::createDB(void){//创建数据库
//建立和SQlite数据库连接
db = QSqlDatabase::addDatabase("QSQLITE");
//设置数据库文件的名称
db.setDatabaseName("menu.db");
//打开数据库
if(db.open() == false){
QMessageBox::critical(this,"DataError",
db.lastError().text());
}
}
void SqliteQtDialog::createTable(void){//创建表
//构建创建表的SQL语句
QString createSql =
QString("CREATE TABLE Student(\
id INT PRIMARY KEY NOT NULL,\
name TEXT NOT NULL,\
score REAL NOT NULL)");
QSqlQuery query;
query.exec(createSql);
}
void SqliteQtDialog::queryTable(void){//查询表
QString str = QString("SELECT * FROM Student");
model.setQuery(str);
ui->tableView->setModel(&model);
}
void SqliteQtDialog::on_insertButton_clicked()
{
QSqlQuery query;
//获取学号
int id = ui->idEdit->text().toInt();
//获取姓名
QString name(ui->nameEdit->text());
//获取成绩
double score = ui->scoreEdit->text().toDouble();
//构造sql语句
QString insertSql = QString(
"INSERT INTO Student VALUES(%1,'%2',%3);"
).arg(id).arg(name).arg(score);
qDebug() << insertSql;
//执行sql语句
query.exec(insertSql);
query.exec("commit");
//查询和显示
queryTable();
}
//删除,通过ID匹配
void SqliteQtDialog::on_deleteButton_clicked()
{
int id = ui->idEdit->text().toInt();
//构造删除sql语句
QString deleteSql = QString(
"DELETE FROM Student WHERE id=%1").arg(id);
QSqlQuery query;
query.exec(deleteSql);
//查询和显示
queryTable();
}
//修改成绩
void SqliteQtDialog::on_modifyButton_clicked()
{
QSqlQuery query;
int id = ui->idEdit->text().toInt();
double score = ui->scoreEdit->text().toDouble();
QString modifySql = QString(
"UPDATE Student SET score=%1 WHERE id=%2").
arg(score).arg(id);
qDebug() << modifySql;
query.exec(modifySql);
//查询和显示
queryTable();
}
//排序
void SqliteQtDialog::on_sortButton_clicked()
{
//获取排序关键字
QString value = ui->ValueComboBox->currentText();
//获取排序条件
QString condition;
if(ui->CondComboBox->currentIndex()){
condition = "DESC";
}
else{
condition = "ASC";
}
QString sortSql = QString(
"SELECT * FROM Student ORDER BY %1 %2").
arg(value).arg(condition);
model.setQuery(sortSql);
ui->tableView->setModel(&model);
}
5.效果

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)