学生成绩管理系统(VS+QT)--数据库版

1、UI设计:

学生成绩管理系统(VS+QT)--数据库版_第1张图片

2、项目结构图

学生成绩管理系统(VS+QT)--数据库版_第2张图片

 3、代码

.cpp文件入下:

#include "Student.h"

Student::Student(QWidget *parent)
	: QDialog(parent)
{
	ui.setupUi(this);
	InitConnect();
	CreateDB();
	CreateTable();
}

void Student::InitConnect()
{
	connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(on_pushButton()));//插入
	connect(ui.pushButton_2, SIGNAL(clicked()), this, SLOT(on_pushButton_2()));//更新
	connect(ui.pushButton_3, SIGNAL(clicked()), this, SLOT(on_pushButton_3()));//删除
}

void Student::CreateDB()
{
	// 添加数据库驱动库
	db = QSqlDatabase::addDatabase("QSQLITE");
	// 设置数据库名字(文件名)
	db.setDatabaseName("student.db");
	// 打开数据库
	if (db.open() == true) {
		qDebug() << QStringLiteral("创建/打开数据库成功!");
	}
	else {
		qDebug() << QStringLiteral("创建/打开数据库失败!");
	}
}

void Student::CreateTable()
{
	QSqlQuery query;
	//删除表
	//if (query.exec("drop table student"))
	//{
	//	qDebug() << "delete student";
	//}
	QString str = QString("CREATE TABLE student ("
		"id INTEGER PRIMARY KEY AUTOINCREMENT, "
		"name VARCHAR(40) NOT NULL, "
		" score INTEGER NOT NULL)");
	// 执行sql语句失败后打印失败语句,成功则不作处理
	if (query.exec(str) == false) 
	{
		qDebug() << query.lastError();
	}
	model = new QSqlTableModel();
	model->setTable("student");
	model->select();
	ui.tableView->setModel(model);
}

void Student::on_pushButton()//插入
{
	QSqlQuery query;
	int id = ui.lineEdit_2->text().toInt();
	QString name = ui.lineEdit_3->text();
	double score = ui.lineEdit->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() << QStringLiteral("插入数据成功");
	}
	model->select();
	ui.tableView->setModel(model);
	ui.lineEdit->clear();
	ui.lineEdit_2->clear();
	ui.lineEdit_3->clear();
}
void Student::on_pushButton_2()//更新
{
	model->select();
	ui.tableView->setModel(model);
}
void Student::on_pushButton_3()//删除
{
	int a=ui.tableView->currentIndex().row();
	a=model->data(model->index(a, 0)).toInt();
	qDebug() << a;
	QSqlQuery query;
	QString s = QString("delete from student where id='%1'").arg(a);
	if (!query.exec(s))
	{
		qDebug() << s;
	}
	model->select();
	ui.tableView->setModel(model);
}

 .h文件如下:

#pragma once

#include 
#include "ui_Student.h"

#include 
#include 
#include
#include
#include 
#include
#include 
#include


class Student : public QDialog
{
	Q_OBJECT

public:
	Student(QWidget *parent = Q_NULLPTR);
	void InitConnect();

private:
	Ui::StudentClass ui;
	QSqlDatabase db;
	QSqlTableModel *model;


	private slots:
	void on_pushButton();
	void on_pushButton_2();
	void on_pushButton_3();

private:
	void CreateDB();
	void CreateTable();
};

4、运行结果

学生成绩管理系统(VS+QT)--数据库版_第3张图片

 

你可能感兴趣的:(数据库,qt,ui)