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

1、UI设计:

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 <QtWidgets/QDialog>
#include "ui_Student.h"

#include <QtCore/QCoreApplication>
#include <QtSql>
#include<QSqlDatabase>
#include<QSqlQuery>
#include <QSqlError>
#include<QSqlTableModel>
#include <QSqlRecord>
#include<qDebug>


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、运行结果

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值