Создание обучающей системы с использованием интернет-технологий

Автор: Пользователь скрыл имя, 05 Марта 2013 в 10:01, дипломная работа

Описание работы

Постоянное усовершенствование новых технологий и огромные объёмы информации, создаваемые различными источниками, поднимают проблему качественного актуального образования. Использование таких средств предоставления данных, как интернет, имеет несколько сильных положительных сторон. В отличие от печатных изданий, использование электронных средств распространения информации позволяет решить проблему предоставления обучающемуся современных учебных материалов практически без задержки во времени. При необходимости, может производиться корректировка уже имеющихся материалов без существенных затрат. Доступ к учебным материалам может быть получен в любом месте нахождения студента в произвольный момент времени.

Содержание

Введение 6
1 Постановка задачи и обзор существующих решений 8
1.1 Требования к системам дистанционного обучения 8
1.2 Обзор некоторых существующих решений 9
1.3 Выбор и обоснование решения поставленной задачи 18
1.4 Основные преимущества и возможности системы 19
2 Разработка системы 20
2.1 Проектирование структуры системы 20
2.2 Создание базового приложения Rails 20
3 Реализация дополнительной функциональности и работа с системой 32
3.1 Идентификация пользователей 32
3.2 Контроль уровня доступа 33
3.3 Загрузка файлов на сервер и работа с ними 34
3.4 Работа с комментариями 36
3.5 Начальная настройка 36
3.6 Создание пользователя 37
3.7 Обслуживание системы 38
4 Технико-экономическое обоснование разработки клиент-серверного приложения «обучающая система с использованием интернет-технологий» 39
4.1 Краткая характеристика программного продукта 39
4.2 Расчет сметы затрат, себестоимости и отпускной цены ПО 39
4.3 Расчет экономического эффекта от применения ПО пользователем 48
4.4 Вывод 52
5 Реализация эргономических требований к конструкции и организации рабочего места в системе “человек - тех.средство” 53
5.1 Характеристика трудового процесса технического средства. Функции работника 53
5.2 Выбор и обоснование рабочего положения работника, рабочей поверхности, сидения (рабочего кресла) 54
5.3 Проектирование сенсомоторного поля рабочего места, т.е. пространства с размещенными в нем средствами отображения информации, органами управления и другими техническими средствами с учетом зон досягаемости 56
Заключение 61
Список использованных источников 62

Работа содержит 1 файл

Пояснительная записка 1.docx

— 339.89 Кб (Скачать)

При конструировании рабочего места следует соблюдать следующие основные требования:

  • взаимное расположение элементов рабочего места должно обеспечивать необходимые зрительные и звуковые связи между оператором и оборудованием, а также между операторами;
  • органы управления должны располагаться в зоне досягаемости моторного поля;
  • наиболее важные и часто используемые органы управления должны быть расположены в зоне лёгкой досягаемости моторного поля;
  • лицевые поверхности индикаторов следует располагать в оптимальной зоне информационного поля в плоскости, перпендикулярной нормальной линии взора оператора, находящегося в рабочей позе. Допускаемое отклонение от этой плоскости – не более 45°; допускаемый угол отклонения линии взора от нормальной – не более 25° для стрелочных индикаторов и 30° для индикаторов с плоским изображением [6].

Конструкция рабочего места  должна обеспечивать быстроту, безопасность, простоту и экономичность технического обслуживания в нормальных и аварийных  условиях, полно стью отвечать функциональным и предполагаемым условиям эксплуатации [5].

В моторном поле рабочего места  оператора выделяют три зоны: зону досягае мости, легкой досягаемости, оптимальную зону [5].

Зона досягаемости ограничивается дугами, описываемыми максимально вытянутыми руками при движении их в плечевом суставе; зона легкой досягаемости – расслабленными руками при движении их в плечевом суставе; оптимальная зона моторного поля – предплечьями при движении в локтевых суставах с опорой. Размеры зон моторного поля показаны на  
рисунке 5.3 [5].

Рисунок 5.3 – Зоны моторного  поля рабочего места оператора  
(в горизонтальной плоскости):

а – при работе оператора  в положении сидя;

б – при работе оператора  в положении стоя;

1 – оптимальная зона  моторного поля (для размещения  очень часто используемых и  наиболее важных органов управления (ОУ));

