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

Анализ предметной области оповещения граждан о событиях. Пользовательские требования к системе. Анализ бизнес-процессов "to-be". Сценарии использования системы. Проектирование интерфейса, базы данных. Реализация системы управления анонсами событий.

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

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

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

2.4.1 Описание пользовательского интерфейса для редактора мероприятий

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

Рисунок 2.7 - Экран со списком анонсов

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

Экран анонса см. на рис. 2.8. Переход на данный экран можно произвести следующими способами:

В верхнем меню при выборе пункта «Добавить - Анонс».

При нажатии кнопки «Добавить анонс».

При нажатии на иконку с изображением листа бумаги и ручки на строке анонса.

Рисунок 2.8 - Экран анонса

Основной трудностью при разработке пользовательского интерфейса было проектирование элементов для задания дат и времени проведения мероприятия. Поскольку имеются различные варианты дат и времени проведения мероприятий, были разработаны возможности для создания расписаний различного типа. Базовым типом является расписание, которое проводится в одно и то же время непрерывно в течение определенного времени. Для случаев, когда мероприятие проводится в разное время или в определенные числа/дни недели были добавлены кнопки «Добавить расписание по числам» и «Добавить расписание по дням недели».

При нажатии на кнопку «Добавить расписание по числам» в группе элементов «Даты и время проведения» появляются элементы для заполнения расписания по числам (см. рис. 2.9).

Рисунок 2.9 - Элементы для добавления расписания по числам

Подобным образом работает кнопка «Добавить расписание по дням недели». Элементы для добавления расписания по дням недели приведены на рис. 2.10.

Рисунок 2.10 - Элементы для добавления расписания по дням недели

Экран просмотра и редактирования отклоненного анонса аналогичен экрану анонса, за исключением того, что имеется боковая панель с замечаниями модератора (см. рис. 2.11). К данному экрану можно перейти, выполнив следующие шаги:

Выбрать пункт меню «Анонсы - Отклоненные». Произойдет переход к форме «Анонсы: отклоненные», на которой отображается список отклоненных анонсов.

Нажать на кнопку с изображением листа бумаги и ручки на строке анонса.

Рисунок 2.11 - Панель с комментариями модератора на форме для просмотра и редактирования отклоненного анонса

2.4.2 Описание пользовательского интерфейса для модератора

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

Рисунок 2.12 - Экран со списком анонсов, ожидающих публикации

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

Экран для модерации анонса в целом аналогичен экрану для редактирования анонса для редактора мероприятий (рис. 2.13). Отличие состоит в наличии панели для комментариев модератора. На данном экране имеется возможность редактировать анонс. К данному экрану можно перейти из экрана «Анонсы: ожидают публикации», нажав на кнопку с изображением листа бумаги и ручки на строке анонса.

Рисунок 2.13 - Экран для модерации анонса

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

Перейти к экрану «Архив: анонсы».

Нажать на кнопку с изображением глаза на строке анонса.

Рисунок 2.14 - Экран для просмотра архивного анонса

2.4.3 Описание пользовательского интерфейса для посетителя сайта-афиши

Перед началом проектирования пользовательского интерфейса для сайта-афиши были проанализированы цели, которые ставят перед собой посетители сайта-афиши. Краткий список целей приведен ниже:

Найти, чем заняться на выходных.

Найти, куда можно сходить в Перми в ближайшее время.

Найти, куда можно сходить в Перми в определенные даты (актуально для гостей города).

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

Отображать мероприятия, которые проводятся на ближайших выходных.

Отображать мероприятия, которые проводятся в ближайшую неделю.

Иметь в наличии панель поиска по критериям.

Макет главной страницы сайта-афиши приведен на рис. 2.15.

Рисунок 2.15 - Главная страница сайта-афиши

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

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

При клике на мероприятие осуществляется переход на карточку мероприятия - страницу с подробной информацией о мероприятии (рис. 2.16). Под основной информацией о мероприятии располагается блок с рекомендациями.

Рисунок 2.16 - Карточка анонса

При переходе на список мероприятий отображается страница со списком мероприятий (см. рис. 2.17). На список мероприятий можно перейти следующими способами:

Перейти на список посредством выбора любого из блоков на главной странице.

Нажать на кнопку «Все события» на главной странице.

Выполнить поиск мероприятий по критериям.

Рисунок 2.17 - Список анонсов

2.5 Проектирование рекомендательной системы

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

Одним из подходов к построению рекомендательных систем является использование векторов. С их помощью рассчитывается схожесть пользователей или схожесть объектов [7]. Посредством векторов можно представить как оценки, поставленные объектам пользователями [7], так и атрибуты объектов и предпочтения пользователей [8]. Векторный подход будет применяться к построению описываемой рекомендательной системы.

В основе проектируемого алгоритма рекомендаций лежит следующий принцип. Каждому пользователю и каждому элементу присваивается вектор. Каждый элемент вектора соответствует тому или иному признаку: направленность мероприятия, возраст пользователя/целевой аудитории и т.п. Признаки, выбранные для вектора, приведены в табл. 2.1.

