Система онлайн-обучения — проект Python
В этой статье мы собираемся создать систему онлайн-обучения United School для всех студентов, где они смогут учиться онлайн и получить эквивалентную степень, связанную с известной организацией. Многие школы были закрыты, и многие сталкиваются с проблемами онлайн-обучения на любой платформе. Здесь, в этом проекте, обеим школам, а также учащимся будет предоставлена хорошо организованная платформа онлайн-обучения, с помощью которой они могут легко управлять онлайн-обучением. Эта платформа включает в себя все функции от сдачи онлайн-экзаменов для студентов, а также для найма учителей до простого учета посещаемости студентов. Вы можете проверить демо по ссылке, указанной на unitedschool.herokuapp.com.
Инструменты и технологии, используемые в проекте:
- Веб-технологии: HTML, CSS
- База данных: ПОСТГРЕС
- Редактор: VSCODE
Необходимый набор навыков для создания проекта:
- Внешний интерфейс: HTML, CSS, BOOTSTRAP, JAVASCRIPT.
- Серверная часть : Flask, Postgresql, SqlAlchemy, Python, AJAX.
Пошаговая реализация
Шаг 1: Сначала мы определились со всей архитектурой нашей идеи. Мы собрали всю информацию, необходимую для реализации этого проекта. Мы изучили FLASK, SQLAlchemy и т. д., чтобы сделать проект динамичным.
Шаг 2: Определившись со всей архитектурой, мы начали работать над FrontEnd проекта. Сначала мы разработали целевую страницу нашего сайта. Который выглядит так.
Ниже приведен фрагмент кода домашней страницы панели навигации.
HTML
<!DOCTYPE html> < html > < head > < title >Page Title</ title > </ head > < body > < header > < div class = "container-fluid bg-light p-0 " style = "width: 100%; height: 100px;" > < div class = "row" > < div class = "col-lg-3 col-md-2" > < img src = "../static/images/logo.png" class = "img-fluid ml-5" style = "height: 50%;" > </ div > < div class = "col-lg-9 col-md-8 col-12" > < h1 class = "text-left ml-5 pt-4" style="height: 80%; width: 100%; font-size: 4.5em; font-family: "Cinzel", serif; color: #ff9900;"> UNITED SCHOOL </ h1 > </ div > </ div > </ div > </ header > < nav class = "navbar navbar-expand-lg navbar-dark bg-dark" > < a class = "navbar-brand" href = "#" ></ a > < button class = "navbar-toggler" type = "button" data-toggle = "collapse" data-target = "#navbarNavAltMarkup" aria-controls = "navbarNavAltMarkup" aria-expanded = "false" aria-label = "Toggle navigation" > < span class = "navbar-toggler-icon" ></ span > </ button > < div class = "collapse navbar-collapse" id = "navbarNavAltMarkup" > < div class = "navbar-nav text-center" > < a class = "nav-item nav-link active" href = "#" >Home < span class = "sr-only" >(current)</ span ></ a > < a class = "nav-item nav-link active" href = "#about_us" >About</ a > < a class = "nav-item nav-link active" href = "#admissions" >Admissions</ a > < a class = "nav-item nav-link active" href = "#" >Academics</ a > < a class = "nav-item nav-link active" id = "announcements" >Annoucements</ a > < a class = "nav-item nav-link active" href = "#services" >Services</ a > < a class = "nav-item nav-link active" href = "#" >Facilites</ a > < a class = "nav-item nav-link active" href = "#contact_us" >Contact Us</ a > </ div > </ div > </ nav > < div id = "carouselExampleIndicators" class = "carousel slide" data-ride = "carousel" > < ol class = "carousel-indicators" > < li data-target = "#carouselExampleIndicators" data-slide-to = "0" class = "active" ></ li > < li data-target = "#carouselExampleIndicators" data-slide-to = "1" ></ li > < li data-target = "#carouselExampleIndicators" data-slide-to = "2" ></ li > </ ol > < div class = "carousel-inner" > < div class = "carousel-item active" > < img src = "../static/images/img3.jpg" class = "d-block w-100" alt = "..." > </ div > < div class = "carousel-item" > < img src = "../static/images/img4.jpg" class = "d-block w-100" alt = "..." > </ div > < div class = "carousel-item" > < img src = "../static/images/img5.jpg" class = "d-block w-100" alt = "..." > </ div > </ div > < a class = "carousel-control-prev" href = "#carouselExampleIndicators" role = "button" data-slide = "prev" > < span class = "carousel-control-prev-icon" aria-hidden = "true" ></ span > < span class = "sr-only" >Previous</ span > </ a > < a class = "carousel-control-next" href = "#carouselExampleIndicators" role = "button" data-slide = "next" > < span class = "carousel-control-next-icon" aria-hidden = "true" ></ span > < span class = "sr-only" >Next</ span > </ a > </ div > </ body > </ html > |
Шаг 3: Теперь мы будем использовать Flask, чтобы сделать его веб-приложением и подключить все html-страницы. Мы использовали POSTGRESQL для базы данных.
Шаг 4: Теперь мы пишем маршрут приложения для каждой HTML-страницы. Как показано в примере ниже:
Python3
@app .route( "/" ,methods = [ "GET" , "POST" ]) def index(): if request.method = = "POST" : data = request.form[ "Message" ] name = request.form[ "name" ] em = request.form[ "email" ] phno = request.form[ "phno" ] send_email(em,name,data,phno) flash( "MESSAGE sUBMITTED TO THE ADMIN WAIT FOR REPLY ON PHONE!!!" ) return redirect( "/" ) else : subjectExam = db.session.query(Data3). all () x = db.session.query(announcement.ann). all () caru = db.session.query(carou).order_by(carou.ids). all () return render_template( "index.html" ,x = x,a = caru,sub = subjectExam) |
Шаг 5: После этого мы создаем таблицы в POSTGRES, используя код SQLAlchemy. Ниже приведен фрагмент кода для создания таблицы student.
Python3
db = SQLAlchemy(app) class Data(db.Model): __tablename__ = "student" eno = db.Column(db.String( 120 ),primary_key = True , unique = True ) passw = db.Column(db.String( 120 )) Name = db.Column(db.String( 120 )) class = db.Column(db.String( 120 )) ContactNo = db.Column(db.String( 120 )) Address = db.Column(db.String( 120 )) Emailid = db.Column(db.String( 120 )) result = db.Column(db.String( 120 )) fees = db.Column(db.String( 120 )) gives = db.relationship( "Data3" , secondary = "sqrel" , lazy = "dynamic" , backref = db.backref( "takenby" , lazy = "dynamic" )) def __init__( self , eno, passw,Name, class ,Contactno,Add,ema,res,fees): self .eno = eno self .passw = passw self .Name = Name self . class = class self .ContactNo = Contactno self .Address = Add self .Emailid = ema self .result = res self .fees = fees |
Шаг 6: После этого мы реализуем такие функции, как ЭКЗАМЕН, вход для учащихся, вход для учителей, библиотека. Здесь мы реализовали функцию обнаружения читерства, благодаря которой человека можно поймать, если он жульничает .
Вот как выглядит полная структура проекта:
Выход:
Представление для учащихся: учащиеся могут войти в систему через почту, предоставленную администратором. Он может использовать портал для отправки сборов, заданий, сдачи экзаменов, получения результатов, загрузки книг в формате PDF, может размещать любые уведомления на студенческом портале.
Представление учителя: учителя могут войти в систему и использовать портал для проведения занятий в режиме реального времени, оценки учащихся, предоставления заданий и учета посещаемости.
Представление администратора: администратор может управлять студентами, учителями, новой формой заявки на поступление, карусельными изображениями, объявлениями и т. д.
Вид от третьего лица: раздел объявлений, информация о школах, услуги школы, запросить дополнительную информацию у администратора, а также подать заявку на поступление.
Выходное видео для демонстрации показано ниже:
ER-диаграмма:
Применение проекта в реальной жизни:
Он предоставляет средства массовой информации для эффективного управления системой школьного образования. Это поможет всем учащимся, а также школам, которые сталкиваются с проблемами в онлайн-обучении, а также поможет людям, которые мигрируют из одного места в другое для получения высшего образования. С помощью этого проекта можно легко получить степень из любого места. Также этот проект гарантирует, что экзамены будут сдаваться без списывания, и если кто-то будет списывать, он будет автоматически обнаружен и будет дисквалифицирован.