λογισμικό

Γνώση Υπολογιστών >> λογισμικό >  >> Εκπαιδευτικό Λογισμικό

Κωδικός για το σύστημα διαχείρισης προαπαιτούμενων μαθητών χρησιμοποιώντας δέντρα;

Αυτός ο κώδικας χρησιμοποιεί μια δομή δέντρου για να αντιπροσωπεύει τις προϋποθέσεις. Είναι γραμμένο στο Python και χρησιμοποιεί ένα λεξικό για να εκπροσωπήσει το δέντρο. Κάθε κλειδί είναι ένα όνομα μαθήματος και η τιμή είναι μια λίστα με τα προϋπόθεση του. Αυτό επιτρέπει πολλαπλές προϋποθέσεις και αποφεύγει τις κυκλικές εξαρτήσεις (σε κάποιο βαθμό, βλ. Περιορισμοί παρακάτω).

`` `Python

Προϋποθέσεις κατηγορίας:

def __init __ (εαυτός):

self.tree ={}

def add_course (self, course_name, προϋποθέσεις =καμία):

"" "Προσθέτει μια πορεία στο προαπαιτούμενο δέντρο." ""

Εάν τα προϋποθέματα δεν είναι:

Προαπαιτούμενα =[]

self.tree [course_name] =Προαπαιτούμενα

def add_prerequisite (self, course_name, προαπαιτούμενο_Course):

"" "Προσθέτει μια προϋπόθεση σε ένα μάθημα." ""

αν το course_name όχι στο self.tree:

self.add_course (course_name) # Δημιουργία μαθήματος εάν δεν υπάρχει

self.tree [course_name] .append (Προαπαιτούμενο_Course)

def check_prerequisites (self, course_name, completted_courses):

"" "Ελέγχει εάν ένας φοιτητής έχει ολοκληρώσει τις προϋποθέσεις για ένα συγκεκριμένο μάθημα." ""

αν το course_name όχι στο self.tree:

Η επιστροφή True # Course δεν υπάρχει, οπότε δεν υπάρχουν prereqs

Προαπαιτούμενα =self.tree [course_name]

για το Prereq σε προϋποθέσεις:

Εάν το PREREQ δεν είναι σε ολοκληρωμένο_courses:

Επιστρέψτε ψευδώς

Επιστρέψτε το TRUE

def get_all_courses (self):

"" "Επιστρέφει μια λίστα με όλα τα μαθήματα στο σύστημα." ""

Λίστα επιστροφής (self.tree.keys ())

def print_tree (self):

"" "Εκτυπώνει το προαπαιτούμενο δέντρο σε μια φιλική προς το χρήστη μορφή." ""

Για μαθήματα, προϋποθέσεις στο self.tree.items ():

Εάν προϋποθέσεις:

εκτύπωση (f "{course}:{προϋποθέσεις}")

αλλού:

εκτύπωση (F "{Course}:Δεν προϋποθέσεις")

Παράδειγμα χρήσης

PREREQ_TREE =Προαπαιτούμενο ()

Προσθήκη μαθημάτων και προϋποθέσεων

PREREQ_TREE.ADD_COURSE ("Λογισμός i")

PREREQ_TREE.ADD_COURK

prereq_tree.add_course ("Γραμμική άλγεβρα", ["Calculus I"])

prereq_tree.add_course ("Διαφορικές εξισώσεις", ["Λογισμός II", "Γραμμική άλγεβρα"]))

prereq_tree.add_course ("Πιθανότητα &Στατιστική")

prereq_tree.add_course ("Μηχανική Μάθηση", ["Λογισμός II", "Πιθανότητα &Στατιστική"]))

Εκτυπώστε το δέντρο

prereq_tree.print_tree ()

#Check Προαπαιτούμενα

completed_courses =["λογισμός i", "λογισμός II", "γραμμική άλγεβρα"]

εκτύπωση (f "\ ncan μαθητής λαμβάνει διαφορικές εξισώσεις;

completed_courses =["λογισμός i", "Πιθανότητα και στατιστική"]

εκτύπωση (F "Μπορεί ο μαθητής να πάρει μηχανική μάθηση; {prereq_tree.check_prerequisites (" Μηχανική μάθηση ", ολοκληρωμένο_courses)}")

completed_courses =["λογισμός i", "πιθανότητα &στατιστικά στοιχεία", "γραμμική άλγεβρα", "λογισμός II", "διαφορικές εξισώσεις"]

εκτύπωση (F "Μπορεί ο μαθητής να πάρει μηχανική μάθηση; {prereq_tree.check_prerequisites (" Μηχανική μάθηση ", ολοκληρωμένο_courses)}")

εκτύπωση (F "\ nall Μαθήματα:{prereq_tree.get_all_courses ()}")

`` `

Περιορισμοί:

* Κυκλικές εξαρτήσεις: Αυτή η εφαρμογή δεν ανιχνεύει ρητά κυκλικές εξαρτήσεις (π.χ. Α απαιτεί Β και Β απαιτεί Α). Η προσθήκη ελέγχου για αυτό θα απαιτούσε έναν πιο περίπλοκο αλγόριθμο (όπως η τοπολογική διαλογή).

* Χειρισμός σφαλμάτων: Θα μπορούσε να προστεθεί πιο ισχυρός χειρισμός σφαλμάτων (π.χ. για μη έγκυρα ονόματα μαθημάτων).

* Επιμελητικότητα: Για έναν πολύ μεγάλο αριθμό μαθημάτων, μπορεί να είναι προτιμότερη μια πιο αποτελεσματική αναπαράσταση δέντρων (π.χ. χρησιμοποιώντας μια ειδική βιβλιοθήκη γραφημάτων όπως το `NetworkX ').

Αυτό το βελτιωμένο παράδειγμα παρέχει ένα πιο λειτουργικό και ισχυρό θεμέλιο για ένα σύστημα διαχείρισης προαπαιτούμενων φοιτητών. Θυμηθείτε να επεκταθείτε σε αυτό με πιο εξελιγμένο χειρισμό σφαλμάτων, επικύρωση εισόδου και ενδεχομένως ένα γραφικό περιβάλλον χρήστη (GUI) για μια πιο φιλική προς το χρήστη εμπειρία.

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα