Web-ориентированная система тьюторской поддержки

Анализ и сравнение существующих систем тьюторской поддержки. Методологии разработки программного обеспечения. Разработка web-ориентированной системы тьюторской поддержки самостоятельной работы студента. Выбор архитектуры программных средств разработки.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 05.01.2013
Размер файла 1,1 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Содержание

1. Введение

2. Анализ и сравнение существующих систем тьюторской поддержки

3. Методологии разработки программного обеспечения

4. Архитектура программного обеспечения

4.1 Основы разработки ПО

4.2 Сравнение современных архитектур ИС

4.3 Выбор архитектуры ПО и программных средств разработки

5. Разработка и реализация базовых классов

5.1 Описание программных модулей

5.1.1 Реализация базовых контроллеров модулей

5.1.1.1 Класс Tutor

5.1.1.2 Класс Admin

5.1.1.3 Класс Index

5.1.2 Реализация базовых классов компонента Модель

Выводы

Список использованной литературы

1. Введение

Успешность качественной подготовки специалистов и бакалавров тесно связана с наличием развитой информационно-образовательной среды вуза. Для современного студента наиболее востребованной информацией являются тексты лекций, обучающие программы, тесты, вопросы к экзаменам и т.д. Зачастую на официальных сайтах вузов информация носит в основном презентационный или справочный характер. Данный курсовой проект предлагает интерактивную тьюторскую поддержку студентам ВУЗа в режиме реального времени. Актуальность разработки такой системы обусловлена внедрением новых программных средств и технологий в образовательный процесс и реализации компетентностного подхода при подготовке бакалавров, что позволит максимально приблизиться к новой системе профессионального образования. Кроме обязательных аудиторных занятий студент получит дополнительные возможности: работать в online-кабинете для закрепления теоретических знаний по изучаемым дисциплинам, получать своевременную консультацию у тьютора-преподавателя, овладеть современными информационными технологиями, что повысит его конкурентоспособность на рынке труда в будущем. Web-ориентированная система тьюторской поддержки обучающихся позволит получить доступ к учебным материалам и содержанию курсов из любого места. Всё что необходимо студенту - это наличие современного устройства, имеющего возможность выхода в Интернет. Это может быть как персональный компьютер, так и планшет или коммуникатор.

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

Цель курсового проекта: спроектировать архитектуру ПО и реализовать базовые классы онлайн системы поддержки самостоятельной работы студентов IT-направлений. Для выполнения проекта необходимо решить следующие задачи:

· провести анализ и сравнение существующих систем тьюторской поддержки;

· сравнить методологии разработки программного обеспечения (ПО);

· сравнить архитектуры ИС;

· выбрать программные средства разработки;

· определить программные модули ИС;

· реализовать базовые контроллеры программных модулей;

· реализовать классы компонента Модели.

Таким образом, определена актуальность проекта, сформулированы цель и задачи курсового проекта.

2. Анализ и сравнение существующих систем тьюторской поддержки

Сейчас существует множество систем для организации тьюторской поддержки. Например, Moodle [9], «Прометей» [10], «1С:Образование» [11]. С помощью системы дистанционного обучения (СДО) "Прометей" можно построить в Интернет или Интранет виртуальный университет. Эта система предоставляет множество функций для организации учебного процесса и общения пользователей. Основные функции системы рассчитаны на тестирование, обмен файлами, чат, форум, но данная система не предоставляет учебный материал. Еще один недостаток - это требования к конфигурации сервера и базового программного обеспечения, установки на сервере заказчика, привязка к продуктам Microsoft, а в разрабатываемой ИС пользователю необходимо иметь только браузер и подключение к Интернету.

Среда дистанционного обучения Moodle является современной, прогрессивной, постоянно развивающейся средой. Разработчику учебно-методических комплексов она предоставляет возможности использовать все необходимые ресурсы и средства контроля. Большим достоинством является распространение системы по лицензии GPL, что позволяет, не нарушая ничьих авторских прав свободно использовать, распространять и модернизировать систему. Вместе с тем, Moodle имеет значительный недостаток: в системе не предусмотрены группы уровня сайта, что делает очень сложным учет студентов разных специальностей. Группы в Moodle существуют не для управления правами доступа к курсам, а для разделения групп слушателей в одном курсе. Чтобы одни слушатели не видели активность других. Группы создаются внутри курса и не могут быть перенесены в другие.

Кроме этого, оценками слушателя можно оперировать только внутри курса. Нет возможности составить итоговую ведомость, например, по всем дисциплинам семестра, да и само понятие семестра в базовой версии системы отсутствует. Из сказанного можно сделать вывод, что Moodle является системой, ориентированной на западную модель обучения.

