|
@@ -19,6 +19,7 @@ StudentenPunkte = []
|
19
|
19
|
Notenverteilung = []
|
20
|
20
|
|
21
|
21
|
# Funktionsdefinitionen
|
|
22
|
+# interaktive Abfrage der Eckdaten (Name und Datum) der Klausur
|
22
|
23
|
def SchluesselDatenAbfragen():
|
23
|
24
|
def WerteUebernehmen():
|
24
|
25
|
global name
|
|
@@ -51,6 +52,7 @@ def SchluesselDatenAbfragen():
|
51
|
52
|
button2.grid(row = 1, column = 2)
|
52
|
53
|
button3.grid(row = 0, column = 2)
|
53
|
54
|
root.mainloop()
|
|
55
|
+# interktive Abfrage der fuer jede Aufgabe erreichbaren maximalen Punkte
|
54
|
56
|
def AufgabenPunkteAbfragen():
|
55
|
57
|
def VerbergeHilfe():
|
56
|
58
|
button1.config(text = "Hilfe", fg = "green", command = ZeigeHilfe)
|
|
@@ -67,10 +69,11 @@ def AufgabenPunkteAbfragen():
|
67
|
69
|
button2.config(text = "Weiter", command = EndeAbfragen)
|
68
|
70
|
def EndeAbfragen():
|
69
|
71
|
global PunkteProAufgabe
|
70
|
|
- PunkteProAufgabe.append(float(entry1.get()))
|
71
|
|
- label1.config(text = "Waren das alle Aufgaben?", font = "Arial 13 bold")
|
72
|
|
- button1.config(text = "Ja", fg = "black", command = root.destroy)
|
73
|
|
- button2.config(text = "Nein", command = NaechsteAufgabeEinlesen)
|
|
72
|
+ if 0.0 < float(entry1.get()):
|
|
73
|
+ PunkteProAufgabe.append(float(entry1.get()))
|
|
74
|
+ label1.config(text = "Waren das alle Aufgaben?", font = "Arial 13 bold")
|
|
75
|
+ button1.config(text = "Ja", fg = "black", command = root.destroy)
|
|
76
|
+ button2.config(text = "Nein", command = NaechsteAufgabeEinlesen)
|
74
|
77
|
root = Tk()
|
75
|
78
|
tmp = "Aufgabe",str(zaehler)
|
76
|
79
|
root.title("Punkte fuer einzelne Aufgaben")
|
|
@@ -85,6 +88,7 @@ def AufgabenPunkteAbfragen():
|
85
|
88
|
button1.grid(row = 3, column = 0)
|
86
|
89
|
button2.grid(row = 3, column = 1)
|
87
|
90
|
root.mainloop()
|
|
91
|
+# interaktive Abfrage eines Prozentsatzes fuer Mindestpunktzahl zum Bestehen
|
88
|
92
|
def MindestPunktzahlAbfragen():
|
89
|
93
|
def WertUebernehmen():
|
90
|
94
|
global ProzentSatz
|
|
@@ -99,6 +103,7 @@ def MindestPunktzahlAbfragen():
|
99
|
103
|
button1 = Button(root, text = "Uebernehmen", command = WertUebernehmen)
|
100
|
104
|
button1.grid(row = 1, column = 1)
|
101
|
105
|
root.mainloop()
|
|
106
|
+# errechnet die jeweiligen Mindestpunkte, die fuer die Noten 1, 2, 3 benoetigt werden
|
102
|
107
|
def BewertungsSpiegelBerechnen():
|
103
|
108
|
global PunkteProAufgabe
|
104
|
109
|
global ProzentSatz
|
|
@@ -115,6 +120,7 @@ def BewertungsSpiegelBerechnen():
|
115
|
120
|
minEins = Summe - tmp
|
116
|
121
|
minZwei = minEins - tmp
|
117
|
122
|
minDrei = minZwei - tmp
|
|
123
|
+# interaktives Abfragen der individuellen Punkte der Studenten je Aufgabe
|
118
|
124
|
def StudentenMaskeGenerieren():
|
119
|
125
|
def VerbergeHilfe():
|
120
|
126
|
button1.config(text = "Hilfe", fg = "green", command = ZeigeHilfe)
|
|
@@ -142,8 +148,11 @@ def StudentenMaskeGenerieren():
|
142
|
148
|
Studenten.append(tmpStudentenDaten)
|
143
|
149
|
tmpPunkte.append(int(entry2.get()))
|
144
|
150
|
for i in range(zaehler):
|
145
|
|
- tmpPunkte.append(float(entries[i].get()))
|
146
|
|
- StudentenPunkte.append(tmpPunkte)
|
|
151
|
+ if float(entries[i].get()) <= float(PunkteProAufgabe[i]) and 0.0 <= float(entries[i].get()):
|
|
152
|
+ tmpPunkte.append(float(entries[i].get()))
|
|
153
|
+ else:
|
|
154
|
+ tmpPunkte.append(0.0)
|
|
155
|
+ StudentenPunkte.append(tmpPunkte)
|
147
|
156
|
label1.config(text = "Waren das alle", font = "Arial 12 bold")
|
148
|
157
|
label2.config(text = "Studenten?", font = "Arial 12 bold")
|
149
|
158
|
button1.config(text = "Ja", fg = "black", command = root.destroy)
|
|
@@ -176,6 +185,7 @@ def StudentenMaskeGenerieren():
|
176
|
185
|
button2.grid(row = 1, column = 2)
|
177
|
186
|
root.mainloop()
|
178
|
187
|
PunkteProAufgabe = []
|
|
188
|
+# Berechnung der Noten anhand der Punkte fuer jeden Studenten
|
179
|
189
|
def GesamtNoteBerechnen():
|
180
|
190
|
global Summe
|
181
|
191
|
global Studenten
|
|
@@ -184,10 +194,6 @@ def GesamtNoteBerechnen():
|
184
|
194
|
global minZwei
|
185
|
195
|
global minDrei
|
186
|
196
|
global BestehPunkte
|
187
|
|
- print BestehPunkte
|
188
|
|
- print minEins
|
189
|
|
- print minZwei
|
190
|
|
- print minDrei
|
191
|
197
|
for i in range(len(Studenten)):
|
192
|
198
|
tmpSumme = 0
|
193
|
199
|
for j in range(1,len(StudentenPunkte[i])):
|
|
@@ -207,6 +213,7 @@ def GesamtNoteBerechnen():
|
207
|
213
|
minZwei = 0
|
208
|
214
|
minDrei = 0
|
209
|
215
|
BestehPunkte = 0
|
|
216
|
+# Berechnung der Notenverteilung
|
210
|
217
|
def Notenspiegel():
|
211
|
218
|
global Notenverteilung
|
212
|
219
|
global Studenten
|
|
@@ -215,22 +222,30 @@ def Notenspiegel():
|
215
|
222
|
for j in range(len(Studenten)):
|
216
|
223
|
Vergleich = Studenten[j][2]
|
217
|
224
|
Notenverteilung[int(10*(Vergleich-1))] += 1
|
|
225
|
+# Ausgabe des Notenspiegels
|
218
|
226
|
def NotenspiegelAusgabe():
|
|
227
|
+ global Notenverteilung
|
219
|
228
|
root = Tk()
|
220
|
229
|
root.title("Notenspiegel")
|
221
|
230
|
for i in range(41):
|
222
|
|
- farbe = "#{:s}".format(str(2390*i).zfill(6))
|
|
231
|
+ farbe = "#{:s}".format(str(999999-2390*i).zfill(6))
|
223
|
232
|
tmp = 1.0 + float(i)/10.0
|
224
|
233
|
Label(root, text = tmp).grid(row = i, column = 0)
|
225
|
234
|
Label(root, width = int(float(Notenverteilung[i])/float(len(Studenten))*128), background = farbe).grid(row = i, column = 1, sticky = W, pady = 4)
|
226
|
235
|
Button(root, text = "Beenden", command = root.destroy).grid(row = 0, column = 2)
|
227
|
236
|
root.mainloop()
|
|
237
|
+ Notenverteilung = []
|
|
238
|
+# Daten an das gewaehlte Speicherformat anpassen, sodass es spaeter nicht zu
|
|
239
|
+# Problemen beim wiederholten Bearbeiten, durch zu lange Namen kommt
|
228
|
240
|
def DatenAnpassen():
|
229
|
241
|
for i in range(len(Studenten)):
|
230
|
242
|
if Studenten[i][0] >= 10**15:
|
231
|
243
|
Studenten[i][0] = Studenten[i][0] - (Studenten[i][0] / 10**15) * 10**15
|
232
|
244
|
if len(Studenten[i][1]) >= 16:
|
233
|
245
|
Studenten[i][1] = Studenten[i][1][0:15]
|
|
246
|
+# Die Daten im Tabellenformat:
|
|
247
|
+# | Matr.Nr. | Name | Note |
|
|
248
|
+# abspeichern
|
234
|
249
|
def TextdateiErstellen():
|
235
|
250
|
global Studenten
|
236
|
251
|
global StudentenPunkte
|
|
@@ -243,6 +258,7 @@ def TextdateiErstellen():
|
243
|
258
|
Datei.close()
|
244
|
259
|
Studenten = []
|
245
|
260
|
StudentenPunkte = []
|
|
261
|
+# ueberprueft ob die Datei im aktuellen Ordner vorhanden ist
|
246
|
262
|
def ExistenzPruefung():
|
247
|
263
|
global name
|
248
|
264
|
foldercontent = os.listdir(".")
|
|
@@ -250,6 +266,7 @@ def ExistenzPruefung():
|
250
|
266
|
return True
|
251
|
267
|
else:
|
252
|
268
|
return False
|
|
269
|
+# liest eine existierende Klausurendatei fuer die weitere Verarbeitung aus
|
253
|
270
|
def DatenAuslesen():
|
254
|
271
|
Datei = open(name,"r")
|
255
|
272
|
Datei.readline()
|
|
@@ -270,22 +287,26 @@ def DatenAuslesen():
|
270
|
287
|
Student.append(float(tmp[2]))
|
271
|
288
|
Studenten.append(Student)
|
272
|
289
|
Datei.close()
|
|
290
|
+# Warnhinweis ausgeben
|
273
|
291
|
def NichtExistenzVerkuenden():
|
274
|
292
|
root = Tk()
|
275
|
293
|
root.title("Keine Datei gefunden")
|
276
|
294
|
Label(root, text = "Die Datei existiert noch gar nicht!").grid()
|
277
|
295
|
Button(root, text = "Weiter", command = root.destroy).grid()
|
278
|
296
|
root.mainloop()
|
|
297
|
+# Warnhinweis ausgeben
|
279
|
298
|
def BereitsVorhandenseinVerkuenden():
|
280
|
299
|
root = Tk()
|
281
|
300
|
root.title("Datei existiert bereits")
|
282
|
301
|
Label(root, text = "Die Datei existiert bereits!").grid()
|
283
|
302
|
Button(root, text = "Weiter", command = root.destroy).grid()
|
284
|
303
|
root.mainloop()
|
|
304
|
+# manuelle Aenderungen an existierender Klausurendatei vornehmen
|
285
|
305
|
def Aenderungen():
|
286
|
306
|
def WerteUebernehmen():
|
287
|
307
|
for i in range(len(Studenten)):
|
288
|
|
- Studenten[i][2] = float(entries[i].get())
|
|
308
|
+ if float(entries[i].get()) <= 5 and 1.0 <= float(entries[i].get()):
|
|
309
|
+ Studenten[i][2] = float(entries[i].get())
|
289
|
310
|
root.destroy()
|
290
|
311
|
root = Tk()
|
291
|
312
|
root.title("Studentendaten aendern")
|
|
@@ -298,6 +319,7 @@ def Aenderungen():
|
298
|
319
|
entries[i].insert(10,Studenten[i][2])
|
299
|
320
|
Button(root, text = "Uebernehmen", command = WerteUebernehmen).grid(row = 0, column = 3)
|
300
|
321
|
root.mainloop()
|
|
322
|
+# Hauptmenue aufrufen
|
301
|
323
|
def Hauptmenue():
|
302
|
324
|
def NeueKlausur():
|
303
|
325
|
mainroot.destroy()
|