Spaces:
Sleeping
Sleeping
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() |