感受 :
这是本人在继C++之后,自学QT做的一个比较完整的项目,在这之中遇到过好多问题。好在查看了帮助文档,和网上查找都一一解决,经历这次的项目练习,我比之初接触QT更加深入的了解和掌握了更多的知识。所以要多加练习才能勤能补拙。
程序实现概况:
这次的项目是一个基于QT/C++的学生信息管理系统,学生属性有(name,age,sex,phone,colleage,address,hobby)应用程序包括7个界面,分别为(登录界面,注册界面,功能选择界面,添加学生界面,查看学生信息界面,删除学生信息界面,修改学生信息界面)。
实现代码:
Logoininterface.h
#pragma once
#include <QtWidgets/QMainWindow>
#include <qpixmap.h>
#include <qstring.h>
#include <qfile.h>
#include <qdebug.h>
#include <qmessagebox.h>
#include "ui_Logininterface.h"
#include "menu.h"
#include "newuser.h"
class Logininterface : public QMainWindow
{
Q_OBJECT
public:
Logininterface(QWidget *parent = Q_NULLPTR);
private slots:
int _login();//登录
int _newuser();//注册新用户
private:
Ui::LogininterfaceClass ui;
menu m;
newuser n;
QString inputaccount;
QString inputpassward;
};
Logininterface.cpp
#include "Logininterface.h"
Logininterface::Logininterface(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
//设置背景
QPixmap pixmap("F:\\vs2017\\Logininterface\\Logininterface\\image\\loginbackground.jpg");
QPalette palette;
palette.setBrush(backgroundRole(), QBrush(pixmap));
setPalette(palette);
//this->ui->flagface->setPixmap(QPixmap(":/image/flagdog.png"));
connect(this->ui.login, SIGNAL(clicked(bool)), this, SLOT(_login()));
connect(this->ui.newuser, SIGNAL(clicked(bool)), this, SLOT(_newuser()));
}
//登录
int Logininterface::_login()
{
int value = 0;
QString linedata;
QMessageBox mes;
inputaccount = this->ui.account_number->text();
inputpassward = this->ui.passward->text();
QString userinput_account = inputaccount + "&" + inputpassward;
QFile file("accountinformation.txt");
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
{
return 0;
}
QTextStream in(&file);
while (!in.atEnd())
{
linedata = in.readLine();
//qDebug() << linedata;
if (linedata == userinput_account)
{
value++;
this->hide();
m.show();
}
}
if (value == 0)
{
mes.setWindowTitle("提示!!");
mes.setText("账号有误,重新输入!!");
mes.exec();
this->ui.account_number->clear();
this->ui.passward->clear();
}
file.close();
return 0;
}
//注册新用户
int Logininterface::_newuser()
{
this->hide();
n.show();
n.exec();
this->show();
return 0;
}
newuser.h
#pragma once
#ifdef WIN32
#pragma execution_character_set("utf-8")
#endif
#include <QDialog>
#include <qpixmap.h>
#include <qlineedit.h>
#include <qmessagebox.h>
#include <qfile.h>
#include <qtextstream.h>
#include "ui_newuser.h"
class newuser : public QDialog
{
Q_OBJECT
private slots:
int _okinformation();//确认信息
int _noinformation();//取消保存
int _return();//返回
public:
newuser(QWidget *parent = Q_NULLPTR);
~newuser();
private:
Ui::newuser ui;
};
newuser.cpp
#include "newuser.h"
newuser::newuser(QWidget *parent)
: QDialog(parent)
{
ui.setupUi(this);
//设置背景
QPixmap pixmap("F:\\vs2017\\Logininterface\\Logininterface\\image\\newuserbackground.jpg");
QPalette palette;
palette.setBrush(backgroundRole(), QBrush(pixmap));
setPalette(palette);
connect(this->ui.ok, SIGNAL(clicked(bool)), this, SLOT(_okinformation()));
connect(this->ui.no, SIGNAL(clicked(bool)), this, SLOT(_noinformation()));
connect(this->ui.reTurn, SIGNAL(clicked(bool)), this, SLOT(_return()));
}
newuser::~newuser()
{
}
//实现
//取消保存
int newuser::_noinformation()
{
this->ui.newaccount->clear();
this->ui.newpassward->clear();
this->ui.confirmaccount->clear();
this->ui.confirmpassward->clear();
return 0;
}
//确认账号信息
int newuser::_okinformation()
{
int value = 0;
QMessageBox messagebox;
messagebox.setWindowTitle("账号信息确认:");
//有空的时候
if (ui.newaccount->text().isEmpty() || ui.newpassward->text().isEmpty() ||
ui.confirmaccount->text().isEmpty() || ui.confirmpassward->text().isEmpty())
{
messagebox.setText("您设置的账号信息不完整!&