Система онлайн-обучения — проект Python

Опубликовано: 7 Октября, 2022

В этой статье мы собираемся создать систему онлайн-обучения 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-диаграмма:

Применение проекта в реальной жизни:

Он предоставляет средства массовой информации для эффективного управления системой школьного образования. Это поможет всем учащимся, а также школам, которые сталкиваются с проблемами в онлайн-обучении, а также поможет людям, которые мигрируют из одного места в другое для получения высшего образования. С помощью этого проекта можно легко получить степень из любого места. Также этот проект гарантирует, что экзамены будут сдаваться без списывания, и если кто-то будет списывать, он будет автоматически обнаружен и будет дисквалифицирован.