Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
3 - Текст пояснювальної записки.docx
Скачиваний:
5
Добавлен:
12.05.2015
Размер:
12.93 Mб
Скачать
  1. Опис класів

#ifndef ALLTESTS_H

#define ALLTESTS_H

#include <QDialog>

#include "creatortest.h"

#include <QLabel>

namespace Ui {

class allTests;

}

class allTests : public QDialog

{

Q_OBJECT

public:

explicit allTests(QWidget *parent = 0);

~allTests();

private slots:

void on_pushButton_clicked();

void on_table_cellClicked(int row, int column);

private:

Ui::allTests *ui;

signals:

void refresh();

};

#endif // ALLTESTS_H

#include "alltests.h"

#include "ui_alltests.h"

allTests::allTests(QWidget *parent) :

QDialog(parent),

ui(new Ui::allTests)

{

ui->setupUi(this);

creator_test *ct = new creator_test;

vector<string> xx = ct->show_alltest();

ui->table->setRowCount(xx.size());

QLabel *label;

for(int i=0; i < xx.size(); i++)

{

QString zz = QString::fromStdString(xx[i]);

label = new QLabel;

label->setText(zz);

ui->table->setCellWidget(i, 0, label);

}

delete ct;

connect(this, SIGNAL(refresh()), this->parent(), SLOT(onrefresh()));

}

allTests::~allTests()

{

delete ui;

}

void allTests::on_pushButton_clicked()

{

this->close();

}

void allTests::on_table_cellClicked(int row, int column)

{

creator_test *ct = new creator_test;

vector<string> xx = ct->show_alltest();

ofstream q("buf1.txt");

q<<xx[row];

q.close();

delete ct;

emit refresh();

this->close();

}

#ifndef CREATENAME_H

#define CREATENAME_H

#include <QDialog>

#include "creatortest.h"

#include "qation1f.h"

#include "qation2f.h"

#include "qation3f.h"

namespace Ui {

class createName;

}

class createName : public QDialog

{

Q_OBJECT

public:

explicit createName(QWidget *parent = 0);

~createName();

private slots:

void on_pushButton_2_clicked();

void on_pushButton_clicked();

void on_lineEdit_textChanged(const QString &arg1);

private:

Ui::createName *ui;

};

#endif // CREATENAME_H

#include "createname.h"

#include "ui_createname.h"

createName::createName(QWidget *parent) :

QDialog(parent),

ui(new Ui::createName)

{

ui->setupUi(this);

}

createName::~createName()

{

delete ui;

}

void createName::on_pushButton_2_clicked()

{

this->close();

}

void createName::on_pushButton_clicked()

{

creator_test *ct=new creator_test;

ct->creator_name(ui->lineEdit->text().toStdString());

delete ct;

if (ui->radioButton->isChecked())

{

qation1f *q1f=new qation1f(this, ui->lineEdit->text().toStdString());

q1f->show();

}

else if (ui->radioButton_2->isChecked())

{

qation2f *q2f=new qation2f(this, ui->lineEdit->text().toStdString());

q2f->show();

}

else if (ui->radioButton_3->isChecked())

{

qation3f *q3f=new qation3f(this, ui->lineEdit->text().toStdString());

q3f->show();

}

this->close();

}

void createName::on_lineEdit_textChanged(const QString &arg1)

{

ui->pushButton->setEnabled(arg1.toStdString().length());

}

#ifndef CREATORTEST_H

#define CREATORTEST_H

#include <fstream>

#include <vector>

#include <cstdlib>

#include "qation.h"

#include "qation1.h"

#include "qation2.h"

#include "qation3.h"

using namespace std;

class creator_test

{

private:

string name;

qation1 q1;

qation2 q2;

qation3 q3;

public:

void set_name(string nev);

void set_q1(string nam,double g,int i, string nev1, string nev2, string nev3, string nev4);

void set_q2(string nam,double d,int i);

void set_q3(string nam,double d,string nev);

void creator_name(string txt);

int search_name(string txt);

void add_q1(string txt);

void add_q2(string txt);

void add_q3(string txt);

vector<string> show_alltest();

vector<string> show_all(string txt);

vector<string> show_allque(string txt);

qation1 load_q1(string txt,int n);

qation2 load_q2(string txt,int n);

qation3 load_q3(string txt,int n);

string load_q(string txt,int n);

void del_test(string txt);

void del_q(string txt,int n);

string get_name();

qation1 get_q1();

qation2 get_q2();

qation3 get_q3();

};

#endif

#include "creatortest.h"

void creator_test::set_name(string nev){name=nev;}

void creator_test::set_q1(string nam,double g,int i, string nev1, string nev2, string nev3, string nev4){

q1.set_variant(0,nev1);

q1.set_variant(1,nev2);

q1.set_variant(2,nev3);

q1.set_variant(3,nev4);

q1.set_correct(i);

q1.set_question(nam);

q1.set_dif(g);

}

void creator_test::set_q2(string nam,double d,int i){

q2.set_correct(i);

q2.set_question(nam);

q2.set_dif(d);

}

void creator_test::set_q3(string nam,double d,string nev){

q3.set_correct(nev);

q3.set_question(nam);

q3.set_dif(d);

}

string creator_test::get_name(){return name;}

qation1 creator_test::get_q1(){return q1;}

qation2 creator_test::get_q2(){return q2;}

qation3 creator_test::get_q3(){return q3;}

int creator_test::search_name(string txt){

int h=0;

char buffer[150];

ifstream f("alltest.txt");

if(!f){

cout<<"ne otkril-"<<"alltest.txt";

}

while (true){

f.getline(buffer,150,'\n');

if(txt==buffer) h=1;

if (f.eof()) break;

}

f.close();

return h;

}