2 – зона легкой досягаемости (для размещения часто используемых  ОУ);

3 – зона досягаемости (для размещения редко используемых  ОУ) [5]

 

При организации рабочего места необходимо стремиться к выполнению всех трудовых операций в зоне досягаемости моторного поля; в том случае, если эти операции совершаются часто (две и более в минуту), они  должны концентрироваться в зоне легкой досягаемости и оптимальной зоне моторного поля [6]. Так как в нашем случае практически вся работа оператора заключается в управлении ПЭВМ, следовательно, компьютер должен находиться в пределах лёгкой досягаемости и оптимальной зоны.

Это соответствует основному  требованию при проектировании средств обработки информации (СОИ) и сенсомоторных устройств (органов управления): важные и наиболее часто используемые СОИ и органы управления должны располагаться в пределах оптимальной зоны, аварийные - в легкодоступных местах, но не в оптимальной зоне, второстепенные и периодически используемые – не в оптимальных зонах [5].

В нашем случае отсутствуют  как таковые аварийные СОИ/органы управления (в современных ПЭВМ все  нештатные ситуации, исключения и  т.п. реализованы программно). Основные сенсомоторные устройства, используемые оператором, – монитор, мышь и клавиатура – располагаются в пределах оптимальной зоны на поверхности компьютерного стола. К второстепенным и периодически используемым можно отнести системный блок – его наиболее приемлемо будет расположить под компьютерным столом (в любом современном офисном компьютерном столе присутствует специальный разъём для системного блока). Для удобного доступа к системному блоку желательно не блокировать выход к нему с обратной стороны стола: не ставить стол впритык к стене, не ставить рядом с обратной стороной стола другие столы, либо объемные предметы.

Необходимо предусматривать  также возможность регули ровки  конструктивных элементов рабочего места в зависи мости от антропометрических параметров групп населения. Регулируемыми элементами могут быть высота сиденья, угол наклона спинки, высота и угол наклона подставки для ног, подвижность сиденья вперед-назад [5].

Анализ интернет-источников позволил найти пример наиболее удачной  модели кресла: Herman Miller Aeron (рисунок 5.4). Обладая широким спектром различных регулировок (регулируются высота, длина и ширина различных элементов, позиция подлокотников, положение и жёсткость спинки) кресла Herman Miller могут быть настроены под индивидуальные особенности каждого оператора. Качество, комфорт и эргономичность данного изделия подтверждены множеством наград полученных наград и положительных рецензий в профильных изданиях [7].

На нынешний момент производство корпусной мебели позволяет подобрать  стол для обустройства рабочего места оператора СЧМ удовлетворяющий множеству требований эргономики. На рисунке 5.5 представлен пример стола, специально спроектированного для работы с ПЭВМ. Этот стол имеет специальное место для размещения системного блока, выдвижную площадку для клавиатуры и подставку для монитора.

 

Рисунок 5.4 – Кресло Herman Miller Aeron

Рисунок 5.5 – Пример стола  для организации рабочего места

Реализация эргономических требований к конструкции и организации  рабочего места в системе «человек – техническое средство» приведёт к сохранению здоровья и повышению  работоспособности.

 

 

 

Заключение

В процессе дипломного проектирования была разработана система, предназначенная для организации учебного процесса с использованием интернет-технологий.

Обучающая система позволяет  создавать учебные материалы  и предоставлять к ним доступ посредством интернета. В качестве дополнительных функций присутствует возможность уровнями доступа пользователей к системе с помощью паролей, а так же комментирования учебного материала.

При разработке использовались бесплатные и кросс-платформенные  технологии: язык программирования Ruby, фрэймворк для построения интернет-приложений Ruby on Rails и база данных в формате SQLite3.

 

 

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

  1. Ruby on Rails Веб-разработка с удовольствием [Электронный ресурс]. – электронные данные. – Режим доступа: http://www.rubyonrails.ru/
  2. Система "Человек-машина". Термины и определения [текст]: ГОСТ 26387-84.
  3. Девисилов, Владимир Аркадьевич. Охрана труда: учебник для среднего проф. образования / В. А. Девисилов.– 2-е изд., испр. и доп. – М.: Форум: Инфра-М, 2006. - 496 с.
  4. Computer Graphics Workspace Ergonomics [Электронный ресурс]. – электронные данные. – Режим доступа : http://www.khulsey.com/ workspace_ergonomics.html
  5. Михнюк, Тимофей Федорович. Охрана труда и основы экологии: учебное пособие / Т. Ф. Михнюк. – М.: Вышэйшая школа, 2007. - 356 с.
  6. Система «Человек-машина». Рабочее место оператора. Взаимное расположение элементов рабочего места. Эргономические требования [текст]: ГОСТ 22269-76
  7. Herman Miller [Электронный ресурс]. - электронные данные. – Режим доступа: http://www.hermanmiller.com

 

