mercredi 14 septembre 2016

Program design of a timetable creator

For fun, I want to write a timetable creator in python for schools. I.e. a program where schools can input their rooms, teachers, classes and subjects and some preferences and which will output a timetable for each class/teacher/room. I don't have a problem with the logic behind this (because that is the part I am most interested in), but I do have a problem with the design (due to inexperience in writing something big from scratch).

So assume I have a list of rooms (101, 102, ...), a list of teachers (Mr A, Mrs B, ...), a list of subjects (math, english, ...) and a list of classes (5, 6, ...).

Now some rooms are better suited for different subjects (like 101 is good for math & english, but geography must be in 102, if possible). Of course, every teacher has a certain set of subjects he teaches.

Also, the classes are parted in different groups. I.e. class year 5 is parted in 5-a and 5-b for all subjects except sports (where it may be 5-groupX and 5-groupY) and another subject, where it may be 5-group1, 5-group2 and 5-group3.

It would be nice if someone could give me some advice on how to efficiently save this data / design my classes, so I can write some nice code.

My first guess would be something like (pseude code):

class Room:
    string name     # e.g. r102.name = "102"
    int id          # that should be unique?

class Subject:
    string name     
    int id          
    map RoomPref    # like geography.Roompref[r102.id] = 1.0 
                    # or math.Roompref[r101.id] = 0.75 

class Teacher:  
    list Subjects   # like MrsB.Subjects = {geography.id, math.id}

etc, etc, but I am not sure if this approach is good and leads to nice code. Especially all the different interconnections pose a problem to me. (Is assigning different IDs a good solution?)

Advice and/or reading material is welcome.

Aucun commentaire:

Enregistrer un commentaire