File size: 4,620 Bytes
a3dcbd1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
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()