Дипломная работа: Информационная система мотивирования и тренировки школьников и студентов в области информатики

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

{

Q_OBJECT

public:

explicit Widget(QWidget *parent = 0);

~Widget();

public slots:

void timeout();

private:

Ui::Widget *ui;

private slots:

void on_pushButton_clicked();

void on_pushButton_2_clicked();

void on_pushButton_3_clicked();

void on_pushButton_5_clicked();

void on_pushButton_4_clicked();

void on_pushButton_9_clicked();

void on_pushButton_6_clicked();

void on_pushButton_7_clicked();

void on_pushButton_8_clicked();

void on_pushButton_10_clicked();

void on_pushButton_11_clicked();

void on_pushButton_12_clicked();

void on_pushButton_14_clicked();

void on_pushButton_15_clicked();

void on_pushButton_16_clicked();

void on_pushButton_17_clicked();

void on_pushButton_18_clicked();

void on_pushButton_13_clicked();

void on_pushButton_19_clicked();

void on_pushButton_20_clicked();

void on_pushButton_21_clicked();

void on_pushButton_22_clicked();

void on_pushButton_23_clicked();

void on_pushButton_24_clicked();

void on_pushButton_25_clicked();

void on_pushButton_27_clicked();

void on_pushButton_31_clicked();

void test1();

void on_pushButton_49_clicked();

void on_pushButton_50_clicked();

void on_pushButton_29_clicked();

void test2();

void test3();

void test4();

void test5();

void on_pushButton_26_clicked();

void on_pushButton_28_clicked();

void on_pushButton_30_clicked();

};

#endif // WIDGET_H

Файл widget.cpp

#include "widget.h"

#include "ui_widget.h"

#include "db.h"

#include <QtSql>

#include <QDebug>

#include <QMessageBox>

QSqlTableModel *Users;

QSqlTableModel *questions;

QTimer *timer;

int id;

int time;

int time1;

int flag=-1;

int count1=0,count2=0,count3=0;

QString str="";

QString str1="";

QString zvanie;

int r=1;

int b=0;

int m=0;

int s=0;

Widget::Widget(QWidget *parent) :

QWidget(parent),

ui(new Ui::Widget)

{

ui->setupUi(this);

connectDB();

ui->lineEdit_2->setEchoMode(QLineEdit::Password);

ui->pushButton_23->setHidden(1);

ui->pushButton_24->setHidden(1);

QGraphicsScene *scene = new QGraphicsScene;

scene->addPixmap(QPixmap("D:/kross1/images/111.JPG"));

ui->graphicsView_2->setScene(scene);

Users = new QSqlTableModel;

Users->setTable("Users");

Users->select();

questions = new QSqlTableModel;

questions->setTable("questions");

questions->select();

ui->tableView->setModel(Users);

ui->tableView->setHidden(1);

ui->tableView_2->setModel(Users);

ui->tableView_3->setModel(Users);

ui->tableView_3->setColumnHidden(2,1);

ui->tableView_3->setColumnHidden(3,1);

ui->tableView_3->setColumnHidden(4,1);

ui->tableView_3->setColumnHidden(5,1);

ui->comboBox->addItem("Кроссворд по основным темам 1");

ui->comboBox->addItem("Кроссворд на тему 'Windows'");

ui->comboBox->addItem("Кроссворд на тему 'Вирусы и антивирусные средства'");

ui->comboBox->addItem("Кроссворд на тему 'Интерфейс операционной системы Windows'");

ui->comboBox->addItem("Кроссворд по основным темам 2");

}

Widget::~Widget()

{

delete ui;

}

void Widget::on_pushButton_23_clicked()

{

QMessageBox::information(this, "Справка", "Автор программы: Ковалев Н. В.\nВерсия 1.0\nСГАСУ, ФИСТ");

}

void Widget::on_pushButton_clicked()

{

ui->pushButton_23->setHidden(0);

ui->pushButton_24->setHidden(0);

for (int i=0; i<Users->rowCount();i++)

{

if ( (ui->lineEdit->text()==Users->record(i).value(4).toString()) &&

(ui->lineEdit_2->text()==Users->record(i).value(5).toString()) )

{

flag=Users->record(i).value(3).toInt();

id=Users->record(i).value(0).toInt();

ui->label_12->setText("Здравствуйте, " + Users->record(i).value(4).toString() + "!");

ui->label_14->setText("Ваш текущий рейтинг: " + Users->record(i).value(6).toString() + ".");

break;

}

for(int i=0;i<Users->rowCount();i++)

{

if(Users->record(i).value(6).toInt()>Users->record(id+1).value(6).toInt())

{

//i1++;

r++;

}

}

m=0;b=0;s=-1;

for(int i=0;i<Users->rowCount();i++)

{

if((Users->record(i).value(6).toInt()<Users->record(id+1).value(6).toInt())&&(Users->record(i).value(3).toInt()==1))

{

m++;

}

if((Users->record(i).value(6).toInt()>Users->record(id+1).value(6).toInt())&&(Users->record(i).value(3).toInt()==1))

{

b++;

}

if((Users->record(i).value(6).toInt()==Users->record(id+1).value(6).toInt())&&(Users->record(i).value(3).toInt()==1))

{

s++;

}

}

str1="";

str1=str1.append("Количество игроков с таким же рейтингом: %1. \nКоличество игроков с рейтингом ниже %2 - %3. \nКоличество игроков с рейтингом выше %2 - %4.").arg(s).arg(Users->record(id+1).value(6).toInt()).arg(m).arg(b);

ui->label_61->setText(str1);

str = "";

str = str.append("Вы занимаете %1 место в таблице рейтинга!").arg(r);

ui->label_60->setText(str);

if(Users->record(id+1).value(6).toInt()<25){

ui->label_35->setText("Ваше звание: рекрут!");

QGraphicsScene *scene = new QGraphicsScene;

scene->addPixmap(QPixmap("D:/kross1/images/1.JPG"));

ui->graphicsView->setScene(scene);

}

if((Users->record(id+1).value(6).toInt()>24)&&(Users->record(id-1).value(6).toInt()<39))

{

QGraphicsScene *scene = new QGraphicsScene;

ui->label_35->setText("Ваше звание: сержант!");

scene->addPixmap(QPixmap("D:/kross1/images/2.JPG"));

ui->graphicsView->setScene(scene);

}

if((Users->record(id+1).value(6).toInt()>38)&&(Users->record(id-1).value(6).toInt()<42))

{

ui->label_35->setText("Ваше звание: офицер!");

QGraphicsScene *scene = new QGraphicsScene;

scene->addPixmap(QPixmap("D:/kross1/images/3.JPG"));

ui->graphicsView->setScene(scene);

}

if((Users->record(id+1).value(6).toInt()>41)&&(Users->record(id-1).value(6).toInt()<56))

{

ui->label_35->setText("Ваше звание: лейтенант!");

QGraphicsScene *scene = new QGraphicsScene;

scene->addPixmap(QPixmap("D:/kross1/images/4.JPG"));

ui->graphicsView->setScene(scene);

}

if((Users->record(id+1).value(6).toInt()>55)&&(Users->record(id-1).value(6).toInt()<87))

{

ui->label_35->setText("Ваше звание: мастер!");

QGraphicsScene *scene = new QGraphicsScene;

scene->addPixmap(QPixmap("D:/kross1/images/5.JPG"));

ui->graphicsView->setScene(scene);

}

if((Users->record(id+1).value(6).toInt()>86))

{

ui->label_35->setText("Ваше звание: генерал!");

QGraphicsScene *scene = new QGraphicsScene;

scene->addPixmap(QPixmap("D:/kross1/images/6.JPG"));

ui->graphicsView->setScene(scene);

}

}

if (flag==-1)

{

QMessageBox::warning(this, "Ошибка входа", "Вы ввели некорректный логин или пароль");

}

switch (flag){

case 0:

ui->stackedWidget->setCurrentIndex(3);

break;

case 1:

ui->stackedWidget->setCurrentIndex(4);

break;

case 2:

ui->stackedWidget->setCurrentIndex(2);

default:

break;

}

}

