Дипломная работа: Оценка состояния сложных технических объектов

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

QString conn1 = QString("DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ=%1;").arg(dbName);

db.setDatabaseName(conn1);

if(!db.open()){

qDebug()<<("Failed to open the database");

return false;

}

else{

qDebug()<<("Connected....");

return true;

}

}

public:

explicit Login(QWidget *parent = 0);

~Login();

private slots:

void on_btnExit_clicked();

void on_btnLogin_clicked();

void on_btnClear_clicked();

private:

Ui::Login *ui;

};

#endif // LOGIN_H

mainwindow.h

#include <QMainWindow>

#include <QSqlDatabase>

#include <QTimer>

#include <QPixmap>

namespace Ui {

class MainWindow1;

}

class MainWindow1 : public QMainWindow

{

Q_OBJECT

public:

explicit MainWindow1(QWidget *parent = 0);

~MainWindow1();

private slots:

void on_actionSpravPol_triggered();

void on_actionSpravPar_triggered();

void on_actionExit_triggered();

void on_actionSpravSost_triggered();

void on_actionSpravObj_triggered();

void on_actionJournal_triggered();

void on_actionSpravka_triggered();

void QQQ();

void on_pushButton_clicked();

private:

Ui::MainWindow1 *ui;

QSqlDatabase db;

QTimer *m_timer;

void UpdateState();

};

#endif // MAINWINDOW1_H

objects.h

#ifndef OBJECTS_H

#define OBJECTS_H

#include <QDialog>

#include <QSql>

#include <QSqlDatabase>

#include <QSqlQuery>

#include <QSqlTableModel>

#include <QMessageBox>

#include <QTableView>

#include <QSqlError>

namespace Ui {

class Objects;

}

class Objects : public QDialog

{

Q_OBJECT

public:

explicit Objects(QWidget *parent = 0);

~Objects();

private slots:

void on_btnSaveExit_clicked();

void on_btnInsert_clicked();

void on_btnDelete_clicked();

private:

Ui::Objects *ui;

QSqlDatabase db;

QSqlTableModel *model;

QTableView *view;

};

#endif // OBJECTS_H

parametry.h

#ifndef PARAMETRY_H

#define PARAMETRY_H

#include <QDialog>

#include <QSql>

#include <QSqlDatabase>

#include <QSqlQuery>

#include <QSqlTableModel>

#include <QMessageBox>

#include <QTableView>

#include <QSqlError>

namespace Ui {

class Parametry;

}

class Parametry : public QDialog

{

Q_OBJECT

public:

explicit Parametry(QWidget *parent = 0);

~Parametry();

private slots:

void on_btnSaveExit_clicked();

void on_btnInsert_clicked();

void on_btnDelete_clicked();

private:

Ui::Parametry *ui;

QSqlDatabase db;

QSqlTableModel *model;

QTableView *view;

};

#endif // PARAMETRY_H

polzovateli.h

#ifndef POLZOVATELI_H

#define POLZOVATELI_H

#include <QDialog>

#include <QSql>

#include <QSqlDatabase>

#include <QSqlQuery>

#include <QSqlTableModel>

#include <QMessageBox>

#include <QTableView>

#include <QSqlError>

namespace Ui {

class Polzovateli;

}

class Polzovateli : public QDialog

{

Q_OBJECT

public:

explicit Polzovateli(QWidget *parent = 0);

~Polzovateli();

private slots:

void on_btnInsert_clicked();

void on_btnDelete_clicked();

void on_btnSaveExit_clicked();

private:

Ui::Polzovateli *ui;

QSqlDatabase db;

QSqlTableModel *model;

QTableView *view;

};

#endif // POLZOVATELI_H

sostoyaniya.h

#ifndef SOSTOYANIYA_H

#define SOSTOYANIYA_H

#include <QDialog>

#include <QSql>

#include <QSqlDatabase>

#include <QSqlQuery>

#include <QSqlTableModel>

#include <QMessageBox>

#include <QTableView>

#include <QSqlError>

namespace Ui {

class Sostoyaniya;

}

class Sostoyaniya : public QDialog

