#include "studialog.h"
#include "ui_studialog.h"
StuDialog::StuDialog(QWidget *parent)
: QDialog(parent)
, ui(new Ui::StuDialog)
{
ui->setupUi(this);
createDB();
createTable();
queryTable();
}
StuDialog::~StuDialog()
{
delete ui;
}
// 创建数据库
void StuDialog::createDB()
{
// 添加数据库驱动库
db = QSqlDatabase::addDatabase("QSQLITE");
// 设置数据库名字(文件名)
db.setDatabaseName("student.db");
// 打开数据库
if (db.open() == true) {
qDebug() << "创建/打开数据库成功!";
}
else {
qDebug() << "创建/打开数据库失败!";
}
}
// 创建数据表
void StuDialog::createTable()
{
QSqlQuery query;
QString str = QString("CREATE TABLE student ("
"id INT PRIMARY KEY NOT NULL,"
"name TEXT NOT NULL,"
"score REAL NOT NULL)");
// 执行sql语句失败后打印失败语句,成功则不作处理
if(query.exec(str) == false) {
qDebug() << str;
}
}
// 查询
void StuDialog::queryTable()
{
QString str = QString("SELECT * FROM student");
model.setQuery(str);
ui->tableView->setModel(&model);
}
// 插入操作对应的槽函数
void StuDialog::on_insert_button_2_clicked()
{
QSqlQuery query;
int id = ui->id_edit->text().toInt();
if(id == 0) {
QMessageBox::critical(this, "Error", "ID输入错误!");
return;
}
QString name = ui->name_edit->text();
if(name == "") {
QMessageBox::critical(this, "Error", "姓名输入错误!");
return;
}
double score = ui->score_edit->text().toDouble();
if(score < 0 || score > 100) {
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() << "插入数据成功!";
queryTable();
}
}
// 删除操作对应的槽函数:根据ID删除一条数据
void StuDialog::on_delete_button_clicked()
{
QSqlQuery query;
int id = ui->id_edit->text().toInt();
QString str = QString("DELETE FROM student WHERE id = %1").arg(id);
if(query.exec(str) == false) {
qDebug() << str;
}
else {
qDebug() << "删除数据成功!";
queryTable();
}
}
// 修改操作对应的槽函数:根据ID修改成绩
void StuDialog::on_update_button_clicked()
{
QSqlQuery query;
int id = ui->id_edit->text().toInt();
double score = ui->score_edit->text().toDouble();
QString str = QString("UPDATE student SET score = %1 WHERE id = %2").arg(score).arg(id);
if(query.exec(str) == false) {
qDebug() << str;
}
else {
qDebug() << "修改数据成功!";
queryTable();
}
}
// 排序操作对应的槽函数
void StuDialog::on_sort_button_clicked()
{
// 获取排序列名
QString value = ui->value_comboBox->currentText();
// 获取排序方式
QString condition;
if(ui->cond_comboBox->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);
}
没有合适的资源?快使用搜索试试~ 我知道了~
根据视频制作的一个Qt学生成绩管理系统,在linux环境下运用了sqlite3数据库实现的这个,目前没有测试windows平台的
共6个文件
cpp:2个
h:1个
ui:1个
需积分: 10 0 下载量 77 浏览量
2022-07-18
10:41:15
上传
评论
收藏 6KB ZIP 举报
温馨提示
根据视频制作的一个Qt学生成绩管理系统,在linux环境下运用了sqlite3数据库实现的这个,目前没有测试windows平台的
资源详情
资源评论
资源推荐
收起资源包目录
Student.zip (6个子文件)
Student
studialog.h 992B
main.cpp 170B
studialog.ui 4KB
studialog.cpp 3KB
Student.pro.user 22KB
Student.pro 991B
共 6 条
- 1
herb.dr
- 粉丝: 167
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0