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()