«1С:Образование» является системой программ для поддержки и автоматизации образовательного процесса. С помощью системы программ «1С:Образование» можно создавать и использовать в учебном процессе различные образовательные комплексы. Образовательные комплексы могут содержать в себе разнообразные наглядные, справочные, тестовые и другие материалы. Данная система использует «Единую коллекцию цифровых образовательных ресурсов», отслеживает состояние работы учащихся в реальном времени, редактирование учебных материалов, организация общения внутри группы в реальном времени (чат) и обмен почтовыми сообщениями, контроль и самоконтроль учебной деятельности пользователей. Но «1С:Образование», в основном, рассчитано на организацию учебного процесса в школе.

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

3. Методологии разработки программного обеспечения

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

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

Каскадная модель предусматривает последовательное выполнение всех этапов проекта в строго фиксированном порядке (рис.1).

Рис.1. Каскадная модель

Переход на следующий этап означает полное завершение на предыдущем этапе.

Поэтапная модель с промежуточным контролем (рис.2).

Рис.2. Поэтапная модель с промежуточным контролем

Разработка ПО ведется итерациями с циклами обратной связи между этапами.

Межэтапные корректировки позволяют учитывать реально существующее взаимовлияние результатов разработки на различных этапах; время жизни каждого из этапов растягивается на весь период разработки.

Спиральная модель (рис.3). На каждом витке спирали выполняется создание очередной версии продукта, уточняются требования проекта, определяется его качество и планируются работы следующего витка.

Рис.3. Спиральная модель

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

Можно выделить следующие положительные стороны применения каскадного подхода:

· на каждом этапе формируется законченный набор проектной документации, отвечающей критериям полноты и согласованности;

· выполняемые в логической последовательности этапы работ позволяют планировать сроки завершения всех работ и соответствующих затрат.

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

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

Сравнив основные методологии разработки программного обеспечения, выбрана спиральная методология для проектирования структуры ПО.

4. Архитектура программного обеспечения

4.1 Основы разработки ПО

Разработка программного обеспечения может быть разделена на следующие этапы:

· Формирование требований к системе;

· Проектирование;

· Реализация;

· Тестирование;

· Ввод в действие.

Во время выполнения курсового проекта необходимо провести часть проектирования и программную реализацию ИС. На этапе проектирования, кроме формирования модели данных, осуществляется также разработка архитектуры ИС, включающая выбор платформы и операционной системы. Кроме платформы определяется следующие характеристики архитектуры: будет ли это «файл-сервер», «клиент-сервер» или 3-уровневая архитектура. Для выбора оптимальной архитектуры, необходимо сравнить уже существующие типы архитектур.

4.2 Сравнение современных архитектур ИС

Классификация информационных систем по их архитектуре:

· Архитектура "файл-сервер";

· Двухзвенная архитектура "клиент-сервер";

· Многозвенная архитектура "клиент-сервер";

· Архитектура на технологии Internet.

Архитектура "файл-сервер". При опоре на файл-серверные архитектуры сохраняется автономность прикладного (и большей части системного) программного обеспечения, работающего на каждой PC сети (рис.1). Фактически, компоненты информационной системы, выполняемые на разных PC, взаимодействуют только за счет наличия общего хранилища файлов, которое хранится на файл-сервере [13]. В классическом случае в каждой PC дублируются не только прикладные программы, но и средства управления базами данных (рис.4).

Рис.4. Архитектура "файл-сервер".

Простое, работающее с небольшими объемами информации и рассчитанное на применение в однопользовательском режиме, файл-серверное приложение можно спроектировать, разработать и отладить очень быстро. Очень часто для небольшой компании для ведения, например, кадрового учета достаточно иметь изолированную систему, работающую на отдельно стоящем PC. Конечно, и в этом случае требуется большая аккуратность конечных пользователей (или администраторов, наличие которых в этом случае сомнительно) для надежного хранения и поддержания целостного состояния данных. Однако, в уже ненамного более сложных случаях (например, при организации информационной системы поддержки проекта, выполняемого группой) файл-серверные архитектуры становятся недостаточными.

Клиент-сервер (Client-server) - вычислительная или сетевая архитектура, в которой задания или сетевая нагрузка распределены между поставщиками услуг (сервисов), называемых серверами, и заказчиками услуг, называемых клиентами. Нередко клиенты и серверы взаимодействуют через компьютерную сеть и могут быть как различными физическими устройствами, так и программным обеспечением. Схематически такую архитектуру можно представить, как показано на рис.5.

Рис.5. Классическое представление архитектуры "клиент-сервер"

тьюторский поддержка программный обеспечение

В этом случае вся прикладная часть информационной системы выполняется на рабочих станциях системы (т.е. дублируется), а на стороне сервера осуществляется только доступ к базе данных. Если логика прикладной части системы достаточно сложна, то такой подход порождает проблему "толстого" клиента. Каждая рабочая станция должна обладать достаточным набором ресурсов, чтобы быть в состоянии произвести прикладную обработку данных, поступающих от пользователя и из базы данных. Для того чтобы клиенты могли быть "тонкими", а зачастую и для повышения общей эффективности системы, все чаще применяются трехзвенные архитектуры "клиент-сервер" (рис.6).

Рис.6. Представление многоуровневой архитектуры "клиент-сервер"

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

Архитектура на основе Internet/Intranet. Это клиент-серверное приложение, в котором клиентом выступает браузер, а сервером -- веб-сервер (рис.7).

Рис.7. Архитектура на основе Internet/Intranet

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

Обобщая вышесказанное можно выделить основные особенности веб-архитектуры:

· отсутствие необходимости использовать дополнительное ПО на стороне клиента - это позволяет автоматически реализовать клиентскую часть на всех платформах;

· возможность подключения практически неограниченного количества клиентов;

· благодаря единственному месту хранения данных и наличия системы управления базами данных обеспечиваются минимальные требования для поддержания целостности данных;

· доступность при работоспособности сервера и каналов связи;

· недоступность при отсутствии работоспособности сервера или каналов связи;

· относительно объема данных - архитектура Веб систем не имеет существенных ограничений.

Таким образом, было проведено сравнение известных архитектур ИС.

4.3 Выбор архитектуры ПО и программных средств разработки

Сделав сравнение архитектур, в качестве архитектуры ИС выбрана трехуровневая архитектура на основе Web-технологии.

Для упрощения разработки выбран шаблон (паттерн) MVC (рис.8).

Рис.8. Паттерн Model-View-Controller

MVC предназначен для отделения данных и логики от интерфейса.

Этот шаблон разделяет работу веб-приложения на три отдельные функциональные роли: модель данных (model), пользовательский интерфейс (view) и управляющую логику (controller). Таким образом, изменения, вносимые в один из компонентов, оказывают минимально возможное воздействие на другие компоненты.

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

Для создания системы поддержки самостоятельной работы студентов IT-направлений выбраны следующие средства разработки ПО:

MySQL - свободная система управления базами данных (СУБД) [14].

Apache - свободный веб-сервер [15].

PHP - язык программирования, специально разработанный для написания web-приложений [16].

NetBeans IDE -- свободная интегрированная среда разработки приложений (IDE) на языках программирования Java, JavaFX, Python, PHP, JavaScript, C++ и ряда других [17].

Kohana - веб-фреймворк с открытым кодом, который использует архитектурную модель HMVC (Hierarchical Model-View-Controller - иерархическая Модель-Контроллер-Вид) [18].

Расмотренный набор средств разработки позволит создать полноценное программное обеспечение web-ориентированнйо системы.

5. Разработка и реализация базовых классов

5.1 Описание программных модулей

Разрабатываемая информационная система должна предоставлять возможность работать с пользователями, работать с учебно-методическим материалом, предоставлять статистику успеваемости, тестирование по учебному материалу. Исходя из этих требований, были разработаны следующие модули ИС:

Модуль работы с пользователями. С пользователями работает администратор и преподаватель. Админ назначает права пользователей, так как при авторизации, по умолчанию, новый пользователь получает права студента. Более подробно эта функция описана в спецификациях в пояснительной записке к курсовому проекту Лагутина К.В. [9]

Модуль работы с учебно-методическим материалом. С учебным материалом работает преподаватель. Функциональные возможности - это работа с курсами, внутри курса преподаватель может создать лекции. Работа с модулем расписана в спецификациях в пояснительной записке к курсовому проекту Лагутина К.В. [9]

Тестирование предназначено для оценки знаний студента по определенному курсу. После того как студент изучил лекции курса, он проходит тесты. Если тест пройдет успешно, курс считается пройденным (спецификации описаны в [9]).

Модуль статистика успеваемости предназначен для преподавателя. Преподаватель видит успехи студента, какие он прошел курсы и тесты (спецификации описаны в [9]).

Каждый модуль предназначен для определенного пользователя.