void creator_test::creator_name(string txt){

char buffer[150];

set_name(txt);

string zz=txt+".txt";

ofstream d(zz.c_str());

if(!d){

cout<<"ne otkril-"<<zz;

}

d<<txt<<"\n";

d.close();

int h=search_name(txt);

if (h==0){

ofstream k("alltest.txt",ios::app);

if(!k){

cout<<"ne otkril-"<<"alltest.txt";

}

k<<txt<<"\n";

k.close();}

}

void creator_test::add_q1(string txt)

{ string zz=txt+".txt";

ofstream k(zz.c_str(),ios::app);

if(!k){

cout<<"ne otkril-"<<zz;

}

k<<"q1"<<"\n";

k<<q1.get_question()<<"\n";

k<<q1.get_correct()<<"\n";

k<<q1.get_dif()<<"\n";

k<<q1.get_variant(0)<<"\n";

k<<q1.get_variant(1)<<"\n";

k<<q1.get_variant(2)<<"\n";

k<<q1.get_variant(3)<<"\n";

k.close();

}

void creator_test::add_q2(string txt)

{ string zz=txt+".txt";

ofstream k(zz.c_str(),ios::app);

if(!k){

cout<<"ne otkril-"<<zz;

}

k<<"q2"<<"\n";

k<<q2.get_question()<<"\n";

k<<q2.get_correct()<<"\n";

k<<q2.get_dif()<<"\n";

k.close();

}

void creator_test::add_q3(string txt)

{

string zz=txt+".txt";

ofstream k(zz.c_str(),ios::app);

if(!k){

cout<<"ne otkril-"<<zz;

}

k<<"q3"<<"\n";

k<<q3.get_question()<<"\n";

k<<q3.get_correct()<<"\n";

k<<q3.get_dif()<<"\n";

k.close();

}

vector<string> creator_test::show_alltest(){

vector<string> ss;

string BUF;

char buffer[150];

ifstream k("alltest.txt");

if(!k){

cout<<"ne otkril-"<<"alltest.txt";

}

while (true){

k.getline(buffer,150,'\n');

if (k.eof()) break;

ss.push_back(buffer);

}

k.close();

return ss;

}

vector<string> creator_test::show_all(string txt){

vector<string> ss;

char buffer[150];

txt=txt+".txt";

ifstream k(txt.c_str());

if(!k){

cout<<"ne otkril-"<<"alltest.txt";

}

while (true){

k.getline(buffer,150,'\n');

if (k.eof()) break;

ss.push_back(buffer);

}

k.close();

return ss;

}

vector<string> creator_test::show_allque(string txt){

vector<string> zz=show_all(txt);

vector<string> ss;

for (int i=0; i<zz.size(); i++)

{ if((zz[i]=="q1")||(zz[i]=="q2")||(zz[i]=="q3")){ss.push_back(zz[i]);ss.push_back(zz[i+1]);}

}

return ss;

}

qation1 creator_test::load_q1(string txt,int n){

int k=0;

vector<string> zz=show_all(txt);

for (int i=0; i<zz.size(); i++)

{ if((zz[i]=="q1")||(zz[i]=="q2")||(zz[i]=="q3")){

if (k==n){

int z=atoi( zz[i+2].c_str() );

double f=atoi( zz[i+3].c_str());

set_q1(zz[i+1],f,z,zz[i+4],zz[i+5],zz[i+6],zz[i+7]);

return q1;

}

k++;

}

}

}

qation2 creator_test::load_q2(string txt,int n){

int k=0;

vector<string> zz=show_all(txt);

for (int i=0; i<zz.size(); i++)

{ if((zz[i]=="q1")||(zz[i]=="q2")||(zz[i]=="q3")){

if (k==n){

int z=atoi( zz[i+2].c_str() );

double f=atoi( zz[i+3].c_str());

set_q2(zz[i+1],f,z);

return q2;

}

k++;

}

}

}

qation3 creator_test::load_q3(string txt,int n){

int k=0;

vector<string> zz=show_all(txt);

for (int i=0; i<zz.size(); i++)

{ if((zz[i]=="q1")||(zz[i]=="q2")||(zz[i]=="q3")){

if (k==n){

double f=atoi( zz[i+3].c_str());

set_q3(zz[i+1],f,zz[i+2]);

return q3;

}

k++;

}

}

}

string creator_test::load_q(string txt,int n){

int k=0;

vector<string> zz=show_all(txt);

for (int i=0; i<zz.size(); i++)

{ if((zz[i]=="q1")||(zz[i]=="q2")||(zz[i]=="q3")){

if ((k==n)&&(zz[i]=="q3")){

double f=atoi( zz[i+3].c_str());

set_q3(zz[i+1],f,zz[i+2]);

return "q3";

}

else if ((k==n)&&(zz[i]=="q2")){

int z=atoi( zz[i+2].c_str() );

double f=atoi( zz[i+3].c_str());

set_q2(zz[i+1],f,z);

return "q2";

}

else if ((k==n)&&(zz[i]=="q1")){

int z=atoi( zz[i+2].c_str() );

double f=atoi( zz[i+3].c_str());

set_q1(zz[i+1],f,z,zz[i+4],zz[i+5],zz[i+6],zz[i+7]);

return "q1";

}

k++;

}

}

}

