gradepage documentation, using qlist
This commit is contained in:
parent
054237a667
commit
8d5385f99e
10 changed files with 202 additions and 157 deletions
|
@ -33,7 +33,7 @@ coursesTableManager::~coursesTableManager()
|
||||||
*/
|
*/
|
||||||
void coursesTableManager::insertJceCoursesIntoTable()
|
void coursesTableManager::insertJceCoursesIntoTable()
|
||||||
{
|
{
|
||||||
for (gradeCourse *c: *gp->getCourses())
|
for (gradeCourse *c: gp->getCourses())
|
||||||
{
|
{
|
||||||
if (us->getInfluenceCourseOnly())
|
if (us->getInfluenceCourseOnly())
|
||||||
{
|
{
|
||||||
|
@ -69,7 +69,7 @@ bool coursesTableManager::changes(QString change, int row, int col)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
int serialCourse = courseTBL->item(row,gradeCourse::CourseScheme::SERIAL)->text().toInt();
|
int serialCourse = courseTBL->item(row,gradeCourse::CourseScheme::SERIAL)->text().toInt();
|
||||||
for (gradeCourse *c: *gp->getCourses())
|
for (gradeCourse *c: gp->getCourses())
|
||||||
{
|
{
|
||||||
if (c->getSerialNum() == serialCourse)
|
if (c->getSerialNum() == serialCourse)
|
||||||
{
|
{
|
||||||
|
@ -267,7 +267,7 @@ void coursesTableManager::influnceCourseChanged(bool ignoreCourseStatus)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (this->gp != NULL)
|
if (this->gp != NULL)
|
||||||
for (gradeCourse *c: *gp->getCourses())
|
for (gradeCourse *c: gp->getCourses())
|
||||||
{
|
{
|
||||||
if (!(isCourseAlreadyInserted(c->getSerialNum())))
|
if (!(isCourseAlreadyInserted(c->getSerialNum())))
|
||||||
if (c->getPoints() == 0)
|
if (c->getPoints() == 0)
|
||||||
|
@ -295,7 +295,7 @@ void coursesTableManager::clearTable()
|
||||||
gradeCourse *coursesTableManager::getCourseByRow(int row)
|
gradeCourse *coursesTableManager::getCourseByRow(int row)
|
||||||
{
|
{
|
||||||
QString courseSerial = courseTBL->item(row,gradeCourse::CourseScheme::SERIAL)->text();
|
QString courseSerial = courseTBL->item(row,gradeCourse::CourseScheme::SERIAL)->text();
|
||||||
for (gradeCourse *c: *gp->getCourses())
|
for (gradeCourse *c: gp->getCourses())
|
||||||
{
|
{
|
||||||
if (c->getSerialNum() == courseSerial.toDouble())
|
if (c->getSerialNum() == courseSerial.toDouble())
|
||||||
return c;
|
return c;
|
||||||
|
|
|
@ -2,7 +2,6 @@
|
||||||
|
|
||||||
calendarExam::calendarExam()
|
calendarExam::calendarExam()
|
||||||
{
|
{
|
||||||
exams = NULL;
|
|
||||||
htmlDataHolderParsed = "";
|
htmlDataHolderParsed = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13,10 +12,7 @@ calendarExam::calendarExam()
|
||||||
void calendarExam::setPage(QString html)
|
void calendarExam::setPage(QString html)
|
||||||
{
|
{
|
||||||
examsCounter = 0;
|
examsCounter = 0;
|
||||||
if (exams == NULL)
|
exams.clear();
|
||||||
exams = new QList<calendarExamCourse*>();
|
|
||||||
else
|
|
||||||
exams->clear();
|
|
||||||
this->htmlDataHolderParsed = getString(html);
|
this->htmlDataHolderParsed = getString(html);
|
||||||
examListInit(htmlDataHolderParsed);
|
examListInit(htmlDataHolderParsed);
|
||||||
}
|
}
|
||||||
|
@ -38,15 +34,15 @@ void calendarExam::examListInit(QString &linesTokinzedString)
|
||||||
{
|
{
|
||||||
calendarExamCourse *cTemp = lineToCourse(tempToken);
|
calendarExamCourse *cTemp = lineToCourse(tempToken);
|
||||||
if (cTemp != NULL)
|
if (cTemp != NULL)
|
||||||
this->exams->push_back(cTemp);
|
this->exams.push_back(cTemp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief calendarExam::lineToCourse getting line of exam with data and make it an object containing data (date, time, course name and etc)
|
* @brief calendarExam::lineToCourse getting line of exam with data and make it an object containing data (date, time, course name and etc)
|
||||||
* @param line
|
* @param line - parsed line with tabs between each relevant data
|
||||||
* @return
|
* @return object of examcourse with its data
|
||||||
*/
|
*/
|
||||||
calendarExamCourse *calendarExam::lineToCourse(QString line)
|
calendarExamCourse *calendarExam::lineToCourse(QString line)
|
||||||
{
|
{
|
||||||
|
|
|
@ -8,14 +8,21 @@
|
||||||
#include <QStringList>
|
#include <QStringList>
|
||||||
#include <QList>
|
#include <QList>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief The calendarExam class
|
||||||
|
*
|
||||||
|
* This class generating html string to a list of examcourses
|
||||||
|
* Each item in a list is a course with its information (hour, day, name, serial and etc)
|
||||||
|
*
|
||||||
|
* Made By liran ben gida, LiranBG@gmail.com On 08/10/2014
|
||||||
|
*/
|
||||||
class calendarExam : public Page
|
class calendarExam : public Page
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
calendarExam();
|
calendarExam();
|
||||||
void setPage(QString html);
|
void setPage(QString html);
|
||||||
|
|
||||||
QList<calendarExamCourse*>* getExams() { return exams; }
|
QList<calendarExamCourse*> getExams() { return exams; }
|
||||||
int getExamsCounter() const;
|
int getExamsCounter() const;
|
||||||
|
|
||||||
|
|
||||||
|
@ -26,7 +33,7 @@ private:
|
||||||
calendarExamCourse * lineToCourse(QString line);
|
calendarExamCourse * lineToCourse(QString line);
|
||||||
|
|
||||||
QString htmlDataHolderParsed;
|
QString htmlDataHolderParsed;
|
||||||
QList<calendarExamCourse*> *exams;
|
QList<calendarExamCourse*> exams;
|
||||||
|
|
||||||
int examsCounter; //not including madei b
|
int examsCounter; //not including madei b
|
||||||
};
|
};
|
||||||
|
|
|
@ -13,6 +13,17 @@
|
||||||
#define HOUR_DEFAULT_STRING "00:00"
|
#define HOUR_DEFAULT_STRING "00:00"
|
||||||
#define SECOND_DATE_DEFAULT_STRING "nullSECOND_DATE"
|
#define SECOND_DATE_DEFAULT_STRING "nullSECOND_DATE"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief The calendarExamCourse class
|
||||||
|
*
|
||||||
|
* This class holds each exam course
|
||||||
|
* the course scheme can be found below, inside the enum ExamScheme
|
||||||
|
*
|
||||||
|
* The class's constructor gets the data and manipulate it into an object
|
||||||
|
* with its relevant information.
|
||||||
|
*
|
||||||
|
* Made By liran ben gida, LiranBG@gmail.com On 08/10/2014
|
||||||
|
*/
|
||||||
class calendarExamCourse : public Course
|
class calendarExamCourse : public Course
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
#include "examDialog.h"
|
#include "examDialog.h"
|
||||||
#include "ui_examDialog.h"
|
#include "ui_examDialog.h"
|
||||||
|
/**
|
||||||
|
* @brief examDialog::examDialog
|
||||||
|
* @param parent
|
||||||
|
* @param calSchedPtr - list of courses with information about each exam
|
||||||
|
*/
|
||||||
examDialog::examDialog(QWidget *parent, calendarExam *calSchedPtr) : QDialog(parent),
|
examDialog::examDialog(QWidget *parent, calendarExam *calSchedPtr) : QDialog(parent),
|
||||||
ui(new Ui::examDialog)
|
ui(new Ui::examDialog)
|
||||||
{
|
{
|
||||||
|
@ -20,6 +24,11 @@ examDialog::examDialog(QWidget *parent, calendarExam *calSchedPtr) : QDialog(par
|
||||||
this->setModal(true);
|
this->setModal(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief examDialog::initializingDataIntoTable
|
||||||
|
*
|
||||||
|
* Inserting each object of exam into the table
|
||||||
|
*/
|
||||||
void examDialog::initializingDataIntoTable()
|
void examDialog::initializingDataIntoTable()
|
||||||
{
|
{
|
||||||
ui->tableWidget->setRowCount(exams->getExamsCounter());
|
ui->tableWidget->setRowCount(exams->getExamsCounter());
|
||||||
|
@ -31,7 +40,7 @@ void examDialog::initializingDataIntoTable()
|
||||||
QTimeEdit *firstHourbegin;
|
QTimeEdit *firstHourbegin;
|
||||||
QDateEdit *secondDate;
|
QDateEdit *secondDate;
|
||||||
QTimeEdit *secondHourbegin;
|
QTimeEdit *secondHourbegin;
|
||||||
for (calendarExamCourse * tempExam: *exams->getExams())
|
for (calendarExamCourse * tempExam: exams->getExams())
|
||||||
{
|
{
|
||||||
j=0;
|
j=0;
|
||||||
lecturer = new QTableWidgetItem();
|
lecturer = new QTableWidgetItem();
|
||||||
|
|
|
@ -10,6 +10,16 @@ namespace Ui {
|
||||||
class examDialog;
|
class examDialog;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief The examDialog class
|
||||||
|
*
|
||||||
|
* This class preseting a Dialog with dates, information and time of exams
|
||||||
|
*
|
||||||
|
* This dialog main goal is to let the user an option to edit and see the containing data of his exam schedule.
|
||||||
|
* The user will be able to export the exam schedule into .CSV file through CalendarTab
|
||||||
|
*
|
||||||
|
* Made By liran ben gida, LiranBG@gmail.com On 08/10/2014
|
||||||
|
*/
|
||||||
class examDialog : public QDialog
|
class examDialog : public QDialog
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
/**
|
/**
|
||||||
* JCE Manager (C)
|
* JCE Manager (C)
|
||||||
*
|
*
|
||||||
* This QDialog widget will hold the dates of a Semester, Start and End.
|
* This QDialog widget hold the dates of a Semester, Start and End.
|
||||||
*
|
*
|
||||||
* this dialog will help the csv_exporter class to export a CSV file that will contain
|
* this dialog will help the csv_exporter class to export a CSV file that will contain
|
||||||
* all the courses within that period of time.
|
* all the courses within that period of time.
|
||||||
|
*
|
||||||
|
* Made By Sagi Dayan, sagidayan@gmail.com On 22/09/2014
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef CALENDARDIALOG_H
|
#ifndef CALENDARDIALOG_H
|
||||||
|
@ -18,17 +20,6 @@ namespace Ui {
|
||||||
class CalendarDialog;
|
class CalendarDialog;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief The CalendarDialog class
|
|
||||||
*
|
|
||||||
* This class preseting a Dialog with selection of dates
|
|
||||||
* The user has to choose between a starting point of semester to the end.
|
|
||||||
*
|
|
||||||
* This dialog main goal is to let the user an option to export his CSV
|
|
||||||
* containing data of his schedule.
|
|
||||||
*
|
|
||||||
* Made By Sagi Dayan, sagidayan@gmail.com On 22/09/2014
|
|
||||||
*/
|
|
||||||
class CalendarDialog : public QDialog
|
class CalendarDialog : public QDialog
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
|
@ -8,9 +8,6 @@
|
||||||
* LiranBG@gmail.com
|
* LiranBG@gmail.com
|
||||||
*/
|
*/
|
||||||
#include "../course.h"
|
#include "../course.h"
|
||||||
#include <string>
|
|
||||||
#include <iostream>
|
|
||||||
#include <list>
|
|
||||||
|
|
||||||
#define COURSE_FIELDS 10
|
#define COURSE_FIELDS 10
|
||||||
#define NO_GRADE_YET 101;
|
#define NO_GRADE_YET 101;
|
||||||
|
|
|
@ -5,165 +5,185 @@ static int minYear = 9999;
|
||||||
|
|
||||||
GradePage::GradePage(QString html) : Page()
|
GradePage::GradePage(QString html) : Page()
|
||||||
{
|
{
|
||||||
courses = new std::list<gradeCourse*>();
|
tempHtml = getString(html);
|
||||||
tempHtml = getString(html);
|
coursesListInit(tempHtml);
|
||||||
coursesListInit(tempHtml);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
GradePage::~GradePage()
|
GradePage::~GradePage()
|
||||||
{
|
{
|
||||||
for(Course* c : *courses)
|
for (Course* c : courses)
|
||||||
delete c;
|
delete c;
|
||||||
delete courses;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief GradePage::removeCourse
|
||||||
|
* @param courseSerialID - course ID to remove
|
||||||
|
*/
|
||||||
void GradePage::removeCourse(QString courseSerialID)
|
void GradePage::removeCourse(QString courseSerialID)
|
||||||
{
|
{
|
||||||
for(gradeCourse* c : *courses)
|
for(gradeCourse* c : courses)
|
||||||
{
|
{
|
||||||
if (c->getSerialNum() == courseSerialID.toInt())
|
if (c->getSerialNum() == courseSerialID.toInt())
|
||||||
{
|
{
|
||||||
courses->remove(c);
|
courses.removeAll(c);
|
||||||
delete c;
|
delete c;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief GradePage::coursesListInit
|
||||||
|
* using lineToCourse function, its making a list of gradeCourse object from a given string of information
|
||||||
|
* @param linesTokinzedString list of courses, tokenized by lines. containing data of each course
|
||||||
|
*/
|
||||||
void GradePage::coursesListInit(QString &linesTokinzedString)
|
void GradePage::coursesListInit(QString &linesTokinzedString)
|
||||||
{
|
{
|
||||||
std::list<QString> stringHolder;
|
QString tempToken;
|
||||||
QString temp;
|
|
||||||
gradeCourse* cTemp = NULL;
|
QStringList holder = linesTokinzedString.split("\n");
|
||||||
char* tok;
|
QStringList::iterator iterator;
|
||||||
char* textToTok = strdup(linesTokinzedString.toStdString().c_str());
|
for (iterator = holder.begin(); iterator != holder.end(); ++iterator)
|
||||||
tok = strtok(textToTok,"\n");
|
|
||||||
while (tok != NULL) //putting every line in a string holder before parsing it
|
|
||||||
{
|
{
|
||||||
temp = tok;
|
tempToken = (*iterator);
|
||||||
stringHolder.push_back(temp);
|
if ((!tempToken.isEmpty()) && (tempToken.length() > 1))
|
||||||
tok = strtok(NULL, "\n");
|
{
|
||||||
}
|
gradeCourse *cTemp = lineToCourse(tempToken);
|
||||||
for (QString temp: stringHolder)
|
if (cTemp != NULL)
|
||||||
{
|
this->courses.push_back(cTemp);
|
||||||
cTemp = lineToCourse(temp);
|
}
|
||||||
if (cTemp != NULL)
|
|
||||||
courses->push_back(cTemp);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief GradePage::lineToCourse
|
||||||
|
* making an object of gradepage with the given information from string
|
||||||
|
* @param line - lines tokenized by tabs containing each course information (year, serial, name, points and etc..)
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
gradeCourse* GradePage::lineToCourse(QString line)
|
gradeCourse* GradePage::lineToCourse(QString line)
|
||||||
{
|
{
|
||||||
gradeCourse *tempC = NULL;
|
gradeCourse *tempC = NULL;
|
||||||
QString templinearray[COURSE_FIELDS];//[serial,name,type,points,hours,grade,additions]
|
QString templinearray[COURSE_FIELDS];//[year,semester,numInList,serial,name,type,points,hours,grade,additions]
|
||||||
int serial,year,semester,courseNumInList;
|
int serial,year,semester,courseNumInList;
|
||||||
double points,hours,grade;
|
double points,hours,grade;
|
||||||
QString name,type, additions;
|
QString name,type, additions;
|
||||||
QString tempS = "";
|
|
||||||
int i = 0;
|
QString tempToken;
|
||||||
char* tok;
|
int i = 0;
|
||||||
char* cLine = strdup(line.toStdString().c_str());
|
QStringList holder = line.split("\t");
|
||||||
tok = strtok(cLine, "\t");
|
QStringList::iterator iterator;
|
||||||
while(tok != NULL)
|
for (iterator = holder.begin(); iterator != holder.end(); ++iterator)
|
||||||
{
|
{
|
||||||
tempS = tok;
|
|
||||||
|
|
||||||
if (i == gradeCourse::CourseScheme::SERIAL) //we need to extract the serial manually
|
tempToken = (*iterator);
|
||||||
|
tempToken = tempToken.trimmed();
|
||||||
|
//we are checking it because in GPA, serial and course name are mixed
|
||||||
|
if (i == gradeCourse::CourseScheme::SERIAL)
|
||||||
{
|
{
|
||||||
tempS = "";
|
QString tempDataOfSerialCourseName;
|
||||||
char *tokTemp;
|
|
||||||
tokTemp = tok;
|
|
||||||
while (!(isdigit((int)*tokTemp))) //getting to serial number starting pointer
|
|
||||||
tokTemp++;
|
|
||||||
|
|
||||||
while (isdigit((int)*tokTemp)) //serial number
|
//getting serial
|
||||||
|
QStringList secHolder = tempToken.split(" ");
|
||||||
|
QStringList::iterator secIterator = secHolder.begin();
|
||||||
|
tempDataOfSerialCourseName = *secIterator;
|
||||||
|
templinearray[i] = tempDataOfSerialCourseName.trimmed();
|
||||||
|
//getting course name;
|
||||||
|
++secIterator;
|
||||||
|
tempDataOfSerialCourseName.clear();
|
||||||
|
while (secIterator != secHolder.end())
|
||||||
{
|
{
|
||||||
tempS += QString(*tokTemp);
|
tempDataOfSerialCourseName.append(*secIterator + " ");
|
||||||
tokTemp++;
|
secIterator++;
|
||||||
}
|
}
|
||||||
templinearray[i] = tempS.trimmed();
|
templinearray[++i] = tempDataOfSerialCourseName.trimmed();
|
||||||
templinearray[i+1] = QString(tokTemp).trimmed();
|
|
||||||
i +=2; //skipping on serial and course name
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
templinearray[i] = tempS.trimmed();
|
templinearray[i] = tempToken;
|
||||||
i++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (i == COURSE_FIELDS)
|
i++;
|
||||||
break;
|
if (i >= COURSE_FIELDS)
|
||||||
tok=strtok(NULL, "\t");
|
break;
|
||||||
}
|
}
|
||||||
if (templinearray[0] == "") //empty parsing
|
|
||||||
|
if (templinearray[0] == "") //empty parsing
|
||||||
{
|
{
|
||||||
qCritical() << Q_FUNC_INFO << "empty parsing";
|
qCritical() << Q_FUNC_INFO << "empty parsing";
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
year = templinearray[gradeCourse::CourseScheme::YEAR].toInt();
|
year = templinearray[gradeCourse::CourseScheme::YEAR].toInt();
|
||||||
semester = templinearray[gradeCourse::CourseScheme::SEMESTER].toInt();
|
semester = templinearray[gradeCourse::CourseScheme::SEMESTER].toInt();
|
||||||
courseNumInList = templinearray[gradeCourse::CourseScheme::COURSE_NUMBER_IN_LIST].toInt();
|
courseNumInList = templinearray[gradeCourse::CourseScheme::COURSE_NUMBER_IN_LIST].toInt();
|
||||||
serial = templinearray[gradeCourse::CourseScheme::SERIAL].toInt();
|
serial = templinearray[gradeCourse::CourseScheme::SERIAL].toInt();
|
||||||
|
|
||||||
name = templinearray[gradeCourse::CourseScheme::NAME];
|
name = templinearray[gradeCourse::CourseScheme::NAME];
|
||||||
type = templinearray[gradeCourse::CourseScheme::TYPE];
|
type = templinearray[gradeCourse::CourseScheme::TYPE];
|
||||||
|
|
||||||
points = templinearray[gradeCourse::CourseScheme::POINTS].toDouble();
|
points = templinearray[gradeCourse::CourseScheme::POINTS].toDouble();
|
||||||
hours = templinearray[gradeCourse::CourseScheme::HOURS].toDouble();
|
hours = templinearray[gradeCourse::CourseScheme::HOURS].toDouble();
|
||||||
|
|
||||||
if (isGradedYet(templinearray[gradeCourse::CourseScheme::GRADE]))
|
if (isGradedYet(templinearray[gradeCourse::CourseScheme::GRADE]))
|
||||||
grade = templinearray[gradeCourse::CourseScheme::GRADE].toDouble();
|
grade = templinearray[gradeCourse::CourseScheme::GRADE].toDouble();
|
||||||
else
|
else
|
||||||
grade = NO_GRADE_YET;
|
grade = NO_GRADE_YET;
|
||||||
|
|
||||||
additions = templinearray[gradeCourse::CourseScheme::ADDITION];
|
additions = templinearray[gradeCourse::CourseScheme::ADDITION];
|
||||||
|
|
||||||
if (year >= maxYear)
|
if (year >= maxYear)
|
||||||
maxYear = year;
|
maxYear = year;
|
||||||
|
|
||||||
if (year <= minYear)
|
if (year <= minYear)
|
||||||
minYear = year;
|
minYear = year;
|
||||||
|
|
||||||
tempC = new gradeCourse(year,semester,courseNumInList,serial,name,type,points,hours,grade,additions);
|
tempC = new gradeCourse(year,semester,courseNumInList,serial,name,type,points,hours,grade,additions);
|
||||||
return tempC;
|
return tempC;
|
||||||
}
|
}
|
||||||
|
|
||||||
//checking if one of the chars inside grade is not a number
|
/**
|
||||||
|
* @brief GradePage::isGradedYet checking if one of the chars inside grade is not a number
|
||||||
|
* @param grade
|
||||||
|
* @return if has bee graded or not
|
||||||
|
*/
|
||||||
bool GradePage::isGradedYet(QString grade)
|
bool GradePage::isGradedYet(QString grade)
|
||||||
{
|
{
|
||||||
if (strlen(grade.toStdString().c_str()) <= 1)
|
if (strlen(grade.toStdString().c_str()) <= 1)
|
||||||
return false;
|
|
||||||
|
|
||||||
for (char c: grade.toStdString())
|
|
||||||
{
|
|
||||||
if (c == '\0')
|
|
||||||
break;
|
|
||||||
if (((!isdigit((int)c)) && (!isspace((int)c)))) //48 = 0, 57 = 9
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
for (char c: grade.toStdString())
|
||||||
|
{
|
||||||
|
if (c == '\0')
|
||||||
|
break;
|
||||||
|
if (((!isdigit((int)c)) && (!isspace((int)c)))) //48 = 0, 57 = 9
|
||||||
|
return false;
|
||||||
|
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GradePage::getAvg getting avg
|
* @brief GradePage::getAvg getting avg
|
||||||
* @return - gpa avg of all courses
|
* @return - gpa avg of all courses
|
||||||
*/
|
*/
|
||||||
double GradePage::getAvg()
|
double GradePage::getAvg()
|
||||||
{
|
{
|
||||||
double avg = 0;
|
double avg = 0;
|
||||||
double points = 0;
|
double points = 0;
|
||||||
for (gradeCourse* c : *courses)
|
for (gradeCourse* c : courses)
|
||||||
{
|
{
|
||||||
if ((c->getGrade() != 0))
|
if ((c->getGrade() != 0))
|
||||||
{
|
{
|
||||||
avg += c->getGrade() * c->getPoints();
|
avg += c->getGrade() * c->getPoints();
|
||||||
points += c->getPoints();
|
points += c->getPoints();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
avg /= points;
|
avg /= points;
|
||||||
return avg;
|
return avg;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GradePage::getAvg getting avg of given year
|
* @brief GradePage::getAvg getting avg of given year
|
||||||
* @param year - year (yyyy)
|
* @param year - year (yyyy)
|
||||||
|
@ -171,56 +191,59 @@ double GradePage::getAvg()
|
||||||
*/
|
*/
|
||||||
double GradePage::getAvg(int year)
|
double GradePage::getAvg(int year)
|
||||||
{
|
{
|
||||||
double avg = 0;
|
double avg = 0;
|
||||||
double points = 0;
|
double points = 0;
|
||||||
for (gradeCourse* c : *courses)
|
for (gradeCourse* c : courses)
|
||||||
{
|
{
|
||||||
if ((c->getGrade() != 0) && (c->getYear() == year))
|
if ((c->getGrade() != 0) && (c->getYear() == year))
|
||||||
{
|
{
|
||||||
avg += c->getGrade() * c->getPoints();
|
avg += c->getGrade() * c->getPoints();
|
||||||
points += c->getPoints();
|
points += c->getPoints();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (points != 0)
|
if (points != 0)
|
||||||
avg /= points;
|
avg /= points;
|
||||||
else
|
else
|
||||||
avg=0;
|
avg=0;
|
||||||
return avg;
|
return avg;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GradePage::getAvg
|
* @brief GradePage::getAvg
|
||||||
* @param year - year (yyyy)
|
* @param year - year (yyyy)
|
||||||
* @param semester - semeser (1-3)
|
* @param semester - semeser (1-3)
|
||||||
* @return -gpa avg of given year in given semester
|
* @return -gpa avg of given year in given semester
|
||||||
*/
|
*/
|
||||||
|
|
||||||
double GradePage::getAvg(int year, int semester)
|
double GradePage::getAvg(int year, int semester)
|
||||||
{
|
{
|
||||||
double avg = 0;
|
double avg = 0;
|
||||||
double points = 0;
|
double points = 0;
|
||||||
for (gradeCourse* c : *courses)
|
for (gradeCourse* c : courses)
|
||||||
{
|
{
|
||||||
if ((c->getGrade() != 0) && (c->getYear() == year) && (c->getSemester() == semester))
|
if ((c->getGrade() != 0) && (c->getYear() == year) && (c->getSemester() == semester))
|
||||||
{
|
{
|
||||||
avg += c->getGrade() * c->getPoints();
|
avg += c->getGrade() * c->getPoints();
|
||||||
points += c->getPoints();
|
points += c->getPoints();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (points != 0)
|
if (points != 0)
|
||||||
avg /= points;
|
avg /= points;
|
||||||
else
|
else
|
||||||
avg=0;
|
avg=0;
|
||||||
return avg;
|
return avg;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GradePage::getMinYearInList
|
* @brief GradePage::getMinYearInList
|
||||||
* @return the minimal year inside courses list
|
* @return the minimal year inside courses list
|
||||||
*/
|
*/
|
||||||
int GradePage::getMinYearInList()
|
int GradePage::getMinYearInList()
|
||||||
{
|
{
|
||||||
return minYear;
|
return minYear;
|
||||||
}
|
}
|
||||||
|
|
||||||
int GradePage::getMaxYearInList()
|
int GradePage::getMaxYearInList()
|
||||||
{
|
{
|
||||||
return maxYear;
|
return maxYear;
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
#include "../page.h"
|
#include "../page.h"
|
||||||
#include "../Grades/gradeCourse.h"
|
#include "../Grades/gradeCourse.h"
|
||||||
|
|
||||||
#include <list>
|
#include <QList>
|
||||||
|
|
||||||
class GradePage : public Page
|
class GradePage : public Page
|
||||||
{
|
{
|
||||||
|
@ -21,6 +21,7 @@ public:
|
||||||
~GradePage();
|
~GradePage();
|
||||||
|
|
||||||
void removeCourse(QString courseSerialID);
|
void removeCourse(QString courseSerialID);
|
||||||
|
|
||||||
double getAvg();
|
double getAvg();
|
||||||
double getAvg(int year);
|
double getAvg(int year);
|
||||||
double getAvg(int year, int semester);
|
double getAvg(int year, int semester);
|
||||||
|
@ -29,7 +30,7 @@ public:
|
||||||
int getMaxYearInList();
|
int getMaxYearInList();
|
||||||
|
|
||||||
|
|
||||||
std::list<gradeCourse*>* getCourses() { return courses; }
|
QList<gradeCourse*> getCourses() { return courses; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
@ -38,7 +39,7 @@ private:
|
||||||
|
|
||||||
bool isGradedYet(QString grade);
|
bool isGradedYet(QString grade);
|
||||||
|
|
||||||
std::list<gradeCourse*>* courses;
|
QList<gradeCourse*> courses;
|
||||||
|
|
||||||
QString tempHtml;
|
QString tempHtml;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue