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..."; }
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); }