Warning: include_once(/var/www/html/pmwiki-2.2.86/cookbook/soap4pmwiki/soap4pmwiki.php): failed to open stream: No such file or directory in /var/www/html/fields/dbp09/local/config.php on line 4

Warning: include_once(): Failed opening '/var/www/html/pmwiki-2.2.86/cookbook/soap4pmwiki/soap4pmwiki.php' for inclusion (include_path='.:/opt/php/lib/php') in /var/www/html/fields/dbp09/local/config.php on line 4

Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/fields/dbp09/local/config.php:4) in /var/www/html/pmwiki-2.2.86/pmwiki.php on line 1250
Datenbankpraktikum SS 2009 - Gruppe 3 - Klausurpunkte Eintragen

Punkte für Klausur eintragen

von Anita Brankova und Antje Siemer

Inhalt:


Oberfläche

Wenn man im TUKS-Menue eine bestimmte Veranstaltung ausgewählt hat, gibt es die Möglichkeit, die Punkte für Klausuren in dieser Veranstaltung einzutragen. Wenn man sich für Endnote eintragen entschieden hat, erscheint eine Liste aller in dieser Veranstaltung geschriebenen Klausuren. Nach Auswahl einer Klausur erscheint ein Formular, in dem für die Punkteeingabe ein Inputfeld pro Aufgabe und pro zugelassenen Studenten vorhanden ist. Falls für diese Klausur schon für einige, oder auch alle, teilgenommenen Studenten Punkte eingetragen wurden, werden sie in diesem Formular mit ausgegeben und können nun geändert werden. Für die nicht zugelassenen Studenten gibt es die Möglichkeit, sie über ein AutoComplete-Feld hinzuzufügen, sodass auch hier ggf Punkte eingetragen werden können. Auch hier werden bereits eingetragene Punkte schon mit ausgegeben. Der Student muss in diesem Fall also auch nicht erneut manuell hinzugefügt werden. Da es auch vorkommen kann, dass Besucher der Vorlesung zwar die Zulassung zur Klausur bekommen haben, aber dennoch nicht teilnehmen, gibt es in diesem Formular eine Checkbox nicht agemeldet. Falls diese gesetzt ist werden für den entsprechenden Studenten keine Werte in der Datenbank gespeichert.

Abb. 1: Liste aller in dieser Veranstaltung geschriebenen Klausuren

Abb. 2: Formular zum Eintragen der Punkte pro Aufgabe

Funktionalität


  • Die Punkte für eine Klausur dürfen nur die jeweiligen Dozenten und Übungsleiter eintragen bzw ändern.
  • Für die Realisierung der unter Oberfläche beschriebenen Funktionalität sind zwei Aktionen und Views notwendig:

action_list_klausur()

In dieser Aktion werden alle zu der aktuellen Veranstaltung gehörenden Prüfungen mit dem Prüfungstyp K (Klausur) aus der Datenbank geholt und dann dem Template klausur_list.tpl übergeben, das dann schließlich alle Klausuren auflistet.

action_punkte_eintragen()

Hier werden zunächst alle Besucher der aktuellen Veranstaltung aus der Datenbank geholt, welche dann weiter über eine Methode aus Statistiken, welche die Zulassungen für einzelne Studenten berechnet, in Teilnehmer mit und ohne Zulassung aufgespalten wird. In einer statischen Hilfsmethode get_studenten_punkte($verid, $klausur_nr, $aufgaben, $teilnehmer,$env) (siehe unten) werden dann die bereits bestehenden Ergebnisse aus der Datenbank geholt. Für die zugelassenen Studenten werden alle benötigten Daten dem Template punkteKl_eintragen.tpl übergeben. Im Gegensatz dazu wird für die Studenten ohne Zulassung speziell geprüft, ob Ergebnisse in der Datenbank vorhanden sind und nur in diesem Fall werden die Daten dem Template übergeben.

foreach($teilnehmer_oz as $teiln) { 
 if(in_array($teiln['Login'],array_keys($punkte))) {    //$punkte: bereits bestehende Ergebnisse
   $values2[$teiln['Login']] = array('vorname' => $teiln['Vorname'],
				     'nachname' => $teiln['Nachname'],
				     'login' => $teiln['Login']);
 }	
}

Für die Verarbeitung/Speicherung der neu eingefügten Daten wird zunächst wieder getestet, ob dazu schon Daten in der Datenbank existieren. Falls dies der Fall ist, wird lediglich ein UPDATE in der Datenbank durchgeführt. Andernfalls werden die Daten neu eingefügt.

benötigte Hilfsmethoden:

get_studenten_punkte($verid, $klausur_nr, $aufgaben, $teilnehmer,$env)

static function get_studenten_punkte($verid, $klausur_nr, $aufgaben, $teilnehmer,$env) {
    $sql ="SELECT Login, AufgNr, Punkte 
	   FROM bearbeitenKl 
	   WHERE VerID = " . $verid . " 
           AND PrfID = " . $klausur_nr;
 
       $ergebnisse = $result=$env->verbindung()->execute_query($sql);
 
       $ergebnis_2 = array();
 
    foreach($teilnehmer AS $item) {
     foreach($aufgaben AS $key => $aufgabe) {
      foreach($ergebnisse AS $ergebnis) {
	if(in_array($item['Login'], $ergebnis) && in_array($aufgabe->AufgNr, $ergebnis)) {
	    $aufg_punkte[$aufgabe->AufgNr - 1] = $ergebnis['Punkte'];
	     $ergebnis_2[$item['Login']] =  $aufg_punkte;
	 }
       }
     }
   }
 return $ergebnis_2;
}

Mit dieser Methode werden zunächst alle bereits bestehenden Ergebnisse aus der Datenbank geholt. Dann wird für jeden Studenten und jede Aufgabe einer bestimmten Klausur in einer Veranstaltung getestet, ob diese Kombination im Ergebnis vorhanden ist. Des weiteren wird dann in einem Array für jeden Studenten jede Aufgabe das jeweilige Ergebnis gespeichert. Falls keine Werte vorhanden sind, wird an dieser Stelle im Array NULL gespeichert.

Implementierte Controller:


  • Methoden im Klausurerg_Controller.php:
    • action_list_klausur():
    • action_punkte_eintragen():

Implementierte Views:


  • action_list_klausur(): es werden alle zu der aktuellen Veranstaltung gehörenden Prüfungen aus der Datenbank geholt
  • punkteKl_eintragen.tpl: gibt die Studenten mit Zulassung und ohne Zulassung und ihren Aufgaben in einer Tabelle aus

Nach oben


Page last modified on September 04, 2009, at 02:38 PM