void Widget::on_pushButton_2_clicked()

{

ui->stackedWidget->setCurrentIndex(1);

}

void Widget::on_pushButton_5_clicked()

{

ui->stackedWidget->setCurrentIndex(0);

}

void Widget::on_pushButton_3_clicked()

{

QWidget::close();

QWidget::setAttribute(Qt::WA_DeleteOnClose, true);

}

void Widget::on_pushButton_24_clicked()

{

QWidget::close();

QWidget::setAttribute(Qt::WA_DeleteOnClose, true);

}

void Widget::on_pushButton_4_clicked()

{

Users->insertRow(Users->rowCount());

Users->setData(Users->index(Users->rowCount()-1,0),Users->rowCount());

Users->setData(Users->index(Users->rowCount()-1,1),ui->lineEdit_3->text());

Users->setData(Users->index(Users->rowCount()-1,2),ui->lineEdit_4->text().toInt());

Users->setData(Users->index(Users->rowCount()-1,3),1); //1 - школьники, 0 - учителя, 2 - администраторы

Users->setData(Users->index(Users->rowCount()-1,4),ui->lineEdit_5->text());

Users->setData(Users->index(Users->rowCount()-1,5),ui->lineEdit_6->text());

Users->setData(Users->index(Users->rowCount()-1,6),0);

Users->submitAll();

QMessageBox::warning(this, "Успех!", "Регистрация прошла успешно!");

}

void Widget::on_pushButton_9_clicked()

{

ui->stackedWidget->setCurrentIndex(0);

}

void Widget::on_pushButton_6_clicked()

{

Users->insertRow(Users->rowCount());

Users->setData(Users->index(Users->rowCount()-1,0),Users->rowCount());

Users->setData(Users->index(Users->rowCount()-1,6),0);

}

void Widget::on_pushButton_7_clicked()

{

Users->removeRow(ui->lineEdit_7->text().toInt()-1);

}

void Widget::on_pushButton_8_clicked()

{

Users->submitAll();

ui->tableView_2->setModel(Users);

}

void Widget::on_pushButton_10_clicked()

{

Users->setData(Users->index(ui->lineEdit_8->text().toInt()-1,6),0);

Users->submitAll();

ui->tableView_3->setModel(Users);

ui->tableView_3->setColumnHidden(2,1);

ui->tableView_3->setColumnHidden(3,1);

ui->tableView_3->setColumnHidden(4,1);

ui->tableView_3->setColumnHidden(5,1);

}

void Widget::on_pushButton_11_clicked()

{

for (int i=0; i<Users->rowCount();i++)

{

Users->setData(Users->index(i,6),0);

Users->submitAll();

ui->tableView_3->setModel(Users);

}

}

void Widget::on_pushButton_12_clicked()

{

ui->stackedWidget->setCurrentIndex(0);

}

void Widget::on_pushButton_14_clicked()

{

ui->stackedWidget->setCurrentIndex(0);

}

void Widget::on_pushButton_15_clicked()

{

ui->tableView_4->setModel(Users);

ui->tableView_4->setColumnHidden(0,1);

ui->tableView_4->setColumnHidden(3,1);

ui->tableView_4->setColumnHidden(4,1);

ui->tableView_4->setColumnHidden(5,1);

ui->stackedWidget->setCurrentIndex(5);

for (int i=0; i<Users->rowCount();i++)

{

if (Users->record(i).value(3).toInt()!=1){

ui->tableView_4->setRowHidden(i,1);

}

}

for(int i=0;i<Users->rowCount();i++)

{

if(Users->record(i).value(6).toInt()>Users->record(id-1).value(6).toInt())

{

//i1++;

r++;

}

}

str = "";

str = str.append("Вы занимаете %1 место в таблице рейтинга!").arg(r);

ui->label_60->setText(str);

ui->label_39->setText(str);

}