Во время выполнения проекта, были созданы базовые классы, соответствующие пользователям системы (рис.9):

· Admin;

· Tutor;

· Index.

Рис.9. Базовые классы ИС

Таким образом, были описаны программные модули ИС и выделены базовые классы для дальнейшей их реализации.

5.1.1 Реализация базовых классов контроллера

5.1.1.1 Класс Tutor

Разработан Class Tutor, который отвечает за работу с учебным материалом и учету успеваемости студентов.

Были созданы контроллеры по функциям преподавателя (рис.10).

Рис.10. Контроллеры класса Tutor

В контроллере courses.php описан класс Controller_Tutor_Courses, который включает методы action_index() для просмотра всего списка курсов. Когда пользователь нажимает на название курса, срабатывает метод action_view(), который отвечает за предоставление списка лекций выбранного курса. Метод action_add() отвечает за добавление нового курса. При добавлении нового курса заполняются следующие поля: «Название», «Описание», «Категория», «Статус».

Метод action_edit() отвечает за изменение информации о курсе, таких как «Название», «Описание», «Категория», «Статус».

Метод action_delete() удаляет курс и лекции внутри курса.

Для данного контроллера есть свойство public $template = 'tutor/base', который определяет базовый шаблон представления преподавателя.

Ниже подробно рассмотрен каждый метод в контроллере courses.php класса Controller_Tutor_Courses.

После авторизации преподаватель попадает в свой личный кабинет, где есть у него страницы «Управление курсами», «Управление тестами» «Успеваемость студентов». Когда преподаватель переходит на страницу «Управление курсами», срабатывает метод action_index() (Листинг 1).

Листинг 1. Метод action_index () контроллера courses.php класса Controller_Tutor_Courses

На странице отображается таблица с названием курса, раздел к которому курс относится и действия, такие как «Удалить» и «Редактировать».

Перед тем как перейти на страницу «Управление курсами», идет проверка на активную сессию преподавателя (Листинг 2). Если пытается получиться доступ к этой странице другой пользователь, то произойдет перенаправление на страницу авторизации.

Листинг 2. Проверка на активную сессию преподавателя

if (!Auth::instance()->logged_in('tutor')) {

$this->request->redirect('auth/login');

}

К модели Model_Course отправляет запрос на выбор всех записей из модели. Полученный массив данных выводится в шаблон.

Чтобы просмотреть лекции в курсе, надо нажать на название курса.

В этот метод передается первичный ключ курса. Для получения текущего значения используется метод param($id), где $id номер курса (Листинг 3).

Листинг 3. Получения текущего значения

$course_id = $this->request->param('id');

При работе метода action_view() идет опять проверка на сессию преподавателя (Листинг 4).

Листинг 4. Метод action_view () контроллера courses.php класса Controller_Tutor_Courses

Далее осуществляется запрос к модели Model_Lection на выбор записей лекций данного курса, где вторичный ключ id_course соответствует полученному первичному ключу курса.

Чтобы добавить новый курс, нужно нажать кнопку «Добавить новый курс». Работает метод action_add() (Листинг 5).

Листинг 5. Метод action_add() контроллера courses.php класса Controller_Tutor_Courses

При переходе на страницу добавления нового курса, идет проверка на активную сессию преподавателя. Если пытается получиться доступ к этой странице другой пользователь, то произойдет перенаправление на страницу авторизации. Страница «Добавление нового курса» имеет следующие поля: «Название», «Описание» и выпадающие списки «Категория», «Статус».

Когда преподаватель заполняет форму, он нажимает кнопку добавить. Введенные данные попадают в глобальный массив $_POST. Из глобального массива значения извлекаются в массив $data методом extract(). (Листинг 6).

Листинг №6. Извлечение значений в массив

$data = Arr::extract($_POST, array(

'name', 'desc', 'id_author', 'id_category', 'status'));

С данными полученными из массива $data, происходит выполнение добавление новой записи в таблицу. Если успешно выполнен запрос, то преподаватель перенаправляется на страницу со списком курсов.

Список категорий выбирается из таблицы с помощью метода find_all().

За редактирование курса отвечает метод action_edit() (Листинг 7).

Листинг 7. Метод action_edit() контроллера courses.php класса Controller_Tutor_Courses

Принцип работы редактирования курса похож на добавление нового курса, только при выполнении запроса выполняет функция update().

Выбирая курс, который нужно удалить, запоминается первичный ключ курса, по которому и происходит удаление, методом delete() (Листинг 8).

Листинг 8. Метод action_delete() контроллера courses.php класса Controller_Tutor_Courses

