RWTH Aachen Lehrstuhl für Technische Thermodynamik „Entwicklung eines Moduls zur Unterstützung bei der Noteneinteilung und statistischen Auswertung von Klausur­ und Übungsdaten in C++ mit Qt“ Seminarvortrag Hanna Brzonkalik 1 Vortragsübersicht ● Vorstellung des Instituts ● Klausurorganisation am Lehrstuhl ● Programm „Klausurorganisation“ ● Übungsverwaltung ● Technischer Hintergrund ● Ausblick auf die Bachelorarbeit: Implementierung des neuen Moduls 2 Institut Lehrstuhl für Technische Thermodynamik RWTH Aachen Klausur: „Thermodynamik I/II“ ­ Organisation und Ablauf Grundlagenvorlesung im Bereich Maschinenbau und Wirtschaftsingenieur Maschinenwesen ● Anmeldung von bis zu 1300 Studenten pro Semester ● Großer Aufwand bei Organisation und Auswertung von Übungen und Klausur ● Software „Klausurorga“ ● 3 Klausurorganisation Ablauf einer Klausurphase ● Daten vom ZPA werden in das Programm eingelesen und überprüft ● Verteilung der Studenten auf Hörsäle ● Klausur ● Auswertung der Anwesenheit und Krankmeldungen ● Einteilung der Klausuren in Mappen ● Punkteeingabe ● Festlegung der Szenarios (Notenverteilungen anhand Punktegrenzen) ● Anmeldung zur Einsicht und Terminvergabe ● Punkteänderung nach der Einsicht ● Mündliche Ergänzungsprüfung, Anmeldung und Terminvergabe ● Mitteilung der feststehenden Noten ans ZPA 4 Programm „Klausurorganisation“ ● orga: Programm zur Verwaltung der Klausur und Studentendaten ● pkteingabe: Programm zur Eingabe der Punkte. Zentrale Datenbank. ● einsicht: Vergabe von Terminen für Einsicht ● Ministercheck Ansicht von erreichten Punkten für jeweiligen Versuch (Studenten im dritten Versuch) ● muendlpr: Vergabe von Terminen für mündl. Prüfung 5 Übungsverwaltung Kleingruppenübungen für Studenten maximal 25 Teilnehmer ● ● ● ● Einteilung der Übungsgruppen auf die vorhandenen Übungsräume Anmeldung durch die Studenten über ein Webinterface. Auswahl einer Übungsgruppe durch den angemeldeten Studenten Kontrolle der Anwesenheit und Freigabe von nicht genutzten Plätzen Auswertung der Übungseffektivität bezüglich Klausurergebnissen 6 Technischer Hintergrund ● Datenbanken ● Das Qt­Framework ● ● Tools und Bibliotheksaufbau ● GUI­Programmierung ● Signal­Slot­Konzept ● Compiliervorgang Beispiel anhand der Klausurorganisation 7 Datenbanken Verwendung von MySQL­ Datenbanken für die Klausurorganisation und die Übungsverwaltung. „Klausurorganisation“: ● Zugriff über Wrapperklassen ● Abfangen von Falscheingaben ● Ausnahmen in speziellen Fällen 8 Das Qt­Framework ● 1991 Beginn der Entwicklung von Qt ● 1994 Gründung von Trolltech (damals Quasar Technologies) ● 2008 Übernahme durch Nokia ● Framework zur GUI­Programmierung für C++. ● Bietet Basisklassen zur allgemeinen Programierung. ● aktuelle Version ist 4.6 (Dezember 2009) ● Weitere Implementationen für Java (Qt­Jambi, offiziell unterstützt) und mehrere freie Projekte für andere Programmiersprachen 9 Das Qt­Framework ● ● Für alle gängigen Plattformen (Linux, Mac OS, Windows und portable Plattformen) Lizenzierung: ● GPL (GNU General Public License) ● proprietären Lizenz ● ● ab Version 4.4 auch LGPL (GNU Lesser General Public License) Bekannte Projekte: Desktopumgebung KDE (Kool Desktop Enviroment) für Unix­ähnliche Betriebssysteme, Skype, Adobe Photoshop Album, Google Earth oder Opera. 10 Das Qt­Framework Tools und Aufbau der Bibliothek Tools: ● Qt Designer: Zusammenstellung von GUIs. ● Qt Assistant: Dokumentation zur Qt­Api ● Qt Linguist: ● Qt Creator: IDE (Integrierte Entwicklungsumgebung) für mehrsprachige Programm­Versionen Bibliothek: ● Bietet viel mehr als reine GUI­Programmierung Beispiele: ● QtCore: Grundklassen zur Entwicklung ● QtGui: grafische Benutzeroberflächen ● QtSql: Verwendung von Datenbanken 11 Bildquelle: http://trolltech.com/images/products/qt­logo Das Qt­Framework GUI­Programmierung Mit dem 'Qt Designer' wird die GUI­Programmierung unter Qt sehr vereinfacht. ● Viele Vorgefertigte Widgets (z.B. Buttons, CheckBoxen, Layouts Eingabefelder, Frames) ● Bearbeiten von Standard­Signalen und ­Slots ● Einfache Bearbeitung der Eigenschaften ● Abspeicherung in *.ui­Dateien (Formdateien), die später im Quelltext eingebunden und in C++­Code übersetzt werden 12 Das Qt­Framework Der Qt Designer 13 Das Qt­Framework Kompiliervorgang ● Meta­Object­Compiler (moc): Erstellt bei Fund des Makros ’Q OBJECT’ im Header­File aus Qt­ eigenem Code C++­Code aus ● Userinterface­Compiler (uic): Die eingebundenen *.ui­Files werden in C++­Code übersetzt. Hieraus entstehen ui_*.cpp­ und ui_*.h­Dateien. ● Ressourcen­Compiler: Aus den *.qrc­Dateien (XML­Basiert) werden Pfade und Aliase für das *.ui­ File eingebunden. Übersicht Compiliervorgang Quelle: wikipedia.de 14 Das Qt­Framework Signal­Slot­Konzept ● ● ● ● Jede von 'QObject' abgeleitete Klasse kann Signale und Slots definieren. Signale werden im Header­File mit dem Makro 'signals' deklariert und im Code mit 'emit signal(parameter)' ausgelöst. Slots sind normale als 'slots' deklarierte Methoden. Können mit beliebig vielen Signalen Verknüpft werden und werden dann ausgeführt. Verknüpfungs­Methode: bool QObject::connect(const QObject * sender, const char * signal, const QObject * receiver, const char * member) 15 Das neue Modul Nach dem Eintragen aller Punkte: Einteilung der Notengrenzen Aktuell: ● ● Festlegen der Bestehensgrenze (mindestens 50% laut PO) Tabellarische Übersicht der Auswirkung auf die Notenverteilung 16 Das neue Modul Aktuelle Ansicht der Notenverteilung 17 Das neue Modul • • • Hilfe beim Erstellen der Szenarios durch Festlegen der Bestehensgrenze oder Auswählen von angestrebten Verteilungskurven Übersichtlichkeit bei der Notenverteilung (Balken­ und Kurvendiagramm) Auswertung der Übungseffizienz (Teilnahme <=> Klausurnote) Beispiele zur möglichen grafischen Implementierung 18 Umstrukturierung der Datenbank Die Datenbank ist durch veränderte Anforderungen an das Programm teilweise nicht mehr optimal strukturiert. Verwaltung der Szenarios: ● Ursprünglich nur ein Szenario in Tabelle ’dpo’ ● Einführung zusätzlicher Szenarios mit neuer Tabelle 'scenarios' ● Zusammengehörende Daten in verschiedenen Tabellen ● Fehlende Übersichtlichkeit => Verionsbruch 19 Vielen Dank für die Aufmerksamkeit. Noch Fragen? 20