void creator_test::del_test(string txt){

string buffer;

ifstream k("alltest.txt");

if(!k){

cout<<"ne otkril-"<<"alltest.txt";

}

ofstream d("buffalltest.txt");

if(!d){

cout<<"ne otkril-"<<"buffalltest.txt";

}

while (true){

getline(k, buffer);

if (k.eof()) break;

if (buffer!=txt){

d<<buffer<<endl;

}

}

d.close();

k.close();

ifstream k1("buffalltest.txt");

if(!k1){

cout<<"ne otkril-"<<"buffalltest.txt";

}

ofstream d1("alltest.txt");

if(!d1){

cout<<"ne otkril-"<<"alltest.txt";

}

while (true){

getline(k1, buffer);

if (k1.eof()) break;

d1<<buffer<<endl;

}

d1.close();

k1.close();

remove("bufalltest.txt");

buffer = txt + ".txt";

remove(buffer.c_str());

}

void creator_test::del_q(string txt,int n){

int k=0;

vector<string> zz=show_all(txt);

vector<string> ss;

int fl=0;

for (int i=0; i<zz.size(); i++)

{

if((zz[i]=="q1")||(zz[i]=="q2")||(zz[i]=="q3")){

fl=0;

if (n==k) fl=1;

k++;

}

if (fl==0)

ss.push_back(zz[i]);

}

txt=txt+".txt";

ofstream d1(txt.c_str());

if(!d1){

cout<<"ne otkril-"<<txt;

}

for (int i=0; i<ss.size(); i++){

d1<<ss[i]<<"\n";

}

d1.close();

}

#ifndef DELQ_H

#define DELQ_H

#include <QDialog>

#include <creatortest.h>

#include <QLabel>

namespace Ui {

class DelQ;

}

class DelQ : public QDialog

{

Q_OBJECT

public:

explicit DelQ(QWidget *parent = 0, string newname=0);

~DelQ();

private slots:

void on_closeButt_clicked();

void on_table_cellClicked(int row, int column);

void on_delButt_clicked();

signals:

void delqsig();

private:

Ui::DelQ *ui;

string name;

int delrow;

};

#endif // DELQ_H

#include "delq.h"

#include "ui_delq.h"

DelQ::DelQ(QWidget *parent, string newname) :

QDialog(parent),

ui(new Ui::DelQ)

{

ui->setupUi(this);

connect(this, SIGNAL(delqsig()), this->parent(), SLOT(delqcall()));

name = newname;

creator_test *ct = new creator_test;

vector<string> xx = ct->show_allque(name);

ui->table->setRowCount(xx.size()/2);

QLabel *label;

for(int i=1; i < xx.size(); i+=2)

{

QString zz = QString::fromStdString(xx[i]);

label = new QLabel;

label->setText(zz);

ui->table->setCellWidget(i/2, 0, label);

zz = QString::fromStdString(xx[i-1]);

label = new QLabel;

label->setText(zz);

ui->table->setCellWidget(i/2, 1, label);

}

delete ct;

}

DelQ::~DelQ()

{

delete ui;

}

void DelQ::on_closeButt_clicked()

{

this->close();

}

void DelQ::on_table_cellClicked(int row, int column)

{

ui->delButt->setEnabled(true);

delrow = row;

}

void DelQ::on_delButt_clicked()

{

creator_test *ct = new creator_test;

ct->del_q(name, delrow);

delete ct;

emit delqsig();

this->close();

}

#ifndef DOQ1_H

#define DOQ1_H

#include <QDialog>

#include "doq2.h"

#include "doq3.h"

#include "qation1.h"

#include <dotest.h>

namespace Ui {

class doq1;

}

class doq1 : public QDialog

{

Q_OBJECT

public:

explicit doq1(QWidget *parent = 0, string txt=0, int i=0, double d=0);

~doq1();

private slots:

void on_closeButt_clicked();

void on_nextButt_clicked();

private:

Ui::doq1 *ui;

string name;

int nom;

double diff;

};

#endif // DOQ1_H

#include "doq1.h"

#include "ui_doq1.h"

doq1::doq1(QWidget *parent, string txt, int i, double d) :

QDialog(parent),

ui(new Ui::doq1)

{

ui->setupUi(this);

name = txt;

nom = i;

diff=d;

dotest *dt=new dotest;

string ss=dt->load_q(name, nom-1);

qation1 *q1 = new qation1;

*q1 = dt->get_q1();

ui->textBrowser->setText(QString::fromStdString(q1->get_question()));

ui->textBrowser_2->setText(QString::fromStdString(q1->get_variant(0)));

ui->textBrowser_3->setText(QString::fromStdString(q1->get_variant(1)));

ui->textBrowser_4->setText(QString::fromStdString(q1->get_variant(2)));

ui->textBrowser_5->setText(QString::fromStdString(q1->get_variant(3)));

delete q1;

delete dt;

}

doq1::~doq1()

{

delete ui;

}

void doq1::on_closeButt_clicked()

{

dotest *dt = new dotest;

this->close();

stringstream qq;

qq<<diff;

string s,s1;

qq>>s;

qq.clear();

qq<<dt->do_max(name);

qq>>s1;

QMessageBox done;

string ggh="End, your marck: "+ s+" from "+s1;

done.setText(ggh.c_str());

done.addButton(QMessageBox::Ok);

done.exec();

delete dt;

}

void doq1::on_nextButt_clicked()