Другими важными функциями преподавателя является создание, редактирование и удаление тестов. В каждом курсе может быть несколько тестов, а в тесте много вопросов. Для создания тестов создан контроллер tests.php, за создание вопросов к тесту отвечает контроллер questions.php.

Преподавателю предоставлены основные функции для работы с тестами: это добавление, редактирование, удаление и просмотр информации. Для каждой функции написаны методы в классе Controller_Tutor_Tests контроллера tests.php.

Метод action_index() передает в представление массив данных, выбранных из модели Model_Test (Листинг 9).

Листинг 9. Метод action_index() контроллера tests.php класса Controller_Tutor_Tests

Тест принадлежит определенному курсу, поэтому при добавлении надо указать курс. В представлении выбрать курс можно из выпадающего списка, но чтобы вывести этот список курсов, в методе action_add() выбираются все поля из таблицы courses (Листинг 10).

Листинг 10. Метод action_add() контроллера tests.php класса Controller_Tutor_Tests

Форма добавления теста содержит поля «Название», «Курс», «Время» и радио кнопки «Повторять». Опция «Повторять» дает возможность студенту проходить тест неоднократно. При нажатии кнопки «Добавить» заполненные данные попадают в глобальный массив $_POST. Добавление теста в таблицу осуществляется функцией create() со значениями, полученными из массива $_POST.

Если добавление выполнено успешно, происходит перенаправление на страницу списка тестов.

Редактирование теста происходит по тому же принципу, что и добавление (Листинг 11).

Листинг 11. Метод action_edit() контроллера tests.php класса Controller_Tutor_Tests

На странице «Редактирование теста» появляется форма с полями: «Название», «Курс», «Время» и радио кнопки «Повторять». Форма заполнена данными. Данные подгружаются из таблицы. Преподаватель изменяет информацию в форме и нажимает на кнопку «Обновить». Новые значения попадают в массив $_POST. В методе action_edit() для обновления значений используется метод set().

Новые значения извлекаются из массива $_POST методом extract().

Сохранение записи, после изменения модели, осуществляется методом update().

Преподаватель может просмотреть список вопросов в тесте. Выбирая название теста, выполняется метод action_view().

В методе action_view() осуществляется запрос к модели Model_Question для выбора записей принадлежащих выбранному тесту (Листинг 12).

Листинг 12. Запрос к модели Model_Question

$questions = ORM::factory('question')

->where('id_test', '=' , $id) ->find_all();

Полученный массив значений из модели и первичный ключ текущего вопроса передается в шаблон (Листинг 13).

Листинг 13. Метод action_view() контроллера tests.php класса Controller_Tutor_Tests

Со списка вопросов теста можно перейти на форму редактирования вопроса и ответов. За работу с вопросами отвечает контроллер questions.php, в котором описан класс Controller_Tutor_Question.

На странице «Редактирование вопроса» выводят значения и вопроса и ответов. Доступ к модели Model_Question происходит по вторичному ключу id_test, а к модели Model_Answers через Model_Qanswers (Листинг 14).

Листинг 14. Запрос к модели Model_Question и Model_Answers

$id = $this->request->param('id');

$question = ORM::factory('question' , $id);

$answers = $question->answers->find_all();

Вопросы и ответы связаны через третью таблицу, которая содержит первичные ключи двух других таблиц (рис.11).

Рис.11. Связь таблиц «Answers», «Questions» через таблицу «Qanswers»

При редактировании данных обновление происходит сразу в двух таблицах (Листинг 14).

Листинг 14. Метод action_edit() контроллера tests.php класса Controller_Tutor_Questions

Сначала обновление происходит в модели Model_Question. Обновленные значения передаются в массив $_POST. Из этого массива получают ключи методом extract(). При успешном выполнении обновления модели Model_Question, происходит обновление ответов в цикле foreach, где $k - ключ элемента массива, а $v - значение элемента массива, который содержит ответы.

Если запрос на обновление выполнен успешно, преподаватель перенаправляется на страницу «Вопросы теста».

Во время выполнения метода action_add(), который описан в классе Controller_Tutor_Questions, добавление происходит сразу в три таблицы (Листинг 15).

Массив $_POST получает данные с формы добавления вопроса и ответов. Первым добавляется в таблицу вопрос, со значениями, полученными из массива $_POST.

Листинг 15. Метод action_add () контроллера tests.php класса Controller_Tutor_Questions

Если вопрос успешно добавлен, то в цикле добавляются ответы и вторичные ключи в связующую таблицу, где $k - ключ элемента массива, а $v - значение элемента массива, который содержит ответы.

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

