Пример #1
0
void end_table(std::ofstream &ostr,  bool for_instructor, const std::vector<Student*> &students, int rank) {


  bool print_moss_message = false;
  if (rank != -1 && students[rank]->getMossPenalty() < -0.01) {
    print_moss_message = true;
  }

  if (print_moss_message) {
    ostr << "* = final grade with Academic Integrity Violation penalty<p>&nbsp;<p>\n";
  }

  if (DISPLAY_FINAL_GRADE && students.size() > 50) {

  int total_A = grade_counts[Grade("A")] + grade_counts[Grade("A-")];
  int total_B = grade_counts[Grade("B+")] + grade_counts[Grade("B")] + grade_counts[Grade("B-")]; 
  int total_C = grade_counts[Grade("C+")] + grade_counts[Grade("C")] + grade_counts[Grade("C-")];
  int total_D = grade_counts[Grade("D+")] + grade_counts[Grade("D")];
  int total_passed = total_A + total_B + total_C + total_D;
  int total_F = grade_counts[Grade("F")];
  int total_blank = grade_counts[Grade("")];
  int total = total_passed + total_F + auditors + total_blank;

  ostr << "<p>\n";



  ostr << "<table border=2 cellpadding=5 cellspacing=0>\n";
  ostr << "<tr>\n";
  ostr << "<td width=150>FINAL GRADE</td>";
  ostr << "<td align=center bgcolor="<<GradeColor("A")<<" width=40>A</td><td align=center bgcolor="<<GradeColor("A-")<<" width=40>A-</td>";
  ostr << "<td align=center bgcolor="<<GradeColor("B+")<<" width=40>B+</td><td align=center bgcolor="<<GradeColor("B")<<" width=40>B</td><td align=center bgcolor="<<GradeColor("B-")<<" width=40>B-</td>";
  ostr << "<td align=center bgcolor="<<GradeColor("C+")<<" width=40>C+</td><td align=center bgcolor="<<GradeColor("C")<<" width=40>C</td><td align=center bgcolor="<<GradeColor("C-")<<" width=40>C-</td>";
  ostr << "<td align=center bgcolor="<<GradeColor("D+")<<" width=40>D+</td><td align=center bgcolor="<<GradeColor("D")<<" width=40>D</td>\n";
  if (for_instructor) {
    ostr << "<td align=center bgcolor="<<GradeColor("F")<<"width=40>F</td><td align=center width=40>dropped</td>\n";
    ostr << "<td align=center width=40>audit</td>\n";
    ostr << "<td align=center align=center width=40>took final</td>\n";
    ostr << "<td align=center align=center width=40>total passed</td>\n";
    ostr << "<td align=center align=center width=40>total</td>\n";
  }
  ostr << "</tr>\n";
  
  ostr << "<tr>\n";
  ostr << "<td width=150># of students</td>";
  ostr << "<td align=center width=40>"<<grade_counts[Grade("A")]<<"</td><td align=center width=40>"<<grade_counts[Grade("A-")]<<"</td>";
  ostr << "<td align=center width=40>"<<grade_counts[Grade("B+")]<<"</td><td align=center width=40>"<<grade_counts[Grade("B")]<<"</td><td align=center width=40>"<<grade_counts[Grade("B-")]<<"</td>";
  ostr << "<td align=center width=40>"<<grade_counts[Grade("C+")]<<"</td><td align=center width=40>"<<grade_counts[Grade("C")]<<"</td><td align=center width=40>"<<grade_counts[Grade("C-")]<<"</td>";
  ostr << "<td align=center width=40>"<<grade_counts[Grade("D+")]<<"</td><td align=center width=40>"<<grade_counts[Grade("D")]<<"</td>\n";
  
  if (for_instructor) {
    ostr << "<td align=center width=40>"<<grade_counts[Grade("F")]<<"</td><td align=center width=40>"<<grade_counts[Grade("")]<<"</td>\n";
    ostr << "<td align=center width=40>"<<auditors<<"</td>\n";
    ostr << "<td align=center width=40>"<<took_final<<"</td>\n";
    ostr << "<td align=center width=40>"<<total_passed<<"</td>\n";
    ostr << "<td align=center width=40>"<<total<<"</td>\n";
  }
  ostr << "</tr>\n";
  
  
  
  ostr << "<tr>\n";
  ostr << "<td width=150>average OVERALL<br>of students with<br>this FINAL GRADE</td>";
  ostr << "<td align=center width=40>"<<grade_avg[Grade("A")]<<"</td><td align=center width=40>"<<grade_avg[Grade("A-")]<<"</td>";
  ostr << "<td align=center width=40>"<<grade_avg[Grade("B+")]<<"</td><td align=center width=40>"<<grade_avg[Grade("B")]<<"</td><td align=center width=40>"<<grade_avg[Grade("B-")]<<"</td>";
  ostr << "<td align=center width=40>"<<grade_avg[Grade("C+")]<<"</td><td align=center width=40>"<<grade_avg[Grade("C")]<<"</td><td align=center width=40>"<<grade_avg[Grade("C-")]<<"</td>";

  if (for_instructor) {
    ostr << "<td align=center width=40>"<<grade_avg[Grade("D+")]<<"</td><td align=center width=40>"<<grade_avg[Grade("D")]<<"</td>\n";
  } else {
    ostr << "<td align=center width=40> &nbsp; </td><td align=center width=40> &nbsp; </td>\n";
  }

  if (for_instructor) {
    ostr << "<td align=center width=40>"<<grade_avg[Grade("F")]<<"</td><td align=center width=40>"<<grade_avg[Grade("")]<<"</td>\n";
    ostr << "<td align=center width=40>&nbsp;</td>\n";
    ostr << "<td align=center width=40>&nbsp;</td>\n";
    ostr << "<td align=center width=40>&nbsp;</td>\n";
    ostr << "<td align=center width=40>&nbsp;</td>\n";
  }
  ostr << "</tr>\n";
  
  
  
  ostr << "</table><p>\n";

  }

  ostr.close();
}
Пример #2
0
/* Start main function */
int main(void)
{
    /* Variables */
    FILE *infilep; /* Input file, examdat.txt */
    FILE *outfilep; /* Output file, report.txt */
    int quests; /* # of actual questions on test */
    int idscan; /* Temp value for scanning IDs */
    int studid[STUDENTS]; /* Student ID numbers array */
    double stuperc[STUDENTS]; /* Percentage for each student */
    char anskey[QUESTIONS]; /* Answer key array */
    char stuans1[QUESTIONS]; /* Student 1's answers */
    char stuans2[QUESTIONS]; /* Student 2's answers */
    char stuans3[QUESTIONS]; /* Student 3's answers */
    int miss[QUESTIONS]; /* Counts wrong answers per problem */
    int right[STUDENTS]; /* Total number right per student */
    int i; /* Counting variable */
    /* More students can be added manually */

    /* Open files */
    infilep = fopen("examdat.txt", "r");
    outfilep = fopen("report.txt", "w");

    fscanf(infilep, "%d", &quests); /* # of questions */
    /* Initializers */
    for(i = 0; i < QUESTIONS; i++) {
        anskey[i] = 'f';
        stuans1[i] = 'f';
        stuans2[i] = 'f';
        stuans3[i] = 'f';
        miss[i] = 0;
    }
    for(i = 0; i < STUDENTS; i++) {
        studid[i] = 0;
        right[i] = 0;
        stuperc[i] = 0;
    }

    FGetAnswers(infilep, anskey, quests); /* Answer key */

    /* Student Answers */
    fscanf(infilep, "%d", &studid[0]);
    FGetAnswers(infilep, stuans1, quests);

    fscanf(infilep, "%d", &studid[1]);
    FGetAnswers(infilep, stuans2, quests);

    fscanf(infilep, "%d", &studid[2]);
    FGetAnswers(infilep, stuans3, quests);

    /* Student percentages calculations */
    right[0] = quests - Grade(anskey, stuans1, miss, quests);
    right[1] = quests - Grade(anskey, stuans2, miss, quests);
    right[2] = quests - Grade(anskey, stuans3, miss, quests);

    for(i = 0; i < STUDENTS; i++) {
        stuperc[i] = ( (double) right[i] / (double) quests ) * 100;
    }

    /* Print to file */
    fprintf(outfilep, "          Exam Report\n\n");
    fprintf(outfilep, "Question"); /* Answer key */
    for(i = 1; i <= quests; i++) {
        fprintf(outfilep, "  %d", i);
    }
    fprintf(outfilep, "\nAnswer  ");
    for(i = 0; i < quests; i++) {
        fprintf(outfilep, "  %c", anskey[i]);
    }

    fprintf(outfilep, "\n ID    Score(%%)\n"); /* Student results */
    for(i = 0; i < STUDENTS; i++) {
        fprintf(outfilep, "%d\t%.0f\n", studid[i], stuperc[i]);
    }

    fprintf(outfilep, "Question "); /* Missed results */
    for(i = 1; i <= quests; i++) {
        fprintf(outfilep, "  %d", i);
    }
    fprintf(outfilep, "\nMissed by");
    for(i = 0; i < quests; i++) {
        fprintf(outfilep, "  %d", miss[i]);
    }

    fclose(infilep);
    fclose(outfilep);

    return(0);
}
Пример #3
0
void SearchDialog::CollectSearchResults()
{
    QDate dateStart = QDate();
    QDate dateEnd = QDate();
    QDate gradeDateStart = QDate();
    QDate gradeDateEnd = QDate();
    if(searchFields.contains(Database::SearchFields::date))
    {
        int yearStart = QDate::currentDate().year() - ui->ageStart->value();
        dateStart = QDate(yearStart, QDate::currentDate().month(), QDate::currentDate().day());
        int yearEnd = QDate::currentDate().year() - ui->ageEnd->value();
        dateEnd = QDate(yearEnd, QDate::currentDate().month(), QDate::currentDate().day());
    }
    if(searchFields.contains(Database::SearchFields::gradedate))
    {
        gradeDateStart = ui->gradeDateStart->date();
        gradeDateEnd = ui->gradeDateEnd->date();
    }
    Profile searchUser = Profile();
    if(ui->firstname->text() != "")
    {
        searchFields.append(Database::SearchFields::firstname);
        searchUser.Firstname = ui->firstname->text();
    }
    if(ui->lastname->text() != "")
    {
        searchFields.append(Database::SearchFields::lastname);
        searchUser.Lastname = ui->lastname->text();
    }
    if(ui->patronym->text() != "")
    {
        searchFields.append(Database::SearchFields::patronym);
        searchUser.Patronym = ui->patronym->text();
    }
    if(searchFields.contains(Database::SearchFields::sex))
    {
        searchUser.Sex = ui->sex->currentIndex()==0;
    }
    if(ui->document->text() != "")
    {
        searchFields.append(Database::SearchFields::document);
        searchUser.Document = ui->document->text();
    }
    if(ui->addres->text() != "")
    {
        searchFields.append(Database::SearchFields::addres);
        searchUser.Addres = ui->addres->text();
    }
    if(ui->telephone->text() != "")
    {
        searchFields.append(Database::SearchFields::telephone);
        searchUser.Telephone = ui->telephone->text();
    }
    if(ui->sensei->text() != "")
    {
        searchFields.append(Database::SearchFields::sensei);
        searchUser.Sensei = ui->sensei->text();
    }
    Grade searchGrade = Grade();
    if(ui->grade->text() != "")
    {
        searchFields.append(Database::SearchFields::grade);
        searchGrade.GradeString = ui->grade->text();
    }
    bool useOr = ui->searchMethod->currentIndex()==0;
    searchResults = Database::GetInstance()->FindProfiles(searchFields, searchUser, dateEnd, dateStart, searchGrade, gradeDateStart, gradeDateEnd, useOr);
}