简易学生成绩管理系统(VS+QT实战)

1、UI设计,具体效果如下:

 登录界面:

 学生信息列表汇总显示界面:

学生信息录入界面:

 2、项目结构

 需要三个ui文件,分别表示登录界面、信息展示界面、信息录入界面。三个界面分别对应三个QDialog子类。

3、代码:

SGS.h和SGS.cpp文件代码:

#pragma once

#include <QtWidgets/QDialog>
#include "ui_SGS.h"
#include<qDebug>
#include <QMessageBox>
#include "SGSlist.h"

class SGS : public QDialog
{
	Q_OBJECT

public:
	SGS(QWidget *parent = Q_NULLPTR);
	void InitConnect();
	SGSlist *sl;

private:
	Ui::SGSClass ui;

	private slots:
	void onPushButton();
};
#include "SGS.h"

SGS::SGS(QWidget *parent)
	: QDialog(parent)
{
	ui.setupUi(this);
	InitConnect();
	sl = new SGSlist;
}

void SGS::InitConnect()
{
	connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(onPushButton()));
}

void SGS::onPushButton()
{
	if (ui.lineEdit_3->text() == "abc"&&ui.lineEdit_2->text() == "123")
	{
		qDebug() << "hello";
		sl->show();
	}
	else
	{
		QMessageBox::information(this, QStringLiteral("提示"),
			QStringLiteral("账号或密码错误,请重试!"), QMessageBox::Ok);
	}
}

 SGSlist.h和SGSlist.cpp文件代码:

#pragma once

#include <QDialog>
#include "ui_SGSlist.h"
#include "SGSinfo.h"

class SGSlist : public QDialog
{
	Q_OBJECT

public:
	SGSlist(QWidget *parent = Q_NULLPTR);
	~SGSlist();

public:
	void InitConnect();
	SGSinfo *m_sinfo;

private:
	Ui::SGSlist ui;
	int k;
	int Et;

	public slots:
	void on_pushButton();
	void InsertInfo(QStringList);
	void on_pushButton_3();
	void on_pushButton_2();
	void on_pushButton_4();
};
#include "SGSlist.h"

SGSlist::SGSlist(QWidget *parent)
	: QDialog(parent),
	k(1),
	Et(0)
{
	ui.setupUi(this);
	m_sinfo = new SGSinfo;
	InitConnect();
}

SGSlist::~SGSlist()
{
}

void SGSlist::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()));//修改
	connect(ui.pushButton_4, SIGNAL(clicked()), this, SLOT(on_pushButton_4()));//查询
	connect(m_sinfo, SIGNAL(SendInsert(QStringList)), this, SLOT(InsertInfo(QStringList)));
}

void SGSlist::on_pushButton()//添加
{
	m_sinfo->show();
	m_sinfo->LClear();
}

void SGSlist::InsertInfo(QStringList str)
{
	if (Et == 0)
	{
		for (int i = 0;i < 6;i++)
		{
			QTableWidgetItem *mm;
			mm = new QTableWidgetItem;
			mm->setText(str[i]);
			ui.tableWidget->setItem(k, i, mm);
		}

		QTableWidgetItem *mm;
		mm = new QTableWidgetItem;
		int a = str[3].toInt() + str[4].toInt() + str[5].toInt();
		mm->setText(QString::number(a));
		ui.tableWidget->setItem(k, 6, mm);

		k++;
	}
	else
	{
		for (int i = 0;i < 6;i++)
		{
			QTableWidgetItem *mm;
			mm = new QTableWidgetItem;
			mm->setText(str[i]);
			ui.tableWidget->setItem(Et, i, mm);
		}

		QTableWidgetItem *mm;
		mm = new QTableWidgetItem;
		int a = str[3].toInt() + str[4].toInt() + str[5].toInt();
		mm->setText(QString::number(a));
		ui.tableWidget->setItem(Et, 6, mm);
		Et = 0;
	}
	m_sinfo->close();
}

void SGSlist::on_pushButton_3()//修改
{
	if (ui.tableWidget->currentItem())
	{
		m_sinfo->show();
		QStringList str;
		int r = ui.tableWidget->currentRow();
		for (int i = 0;i < 6;i++)
		{
			QTableWidgetItem *mm = ui.tableWidget->item(r, i);
			str << mm->text();
		}
		m_sinfo->LEdit(str);
		Et = ui.tableWidget->currentRow();
	}
	
}

void SGSlist::on_pushButton_2()//删除
{
	if (ui.tableWidget->currentItem())
	{
		ui.tableWidget->removeRow(ui.tableWidget->currentRow());
		k = k - 1;
	}
}

void SGSlist::on_pushButton_4()//查询
{
	QString ss = ui.lineEdit->text();
	if (!ss.isEmpty())
	{
		QColor cc(Qt::gray);
		QList<QTableWidgetItem*> list_1;
		list_1 = ui.tableWidget->findItems(ui.lineEdit->text(), Qt::MatchExactly);
		if (list_1.size() != 0)
		{
			int r = list_1[0]->row();
			for (int i = 0;i < 7;i++)
			{
				QTableWidgetItem *mm = ui.tableWidget->item(r, i);
				mm->setBackgroundColor(cc);
			}
		}
	}
	
}

SGSinfo.h和SGSinfo.cpp文件代码:

#pragma once

#include <QDialog>
#include "ui_SGSinfo.h"
#include<qDebug>

class SGSinfo : public QDialog
{
	Q_OBJECT

public:
	SGSinfo(QWidget *parent = Q_NULLPTR);
	~SGSinfo();
	void LClear();
	void LEdit(QStringList);

signals:
	void SendInsert(QStringList);

private:
	Ui::SGSinfo ui;

	private slots:
	void on_pushButton();
};
#include "SGSinfo.h"

SGSinfo::SGSinfo(QWidget *parent)
	: QDialog(parent)
{
	ui.setupUi(this);
	connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(on_pushButton()));
}

SGSinfo::~SGSinfo()
{
}

void SGSinfo::on_pushButton()
{
	qDebug() << "vitory";
	QStringList strList;
	strList << ui.lineEdit_3->text();//学号
	strList << ui.lineEdit_6->text();//姓名
	strList << ui.lineEdit_7->text();//性别
	strList << ui.lineEdit_2->text();//语文
	strList << ui.lineEdit->text();//数学
	strList << ui.lineEdit_4->text();//英语

	emit SendInsert(strList);
}

void SGSinfo::LClear()
{
	ui.lineEdit->clear();
	ui.lineEdit_2->clear();
	ui.lineEdit_3->clear();
	ui.lineEdit_4->clear();
	ui.lineEdit_6->clear();
	ui.lineEdit_7->clear();
}

void SGSinfo::LEdit(QStringList str)
{
	ui.lineEdit_3->setText(str[0]);
	ui.lineEdit_6->setText(str[1]);
	ui.lineEdit_7->setText(str[2]);
	ui.lineEdit_2->setText(str[3]);
	ui.lineEdit->setText(str[4]);
	ui.lineEdit_4->setText(str[5]);
}

main.cpp文件代码:

#include "SGS.h"
#include <QtWidgets/QApplication>

int main(int argc, char *argv[])
{
	QApplication a(argc, argv);
	SGS w;
	w.show();
	return a.exec();
}

4、运行界面

 录入信息:

信息录入完毕:

 单击表格选中某一单元格,点击修改按钮,进入修改界面:

 查询(搜索到记录会成灰色显示):

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值