#include "student.h"
Student::Student()
{
s_name = QObject::tr("Unknown");
s_number = 0;
s_score = 0;
s_ready = false;
s_results = new QMap<QString, QuestionAnswer>;
}
Student::Student(int number)
{
s_name = QObject::tr("Unknown");
s_number = number;
s_score = 0;
s_ready = false;
s_results = new QMap<QString, QuestionAnswer>;
}
Student::Student(QString name)
{
s_name = name;
s_number = 0;
s_score = 0;
s_ready = false;
s_results = new QMap<QString, QuestionAnswer>;
}
Student::Student(int number, QString name)
{
s_name = name;
s_number = number;
s_score = 0;
s_ready = false;
s_results = new QMap<QString, QuestionAnswer>;
}
Student::Student(Client * client)
{
s_name = client->name();
s_number = client->number();
s_score = client->score();
s_ready = client->isReady();
s_results = new QMap<QString, QuestionAnswer> (*(client->results()));
}
Student::Student(Student * student)
{
s_name = student->name();
s_number = student->number();
s_score = student->score();
s_ready = student->isReady();
s_results = new QMap<QString, QuestionAnswer> (*(student->results()));
}
Student::~Student()
{
if (s_results) delete s_results;
}
void Student::setName(QString name) { s_name = name; }
QString Student::name() { return s_name; }
void Student::setNumber(int number) { s_number = number; }
int Student::number() { return s_number; }
void Student::setScore(int score) { s_score = score; }
int Student::score() { return s_score; }
void Student::setReady(bool ready) { s_ready = ready; }
bool Student::isReady() { return s_ready; }
void Student::setResults(QMap<QString, QuestionAnswer> * results)
{
delete s_results;
s_results = results;
}
QMap<QString, QuestionAnswer> * Student::results() { return s_results; }
QString Student::studentData()
{
QString out;
out.append("[STUDENT]\n");
out.append(s_name);
out.append(s_ready ? "\ntrue" : "\nfalse");
out.append(QString("\n%1\n").arg(s_number));
out.append(QString("%1\n").arg(s_score));
out.append(QString("%1").arg(s_results->count()));
QMapIterator<QString, QuestionAnswer> i(*s_results); QuestionAnswer qans;
while (i.hasNext()) { i.next();
qans = i.value();
out.append(QString("\n%1").arg(i.key()));
out.append(QString("\n%1").arg(qans.answered()));
out.append(QString("\n%1").arg(qans.correctAnswer()));
}
return out;
}
bool Student::wasAsked(QString qname)
{
QMapIterator<QString, QuestionAnswer> i(*s_results);
while (i.hasNext()) { i.next();
if (i.key() == qname) { return true; }
}
return false;
}
uint Student::replaceOccurrences(QString old_qname, QString new_qname)
{
QuestionAnswer qans = s_results->value(old_qname, QuestionAnswer());
uint n = s_results->remove(old_qname);
if (n > 0) { s_results->insert(new_qname, qans); }
return n;
}