2 Commits f792a05a26 ... 4360805628

Author SHA1 Message Date
  Vinzent Reiß 4360805628 Merge branch 'master' of http://es-lab.de:60080/vreiss/KlausurTool 7 years ago
  Vinzent Reiß feb2829cd4 Viele Bugs beseitigt. Dazu teilweise Plausibilitaetschecks 7 years ago
1 changed files with 34 additions and 12 deletions
  1. 34 12
      ToolV00.py

+ 34 - 12
ToolV00.py

@@ -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()