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