{

Q_OBJECT

public:

explicit Sostoyaniya(QWidget *parent = 0);

~Sostoyaniya();

private slots:

void on_btnSaveExit_clicked();

void on_btnInsert_clicked();

void on_btnDelete_clicked();

private:

Ui::Sostoyaniya *ui;

QSqlDatabase db;

QSqlTableModel *model;

QTableView *view;

};

#endif // SOSTOYANIYA_H

spravka.h

#ifndef SPRAVKA_H

#define SPRAVKA_H

#include <QDialog>

namespace Ui {

class Spravka;

}

class Spravka : public QDialog

{

Q_OBJECT

public:

explicit Spravka(QWidget *parent = 0);

~Spravka();

private slots:

void on_pushButton_clicked();

private:

Ui::Spravka *ui;

};

#endif // SPRAVKA_H

spravochniki.h

#ifndef SPRAVOCHNIKI_H

#define SPRAVOCHNIKI_H

#include <QDialog>

namespace Ui {

class Spravochniki;

}

class Spravochniki : public QDialog

{

Q_OBJECT

public:

explicit Spravochniki(QWidget *parent = 0);

~Spravochniki();

private slots:

void on_btnBack_clicked();

void on_btnSpravPol_clicked();

void on_btnSpravPar_clicked();

void on_btnSpravSost_clicked();

void on_pushButton_clicked();

private:

Ui::Spravochniki *ui;

};

#endif // SPRAVOCHNIKI_H

journal.cpp

#include "journal.h"

#include "ui_journal.h"

Journal::Journal(QWidget *parent) :

QDialog(parent),

ui(new Ui::Journal)

{

ui->setupUi(this);

QSqlQueryModel * modal = new QSqlQueryModel();

QSqlQuery *qry = new QSqlQuery();

qry->prepare("SELECT objectName, stateName, eventDate, eventTime, eventTemperatureValue, eventHumidityValue "

"FROM journal, object, state "

"WHERE "

"(journal.objectID = object.objectID) AND (journal.stateID = state.stateID) ");

qry->exec();

modal->setQuery(*qry);

ui->tableView->setModel(modal);

modal->setHeaderData(0, Qt::Horizontal, QObject::trUtf8("Объект"));

modal->setHeaderData(1, Qt::Horizontal, QObject::trUtf8("Состояние объекта"));

modal->setHeaderData(2, Qt::Horizontal, QObject::trUtf8("Дата"));

modal->setHeaderData(3, Qt::Horizontal, QObject::trUtf8("Время"));

modal->setHeaderData(4, Qt::Horizontal, QObject::trUtf8("Значение температуры"));

modal->setHeaderData(5, Qt::Horizontal, QObject::trUtf8("Значение влажности"));

}

Journal::~Journal()

{

delete ui;

}

void Journal::on_btnBack_clicked()

{

close();

}

login.cpp

#include "login.h"

#include "ui_login.h"

#include "mainwindow1.h"

Login::Login(QWidget *parent) :

QDialog(parent),

ui(new Ui::Login)

{

ui->setupUi(this);

// if(connOpen())

// ui->lblResult->setText("[+]База Данных подключена");

// else

// ui->lblResult->setText("[!]Файл Базы Данных не найден");

}

Login::~Login()

{

delete ui;

}

void Login::on_btnExit_clicked()

{

db.close();

db.removeDatabase(db.connectionName());

qApp->exit();

}

void Login::on_btnLogin_clicked()

{

QString Username, Password;

Username = ui->txtUser->text();

Password = ui->txtPass->text();

if(!connOpen()){

qDebug() << "No connection to db :(";

}

QSqlQuery qry;

qry.prepare("SELECT * FROM USER Where userUsername=\'" + Username +"\' AND userPassword=\'" + Password + "\'");

if(qry.exec())

{

if(qry.next())

{

this->hide();

MainWindow1 w;

w.show();

}

else

{

QMessageBox::warning(this, "Ошибка!","Неверный логин или пароль.");

ui->txtUser->setText("");

ui->txtPass->setText("");

}

}

}

void Login::on_btnClear_clicked()