Таблица 2.1 - Вектор, лежащий в основе рекомендательной системы

Группа признаков

Элементы вектора, принадлежащие группе

Возможные значения элементов

Направление мероприятия

Спорт

0 или 1

Культура

Образование

Вид мероприятия

Городское мероприятие

То же

Театр

Музыка

Концерт

Выставка

Архитектура

История

Литература

Лекция

Возрастная категория пользователя/целевой аудитории

0+

То же

6+

12+

16+

18+

Район проживания пользователя/проведения мероприятия

Ленинский

То же

Свердловский

Индустриальный

Дзержинский

Мотовилихинский

Кировский

Орджоникидзевский

Данные признаки были выбраны, поскольку их можно отнести как к признакам пользователя, так и к признакам анонса.

Таким образом, каждый вектор будет содержать 24 элемента. Значение каждого из признаков будет равно «0» или «1». Значения признаков для анонса будут определяться при публикации анонса, т.е. тогда, когда правки анонса в дальнейшем не предвидятся.

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

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

Косинусное расстояние будет определяться с помощью формула расчета косинуса между векторами (2.1).

(2.1)

Расчет рекомендаций должен производиться 1 раз в неделю после публикации анонсов на сайте-афише. Для рекомендаций выбирается 10 анонсов с минимальным косинусным расстоянием. Выбор данного количества обоснован следующим. На сайте-афише всего имеется 5 участков, где можно расположить ссылку на рекомендуемое мероприятие: 2 на главной странице и 3 на карточке анонса. Для того, чтобы рекомендации не повторялись часто, берется в 2 раза большее количество анонсов, чем есть возможность продемонстрировать.

Блок-схему алгоритма подбора рекомендаций см. на рис. 2.18.

Рисунок 2.18 - Блок-схема алгоритма подбора рекомендаций

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

При просмотре анонсов будет учитываться, сколько и каких анонсов пользователь просмотрел в течение всей активности на сайте. Для перерасчета вектора анализируются просмотры пользователя по показателям «вид» и «направление мероприятия». Для каждого признака из этих показателей будет рассчитываться, сколько анонсов с этим признаком пользователь просмотрел за время всей активности на сайте и какую часть это составляет от общего количества просмотренных анонсов. Доля просмотренных анонсов с признаком будет округляться до 2 знаков после запятой - это необходимо для того, чтобы обнулить признаки, доля просмотров которых незначительна. Рассчитанное значение будет присваиваться элементу вектора.

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

Алгоритм вычисления вектора пользователя приведен на рис. 2.19.

Рисунок 2.19 - Блок-схема алгоритма расчета вектора пользователя

2.6 Проектирование базы данных

Проектирование базы данных производилось на основе первичной структуры данных, выделенной в результате анализа пользовательских требований в п. 1.3. в результате проектирования базы данных получилась структура, состоящая из 9 таблиц. Ниже приведена диаграмма ER, отображающая структуру спроектированной базы данных (рис. 2.20).

Рисунок 2.20 - Схема базы данных

Основной таблицей базы данных является таблица «Событие». Подробное описание структуры таблицы приведено в табл. 2.2.

Таблица 2.2 - Структура таблицы «Событие»

Наименование поля

Тип данных

Примечание

ID

Целое число

Первичный ключ

Название

Строка

Дата начала

Дата

Дата окончания

Дата

Не обязательное поле

Время начала

Время

Время окончания

Время

Не обязательное поле

Минимальная стоимость билетов

Целое число

Максимальная стоимость билетов

Целое число

Не обязательное поле

Описание

Текст

Не более 1200 знаков

Афиша

Строка

Ссылка на изображение, хранящееся на сервере

Направление мероприятия

Целое число

Внешний ключ. Значение из справочника

Вид мероприятия

Целое число

Внешний ключ. Значение из справочника

Возрастное ограничение

Целое число

Внешний ключ. Значение из справочника

Район

Целое число

Внешний ключ. Значение из справочника

Адрес

Строка

Организатор

Целое число

Внешний ключ. Значение из справочника

Комментарий

Текст

Предназначено для комментариев модератора

Ожидает модерации

Логический

Отображает состояние анонса

На модерации

Логический

Отображает состояние анонса

Отклоненный

Логический

Отображает состояние анонса

Опубликованный

Логический

Отображает состояние анонса

В архиве

Логический

Отображает состояние анонса

Вектор

Строка

Вектор признаков для рекомендательной системы

Для случаев, когда анонс имеет расписание по числам или дням недели, предусмотрены таблицы «Расписание по числам» и «Расписание по дням недели». Данные таблицы обладают схожей структурой (см. табл. 2.3).

Таблица 2.3 - Структура таблиц «Расписание по числам» и «Расписание по дням недели»

Наименование поля

Тип данных

Примечание

ID

Целое число

Первичный ключ

ID события

Целое число

Внешний ключ

Дата/день недели

Дата/строка

Время начала

Время