{

dotest *dt0 = new dotest;

dotest *dt = new dotest;

int t;

if (ui->radioButton->isChecked()) t=0;

else if (ui->radioButton_1->isChecked()) t=1;

else if (ui->radioButton_2->isChecked()) t=2;

else if (ui->radioButton_3->isChecked()) t=3;

string ss=dt0->load_q(name, nom-1);

qation1 *q1 = new qation1;

*q1 = dt0->get_q1();

delete q1;

double d4=diff;

if (t==q1->get_correct()) d4=d4+q1->get_dif();

delete dt0;

if(dt->do_size(name)-nom)

{

if (dt->load_q(name, nom)=="q1")

{

doq1 *d1 = new doq1(this, name, nom+1,d4);

d1->show();

}

else if (dt->load_q(name, nom)=="q2")

{

doq2 *d2 = new doq2(this, name, nom+1,d4);

d2->show();

}

else if (dt->load_q(name, nom)=="q3")

{

doq3 *d3 = new doq3(this, name, nom+1,d4);

d3->show();

}

}

else

{

stringstream qq;

qq<<d4;

string s;

qq>>s;

dt->user_v_fail(s);

qq.clear();

s.clear();

qq<<dt->do_max(name);

qq>>s;

dt->user_v_fail(s);

}

this->close();

if(!(dt->do_size(name)-nom))

{

stringstream qq;

qq<<d4;

string s,s1;

qq>>s;

qq.clear();

qq<<dt->do_max(name);

qq>>s1;

QMessageBox done;

string ggh="End, your marck: "+ s+" from "+s1;

done.setText(ggh.c_str());

done.addButton(QMessageBox::Ok);

done.exec();

}

delete dt;

}

#ifndef DOQ2_H

#define DOQ2_H

#include <QDialog>

#include "doq1.h"

#include "doq3.h"

#include "qation2.h"

#include <dotest.h>

namespace Ui {

class doq2;

}

class doq2 : public QDialog

{

Q_OBJECT

public:

explicit doq2(QWidget *parent = 0, string txt=0, int i=0,double d=0);

~doq2();

private slots:

void on_closeButt_clicked();

void on_nextButt_clicked();

private:

Ui::doq2 *ui;

string name;

int nom;

double diff;

};

#endif // DOQ2_H

#include "doq2.h"

#include "ui_doq2.h"

doq2::doq2(QWidget *parent, string txt, int i,double d) :

QDialog(parent),

ui(new Ui::doq2)

{

ui->setupUi(this);

name = txt;

nom = i;

diff=d;

dotest *dt=new dotest;

string ss=dt->load_q(name, nom-1);

qation2 *q2 = new qation2;

*q2 = dt->get_q2();

ui->textBrowser->setText(QString::fromStdString(q2->get_question()));

delete q2;

delete dt;

}

doq2::~doq2()

{

delete ui;

}

void doq2::on_closeButt_clicked()

{

dotest *dt = new dotest;

this->close();

stringstream qq;

qq<<diff;

string s,s1;

qq>>s;

qq.clear();

qq<<dt->do_max(name);

qq>>s1;

QMessageBox done;

string ggh="End, your marck: "+ s+" from "+s1;

done.setText(ggh.c_str());

done.addButton(QMessageBox::Ok);

done.exec();

delete dt;

}

void doq2::on_nextButt_clicked()

{

dotest *dt0 = new dotest;

dotest *dt = new dotest;

int t;

if (ui->radioButton->isChecked()) t=1;

else if (ui->radioButton_2->isChecked()) t=0;

string ss=dt0->load_q(name, nom-1);

qation2 *q1 = new qation2;

*q1 = dt0->get_q2();

double d4=diff;

if (t==q1->get_correct()) d4=d4+q1->get_dif();

delete q1;

delete dt0;

if(dt->do_size(name)-nom)

{

if (dt->load_q(name, nom)=="q1")

{

doq1 *d1 = new doq1(this, name, nom+1,d4);

d1->show();

}

else if (dt->load_q(name, nom)=="q2")

{

doq2 *d2 = new doq2(this, name, nom+1,d4);

d2->show();

}

else if (dt->load_q(name, nom)=="q3")

{

doq3 *d3 = new doq3(this, name, nom+1,d4);

d3->show();

}

}

else

{

stringstream qq;

qq<<d4;

string s;

qq>>s;

dt->user_v_fail(s);

qq.clear();

qq<<dt->do_max(name);

qq>>s;

dt->user_v_fail(s);

}

this->close();

if(!(dt->do_size(name)-nom))

{

stringstream qq;

qq<<d4;

string s,s1;

qq>>s;

qq.clear();

qq<<dt->do_max(name);

qq>>s1;

QMessageBox done;

string ggh="End, your marck: "+ s+" from "+s1;

done.setText(ggh.c_str());

done.addButton(QMessageBox::Ok);

done.exec();

}

delete dt;

}

#ifndef DOQ3_H

#define DOQ3_H

#include <QDialog>

#include "doq1.h"

#include "doq2.h"

#include "qation3.h"

#include <dotest.h>

namespace Ui {

class doq3;

}

class doq3 : public QDialog

{

Q_OBJECT

public:

explicit doq3(QWidget *parent = 0, string txt=0, int i=0,double d=0);

~doq3();

private slots:

void on_closeButt_clicked();

void on_nextButt_clicked();

private:

Ui::doq3 *ui;

string name;

int nom;

double diff;

};

#endif // DOQ3_H

#include "doq3.h"

#include "ui_doq3.h"

doq3::doq3(QWidget *parent, string txt, int i,double d) :

QDialog(parent),

ui(new Ui::doq3)

{

ui->setupUi(this);

name = txt;

nom = i;

diff=d;

dotest *dt=new dotest;

string ss=dt->load_q(name, nom-1);

qation3 *q3 = new qation3;

*q3 = dt->get_q3();

ui->textBrowser->setText(QString::fromStdString(q3->get_question()));

delete q3;

delete dt;

}

doq3::~doq3()

{

delete ui;

}

void doq3::on_closeButt_clicked()

{

dotest *dt = new dotest;

this->close();

stringstream qq;

qq<<diff;

string s,s1;

qq>>s;

qq.clear();

qq<<dt->do_max(name);

qq>>s1;

QMessageBox done;

string ggh="End, your marck: "+ s+" from "+s1;

done.setText(ggh.c_str());

done.addButton(QMessageBox::Ok);

done.exec();

delete dt;

}

