QT学生信息管理系统源代码

该博客介绍了使用QT框架开发的学生信息管理系统,涉及到的文件包括管理员管理、消息、数据库连接等多个模块的头文件和实现文件,如Addadmin、Administrators、MysqlDB等。此外,还提及了可视化布局的应用和部分代码组织结构。
摘要由CSDN通过智能技术生成

部分窗口用到了可视化布局(头文件里有Ui::的),还有就是起名有点乱,先是头文件,具体实现功能可以看我的另一篇博文

Addadmin.h

#ifndef _ADDADMIN_H_
#define _ADDADMIN_H_
//管理员账号添加窗口


#include <QWidget>
#include <QSqlQuery>
#include <QSqlDataBase>
#include <QMessageBox>
#include "ui_Addadmin.h"


class Addadmin : public QWidget
{
	Q_OBJECT


public:
	Addadmin(QWidget *parent = Q_NULLPTR);
	~Addadmin();
	Ui::Addadmin ui;//ui设为publi可让外部修改窗口相关内容,add_id跟goback为添加跟返回按钮,line_id跟line_pw为账号密码输入栏
signals:
	void add_success();//添加成功后会发送该信号
private:
	void add_into();//把管理员账号添加到数据库的表中
};


#endif // !_ADDADMIN_H_

Administrators.h

#include <QDebug>
#include "MysqlDB.h"
#include "QStuResign.h"
#include "Resetpw.h"
#include "QStudentIM.h"
#include "Message.h"

class Administrators : public QMainWindow
{
	Q_OBJECT

public:
	Administrators(QString admin_id, QWidget *parent = Q_NULLPTR);
	//在登录后,会把账号栏的账号传入到该构造函数,用于密码修改时作为判断条件

signals:
	void closewin();//在调用修改密码窗口的时候,与密码修改窗口(子窗口)的关闭connect起来

private:
	void saveItem();//保存当前你表格的内容,表格内容部分可双击编辑,直接编辑之后需要点击保存来调用该方法进行保存
	void createRow();//创建新的学生信息
	void deleteRow();//删除学生信息
	void editRow();//编辑学生信息
	void serchRow();//打开搜索窗口
	void sendMes();//发送消息(公告)
	void reflash();//刷新,搜索后可点刷新来恢复
	void resetPw();//打开修改密码的窗口
	void exitTable();//返回到登录界面
	void changeKey(QString pw_old, QString pw_new);//调用该方法来修改密码
	void lookFor(QVariantMap rowdata);//获取搜索窗口输入的内容,并且进行搜索
	void readsql(QList<QStringList>);//读取Qlist<QStringList>容器里的内容到表格
	MysqlDB link;//用来访问“读取数据库”的方法
	QTableWidget * table;//表格,在这里声明是为了让其他方法能够对表格进行修改
	QString admin_id;//用于储存传入构造函数的参数
};

#endif

Message.h

#ifndef _MESSAGE_H_
#define _MESSAGE_H_
//用于发布消息的窗口

#include <QMainWindow>
#include "ui_Message.h"
#include "MysqlDB.h"

class Message : public QMainWindow
{
	Q_OBJECT

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

private:
	void sendMes();//发布消息,跟按钮的按下信号相连接
	void setLine(int index);//与combobox的activated信号相连接,获取combobox当前
				//的选项,若为“所有学生”则关闭lineEdit的输入
	Ui::Message ui;//com_sendto为combobox组件,pushbutton为发布消息按钮,l_message为要学号输入栏,t_message为消息输入栏
};

#endif // !_MESSAGE_H_

MysqlDB.h

#ifndef _MYSQLDB_H_
#define _MYSQLDB_H_
//链接数据库

#include <QStringList>
#include <QVariantMap>
#include <QList>
#include <QMessageBox>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
#include <QPluginLoader>
#include <QDebug>
#include <QMessageBox>
#include <QObject>
#include <fstream>
#include <String>

class MysqlDB :public QObject{
	Q_OBJECT

public:
	MysqlDB();

	void initDB();//连接数据库

	QList<QStringList> selectfrom();//读取数据库的student表的所有信息并返回

signals:
	void link_fail();//连接失败时发送该信号
};

#endif // !_MYSQLDB_H_

QStudentIM.h

#ifndef _QSTUDENTIM_H_
#define _QSTUDENTIM_H_
//登录界面

#include <QtWidgets/QMainWindow>
#include <QLineEdit>
#include <QPushButton>
#include <QRadioButton>
#include <QStringList>
#include <QLabel>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QSpacerItem>
#include <QBitmap>
#include <QMouseEvent>
#include "StudentPort.h"
#include "QStuResign.h"
#include "Administrators.h"
#include "Addadmin.h"