5.1.1.2 Класс Admin

Class Admin отвечает за назначение прав пользователей. При регистрации новый пользователь получает права студента, только просмотр материалов и выполнение тестов. Также администратор публикует новости.

Были созданы контроллеры по функциям администратора (рис.12):

Рис.12. Контроллеры класса Admin

В контроллере index.php описан класс Controller_Admin_Index. Внутри него есть только один метод action_index(), отображающий данные на панели управления администратора.

В контроллере news.php описан класс Controller_Admin_News. Внутри него описаны методы action_index(), action_add() - добавление, action_edit() - редактирование новости, action_delete() - удаление новости.

Администратор для работы с новостями нажимает на ссылку «Новости». При нажатии на ссылку срабатывает метод action_index(): происходит запрос на выбор всех записей из таблицы news и массив с этими данными передается в представление.

Чтобы добавить новость, администратор заполняет необходимые поля формы, такие как «Название», «Краткая новость», «Полная новость». Эти значения передаются в глобальный массив $_POST. Далее формируется запрос на добавление новой записи в таблицу, где id автора, это id текущего пользователя, все остальные данные получаем из массива $_POST. Если запрос на добавление записи выполнен успешно, администратор перенаправляется на страницу «Новости».

За редактирование новостей отвечает метод action_edit(). Когда администратор нажимает на ссылку редактировать, он перенаправляется на страницу «Редактирование новости». Метод action_edit() получает id новости и происходит выбор записей из таблицы news по соответствующему id. В форму редактирования выгружаются данные. Администратор редактирует новость и нажимает кнопку «Обновить». Обновленные значения передаются в глобальный массив $_POST. Далее формируется запрос на обновление записи в таблице. Если запрос на обновление записи выполнен успешно, администратор перенаправляется на страницу «Новости».

Удаляется новость функцией delete() по полученному идентификационному номеру новости.

Таким образом, был реализован класс Admin, созданы контроллеры и их методы, удовлетворяющие функциональным возможностям администратора системы.

5.1.1.3 Класс Index

Class Index предназначен для работы со студентами и не авторизованными пользователями. Студент может проходить курсы, читать лекции, выполнять тесты, смотреть новости, отправлять сообщения. Также в этом классе описан метод для работы с профилем всех пользователей и администратора и преподавателя.

Были созданы контроллеры по функциям студента (рис.13):

Рис.13. Контроллеры класса Index

Контроллер auth.php описан класс Controller_Index_Auth, который содержит методы action_login() - авторизация пользователя, action_register() - регистрация нового пользователя, action_logout() - выход из системы.

Метод action_index() контроллера courses.php класса Controller_Index_Courses передает данные о существующих курсах, такие как название, категория и записан ли пользователь на данных курс. Метод action_view() отображает содержимое курса. Метод передает в представление массив данных из таблицы lections и tests, выбранных для соответствующего курса.

Отображает содержимое лекции метод action_view() класса Controller_Index_Lection в контроллере lection.php. При выборе лекции метод получает идентификационный номер лекции и выполняется запрос на выбор из таблицы lection значений по соответствующему id лекции. Полученный массив данных передается в представление.

Метод action_view() контроллера main.php получает данных из модели для вывода их на главную страницу ИС.

В контроллере news.php описан класс Controller_Index_News с методами action_index() и action_view(). Метод action_index() отправляет запрос к модели на выбор записей сортированных по уменьшению даты. Этот массив данных передается в представление, где отображается весь список новостей с кратким описанием. Для просмотра полной новости надо нажать на название новости и тогда сработает метод action_view(), который получит id выбранной новости и передаст данных в представление, выбранные из модели.

Один из главных контроллеров tests.php. В нем описан класс Controller_Index_Tests c методами action_index() и action_go(). При работе метода action_index() происходит выбор из вопросов и вариантов ответов по выбранному курсу. Когда тестирование завершено, работает метод action_go(), который подсчитывает результат тестирования и записывает результат в таблицу testresult.

Контроллер user.php предоставляет функции одинаковые для всех пользователей, такие как отображение информации в личном профиле, список пройденных курсов - метод action_index(), просмотр полученных и отправленных сообщений - метод action_message(), отправка сообщений другим пользователям - метод action_sendpm(), изменение данных своего профиля - метод action_settings(), обновление аватара пользователя - action_updateavatar().

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

