#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
m_dlgLogin.show(); //显示登录界面
auto f=[&]()
{
this->show();
};
connect(&m_dlgLogin,&Page_Login::sendLoginSuccess,this,f);
setWindowTitle("学生信息管理系统");
// 设置输入框提示信息
ui->select_param_edit->setToolTip("查询支持模糊查询,输入姓名或者学号关键词即可");
// 设置列表第一列宽度100
ui->information_tableWidget->setColumnWidth(0,100);
// 设置列表自动填充满窗口
ui->information_tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
// 设置列表列头
ui->information_tableWidget->setColumnCount(7);
ui->information_tableWidget->setHorizontalHeaderItem(0, new QTableWidgetItem("*选择栏"));
ui->information_tableWidget->setHorizontalHeaderItem(1, new QTableWidgetItem("序号 "));
ui->information_tableWidget->setHorizontalHeaderItem(2, new QTableWidgetItem("姓名"));
ui->information_tableWidget->setHorizontalHeaderItem(3, new QTableWidgetItem("学号"));
ui->information_tableWidget->setHorizontalHeaderItem(4, new QTableWidgetItem("学院"));
ui->information_tableWidget->setHorizontalHeaderItem(5, new QTableWidgetItem("年龄"));
ui->information_tableWidget->setHorizontalHeaderItem(6, new QTableWidgetItem("性别"));
db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("my.db");
if(db.open())
{
qDebug()<<"打开成功";
}
QString createSql = "create table student(id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,studentName VARCHAR(30),studentNumber VARCHAR(30),"
"studentCollege VARCHAR(30),studentAge VARCHAR(30),studentSex VARCHAR(30))";
qDebug()<<createSql;
QSqlQuery query;
if(query.exec(createSql))
{
qDebug()<<"创建成功";
} else {
qDebug()<<"创建失败,表或已存在";
}
// 刷新表格数据
tableReflash();
// 隐藏工具栏和状态栏
this->statusBar()->hide();
ui->mainToolBar->setVisible (false);
}
MainWindow::~MainWindow()
{
delete ui;
}
// 添加按钮点击事件
void MainWindow::on_add_pushButton_clicked()
{
insertDialog* student_insert = new insertDialog(this);
student_insert->setAttribute(Qt::WA_DeleteOnClose); // 关闭时销毁对象
student_insert->setModal(true); // 设置为模态窗口,即窗口打开后只能该修改界面操作,不能在其他窗口进行操作,保证操作时的唯一性
student_insert->show();
}
// 修改按钮点击事件
void MainWindow::on_change_pushButton_clicked()
{
int rowCount = ui->information_tableWidget->rowCount();
QList<int> ids;
for(int row = 0;row<rowCount;row++) {
QTableWidgetItem * item = ui->information_tableWidget->item(row,0);
Qt::CheckState status = item->checkState();
if(status == Qt::CheckState::Checked) {
QLineEdit* idItem = (QLineEdit*) ui->information_tableWidget->cellWidget(row, 1);
ids.append(idItem->text().toInt());
}
}
if(ids.isEmpty()) {
QMessageBox::information(this,"提示","请先勾选要修改的行");
return;
}
if(ids.size() > 1) {
QMessageBox::information(this,"提示","修改时只能勾选单行数据");
return;
}
updateDialog* student_update = new updateDialog(this);
student_update->setAttribute(Qt::WA_DeleteOnClose); // 关闭时销毁对象
student_update->setModal(true); // 设置为模态窗口,即窗口打开后只能该修改界面操作,不能在其他窗口进行操作,保证操作时的唯一性
student_update->load(ids.at(0));
student_update->show();
}
// 删除按钮点击事件
void MainWindow::on_delete_pushButton_clicked()
{
deleteStudent();
}
// 查询按钮点击事件
void MainWindow::on_refer_pushButton_clicked()
{
selectStudent();
}
// 设置单元格信息
void MainWindow::cellSetting(int row, int column, QString text)
{
QLineEdit* lineEdit = new QLineEdit(text);
lineEdit->setStyleSheet("border: 0px;color:black"); // 设置该输入框无边框,黑色字体
// 设置只读
lineEdit->setReadOnly(true);
ui->information_tableWidget->setCellWidget(row, column, lineEdit);
}
// 删除学生信息
void MainWindow::deleteStudent()
{
int rowCount = ui->information_tableWidget->rowCount();
QList<int> ids;
for(int row = 0;row<rowCount;row++) {
QTableWidgetItem * item = ui->information_tableWidget->item(row,0);
Qt::CheckState status = item->checkState();
if(status == Qt::CheckState::Checked) {
QLineEdit* idItem = (QLineEdit*) ui->information_tableWidget->cellWidget(row, 1);
ids.append(idItem->text().toInt());
}
}
if(ids.isEmpty()) {
QMessageBox::information(this,"提示","请先勾选要删除的行");
return;
}
qDebug()<<"删除数据ids: "<<ids;
QString idsStr = "";
for(int i = 0;i< ids.size();i++) {
if(i == 0) {
idsStr = idsStr + QString::number(ids.at(i));
} else {
idsStr = idsStr + ","+QString::number(ids.at(i));
}
}
QString sql = "delete from student where id in(" + idsStr + ")";
qDebug()<<sql;
QSqlQuery query;
if(query.exec(sql)) {
// 刷新表格
tableReflash();
QMessageBox::information(this,"成功","删除成功");
} else {
QMessageBox::information(this,"失败","删除失败");
}
}
// 查询学生信息
void MainWindow::selectStudent()
{
QString searchParam = ui->select_param_edit->text().trimmed();
if(searchParam.isEmpty()) {
tableReflash();
return;
}
tableReflash(QString("select id,studentName,studentNumber,studentCollege,studentAge,studentSex from student where studentName like \"%1%2\" or studentNumber like \"%3%4\"")
.arg(searchParam,"%",searchParam,"%"));
}
// 刷新表格数据
void MainWindow::tableReflash(QString selectSql)
{
// 先移除表格所有行
for(int row = ui->information_tableWidget->rowCount() - 1;row >= 0; row--)
{
ui->information_tableWidget->removeRow(row);
}
// 查询数据添加到表格
QSqlQuery query;
if(selectSql.isEmpty()) {
QString sql = "select id,studentName,studentNumber,studentCollege,studentAge,studentSex from student order by id desc";
qDebug()<<sql;
query.exec(sql);
} else {
qDebug()<<selectSql;
query.exec(selectSql);
}
int row =0;
while(query.next())
{
int index_row =ui->information_tableWidget->rowCount();
ui->information_tableWidget->setRowCount(index_row+1);
// 第一列插入复选框
QTableWidgetItem *check = new QTableWidgetItem();
check->setCheckState(Qt::Unchecked);
check->setFlags(check->flags() ^ Qt::ItemIsEditable);
ui->information_tableWidget->setItem(row,0,check); //插入复选框
cellSetting(row,1, query.value(0).toString());
cellSetting(row,2, query.value(1).toString());
cellSetting(row,3, query.value(2).toString());
cellSetting(row,4, query.value(3).toString());
cellSetting(row,5, query.value(4).toString());
cellSetting(row,6, query.value(5).toString());
qDebug()<<query.value(0).toString()<<","<<query.value(1).toString()<<","<<query.value(2).toString()<<
","<<query.value(3).toString()<<","<<query.value(4).toString()<<","<<query.value(5).toString();
row++;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
基于QT的学生信息管理系统
共16个文件
cpp:5个
h:4个
ui:4个
需积分: 42 23 下载量 197 浏览量
2022-10-10
00:38:30
上传
评论 2
收藏 25KB RAR 举报
温馨提示
基于QT的学生信息管理系统 主要技术:QT5.14和SQLite3 主要内容:本项目分为登录界面,管理员界面,用户界面等界面。使用QStackedLayout实现页 面布局及切换,pushbutton、line edit、label、tablewidget等控件完成窗口的相应布置。将用户信息和学生信息存入到数据库中,通过tablewidget展示信息,管理员界面可以对用户信息 和学生信息增删改查。用户界面可以对自身信息进行修改,对学生信息查询。
资源详情
资源评论
资源推荐
收起资源包目录
4.基于Qt的学生信息管理系统.rar (16个子文件)
StdMgsystem.rar 12KB
StdMgsystem
StdMgsystem.pro 612B
page_login.ui 5KB
StdMgsystem.pro.user 23KB
updatedialog.h 518B
page_login.cpp 749B
updatedialog.ui 3KB
updatedialog.cpp 3KB
main.cpp 185B
mainwindow.ui 2KB
insertdialog.ui 2KB
page_login.h 456B
insertdialog.h 405B
mainwindow.cpp 8KB
mainwindow.h 1KB
insertdialog.cpp 2KB
共 16 条
- 1
এ᭄星辰
- 粉丝: 27
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0