void doq3::on_nextButt_clicked()

{

dotest *dt0 = new dotest;

dotest *dt = new dotest;

string ss=dt0->load_q(name, nom-1);

ss=ui->lineEdit->text().toStdString();

qation3 *q1 = new qation3;

*q1 = dt0->get_q3();

double d4=diff;

if (ss==q1->get_correct()) d4=d4+q1->get_dif();

delete q1;

delete dt0;

if(dt->do_size(name)-nom)

{

if (dt->load_q(name, nom)=="q1")

{

doq1 *d1 = new doq1(this, name, nom+1,d4);

d1->show();

}

else if (dt->load_q(name, nom)=="q2")

{

doq2 *d2 = new doq2(this, name, nom+1,d4);

d2->show();

}

else if (dt->load_q(name, nom)=="q3")

{

doq3 *d3 = new doq3(this, name, nom+1,d4);

d3->show();

}

}

else

{

stringstream qq;

qq<<d4;

string s;

qq>>s;

dt->user_v_fail(s);

qq.clear();

qq<<dt->do_max(name);

qq>>s;

dt->user_v_fail(s);

}

this->close();

if(!(dt->do_size(name)-nom))

{

stringstream qq;

qq<<d4;

string s,s1;

qq>>s;

qq.clear();

qq<<dt->do_max(name);

qq>>s1;

QMessageBox done;

string ggh="End, your marck: "+ s+" from "+s1;

done.setText(ggh.c_str());

done.addButton(QMessageBox::Ok);

done.exec();

}

delete dt;

}

#ifndef DOTEST_H

#define DOTEST_H

#include <fstream>

#include <vector>

#include <cstdlib>

#include "qation.h"

#include "qation1.h"

#include "qation2.h"

#include "qation3.h"

using namespace std;

class dotest {

private:

string name;

qation1 q1;

qation2 q2;

qation3 q3;

int tsize;

public:

void set_name(string nev);

void set_q1(string nam,double g,int i, string nev1, string nev2, string nev3, string nev4);

void set_q2(string nam,double d,int i);

void set_q3(string nam,double d,string nev);

void set_tsize(int nev);

string load_q(string txt,int n);

vector<string> show_all(string txt);

int do_size(string txt);

double do_dif(string txt);

void user_v_fail(string txt);

double do_max(string txt);

string get_name();

qation1 get_q1();

qation2 get_q2();

qation3 get_q3();

int get_tsize();

};

#endif // DOTEST_H

#include "dotest.h"

void dotest::set_name(string nev){name=nev;}

void dotest::set_tsize(int nev){tsize=nev;}

void dotest::set_q1(string nam,double g,int i, string nev1, string nev2, string nev3, string nev4){

q1.set_variant(0,nev1);

q1.set_variant(1,nev2);

q1.set_variant(2,nev3);

q1.set_variant(3,nev4);

q1.set_correct(i);

q1.set_question(nam);

q1.set_dif(g);

}

void dotest::set_q2(string nam,double d,int i){

q2.set_correct(i);

q2.set_question(nam);

q2.set_dif(d);

}

void dotest::set_q3(string nam,double d,string nev){

q3.set_correct(nev);

q3.set_question(nam);

q3.set_dif(d);

}

string dotest::get_name(){return name;}

qation1 dotest::get_q1(){return q1;}

qation2 dotest::get_q2(){return q2;}

qation3 dotest::get_q3(){return q3;}

int dotest::get_tsize(){return tsize;}

string dotest::load_q(string txt,int n){

int k=0;

vector<string> zz=show_all(txt);

for (int i=0; i<zz.size(); i++)

{ if((zz[i]=="q1")||(zz[i]=="q2")||(zz[i]=="q3")){

if ((k==n)&&(zz[i]=="q3")){

double f=atoi( zz[i+3].c_str());

set_q3(zz[i+1],f,zz[i+2]);

return "q3";

}

else if ((k==n)&&(zz[i]=="q2")){

int z=atoi( zz[i+2].c_str() );

double f=atoi( zz[i+3].c_str());

set_q2(zz[i+1],f,z);

return "q2";

}

else if ((k==n)&&(zz[i]=="q1")){

int z=atoi( zz[i+2].c_str() );

double f=atoi( zz[i+3].c_str());

set_q1(zz[i+1],f,z,zz[i+4],zz[i+5],zz[i+6],zz[i+7]);

return "q1";

}

k++;

}

}

}

vector<string> dotest::show_all(string txt){

vector<string> ss;

string BUF;

char buffer[150];

txt=txt+".txt";

ifstream k(txt.c_str());

if(!k){

cout<<"ne otkril-"<<"alltest.txt";

}

while (true){

k.getline(buffer,150,'\n');

if (k.eof()) break;

ss.push_back(buffer);

}

k.close();

return ss;

}

int dotest::do_size(string txt){

int k=0;

vector<string> zz=show_all(txt);

for (int i=0; i<zz.size(); i++)

if((zz[i]=="q1")||(zz[i]=="q2")||(zz[i]=="q3"))

k++;

set_tsize(k);

return k;

}

double dotest::do_dif(string txt){

double k=0;

vector<string> zz=show_all(txt);

for (int i=0; i<zz.size(); i++)

if((zz[i]=="q1")||(zz[i]=="q2")||(zz[i]=="q3"))

k+=(double)atoi(zz[i+3].c_str());

return k;

}

void dotest::user_v_fail(string txt)

{

ofstream k("users.txt", ios::app);

if(!k)

cout<<"ne otkril-"<<"users.txt";

k<<txt<<endl;

k.close();

}