{

ui->txtUser->setText("");

ui->txtPass->setText("");

}

main.cpp

#include "login.h"

#include "mainwindow1.h"

#include <QApplication>

int main(int argc, char *argv[])

{

QApplication a(argc, argv);

Login login;

login.setModal(true);

login.exec();

MainWindow1 w;

w.show();

return a.exec();

}

mainwindow.cpp

#include "mainwindow1.h"

#include "ui_mainwindow1.h"

#include "polzovateli.h"

#include "parametry.h"

#include "login.h"

#include "journal.h"

#include "spravka.h"

#include "sostoyaniya.h"

#include "objects.h"

#include <QStringList>

MainWindow1::MainWindow1(QWidget *parent) :

QMainWindow(parent),

ui(new Ui::MainWindow1)

{

ui->setupUi(this);

m_timer = new QTimer(this);

connect(m_timer, SIGNAL(timeout()), this, SLOT(QQQ()));

m_timer->setInterval(5000);

m_timer->start();

UpdateState();

}

MainWindow1::~MainWindow1()

{

delete ui;

}

void MainWindow1::QQQ()

{

UpdateState();

}

void MainWindow1::UpdateState()

{

QString dbName = "C:\\BD1.mdb";

QSqlDatabase db = QSqlDatabase::addDatabase("QODBC", "q1");

QString conn1 = QString("DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ=%1;").arg(dbName);

db.setDatabaseName(conn1);

db.open();

if (db.isOpen()) {

QSqlQuery q(db);

QSqlQuery q1(db);

QSqlQuery q2(db);

QSqlQuery q3(db);

QSqlQuery q4(db);

QString query;

QStringList objects, objectNames;

objects.clear();

objectNames.clear();

query = "SELECT objectID, objectName FROM object ";

if (q.exec(query)) {

while (q.next()) {

objects.append(q.value(0).toString());

objectNames.append(q.value(1).toString());

}

int journalID = 0;

int eventTemperatureValue, eventHumidityValue = 0;

for(int i = 0; i<objects.length(); i++) {

query = QString("SELECT eventID, eventTemperatureValue, eventHumidityValue "

"FROM journal "

"WHERE eventID IN ( "

"SELECT LAST(eventID) FROM journal WHERE objectID = %1 "

") ")

.arg(objects.at(i));

if (q1.exec(query)) {

//QMessageBox::information(this, "", query);

while (q1.next()) {

journalID = q1.value(0).toInt();

eventTemperatureValue = q1.value(1).toInt();

eventHumidityValue = q1.value(2).toInt();

// QMessageBox::information(this,"", QString("Объект - %1 Темп1 - %2 Темп2 - %3 ")

// .arg(objects.at(i))

// .arg(eventTemperatureValue)

// .arg(eventHumidityValue));

int stateID = 0;

QString stateName;

query = QString("SELECT stateID, stateName "

"FROM state "

"WHERE "

"(%1 >= stateTemperatureMin AND %1 <= stateTemperatureMax) "

"AND (%2 >= stateHumidityMin AND %2 <= stateHumidityMax) ")

.arg(eventTemperatureValue)

.arg(eventHumidityValue);

if (q2.exec(query)) {

while (q2.next()) {

stateID = q2.value(0).toInt();

stateName = q2.value(1).toString();

}

query = QString("UPDATE journal "

"SET stateID = %1 "

"WHERE eventID = %2 ")

.arg(stateID)

.arg(journalID);

//QMessageBox::information(this,"", query);

if (q3.exec(query)) {

switch (i) {

case 0:

ui->lblObject1->setText(objectNames.at(i));

ui->lblState1->setText(stateName);

// if(stateID == 1){

// ui->lblState1->setStyleSheet("background-color: green");

// }

// if(stateID == 2){

// ui->lblState1->setStyleSheet("background-color: green");

// }

// if(stateID == 3){

// ui->lblState1->setStyleSheet("background-color: yellow");

// }

// if(stateID = 4){

// ui->lblState1->setStyleSheet("background-color: yellow");

// }

// if(stateID = 5)

// {

// ui->lblState1->setStyleSheet("background-color: red");

// }

break;

case 1:

ui->lblObject2->setText(objectNames.at(i));

ui->lblState2->setText(stateName);

// if(stateID == 1){

// ui->lblState1->setStyleSheet("background-color: green");

// }

// if(stateID == 2){

// ui->lblState1->setStyleSheet("background-color: green");

// }

// if(stateID == 3){

// ui->lblState1->setStyleSheet("background-color: yellow");

// }

// if(stateID = 4){

// ui->lblState1->setStyleSheet("background-color: yellow");

// }

// if(stateID = 5)

// {

// ui->lblState1->setStyleSheet("background-color: red");

// }

break;

case 2:

ui->lblObject3->setText(objectNames.at(i));

ui->lblState3->setText(stateName);

// if(stateID == 1){

// ui->lblState1->setStyleSheet("background-color: green");

// }

// if(stateID == 2){

// ui->lblState1->setStyleSheet("background-color: green");

// }

// if(stateID == 3){

// ui->lblState1->setStyleSheet("background-color: yellow");

// }

// if(stateID = 4){

// ui->lblState1->setStyleSheet("background-color: yellow");

// }

// if(stateID = 5)

// {

// ui->lblState1->setStyleSheet("background-color: red");

// }

break;

}

}

}

//To Do.....

}

}

else {

QMessageBox::information(this,"", q1.lastError().text());

}

}

}

else {

QMessageBox::information(this, "", q.lastError().text());

}

}

else {

QMessageBox::information(this, "", db.lastError().text());

}

}