class QStudentIM : public QMainWindow
{
	Q_OBJECT

public:
	QStudentIM(QWidget *parent = Q_NULLPTR);
	void myshow();//在执行show之前先检测数据库里是否有管理员表以及账户密码,没有则提示首
					//次使用,并弹出管理员账户添加窗口

private:
	void login_sys();//登录按钮相连的方法,检测账号密码并登录
	void button_clear(bool);//清空账号、密码栏的内容
	void resign();//打开注册窗口
	void setwin_mini(bool);//窗口最小化
	void setwin_quit(bool);//窗口关闭
	void mousePressEvent(QMouseEvent *event);//重写鼠标按下事件,用于移动窗口
	void mouseMoveEvent(QMouseEvent *event);//鼠标移动事件
	void mouseReleaseEvent(QMouseEvent *event);//鼠标松开事件
	QWidget * widget;//centerWidget,mainWindow设透明,widget添加背景即可自定义不规则窗口
	QLineEdit * id;//账号输入栏
	QLineEdit * password;//密码输入栏
	QPushButton * login;//登录按钮
	QPushButton * clear;//重置按钮
	QPushButton * enroll;//注册按钮
	QRadioButton * Admin;//管理员(单选)
	QRadioButton * Student;//学生
	QPushButton * win_mini;//最小化按钮
	QPushButton * win_quit;//退出按钮
	QPoint last;//配合鼠标事件重写,用于储存按下后的坐标位置
};

#endif // !_QSTUDENTIM_H_

QStuResign.h

#ifndef _QSTURESIGN_H_
#define _QSTURESIGN_H_
//注册、添加、修改、搜索共用窗口

#include <QMainWindow>
#include "ui_QStuResign.h"
#include "MysqlDB.h"
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QMessageBox>

class QStuResign : public QMainWindow
{
	Q_OBJECT
//line_num、line_pw、line_name、com_sex、line_col、line_maj分别为学号、密码、姓名、性别选择、学院、专业输入栏
public:
	QStuResign(QWidget *parent = Q_NULLPTR);
	~QStuResign();
	Ui::QStuResign ui;//public方便外部修改。enroll、clear、goback为注册窗口下方三个按钮
	QString temp;//用于储存“注册”、“添加”或“搜索”
	QString firstId;//用于储存最开始的账号,修改学生账号的时候用于条件判断
signals:
	void get_message(QVariantMap rowdata);//发送所有输入信息
signals:
	void addSuccess();//添加成功后发出信号
private:
	void get_mes();//获取所有输入信息
	void set_null();//清空所有lineEdit
	void goback();//返回(其实并没有定义)
	void insert_sql(QVariantMap rowdata);//插入信息到输入库的student表

};

#endif // !_QSTURESIGN_H_

Readmes.h

#ifndef _READMES_H_
#define _READMES_H_
//学生读取消息的窗口

#include <QMainWindow>
#include "ui_Readmes.h"

class Readmes : public QMainWindow
{
	Q_OBJECT

public:
	Readmes(QWidget *parent = Q_NULLPTR);
	~Readmes();
	Ui::Readmes ui;//方便外部修改,pushbutton为“已读”按钮

//private:
};

#endif // !_READMES_H_

Resetpw.h

#ifndef _RESETPW_H_
#define _RESETPW_H_
//学生以及管理员修改密码用的窗口

#include <QMainWindow>
#include <QMessageBox>
#include "ui_Resetpw.h"

class Resetpw : public QMainWindow
{
	Q_OBJECT
public:
	Resetpw(QWidget *parent = Q_NULLPTR);
	~Resetpw();
	Ui::Resetpw ui;//方便修改、pw_now、pw_new为当前密码以及新密码的输入栏,pushbutton为确认修改按钮
signals:
	void sendtext(QString pw_old, QString pw_new);//发送所输入的新旧密码
private:
	void send();//获取输入的新旧密码并发送
};

#endif // !_RESETPW_H_

StudentPort.h

#include <QToolBar>
#include "MysqlDB.h"
#include "Resetpw.h"
#include "Readmes.h"
#include "QStudentIM.h"

class StudentPort : public QMainWindow
{
	Q_OBJECT

public:
	StudentPort(QString id,QWidget *parent = Q_NULLPTR);//传入id用于修改时作为判断条件
signals:
	void closewin();//密码修改成功后发送该信号,与密码修改窗口的关闭相连接
private:
	void sava_data();//保存用户做出的修改
	void change_sex();//改变性别
	void resetPw();//打开密码修改窗口
	void change_key(QString pw_old, QString pw_new);//修改密码
	void check_mes();//检查是否有未读消息,有则会显示强迫症小红点
	void readmes();//读取消息
	void afterRead();//把状态改为已读,取消小红点
	void reflash();//刷新
	void exitTable();//返回到登录界面
	MysqlDB link;//用于调用读取student表的方法
	QString stu_id;//用于储存最开始的账号(刚登陆时)
	QTableWidget * table;//表格组件
	QAction *read_mes;//读取消息的动作,声明在这里是为了方便方法对其图标进行更改
};

#endif // !_STUDENTPORT_H_

Addadmin.cpp

#include "Addadmin.h"

Addadmin::Addadmin(QWidget *parent)
	: QWidget(parent)
{
	ui.setupUi(this);
	connect(ui.add_id, &QPushButton::clicked, this, &Addadmin::add_into);
	setAttribute(Qt::WA_DeleteOnClose);
}

void Addadmin::add_into() {
	QString id = ui.line_id->text();
	QString pw = ui.line_pw->text();
	QSqlQuery info;
	QString sql = QString("insert into admin(id,pw) value('%1','%2')").arg(id).arg(pw);
	bool result = info.exec(sql);
	if (id == NULL || pw == NULL) {
		result = false;
	}
	if (result) {
		emit add_success();
		this->close();
		QMessageBox::information(this, u8"提示", u8"添加成功");
	}
	else {
		QMessageBox::information(this, u8"提示", u8"添加失败");
	}
}

Addadmin::~Addadmin()
{
}

Administrators.cpp

#i
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值