void Widget::on_pushButton_16_clicked()

{

ui->stackedWidget->setCurrentIndex(4);

ui->tableView_4->setModel(Users);

ui->tableView_4->setColumnHidden(0,1);

ui->tableView_4->setColumnHidden(3,1);

ui->tableView_4->setColumnHidden(4,1);

ui->tableView_4->setColumnHidden(5,1);

for (int i=0; i<Users->rowCount();i++)

{

if (Users->record(i).value(3).toInt()!=1){

ui->tableView_4->setRowHidden(i,1);

}

}

}

void Widget::on_pushButton_18_clicked()

{

ui->stackedWidget->setCurrentIndex(4);

}

void Widget::on_pushButton_20_clicked()

{

ui->stackedWidget->setCurrentIndex(4);

}

void Widget::on_pushButton_22_clicked()

{

ui->stackedWidget->setCurrentIndex(4);

}

void Widget::on_pushButton_50_clicked()

{

//ui->textBrowser_4->setText("");

ui->stackedWidget->setCurrentIndex(4);

}

void Widget::on_pushButton_13_clicked()

{

//QMessageBox::warning(this, "Недостаточно рейтинга!", "У вас недостаточно высокий рейтинг! Пройдите более простой тест.");

switch (ui->comboBox->currentIndex()){

case 0:

test1();

break;

case 1:

if(Users->record(id-1).value(6).toInt()<25){

QMessageBox::warning(this, "Слишком низкий ранг!", "У вас недостаточно высокий рейтинг! Пройдите более простое задание!");

}

else

{

test2();

}

break;

case 2:

if(Users->record(id-1).value(6).toInt()<39){

QMessageBox::warning(this, "Слишком низкий ранг!", "У вас недостаточно высокий рейтинг! Пройдите более простое задание!");

}

else

{

test3();

}

break;

case 3:

if(Users->record(id-1).value(6).toInt()<42){

QMessageBox::warning(this, "Слишком низкий ранг!", "У вас недостаточно высокий рейтинг! Пройдите более простое задание!");

}

else

{

test4();

}

break;

case 4:

if(Users->record(id-1).value(6).toInt()<56){

QMessageBox::warning(this, "Слишком низкий ранг!", "У вас недостаточно высокий рейтинг! Пройдите более простое задание!");

}

else

{

test5();

}

break;

default:

break;

}

}

void Widget::on_pushButton_17_clicked() //для первого теста

{

if(ui->lineEdit_9->text()==questions->record(0).value(2).toString())

{

count1++;

}

if(ui->lineEdit_10->text()==questions->record(1).value(2).toString())

{

count1++;

}

if(ui->lineEdit_11->text()==questions->record(2).value(2).toString())

{

count1++;

}

if(ui->lineEdit_12->text()==questions->record(3).value(2).toString())

{

count1++;

}

if(ui->lineEdit_13->text()==questions->record(4).value(2).toString())

{

count1++;

}

if(ui->lineEdit_14->text()==questions->record(5).value(2).toString())

{

count1++;

}

if(ui->lineEdit_15->text()==questions->record(6).value(2).toString())

{

count1++;

}

if(ui->lineEdit_16->text()==questions->record(7).value(2).toString())

{

count1++;

}

if(ui->lineEdit_17->text()==questions->record(8).value(2).toString())

{

count1++;

}

if(time1==0)

{

count1=count1/2;

}

ui->label_32->setHidden(1);

QMessageBox::information(this, "Тест пройден!", QString("Поздравляем! Тест пройден. Ваш рейтинг увеличился на %1 пунктов.").arg(count1));

Users->setData(Users->index(id-1,6),Users->record(id-1).value(6).toInt()+count1);

Users->submitAll();

if(Users->record(id-1).value(6).toInt()<10){

ui->label_35->setText("Ваше звание: новичок!");

}

if((Users->record(id-1).value(6).toInt()>9)&&(Users->record(id-1).value(6).toInt()<25))

{

ui->label_35->setText("Ваше звание: опытный!");

}

if(Users->record(id-1).value(6).toInt()>25)

{

ui->label_35->setText("Ваше звание: эксперт!");

}

count1=0;

time = 10;

time1 = time;

ui->label_14->setText("Ваш текущий рейтинг: " + Users->record(id-1).value(6).toString() + ".");

}

