0% found this document useful (0 votes)
6 views

Code

code of project

Uploaded by

khan2547abdul
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views

Code

code of project

Uploaded by

khan2547abdul
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 5

import streamlit as st

import sqlite3

# Function to initialize the database and tables

def init_db():
conn = sqlite3.connect('course_management.db')
c = conn.cursor()

# Create tables (courses, students)


c.execute('''
CREATE TABLE IF NOT EXISTS courses (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
description TEXT
)
''')

c.execute('''
CREATE TABLE IF NOT EXISTS students (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
email TEXT,
phone TEXT,
course_id INTEGER,
FOREIGN KEY (course_id) REFERENCES courses(id)
)
''')

conn.commit()
conn.close()

# Function to add or update a course

def add_or_update_course(name, description, course_id=None):


conn = sqlite3.connect('course_management.db')
c = conn.cursor()

if course_id:
c.execute("UPDATE courses SET name = ?, description = ? WHERE id = ?",
(name, description, course_id))
else:
c.execute(
"INSERT INTO courses (name, description) VALUES (?, ?)", (name,
description))

conn.commit()
conn.close()

# Function to view all courses and the number of students joined each course

def view_courses():
conn = sqlite3.connect('course_management.db')
c = conn.cursor()
c.execute("SELECT courses.name, courses.description, courses.id FROM courses")
courses = c.fetchall()
conn.close()
return courses

# Function to delete a course

def delete_course(course_id):
conn = sqlite3.connect('course_management.db')
c = conn.cursor()
c.execute("DELETE FROM courses WHERE id = ?", (course_id,))
conn.commit()
conn.close()

# Function to add or update a student

def add_or_update_student(name, email, phone, course_id, student_id=None):


conn = sqlite3.connect('course_management.db')
c = conn.cursor()

if student_id:
c.execute("UPDATE students SET name = ?, email = ?, phone = ?, course_id
= ? WHERE id = ?",
(name, email, phone, course_id, student_id))
else:
c.execute("INSERT INTO students (name, email, phone, course_id) VALUES
(?, ?, ?, ?)",
(name, email, phone, course_id))

conn.commit()
conn.close()

# Function to view all students

def view_students():
conn = sqlite3.connect('course_management.db')
c = conn.cursor()
c.execute("SELECT * FROM students")
students = c.fetchall()
conn.close()
return students

# Function to delete a student

def delete_student(student_id):
conn = sqlite3.connect('course_management.db')
c = conn.cursor()
c.execute("DELETE FROM students WHERE id = ?", (student_id,))
conn.commit()
conn.close()

# Streamlit app
st.title("Online Course Management System")

# Initialize the database


init_db()
# Sidebar for selecting user type (Student or Teacher) - On the left side
user_type = st.sidebar.radio("Login as", ("Teacher", "Student"))

# Display CRUD options based on the selected user type - On the right side
if user_type == "Student":
# st.write( "Student operations: Update profile, View courses, Join a course,
Leave a course")

# Allow students to update their profile


st.header("Student Profile")
student_name = st.text_input("Your Name")
student_email = st.text_input("Your Email")
student_phone = st.text_input("Your Phone")
student_course_id = st.text_input("Your Course ID")
if st.button("Save"):
# Update student details
# Assuming students don't have a specific course yet
add_or_update_student(student_name, student_email,
student_phone, student_course_id)
st.success("Profile Saved Successfully!")

# Display existing courses


st.header("Available Courses")
courses = view_courses()
if courses:
st.write("Courses:")
course_data = [(course[0], course[1], course[2]) for course in courses]
st.table(course_data)

# Allow students to join a course


st.write("Join a Course:")
selected_course_id = st.text_input("Enter Course ID to join")
if st.button("Join Course"):
add_or_update_student(None, None, None, selected_course_id)
st.success("You have successfully joined the course!")
else:
st.write("No courses available.")

# Allow students to leave a course


st.header("Leave a Course")
st.write("Leave a Course:")
course_id_to_leave = st.text_input("Enter Course ID to leave")
if st.button("Leave Course"):
# Update student's course to None
add_or_update_student(None, None, None, None, course_id_to_leave)
st.success("You have left the course.")

elif user_type == "Teacher":


#st.write("Teacher operations: Add/Update/View/Delete courses")

# Teacher sidebar options


teacher_options = ["Manage Courses", "Manage Students"]
selected_option = st.sidebar.radio("Select an option", teacher_options)

if selected_option == "Manage Courses":


# st.write("Course operations: Add/Update/View/Delete courses")

# Sidebar for adding, updating, viewing, or deleting a course


st.sidebar.header("Course Actions")
action = st.sidebar.selectbox("Select an action", [
"Add Course", "Update Course", "View
Courses", "Delete Course"])
if action == "Add Course":
course_name = st.sidebar.text_input("Course Name")
course_description = st.sidebar.text_area("Course Description")
if st.sidebar.button(action):
add_or_update_course(course_name, course_description)
st.sidebar.success("Course added successfully!")

elif action == "Update Course":


course_id = st.sidebar.selectbox("Select Course ID to update", [
course[2] for course in
view_courses()])
course_name = st.sidebar.text_input("New Course Name")
course_description = st.sidebar.text_area("New Course Description")
if st.sidebar.button(action):
add_or_update_course(
course_name, course_description, course_id)
st.sidebar.success("Course updated successfully!")

elif action == "View Courses":


# Display existing courses
st.header("Available Courses")
courses = view_courses()
if courses:
st.write("Courses:")
course_data = [(course[0], course[1], course[2])
for course in courses]
st.table(course_data)
else:
st.write("No courses available.")

elif action == "Delete Course":


course_id = st.sidebar.selectbox("Select Course ID to delete", [
course[2] for course in
view_courses()])
if st.sidebar.button(action):
delete_course(course_id)
st.sidebar.success("Course deleted successfully!")

elif selected_option == "Manage Students":


# st.write("Student operations: Add/Update/View/Delete students")

# Sidebar for adding, updating, viewing, or deleting a student


st.sidebar.header("Teacher Actions")
student_name = st.sidebar.text_input("Student Name")
student_email = st.sidebar.text_input("Student Email")
student_phone = st.sidebar.text_input("Student Phone")
student_course_id = st.sidebar.text_input("Course ID")
action = st.sidebar.selectbox("Select an action", [
"Add Student", "Update Student", "View
Students", "Delete Student"])
if action == "Add Student":
if st.sidebar.button(action):
add_or_update_student(
student_name, student_email, student_phone, student_course_id)
st.sidebar.success("Student added successfully!")
elif action == "Update Student":
student_id = st.sidebar.selectbox("Select Student ID to update", [
student[0] for student in
view_students()])
if st.sidebar.button(action):
add_or_update_student(
student_name, student_email, student_phone, student_course_id,
student_id)
st.sidebar.success("Student updated successfully!")

elif action == "View Students":


# Display existing students
st.header("Available Students")
students = view_students()
if students:
student_data = [
(student[1], student[2], student[3], student[4]) for student in
students]
st.write("Students:")
st.table(student_data)
else:
st.write("No students available.")

elif action == "Delete Student":


student_id = st.sidebar.selectbox("Select Student ID to delete", [
student[0] for student in
view_students()])
if st.sidebar.button(action):
delete_student(student_id)
st.sidebar.success("Student deleted successfully!")

You might also like