В каждом методе необходимо было передавать значения в шаблон. Во всех контроллерах есть свойства public $template = '', которые определяет базовый шаблон представления для каждого пользователя. В самом контроллере свойство $template является строкой, а в методах контроллера обращение к нему как к объекту. Более подробно описана работа с представлениями в пояснительной записке к курсовому проекту Пакульских Е.И [10].

5.1.2 Реализация базовых классов компонента Модель

Kohana предоставляет мощное средство взаимодействия с базами данных. Модели -- это классы, предназначенные для работы с информацией, передаваемой или запрашиваемой контроллером. Например, если у вас есть гостевая книга, то контроллер запрашивает у модели последние десять записей; модель их возвращает; контроллер передает эти данные виду. Контроллер также может с помощью модели добавить новые записи и обновить или удалить существующие. Модель напрямую связана только с контроллером и не содержит функций работы с представлениями.

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

Основными целями ORM являются: с одной стороны, необходимо организовать работу с БД, учитывая различные варианты взаимоотношения реляционных таблиц («один-к-одному», «один-ко-многим», «много-ко-многим») и необходимость объединения данных разных таблиц в одну выборку (или наоборот, сохранения данных одного объекта в несколько таблиц). С другой стороны, все это должно быть максимально прозрачно и просто для программиста.

Построив реляционную модель базы данных, основанную на модели сущность-связь, видно, что есть множество связей разного типа между таблицами, поэтому для работы с базой данных выбран модуль ORM (рис.14).

На основе ER-модели созданы классы модели:

· Model_Test - модель содержит информацию о тесте, такую как «Название», «Время» и id курса, к которому тест относится.

· Model_Testresult - модель хранит результаты тестирования.

· Model_Question - хранит вопросы к тестовым заданиям. У одного теста может быть много вопросов.

· Model_Answer - варианты ответов к вопросам теста.

· Model_Course - модель содержит информацию о курсах. Кроме названия и описания курса, есть информация об авторе и категории, которые являются вторичными ключами.

· Model_Coursescategor - категории курсов, например «Программирование», «Базы данных». К одной категории относится много курсов.

· Model_Lection - лекционные задания. Имеют вторичный ключ id курса.

· Model_Message - хранит переписку пользователей.

· Model_New - хранит новости, которые опубликовывает администратор.

· Model_Role - содержит роли пользователей: admin, login,tutor.

· Model_User - содержит информацию о пользователях.

· Model_Usercourse - хранит номер студента и номер курса на который он записан.

Рис.14. ER диаграмма модели сущность связь

Кохана поддерживает четыре типа объектных отношений: belongs_to, has_many, has_many "through" and has_one. Связь «много к одному», «один-ко-многим», «многие-ко-многим и «один-к-одному» соответственно.

Связь «много-к-одному», когда одна модель принадлежит другой. Много курсов относятся к одной категории. Пример связи «много-к-одному» в Листинге 16.

Листинг 16. Пример модели Model_Course со связью «много-к-одному».

class Model_Course extends ORM {

protected $_belongs_to = array(

'category' => array(

'model' => 'coursescategor',

'foreign_key' => 'id_category',

)

);

}

В классе Model_Course указывается название модели, отвечающей за связанную таблицу (в нашем случае это модель для таблицы категории курсов coursescategor), а также название внешнего ключа id_category.

Связь has_many используется как «один-ко-многим». Например, и один студент может быть записан на несколько курсов. Таблицы usercourse и course относятся как один-ко-многим (Листинг 17).

Листин 17. Пример модели Model_ Usercourse со связью «один-ко-многим».

class Model_Usercourse extends ORM {

protected $_has_many = array(

'cour' => array(

'model' => 'course',

'foreign_key' => 'id_course',

)

);

}

В классе модели Model_Usercourse указывается название модели, с которой связана таблица Usercourse, а также название внешнего ключа id_course.

Связь has_many "through" используется как многие-ко-многим. Например, есть три таблицы user, roles, roles_users. Надо связать две таблицы через roles_users. Это нужно для назначения прав пользователей. Админ выбирает пользователя и на страницу выводиться соответствующая информация, в том числе и название роли (рис.15).

Рис.15 Связь has_many "through"

Чтобы связать модель Model_Role с моделью Model_Users, надо прописать в каждой модели связь, с какой моделью связывается и через какую модель. Пример связи Model_Role с Model_Users в листинге 18.

Листинг 18. Модель Model_Role

class Model_Role extends ORM {

protected $_table_name = 'roles';

protected $_has_many = array('users' => array('through' => 'roles_users'));

}

Для описания связи используется стандартный синтаксис has_many с добавлением параметра through. Листинг № 7 показывает, что модель Model_Role связана с Model_User через таблицу 'roles_users'. Связь описывается и в модели Model_User (Листинг 19).