Приложение А

(обязательное)

Листинг классов  моделей, используемых в системе

 

class Comment < ActiveRecord::Base

  belongs_to :user

  belongs_to :lecture

end

class Course < ActiveRecord::Base

  belongs_to :department

  has_many :lectures

  has_and_belongs_to_many :users

  validates_presence_of :name

  validates_presence_of :about

end

class Department < ActiveRecord::Base

  has_many :courses

  validates_presence_of :name

  validates_presence_of :about

end

class Lecture < ActiveRecord::Base

  belongs_to :course

  has_many :comments

  validates_presence_of :name

  validates_presence_of :about

  attr_accessor :file

end

class Setting < ActiveRecord::Base

end

require 'digest/sha1'

class User < ActiveRecord::Base

  has_and_belongs_to_many :courses

  has_many :comments

  EMAIL_REGEX = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i

  attr_accessor :password

  before_save :create_hashed_password

  after_save :clear_password

  attr_protected :hashed_password, :salt

  validates_uniqueness_of :email, :login

  validates_presence_of :first_name, :second_name, :password

  validates :email, :presence => true, :format => EMAIL_REGEX

  def self.authenticate(login="", password="")

    user = User.find_by_login(login)

Продолжение приложения А

 

    if user && user.password_match?(password)

      return user

    else

      return false

    end

  end

  def password_match?(password="")

    hashed_password == User.hash_with_salt(password, salt)

  end

  def self.make_salt(login="")

    Digest::SHA1.hexdigest("Use #{login} with #{Time.now} to make salt")

  end

  def self.hash_with_salt(password="", salt="")

    Digest::SHA1.hexdigest("Put #{salt} on the #{password}")

  end

  private

  def create_hashed_password

    unless password.blank?

      self.salt = User.make_salt(login) if salt.blank?

      self.hashed_password = User.hash_with_salt(password, salt)

    end

  end

  def clear_password

    self.password = nil

  end

end

 

 

Приложение Б

(обязательное)

Листинг контроллера  модели Lecture

 

# -*- coding: utf-8 -*-

class LectureController < ApplicationController

  before_filter :find_course

  before_filter :confirm_editor, :only => [:new, :edit, :update, :delete, :destroy, :erase_comment, :erase]

  before_filter :confirm_logged_in

  def index

    redirect_to(:controller => 'department', :action => 'index')

  end

  def list

    @lectures = Lectures.where(:course_id => @course.id).sort('name ASC')

  end

  def show

    @lecture = Lecture.find_by_id(params[:id])

    @page_h1 = @lecture.name

    @comments = @lecture.comments.all

  end

  def new

    @page_h1 = 'Создание  новой лекции'

    @lecture = Lecture.new(:course => @course)

    @courses = Course.all

  end

  def download

    send_file params[:filepath], :type=>"application/zip"

  end

  def erase

    File.delete(params[:filepath])

    @lecture = Lecture.find_by_id(params[:id])

    @lecture.filepath = nil

    @lecture.save

    redirect_to :action => 'edit', :id => @lecture.id

  end

  def create_comment

    @comment = Comment.new(params[:comment])

    @comment.lecture_id = params[:lecture_id]

    @comment.user_id = params[:user_id]

    if @comment.save

      flash[:notice] = "Комментарий  добавлен."

    else

