# genutzte Module from Tkinter import * import sys # Globale Variablen name = "" date = "" PunkteProAufgabe = [] zaehler = 1 ProzentSatz = 0 Summe = 0 BestehPunkte = 0 minEins = 0 minZwei = 0 minDrei = 0 Studenten = [] StudentenPunkte = [] Notenverteilung = [] # Funktionsdefinitionen def SchluesselDatenAbfragen(): def WerteUebernehmen(): global name global date name = entry1.get() date = entry2.get() button1.config(text = "Weiter", command = root.destroy) def VerbergeHilfeName(): button3.config(text = "Hilfe", command = ZeigeHilfeName) def ZeigeHilfeName(): button3.config(text = "Beachte: _ anstatt Leerzeichen", command = VerbergeHilfeName) def VerbergeHilfeDatum(): button2.config(text = "Hilfe", command = ZeigeHilfeDatum) def ZeigeHilfeDatum(): button2.config(text = "Format: DD-MM-JJJJ", command = VerbergeHilfeDatum) root = Tk() root.title("Name und Datum") Label(root, text = "Name der Klausur").grid(row = 0, column = 0) Label(root, text = "Datum der Klausur").grid(row = 1, column = 0) entry1 = Entry(root) entry2 = Entry(root) entry1.grid(row = 0, column = 1, pady = 4) entry2.grid(row = 1, column = 1, pady = 4) entry1.insert(10,"Klausur") entry2.insert(10,"01-01-2000") button1 = Button(root, text = "Uebernehmen", command = WerteUebernehmen) button2 = Button(root, text = "Hilfe", command = ZeigeHilfeDatum) button3 = Button(root, text = "Hilfe", command = ZeigeHilfeName) button1.grid(row = 3, column = 1) button2.grid(row = 1, column = 2) button3.grid(row = 0, column = 2) root.mainloop() def AufgabenPunkteAbfragen(): def VerbergeHilfe(): button1.config(text = "Hilfe", command = ZeigeHilfe) def ZeigeHilfe(): button1.config(text = "Anzahl Punkte fuer jede Aufgabe eintragen", command = VerbergeHilfe) def NaechsteAufgabeEinlesen(): global zaehler zaehler += 1 tmp = "Aufgabe",str(zaehler) label1.config(text = tmp) entry1.delete(0,END) entry1.insert(10,"10") button1.config(text = "Hilfe", command = ZeigeHilfe) button2.config(text = "Weiter", command = EndeAbfragen) def EndeAbfragen(): global PunkteProAufgabe PunkteProAufgabe.append(float(entry1.get())) label1.config(text = "Waren das alle Aufgaben?") button1.config(text = "Ja", command = root.destroy) button2.config(text = "Nein", command = NaechsteAufgabeEinlesen) root = Tk() tmp = "Aufgabe",str(zaehler) root.title("Punkte fuer einzelne Aufgaben") label1 = Label(root, text = tmp) Label(root, text = "Erreichbare Punkte").grid(row = 1, column = 0) label1.grid(row = 0, column = 1) entry1 = Entry(root) entry1.grid(row = 1, column = 1, pady = 4) entry1.insert(10,"10") button1 = Button(root, text = "Hilfe", command = ZeigeHilfe) button2 = Button(root, text = "Weiter", command = EndeAbfragen) button1.grid(row = 3, column = 0) button2.grid(row = 3, column = 1) root.mainloop() def MindestPunktzahlAbfragen(): def WertUebernehmen(): global ProzentSatz ProzentSatz = float(entry1.get()) button1.config(text = "Weiter", command = root.destroy) root = Tk() root.title("Prozentsatz zum Bestehen") Label(root, text = "Prozentsatz").grid(row = 0, column = 0) entry1 = Entry(root) entry1.grid(row = 0, column = 1) entry1.insert(10,"50") button1 = Button(root, text = "Uebernehmen", command = WertUebernehmen) button1.grid(row = 1, column = 1) root.mainloop() def BewertungsSpiegelBerechnen(): global PunkteProAufgabe global ProzentSatz global Summe global BestehPunkte global minEins global minZwei global minDrei for i in range(len(PunkteProAufgabe)): Summe += PunkteProAufgabe[i] BestehPunkte = Summe * ProzentSatz/100 tmp = Summe - BestehPunkte tmp /= 4 minEins = Summe - tmp minZwei = minEins - tmp minDrei = minZwei - tmp def StudentenMaskeGenerieren(): def VerbergeHilfe(): button1.config(text = "Hilfe", command = ZeigeHilfe) def ZeigeHilfe(): button1.config(text = "Beachte: _ anstatt Leerzeichen", command = VerbergeHilfe) def NaechstenStudentEinlesen(): label1.config(text = "Name") label2.config(text = "Matrikelnummer") entry1.delete(0,END) entry2.delete(0,END) entry1.insert(10,"Max_Mustermann") entry2.insert(10,"9999999") for i in range(zaehler): entries[i].delete(0,END) entries[i].insert(10,PunkteProAufgabe[i]) button1.config(text = "Hilfe", command = ZeigeHilfe) button2.config(text = "Uebernehmen", command = UebernehmeStudent) def UebernehmeStudent(): global Studenten global StudentenPunkte tmpStudentenDaten = [] tmpPunkte = [] tmpStudentenDaten.append(int(entry2.get())) tmpStudentenDaten.append(entry1.get()) Studenten.append(tmpStudentenDaten) tmpPunkte.append(int(entry2.get())) for i in range(zaehler): tmpPunkte.append(float(entries[i].get())) StudentenPunkte.append(tmpPunkte) label1.config(text = "Waren das alle") label2.config(text = "Studenten?") button1.config(text = "Ja", command = root.destroy) button2.config(text = "Nein", command = NaechstenStudentEinlesen) global PunkteProAufgabe root = Tk() root.title("Studentendaten") label1 = Label(root, text = "Name") label2 = Label(root, text = "Matrikelnummer") label1.grid(row = 0, column = 0) label2.grid(row = 1, column = 0) Label(root, text = "Aufgabe").grid(row = 2, column = 0) Label(root, text = "Erreichte Punkte").grid(row = 2, column = 1) entry1 = Entry(root) entry2 = Entry(root) entry1.grid(row = 0, column = 1, pady = 4) entry2.grid(row = 1, column = 1, pady = 4) entry1.insert(10,"Max_Mustermann") entry2.insert(10,"9999999") entries = [] for i in range(zaehler): tmp = str(i+1) Label(root, text = tmp).grid(row = 3+i, column = 0) entries.append(Entry(root)) entries[i].grid(row = 3+i, column = 1, pady = 4) entries[i].insert(10,PunkteProAufgabe[i]) button1 = Button(root, text = "Hilfe", command = ZeigeHilfe) button2 = Button(root, text = "Uebernehmen", command = UebernehmeStudent) button1.grid(row = 0, column = 2) button2.grid(row = 1, column = 2) root.mainloop() def GesamtNoteBerechnen(): global Studenten global StudentenPunkte global minEins global minZwei global minDrei global BestehPunkte for i in range(len(Studenten)): tmpSumme = 0 for j in range(1,len(StudentenPunkte[i])): tmpSumme += StudentenPunkte[i][j] if tmpSumme < BestehPunkte: Studenten[i].append(5.0) elif tmpSumme < minDrei: Studenten[i].append(4.0 + 1 - float(int(10 * ((tmpSumme - BestehPunkte) / (minDrei - BestehPunkte)))) / 10.0) elif tmpSumme < minZwei: Studenten[i].append(3.0 + 1 - float(int(10 * ((tmpSumme - minDrei) / (minZwei - minDrei)))) / 10.0) elif tmpSumme < minEins: Studenten[i].append(2.0 + 1 - float(int(10 * ((tmpSumme - minZwei) / (minEins - minZwei)))) / 10.0) else: Studenten[i].append(1.0 + 1 - float(int(10 * ((tmpSumme - minEins) / (Summe - minEins)))) / 10.0) def Notenspiegel(): global Notenverteilung global Studenten for i in range(41): Notenverteilung.append(0) for j in range(len(Studenten)): Vergleich = Studenten[j][2] Notenverteilung[int(10*(Vergleich-1))] += 1 def NotenspiegelAusgabe(): root = Tk() for i in range(41): Label(root, text = "a" * int((Notenverteilung[i]/len(Studenten))*128), background = "red").grid(row = i, column = 0) root.mainloop() def TextdateiErstellen(): Datei = open(name, "w") Datei.write("Name der Klausur:\t%s\n" % (name)) Datei.write("Datum der Klausur:\t%s\n" % (date)) Datei.write("|\tMatr.-Nr.\t|\t\tName\t\t|\tNote\t|\n\n") for i in range(len(Studenten)): Datei.write("|\t%8d\t|\t%16s\t|\t%.1f\t|\n" % (Studenten[i][0], Studenten[i][1], Studenten[i][2])) # Hauptprogramm SchluesselDatenAbfragen() AufgabenPunkteAbfragen() MindestPunktzahlAbfragen() BewertungsSpiegelBerechnen() StudentenMaskeGenerieren() GesamtNoteBerechnen() Notenspiegel() NotenspiegelAusgabe() TextdateiErstellen()