Пример #1
0
 private void Form1_Load(object sender, EventArgs e)
 {
     this.GridErstellen();
     noten = new Noten(this);
     this.dgvAnsicht.MouseDown += new System.Windows.Forms.MouseEventHandler(this.MyDataGridView_MouseDown);
     this.InitializeMethods();
     this.testForCells = true;
     this.saved        = true;
     this.option       = AppDomain.CurrentDomain.BaseDirectory + @"Dateien\Optionen\";
     this.haupt        = AppDomain.CurrentDomain.BaseDirectory + @"Dateien\Mappen\";
     this.Text         = "neues Textdokument...";
 }
Пример #2
0
        private string AbschlussBerechnen(Noten noten)
        {
            int        eins = 0, zwei = 0, drei = 0, vier = 0, fünf = 0;
            List <int> b_coursesInd        = new List <int>();
            List <int> a_coursesInd        = new List <int>();
            List <int> rest_coursesInd     = new List <int>();
            List <int> fg1Ind              = new List <int>();
            List <int> fg2Ind              = new List <int>();
            bool       ausgleichRemaining  = true;
            bool       ausgleich2Remaining = true;
            bool       ausgleich           = false;
            string     abschluss           = "FORQ";

            for (int i = 0; i < noten.Length; i++)//B-Kurse ermitteln
            {
                if (noten.Kurs(i) == "B")
                {
                    b_coursesInd.Add(i);
                    if (noten.Zensur(i) == 6) //bei note 6 in B-Kursen nur noch EBR möglich
                    {
                        abschluss = "EBR";
                    }
                }
            }
            for (int i = 0; i < noten.Length; i++)//A-Kurse ermitteln
            {
                if (noten.Kurs(i) == "A")
                {
                    a_coursesInd.Add(i);
                    if (noten.Zensur(i) == 6) //bei note 6 in A-Kursen nur BBR möglich
                    {
                        abschluss = "BBR";
                    }
                }
            }
            for (int i = 0; i < noten.Length; i++)//restkurse ermitteln
            {
                if (noten.Kurs(i) == "")
                {
                    rest_coursesInd.Add(i);
                    if (noten.Zensur(i) == 6) //bei note 6 in restlichen Fächern nur BBR möglich
                    {
                        abschluss = "BBR";
                    }
                }
            }
            for (int i = 0; i < fg1.Length; i++)//fg1 ermitteln
            {
                if (noten.Fach(fg1[i]) != -1)
                {
                    fg1Ind.Add(noten.Fach(fg1[i]));
                }
            }
            for (int i = 0; i < fg2.Length; i++)//fg2 ermitteln
            {
                if (noten.Fach(fg2[i]) != -1)
                {
                    fg2Ind.Add(noten.Fach(fg2[i]));
                }
            }

            eins = 0; zwei = 0; drei = 0; vier = 0; fünf = 0;
            for (int i = 0; i < rest_coursesInd.Count; i++) //restliche Fächer noten
            {
                switch (noten.Zensur(rest_coursesInd[i]))   //zählen der gleichen Noten
                {
                case 1:
                    eins++;
                    break;

                case 2:
                    zwei++;
                    break;

                case 3:
                    drei++;
                    break;

                case 4:
                    vier++;
                    break;

                case 5:
                    fünf++;
                    break;
                }
            }
            //ABSCHLUSS ERMITTELN
            switch (abschluss)
            {
            case "FORQ":                    ////////////////////FORQ\\\\\\\\\\\\\\\\\\\\<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
                if (b_coursesInd.Count < 3) //mindestens 3 B-Kurse
                {
                    goto case "FOR";
                }
                //AUSGLEICH DER B-KURSE
                for (int i = 0; i < b_coursesInd.Count; i++)
                {
                    if (noten.Zensur(b_coursesInd[i]) > 3)                                        //B-Kurse mit höchstens einer note schlechter als 3
                    {
                        if ((ausgleichRemaining == false) || (noten.Zensur(b_coursesInd[i]) > 4)) //schon einen ausgleich benutzt oder note schlechter als 4
                        {
                            goto case "FOR";
                        }
                        else
                        {
                            ausgleichRemaining = false;
                            ausgleich          = false;
                            for (int k = 0; k < a_coursesInd.Count; k++)
                            {
                                if (noten.Zensur(a_coursesInd[k]) == 1)     //A-Kurs noten werden zum ausgleichen herangezogen
                                {
                                    ausgleich = true;
                                }
                            }
                            if (ausgleich == false)
                            {
                                for (int k = 0; k < b_coursesInd.Count; k++)
                                {
                                    if (noten.Zensur(b_coursesInd[k]) < 3)     //B-Kurs noten werden zum ausgleichen herangezogen
                                    {
                                        ausgleich = true;
                                    }
                                }
                            }
                            if ((ausgleich == false) && (noten.Zensur(noten.Fach("WP1")) > 2))     //WP_I wird zum ausgleichen herangezogen
                            {
                                goto case "FOR";
                            }
                        }
                    }
                }
                //AUSGLEICH DER A-KURSE
                for (int i = 0; i < a_coursesInd.Count; i++)
                {
                    if (noten.Zensur(a_coursesInd[i]) > 2)                                        //A-Kurse mit höchstens einer note schlechter als 2
                    {
                        if ((ausgleichRemaining == false) || (noten.Zensur(a_coursesInd[i]) > 3)) //ausgleich benutzt oder note schlechter als 3
                        {
                            goto case "FOR";
                        }
                        else
                        {
                            ausgleichRemaining = false;
                            ausgleich          = false;
                            for (int k = 0; k < a_coursesInd.Count; k++)
                            {
                                if (noten.Zensur(a_coursesInd[k]) == 1)     //A-Kurs noten werden zum ausgleichen herangezogen
                                {
                                    ausgleich = true;
                                }
                            }
                            if (ausgleich == false)
                            {
                                for (int k = 0; k < b_coursesInd.Count; k++)
                                {
                                    if (noten.Zensur(b_coursesInd[k]) < 3)     //B-Kurs noten werden zum ausgleichen herangezogen
                                    {
                                        ausgleich = true;
                                    }
                                }
                            }
                            if ((ausgleich == false) && (noten.Zensur(noten.Fach("WP1")) > 2))     //WP_I wird zum ausgleich herangezogen
                            {
                                goto case "FOR";
                            }
                        }
                    }
                }
                //RESTLICHE FÄCHER
                if (zwei + eins < 2)     //mindestens 2 zweien benötigt
                {
                    goto case "FOR";
                }
                if (fünf > 1)     //höchstens 1 fünf
                {
                    goto case "FOR";
                }
                if (Math.Floor(((eins + zwei * 2 + drei * 3 + vier * 4 + fünf * 5) / (double)rest_coursesInd.Count) * 10) / 10 > 3)     //mindestens durchschnitt von 3.0 benötigt
                {
                    goto case "FOR";
                }
                break;

            case "FOR":                     ////////////////////FOR\\\\\\\\\\\\\\\\\\\\<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
                ausgleichRemaining = true;
                if (b_coursesInd.Count < 2) //mindestens 3 B-Kurse
                {
                    goto case "EBR";
                }
                //AUSGLEICH DER B-KURSE
                for (int i = 0; i < b_coursesInd.Count; i++)
                {
                    if (noten.Zensur(b_coursesInd[i]) > 4)                                        //B-Kurse mit höchstens einer note schlechter als 4
                    {
                        if ((ausgleichRemaining == false) || (noten.Zensur(b_coursesInd[i]) > 5)) //schon einen ausgleich benutzt oder note schlechter als 5
                        {
                            goto case "EBR";
                        }
                        else
                        {
                            ausgleichRemaining = false;
                            ausgleich          = false;
                            for (int k = 0; k < a_coursesInd.Count; k++)
                            {
                                if (noten.Zensur(a_coursesInd[k]) < 3)     //A-Kurs noten werden zum ausgleichen herangezogen
                                {
                                    ausgleich = true;
                                }
                            }
                            if (ausgleich == false)
                            {
                                for (int k = 0; k < b_coursesInd.Count; k++)
                                {
                                    if (noten.Zensur(b_coursesInd[k]) < 4)     //B-Kurs noten werden zum ausgleichen herangezogen
                                    {
                                        ausgleich = true;
                                    }
                                }
                            }
                            if ((ausgleich == false) && (noten.Zensur(noten.Fach("WP1")) > 3))     //WP_I wird zum ausgleichen herangezogen
                            {
                                goto case "EBR";
                            }
                        }
                    }
                }
                //AUSGLEICH DER A-KURSE
                for (int i = 0; i < a_coursesInd.Count; i++)
                {
                    if (noten.Zensur(a_coursesInd[i]) > 3)                                        //A-Kurse mit höchstens einer note schlechter als 3
                    {
                        if ((ausgleichRemaining == false) || (noten.Zensur(a_coursesInd[i]) > 4)) //ausgleich benutzt oder note schlechter als 4
                        {
                            goto case "EBR";
                        }
                        else
                        {
                            ausgleichRemaining = false;
                            ausgleich          = false;
                            for (int k = 0; k < a_coursesInd.Count; k++)
                            {
                                if (noten.Zensur(a_coursesInd[k]) < 3)     //A-Kurs noten werden zum ausgleichen herangezogen
                                {
                                    ausgleich = true;
                                }
                            }
                            if (ausgleich == false)
                            {
                                for (int k = 0; k < b_coursesInd.Count; k++)
                                {
                                    if (noten.Zensur(b_coursesInd[k]) < 4)     //B-Kurs noten werden zum ausgleichen herangezogen
                                    {
                                        ausgleich = true;
                                    }
                                }
                            }
                            if ((ausgleich == false) && (noten.Zensur(noten.Fach("WP1")) > 3))     //WP_I wird zum ausgleich herangezogen
                            {
                                goto case "EBR";
                            }
                        }
                    }
                }
                //RESTLICHE FÄCHER
                if (drei + zwei + eins < 3)     //mindestens 2 zweien benötigt
                {
                    goto case "EBR";
                }
                if (fünf > 2)     //höchstens 2 fünfen
                {
                    goto case "EBR";
                }
                if (Math.Floor(((eins + zwei * 2 + drei * 3 + vier * 4 + fünf * 5) / (double)rest_coursesInd.Count) * 10) / 10 > 4)     //mindestens durchschnitt von 4.0 benötigt
                {
                    goto case "EBR";
                }
                abschluss = "FOR";
                break;

            case "EBR":     ////////////////////EBR\\\\\\\\\\\\\\\\\\\\<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
                bool deMa5 = false;
                int  usedAusgleichsNoteInd = -1;
                ausgleichRemaining = true;
                for (int i = 0; i < b_coursesInd.Count; i++)     //B-Kurs noten werden in A-Kurse umgewandelt
                {
                    if (noten.Zensur(b_coursesInd[i]) > 1)
                    {
                        noten.ZensurLower(b_coursesInd[i]);
                    }
                }
                for (int i = 0; i < noten.Length; i++)
                {
                    if ((noten.Zensur(i) == 5) && (ausgleichRemaining == false) && (ausgleich2Remaining == false))     //note 5 und keine ausgleiche mehr
                    {
                        goto case "BBR";
                    }
                    else if (noten.Zensur(i) == 5)     //note 5 und mindestens ein ausgleich
                    {
                        if (ausgleichRemaining == true)
                        {
                            ausgleichRemaining = false;
                        }
                        else
                        {
                            ausgleich2Remaining = false;
                        }
                        ausgleich = false;
                        if ((i == noten.Fach("De")) || (i == noten.Fach("Ma"))) //deutsch/mathe 5?
                        {
                            if (deMa5 == true)                                  //schon eine 5 in deutsch/mathe?
                            {
                                goto case "BBR";
                            }
                            else
                            {
                                deMa5 = true;
                            }
                        }
                        for (int k = 0; k < fg1Ind.Count; k++)      //fg I wird nur mit fg I ausgeglichen
                        {
                            if (usedAusgleichsNoteInd >= fg1Ind[k]) //nur mit größeren notenindexen als den evtl bereits genutzten fortfahren
                            {
                                continue;
                            }
                            if (i == fg1Ind[k])     //ist das fach teil von fg I?
                            {
                                if (ausgleich == true)
                                {
                                    break;
                                }
                                for (int l = 0; l < fg1Ind.Count; l++)
                                {
                                    if (noten.Zensur(fg1Ind[l]) < 4)     //ist eine fg I note zum ausgleichen vorhanden?
                                    {
                                        usedAusgleichsNoteInd = fg1Ind[l];
                                        ausgleich             = true;
                                        break;
                                    }
                                }
                                if (ausgleich == false)
                                {
                                    goto case "BBR";
                                }
                            }
                        }
                        if (ausgleich == true)     //wenn ausgleich erreicht wurde, muss nicht auf fg II untersucht werden
                        {
                            continue;
                        }
                        for (int k = 0; k < fg2Ind.Count; k++)
                        {
                            if (usedAusgleichsNoteInd >= fg2Ind[k])     //nur mit größeren notenindexen als den evtl bereits genutzten fortfahren
                            {
                                continue;
                            }
                            if (noten.Zensur(fg2Ind[k]) < 4)     //ist eine fg II note zum ausgleichen vorhanden?
                            {
                                usedAusgleichsNoteInd = fg2Ind[k];
                                ausgleich             = true;
                                break;
                            }
                        }
                        if (ausgleich == false)     //konnte kein ausgleich erreicht werden, ist der abschluss nich erreicht
                        {
                            goto case "BBR";
                        }
                    }
                }
                abschluss = "EBR";
                break;

            case "BBR":
                abschluss = "BBR";
                break;
            }
            return(abschluss);
        }