void Widget::on_pushButton_19_clicked() // для второго теста

{

if(ui->lineEdit_18->text()==questions->record(0+9).value(2).toString())

{

count1=count1+3;

}

if(ui->lineEdit_19->text()==questions->record(1+9).value(2).toString())

{

count1=count1+3;

}

if(ui->lineEdit_20->text()==questions->record(2+9).value(2).toString())

{

count1=count1+3;

}

if(ui->lineEdit_21->text()==questions->record(3+9).value(2).toString())

{

count1=count1+3;

}

if(ui->lineEdit_22->text()==questions->record(4+9).value(2).toString())

{

count1=count1+3;

}

if(ui->lineEdit_23->text()==questions->record(5+9).value(2).toString())

{

count1=count1+3;

}

if(ui->lineEdit_24->text()==questions->record(6+9).value(2).toString())

{

count1=count1+3;

}

if(time1==0)

{

count1=count1/2;

}

ui->label_38->setHidden(1);

QMessageBox::information(this, "Тест пройден!", QString("Поздравляем! Тест пройден. Ваш рейтинг увеличился на %1 пунктов.").arg(count1));

Users->setData(Users->index(id-1,6),Users->record(id-1).value(6).toInt()+count1);

Users->submitAll();

if(Users->record(id-1).value(6).toInt()<10){

ui->label_35->setText("Ваше звание: новичок!");

}

if((Users->record(id-1).value(6).toInt()>9)&&(Users->record(id-1).value(6).toInt()<25))

{

ui->label_35->setText("Ваше звание: опытный!");

}

if(Users->record(id-1).value(6).toInt()>25)

{

ui->label_35->setText("Ваше звание: эксперт!");

}

count1=0;

time = 10;

time1 = time;

ui->label_14->setText("Ваш текущий рейтинг: " + Users->record(id-1).value(6).toString() + ".");

}

void Widget::on_pushButton_21_clicked() // для третьего теста

{

if(ui->lineEdit_25->text()==questions->record(0+9+7).value(2).toString())

{

count1=count1+7;

}

if(ui->lineEdit_26->text()==questions->record(1+9+7).value(2).toString())

{

count1=count1+7;

}

if(ui->lineEdit_27->text()==questions->record(2+9+7).value(2).toString())

{

count1=count1+7;

}

if(ui->lineEdit_28->text()==questions->record(3+9+7).value(2).toString())

{

count1=count1+7;

}

if(ui->lineEdit_29->text()==questions->record(4+9+7).value(2).toString())

{

count1=count1+7;

}

if(time1==0)

{

count1=count1/2;

}

ui->label_46->setHidden(1);

QMessageBox::information(this, "Тест пройден!", QString("Поздравляем! Тест пройден. Ваш рейтинг увеличился на %1 пунктов.").arg(count1));

Users->setData(Users->index(id-1,6),Users->record(id-1).value(6).toInt()+count1);

Users->submitAll();

if(Users->record(id-1).value(6).toInt()<10){

ui->label_35->setText("Ваше звание: новичок!");

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