Dieser Code verwendet eine Baumstruktur, um Voraussetzungen darzustellen. Es ist in Python geschrieben und verwendet ein Wörterbuch, um den Baum darzustellen. Jeder Schlüssel ist ein Kursname, und der Wert ist eine Liste seiner Voraussetzungen. Dies ermöglicht mehrere Voraussetzungen und vermeidet kreisförmige Abhängigkeiten (siehe bis zu einem gewissen Grad siehe unten).
`` `Python
Klassenvoraussetzung:
def __init __ (selbst):
self.tree ={}
Def add_course (self, curse_name, Voraussetzungen =Keine):
"" "Fügt dem Voraussetzung einen Kurs hinzu." "" "
Wenn die Voraussetzungen keine sind:
Voraussetzungen =[]
self.tree [cours_name] =Voraussetzungen
Def add_Preequisites (self, curs_name, Voraussetzung_Course):
"" "Fügt einem Kurs eine Voraussetzung hinzu." "" "
Wenn Kursname nicht in self.tree:
self.add_course (curse_name) # Kurs erstellen, wenn es nicht vorhanden ist
self.tree [cours_name] .Append (Voraussetzung_Course)
Def check_Preequisites (self, curse_name, ferle_course):
"" "Überprüft, ob ein Schüler die Voraussetzungen für einen bestimmten Kurs abgeschlossen hat." "" "
Wenn Kursname nicht in self.tree:
Return True # Kurs existiert nicht, also keine Voraussetzungen
Voraussetzungen =self.tree [cours_name]
Für Voraussetzungen für Voraussetzungen:
Wenn die Voraussetzung nicht in fertigen_Course vorliegt:
Return falsch
RECHT WAHR
def get_all_courses (self):
"" "Gibt eine Liste aller Kurse im System zurück." "" "
Rückgabeliste (self.tree.keys ())
Def print_tree (self):
"" "Druckt den Voraussetzungstaum in einem benutzerfreundlichen Format." "" "
Für den Kurs die Voraussetzungen in self.tree.items ():
Wenn Voraussetzungen:
print (f "{kurs}:{Voraussetzungen}")
anders:
print (f "{kurs}:Keine Voraussetzungen")
Beispiel verwendet
Voraussetzung =Voraussetzung () ()
Kurse und Voraussetzungen hinzufügen
vorerq_tree.add_course ("calculus i")
vorerq_tree.add_course ("Calculus II", ["Calculus i"])
vorerq_tree.add_course ("Lineare Algebra", ["Calculus i"])
vorerq_tree.add_course ("Differentialgleichungen", ["Calculus II", "Lineare Algebra"])
vorerq_tree.add_course ("Wahrscheinlichkeit &Statistik")
vorerq_tree.add_course ("maschinelles Lernen", ["Calculus II", "Wahrscheinlichkeit &Statistik"])
Drucken Sie den Baum
vorerq_tree.print_tree ())
#Check Voraussetzungen
ferast_courses =["Calculus i", "Calculus II", "Lineare Algebra"]
print (f "\ ncan student Nehmen Sie Differentialgleichungen.
ferast_courses =["calculus i", "Wahrscheinlichkeit &Statistik"]
print (f "Kann Schüler maschinelles Lernen einnehmen? {vorbereitend.
ferast_courses =["Calculus i", "Wahrscheinlichkeit &Statistik", "Lineare Algebra", "Calculus II", "Differentialgleichungen"]
print (f "Kann Schüler maschinelles Lernen einnehmen? {vorbereitend.
print (f "\ nall Kurse:{prereq_tree.get_all_courses ()}")
`` `
Einschränkungen:
* Zirkuläre Abhängigkeiten: Diese Implementierung erkennt keine kreisförmigen Abhängigkeiten ausdrücklich (z. B. A erfordert B und B erfordert a). Das Hinzufügen einer Überprüfung dafür müsste einen komplexeren Algorithmus (wie topologisches Sortieren) erfordern.
* Fehlerbehandlung: Eine robustere Fehlerbehandlung (z. B. für ungültige Kursnamen) konnte hinzugefügt werden.
* Skalierbarkeit: Für eine sehr große Anzahl von Kursen könnte eine effizientere Baumdarstellung (z. B. unter Verwendung einer dedizierten Grafikbibliothek wie "networkx`) vorzuziehen sein.
Dieses verbesserte Beispiel bietet eine funktionalere und robustere Grundlage für ein Voraussetzung für ein Studentenverwaltungssystem. Denken Sie daran, es mit einer ausgefeilteren Fehlerbehandlung, der Eingabevalidierung und möglicherweise einer grafischen Benutzeroberfläche (GUI) für ein benutzerfreundlicheres Erlebnis zu erweitern.