double dotest::do_max(string txt){

double d=0;

vector<string> zz=show_all(txt);

for (int i=0; i<zz.size(); i++)

{ if((zz[i]=="q1")||(zz[i]=="q2")||(zz[i]=="q3")){

d+=(double)atoi(zz[i+3].c_str());

}

}

return d;

}

#ifndef MAINWINDOW_H

#define MAINWINDOW_H

#include <QMainWindow>

#include "privet.h"

#include "alltests.h"

#include "createname.h"

#include "resuser.h"

#include <QMessageBox>

#include "delq.h"

#include "dotest.h"

#include "doq1.h"

#include "doq2.h"

#include "doq3.h"

namespace Ui {

class MainWindow;

}

class MainWindow : public QMainWindow

{

Q_OBJECT

public:

explicit MainWindow(QWidget *parent = 0);

~MainWindow();

private slots:

void on_closeButt_clicked();

void on_userEdit_textChanged(const QString &arg1);

void on_okButt_clicked();

void on_testSearchButt_clicked();

void onrefresh();

void on_createButt_clicked();

void on_delButt_clicked();

void on_delqButt_clicked();

void delqcall();

void on_startButt_clicked();

void on_resButt_clicked();

void resusslot();

signals:

void delqsig();

void resussig();

private:

Ui::MainWindow *ui;

};

#endif // MAINWINDOW_H

#include "mainwindow.h"

#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :

QMainWindow(parent),

ui(new Ui::MainWindow)

{

ui->setupUi(this);

ui->startButt->setEnabled(false);

ui->passwordEdit->setEnabled(false);

connect(this, SIGNAL(delqsig()), this, SLOT(delqcall()));

connect(this, SIGNAL(resussig()), this, SLOT(resusslot()));

}

MainWindow::~MainWindow()

{

delete ui;

}

void MainWindow::on_closeButt_clicked()

{

close();

}

void MainWindow::on_userEdit_textChanged(const QString &arg1)

{

ui->passwordEdit->setEnabled(arg1.toStdString().length());

}

void MainWindow::on_okButt_clicked()

{

ui->testSearchButt->setEnabled(true);

ui->startButt->setEnabled(false);

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

QString user = ui->userEdit->text();

QString password = ui->passwordEdit->text();

//ui->userline->text()=password;

std::string userS = user.toStdString();

std::string passwordS = password.toStdString();

privet pr;

QString zz=QString::fromStdString(pr.do_status(userS,passwordS));

ui->statusLable->setText(zz);

if (pr.do_status(userS,passwordS)=="teacher")

{

ui->createButt->setEnabled(true);

ui->resButt->setEnabled(true);

}

else

{

ui->createButt->setEnabled(false);

ui->resButt->setEnabled(false);

ui->delButt->setEnabled(false);

ui->delqButt->setEnabled(false);

}

}

void MainWindow::on_testSearchButt_clicked()

{

allTests *at = new allTests(this);

at->show();

}

void MainWindow::onrefresh()

{

ifstream w("buf1.txt");

string ss;

getline(w, ss);

ui->testLabel->setText(QString::fromStdString(ss));

w.close();

ui->startButt->setEnabled(true);

if(ui->statusLable->text().toStdString() == "teacher")

{

ui->delButt->setEnabled(true);

ui->delqButt->setEnabled(true);

}

}

void MainWindow::on_createButt_clicked()

{

createName *cn = new createName(this);

cn->show();

}

void MainWindow::on_delButt_clicked()

{

ui->delButt->setEnabled(false);

ui->delqButt->setEnabled(false);

ui->startButt->setEnabled(false);

creator_test *ct = new creator_test;

ct->del_test(ui->testLabel->text().toStdString());

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

QMessageBox done;

done.setText("Your test has been deleted! You`re monster!");

done.addButton(QMessageBox::Ok);

done.exec();

delete ct;

}

void MainWindow::on_delqButt_clicked()

{

emit delqsig();

}

void MainWindow::delqcall()

{

DelQ *dq = new DelQ(this, ui->testLabel->text().toStdString());

dq->show();

}

void MainWindow::on_startButt_clicked()

{

dotest *dt = new dotest;

dt->user_v_fail(ui->userEdit->text().toStdString());

dt->user_v_fail(ui->testLabel->text().toStdString());

int i=0;

if(dt->do_size(ui->testLabel->text().toStdString()))

{

if (dt->load_q(ui->testLabel->text().toStdString(), i)=="q1")

{

doq1 *d1 = new doq1(this, ui->testLabel->text().toStdString(), i+1,0);

d1->show();

}

else if (dt->load_q(ui->testLabel->text().toStdString(), i)=="q2")

{

doq2 *d2 = new doq2(this, ui->testLabel->text().toStdString(), i+1,0);

d2->show();

}

else if (dt->load_q(ui->testLabel->text().toStdString(), i)=="q3")

{

doq3 *d3 = new doq3(this, ui->testLabel->text().toStdString(), i+1,0);

d3->show();

}

}

delete dt;

}

void MainWindow::on_resButt_clicked()

{

emit resussig();

}

void MainWindow::resusslot()

{

resuser *rs=new resuser(this);

rs->show();

}

#ifndef PRIVET_H

#define PRIVET_H

#include <string>

using namespace std;

class privet

{

private:

string user;

string password;

int status;

public:

void put_user(string nev);

void put_password(string nev);

void put_status(int nev);

string do_status(string name, string pas);

string get_user();

string get_password();

int get_status();

privet();

};

#endif

#include "privet.h"

void privet::put_user(string nev){user=nev;}

void privet::put_password(string nev){password=nev;}

void privet::put_status(int nev){status=nev;}

string privet::do_status(string name, string pas)

