/// <summary> /// Führt den Check durch. /// </summary> /// <param name="schueler">Der Schüler.</param> /// <param name="reason">Die Art der Prüfung.</param> /// <returns>Array mit Fehler- oder Problemmeldungen. Kann auch leer sein.</returns> public override void Check(Schueler schueler, Zeitpunkt reason, NotenCheckResults res) { base.Check(schueler, reason, res); int sum=0; foreach (var fach in noten.alleFaecher) sum += fach.getNotenanzahl(Notentyp.Fachreferat); if (sum == 0) res.Add(schueler,null,"Der Schüler hat kein Fachreferat."); else if (sum>1) res.Add(schueler, null, "Der Schüler hat " + sum + " Fachreferate."); }
public NotenCheckController(Zeitpunkt azeitpunkt) { zeitpunkt = azeitpunkt; alleNotenchecks.Add(new FachreferatChecker()); alleNotenchecks.Add(new NotenanzahlChecker()); alleNotenchecks.Add(new UnterpunktungChecker()); /* int[] klassenIDs = new[] { 15, 20, 34 }; foreach (int klassenId in klassenIDs) { } */ }
public NotenCheckController(Zeitpunkt azeitpunkt, NotenCheckModus amodus) { zeitpunkt = azeitpunkt; modus = amodus; // je nach Modus und Zeitpunkt werden nur bestimmte Klassen ausgewählt if (modus == NotenCheckModus.EigeneKlasse) { KlasseInNotenpruefungAufnehmen(Zugriff.Instance.eigeneKlasse); } else if (zeitpunkt==Zeitpunkt.ProbezeitBOS || zeitpunkt==Zeitpunkt.HalbjahrUndProbezeitFOS) { zuPruefendeKlassen = Zugriff.Instance.Klassen; AnzahlSchueler = Zugriff.Instance.AnzahlSchueler; } else { foreach (var k in Zugriff.Instance.Klassen) KlasseInNotenpruefungAufnehmen(k); } if (modus!=NotenCheckModus.BerechnungenSpeichern && modus != NotenCheckModus.VorkommnisseErzeugen && azeitpunkt !=Zeitpunkt.DrittePA) alleNotenchecks.Add(new NotenanzahlChecker(this)); if (modus!=NotenCheckModus.EigeneNotenVollstaendigkeit) alleNotenchecks.Add(new UnterpunktungChecker(this)); if (azeitpunkt == Zeitpunkt.ErstePA && (modus==NotenCheckModus.Gesamtpruefung || modus == NotenCheckModus.EigeneKlasse)) // nur dort FR prüfen { alleNotenchecks.Add(new FachreferatChecker(this)); alleNotenchecks.Add(new SeminarfachChecker(this)); } if (azeitpunkt == Zeitpunkt.HalbjahrUndProbezeitFOS || azeitpunkt == Zeitpunkt.Jahresende) alleNotenchecks.Add(new FpABestandenChecker(this)); if ((azeitpunkt == Zeitpunkt.ZweitePA || azeitpunkt == Zeitpunkt.DrittePA) && (modus==NotenCheckModus.Gesamtpruefung || modus == NotenCheckModus.EigeneKlasse)) { alleNotenchecks.Add(new AbiergebnisChecker(this)); alleNotenchecks.Add(new EliteChecker(this)); } if (azeitpunkt == Zeitpunkt.DrittePA && (modus==NotenCheckModus.Gesamtpruefung || modus == NotenCheckModus.EigeneKlasse)) alleNotenchecks.Add(new MAPChecker(this)); }
public string FindeAPSchriftlichNoten(string faecherspiegel, int index, Schulart schulart, Schueler schueler, Zeitpunkt zeitpunkt) { string faecherKuerzel = omnis.SucheFach(faecherspiegel, index, schulart); // hier nur zur Anzeige etwaiger Fehlermeldungen benötigt if (string.IsNullOrEmpty(faecherKuerzel)) { return ""; } var noten = FindeFachNoten(faecherKuerzel, schueler); if (noten == null) { return "-"; // Fach wurde wohl nicht belegt (kann ab und zu vorkommen, z. B. bei Wahlfächern) } var apnote = noten.getNoten(Halbjahr.Zweites, Notentyp.APSchriftlich); if (apnote == null || apnote.Count == 0) { return ""; } return string.Format(CultureInfo.CurrentCulture, "{0:00}", apnote[0]); }
// Doku s. private Variable public int AnzahlNoten(int note, bool SAP) { if (anzahlNoten == null) { if (zeitpunkt==Zeitpunkt.None) zeitpunkt = (Zeitpunkt)Zugriff.Instance.aktZeitpunkt; anzahlNoten = new int[7,2]; InitAnzahlNoten(); } if (SAP) return anzahlNoten[note,1]; else return anzahlNoten[note,0]; }
/// <summary> /// Ob die implementierte Prüfung überhaupt sinnvoll ist. /// </summary> /// <param name="jahrgangsstufe">Die Jahrgangsstufe.</param> /// <param name="schulart">Die Schulart (FOS oder BOS)</param> /// <param name="reason">Die Art der Prüfung.</param> /// <returns>true wenn check nötig.</returns> public override bool CheckIsNecessary(Jahrgangsstufe jahrgangsstufe, Schulart schulart, Zeitpunkt reason) { return jahrgangsstufe == Jahrgangsstufe.Zwoelf && reason == Zeitpunkt.ErstePA; }
/// <summary> /// Ob die implementierte Prüfung überhaupt sinnvoll ist. /// </summary> /// <param name="jahrgangsstufe">Die Jahrgangsstufe.</param> /// <param name="schulart">Die Schulart (FOS oder BOS)</param> /// <param name="reason">Die Art der Prüfung.</param> /// <returns>true wenn check nötig.</returns> public override bool CheckIsNecessary(Jahrgangsstufe jahrgangsstufe, Schulart schulart, Zeitpunkt reason) { return true; }
/// <summary> /// Ob die implementierte Prüfung überhaupt sinnvoll ist. /// </summary> /// <param name="jahrgangsstufe">Die Jahrgangsstufe.</param> /// <param name="schulart">Die Schulart (FOS oder BOS)</param> /// <param name="reason">Die Art der Prüfung.</param> /// <returns>true wenn check nötig.</returns> public override bool CheckIsNecessary(Jahrgangsstufe jahrgangsstufe, Schulart schulart, Zeitpunkt reason) { return jahrgangsstufe == Jahrgangsstufe.Dreizehn; }
/// <summary> /// Ob die implementierte Prüfung überhaupt sinnvoll ist. /// </summary> /// <param name="jahrgangsstufe">Die Jahrgangsstufe.</param> /// <param name="schulart">Die Schulart (FOS oder BOS)</param> /// <param name="reason">Die Art der Prüfung.</param> /// <returns>true wenn check nötig.</returns> public abstract bool CheckIsNecessary(Jahrgangsstufe jahrgangsstufe, Schulart schulart, Zeitpunkt reason);
/// <summary> /// Ob die implementierte Prüfung überhaupt sinnvoll ist. /// </summary> /// <param name="jahrgangsstufe">Die Jahrgangsstufe.</param> /// <param name="schulart">Die Schulart (FOS oder BOS)</param> /// <param name="reason">Die Art der Prüfung.</param> /// <returns>true wenn check nötig.</returns> public override bool CheckIsNecessary(Jahrgangsstufe jahrgangsstufe, Schulart schulart, Zeitpunkt reason) { // Diese Prüfung kann immer durchgeführt werden return true; }
/// <summary> /// Ob die implementierte Prüfung überhaupt sinnvoll ist. /// </summary> /// <param name="jahrgangsstufe">Die Jahrgangsstufe.</param> /// <param name="schulart">Die Schulart (FOS oder BOS)</param> /// <param name="reason">Die Art der Prüfung.</param> /// <returns>true wenn check nötig.</returns> public override bool CheckIsNecessary(Jahrgangsstufe jahrgangsstufe, Schulart schulart, Zeitpunkt reason) { return jahrgangsstufe == Jahrgangsstufe.Elf && schulart == Schulart.FOS; }
public string GetNotenString(FachSchuelerNoten note, Zeitpunkt zeitpunkt) { byte? relevanteNote = note.getRelevanteNote(zeitpunkt); return relevanteNote == null ? "-" : string.Format("{0:00}", (byte)relevanteNote); //wichtig: Im Feld muss 08 stehen, nicht 8 (d.h. 2 Ziffern) }
/// <summary> /// Sucht das Fach am angegebenen Index aus dem angegebenen Fächerspiegel. /// </summary> /// <param name="faecherspiegel">Welcher Fächerspiegel, z. B. W11.</param> /// <param name="index">Der Index des Faches.</param> /// <param name="schulart">FOS oder BOS.</param> /// <param name="schueler">Den Schüler brauchen wir auch, um zu ermitteln ob er katholisch oder evangelisch ist.</param> /// <param name="zeitpunkt">Der Zeitpunkt, für welchen wir die Note ermitteln müssen.</param> /// <returns>Das Fach oder null, wenn kein weiteres Fach mehr im Fächerspiegel vorhanden ist.</returns> public string GetFachNoteString(string faecherspiegel, int index, Schulart schulart, Schueler schueler, Zeitpunkt zeitpunkt) { string faecherKuerzel = omnis.SucheFach(faecherspiegel, index, schulart); // hier nur zur Anzeige etwaiger Fehlermeldungen benötigt if (string.IsNullOrEmpty(faecherKuerzel)) { return ""; // Wenn kein sinnvolles Fach mehr kommt, bleibt das Notenfeld leer } var dieRichtigeNote = FindeFachNoten(faecherKuerzel, schueler); if (dieRichtigeNote == null) { if (FehlendeNoteWirdWohlOKSein(faecherKuerzel)) { log.Debug(schueler.NameVorname + " sollte in " + faecherKuerzel + " gehen, aber diese Zuordnung findet diNo nicht!"); } else { log.Warn(schueler.NameVorname + " sollte in " + faecherKuerzel + " gehen, aber diese Zuordnung findet diNo nicht!"); } return "-"; } else { return GetNotenString(dieRichtigeNote, zeitpunkt); } }
public string FindeJahresfortgangsNoten(string faecherspiegel, int index, Schulart schulart, Schueler schueler, Zeitpunkt zeitpunkt) { string faecherKuerzel = omnis.SucheFach(faecherspiegel, index, schulart); // hier nur zur Anzeige etwaiger Fehlermeldungen benötigt if (string.IsNullOrEmpty(faecherKuerzel)) { return ""; } var noten = FindeFachNoten(faecherKuerzel, schueler); if (noten == null) { return "-"; } return string.Format(CultureInfo.CurrentCulture, "{0:00.00}", noten.getSchnitt(Halbjahr.Zweites).JahresfortgangMitKomma); }
// Zu diesem Zeitpunkt werden die Notenanzahlen gebildet, // wird dieser geändert, muss neu gerechnet werden public void SetZeitpunkt(Zeitpunkt z) { if (zeitpunkt!=z) { anzahlNoten = null; zeitpunkt = z; } }
// TODO: Überflüssig, wegen lokaler Variable public string GetUnterpunktungenString(Zeitpunkt z) { string result = ""; foreach (var fach in alleFaecher) { byte? note = fach.getRelevanteNote(z); if (note != null && note < 4) { result += fach.getFach.Kuerzel + "(" + note + ")"; } } return result; }
/// <summary> /// Führt den Check durch. /// </summary> /// <param name="schueler">Der Schüler.</param> /// <param name="reason">Die Art der Prüfung.</param> public override void Check(Schueler schueler, Zeitpunkt reason, NotenCheckResults res) { FpANotenTableAdapter fpAAdapter = new FpANotenTableAdapter(); var fpANoten = fpAAdapter.GetDataBySchuelerId(schueler.Id); if (fpANoten.Count == 0) { res.Add(schueler, null, "Es liegt keine FpA-Note vor."); } else { var note = fpANoten[0].Note; if (note == 3) { res.Add(schueler, null, "Die fachpraktische Ausbildung wurde ohne Erfolg durchlaufen."); } } }
private static AbschlusspruefungBestanden GetBestanden(Zeitpunkt zeitpunkt, Schueler schueler) { KlassenzielOderGefaehrdung zielerreichung = GetZielerreichung(zeitpunkt, schueler); if (zielerreichung == KlassenzielOderGefaehrdung.AbschlusspruefungOhneErfolg) { return AbschlusspruefungBestanden.NichtBestanden; } if (zielerreichung == KlassenzielOderGefaehrdung.NotenausgleichGewaehrt) { return AbschlusspruefungBestanden.BestandenMitNotenausgleichArt33; } return AbschlusspruefungBestanden.Bestanden; }
/// <summary> /// Führt den Check durch. /// </summary> /// <param name="schueler">Der Schüler.</param> /// <param name="reason">Die Art der Prüfung.</param> /// <returns>Array mit Fehler- oder Problemmeldungen. Kann auch leer sein.</returns> public override void Check(Schueler schueler, Zeitpunkt reason, NotenCheckResults res) { base.Check(schueler, reason, res); int anz=0; foreach (var fachNoten in noten.alleFaecher) { // TODO: Nur für Test am Jahresende, da in manchen Fächern keine Datei vorlag /* if (noten.Count == 0) { continue; }*/ // TODO: Anzahl SA direkt aus DB lesen! Schulaufgabenwertung wertung = fachNoten.getFach.GetSchulaufgabenwertung(schueler.getKlasse); Kurs kurs = new Kurs(fachNoten.kursId); //es müssen 2 oder 3 Schulaufgaben zum Ende des Jahres vorliegen - zum Halbjahr min. eine int noetigeAnzahlSchulaufgaben = GetAnzahlSchulaufgaben(wertung); if (noetigeAnzahlSchulaufgaben > 0) { if (reason == Zeitpunkt.HalbjahrUndProbezeitFOS || reason == Zeitpunkt.ProbezeitBOS) noetigeAnzahlSchulaufgaben = 1; anz = fachNoten.getNotenanzahl(Notentyp.Schulaufgabe); if (anz < noetigeAnzahlSchulaufgaben) res.Add(schueler, kurs, "Es " + toText(anz) + " SA vorhanden."); } // egal, bei welcher Entscheidung: Es müssen im ersten Halbjahr min. 2 mündliche Noten vorliegen // am Jahresende bzw. zur PA-Sitzung müssen es entweder 2 Kurzarbeiten/Exen und 2 echte mündliche // die Prüfung unterscheidet wie der bisherige Notenbogen nicht, ob die Note aus einer Ex oder echt mündlich ist - das verantwortet der Lehrer int kurzarbeitenCount = fachNoten.getNotenanzahl(Notentyp.Kurzarbeit); int muendlicheCount = fachNoten.getNotenanzahl(Notentyp.Ex) + fachNoten.getNotenanzahl(Notentyp.EchteMuendliche); if (reason == Zeitpunkt.ProbezeitBOS || reason == Zeitpunkt.HalbjahrUndProbezeitFOS) { if ((kurzarbeitenCount == 0 && muendlicheCount < 2) || muendlicheCount == 0) { res.Add(schueler, kurs, "Es " + toText(muendlicheCount) + " mündliche Noten vorhanden."); } } else if (reason == Zeitpunkt.ErstePA || reason == Zeitpunkt.Jahresende) { if (kurzarbeitenCount == 1) { res.Add(schueler, kurs, "Es " + toText(kurzarbeitenCount) + " Kurzarbeit vorhanden."); } if ((kurzarbeitenCount == 0 && muendlicheCount < 4) || muendlicheCount < 2) { res.Add(schueler, kurs, "Es " + toText(muendlicheCount) + " mündliche Noten vorhanden."); } } // Zweite PA: nur Vorliegen der Prüfungsnoten prüfen else if (reason == Zeitpunkt.ZweitePA) { if (fachNoten.getNotenanzahl(Notentyp.APSchriftlich) == 0) { res.Add(schueler, kurs,"Es liegt keine Note in der schriftlichen Abschlussprüfung vor."); } } } }
private static fpaNote GetFpaNote(Zeitpunkt zeitpunkt, Schueler schueler) { if (zeitpunkt == Zeitpunkt.HalbjahrUndProbezeitFOS && !schueler.FPANoten.IsErfolg1HjNull()) { //das ist dieselbe Zahlencodierung ist wie in der DB (0=nicht gesetzt, 1 = sehr gut, ... 4 = ohne Erfolg) return (fpaNote)schueler.FPANoten.Erfolg1Hj; } else if (!schueler.FPANoten.IsErfolgNull()) { return (fpaNote)schueler.FPANoten.Erfolg; } return fpaNote.Entfaellt; }
/// <summary> /// Führt den Check durch. /// </summary> /// <param name="schueler">Der Schüler.</param> /// <param name="reason">Die Art der Prüfung.</param> /// <returns>Array mit Fehler- oder Problemmeldungen. Kann auch leer sein.</returns> public virtual void Check(Schueler schueler, Zeitpunkt reason,NotenCheckResults res) { noten = schueler.getNoten; }
private static KlassenzielOderGefaehrdung GetZielerreichung(Zeitpunkt zeitpunkt, Schueler schueler) { KlassenzielOderGefaehrdung ziel = zeitpunkt == Zeitpunkt.HalbjahrUndProbezeitFOS ? KlassenzielOderGefaehrdung.NichtGefaehrdet : KlassenzielOderGefaehrdung.VorrueckenOK; foreach (var vorkommnis in schueler.Vorkommnisse) { switch (vorkommnis.Art) { case Vorkommnisart.starkeGefaehrdungsmitteilung: ziel = KlassenzielOderGefaehrdung.SehrGefaehrdet; break; case Vorkommnisart.Gefaehrdungsmitteilung: ziel = KlassenzielOderGefaehrdung.Gefaehrdet; break; case Vorkommnisart.BeiWeiteremAbsinken: ziel = KlassenzielOderGefaehrdung.BeiWeiteremAbsinkenGefaehrdet; break; case Vorkommnisart.NichtZurPruefungZugelassen: return KlassenzielOderGefaehrdung.AbschlusspruefungOhneErfolg; case Vorkommnisart.Notenausgleich: return KlassenzielOderGefaehrdung.NotenausgleichGewaehrt; case Vorkommnisart.NichtBestanden: return KlassenzielOderGefaehrdung.AbschlusspruefungOhneErfolg; } } return ziel; }
/// <summary> /// Führt den Check durch. /// </summary> /// <param name="schueler">Der Schüler.</param> /// <param name="reason">Die Art der Prüfung.</param> /// <returns>Array mit Fehler- oder Problemmeldungen. Kann auch leer sein.</returns> public override void Check(Schueler schueler, Zeitpunkt reason, NotenCheckResults res) { SeminarfachnoteTableAdapter seminarfachAdapter = new SeminarfachnoteTableAdapter(); var seminarfachnoten = seminarfachAdapter.GetDataBySchuelerId(schueler.Id); if (seminarfachnoten.Count == 0) { res.Add(schueler, null,"Es liegt keine Seminarfachnote vor."); } else { var note = seminarfachnoten[0].Gesamtnote; var thema = seminarfachnoten[0].ThemaLang; if (note < 4) { res.Add(schueler, null, "Im Seminarfach wurden " +note+" Punkte erzielt."); } if (string.IsNullOrEmpty(thema)) { res.Add(schueler, null, "Es liegt kein Seminarfachthema vor."); } } }
private static void SucheWahlpflichtfach(Zeitpunkt zeitpunkt, Faecherspiegel faecher, VerwalteZeile zeile, Schueler schueler, int bezeichnungCol, int noteCol) { if (string.IsNullOrEmpty(zeile[bezeichnungCol])) { return; } string fach = zeile[bezeichnungCol]; if (fach =="F3") { fach = "F-Wi"; } var wahlpflichtfach = schueler.getNoten.FindeFach(fach, false); if (wahlpflichtfach != null) { zeile[noteCol] = faecher.GetNotenString(wahlpflichtfach, zeitpunkt); } else { log.Warn("Für den Schüler "+schueler.NameVorname+" konnte das Wahlpflichtfach "+fach+" nicht gefunden werden."); } }
/// <summary> /// Führt den Check durch. /// </summary> /// <param name="schueler">Der Schüler.</param> /// <param name="reason">Die Art der Prüfung.</param> /// <returns>Array mit Fehler- oder Problemmeldungen. Kann auch leer sein.</returns> public override void Check(Schueler schueler, Zeitpunkt reason, NotenCheckResults res) { base.Check(schueler, reason, res); int anz5=0,anz6=0,anz4P=0,anz2=0,anz1=0; string m=""; foreach (var fachNoten in noten.alleFaecher) { byte? relevanteNote = fachNoten.getRelevanteNote(reason); if (relevanteNote == null) { res.Add(schueler,new Kurs(fachNoten.kursId) ,"Es konnte keine Note gebildet werden."); } else { if (relevanteNote == 0) anz6++; else if (relevanteNote < 4) anz5++; else if (relevanteNote == 4) anz4P++; else if (relevanteNote >=13) anz1++; else if (relevanteNote >= 10) anz2++; if (relevanteNote <4 || relevanteNote == 4 && reason == Zeitpunkt.HalbjahrUndProbezeitFOS) m = m + fachNoten.getFach.Kuerzel + "(" + relevanteNote +") "; } } if (reason == Zeitpunkt.ErstePA) { if (anz6 > 1 || anz5 > 3) res.Add(schueler, null, "Zum Abitur nicht zugelassen: " + m); } else if (reason == Zeitpunkt.HalbjahrUndProbezeitFOS) { if (anz6>0 || anz5 > 1) res.Add(schueler, null, "Stark gefährdet: " + m); else if (anz5 > 0) res.Add(schueler, null, "Gefährdet: " + m); else if (anz4P > 1) res.Add(schueler, null, "Bei weiterem Absinken: " + m); } else { // TODO: Notenausgleich sauber implementieren if (anz6 > 0 || anz5 > 1) { if (anz2 < 2 || anz1 == 0) res.Add(schueler, null, "Nicht bestanden, kein Notenausgleich möglich: " + m); else res.Add(schueler, null, "Nicht bestanden, Notenausgleich prüfen: " + m); } } }
private bool BrauchtZeugnis(Schueler schueler, Zeitpunkt zeitpunkt) { if (zeitpunkt == Zeitpunkt.HalbjahrUndProbezeitFOS) { return true; // zum Halbjahr bekommen alle ein Zeugnis } // zu den PA-Sitzungen werden nur für die 12. und 13. Jahrgangsstufe Zeugnisse übertragen if (zeitpunkt == Zeitpunkt.ErstePA || zeitpunkt == Zeitpunkt.ZweitePA || zeitpunkt == Zeitpunkt.DrittePA) { return schueler.getKlasse.Jahrgangsstufe == Jahrgangsstufe.Dreizehn || schueler.getKlasse.Jahrgangsstufe == Jahrgangsstufe.Zwoelf; } if (zeitpunkt == Zeitpunkt.Jahresende) { return schueler.getKlasse.Jahrgangsstufe == Jahrgangsstufe.Elf || schueler.getKlasse.Jahrgangsstufe == Jahrgangsstufe.Vorklasse || schueler.getKlasse.Jahrgangsstufe == Jahrgangsstufe.Vorkurs; } return false; }
/// <summary> /// Konstruktor. /// </summary> /// <param name="sourceFileName">Der Dateiname des Exportfiles der leeren DZeugnis-Tabelle.</param> /// <param name="targetFileName">Der Dateiname des zu erstellenden ImportFiles der DZeugnis-Tabelle.</param> public DZeugnisFileController(string sourceFileName, string targetFileName, Zeitpunkt zeitpunkt) { Faecherspiegel faecher = new Faecherspiegel(); SchuelerTableAdapter ada = new SchuelerTableAdapter(); using (FileStream inStream = new FileStream(sourceFileName, FileMode.Open, FileAccess.Read)) using (StreamReader reader = new StreamReader(inStream, Encoding.GetEncoding("iso-8859-1"))) using (FileStream outStream = new FileStream(targetFileName, FileMode.Create, FileAccess.Write)) using (StreamWriter writer = new StreamWriter(outStream, Encoding.GetEncoding("iso-8859-1"))) { while (!reader.EndOfStream) { var zeile = new VerwalteZeile(reader.ReadLine()); int schuelerId = int.Parse(zeile[Konstanten.schuelerIdCol]); // Prüfe vorher, ob der Schüler existiert (hier kommen tausend Schüler aus den Vorjahren) if (ada.GetDataById(schuelerId).Count == 0) { continue; } Schueler schueler = Zugriff.Instance.SchuelerRep.Find(schuelerId); if (BrauchtZeugnis(schueler, zeitpunkt)) { zeile[Konstanten.fpaCol] = Konstanten.GetFpaString(GetFpaNote(zeitpunkt, schueler)); KlassenzielOderGefaehrdung zielerreichung = GetZielerreichung(zeitpunkt, schueler); zeile[Konstanten.klassenzielOderGefaehrdungCol] = Konstanten.GetKlassenzielOderGefaehrdungString(zielerreichung); if (zeitpunkt == Zeitpunkt.ErstePA || zeitpunkt == Zeitpunkt.ZweitePA || zeitpunkt == Zeitpunkt.DrittePA) { zeile[Konstanten.zeugnisartCol] = zielerreichung == KlassenzielOderGefaehrdung.AbschlusspruefungOhneErfolg ? "J" : "A"; zeile[Konstanten.APBestandenCol] = Konstanten.GetBestandenString(GetBestanden(zeitpunkt, schueler)); } zeile[Konstanten.abweisungCol] = Konstanten.GetAbweisungString(schueler.GefahrDerAbweisung); var seminarfachNote = new SeminarfachnoteTableAdapter().GetDataBySchuelerId(schuelerId); if (seminarfachNote != null && seminarfachNote.Count == 1 && !seminarfachNote[0].IsGesamtnoteNull()) { zeile[Konstanten.seminarfachGesamtnote] = string.Format(CultureInfo.CurrentCulture, "{0:00}", seminarfachNote[0].Gesamtnote); zeile[Konstanten.seminarfachThema] = !string.IsNullOrEmpty(seminarfachNote[0].ThemaKurz) ? seminarfachNote[0].ThemaKurz : seminarfachNote[0].ThemaLang.Substring(0, 128); } string faecherspiegel = zeile[Konstanten.faecherspiegelCol]; if (string.IsNullOrEmpty(faecherspiegel)) { log.Warn("Für den Schüler " + schueler.NameVorname + " gibt es keinen passenden Fächerspiegel!"); continue; } for (int i = 0; i < 30; i++) { zeile[Konstanten.notePflichtfach1Col + i] = faecher.GetFachNoteString(faecherspiegel, i, schueler.getKlasse.Schulart, schueler, zeitpunkt); } if (Konstanten.ZeugnisartFromString(zeile[Konstanten.zeugnisartCol]) != Zeugnisart.Zwischenzeugnis) { for (int i = 0; i < 20; i++) { zeile[Konstanten.jahresfortgangPflichtfach1Col + i] = faecher.FindeJahresfortgangsNoten(faecherspiegel, i, schueler.getKlasse.Schulart, schueler, zeitpunkt); zeile[Konstanten.APschriftlichPflichtfach1Col + i] = faecher.FindeAPSchriftlichNoten(faecherspiegel, i, schueler.getKlasse.Schulart, schueler, zeitpunkt); zeile[Konstanten.APmuendlichPflichtfach1Col + i] = faecher.FindeAPMuendlichNoten(faecherspiegel, i, schueler.getKlasse.Schulart, schueler, zeitpunkt); zeile[Konstanten.gesamtNoteMitAPGanzzahlig1Col + i] = faecher.GetFachNoteString(faecherspiegel, i, schueler.getKlasse.Schulart, schueler, zeitpunkt); } } SucheWahlpflichtfach(zeitpunkt, faecher, zeile, schueler, Konstanten.weiteresFach1BezeichnungCol, Konstanten.weiteresFach1NoteCol); SucheWahlpflichtfach(zeitpunkt, faecher, zeile, schueler, Konstanten.weiteresFach2BezeichnungCol, Konstanten.weiteresFach2NoteCol); SucheWahlpflichtfach(zeitpunkt, faecher, zeile, schueler, Konstanten.weiteresFach3BezeichnungCol, Konstanten.weiteresFach3NoteCol); } // rausgeschrieben werden immer alle Zeugnisse, da im Import "ersetzen" angehakt werden muss writer.WriteLine(zeile.ToString()); } } }
public Berechnungen(Zeitpunkt azeitpunkt) { zeitpunkt = azeitpunkt; }
/* public IList<int> getNoten(Notentyp typ) { IList<int> res = new List<int>(noten[(int)Halbjahr.Erstes, (int)typ]); noten[(int)Halbjahr.Zweites, (int)typ].CopyTo(res); return res; } */ /// <summary> /// Liefert die zur Zeit z (z.B. Probezeit BOS) relevante Note (hier Jahresfortgang Ganzz. 1. Hj.) /// </summary> public byte? getRelevanteNote(Zeitpunkt z) { if (z == Zeitpunkt.ProbezeitBOS || z == Zeitpunkt.HalbjahrUndProbezeitFOS) { return getSchnitt(Halbjahr.Erstes).JahresfortgangGanzzahlig; } else if (z == Zeitpunkt.ErstePA || z == Zeitpunkt.Jahresende) { return getSchnitt(Halbjahr.Zweites).JahresfortgangGanzzahlig; } else // 2./3.PA { return getSchnitt(Halbjahr.Zweites).Abschlusszeugnis; } }
/* public IList<int> getNoten(Notentyp typ) { IList<int> res = new List<int>(noten[(int)Halbjahr.Erstes, (int)typ]); noten[(int)Halbjahr.Zweites, (int)typ].CopyTo(res); return res; } */ /// <summary> /// Liefert die zur Zeit z (z.B. Probezeit BOS) relevante Note (hier Jahresfortgang Ganzz. 1. Hj.) /// </summary> public byte? getRelevanteNote(Zeitpunkt z) { if (Zugriff.Instance.KursRep.Find(kursId).getLehrer == null) { // wenn der Kurs keinen Lehrer hat, handelt es sich vermutlich um eine Note aus der 11ten Klasse return getSchnitt(Halbjahr.Zweites).Abschlusszeugnis; } if (z == Zeitpunkt.ProbezeitBOS || z == Zeitpunkt.HalbjahrUndProbezeitFOS) { return getSchnitt(Halbjahr.Erstes).JahresfortgangGanzzahlig; } else if (z == Zeitpunkt.ErstePA || z == Zeitpunkt.Jahresende) { return getSchnitt(Halbjahr.Zweites).JahresfortgangGanzzahlig; } else // 2./3.PA { return getSchnitt(Halbjahr.Zweites).Abschlusszeugnis; } }