Продолжение приложения Б

 

      flash[:notice] = "Ошибка  при создании комментария."

    end

    redirect_to(:action => 'show', :id => params[:lecture_id])

  end

  def erase_comment

    comment = Comment.find_by_id(params[:comment_id])

    id = comment.lecture_id

    comment.destroy

    redirect_to(:action => 'show', :id => id)

  end

  def create

    if params[:lecture][:file]

      file = params[:lecture][:file]

      dt = DateTime.now

      if file.original_filename[-4..-1] == '.jpg' || file.original_filename[-5..-1] == '.jpeg' || file.original_filename[-4..-1] == '.gif' || file.original_filename[-4..-1] == '.png'

        filepath = Rails.root.join("public", "images", dt.to_formatted_s(:number) + '_' + file.original_filename)

      elsif file.original_filename[-4..-1] == '.avi' || file.original_filename[-4..-1] == '.flv' || file.original_filename[-4..-1] == '.mp4' || file.original_filename[-4..-1] == '.ogg' || file.original_filename[-4..-1] == '.ogv'

        filepath = Rails.root.join("public", "videos", dt.to_formatted_s(:number) + '_' + file.original_filename)

      elsif file.original_filename[-4..-1] == '.mp3' || file.original_filename[-4..-1] == '.aac' || file.original_filename[-4..-1] == '.wav'

        filepath = Rails.root.join("public", "audios", dt.to_formatted_s(:number) + '_' + file.original_filename)

      else

        filepath = Rails.root.join("public", "uploads", dt.to_formatted_s(:number) + '_' + file.original_filename)

      end

      File.open(filepath, 'wb:binary') do |f|

        f.write(file.read)

      end

    end

    @lecture = Lecture.new(params[:lecture])

    @lecture.filepath = filepath.relative_path_from(Rails.root).to_s if params[:lecture][:file]

    if @lecture.save

      flash[:notice] = "Лекция создана."

      redirect_to(:action => 'show', :id => @lecture.id)

Продолжение приложения Б

 

    else

      flash[:notice] = "Ошибка  при создании лекции."

      render('new')

    end

  end

  def edit

    @page_h1 = 'Редактирование лекции'

    @lecture = Lecture.find(params[:id])

    @courses = Course.order('name ASC')

  end

  def update

    if params[:lecture][:file]

      file = params[:lecture][:file]

      dt = DateTime.now

      if file.original_filename[-4..-1] == '.jpg' || file.original_filename[-5..-1] == '.jpeg' || file.original_filename[-4..-1] == '.gif' || file.original_filename[-4..-1] == '.png'

        filepath = Rails.root.join("public", "images", dt.to_formatted_s(:number) + '_' + file.original_filename)

      elsif file.original_filename[-4..-1] == '.avi' || file.original_filename[-4..-1] == '.flv' || file.original_filename[-4..-1] == '.mp4' || file.original_filename[-4..-1] == '.ogg' || file.original_filename[-4..-1] == '.ogv'

        filepath = Rails.root.join("public", "videos", dt.to_formatted_s(:number) + '_' + file.original_filename)

      elsif file.original_filename[-4..-1] == '.mp3' || file.original_filename[-4..-1] == '.aac' || file.original_filename[-4..-1] == '.wav'

        filepath = Rails.root.join("public", "audios", dt.to_formatted_s(:number) + '_' + file.original_filename)

      else

        filepath = Rails.root.join("public", "uploads", dt.to_formatted_s(:number) + '_' + file.original_filename)

      end

      File.open(filepath, 'wb:binary') do |f|

        f.write(file.read)

      end

    end

    @lecture = Lecture.find(params[:id])

    @lecture.filepath = filepath.relative_path_from(Rails.root).to_s if params[:lecture][:file]

    if @lecture.update_attributes(params[:lecture])

      flash[:notice] = 'Лекция обновлёна'

 

Продолжение приложения Б

 

      redirect_to(:action => 'show', :id => @lecture.id, :course_id => @lecture.course_id)

    else

      render('edit')

    end

  end

  def delete

    @page_h1 = 'Удаление лекции'

    @lecture = Lecture.find(params[:id])

  end

  def destroy

    lecture = Lecture.find(params[:id])

    course_id = lecture.course_id

    File.delete(lecture.filepath) if lecture.filepath

    lecture.destroy

    flash[:notice] = 'Предмет удалён'

    redirect_to(:controller => 'course', :action => 'show', :id => course_id)

  end

  private

  def find_course

    if params[:course_id]

      @course = Course.find_by_id(params[:course_id])

    end

  end

end

 

 

Приложение В

(обязательное)

Листинг отображения  метода Show контроллера Lecture

Информация о работе Создание обучающей системы с использованием интернет-технологий