void MainWindow1::on_actionSpravPol_triggered()

{

Polzovateli polzovateli;

polzovateli.setModal(true);

polzovateli.exec();

}

void MainWindow1::on_actionSpravPar_triggered()

{

Parametry parametry;

parametry.setModal(true);

parametry.exec();

}

void MainWindow1::on_actionExit_triggered()

{

db.close();

db.removeDatabase(db.connectionName());

qApp->exit();

}

void MainWindow1::on_actionSpravSost_triggered()

{

Sostoyaniya sostoyaniya;

sostoyaniya.setModal(true);

sostoyaniya.exec();

}

void MainWindow1::on_actionSpravObj_triggered()

{

Objects objects;

objects.setModal(true);

objects.exec();

}

void MainWindow1::on_actionJournal_triggered()

{

Journal journal;

journal.setModal(true);

journal.exec();

}

void MainWindow1::on_actionSpravka_triggered()

{

Spravka spravka;

spravka.setModal(true);

spravka.exec();

}

void MainWindow1::on_pushButton_clicked()

{

QString dbName = "C:\\BD1.mdb";

QSqlDatabase db = QSqlDatabase::addDatabase("QODBC", "q1");

QString conn1 = QString("DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ=%1;").arg(dbName);

db.setDatabaseName(conn1);

db.open();

if (db.isOpen()) {

QSqlQuery q(db);

QSqlQuery q1(db);

QSqlQuery q2(db);

QSqlQuery q3(db);

QSqlQuery q4(db);

QString query;

QStringList objects, objectNames;

objects.clear();

objectNames.clear();

query = "SELECT objectID, objectName FROM object ";

if (q.exec(query)) {

while (q.next()) {

objects.append(q.value(0).toString());

objectNames.append(q.value(1).toString());

}

int journalID = 0;

int eventTemperatureValue, eventHumidityValue = 0;

for(int i = 0; i<objects.length(); i++) {

query = QString("SELECT eventID, eventTemperatureValue, eventHumidityValue "

"FROM journal "

"WHERE eventID IN ( "

"SELECT LAST(eventID) FROM journal WHERE objectID = %1 "

") ")

.arg(objects.at(i));

if (q1.exec(query)) {

//QMessageBox::information(this, "", query);

while (q1.next()) {

journalID = q1.value(0).toInt();

eventTemperatureValue = q1.value(1).toInt();

eventHumidityValue = q1.value(2).toInt();

// QMessageBox::information(this,"", QString("Объект - %1 Темп1 - %2 Темп2 - %3 ")

// .arg(objects.at(i))

// .arg(eventTemperatureValue)

// .arg(eventHumidityValue));

int stateID = 0;

QString stateName;

query = QString("SELECT stateID, stateName "

"FROM state "

"WHERE "

"(%1 >= stateTemperatureMin AND %1 <= stateTemperatureMax) "

"AND (%2 >= stateHumidityMin AND %2 <= stateHumidityMax) ")

.arg(eventTemperatureValue)

.arg(eventHumidityValue);

if (q2.exec(query)) {

while (q2.next()) {

stateID = q2.value(0).toInt();

stateName = q2.value(1).toString();

}

query = QString("UPDATE journal "

"SET stateID = %1 "

"WHERE eventID = %2 ")

.arg(stateID)

.arg(journalID);

//QMessageBox::information(this,"", query);

if (q3.exec(query)) {

switch (i) {

case 0:

ui->lblObject1->setText(objectNames.at(i));

ui->lblState1->setText(stateName);

break;

case 1:

ui->lblObject2->setText(objectNames.at(i));

ui->lblState2->setText(stateName);

break;

case 2:

ui->lblObject3->setText(objectNames.at(i));

ui->lblState3->setText(stateName);

break;

}

}

}

//To Do.....

}

}

else {

QMessageBox::information(this,"", q1.lastError().text());

}

}

}

else {

QMessageBox::information(this, "", q.lastError().text());

}

}

else {

QMessageBox::information(this, "", db.lastError().text());

}

}

