Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
lehrkraefte:blc:informatik:ffprg2-2024:praesentationsplaner:start [2024/09/09 06:10] – [Tool zur Planung der Maturaarbeitspräsentationen] Ivo Blöchligerlehrkraefte:blc:informatik:ffprg2-2024:praesentationsplaner:start [2024/09/09 11:12] (current) – [Tool zur Planung der Maturaarbeitspräsentationen] Ivo Blöchliger
Line 1: Line 1:
 +====== Tool zur Planung der Maturaarbeitspräsentationen ======
 +  * {{lehrkraefte:blc:informatik:ffprg2-2024:praesentationsplaner:intro.zip}}
 +
 +<WRAP todo>
 +  * zip entpacken, Ordner mit VSCode öffnen, index.html mit Live-Server öffnen, Debug-Console im Browser öffnen.
 +  * Code in ''planer.js'' studieren.
 +  * Code in ''datahelper.js'' in der Funktion ''buggyCSVParser'' vervollständigen. (CSV ist ein «schlechtes» Format und es ist kompliziert, einen allgemeinen Parser zu schreiben).
 +  * Folgende Arrays mit Objekten sind zu erstellen (alle Referenzen bestehen aus dem Index im jeweiligen Array):
 +    * ''student'': Enthält die Infos zu den Schülern (erst mal nur "name", dann auch Klasse, und eine Referenz auf ''paper'')
 +    * ''teacher'': Enthält die Infos zu den Betreuern (erst mal nur "code" (Lehrerkürzel), später auch Name, zeitliche Präferenzen etc.)
 +    * ''paper'': Enthält die Infos zu den Maturaarbeiten:
 +      * Array mit Referenzen auf ''student'' (Autoren)
 +      * ''teachers'' Array mit einem oder mehreren Einträgen, Referenzen auf ''teacher'' (Betreuer, sprachl. Betreuer) 
 +    * ''timeslots'': Enthält Infos zu den Zeitangaben (''slot'', erst mal als String, später wohl Datum/Uhrzeit (Start und Ende?)
 +    * ''rooms'': Enthält Infos zu den Räumen (''name'', später auch ein Array mit Referenzen auf die planbaren ''timeslots''
 +  * Ein Plan wird als Array von Arrays mit 2 Einträgen wie folgt dargestellt:
 +    * ''plan[p] = [t,r]'', wobei $p$ der Index vom ''paper'', $t$ der Index vom ''timeslot'' und $r$ der Index vom ''room'' ist.
 +  * Erstellen Sie einen Plan mit folgender Methode:
 +    * Wählen Sie zufällig ein ''paper'' aus und planen Sie es unter Berücksichtigung der Bedingungen möglichst früh im ersten freien Zimmer.
 +</WRAP>
 +
 +<hidden Lösungsvorschläge>
 +<code javascript>
 +export function buggyCSVParser(csv) {
 +    // Return an array of Stings for a csv line: 
 +    // Assumption: All Strings are quoted with "", Separated by commas.
 +    function parseLine(line) {
 +        return JSON.parse("["+line+"]");
 +    }
 +    let lines = csv.split("\n");
 +
 +    // Extract header
 +    let header = parseLine(lines[0]);
 +
 +    // Extract all lines and build objects like
 +    // {"Name": "Hans Wurst", "Titel": "Bla blah", ...}
 +    let table = [];
 +    for (let i=1; i<lines.length; i++) {
 +        let zeile = parseLine(lines[i]);
 +        let obj = {};
 +        for (let j=0; j<header.length; j++) {
 +            obj[header[j]]=zeile[j];
 +        }
 +        table.push(obj);
 +    }
 +
 +    // Return table in this form
 +    return table;
 +}
 +
 +</code>
 +</hidden>
 +===== Daten =====
 +==== Maturaarbeit ====
 +  * Titel
 +  * Referenzen auf 1 bis n Schüler
 +  * 1 Betreuer
 +  * 0-1 sprachliche Betreuer
 +
 +==== Zeitfenster ====
 +  * Datum, Uhrzeit
 +
 +==== Räume ====
 +  * Name
 +
 +==== Weitere Daten ====
 +  * Zeitliche Verfügbarkeit von Zimmern.
 +  * Zeitliche und räumliche Bedingungen für eine Präsentation (Einschränkung auf ein oder mehrere Zimmer, mögliche Zeitfenster)
 +  * Wünsche: Reihenfolge von Präsentationen eines Betreuers, zeitliche Wünsche, Zimmerwünsche
 +
 +
 +===== Plan (Resultat) =====
 +Jeder **Maturaarbeit** wird genau ein Zimmer und Zeitfenster zugewiesen, und zwar so, dass
 +  * Keine Kombination Zimmer/Zeitfenster doppelt belegt ist.
 +  * Kein Betreuer und kein sprachlicher Betreuer zur gleichen Zeit zwei Präsentation hat.
 +
 +Ausgegeben wird der Plan in verschiedenen Ansichten:
 +  * Tabelle mit allen Schülern (Titel, Betreuer, sprachl. Betr., Zimmer, Zeit)
 +  * Für jeden Betreuer (Schüler, Titel, sprachl. Betr. Zimmer, Zeit)
 +  * Für jedes Zimmer (Schüler Titel, Betreuer, sprachl. Betr.)