Листинг 19. Модель Model_User

class Model_User extends Model_Auth_User {

protected $_primary_key = 'id';

protected $_table_name = 'users';

protected $_has_many = array(

'roles' => array('model' => 'role', 'through' => 'roles_users'),

);

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

Выводы

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

Перед тем как начать реализацию проекта, был проведен анализ и сравнение популярных систем тьюторской поддержки и систем дистанционного обучения, таких как «Прометей», «Moodle», «1С: Образование». Определив достоинства и недостатки этих систем, была обоснована актуальность разработки новой системы тьюторской поддержки самостоятельной работы студента в рамках данного курсового проекта.

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

В качестве архитектуры информационной системы выбрана трехуровневая архитектура на основе Web-технологии, так как разрабатываемая система web-ориентированная. В качестве архитектуры программы выбран паттерн MVC. Основываясь на выборе архитектуры ИС и архитектуры программы, были выбраны средства разработки. В качестве языка программирования выбран язык PHP, для работы с базами данных СУБД MySQL, веб-фреймворк Kohana, свободный веб-сервер Apache.

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

Все учебные материалы и информация о пользователях хранятся в базе данных. Для работы с данными созданы классы модели. Модели -- это классы, предназначенные для работы с информацией, передаваемой или запрашиваемой контроллером. Для работы с моделью выбран модуль ORM, который позволяет представить работу с базой данных как взаимодействие объектов, выкидывая из кода большинство операций чтения, удаления, создания и изменения данных.

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

Список использованной литературы

1. Мишель Е. Д. Изучаем PHP и MySQL / Е. Д. Мишель, А. Ф. Джон. - СПб.: Символ-Плюс, 2008. 442с.

2. Прохоренок Н. HTML, JavaScript, PHP и MySQL. Джентльменский набор Web-мастера / Н. Прохоренок. - СПб.: БХВ-Петербург, 2010. 900с.

3. Колисниченко Д.Н. PHP 5/6 и MySQL 6. Разработка web приложений / Д.Н. Колисниченко. - СПб.:БХВ-Петербург, 2010. 560с.

4. Советов Б. Я. Архитектура информационных систем / Б. Я. Советов, А. И. Водяхо, В. А. Дубенецкий, В. В. Цехановский. - М.: Академия, 2012. 228с.

5. Кузнецов М. Объектно-ориентированное программирование на PHP / М. Кузнецов, И. Симдянов. - СПб.: БХВ-Петербург, 2007. 608с.

6. Ловэйн П. PHP 5. Объектно-ориентированное программирование. / П. Ловэйн. - М.: НТ Пресс, 2007. 224с.

7. Зандстра М. PHP. Объекты, шаблоны и методики программирования./ М. Зандстра - М: Вильямс, 2011. 560с.

8. Веллинг Л. Разработка веб-приложений с помощью PHP и MySQL / Л. Веллинг, Л. Томсон. - М: Вильямс, 2010. 848с.

9. Лагутин К.В. Пояснительная записка к курсовому проекту/ К.В. Лагутин. - М.: МГПУ, 2012. 35 с.

10. Пакульских Е.И. Пояснительная записка к курсовому проекту / Е.И.Пакульских. - М.: МГПУ, 2012. 35 с.

Интернет - ресурсы:

11. https://moodle.org/ - официальный сайт Moodle.

12. http://www.prometeus.ru/ - официальный сайт СДО «Прометей».

13. http://edu.1c.ru/ - официальный сайт 1С: Образование.

14. http://www.intuit.ru/department/se/devis/2/devis_2.html - национальный Открытый Университет «ИНТУИТ»

15. http://citforum.ru/ - сервер информационных технологий.

16. http://dev.mysql.com - официальный сайт свободной система управления базами данных MySQL.

17. http://httpd.apache.org - официальный сайт свободного сервера Apache.

18. http://php.net/ - официальный сайт скриптового языка.

19. http://netbeans.org/ - свободная интегрированная среда разработки приложений.

20. http://kohanaframework.org/ - веб фреймворк, предоставляющий средства для разработки web-приложений.

21. http://www.web-learn.ru - сайт организации дистанционного обучения.

22. http://www.tinymce.com/ - платформонезависимый Javascript HTML WYSIWYG редактор на основе Web.

23. http://kohana3.ru/ - русская документация Kohana 3.

24. http://prog-school.ru/ - видеоуроки «Kohana Framework от А до Я. Интернет - магазин своими руками».

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.