Время окончания

Время

Не обязательное поле

Для пользователей системы предназначены две таблицы базы данных - «Пользователь» и «Посетитель». Таблица «Пользователь» предназначена для редакторов мероприятий и модераторов, а таблица «Посетитель» - для пользователей сайта-афиши. Описание структур обеих таблиц приведено в табл. 2.4. и табл. 2.5.

Таблица 2.4 - Структура таблицы «Пользователь»

Наименование поля

Тип данных

Примечание

ID

Целое число

Первичный ключ

Логин

Строка

Пароль

Строка

Должен храниться в зашифрованном виде

Организация

Целое число

Внешний ключ

Является модератором

Логический

Таблица 2.5 - Структура таблицы «Посетитель»

Наименование поля

Тип данных

Примечание

ID

Целое число

Первичный ключ

Логин

Строка

Пароль

Строка

Должен храниться в зашифрованном виде

Адрес электронной почты

Строка

Вектор

Строка

Вектор признаков для рекомендательной системы

Анонсы

Строка

Список идентификаторов анонсов, подлежащих рекомендации

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

Таблица 2.6 - Структура таблицы «Организация»

Наименование поля

Тип данных

Примечание

ID

Целое число

Первичный ключ

Название организации

Строка

Адрес

Строка

Телефон

Строка

Спроектированная база данных имеет 4 справочника:

Направление мероприятия.

Вид мероприятия.

Возрастное ограничение.

Район.

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

Вывод по главе 2

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

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

На этапе проектирования также была разработана базовая архитектура системы. При проектировании было учтено требование к сохранности данных по анонсам.

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

3. Реализация системы

3.1 Реализация системы управления анонсами событий

событие управление анонс данные

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

3.1.1 Выбор технологий для реализации системы

Одним из нефункциональных требований, предъявляемых к системе, является требование к системе управления контентом, на которой будет построен сайт-афиша - 1С Битрикс. Поскольку 1С Битрикс поддерживает программный код только на языке PHP, система также должна быть реализована на языке PHP.

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

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

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

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

На соответствие данным требованиям анализировались наиболее распространенные на сегодняшний день PHP-фреймворки: Zend Framework и Symphony.

Все рассматриваемые фреймворки обладают развернутой документацией с уроками и примерами кода, которые можно найти на официальных сайтах фреймворков [10, 11, 12].

Обзоры фреймворка Yii2 отмечают тот факт, что клиентская и серверная часть сильно связаны, нет возможности раздельной разработки компонентов. В Zend Framework, напротив, поддерживается раздельная разработка компонентов [13]. Сравнительный анализ фреймворков см. в табл. 3.1.

Обзоры фреймворков отмечают низкий порог входа для начала разработки на Zend Framework и Yii. В свою очередь, для Symphony характерен высокий порог входа, его изучение занимает достаточно много времени [13, 14].

Таблица 3.1 - Сравнительный анализ PHP-фреймворков

Критерии/инструменты

Zend Framework

Symphony

Yii2

Наличие развернутой документации

+

+

+

Возможность разработки клиентской части отдельно от серверной

+

+

-

Низкий порог входа

+

-

+

Исходя из анализа, приведенного выше, выбранным критериям полностью отвечает Zend Framework. Этот инструмент был выбран для разработки приложения.

В качестве СУБД будет использоваться MySQL. Выбор данной СУБД обусловлен следующими факторами:

Система управления контентом «1С Битрикс» ориентирована на работу с MySQL.

MySQL имеет драйверы для взаимодействия с программами на языке PHP.

3.1.2 Особенности выбранных технологий, используемые при реализации системы

Описываемая система была реализована как веб-приложение. В основу приложения лег паттерн Model-View-Controller (MVC). Схема паттерна MVC приведена на рис. 3.1.

Рисунок 3.1 - Схема паттерна MVC

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

В Zend Framework паттерн MVC реализуется посредством компонента zend-mvc. Данный компонент реализует классы со специфическим поведением, например, AbstractActionController, реализующий контроллеры приложения.

Для построения каркаса приложения использовался встроенный инструмент Zend Framework-а - Zend Skeleton Application. Zend Skeleton Application реализует каркас веб-приложения, построенного с использованием паттерна Model-View-Controller. На рис. 3.2. приведена структура каталогов Zend Skeleton Application.

Рисунок 3.2 - Структура каталогов Zend Skeleton Application

Основными структурными единицами являются:

Каталог module. Содержит модули программы. Каждый модуль программы представлен отдельным каталогом и содержит следующие ключевые подкаталоги:

Каталог Controller. Данный каталог содержит контроллеры приложения.

Каталог view. В каталоге view располагаются представления.

Каталог public. Данный каталог является открытым для веб-браузера и содержит точку входа в приложение - скрипт index.php. Также в каталоге public располагаются каскадные таблицы стилей и скрипты javaScript.

Для хранения логики программы была создана директория Model в модуле Application.

