# DÜSK - Düsseldorfer Schülerinventar (C#/.NET Windows Client) Eine native Windows-Desktop-Anwendung für das **Düsseldorfer Schülerinventar (DÜSK)** - ein Instrument zur Erfassung von Schülerkompetenzen durch Selbst- und Fremdeinschätzung. ## 📋 Inhaltsverzeichnis - [Über das Projekt](#-über-das-projekt) - [Features](#-features) - [Technische Voraussetzungen](#-technische-voraussetzungen) - [Installation](#-installation) - [Starten der Anwendung](#-starten-der-anwendung) - [Bedienungsanleitung](#-bedienungsanleitung) - [Technische Details](#-technische-details) - [Projektstruktur](#-projektstruktur) - [Kompilierung](#-kompilierung) - [Fehlerbehandlung](#-fehlerbehandlung) ## 🎯 Über das Projekt Das Düsseldorfer Schülerinventar (DÜSK) ist ein diagnostisches Instrument zur Erfassung von Schülerkompetenzen in sechs Bereichen: | Kompetenz | Beschreibung | |-----------|--------------| | **Arbeitsverhalten** | Zuverlässigkeit, Arbeitstempo, Arbeitsplanung, Organisation | | **Lernverhalten** | Selbstständigkeit, Belastbarkeit, Konzentration | | **Sozialverhalten** | Teamfähigkeit, Hilfsbereitschaft, Kommunikation | | **Fachkompetenz** | Schreiben, Lesen, Mathematik, Naturwissenschaften | | **Personale Kompetenz** | Eigeninitiative, Leistungsbereitschaft, Reflexion | | **Methodenkompetenz** | Problemlösung, Abstraktion, Präsentation | Die Anwendung ermöglicht die Erfassung von **Selbsteinschätzung (SE)** und **Fremdeinschätzung (FE)** über 36 Items und berechnet daraus Profilwerte im Vergleich zu Normtabellen (Hauptschule/Förderschule). ## ✨ Features | Funktion | Beschreibung | |----------|--------------| | 🔐 **Login** | Authentifizierung mit Benutzername/Passwort (Gastzugang: gast/gast) | | 📋 **Profilübersicht** | Tabellarische Liste aller Profile mit Name, Gruppe und ID | | ➕ **Neues Profil** | Vollständige Erfassung aller 36 Items für SE und FE | | ✏️ **Profil bearbeiten** | Nachträgliche Änderung vorhandener Profile | | 👁️ **Profil anzeigen** | Detaillierte Ansicht mit SE/FE-Tabellen, Diagrammen, Statistik und Items | | 📊 **Korrelation** | Berechnung der Übereinstimmung zwischen SE und FE (Pearson) | | 📈 **Zeitreihe** | Verlaufsdarstellung aller Profile einer Gruppe mit Diagramm | | 👥 **Gruppenverwaltung** | Gruppen hinzufügen, löschen und zuordnen | | 🖥️ **Windows-native GUI** | Professionelles Design mit DataVisualization Charts | ## 💻 Technische Voraussetzungen - **Betriebssystem**: Windows 10 oder höher - **.NET Runtime 8.0** oder höher - **Internetverbindung** (für API-Zugriff auf `https://paul-koop.org/api/`) - **Bildschirmauflösung**: mindestens 1024 x 768 ### Entwicklungsvoraussetzungen (für Kompilierung) - **Visual Studio 2022** (Community Edition kostenlos) - **.NET 8.0 SDK** ### Verwendete NuGet-Pakete | Paket | Version | Zweck | |-------|---------|-------| | Newtonsoft.Json | 13.0.3 | JSON-Parsing | | System.Net.Http.Json | 8.0.0 | HTTP-Kommunikation | | WinForms.DataVisualization | 1.9.2 | Diagramme (Charts) | ## 📦 Installation ### 1. Repository klonen oder herunterladen ```bash git clone https://github.com/yourusername/duesk-csharp.git cd duesk-csharp ``` ### 2. In Visual Studio öffnen - **Visual Studio 2022 starten** - `Datei` → `Öffnen` → `Projekt/Projektmappe` - `Duesk.sln` auswählen ### 3. NuGet-Pakete wiederherstellen - **Rechtsklick** auf die Projektmappe → `NuGet-Pakete wiederherstellen` - Oder über Kommandozeile: `dotnet restore` ## 🚀 Starten der Anwendung ### In Visual Studio: - **F5** (Debug starten) oder **Strg+F5** (ohne Debugging) ### Über Kommandozeile: ```bash cd duesk_csharp/Duesk dotnet run ``` ### Als ausführbare Datei: ```bash dotnet publish -c Release -r win-x64 --self-contained true cd bin/Release/net8.0-windows/win-x64/publish Duesk.exe ``` ## 📖 Bedienungsanleitung ### Login | Feld | Standardwert | Beschreibung | |------|--------------|--------------| | Benutzername | `gast` | Ihr persönlicher Benutzername | | Passwort | `gast` | Ihr persönliches Passwort | > **Hinweis:** Bei der ersten Anmeldung mit neuen Zugangsdaten wird automatisch ein Benutzerkonto erstellt. ### Hauptfenster **Toolbar-Buttons:** | Button | Funktion | |--------|----------| | **Neues Profil** | Erstellt ein neues Profil | | **Aktualisieren** | Lädt die Profilliste neu | | **Gruppen** | Öffnet den Gruppenmanager | | **Abmelden** | Beendet die Sitzung | **Aktionen in der Tabelle:** - **Doppelklick** → Profil anzeigen - **Rechtsklick** → Kontextmenü mit Aktionen ### Neues Profil / Profil bearbeiten 1. **Profil-Informationen** - Name des Schülers/der Schülerin - Auswahl einer vorhandenen Gruppe oder Erstellung einer neuen Gruppe 2. **Selbsteinschätzung (36 Items)** | Wert | Bedeutung | |------|-----------| | 4 | trifft voll zu | | 3 | trifft zu | | 2 | trifft teilweise zu | | 1 | trifft nicht zu | 3. **Fremdeinschätzung (36 Items)** - Gleiche Bewertungsskala wie bei Selbsteinschätzung ### Profil anzeigen Die Profilansicht ist in vier Reiter unterteilt: #### 1. Selbsteinschätzung (SE) - Tabelle mit X-Markierungen für die 6 Kompetenzen (Werte 1-5) - Liniendiagramm der Werte #### 2. Fremdeinschätzung (FE) - Gleiche Darstellung wie bei SE #### 3. Statistik - **Korrelation** - Statistischer Zusammenhang zwischen SE und FE - **Übereinstimmung** - Prozentuale Übereinstimmung der 36 Items - **Vergleichsdiagramm** - SE vs. FE im Überblick - **Interpretation** - Verständliche Erklärung der Ergebnisse #### 4. Alle Items - Vollständige Liste aller 36 Items mit SE- und FE-Werten **Normauswahl:** Oben rechts können Sie zwischen **Hauptschule (HS)** und **Förderschule (FS)** wechseln - die Profilwerte werden neu berechnet. ### Zeitreihe Zeigt alle Profile einer Gruppe mit: - **Liniendiagramm** - Entwicklung einer ausgewählten Kompetenz über alle Profile - **Tabelle** - Alle Kompetenzwerte im Überblick **Kompetenzauswahl:** Über die ComboBox können Sie die anzuzeigende Kompetenz wählen. ### Gruppenverwaltung - **Hinzufügen** - Neue Gruppe mit Namen erstellen - **Löschen** - Vorhandene Gruppe entfernen (nur möglich, wenn keine Profile mehr enthalten sind) ## 🔧 Technische Details ### Berechnungslogik Die Anwendung verwendet die gleiche Berechnungslogik wie die PHP-Webanwendung: ```csharp // Summen für Kompetenzen public static int[] CalculateSums(int[] items) { var sums = new int[7]; sums[1] = items[0] + ... + items[9]; // Arbeitsverhalten sums[2] = items[10] + ... + items[19]; // Lernverhalten sums[3] = items[20] + ... + items[27] + items[8] + items[9]; // Sozialverhalten sums[4] = items[28] + ... + items[35]; // Fachkompetenz // ... spezielle Berechnungen für Kompetenz 5 und 6 return sums; } // Profilwerte (0-4) basierend auf Normtabellen public static int[] CalculateProfileValues(int[] sums, double[,] norm) { // Vergleich mit Normwerten } // Korrelation (Pearson) public static double CalculateCorrelation(int[] seValues, int[] feValues) { // Pearson-Korrelation zwischen SE und FE } ``` ### Normwerte Die Normwerte sind direkt im Code eingebettet (Klasse `Norms`): | Normtabelle | Verwendung | |-------------|------------| | `NormSeHs` | Selbsteinschätzung Hauptschule | | `NormFeHs` | Fremdeinschätzung Hauptschule | | `NormSeFs` | Selbsteinschätzung Förderschule | | `NormFeFs` | Fremdeinschätzung Förderschule | ### API-Kommunikation Die Anwendung kommuniziert asynchron mit der PHP-API: ```csharp // Login var response = await ApiClient.LoginAsync(username, password); // Profile abrufen var profiles = await ApiClient.GetProfilesAsync(); // Profil speichern var success = await ApiClient.CreateProfileAsync(profile); ``` ## 📁 Projektstruktur ``` duesk_csharp/ ├── Duesk.sln # Visual Studio Solution ├── Duesk/ │ ├── Duesk.csproj # Projektdatei │ ├── Program.cs # Einstiegspunkt │ ├── Forms/ │ │ ├── LoginForm.cs # Login-Dialog │ │ ├── MainForm.cs # Hauptfenster mit Profilliste │ │ ├── ProfileDetailForm.cs # Profilansicht mit Diagrammen │ │ ├── ProfileEditForm.cs # Profil bearbeiten/neu │ │ ├── GroupManagerForm.cs # Gruppenverwaltung │ │ └── TimeSeriesForm.cs # Zeitreihe mit Diagramm │ ├── Api/ │ │ ├── ApiClient.cs # HTTP-Kommunikation │ │ ├── SessionManager.cs # Session-Verwaltung (Singleton) │ │ └── Models/ │ │ ├── LoginResponse.cs # API-Antwort Login │ │ ├── Profile.cs # Profil-Datenmodell │ │ ├── Group.cs # Gruppen-Datenmodell │ │ └── Norms.cs # Normwerte und Konstanten │ └── Utils/ │ ├── Calculator.cs # Berechnungslogik │ └── ChartHelper.cs # Diagramm-Hilfsklasse └── packages/ # NuGet-Pakete (nach Wiederherstellung) ``` ## 🔧 Kompilierung ### Über Visual Studio 2022 1. **Projektmappe öffnen**: `Duesk.sln` 2. **Build-Konfiguration** wählen: `Debug` oder `Release` 3. **Kompilieren**: `Build` → `Projektmappe erstellen` (Strg+Shift+B) ### Über .NET CLI ```bash # Debug-Version dotnet build -c Debug # Release-Version dotnet build -c Release # Veröffentlichen (selbstständige EXE) dotnet publish -c Release -r win-x64 --self-contained true -o ./publish ``` ### Als Installer (MSI) Mit **Visual Studio Installer Projects** kann ein MSI-Installer erstellt werden. ## ⚠️ Fehlerbehandlung | Fehler | Ursache | Lösung | |--------|---------|--------| | `HttpRequestException` | Server nicht erreichbar | Internetverbindung prüfen | | `Login fehlgeschlagen` | Falsche Zugangsdaten | Benutzername/Passwort prüfen | | `Keine Profile` | Keine Daten vorhanden | Neues Profil erstellen | | `Chart nicht sichtbar` | WinForms.DataVisualization fehlt | NuGet-Paket installieren |