コード例 #1
0
ファイル: INotenCheck.cs プロジェクト: TheTypoMaster/diNo
        /// <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.");
        }
コード例 #2
0
ファイル: INotenCheck.cs プロジェクト: TheTypoMaster/diNo
        /// <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);
            }
            }
        }
コード例 #3
0
ファイル: INotenCheck.cs プロジェクト: TheTypoMaster/diNo
        /// <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.");
                }
            }
            }
        }
コード例 #4
0
ファイル: INotenCheck.cs プロジェクト: TheTypoMaster/diNo
        /// <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.");
            }
            }
        }
コード例 #5
0
ファイル: INotenCheck.cs プロジェクト: TheTypoMaster/diNo
 /// <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.");
     }
     }
 }