objects.cpp

#include "objects.h"

#include "ui_objects.h"

Objects::Objects(QWidget *parent) :

QDialog(parent),

ui(new Ui::Objects)

{

ui->setupUi(this);

model = new QSqlTableModel(0,db);

model->setTable("OBJECT");

model->setEditStrategy(QSqlTableModel::OnFieldChange);

model->select();

model->setHeaderData(0, Qt::Horizontal, QObject::trUtf8("№"));

model->setHeaderData(1, Qt::Horizontal, QObject::trUtf8("Объект"));

model->setHeaderData(2, Qt::Horizontal, QObject::trUtf8("Адрес"));

view = ui->tableView;

view->setModel(model);

view->setAlternatingRowColors(true); // Подсветка строк разными цветами

view->resizeRowsToContents();

view->resizeColumnsToContents();

view->setSortingEnabled(true); // Сортировка таблицы

view->sortByColumn(0,Qt::AscendingOrder); // Порядок сортировки по умолчанию

}

Objects::~Objects()

{

delete ui;

}

void Objects::on_btnSaveExit_clicked()

{

close();

}

void Objects::on_btnInsert_clicked()

{

QString Object, Address;

Object = ui->txtObject->text();

Address = ui->txtAddress->text();

QSqlQuery qry;

qry.prepare("INSERT INTO OBJECT (objectName,objectAddress) VALUES ('"+Object+"','"+Address+"')");

if (ui->txtObject->text() == "" || ui->txtAddress->text() == "")

{

QMessageBox::warning(this, "Ошибка!",

"Вы не заполнили одно из полей, перепроверьте информацию.");

return;

}

else

{

if(qry.exec())

{

QMessageBox::critical(this,tr("Сохранение"),tr("Запись сохранена."));

model->select();

}

else

{

QMessageBox::critical(this,tr("Ошибка!"),qry.lastError().text());

}

}

ui->txtObject->setText("");

ui->txtAddress->setText("");

}

void Objects::on_btnDelete_clicked()

{

QMessageBox::StandardButton stButtonYes;

stButtonYes = QMessageBox::question(this, "Подтверждение удаления",

"Вы действительно хотите удалить строку?",

QMessageBox::Yes | QMessageBox::No);

if(stButtonYes == QMessageBox::Yes)

{

model->removeRow(ui->tableView->currentIndex().row());

model->select();

}

}

parametry.cpp

#include "parametry.h"

#include "ui_parametry.h"

Parametry::Parametry(QWidget *parent) :

QDialog(parent),

ui(new Ui::Parametry)

{

ui->setupUi(this);

model = new QSqlTableModel(0,db);

model->setTable("PARAMETER");

Источник: https://otherreferats.allbest.ru/download/1025154/