该项目主要运用QT数据库功能实现对学生成绩的增删改查以及排序功能
开发工具:Qt Creator + sqlite
操作系统:linux
项目展示
1.界面设计
运用Qt中的designer进行相应的界面设计。
id键位:为QComboBox类型其作用为选择排序的对象,例如依照id和成绩进行拍寻
ascending sort键位:为QComboBox类型其作用为选择排序的方式,例如重大到小或者从小到大。
RANK键位:为QPushButton类型其作用为确定刚才选择的排序模式。
中间的这片空白为:QTableview类型,为展示学生成绩信息。
ID,name,score对应的文本框:为QLineEdit类型分别为接受用户输入的ID,name,score的数据
INSERT键:为QPushButton类型是插入按钮点击此键将把上面 输入的学生信息插入搭配数据库中。
DELETE键:为QPushButton类型是删除按钮在上面的ID一栏输入ID号将删除指定Id的学生信息。
UPFATE键:为QPushButton类型是更改按钮输入对应学生ID对相应学生信息进行更改。
头文件代码展示
#ifndef STUDENTDIALOG_H
#define STUDENTDIALOG_H
#include <QDialog>
#include<QSqlDatabase>
#include<QSqlQuery>
#include<QSqlQueryModel>
#include<QSqlError>
#include<QDebug>
namespace Ui {
class StudentDialog;
}
class StudentDialog : public QDialog
{
Q_OBJECT
public:
explicit StudentDialog(QWidget *parent = 0);
~StudentDialog();
private:
//创建数据库
void createDB();
//创建数据表
void createTable();
//查询数据
void queryTable();
private slots:
//插入按钮对应的槽函数(INSERT键)
void on_insertButton_clicked();
//删除按钮对应的槽函数(DELETE键)
void on_deleteButton_clicked();
//更改按钮对应的槽函数(UPFATE键)
void on_updataButton_clicked();
//排序按钮对应的槽函数(RANK键位)
void on_sortButton_clicked();
private:
Ui::StudentDialog *ui;
QSqlDatabase db; //建立Qt与数据库连接
QSqlQueryModel model; //储存查询结果集
};
#endif // STUDENTDIALOG_H
在项目模块加入sql
原来文件代码展示
#include "studentdialog.h"
#include "ui_studentdialog.h"
StudentDialog::StudentDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::StudentDialog)
{
ui->setupUi(this);
createDB();
createTable();
queryTable();
}
StudentDialog::~StudentDialog()
{
delete ui;
}
//创建数据库
void StudentDialog:: createDB()
{
//添加驱动
db=QSqlDatabase::addDatabase("QSQLITE");
//设置数据库名称
db.setDatabaseName("student.db");
//打开数据库并1进行判断
if(db.open()==true)
{
qDebug()<<"1 ok!";
}
else{
qDebug()<<"faile";
}
}
//创建数据表
void StudentDialog:: createTable()
{
//创建数据表
QSqlQuery query=QSqlQuery (db);
QString str=QString("CREATE TABLE student (id INT PRIMARY KEY NOT NULL,name TEXT NOT NULL, score REAL NOT NULL);");
//执行创建语句并判断
if(query.exec(str)==false){
qDebug()<<str;
}
else{
qDebug()<<"ok!";
}
}
//查询
void StudentDialog:: queryTable()
{
QString str=QString("SELECT * FROM student;");
//查询并把查询结果赋值给model
model.setQuery(str);
//j将查询结果在在tabelView中展示
ui->tableView->setModel(&model);
ui->tableView->show();
}
/插入槽函数
void StudentDialog::on_insertButton_clicked()
{
QSqlQuery query= QSqlQuery (db);
//获得用户输入的ID
int id=ui->idEdit->text().toInt();
//获得用户输入的姓名
QString name=ui->nameEdit->text();
//获得用户输入的成绩
double score=ui->scoreEdit->text().toDouble();
//执行插入操作并判断插入是否成功
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()<<"ok!";
//插入成功再次调用查询操作展示插入结果
queryTable();
}
}
//删除槽函数
void StudentDialog::on_deleteButton_clicked()
{
QSqlQuery query;
//获得用户输入的ID根据ID进行删除
int id=ui->idEdit->text().toInt();
QString str=QString("DELETE FROM student WHERE id=%1").arg(id);
//执行删除操作
query.exec(str);
queryTable();
}
//更改槽函数
void StudentDialog::on_updataButton_clicked()
{
QSqlQuery query;
//获取用户更改成绩对象的Id更具id修改用户成绩
int id=ui->idEdit->text().toInt();
double score=ui->scoreEdit->text().toDouble();
QString str=QString("UPDATE student SET score=%1 WHERE id=%2").arg(score).arg(id);
query.exec(str);
queryTable();
}
//排序确认槽函数
void StudentDialog::on_sortButton_clicked()
{
QSqlQuery query;
//获得用户排序的对象
QString value=ui->valuecomboBox_2->currentText();
//获得用户排序的方式
QString condition;
if(ui->condcomboBox->currentIndex()==0)
{
condition="ASC";//升序
}
else
{
condition="DESC";//降序
}
QString str=QString("SELECT * FROM student ORDER BY %1 %2").arg(value).arg(condition);
model.setQuery(str);
ui->tableView->setModel(&model);
queryTable();
}
main函数代码展示
#include "studentdialog.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
StudentDialog w;
w.show();
return a.exec();
}