Проектирование системы дистанционного обучения

Введение

1. Постановка задачи
2. Анализ систем дистанционного обучения.
2.1. Преимущества дистанционного обучения
2.2. Недостатки дистанционного обучения
2.3. Аспекты технической реализации системы дистанционного обучения
3. Проектирование модулей системы дистанционного обучения
3.1. Разработка модулей наполнения и обзора лекционных материалов
3.2. Разработка модуля тестирования
4. Разработка программного обеспечения
4.1. Выбор программных средств разработки
4.1.1. Выбор операционной системы для сервера
4.1.2. Выбор Web-сервера
    4.1.3. Выбор средств управления базами данных и языковых средств разработки
4.2. Проектирование БД системы дистанционного обучения
4.2.1. Представление модели данных в виде ER – диаграмм
4.2.1. Логическое проектирование БД
4.2.2. Приведение БД к табличной форме
4.2.3. Проектирование схемы БД
4.3. Разработка программных модулей
4.3.1. Разработка модели
4.3.2. Разработка контроллеров действия

4.3.3. Разработка шаблонов (view в паттерне MVC)

Разработка модели

Модель строится для заранее разработанной базы данных. Модель представляет собой библиотеку содержащую класс, методы которого выполняют основные действия над базой данных. Вызов этих методов осуществляется из компонентов поведения.
В данном проекте эта библиотека называется Subject.php, для ее загрузки в конструкторе класса Zend_Controller_Action вызывается метод  init() класса поведения adminController, являющегося расширением Zend_Controller_Action (листинг 4.1).
Листинг 4.1 – Загрузка модели «Subject.php» классом поведения
class indexController extends Zend_Controller_Action
{
         .  .  .  .
         function init()
         {
                     $this->view->baseUrl = $this->_request->getBaseUrl();
                     Zend_Loader::loadClass('Subject');
         }
  }

После того как модель была загружена, во всех методах action контроллера indexController создается объект Subject, экземпляр которого необходим для вызова методов, которые будут производить различные действия над БД. Пример функции для получения названия курса по идентификатору лекции приведен в листинге 4.2.
Листинг 4.2 – Функция класса Subject для получения названия курса по идентификатору лекции.
class Subject extends Zend_Db_Table_Abstract
{          
. . . . . . . . .
public function getSubjNameByLecId($id)
{
$select = $this->_db->select()
->from('lection_lecture')
->join('lection_subject', 'lection_lecture.lection_subject_id =
lection_subject.lection_subject_id')
->where('lection_lecture.lection_lecture_id = ?', $id);
$result = $select->query()->fetchAll();;
return $result[0]['subject'];
}

В классе Subject собраны множества функций, необходимых для манипуляции БД, полный список представлен в «Приложение А».
Для ассоциации БД с классом Subject был создан экземпляр класса Zend_Db, который является объектом адаптера БД(листинг 4.3)
Листинг 4.3. – Создание объекта адаптера БД
Zend_Loader::loadClass ( 'Zend_Db' );
$params = array (
'host' => 'localhost',
'username' => 'root',
'password' => 'pass',
'dbname' => 'diplom');
$db = Zend_Db::factory ( 'Pdo_Mysql', $params );
Zend_Db_Table_Abstract::setDefaultAdapter ( $db );

Статический метод factory имеет два аргумента, первый указывает на использование класса Zend_Db_Adapter_Pdo_Mysql (т.к. используется MySQL), а второй передастся конструктору класса Zend_Db, который имеет единственный аргумент, являющимся массивом параметров для описания соединения с БД.
Декларирование объекта Zend_Db_Adapter_Abstract означает использование адаптера $db по умолчанию для всех экземпляров таблиц. В результате созданный класс Subject является объектно-ориентированным интерфейсом к таблицам баз данных.
Pdo Mysql(PHP Data Objects MySQL) - является общим расширением PHP, служит предоставления общего интерфейса между СУРБД и разработанным приложением на PHP[7].Для использования Pdo MySLQ была использована библиотека pdo_my.iso, которая была подключена в конфигурационном файле PHP.

СевНТУ 2008г. автор работы Прищак Сергей
Hosted by uCoz