Контроллеры Zend Framework содержат Action-методы, обращающиеся к слою бизнес-логики. Класс контроллера наследуется от класса AbstractActionController, предоставляемого zend-mvc.

Представления в Zend Framework находятся в файлах формата .phtml и содержат код, написанный на языке программирования php и языке разметки HTML. По умолчанию для построения фронтенда используются классы фреймворка Bootstrap.

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

Для подключения к базе данных был реализован класс DatabaseConnection, который содержит методы открытия и закрытия соединения с базой данных. При открытии соединения используется механизм DSN - Data Source Name. Это структура данных, которая включает в себя имя сервера базы данных, имя базы данных и кодировку базы данных. При подключении к базе данных создается объект класса PDO.

Особенностью PDO, используемой при реализации системы, являются подготовленные запросы. Данный тип запросов позволяет выполнять SQL-команды с подставлением в них значений переменных. Для подготовки шаблона запроса используется метод prepare, возвращающий объект PDOStatement. Для выполнения запроса используется метод execute, куда в качестве параметра передается ассоциативный массив, содержащий наименования параметров и их значения.

Ассоциативные массивы являются особенностью языка PHP. Данные массивы позволяют в качестве индекса элемента массива задавать строковое значение.

3.1.3 Основные классы и методы реализуемого приложения

Для подсистем добавления и модерации анонсов был реализован общий класс, позволяющий выполнять операции над анонсами - EventOperations. Данный класс содержит методы для CRUD-операций над анонсами, а также изменением статуса: отправка на модерацию, отклонение, публикация.

Для соединения с базой данных реализован класс DatabaseConnection. Данный класс содержит переменную с атрибутом доступа private, которая по сути является объектом соединения с базой данных. Класс DatabaseConnection содержит методы Connect и CloseConnection, которые открывают и закрывают соединение с базой данных соответственно.

Для сайта-афиши реализовано несколько классов. Класс EventSelection содержит методы для извлечения из базы данных подборок анонсов мероприятий: SelectNearest, SelectOnWeekend, SelectAll. Данные методы выбирают мероприятия, которые должны состояться в ближайшую неделю, на текущих выходных, все опубликованные мероприятия. Для сайта-афиши также был реализован класс SearchOperations, который содержит методы для поиска анонсов по критериям.

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

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

3.1.4 Реализация рекомендательной системы

Алгоритм подбора рекомендаций был реализован в виде скрипта на языке PHP. Скрипт располагается на том же сервере, на котором располагается основное приложение.

Скрипт запускается на выполнение с помощью утилиты cron каждый вторник в 00:00. Запуск по вторникам обоснован тем, что анонсы мероприятий публикуются на сайте-афише каждый понедельник.

При реализации скрипта использовалось расширение языка php math, позволяющее выполнять математические расчеты. Для расчета косинусной меры использовались такие функции, как cos, pow, sqrt.

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

После определения состава анонсов, подлежащих рекомендации, ID анонсов записываются в виде строки с разделителем в базу данных в таблицу посетителей сайта-афиши. Для выбора анонсов для демонстрации в контроллерах страниц сайта-афиши вызывается метод SelectReccomendations класса ReccomendationOperations. В качестве параметра метод принимает ID посетителя, который хранится в переменных сессии. Данный метод выполняет преобразование строки, в которых записаны ID анонсов, подлежащих рекомендации, в массив с помощью метода explode, являющегося частью ядра php. Далее с помощью метода rand случайным образом выбирается 3 идентификатора, массив из которых возвращает метод SelectRecommendations. Далее с помощью метода GetEvent класса EventOperations из таблицы базы данных извлекаются необходимые анонсы, которые далее передаются в представление страницы сайта-афиши.

3.2 Тестирование

Для проверки корректности работы системы было выбрано тестирование с помощью тестовых случаев (тест-кейсов). Тест-кейсы представляют собой набор входных данных, условий выполнения и ожидаемых результатов, который разрабатывается с целью проверки какого-либо свойства или способа поведения программы [15]. Структура тест-кейса может варьироваться в зависимости от требований компании, однако минимально необходимый набор атрибутов тест-кейса таков:

Предварительные условия.

Шаги выполнения тест-кейса.

Ожидаемый результат.

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

Данный подход позволяет легко оценить покрытие тестами функциональности программы.

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

Тест-кейсы приведены в Приложении Б.

Для проведения приемо-сдаточных испытаний был составлен документ «Программа и методика испытаний». Данный документ составлялся согласно стандарту «ГОСТ 19.301-79 Единая система программной документации (ЕСПД). Программа и методика испытаний» [17]. Программа и методика испытаний приведены в Приложении В.

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

При проведении итогового тестирования заполнялся протокол проведения тестирования.

Шаблон протокола проведения тестирования содержит таблицу, по структуре соответствующую таблице тест-кейсов, с добавлением столбца «Соответствие ожидаемому результату».

По результатам итогового тестирования все тесты были пройдены. Поскольку тест_кейсы и протокол проведения тестирования имеют взаимодополняющую структуру, в данной работе они были объединены в Приложение Б.

Выводы по главе 3

В данной главе была выполнена реализация базовой функциональности системы. При реализации использовались инструменты, предлагаемые Zend Framework, и встроенные средства языка PHP. Основным инструментом, используемым при реализации приложения, является Zend Skeleton Application, который позволяет построить каркас веб-приложения на базе паттерна Model-View-Controller. При реализации рекомендательной системы активно использовалось расширение языка PHP math, позволяющее выполнять математические вычисления.

В результате выполнения этапа разработки системы были реализованы следующие функции:

Подсистема занесения данных о мероприятиях:

Просмотр списков анонсов: готовых к модерации, отклоненных, находящихся на модерации, опубликованных.

Добавление/редактирование анонса.

Отправка анонса на модерацию.

Дублирование анонса.

Удаление анонса.

Подсистема модерации данных о мероприятиях:

Просмотр списков анонсов: находящихся на модерации, отклоненных, опубликованных.

Редактирование анонса на стороне модератора.

Отклонение анонса.

Публикация анонса на сайте-афише.

Снятие анонса с публикации.

Подсистема визуализации культурных мероприятий.

Отображение анонсов.

Отображение карточки анонса.

Поиск анонсов по критериям.

Рекомендация анонсов зарегистрированным пользователям.

На этапе реализации системы также проводилось тестирование системы с помощью текст-кейсов. Тест-кейсы составлялись на основе сценариев использования системы. В результате тестирования системы все тесты были пройдены: ожидаемые результаты совпали с реальными.

Заключение

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

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

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

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

На этапе проектирования были спроектированы бизнес-процессы «to-be» для ДКиМП и подведомственных мероприятий и исследованы основные сценарии используемой системы. Главными изменениями в бизнес-процессах является следующее:

Подготовка анонсов мероприятий перекладывается на сотрудников подведомственных учреждений ДКиМП.

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

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

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

Разработка системы проводилась с использованием PHP-фреймворка Zend Framework. При разработке применялся паттерн MVC. В результате завершения этапа разработки была реализована система управления анонсами мероприятий. Была реализована следующая функциональность системы.

Операции с анонсами на стороне редактора мероприятий: добавление, редактирование, удаление.

Отправка анонса на модерацию.

Редактирование анонса на стороне модератора.

Отклонение анонса.

Публикация анонса на сайте.

Снятие анонса с публикации.

Отображение анонсов на сайте-афише.

Поиск анонсов по критериям на сайте-афише.

Рекомендация анонсов зарегистрированным пользователям.

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

Развитие реализованной системы возможно в следующих направлениях:

Повышение точности рекомендаций рекомендательной системы.

Реализация функциональности составления отчетов для сотрудников подведомственных учреждений.

Библиографический список

1. Shvarts M., Lobur M., Stekh Y. Some Trends in Modern Recommender Systems // 2017 XIIIth International Conference on Perspective Technologies and Methods in MEMS Design (MEMSTECH), IEEE. 2017. С. 167-169.

2. Melville P., Sindhwani V. Recommender Systems // Encyclopedia of Machine Learning - NY, USA: IBM T. J.Watson Research Center, 2010. -- Т. 1. -- С. 829_838. -- 1031 с.

3. Recommender System for Contextual Advertising in IPTV Scenarios / Konow R. [и др.]. The 2010 14th International Conference on Computer Supported Cooperative Work in Design, IEEE. 2010. С. 617-622.

4. Джонс М. Принципы работы рекомендательных механизмов Интернета [Электронный ресурс] // IBM: сайт. 2014. URL: https://www.ibm.com/developerworks/ru/library/os-recommender1/ (дата обращения: 17.12.2018).

5. Burke R. Hybrid web recommender systems // The adaptive web. - 2007. - С. 377_408.

6. Купер А. Психбольница в руках пациентов. М.: Символ-Плюс, 2005. 273 с.

7. Гомзин А. Г., Коршунов А. В. Системы рекомендаций: обзор современных подходов // Труды Института системного программирования РАН (электронный журнал). -- 2012. -- Т. 22. -- С. 401-418.

8. Li K., Du T. C. Building a targeted mobile advertising system for location-based services // Decision Support Systems. - 2012. - Т. 54. - С. 1-8.

9. Михнюк Д.В, Егошина А.А. Метрики оценки близости пользователей в коллаборативных методах формирования рекомендаций // Материалы V международной научно-технической конференции Донецк. - 2013. - Т. 1. - С. 232-236.

10. Zend Framework: сайт [Электронный ресурс]. URL: https://framework.zend.com/ (дата обращения 25.04.2019).

11. Symphony, High Performance PHP Framework for Web Development: сайт [электронный ресурс]. URL: https://symfony.com/ (дата обращения: 25.04.2019).

12. Yii PHP Framework: сайт [Электронный ресурс]. URL: https://www.yiiframework.com/ (дата обращения: 24.04.2019).

13. Черепанов И. Обзор PHP-фреймворков [Электронный ресурс] // Unetway: сайт. 2019. URL: http://unetway.com/blog/php-framework-review/ (дата обращения 25.04.2019).

14. Макаров А. Сравнение популярных PHP-фреймворков [Электронный ресурс] // CMS Magazine: сайт. 2011. URL: https://cmsmagazine.ru/journal/items-php-frameworks-compare/ (дата обращения 25.04.2019).

15. Куликов С.С. Тестирование программного обеспечения. Базовый курс. Минск: Четыре четверти, 2017. 312 с.

16. Тестовый случай (Test Case) [Электронный ресурс] // Про Тестинг: сайт. URL: http://www.protesting.ru/testing/testcase.html (дата обращения: 14.04.2019).

17. ГОСТ 19.301-79 Единая система программной документации (ЕСПД). Программа и методика испытаний.

Приложение А

Образец данных по мероприятиям

Название

День народного единства

«Сальвадор Дали»

Организатор (автоматически из учетной записи)

МАУ «АСП»

МАУК «ЦВЗ»

Направление мероприятия:

спорт, культура, образование

Культура

Культура

Вид мероприятия: городское мероприятие,

театр, музыка, концерт, выставка, архитектура, история, литература, лекция, иное

Городское мероприятие

Выставка

Дата проведения: диапазон дат

4 ноября

03.10-29.10

Место проведения: район города

Ленинский район, парк Горького

Ленинский район

Время проведения

11.00

ВТ: 11.00-19.00

СР: 11.00-19.00

ЧТ: 11.00-19.00

Возрастной ценз

0+

16+

Контакты: адрес, телефон организаторов (из учетной записи)

Стоимость

Бесплатно

100-300

Кратко о мероприятии (500 знаков)

День народного единства -- российский государственный праздник. Отмечается 4 ноября, начиная с 2005 года.

Подробно о мероприятии (1200 знаков)

4 ноября в 11:00 в Парке горького стартует празднование Дня народного единства. Масштабный по своему размаху концерт-митинг соберет молодежь, ветеранов, представителей профсоюзов, национально-культурных объединений, традиционных религиозных конфессий Прикамья.

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

Приложение Б

Тест-кейсы

Б.1. Тест-кейсы для подсистемы занесения данных о мероприятиях

Таблица Б.1 - Тест-кейсы и результаты тестирования

№ теста

Предварительные условия

Шаги выполнения тест-кейса

Ожидаемый результат

Соответствие ожидаемому результату

1.

Первичное занесение мероприятий

1.1.

Открыта форма добавления анонса

Ничего не вводить, нажать кнопку "Сохранить".

Появляется предупреждение о необходимости ввода названия мероприятия

+

1.2.

Открыта форма добавления анонса

1. Ввести название мероприятия. 2. Нажать кнопку "Сохранить".

Анонс сохраняется

+

1.3.

Открыта форма добавления анонса

1. Ввести все необходимые данные без добавления расписания по числам или дням недели. 2. Нажать кнопку "Сохранить".

Анонс сохраняется

+

1.4.

Открыта форма добавления анонса

Нажать кнопку "Добавить расписание по числам"

Поля для ввода дат и времени становятся неактивными, появляется элемент для заполнения расписания по числам

+

1.5.

Открыта форма добавления анонса

Нажать кнопку "Добавить расписание по дням недели"

Появляется элемент для заполнения расписания по дням недели

+

1.6.

Выполнены шаги из пункта 1.4.

1. Заполнить название мероприятия 2. Заполнить расписание по числам 3. Нажать кнопку "Сохранить" 4. Перейти на таблицу базы данных с расписаниями по числам

В таблице появилось расписание по числам для добавленного события

+

1.7.

Выполнены шаги из пункта 1.5.

1. Заполнить название мероприятия 2. Заполнить расписание по дням недели 3. Нажать кнопку "Сохранить" 4. Перейти на таблицу базы данных с расписаниями по дням недели

В таблице появилось расписание по дням недели для добавленного события

+

2.

Редактирование информации о мероприятии

2.1.

Открыта форма редактирования анонса

1. Стереть название мероприятия. 2. Нажать кнопку "Сохранить"

Появляется предупреждение о необходимости ввода названия мероприятия

+

2.2.

Открыта форма редактирования анонса

1. Изменить значение любого заполненного поля. 2. Нажать кнопку "Сохранить".

Анонс сохраняется с измененными данными

+

3.

Удаление информации о мероприятии

3.1.

Открыта форма со списком анонсов

Нажать кнопку "Удалить"

Анонс удаляется из системы

+

3.2.

Открыта форма редактирования анонса

Нажать кнопку "Удалить"

Анонс удаляется из системы

+

4.

Дублирование информации о мероприятии

4.1.

Открыта форма со списком анонсов

Нажать кнопку "Дублировать"

Создается дубликат анонса с названием формата "Заголовок_анонса_копия_дд.мм.гггг чч:мм:сс", где дата и время соответствуют дате и времени создания копии

+

4.2.

Открыта форма редактирования анонса

Нажать кнопку "Дублировать"

Создается дубликат анонса с названием формата "Заголовок_анонса_копия_дд.мм.гггг чч:мм:сс", где дата и время соответствуют дате и времени создания копии

+

5.

Отправка информации о мероприятии на модерацию

5.1.

Открыта форма со списком анонсов

1. Нажать кнопку "На модерацию" 2. Зайти на список анонсов, ожидающих публикации, в интерфейсе модератора

Отправленный анонс появился в списке ожидающих публикации анонсов

+

5.2.

Открыта форма редактирования анонса

1. Нажать кнопку "На модерацию" 2. Зайти на список анонсов, ожидающих публикации, в интерфейсе модератора

Отправленный анонс появился в списке ожидающих публикации анонсов

+

Б.2. Тест-кейсы для подсистемы модерации данных о мероприятиях

Таблица Б.2 - Тест-кейсы и результаты тестирования

№ теста

Предварительные условия

Шаги выполнения тест-кейса

Ожидаемый результат

Соответствие ожидаемому результату

1.

Отклонение анонса

1.1.

Открыта форма модерации анонса

1. Нажать кнопку "Отклонить" 2. Перейти на форму со списком отклоненных анонсов в интерфейсе редактора мероприятий

Отклоненный анонс появился в списке

+

1.2.

Открыта форма модерации анонса

1. Добавить комментарии к анонсу 2. Нажать кнопку "Отклонить" 3. Перейти на форму со списком отклоненных анонсов в интерфейсе редактора мероприятий

Отклоненный анонс появился в списке. При переходе на анонс отображаются добавленные модератором комментарии

+

1.3.

Открыта форма со списком анонсов, ожидающих публикации

1. Нажать кнопку "Отклонить" 2. Перейти на форму со списком отклоненных анонсов в интерфейсе редактора мероприятий

Отклоненный анонс появился в списке

+

2.

Публикация анонса

2.1.

Открыта форма модерации анонса

1. Нажать кнопку "На сайт" 2. Перейти на главную страницу сайта-афиши 3. Нажать на кнопку "Все анонсы"

Опубликованный анонс появился на сайте-афише

+

2.2.

Открыта форма модерации анонса

1. Изменить значение любого заполненного поля. 2. Нажать кнопку "На сайт" 3. Перейти на главную страницу сайта-афиши 4. Нажать на кнопку "Все анонсы"

Опубликованный анонс с измененными данными появился на сайте-афише

+

3.

Снятие анонса с публикации

3.1.

Открыта форма со списком опубликованных анонсов

1. Нажать кнопку "Снять с публикации" 2. Перейти на список анонсов, ожидающих публикации

Снятый с публикации анонс появился в списке

+

3.2.

Открыта форма с опубликованным анонсом

1. Нажать кнопку "Снять с публикации" 2. Перейти на список анонсов, ожидающих публикации

Снятый с публикации анонс появился в списке

+

Б.3. Тест-кейсы для подсистемы визуализации культурных мероприятий

Таблица Б.3 - Тест-кейсы и результаты тестирования

№ теста

Предварительные условия

Шаги выполнения тест-кейса

Ожидаемый результат

Соответствие ожидаемому результату

1.

Поиск анонсов мероприятий по критериям

1.1.

Открыта главная страница сайта В базу данных занесено событие, которое должно состояться на завтрашний день

Выбрать критерий "Завтра" на панели поиска. Запустить поиск

Выдается мероприятие, которое должно состояться завтра

+

1.2.

Открыта главная страница сайта В базу данных занесено событие, которое должно состояться на выходных

Выбрать критерий "На выходных" на панели поиска. Запустить поиск

Выдается мероприятие, которое должно состояться на выходных

+

1.3.

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

Выбрать критерий "На этой неделе" на панели поиска. Запустить поиск

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

+

1.4.

Открыта главная страница сайта В базу данных занесены 3 события, которое должны состояться в течение определенного промежутка времени: 2 события на границах промежутка, 1 событие в середине промежутка

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

Выдаются все 3 мероприятия

+

1.5.

Открыта главная страница сайта В базу данных занесены 3 события, которое должны состояться в течение определенного промежутка времени: 2 события на границах промежутка, 1 событие в середине промежутка

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

Выдаются все 3 мероприятия

+

1.6.

Открыта главная страница сайта В базу данных занесены 3 события, которое должны состояться в течение определенного промежутка времени: 2 события на границах промежутка, 1 событие в середине промежутка

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

Выдается выбранное мероприятие

+

1.7.

