Skip to content

daniel-dws/CIS41B-FinalProject

Repository files navigation

CIS 41B Final Project - CIS Course Catalog

Team Members: Ben Hung & Daniel Wong

Project Description:
Our application consists of a backend and a frontend. Our backend scrapes class data across De Anza, from 2010-present, and stores the data in a SQL database. Our frontend uses the database to allow the user to access different statistics such as detailed information about a De Anza CIS professor (e.g., the courses they teach), as well as other statistics like ratios of online vs in person classes.

Python Libraries Used:
* tkinter (for GUI)
* requests (for web scraping & for accessing api)
* Beautiful Soup (for web scraping)
* json (for storing class data)
* sqlite3 (for database)
* regex (for text manipulation)
* defaultdict (for easier dictionary usage)

This Project has total 6 files.
* CourseCatalogBack.py (backend)
* CourseCatalogGUI.py (frontend)
* Course.py (data structure)
* CourseData.db (database)
* data.json (class data)
* courseListings.json (web-scraped data)
* quarters.json (De Anza quarters data)

How to run the project:
1. Import required dependencies
1. Create the database (run CourseCatalogBack.py)
3. Run CourseCatalogGUI.py, a MainWindow shows and users have 3 choices.

    a) Click "Professor Stats" brings down a list-box menu of professor names. Users can choose one teacher
       - Displays a Professor Result Window of the teacher selected 
         * A counter for the total number of classes taught
         * A listbox of classes taught by that professor
         * A pie chart of the ratio of Online to In-Person courses taught
       - Upon the selection of a course in the listbox, a DisplayTimes Result Window is created
         * Overall chart of Monday-Sunday Schedule across each term
    b) Click "Course Stats" brings down a list-box menu of class names. Users can choose one course
       - Displays a Course Result Window of the course selected
         * A counter for the number of times the course has been taught
         * A listbox of teachers that have taught the class
         * A pie chart of ratio of Online to In-Person courses taught
         * A bar plot of times taught each year
         * Adjustable scale for the start year and end year to select a range of years to display on the pie chart and bar chart
    c) Click "Misc Stats" will open a window of general statistics
       - Displays a Misc Result Window
         * A counter for which professor has taught the most over the years
         * A counter for which classroom was used the most over the years
         * A line plot for the trend of Online to In-Person classes over the years

New features:
* Pie Chart for online and in-person
* Scale feature

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages