Автор: Пользователь скрыл имя, 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
При конструировании рабочего места следует соблюдать следующие основные требования:
Конструкция рабочего места должна обеспечивать быстроту, безопасность, простоту и экономичность технического обслуживания в нормальных и аварийных условиях, полно стью отвечать функциональным и предполагаемым условиям эксплуатации [5].
В моторном поле рабочего места оператора выделяют три зоны: зону досягае мости, легкой досягаемости, оптимальную зону [5].
Зона досягаемости ограничивается дугами, описываемыми
максимально вытянутыми руками при движении
их в плечевом суставе; зона легкой досягаемости
– расслабленными руками при движении
их в плечевом суставе; оптимальная зона
моторного поля – предплечьями при движении
в локтевых суставах с опорой. Размеры
зон моторного поля показаны на
рисунке 5.3 [5].
Рисунок 5.3 – Зоны моторного
поля рабочего места оператора
(в горизонтальной плоскости):
а – при работе оператора в положении сидя;
б – при работе оператора в положении стоя;
1 – оптимальная зона
моторного поля (для размещения
очень часто используемых и
наиболее важных органов
2 – зона легкой досягаемости
(для размещения часто
3 – зона досягаемости
(для размещения редко
При организации рабочего места необходимо стремиться к выполнению всех трудовых операций в зоне досягаемости моторного поля; в том случае, если эти операции совершаются часто (две и более в минуту), они должны концентрироваться в зоне легкой досягаемости и оптимальной зоне моторного поля [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.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
Приложение А
(обязательное)
Листинг классов моделей, используемых в системе
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.-]+\.
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="
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[:
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(
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(
if @lecture.update_attributes(
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[:
end
end
end
Приложение В
(обязательное)
Листинг отображения метода Show контроллера Lecture
Информация о работе Создание обучающей системы с использованием интернет-технологий