Открыта главная страница сайта В базу данных занесены 3 события, которое должны состояться в течение определенного промежутка времени: 2 события на границах промежутка, 1 событие в середине промежутка

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


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

  • Анализ предметной области. Обеспечение качества проектной документации. Построение инфологической (концептуальной) модели предметной области. Проектирование физической структуры базы данных. Разработка интерфейса, организация ввода и поиска данных.

    курсовая работа [2,5 M], добавлен 10.01.2016

  • Реализация системы управления, предоставляющей пользователю информацию о патенте. Основные предметно-значимые сущности и их атрибуты. Ограничения предметной области. Требования к функциям системы. Концептуальная схема базы данных в виде ER-диаграммы.

    контрольная работа [295,6 K], добавлен 27.05.2013

  • Анализ предметной области. Проектирование и разработка базы данных и интерфейса в виде набора Web-страниц для отображения, создания, удаления и редактирования записей базы данных. Аппаратное и программное обеспечение системы. Алгоритм работы программы.

    курсовая работа [3,0 M], добавлен 12.01.2016

  • Системы управления базами данных и их эффективность. Системный анализ предметной области и проектирование её концептуальной модели. Составление перечня атрибутов и определение ключей. Состав модулей и их описание. Описание интерфейса программы.

    курсовая работа [1,2 M], добавлен 12.07.2012

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

    курсовая работа [318,6 K], добавлен 24.12.2014

  • Системный анализ предметной области. Построение концептуальной и даталогичной модели базы данных. Физическое проектирование базы данных. Описание функциональной модели системы управления базами данных. Разработка экранных форм ввода-вывода и отчета.

    курсовая работа [1,1 M], добавлен 09.12.2014

  • Анализ предметной области. Проектирование базы данных и ее реализация. Проектирование правил целостности базы данных. Анализ реляционной модели. Примеры экранных форм интерфейса. Программный код, содержащий функции взаимодействия с базой данных.

    курсовая работа [849,8 K], добавлен 19.05.2013

  • Определение назначения, описание функций и изучение классификации складов. Анализ предметной области и проектирование системы базы данных управления складом. Разработка руководства пользователя для оператора базы данных, расчет сметной стоимости проекта.

    дипломная работа [2,2 M], добавлен 24.07.2014

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

    дипломная работа [2,4 M], добавлен 27.10.2017

  • Анализ предметной области: абонентная служба жилищно-эксплуатационной конторы. Формулирование требований к базе данных и обработке информации. Проектирование локальных информационных структур и ограничения разрабатываемой системы, разработка интерфейса.

    курсовая работа [2,1 M], добавлен 24.05.2012

  • Реализация базы данных и серверной части информационной системы склада средствами СУБД Microsoft SQL Server. Анализ предметной области, информационных задач, пользовательской системы. Программа реализации проекта. Выработка требований и ограничений.

    курсовая работа [2,4 M], добавлен 15.11.2015

  • Разработка проектных решений по созданию подсистемы учета студентов в деканате различных форм и видов обучения, диагностический анализ системы управления. Проектирование информационной базы данных, построение инфологической и датологической модели.

    дипломная работа [1,1 M], добавлен 24.06.2011

  • Построение инфологической (концептуальной) модели предметной области. Проектирование логической и физической структуры базы данных. Реализация проекта в среде конкретной СУБД. Организация корректировки и ввода данных в БД. Разработка интерфейса.

    курсовая работа [1,4 M], добавлен 14.01.2018

  • Понятие и этапы жизненного цикла информационной системы. Классификация и характеристика бизнес-процессов. Проектирование архитектуры автоматизированной системы управления документооборотом и баз данных. Разработка интерфейса пользовательской части.

    дипломная работа [549,9 K], добавлен 09.02.2018

  • Анализ предметной области - магазин "Канцелярские товары". Проектирование и реализация базы данных в MS SQL Server. Перечень хранимой информации: таблицы, поля, типы. Моделирование предметной области. Выделение сущностей, атрибутов, ключей, связей.

    курсовая работа [2,2 M], добавлен 05.02.2015

  • Анализ предметной области, этапы проектирования автоматизированных информационных систем. Инструментальные системы разработки программного обеспечения. Роль CASE-средств в проектировании информационной модели. Логическая модель проектируемой базы данных.

    курсовая работа [410,6 K], добавлен 21.03.2011

  • Анализ предметной области объекта автоматизации "Компьютерные курсы". Обзор информационных технологий, подходящих для разработки информационной системы. Требования к разрабатываемой базе данных и ее проектирование, особенности ее программной реализации.

    курсовая работа [369,8 K], добавлен 30.05.2013

  • Проектирование и создание пользовательского интерфейса и визуального программирования в среде Delphi. Система управления базой данных. Локальные и глобальное пользовательские представления. Анализ предметной области. Назначение форм и компонентов.

    курсовая работа [758,0 K], добавлен 07.03.2014

  • Выбор методологии проектирования и системы управления базами данных. Описание предметной области и проектирование физической структуры базы данных. Реализация проекта в MS SQL Server 2008. Построение инфологической модели. Ограничения целостности связи.

    курсовая работа [679,2 K], добавлен 22.01.2013

  • Анализ предметной области и разработка структуры информационой системы (ИС) "Кадры". Описание информационных процессов. Разработка структуры БД и структуры ИС. Разработка структуры базы данных и интерфейсов. Реализация и тестирование ИС "Кадры".

    курсовая работа [1,2 M], добавлен 06.01.2008

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