Browse Source

Viele Bugs beseitigt. Dazu teilweise Plausibilitaetschecks

Vinzent Reiß 7 years ago
parent
commit
feb2829cd4
1 changed files with 34 additions and 12 deletions
  1. 34 12
      ToolV00.py

+ 34 - 12
ToolV00.py

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