Опис класів
#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();
}
