GenAI-Warrior's picture
Upload 5 files
a3dcbd1
import streamlit as st
import sqlite3
from course_list import *
import random
def user_input_form():
# Program Level Input
student_name = st.text_input("What is your name ?")
program_level = st.selectbox("1. Which program level are you currently in?", ["Foundational", "Diploma","Degree"])
if program_level == "Foundational":
completed_courses = st.multiselect("2. Select the courses you have completed:", Foundational_course)
elif program_level == "Diploma":
completed_courses = st.multiselect("2. Select the courses you have completed:", Diploma_courses)
else:
completed_courses = st.multiselect("2. Select the courses you have completed:", Degree_course)
# Time Commitments Input
time_commitments = st.slider("3. What are your time commitments?", 0, 30)
# Credit Clearing Capability
c_c_c = st.slider("4. What is your current CCC (Credit Clearing Capability) ? ",1,4)
return program_level, completed_courses, time_commitments,c_c_c , student_name
def get_available_courses(program_level,completed_courses):
# Remove completed courses from the available courses
if program_level == "Foundational":
available_courses = [course for course in Foundational_course if course not in completed_courses]
elif program_level == "Diploma":
available_courses = [course for course in Diploma_courses if course not in completed_courses]
else:
available_courses = [course for course in Degree_course if course not in completed_courses]
return available_courses
def get_course_difficulty(course_name):
# Connect to SQLite database
conn = sqlite3.connect('course_reviews.db')
cursor = conn.cursor()
# Query the database to get the difficulty level of the specified course
cursor.execute('''
SELECT difficulty_level FROM course_difficulty
WHERE course_name = ?
''', (course_name,))
difficulty_level = cursor.fetchone()
# Close the connection
conn.close()
# Return the difficulty level (or None if course not found)
return difficulty_level[0] if difficulty_level else None
def get_recommendation(available_courses,time_commitments,c_c_c):
rec_course = {}
for course in available_courses:
level = get_course_difficulty(course)
rec_course[course] = level
selected_course = []
if 0 <= time_commitments <= 10:
for course ,level in rec_course.items():
if level == "Easy":
selected_course.append(course)
elif 10 < time_commitments <= 20:
for course ,level in rec_course.items():
if level == "Easy" or level == "Moderate":
selected_course.append(course)
elif 20 < time_commitments <= 30:
for course ,level in rec_course.items():
if level == "Easy" or level == "Moderate" or level == "Hard":
selected_course.append(course)
final_course = []
for course in selected_course:
if course == "Mathematics 2":
if "Mathematics 1" not in selected_course:
final_course.append(course)
elif course == "Statistics 2":
if "Mathematics 1" not in selected_course and "Statistics 1" not in selected_course and "Mathematics 2" in selected_course:
final_course.append(course)
elif course == "MAD 1":
if "DBMS" in selected_course :
final_course.append(course)
elif course == "MAD 2":
if "MAD 1" not in selected_course:
final_course.append(course)
else:
final_course.append(course)
random.shuffle(final_course)
return final_course[0:c_c_c]
def main():
st.title("Course Recommendation System")
# Display user input form
program_level, completed_courses, time_commitments, c_c_c , student_name = user_input_form()
available_courses = get_available_courses(program_level, completed_courses)
courses = get_recommendation(available_courses , time_commitments,c_c_c)
# Display user inputs
if st.button("Get Recommendations"):
st.subheader("User Inputs:")
st.write("Program Level:", program_level)
st.write("Completed Courses:", completed_courses)
st.write("Time Commitments:", f"{time_commitments} hours per week")
st.write("Current CCC: ",f"{c_c_c}")
st.subheader("Output:")
st.write(f"Hey {student_name} , based on your inputs these are the recommended course for you :",courses)
if __name__ == "__main__":
main()