{

if ((name==user)&&(pas==password))

{

put_status(1);

return "teacher";

}

else

{

put_status(0);

return "student";

}

}

string privet::get_user(){return user;}

string privet::get_password(){return password;}

int privet::get_status(){return status;}

privet::privet()

{

status=-1;

user="master";

password="pas";

}

#ifndef QATION_H

#define QATION_H

#include <iostream>

#include <string>

#include <sstream>

#include <QMessageBox>

using namespace std;

class qation

{

private:

string question;

double difficalt;

public:

void set_question (string nev);

void set_dif (double nev);

string get_question ();

double get_dif ();

};

#endif // QATION_H

#include "qation.h"

void qation::set_question (string nev) { question = nev;}

void qation::set_dif (double nev){difficalt=nev;}

string qation::get_question () { return question; }

double qation::get_dif (){return difficalt;}

#ifndef QATION1_H

#define QATION1_H

#include "qation.h"

class qation1: public qation

{

private:

string variant[4];

int correct;

public:

void set_variant(int i,string nev);

void set_correct(int nev);

string get_variant(int i);

int get_correct();

};

#endif // QATION1_H

#include "qation1.h"

void qation1::set_variant(int i, string nev){variant[i]=nev;}

void qation1::set_correct(int nev){correct=nev;}

string qation1::get_variant(int i){return variant[i];}

int qation1::get_correct(){return correct;}

#ifndef QATION1F_H

#define QATION1F_H

#include <QDialog>

#include "creatortest.h"

#include "qation2f.h"

#include "qation3f.h"

namespace Ui {

class qation1f;

}

class qation1f : public QDialog

{

Q_OBJECT

public:

explicit qation1f(QWidget *parent = 0, string newname=0);

~qation1f();

private slots:

void on_pushButt_clicked();

void on_pushButton_clicked();

void on_pushButton_2_clicked();

void on_pushButton_3_clicked();

private:

Ui::qation1f *ui;

string name;

};

#endif // QATION1F_H

#include "qation1f.h"

#include "ui_qation1f.h"

qation1f::qation1f(QWidget *parent, string newname) :

QDialog(parent),

ui(new Ui::qation1f)

{

ui->setupUi(this);

name = newname;

}

qation1f::~qation1f()

{

delete ui;

}

void qation1f::on_pushButt_clicked()

{

this->close();

}

void qation1f::on_pushButton_clicked()

{

creator_test *ct = new creator_test;

int i;

if(ui->radioButton_a->isChecked())

i=0;

else if(ui->radioButton_b->isChecked())

i=1;

else if(ui->radioButton_c->isChecked())

i=2;

else if(ui->radioButton_d->isChecked())

i=3;

ct->set_q1(ui->lineEdit->text().toStdString(), (double)ui->spinBox->value(), i, ui->lineEdit_2->text().toStdString(), ui->lineEdit_3->text().toStdString(), ui->lineEdit_4->text().toStdString(), ui->lineEdit_5->text().toStdString());

ct->add_q1(name);

delete ct;

qation1f *q1f=new qation1f(this, name);

q1f->show();

this->close();

}

void qation1f::on_pushButton_2_clicked()

{

creator_test *ct = new creator_test;

int i;

if(ui->radioButton_a->isChecked())

i=0;

else if(ui->radioButton_b->isChecked())

i=1;

else if(ui->radioButton_c->isChecked())

i=2;

else if(ui->radioButton_d->isChecked())

i=3;

ct->set_q1(ui->lineEdit->text().toStdString(), (double)ui->spinBox->value(), i, ui->lineEdit_2->text().toStdString(), ui->lineEdit_3->text().toStdString(), ui->lineEdit_4->text().toStdString(), ui->lineEdit_5->text().toStdString());

ct->add_q1(name);

delete ct;

qation2f *q1f=new qation2f(this, name);

q1f->show();

this->close();

}

void qation1f::on_pushButton_3_clicked()

{

creator_test *ct = new creator_test;

int i;

if(ui->radioButton_a->isChecked())

i=0;

else if(ui->radioButton_b->isChecked())

i=1;

else if(ui->radioButton_c->isChecked())

i=2;

else if(ui->radioButton_d->isChecked())

i=3;

ct->set_q1(ui->lineEdit->text().toStdString(), (double)ui->spinBox->value(), i, ui->lineEdit_2->text().toStdString(), ui->lineEdit_3->text().toStdString(), ui->lineEdit_4->text().toStdString(), ui->lineEdit_5->text().toStdString());

ct->add_q1(name);

delete ct;

qation3f *q1f=new qation3f(this, name);

q1f->show();

this->close();

}

#ifndef QATION2_H

#define QATION2_H

#include "qation.h"

class qation2: public qation

{

private:

int correct;

public:

void set_correct(int nev);

int get_correct();

};

#endif // QATION2_H

#include "qation2.h"

void qation2::set_correct(int nev){correct=nev;}

int qation2::get_correct(){return correct;}

#ifndef QATION2F_H

#define QATION2F_H

#include <QDialog>

#include "qation1f.h"

#include "qation3f.h"

namespace Ui {

class qation2f;

}

class qation2f : public QDialog

{

Q_OBJECT

public:

explicit qation2f(QWidget *parent = 0, string newname=0);

~qation2f();

private slots:

void on_pushButt_clicked();

void on_pushButton_clicked();

void on_pushButton_2_clicked();

void on_pushButton_3_clicked();

private:

Ui::qation2f *ui;

string name;

};

#endif // QATION2F_H

#include "qation2f.h"

#include "ui_qation2f.h"

qation2f::qation2f(QWidget *parent, string newname) :

QDialog(parent),

ui(new Ui::qation2f)

{

ui->setupUi(this);

name = newname;

}

qation2f::~qation2f()

{

delete ui;

}

void qation2f::on_pushButt_clicked()

{

this->close();

}

void qation2f::on_pushButton_clicked()

{

creator_test *ct = new creator_test;

int i;

if(ui->radioButton_yes->isChecked())

i=1;

else if(ui->radioButton_no->isChecked())

i=0;

ct->set_q2(ui->lineEdit->text().toStdString(), (double)ui->spinBox->value(), i);

ct->add_q2(name);

delete ct;

qation1f *q1f=new qation1f(this, name);

q1f->show();

this->close();

}

void qation2f::on_pushButton_2_clicked()

{

creator_test *ct = new creator_test;

int i;

if(ui->radioButton_yes->isChecked())

i=1;

else if(ui->radioButton_no->isChecked())

i=0;

ct->set_q2(ui->lineEdit->text().toStdString(), (double)ui->spinBox->value(), i);

ct->add_q2(name);

delete ct;

qation2f *q1f=new qation2f(this, name);

q1f->show();

this->close();

}

void qation2f::on_pushButton_3_clicked()

{

creator_test *ct = new creator_test;

int i;

if(ui->radioButton_yes->isChecked())

i=1;

else if(ui->radioButton_no->isChecked())

i=0;

ct->set_q2(ui->lineEdit->text().toStdString(), (double)ui->spinBox->value(), i);

ct->add_q2(name);

delete ct;

qation3f *q1f=new qation3f(this, name);

q1f->show();

this->close();

}

#ifndef QATION3_H

#define QATION3_H

#include "qation.h"

class qation3: public qation

{

private:

string correct;

public:

void set_correct(string nev);

string get_correct();

};

#endif // QATION3_H

#include "qation3.h"

void qation3::set_correct(string nev){correct=nev;}

string qation3::get_correct(){return correct;}

#ifndef QATION3F_H

#define QATION3F_H

#include <QDialog>

#include "qation2f.h"

#include "qation1f.h"

namespace Ui {

class qation3f;

}

class qation3f : public QDialog

{

Q_OBJECT

public:

explicit qation3f(QWidget *parent = 0, string newname=0);

~qation3f();

private slots:

void on_pushButt_clicked();

void on_pushButton_clicked();

void on_pushButton_2_clicked();

void on_pushButton_3_clicked();

private:

Ui::qation3f *ui;

string name;

};

#endif // QATION3F_H

#include "qation3f.h"

#include "ui_qation3f.h"

qation3f::qation3f(QWidget *parent, string newname) :

QDialog(parent),

ui(new Ui::qation3f)

{

ui->setupUi(this);

name = newname;

}

qation3f::~qation3f()

{

delete ui;

}

void qation3f::on_pushButt_clicked()

{

this->close();

}

void qation3f::on_pushButton_clicked()

{

creator_test *ct = new creator_test;

ct->set_q3(ui->lineEdit->text().toStdString(), (double)ui->spinBox->value(), ui->lineEdit_2->text().toStdString());

ct->add_q3(name);

delete ct;

qation1f *q1f=new qation1f(this, name);

q1f->show();

this->close();

}

void qation3f::on_pushButton_2_clicked()

{

creator_test *ct = new creator_test;

ct->set_q3(ui->lineEdit->text().toStdString(), (double)ui->spinBox->value(), ui->lineEdit_2->text().toStdString());

ct->add_q3(name);

delete ct;

qation2f *q1f=new qation2f(this, name);

q1f->show();

this->close();

}

void qation3f::on_pushButton_3_clicked()

{

creator_test *ct = new creator_test;

ct->set_q3(ui->lineEdit->text().toStdString(), (double)ui->spinBox->value(), ui->lineEdit_2->text().toStdString());

ct->add_q3(name);

delete ct;

qation3f *q1f=new qation3f(this, name);

q1f->show();

this->close();

}

#ifndef RESUSER_H

#define RESUSER_H

#include <QDialog>

#include "creatortest.h"

#include <QLabel>

namespace Ui {

class resuser;

}

class resuser : public QDialog

{

Q_OBJECT

public:

explicit resuser(QWidget *parent = 0);

~resuser();

private slots:

void on_closeButt_clicked();

void on_pushButton_clicked();

signals:

void resussig();

private:

Ui::resuser *ui;

};

#endif // RESUSER_H

#include "resuser.h"

#include "ui_resuser.h"

resuser::resuser(QWidget *parent) :

QDialog(parent),

ui(new Ui::resuser)

{

ui->setupUi(this);

connect(this, SIGNAL(resussig()), this->parent(), SLOT(resusslot()));

creator_test *ct = new creator_test;

vector<string> xx = ct->show_all("users");

ui->table->setRowCount(xx.size()/4);

QLabel *label;

for(int i=0; i < xx.size(); i+=4)

{

QString zz = QString::fromStdString(xx[i]);

label = new QLabel;

label->setText(zz);

ui->table->setCellWidget(i/4, 0, label);

zz = QString::fromStdString(xx[i+1]);

label = new QLabel;

label->setText(zz);

ui->table->setCellWidget(i/4, 1, label);

zz = QString::fromStdString(xx[i+2]);

label = new QLabel;

label->setText(zz);

ui->table->setCellWidget(i/4, 2, label);

zz = QString::fromStdString(xx[i+3]);

label = new QLabel;

label->setText(zz);

ui->table->setCellWidget(i/4, 3, label);

}

delete ct;

}

resuser::~resuser()

{

delete ui;

}

void resuser::on_closeButt_clicked()

{

this->close();

}

void resuser::on_pushButton_clicked()

{

ofstream k("users.txt");

if(!k)

cout<<"ne otkril-"<<"users.txt";

k.close();

this->close();

emit resussig();

}