UVIC Timetable Creator

First define courses in excel file

The excel file contains specified courses with pertinent information for code success, define code as needed for your program. We then import necessary packages.

import sys
import shutil
import os

from term import term
from student import student
from course import course

from openpyxl import load_workbook
from ipysheet import from_dataframe, to_dataframe
import pandas as pd

Define importCourses function then import courses from excel sheet

def importCourses(excel_file,sheet_name):
    """
    imports data from excel file path
    """
    df = pd.read_excel(excel_file,sheet_name=sheet_name)
    raw_courses = df.values.tolist()
    courses = {}
    for name, offer_times, prereqs, completed in raw_courses:
        name = name.replace(' ','')
        ors = False
        if 'or' in prereqs:
            print('Not implemented yet')
        elif 'None' in prereqs:
            Prerequisites = []
        else:
            Prerequisites = prereqs.replace(' ','').split(',')
        courses[name]=course(name, offerTimes=offer_times, prereqs=Prerequisites,completed=completed)

    return courses
excel_file = 'Courses.xlsx'
sheet_name = 'Sheet5'
courses = importCourses(excel_file,sheet_name)

Create instance of student and import courses

We use the ‘printStudent()’ function to view details about that object

Peter = student('Peter',courses=courses)
Peter.printStudent()
Peter
Completed: 24
Todo: 14
Courses: 38

Finally, create term instances

in first case we will add one class using ‘addClasses()’

Summer = term('Su',num_classes=1, courses={})
Summer.addClasses({'SENG275':courses['SENG275']}, Peter)
Courses in Summer Semester:
SENG275

In the following terms we will use ‘autoBuildTerm()’

Fall = term('F',num_classes=5, courses={'SENG360':courses['SENG360']})
Fall.autoBuildTerm(Peter)
Courses in Fall Semester:
SENG360
SENG321
CSC360
CSC370
SENG350
ECE360
Spring = term('Sp',num_classes=5, courses={})
Spring.autoBuildTerm(Peter)
Courses in Spring Semester:
SENG371
CSC320
ECE455/CSC460
SENG401
Summer2 = term('Su',num_classes=5, courses={})
Summer2.autoBuildTerm(Peter)
Courses in Summer Semester:
SENG426
SENG440
SENG499

Finally, we print the student to view details

Peter.printStudent()
Peter
Completed: 38
Todo: 0
Courses: 38