Разработка динамического сайта для логопедических занятий

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    1,96 Мб
  • Опубликовано:
    2013-04-01
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Разработка динамического сайта для логопедических занятий

Введение

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

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

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

1. Формирование требований к программному продукту

.1 Постановка задачи

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

Для достижения цели необходимо выполнить следующие задачи:

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

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

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

Проектирование базы данных сайта - выполняется проектирование таблиц, ключей и связей, относящихся к базе данных.

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

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

.2 Обзор существующих аналогов

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

.2.1 Сайт «Логопедия для всех»

Назначение сайта «Логопедия для всех» (#"600169.files/image001.gif">

Рисунок 1.1 - сайт «Логопедия для всех»

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

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

.2.2 Сайт «Логопед-профессионал»

Сайт «Логопед-профессионал» (#"600169.files/image002.gif">

Рисунок 1.2 - сайт «Логопед-профессионал»

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

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

.2.3 Сайт логопедического центра «Людмила»

Кроме информации о самом логопедическом центре на данном сайте (#"600169.files/image003.gif">

Рисунок 1.3 - сайт «Логопедический центр “Людмила”»

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

.2.4 Итоги обзора

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

1.3 Функциональные требования

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

.3.1 Требования к функционалу неавторизированного пользователя

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

Рисунок 1.4 - Возможности неавторизированного пользователя

.3.2 Требования к функционалу ученика

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

Рисунок 1.5 - Возможности пользователя-ученика

.3.3 Требования к функционалу учителя

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

Рисунок 1.6 - Возможности пользователя-учителя

.3.4 Требования к функционалу администратора

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

Рисунок 1.7 - Возможности администратора сайта

.4 Выбор программных средств разработки

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

HTML;

JavaScript;

скриптовый язык программирования PHP 5;

СУБД MySQL;

инструмент для администрирования СУБД MySQL - phpMyAdmin.- Hyper Text Markup Language - язык разметки гипертекста. включает в себя набор достаточно простых команд, с помощью которых размечается исходный текст. Эти команды определяют вид страницы при её просмотре с помощью браузера. файлы можно создавать и редактировать с помощью обычных текстовых редакторов, например, с помощью стандартной программы системы Windows XP «Блокнот».- это язык программирования, используемый в составе HTML-страниц для увеличения функциональности и возможностей взаимодействия с пользователями. С помощью JavaScript на веб-странице можно сделать то, что невозможно сделать стандартными тегами HTML [2]. Скрипты выполняются в результате наступления каких-либо событий, инициированных действиями пользователя, например, нажатия кнопки мыши, перемещения курсора, наведения курсора на объект, ввода или изменения данных в текстовых полях, таким образом, обеспечивается интерактивность веб-страниц.

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

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

автоматическое извлечение POST и GET-параметров, а также переменных окружения веб-сервера в предопределённые массивы;

взаимодействие с большим количеством различных систем управления базами данных;

автоматизированная отправка HTTP-заголовков;

работа с HTTP-авторизацией;

работа с cookies и сессиями;

работа с локальными и удалёнными файлами, сокетами;

обработка файлов, загружаемых на сервер [3].

Согласно рейтингу корпорации TIOBE, базирующемся на данных поисковых систем, в апреле 2012 года PHP находился на 6 месте среди языков программирования [4].

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

СУБД MySQL - это свободная система управления реляционными базами данных. В реляционной базе данные хранятся в отдельных таблицах, благодаря чему достигается выигрыш в скорости и гибкости. - это бесплатное приложение, написанное на PHP, предназначенное для администрирования СУБД MySQL через браузер. phpMyAdmin поддерживает широкий спектр операций с MySQL. Наиболее часто используемые операции осуществляются с помощью пользовательского интерфейса (управление базами данных, таблицами, полями, связями, индексами, пользователями, разрешениями и так далее), кроме того, существует возможность напрямую ввести и выполнить любую команду SQL.

2. Проектирование и реализация программного продукта

.1 База данных программного продукта

Для работы с разрабатываемым сайтом в базе данных содержится 15 таблиц: «Users», «Teachers», «Pupil», «Timing», «Folders», «Docs», «Messages», «Attach_docs», « New_messages», «New_attach_docs», «Blanks», «Blank_rows», «Pupil_blanks_head», «Pupil_blanks», «Games».

2.1.1 Описание таблиц базы данных

При регистрации пользователя, его данные сохраняются в таблицу «Users» - «Пользователи», её структура представлена в таблице 2.1. Одновременно с этим, в зависимости от типа пользователя, выбранного им в форме регистрации, в таблицу «Teachers» или «Pupil» добавляется запись с номером пользователя.

Таблица 2.1 - Users

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

Тип данных

Описание

id

int (11)

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

login

varchar (15)

Логин пользователя

password

varchar (255)

Зашифрованный пароль

name

varchar (30)

Имя

lastname

varchar (30)

Фамилия

city

varchar (30)

Город, в котором проживает пользователь

email

varchar (100)

Адрес электронной почты пользователя

level

int (1)

Тип пользователя: 1 - ученик, 2 - учитель, 3 - администратор сайта

avatar

varchar (255)

Адрес изображения на веб-сервере, используемого в качестве аватара пользователя

block

int (1)

Статус пользователя: 1 - заблокирован


В таблице «Users» хранятся основные данные о пользователях. Эти сведения требуется знать о всех пользователях, но существуют и специфические сведения, свойственные для определенных типов пользователей. При регистрации пользователь выбирает: зарегистрироваться как учитель или как ученик. Данные об учителях хранятся в таблице «Teachers» - «Учителя», её структура представлена в таблице 2.2.

Таблица 2.2 - Teachers

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

Тип данных

Описание

id

int (11)

Уникальный номер пользователя-учителя

middlename

varchar (30)

Отчество учителя

education

varchar (255)

Образование учителя

experience

text

Опят работы

other

text

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


Данные об учениках хранятся в таблице «Pupil» - «Ученики», структура представлена в таблице 2.3.

Таблица 2.3 - Pupil

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

Тип данных

Описание

id

int (11)

Уникальный номер пользователя-ученика

day

int (2)

День рождения

month

int (2)

Месяц рождения

year

int (4)

Год рождения

m_name

varchar (30)

Имя матери

m_middlename

varchar (30)

Отчество матери

m_lastname

varchar (30)

Фамилия матери

f_name

varchar (30)

Имя отца

f_middlename

varchar (30)

Отчество отца

f_lastname

varchar (30)

Фамилия отца

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

Тип данных

Описание

par_complaints

text

Жалобы родителей на речь ребенка

teacher

int (11)

Идентификатор учителя

teacher_chk

int (1)

Статус учителя: 0 - не выбран учитель; 1- учителю, чей id записан в поле teacher, подана заявка, на то, чтобы стать его учеником; 2 - учитель занес пользователя в список своих учеников.


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

Для определения учителя пользователя-ученика в таблице «Pupil» имеется поле «teacher».

Данные о расписании логопедических занятий хранятся в таблице «Timing» - «Расписание». Учитель выбирает день недели, время занятия и ученика, с которым оно проводится. Структура таблицы «Timing» представлена в таблице 2.4.

Таблица 2.4 - Timing

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

Тип данных

Описание

id

int (11)

Уникальный номер записи

day

int (1)

Порядковый номер дня недели

time

varchar (5)

Время проведения занятия

p_id

int (11)

Идентификатор ученика, с которым проводится занятие

t_id

int (11)

Идентификатор учителя, который проводит занятие


Загружая материалы на сайт, учитель может распределять их по разделам. Таблица «Folders» - «Разделы» хранит информацию о разделах материалов учителей. Структура «Folders» отображена в таблице 2.5.

Таблица 2.5 - Folders

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

Тип данных

Описание

f_id

int (11)

Уникальный номер раздела

f_name

varchar (100)

Название раздела

t_id

int (11)

Идентификатор учителя, которому принадлежит раздел


Таблица «Docs» - «Материалы» хранит информацию о материалах, загруженных пользователем-учителем на сайт. Если учителем не выбран раздел для загружаемого материала, идентификатор раздела в таблице «Docs» (f_id) будет равен нулю.

Во избежание совпадения имен файлов материалов на сервере в имя файла включается текущая метка времени - количество секунд, прошедших от 00:00:00 1января 1970 года до настоящего времени. Структура «Docs» представлена в таблице 2.6:

Таблица 2.6 - Docs

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

Тип данных

Описание

d_id

int (11)

Уникальный номер материала

name

int (15)

Название файла

path

int (15)

Путь к файлу материала на сервере

date

varchar (8)

Дата загрузки файла в материалы учителя

f_id

varchar (5)

Идентификатор раздела, к которому относится материал

t_id

text

Идентификатор учителя, которому принадлежит материал


Сообщения, отправленные пользователями сайта, сохраняются в таблице «Messages» - «Сообщения»:

Таблица 2.7 - Messages

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

Тип данных

Описание

id

int (11)

Уникальный номер сообщения

sender

int (15)

Идентификатор отправителя сообщения

receiver

int (15)

Идентификатор получателя сообщения

date

varchar (8)

Дата отправки

time

varchar (5)

Время отправки

text

text

Текст сообщения


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

Информация о прикрепленных материалах хранится в таблице «Attach_docs» - «Прикрепленные материалы», структура которой представлена в таблице 2.8.

Таблица 2.8 - Attach_docs

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

Тип данных

Описание

id

int (11)

Уникальный номер записи

d_id

int (11)

Идентификатор материала, который прикреплен к сообщению

mes_id

int (11)

Идентификатор сообщения, к которому прикреплен материал


Чтобы после выбора прикрепляемых материалов не терялся уже введенный текст нового сообщения и уже прикрепленные к нему материалы, информация о них временно хранится в таблицах «New_messages» - «Новые сообщения» и «New_attach_docs» - «Прикрепленные материалы новых сообщений». Их структура показана в таблице 2.9 и в таблице 2.10.

Таблица 2.9 - New_messages

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

Тип данных

Описание

id

int (11)

Уникальный номер нового сообщения

sender

int (15)

Идентификатор отправителя сообщения

receiver

int (15)

Идентификатор получателя сообщения

text

text

Текст сообщения


Таблица 2.10 - New_attach_docs

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

Тип данных

Описание

id

int (11)

Уникальный номер записи

d_id

int (11)

Идентификатор материала, который прикреплен к новому сообщению

mes_id

int (11)

Идентификатор нового сообщения, к которому прикреплен материал


При создании учителем новой анкеты, название и тип анкеты сохраняются в таблицу «Blanks» - «Анкеты». Структура таблицы «Blanks» показана в таблице 2.11.

Таблица 2.11 - Blanks

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

Тип данных

Описание

bl_id

int (11)

Уникальный номер анкеты

bl_name

varchar (60)

Название анкеты

type

int (1)

Тип анкеты: 1 - анкета для родителей, 2 - анкета для логопеда

t_id

int (11)

Идентификатор учителя, который создал анкету


Структура созданной учителем анкеты хранится в виде записей таблицы «Blank_rows» - «Элементы анкеты». Каждая запись этой таблицы представляет собой описание элемента анкеты:

Таблица 2.12 - Blank_rows

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

Тип данных

Описание

r_id

int (11)

Уникальный номер элемента анкеты

type

int (1)

Тип элемента анкеты: 1 - заголовок, 2 - подзаголовок, 3 - малое текстовое поле, 4 - большое текстовое поле

r_index

int (2)

Порядковый номер элемента анкеты в её структуре

sign

varchar (150)

Подпись элемента анкеты

bl_id

int (11)

Идентификатор анкеты, к которой относится элемент


При добавлении анкеты на страницу ученика, в таблицу «Pupil_blanks_head» - «Заголовок анкет учеников» сохраняются данные об этом ученике и об анкете - идентификатор ученика, на страницу которого была добавлена анкета и идентификатор одной из анкет, созданных учителем на разрабатываемом сайте. Структура «Pupil_blanks_head» представлена в таблице 2.13.

Таблица 2.13 - Pupil_blanks_head

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

Тип данных

Описание

id

int (11)

Уникальный номер записи

p_id

int (11)

bl_id

int (11)

Идентификатор добавленной анкеты


Когда пользователь заполняет анкету, внесенные данные сохраняются в таблице «Pupil_blanks» - «Анкеты учеников». Её структура показана в таблице 2.14.

Таблица 2.14 - Pupil_blanks

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

Тип данных

Описание

id

int (11)

Уникальный номер записи

p_id

int (11)

Идентификатор ученика, на страницу которого добавлена анкета

bl_id

int (11)

Идентификатор анкеты

r_id

int (11)

Идентификатор элемента анкеты

text

text

Информация, введенная пользователем в текстовое поле добавленной анкеты


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

Вид элемента прикрепленной анкеты определяется с помощью ссылки на элемент исходной анкеты - r_id.

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

Таблица 2.15 - Games

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

Тип данных

Описание

id

int (11)

Уникальный номер игры

name

varchar (255)

Название игры

note

text

Описание игры

link

varchar (255)

Ссылка на игру


.1.2 Описание связей между таблицами базы данных

Реляционные базы данных состоят из нескольких таблиц, связь между которыми устанавливается с помощью совпадающих полей. Каждая запись в таблицах идентифицирует один объект. Отношение между объектами определяет отношение между таблицами. Существует 4 типа отношений:

отношение «один-к-одному» означает, что каждая запись в одной таблице соответствует только одной записи в другой таблице;

отношение «один-ко-многим» означает, что каждой записи в одной таблице соответствует одна или несколько записей в другой таблице;

отношение «многие-ко-одному» аналогично рассмотренному ранее типу;

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

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

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

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

Рисунок 2.1 - Связи между таблицами

Линиями изображены связи между таблицами. Линия с цифрой «1» в начале и буквой «М» в конце обозначает связь «один-ко-многим». Линия с цифрой «1» в начале и в конце обозначает связь «один-к-одному». Из приведенной схемы видно, что таблица «Games» не связана с остальными таблицами базы. Таблица «Users_1» на схеме обозначает, ту же таблицу, что и «Users». С её помощью показана «двойная» связь таблицы базы данных «Users» с таблицами «Messages» и «New_messages».

.2 Интерфейс пользователя

Зайдя на главную страницу сайта, пользователь увидит форму для входа на сайт (рисунок 2.2).

Рисунок 2.2 - Главная страница

По нажатию на кнопку «Войти» происходит проверка полей ввода. Если пользователь не заполнит какое-либо из полей ввода и попытается войти на сайт, будет показано соответствующее сообщение (рисунок 2.3).

Рисунок 2.3 - Проверка формы входа

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

Рисунок 2.4 - Неудачная авторизация

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

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

Рисунок 2.5 - Регистрация

Перейдя по ней, пользователь попадает на страницу с формой для регистрации (рисунок 2.5). Чтобы зарегистрироваться, нужно заполнить все поля формы, ввести код c изображения и нажать кнопку «Зарегистрироваться». Ввод кода с изображения предусмотрен для защиты от автоматической регистрации на сайте. Изображение генерируется с помощью скрипта «my_code_gen.php» [6].

Если пользователь не заполнил одно или несколько полей в форме регистрации, ему будет показано оповещение, а данные не будет отправлены на сервер (рисунок 2.6).

Рисунок 2.6 - Проверка формы регистрации

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

Рисунок 2.7 - недействительный адрес почты

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

Рисунок 2.8 - Успешное завершение регистрации

.2.1 Интерфейс ученика

Если пользователь зарегистрировался как ученик, то после авторизации ему доступны следующие разделы: «Моя страница», «Сообщения», «Развивающие игры», «Учитель».

Рисунок 2.9 - Страница ученика

«Моя страница» представляет собой раздел с личной информацией пользователя (рисунок 2.9). Когда пользователь первый раз заходит на свою страницу, в качестве аватара используется стандартное изображение. Пользователь может выбрать изображение на своём компьютере и нажать кнопку «Сохранить» в блоке «Выбор изображения», тогда новое изображение будет сохранено на сервер, а в таблице «Users» базы данных обновится путь к файлу с изображение. Справа на странице расположен раздел с информацией об ученике, в него входят данные, сохраненные при регистрации, хранящиеся в таблице «Users» и данные, хранящиеся в таблице «Pupil» - эта информация отображается на вкладке «Основные данные». Чтобы её изменить, пользователю нужно нажать кнопку «Изменить», тогда поля с данными примут вид полей ввода текста (рисунок 2.10).

Рисунок 2.10 - Изменение данных

Чтобы сохранить изменения, пользователю нужно нажать на кнопку «Сохранить». После этого проверяется корректность введенной информации: действительность адреса электронной почты; совпадение нового пароля и его повтора, если поле «Новый пароль» было заполнено. Если данные корректны, то в базе данных обновляются данные о пользователе в таблицах «Users» и «Pupil», иначе, пользователю показывается сообщение об ошибке.

Если пользователь уже выбрал своего учителя, то на вкладке «Анкеты для родителей» он увидит список анкет для родителей, которые учитель добавил его страницу. При нажатии на название анкеты отобразится её содержимое (рисунок 2.11), заполнять анкету ученик может аналогично изменению своих данных на вкладке «Основные данные». Данные из анкет для родителей доступны для просмотра только самому ученику и его учителю.

Рисунок 2.11 - Анкеты для родителей

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

Рисунок 2.12 - Последние сообщения

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

Рисунок 2.13 - Переписка с учителем

На странице «Развивающие игры» показан список игр сайта для логопедических занятий (рисунок 2.14).

Рисунок 2.14 - Развивающие игры

Чтобы выбрать игру, пользователь должен щелкнуть по её названию. После этого, ниже списка игр, загрузится выбранная игра, отобразится её описание и название, что показано на рисунке 2.15. Игры являются flash-приложениями, хранимыми и опубликованными на других Интернет-сайтах.

Рисунок 2.15 - Игра

На странице «Учитель», если пользователь ещё не выбрал учителя, отображается список всех пользователей-учителей, зарегистрированных на сайте. Для удобства пользователя, среди этого списка можно искать учителя по имени и фамилии, по городу, который указан в информации об учителе. Для поиска учителя с определенными параметрами пользователю-ученику нужно выбрать их и нажать кнопку «Найти». Если параметры заданы, то из таблицы «Users» будут выбраны все записи с типом доступа level равным двум, удовлетворяющие заданным условиям. При удачном завершении поиска пользователь-ученик увидит список всех найденных пользователей учителей, иначе выводится сообщение о том, что учителей не найдено. Список учителей с применением фильтров показан на рисунке 2.16.

Рисунок 2.16 - Результаты поиска учителей

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

Рисунок 2.17 - Просмотр страницы пользователя-учителя

Чтобы выбрать учителя, пользователь-ученик должен в списке учителей нажать кнопку «Выбрать» напротив определенного учителя. После этого в таблицу «Pupil» сохранится информация о выборе ученика, статус учителя teacher_chk станет равен единице, что означает, что учитель ещё не подтвердил, что пользователь является его учеником. Теперь на странице «Учитель» пользователь будет видеть только блок с информацией о выбранном им учителе. Вид страницы показан на рисунке 2.18.

Рисунок 2.18 - Неподтвержденный учитель

Когда пользователь-учитель примет пользователя-ученика в список своих учеников, в разделе «Учитель» ученик увидит не только информацию о том, кто является его учителем, но и расписание занятий (рисунок 2.19), также ученик сможет обмениваться сообщениями со своим учителем.

Рисунок 2.19 - Подтвержденный учитель

.2.2 Интерфейс учителя

Если пользователь зарегистрировался как учитель, то после авторизации ему доступны следующие разделы: «Моя страница», «Сообщения», «Развивающие игры», «Ученики», «Расписание», «Анкеты», «Материалы».

На странице «Моя страница», изображенном на рисунке 2.20, пользователь-учитель, так же, как и пользователь-ученик, может изменять аватар и личные данные. Резюме учителя хранится в таблице «Teachers». Страницу учителя могут просматривать все пользователи-ученики и администратор сайта.

Рисунок 2.20 - Страница пользователя-учителя

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

Рисунок 2.21 - Переписка учителя с учеником

Чтобы добавить файл материала к сообщению, учителю нужно нажать «Прикрепить материал», после этого он попадет на страницу выбора материала, показанную на рисунке 2.22, а в таблицы «New_messages» и «New_attach_docs» базы данных сохраняется информация о новом сообщении и прикрепленных к нему материалов. Эта информация хранится до написания другого сообщения.

Рисунок 2.22 - Выбор материала

На этой странице учитель может выбрать материал, который нужно прикрепить к сообщению, если учитель создал разделы для систематизации материалов, то слева выводится список разделов, щелкнув по названию, учитель увидит названия файлов, принадлежащих определенному разделу. Определившись с выбором материала, учителю нужно нажать кнопку «Прикрепить к сообщению» под названием файла. После этого учитель вернется на страницу переписки с пользователем. Под полем ввода сообщения появится список прикрепленных материалов (рисунок 2.23). Чтобы удалить материалы из этого списка, учителю нужно нажать кнопку «Удалить» рядом с названием файла материала.

Рисунок 2.23 - Новое сообщение с прикрепленным материалом

После того, как учитель нажмет «Отправить», информация о сообщении сохранится в таблице «Messages», информация о файлах, прикрепленных к сообщению, сохранится в таблице «Attach_docs».

Страница «Развивающие игры» соответствует странице «Развивающие игры» пользователя-ученика, рассмотренной в 2.2.1.

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

На рисунке 2.24 показан список учеников пользователя-учителя. Учитель может перейти по ссылке «Написать сообщение», тогда откроется страница «Сообщения», и будет показана переписка с выбранным учеником. Также учитель может нажать кнопку «Удалить из списка учеников», после этого действия в базе данных в таблице «Pupil» у удаленного из списка ученика будет изменено значение поля teacher на ноль. Будет удалена переписка между учителем и этим учеником из таблицы «Messages», удалены анкеты, добавленные учителем на страницу ученика, из таблиц «Pupil_blanks_head» и «Pupil_blanks», удалены записи о времени проведения занятий с этим учеником из таблицы «Timing». Ученик будет оповещен об удалении.

Рисунок 2.24 - Ученики

На вкладке «Заявки» (рисунок 2.25) пользователь видит список пользователей-учеников, которые выбрали учителя, но он еще не принял решение о занесении их в список своих учеников. Для управления заявками, учитель может использовать кнопки «Принять» - пользователь-ученик попадет в список учеников учителя, «Отклонить» - пользователь ученик не будет показан ни в одном из списков страницы «Ученики».

Рисунок 2.25 - Заявки

Для удобства пользователя-учителя, на странице «Ученики» предусмотрен поиск по имени и фамилии, кроме этого, на вкладке «Заявки» можно выбирать город.

На странице «Расписание» учитель может редактировать расписание занятий со своими учениками. Вид страницы представлен на рисунке 2.26. Блок каждого дня недели состоит из двух частей. Слева - расписание, справа - панель добавления нового времени занятий. Чтобы добавить новую запись в расписание, учитель должен выбрать время проведения занятия и ученика из выпадающих списков, затем нажать кнопку «Внести в расписание», после этого в таблицу «Timing» будет вставлена информация о новой записи, новое время и фамилия и имя ученика появятся в левой части расписания. Для удаления в левой части нужно нажать кнопку «Удалить» напротив выбранной записи, тогда информация о ней удалится из «Timing», запись исчезнет из расписания.

Рисунок 2.26 - Расписание занятий

Каждый ученик пользователя-учителя видит в разделе «Учитель» расписание занятий, составленное учителем, но ему показано только то время проведения занятий, которое учитель определил для данного ученика.

Страница «Анкеты» предназначена для того, чтобы учитель создавал или редактировал анкеты, которые затем помещаются на страницы учеников. На странице есть две вкладки: «Для родителей» и «Для логопеда». Анкеты для родителей могут заполнять только ученики, анкеты для логопеда - только учитель, который создал анкету. На странице выводится список всех анкет выбранного типа, названия анкет извлекаются из таблицы «Blanks». После щелчка по названию анкеты в списке, справа будет показано её содержимое (рисунок 2.27), оно извлекается из таблицы «Blank_rows». Чтобы изменить элементы анкеты, учитель должен нажать на кнопку «Изменить». Страница примет вид, показанный на рисунке 2.28.

Рисунок 2.27 - Просмотр анкеты

Рисунок 2.28 - Редактирование анкеты

Учитель может добавить новые поля в анкету, для этого он должен выбрать место вставки и число полей, и нажать кнопку «ОК», в таблицу «Blank_rows» будет записана информация о новых полях. Полей в анкете может быть не более тридцати, ограничение установлено, так как пользователям будет удобнее заполнять более короткие анкеты. Учитель может изменять подпись поля и тип поля. В случае, если выбран тип «Заголовок» или «Подзаголовок», подпись поля и является текстом заголовка или подзаголовка. Для сохранения измененных подписей и типов полей, нужно нажать кнопку «Сохранить изменения», тогда в соответствующие записи в таблице «Blank_rows» будут сохранены новые значения. Чтобы удалить поля, нужно отметить их и нажать кнопку «Удалить поля», после этого, записи, соответствующие отмеченным полям, будут удалены из таблицы «Blank_rows». Чтобы добавить анкету, учитель должен нажать кнопку «Добавить» под списком анкет, в таблицу «Blanks» будет вставлена новая запись, в списке анкет появится пустая анкета. Для того, чтобы удалить анкету, учитель должен щелкнуть по названию анкеты в списке и в блоке просмотра анкеты нажать кнопку «Удалить анкету». Тогда вся информация об анкете будет удалена из таблиц «Blanks», «Blank_rows», «Pupil_blanks_head», «Pupil_blanks», таким образом, анкета не будет больше отображаться не только на странице «Анкеты» учителя, но и на странице ученика, если учитель добавил ему такую анкету ранее.

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

Рисунок 2.29 - Все материалы

Чтобы скачать материал на свой компьютер, учителю нужно нажать кнопку «Скачать», чтобы удалить материал с сервера, нужно нажать кнопку «Удалить», при этом информация о данном файле удалится из таблиц «Docs», «Attach_docs», «New_attach_docs». Для перемещения материала в определенный раздел нужно в выпадающем списке выбрать название раздела и нажать кнопку «OK», после этого в таблице «Docs» базы данных у записи, соответствующей материалу, обновится информация о разделе. Чтобы загрузить файл на сайт, нужно выбрать раздел, к которому он будет относиться, и нажать кнопку «Загрузить», далее откроется окно выбора файлов, после того, как пользователь выбрал файл, если его размер не превышает два мегабайта, файл загрузится на сервер сайта, а в таблице «Docs» появится запись с информацией о загруженном материале.

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

Рисунок 2.30 - Просмотр определенного раздела

Пользователь-учитель может просматривать страницы пользователей которые подали ему заявки на вступление в список учеников, при этом отображается только основная информация о пользователе-ученике - данные из таблиц «Users» и «Pupil», что показано на рисунке 2.31.

Рисунок 2.31 - Страница неподтвержденного ученика

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

Рисунок 2.32 - Анкета для родителей

На вкладке «Анкеты для логопеда» (рисунок 2.33) учитель может просматривать и заполнять анкеты для логопеда. Изменение анкет организовано так же, как и изменение личной информации на странице пользователя. Эти анкеты доступны для просмотра только учителю, который добавил их на страницу ученика.

Рисунок 2.33 - Анкета для логопеда

Чтобы добавить ещё одну анкету на страницу, учителю нужно выбрать название анкеты в выпадающем списке и нажать кнопку «Добавить», если такая же анкета ещё не добавлена на страницу ученика, информация о ней будет занесена в таблицы «Pupil_blanks_head» и «Pupil_blanks», новая анкета появится в списке анкет. Для удаления добавленных на страницу анкет учителю нужно выбрать анкету из списка и нажать кнопку «Удалить анкету со страницы», затем из таблиц «Pupil_blanks_head» и «Pupil_blanks» будут удалены записи, соответствующие анкете на данной странице.

интернет сайт логопед интерфейс программный

2.2.3 Интерфейс администратора

Если пользователь авторизировался как администратор сайта, то он попадает на страницу «Моя страница», изображенную на рисунке 2.34. Нажав на кнопку «Изменить», администратор может изменить свой электронный адрес и пароль (рисунок 2.35). Корректность введенных проверяется также как и на страницах других пользователей.

Рисунок 2.34 - Страница администратора

Рисунок 2.35 - Изменение данных администратора

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

Администратор сайта отвечает за заполнение страницы «Развивающие игры», который является общим для всех пользователей. На странице «Развивающие игры» (рисунок 2.36) представлен список игр, как и у других пользователей, и форма добавления игры на сайт. Чтобы добавить игру, администратор обязательно должен вписать её название и вставить ссылку на игру на другом сайте. По желанию, может быть заполнено поле с описанием игры. После нажатия кнопки «Добавить» информация об игре сохранится в таблицу «Games» и игра будет опубликована на сайте. Игры являются flash-приложениями, хранимыми и опубликованными на других Интернет-сайтах.

Рисунок 2.36 - Развивающие игры

Для запуска игры администратору нужно щелкнуть по её названию в списке игр сайта. После этого появится возможность просматривать и изменять информацию о ней. Чтобы редактировать игру, администратору нужно нажать кнопку «Изменить» (рисунок 2.37).

Рисунок 2.37 - Информация об игре

В режиме редактирования (рисунок 2.38) администратор может изменить название или описание игры и нажать кнопку «Сохранить», при этом имя не должно быть пустым. После этого информация об игре обновится в таблице «Games».

Рисунок 2.38 - Редактирование игры

Чтобы удалить игру с сайта, нужно нажать кнопку «Удалить игру», после чего будет удалена запись из таблицы «Games», соответствующая выбранной игре.

На странице «Пользователи» администратора представлен список всех пользователей сайта. Для удобства администратора предусмотрен поиск с использование таких параметров: часть имени или фамилии пользователя; город, указанный в основных данных пользователя; тип пользователя (учитель или ученик); заблокирован ли пользователь. Чтобы использовать фильтры списка пользователей, нужно определить их значения и нажать кнопку «Найти». Пример списка после применения поиска показан на рисунке 2.39.

Рисунок 2.39 - Отфильтрованный список пользователей

Если какой-то пользователь замечен в использовании сайта в целях распространения рекламы, некорректном поведении или является источником спама, то администратор может его заблокировать, нажав на кнопку «Заблокировать» при просмотре списка пользователей. После этого в таблице «Users» в записи о данном пользователе значение поля «block» становится равным единице. Заблокированный пользователь не может совершать никаких действий на сайте. Он видит только страницу с сообщением о том, что его заблокировали, она изображена на рисунке 2.40.

Рисунок 2.40 - Пользователь заблокирован

Если пользователь заблокирован, то администратор может его разблокировать, нажав кнопку «Разблокировать», тогда таблице «Users» в записи о данном пользователе значение поля «block» становится равным нулю. Администратор может удалить заблокированного пользователя, для этого нужно нажать кнопку «Удалить», после чего из таблиц базы данных будут удалены все записи, связанные с данным пользователем.

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

3. Расчет экономических показателей программного продукта

.1 Расчет себестоимости программного продукта

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

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

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

На основе экспертных оценок затрат времени определяется средняя величина для каждого из выше указанных этапов, по формуле (3.1):

,        (3.1)

где    - средняя оценка;

 - оценка, данная руководителем проекта;

 - оценка, данная разработчиком проекта.

Экспертные оценки времени рассчитываются по каждому этапу разработки программного продукта для трех ситуаций:

наименее возможная величина затрат (ai);

наиболее вероятная величина затрат (mi);

наиболее возможная величина затрат (bi);

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

Таблица 3.1 - Оценка затрат времени на разработку программного продукта

Этапы разработки программного продукта

Величина затрат


Наименее возможная ai, дни

Наиболее вероятная mi, дни

Наиболее возможная bi, дни


tрук

tразр

tсред

tрук

tразр

tсред

tрук

tразр

tсред

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

11

13

11,8

13

15

13,8

15

17

15,8

Написание программы

13

15

13,8

17

19

17,8

21

24

22,2

Тестирование и отладка

5

5

5

8

9

8,4

10

12

10,8


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

Формула (3.2) для расчета математического ожидания:

,        (3.2)

где    - математическое ожидание для i-гo этапа;

, ,  - средние значения затрат.

Стандартное отклонение для каждого этапа разработки программного продукта определяется по формуле (3.3):

, (3.3)

где    - стандартное отклонение по i-му этапу.

Общая оценка затрат на разработку программного продукта рассчитывается по формуле (3.4):

,        (3.4)

где    - общая оценка затрат;

 - математическое ожидание затрат для i-го этапа;

 - количество этапов разработки программного продукта.

Стандартное отклонение в целом по программному продукту вычисляется по формуле (3.5):

, (3.5)

где    - стандартное отклонение общей оценки затрат;

 - стандартное отклонение оценки затрат для i-го этапа.

На основе расчетов математического ожидания и стандартного отклонения вычисляется коэффициент вариации. Данный коэффициент показывает, насколько согласованы эксперты. Ниже приведены формула (3.6) для расчета коэффициента вариации по i-тому этапу и формула (3.7) для вычисления общего коэффициента вариации:

,    (3.6)

где    - коэффициент вариации для i-го этапа;

 - стандартное отклонение оценки затрат для i-го этапа;

 - математическое ожидание затрат для i-го этапа.

,      (3.7)

где    - коэффициент вариации по всем этапам;

 - стандартное отклонение оценки затрат по всем этапам;

 - математическое ожидание затрат по всем этапам.

Если общий коэффициент вариации , то мнения экспертов считаются согласованными.

Результаты расчета , , , а также , ,  приведены в таблице 3.2.

Таблица 3.2 - Затраты времени на разработку программного продукта

Этапы разработки программного продукта

Средняя величина затрат времени по этапам

Математическое ожидание МОi, дни

Стандартное отклонение Gi, дни

Коэффициент вариации Yi, дни


Наименее возможная ai, дни

Наиболее вероятная mi, дни

Наиболее возможная bi, дни




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

11,8

13,8

15,8

13,8

0,67

0,05

Написание программы

13,8

17,8

22,2

17,8

1,4

0,07

Тестирование и отладка

5

8,4

10,8

8,23

0,97

0,12

Итого

30,6

40

48,8

39,83

3,04

0,24


Так как коэффициент вариации  по программному продукту равен 0,24 и не превосходит 0,3, то мнения экспертов согласованы.

Расчет себестоимости программного продукта производится по формуле (3.8):

,    (3.8)

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

 - среднемесячная заработная плата программиста с учетом

районного коэффициента;

 - количество рабочих дней в месяце;

 - трудозатраты на проектирование;

 - трудозатраты на написание программы;

 - трудозатраты на тестирование и отладку;

 - коэффициент, учитывающий отчисления во внебюджетные фонды;

 - коэффициент, учитывающий накладные расходы;

 - стоимость одного часа машинного времени;

 - стоимость одного часа работы в Интернете;

 - количество дней работы на компьютере;

 - количество дней работы в Интернете.

Значения данных для подсчета себестоимости программного продукта представлены в таблице 3.3.

Таблица 3.3 - Значения данных для подсчета себестоимости

Показатель

Значение

, руб.20000


, руб.22


, дни13,8


, дни17,8


, дни.8,23


1,302


0,8


, руб.0,6


, дни38


, дни20



Рассчитаем стоимость одного часа машинного времени. Для этого рассчитаем затраты на эксплуатацию персонального компьютера за год по формуле (3.9):

,    (3.9)

где    - себестоимость одного часа машинного времени;

 - затраты на электроэнергию за год работы;

 - затраты на амортизационные отчисления;

 - затраты на комплектующие материалы;

 - прочие затраты;

 - общее время работы компьютера за год.  = 22*12*8 = 2112 часов.

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

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

,   (3.10)

где    - затраты на электроэнергию за год работы;

 - общее время работы компьютера за год;

 - тариф электроэнергии за 1 кВт;

 - потребляемая мощность персонального компьютера по паспортным данным.

Примем потребляемую мощность персонального компьютера и тариф электроэнергии соответственно:

 кВт/час;

 руб/кВт.

По формуле (3.10) находим затраты на электроэнергию в год:

 руб.

Амортизационные отчисления в год рассчитываются по формуле (3.11):

,        (3.11)

где    - затраты на амортизационные отчисления;

 - стоимость персонального компьютера ( руб.);

 - процент отчисления на амортизацию.

Процент отчисления на амортизацию рассчитывается согласно методике, отраженной в статье 259.1 НК РФ. Согласно постановлению правительства РФ от 1 января 2002 под № 1 «О классификации основных средств, включаемых в амортизационные группы», срок использования основных средств составляет от 2 до 3 лет. В рамках дипломного проекта установим срок полезного использования 2 года.

Определим процент отчисления на амортизацию:

.

Произведем расчет амортизационных отчислений по формуле (3.11)

 руб./год.

Затраты на комплектующие материалы за год примем  руб.

Затраты на заработную плату обслуживающего персонала за год рассчитываются по формуле:

,   (3.12)

где Зраб − затраты на заработную плату обслуживающего персонала за год;

Знадб − затраты на заработную плату обслуживающего персонала за месяц. Примем Знадб = 6000 руб.

Тогда по формуле (3.12) находим:

Зраб = 12 * 5000 = 60000 руб.

Прочие расходы составляют 5 % от общей суммы затрат. Они рассчитываются по формуле (3.13):

.        (3.13)

По формуле (3.13) находим:

 руб./год.

Зная все данные, подсчитаем стоимость одного часа машинного времени по формуле (3.9):

 руб.

Рассчитаем себестоимость программного продукта по формуле (3.8):

Цена программного продукта рассчитывается по формуле (3.14):

,       (3.14)

где    - цена программного продукта;

 - себестоимость программного продукта;

 - рентабельность программного продукта.

Рентабельность программного продукта примем:

По формуле (3.14) находим:

 руб.

Цена программного продукта с учетом НДС рассчитывается по формуле (3.15):

,    (3.15)

где    - цена программного продукта с НДС;

 - цена программного продукта;

 - составляет 18% от цены программного продукта согласно статье 164 из 21 главы НК РФ.

По формуле (3.15) вычисляется цена программного продукта с учетом НДС:

 руб.

.2 Оценка эффективности от внедрения программного продукта

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

систематизированное хранение документации и материалов учителя-логопеда;

осуществление общения учителя-логопеда и родителей учеников посредством сообщений;

получение заданий учениками в электронном виде;

составление и просмотр расписания занятий.

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

4. Безопасность жизнедеятельности

.1 Организация рабочего места с ПК

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

Площадь на одно рабочее место пользователей ПК с монитором на базе электроннолучевой трубки (ЭЛТ) должна составлять не менее 6 м2, в помещениях культурно-развлекательных учреждений и с мониторами на базе плоских дискретных экранов (жидкокристаллические, плазменные) - 4,5 м2. При размещении нескольких рабочих мест с ПК в одном помещении расстояние между рабочими столами с видеомониторами (в направлении тыла поверхности одного видеомонитора и экрана другого видеомонитора) должно быть не менее 2,0 м, а расстояние между боковыми поверхностями видеомониторов - не менее 1,2 м. В помещениях с источниками вредных производственных факторов рабочие места должны размещаться в изолированных кабинах с организованным воздухообменом. При выполнении творческой работы, требующей значительного умственного напряжения или высокой концентрации внимания, их рекомендуется изолировать друг от друга перегородками высотой 1,5 - 2,0 м.

Экран монитора должен находиться от глаз пользователя на расстоянии 60 - 70 см, но не ближе 50 см с учетом размеров алфавитно-цифровых знаков и символов. Клавиатуру следует располагать на поверхности стола на расстоянии 10 - 30 см от края, обращенного к пользователю или на специальной, регулируемой по высоте рабочей поверхности, отделенной от основной столешницы. Конструкция рабочего стола должна обеспечивать оптимальное размещение на рабочей поверхности используемого оборудования с учетом его количества и конструктивных особенностей, характера выполняемой работы. При этом допускается использование столов различных конструкций, отвечающих современным требованиям эргономики. Поверхность рабочего стола должна иметь коэффициент отражения 0,5 - 0,7. Конструкция стула (кресла) должна обеспечивать поддержание рациональной рабочей позы при работе на ПК, позволять изменять позу с целью снижения статического напряжения мышц шейно-плечевой области и спины для предупреждения развития утомления, также конструкция должна позволять регулировать высоту и угол наклона сиденья и спинки, расстояние спинки от переднего края сиденья, при этом настройка каждого параметра должна быть независимой, легко осуществляемой и иметь надежную фиксацию. Стул (кресло) следует выбирать с учетом роста пользователя, характера и продолжительности работы с ПК. Поверхность сиденья, спинки и других элементов должна быть полумягкой, с нескользящим, слабо электризующимся и воздухопроницаемым покрытием, обеспечивающим легкую очистку от загрязнений. Рабочее место пользователя ПК должно быть оборудовано подставкой для ног.

.2 Требования к санитарно-гигиеническим параметрам рабочих мест

.2.1 Микроклимат

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

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

.2.2 Шум

Многие устройства в ПК имеют моторы и вращающиеся детали и как следствие создают в окружающей их среде шумовые эффекты и вибрации. Основным источником шума в ПК является вентиляторы охлаждения, и движущиеся сегменты жестких дисков и оптических приводов. Для борьбы с данными видами шумов применяют вентиляторы с улучшенными подшипниками или с подвеской на магнитной левитации. Своевременная чистка и смазывание осевого узла вентилятора уменьшает трения статора о корпус, а использование вентиляторов с термодатчиками позволяет использовать их работу не под постоянной нагрузкой. В современных жёстких дисках и оптических приводах применяются улучшенные подшипники и используются различные режимы работы (малошумный режим и т.п.), что позволяет с каждым новым поколением снизить генерируемый ими шум или вовсе от него избавиться, например, при использовании твердотелых жестких дисков (0дБА). При выполнении основной работы уровень шума не должен превышать 50дБА.

.2.3 Освещение

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

Искусственное освещение в помещениях для работы с ПК должно осуществляться системой общего равномерного освещения. Допускается применение системы комбинированного освещения: к общему освещению дополнительно устанавливаются светильники местного освещения, предназначенные для освещения зоны расположения документов. Освещённость на поверхности стола в зоне размещения рабочего документа должна быть 300 - 500 лк. Допускается установка светильников местного освещения для подсветки документов. Местное освещение не должно создавать бликов на поверхности экрана и увеличивать освещённость экрана более 300 лк.

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

.2.4 Электромагнитное излучение

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

Временные допустимые значения уровня ЭМП, создаваемые ПК на рабочих местах, согласно гигиеническим тербованиям к персональным электронно-вычислительным машинам и организации работы (СанПиН 2.2.2/2.4.1340-03), приведены в таблице 4.1.

Таблица 4.1 - Временные допустимые значения уровня ЭМП

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

ВДУ

Напряжённость электрического поля

в диапазоне 5 Гц. - 2 кГц.

25 В./м.


в диапазоне 2 кГц. - 400 кГц.

2,5 В./м.

Плотность магнитного потока

в диапазоне 5 Гц. - 2 кГц.

250 нТл.


в диапазоне 2 кГц. - 400 кГц.

25 нТл.

Напряжённость электростатического поля

15 кВ./м.


.3 Причины и профилактика статического и зрительного утомления

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

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

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

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

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

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

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

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

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

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

.4 Пожарная безопасность рабочих мест с ПК

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

.4.1 Причины возгораний, пожаров

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

.4.2 Действия в случае возникновения возгораний и пожаров

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

а) немедленно сообщить об этом по телефону 01 в пожарную охрану и назвать адрес объекта, место возникновения пожара, свою фамилию;

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

Руководитель предприятия или лицо, исполняющее его обязанности должен:

а) в случае угрозы жизни людей организовать их спасение;

б) при необходимости отключить электроэнергию;

в) прекратить все работы, не связанные с тушением пожара;

г) организовать встречу подразделений пожарной охраны.

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

Заключение

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

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

В результате, разработан сайт, обладающий следующими особенностями:

удобный и понятный пользователю интерфейс;

три уровня авторизированных пользователей;

динамическое обновление расписания занятий учителем;

динамическое создание виртуальных анкет и их добавление на страницы учеников;

«прикрепление» учеников к определенному учителю;

динамическое создание разделов материалов;истематизированное хранение материалов учителя в разделах;

отправка файлов с материалами ученику с помощью сообщений.

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

Библиография

1.      Логопедия для всех, www.logolife.ru [Электронный ресурс].

.        Справочное руководство по JavaScript, www.nsc.ru/rus/docs/JS/introduction.html [Электронный ресурс].

.        Википедия - свободная электронная библиотека, ru.wikipedia.org/wiki/PHP [Электронный ресурс].

.        PVSM. Новости ИТ мира, www.pvsm.ru/razrabotka/5285 [Электронный ресурс].

.        ИНТУИТ. Национальный открытый университет, www.intuit.ru/department/database/workwdb/5/2.html [Электронный ресурс].

.        Частная коллекция качественных материалов для тех, кто делает сайты, ruseller.com/lessons.php?rub=37&id=358 [Электронный ресурс].

Приложение А

Комплексы упражнений

КОМПЛЕКСЫ УПРАЖНЕНИЙ ДЛЯ ГЛАЗ

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

Вариант 1

. Закрыть глаза, сильно напрягая глазные мышцы, на счет 1 4, затем раскрыть глаза, расслабив мышцы глаз, посмотреть вдаль на счет 1 - 6. Повторить 4 - 5 раз.

. Посмотреть на переносицу и задержать взор на счет 1 - 4. До усталости глаза не доводить. Затем открыть глаза, посмотреть вдаль на счет 1 - 6. Повторить 4 - 5 раз.

. Не поворачивая головы, посмотреть направо и зафиксировать взгляд на счет 1 - 4, затем посмотреть вдаль прямо на счет 1 - 6. Аналогичным образом проводятся упражнения, но с фиксацией взгляда влево, вверх и вниз. Повторить 3 - 4 раза.

. Перенести взгляд быстро по диагонали: направо вверх налево вниз, потом прямо вдаль на счет 1 - 6; затем налево вверх направо вниз и посмотреть вдаль на счет 1 - 6. Повторить 4 - 5 раз.

Вариант 2

. Закрыть глаза, не напрягая глазные мышцы, на счет 1 - 4, широко раскрыть глаза и посмотреть вдаль на счет 1 - 6. Повторить 4 - 5 раз.

. Посмотреть на кончик носа на счет 1 - 4, а потом перевести взгляд вдаль на счет 1 - 6. Повторить 4 - 5 раз.

. Не поворачивая головы (голова прямо), делать медленно круговые движения глазами вверх - вправо - вниз - влево и в обратную сторону: вверх - влево - вниз - вправо. Затем посмотреть вдаль на счет 1 - 6. Повторить 4 - 5 раз.

. При неподвижной голове перевести взор с фиксацией его на счет 1 - 4 вверх, на счет 1 - 6 прямо; после чего аналогичным образом вниз - прямо, вправо - прямо, влево - прямо. Проделать движение по диагонали в одну и другую стороны с переводом глаз прямо на счет 1 - 6. Повторить 3 - 4 раза.

КОМПЛЕКСЫ УПРАЖНЕНИЙ ФИЗКУЛЬТУРНЫХ МИНУТОК

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

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

. ФМ общего воздействия

. И.п. - о.с. 1 - 2 - встать на носки, руки вверх - наружу, потянуться вверх за руками. 3 - 4 - дугами в стороны руки вниз и расслабленно скрестить перед грудью, голову наклонить вперед. Повторить 6 - 8 раз. Темп быстрый.

. И.п. - стойка ноги врозь, руки вперед, 1 - поворот туловища направо, мах левой рукой вправо, правой назад за спину. 2 - и.п. 3 - 4 - то же в другую сторону. Упражнения выполняются размашисто, динамично. Повторить 6 - 8 раз. Темп быстрый.

. И.п. 1 - согнуть правую ногу вперед и, обхватив голень руками, притянуть ногу к животу. 2 - приставить ногу, руки вверх наружу. 3 - 4 - то же другой ногой. Повторить 6 - 8 раз. Темп средний.

. ФМ общего воздействия

. И.п. - о.с. 1 - 2 - дугами внутрь два круга руками в лицевой плоскости. 3 - 4 - то же, но круги наружу. Повторить 4 - 6 раз. Темп средний.

. И.п. - стойка ноги врозь, правую руку вперед, левую на пояс. 1 - 3 - круг правой рукой вниз в боковой плоскости с поворотом туловища направо. 4 - заканчивая круг, правую руку на пояс, левую вперед. То же в другую сторону. Повторить 4 - 6 раз. Темп средний.

. И.п. - о.с. 1 - с шагом вправо руки в стороны. 2 - два пружинящих наклона вправо. Руки на пояс. 4 - и.п. 1 - 4 - то же влево. Повторить 4 - 6 раз в каждую сторону. Темп средний.

Физкультминутка для снятия утомления с плечевого пояса и рук:

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

. ФМ для снятия утомления с плечевого пояса и рук

. И.п. - о.с. 1 - поднять плечи. 2 - опустить плечи. Повторить 6 - 8 раз, затем пауза 2 - 3 с, расслабить мышцы плечевого пояса. Темп медленный.

. И.п. - руки согнуты перед грудью. 1 - 2 - два пружинящих рывка назад согнутыми руками. 3 - 4 то же прямыми руками. Повторить 4 - 6 раз. Темп средний.

. И.п. - стойка ноги врозь. 1 - 4 - четыре последовательных круга руками назад. 5 - 8 - то же вперед. Руки не напрягать, туловище не поворачивать. Повторить 4 - 6 раз. Закончить расслаблением. Темп средний.

. ФМ для снятия утомления с плечевого пояса и рук

. И.п. - о.с. - кисти в кулаках. Встречные махи руками вперед

и назад. Повторить 4 - 6 раз. Темп средний.

. И.п. - о.с. 1 - 4 - дугами в стороны руки вверх, одновременно делая ими небольшие воронкообразные движения. 5 - 8 дугами в стороны руки расслабленно вниз и потрясти кистями. Повторить 4 - 6 раз. Темп средний.

. И.п. - тыльной стороной кисти на пояс. 1 - 2 - свести вперед, голову наклонить вперед. 3 - 4 - локти назад, прогнуться. Повторить 6 - 8 раз, затем руки вниз и потрясти расслабленно. Темп медленный.

Физкультминутка для снятия утомления с туловища и ног:

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

. ФМ для снятия утомления с туловища и ног

. И.п. - о.с. 1 - шаг влево, руки к плечам, прогнуться. 2 и.п. 3 - 4 - то же в другую сторону. Повторить 6 - 8 раз. Темп медленный.

. И.п. - стойка ноги врозь. 1 - упор присев. 2 - и.п. 3 наклон вперед, руки впереди. 4 - и.п. Повторить 6 - 8 раз. Темп средний.

. И.п. - стойка ноги врозь, руки за голову. 1 - 3 - круговые движения тазом в одну сторону. 4 - 6 - то же в другую сторону. 7 8 - руки вниз и расслабленно потрясти кистями. Повторить 4 6 раз. Темп средний.

. ФМ для снятия утомления с туловища и ног

. И.п. - о.с. 1 - выпад влево, руки дугами внутрь, вверх в стороны.

- толчком левой приставить ногу, дугами внутрь руки вниз. 3 - 4 - то же в другую сторону. Повторить 6 - 8 раз. Темп средний.

. И.п. - о.с. 1 - 2 - присед на носках, колени врозь, руки вперед - в стороны. 3 - встать на правую, мах левой назад, руки вверх. 4 - приставить левую, руки свободно вниз и встряхнуть руками. 5 - 8 - то же с махом правой ногой назад. Повторить 4 - 6 раз. Темп средний.

. И.п. - стойка ноги врозь. 1 - 2 - наклон вперед, правая рука скользит вдоль ноги вниз, левая, сгибаясь, вдоль тела вверх.

Приложение Б

Листинг основных программных модулей

Регистрация пользователя:

<?php

//занесение введенных пользователем данных в переменные

if (isset($_POST['login'])){

$login = $_POST['login']; ($login == '')

                   unset($login);} (isset($_POST['password'])){

         $password=$_POST['password'];

         if ($password=='')

                   unset($password);}(isset($_POST['name'])){

         $name=$_POST['name'];

         if ($name =='')

                   unset($name);}(isset($_POST['lastname'])){

         $lastname=$_POST['lastname'];

         if ($lastname =='')

                   unset($lastname);}(isset($_POST['city'])) {

         $city=$_POST['city'];

         if ($city =='')

                   unset($city);}(isset($_POST['email'])){

         $email=$_POST['email'];

         if ($email =='')

                   unset($email);}(isset($_POST['level'])){

         $level=$_POST['level'];

         if ($level =='')

                   unset($level);       }(isset($_POST['code'])){

         $code = $_POST['code'];

         if ($code == '')

                   unset($code);}(empty($login) or empty($password) or empty($name) or empty($lastname) or empty($city) or empty($email) or empty($level) or empty($code)){

         $err_c=1;exit(include("reg_err.php"));}

function generate_code(){//генерация кода для сравнения

$hours=date("H"); $minuts=substr(date("H"),0,1);

$mouns= date("m"); $year_day=date("z");

$str=$hours.$minuts.$mouns.$year_day; $str=md5(md5($str));

$str=strrev($str); $str=substr($str,3,6);

$array_mix=preg_split('//',$str,-1,PREG_SPLIT_NO_EMPTY);

srand ((float)microtime()*1000000); shuffle($array_mix);

return implode("",$array_mix);}chec_code($code){//функция проверки полученного кода

$code=trim($code);

$array_mix=preg_split('//',generate_code(),-1, PREG_SPLIT_NO_EMPTY);$m_code=preg_split('//',$code,-1, PREG_SPLIT_NO_EMPTY);

$result=array_intersect($array_mix,$m_code);

         if(strlen(generate_code())!=strlen($code))

return FALSE;

         if(sizeof($result)==sizeof($array_mix))

                   return TRUE;

         else

                   return FALSE;}(!chec_code($_POST['code'])){//проверка кода

         $err_c=2;    exit(include("reg_err.php"));}

$login=stripslashes($login); $login=htmlspecialchars($login);

$password=stripslashes($password);$password=htmlspecialchars($password);$name=stripslashes($name);$name=htmlspecialchars($name);

$lastname=stripslashes($lastname);$lastname=htmlspecialchars($lastname);$city=stripslashes($city);         $city=htmlspecialchars($city);

$email = stripslashes($email); $email=htmlspecialchars($email);

$login=trim($login);$password=trim($password);$name=trim($name);

$lastname=trim($lastname);$city=trim($city);$email=trim($email);

$avatar="avatars/net-avatara.jpg";

$password=md5($password); //шифование пароля

$password=$password."b3p6f"; include ("bd.php");  //проверка на существование пользователя с таким же логином

$result=mysql_query("SELECT id FROM users WHERE login= '$login'",$db);$myrow = mysql_fetch_array($result);(!empty($myrow['id'])){

         $err_c=5;

         exit(include("reg_err.php"));  }

$result2=mysql_query("INSERT INTO users (login, password, name, lastname,city,email,level,avatar)VALUES('$login','$password','$name','$lastname','$city','$email','$level','$avatar')");

if ($result2=='TRUE'){//сохранение пользователя в базе данных

$result3=mysql_query("SELECT id FROM users WHERE login= '$login'",$db);$myrow3=mysql_fetch_array($result3);

$id=$myrow3['id'];

         if($level==1){

                   $result4=mysql_query("INSERT INTO pupil (id) VALUES ('$id') ");}

         if($level==2){

                   $result4=mysql_query("INSERT INTO teachers (id) VALUES ('$id')");}

         if ($result4=='TRUE')

                   exit(include("reg_complete.php"));//регистрация завершена{

                   mysql_query("DELETE FROM users WHERE login= '$login'",$db);$err_c=6;          exit(include("reg_err.php"));  }

}{

$err_c=6;

         exit(include("reg_err.php"));}

?>

Авторизация:

<?php

         session_start();

         if (isset($_POST['login'])){

                   $login = $_POST['login'];

                   if ($login == '')

                             unset($login);

         }

         if (isset($_POST['password'])){

                   $password=$_POST['password'];

                   if ($password =='')

unset($password);

         }

         if (empty($login) or empty($password)) //если пользователь не ввел логин или пароль, то выдается ошибка и останавливается скрипт

         {

                            header("Location: wrong_user.php");

                   exit ("Вы ввели не всю информацию, вернитесь назад и заполните все поля!");

         }

         $login = stripslashes($login);

         $login = htmlspecialchars($login);

         $password = stripslashes($password);

         $password = htmlspecialchars($password);

         $login = trim($login);

         $password = trim($password);

include ("bd.php");

         $password = md5($password);//шифруем пароль

$password = $password."b3p6f";

         $result = mysql_query("SELECT * FROM users WHERE login='$login' AND password='$password'",$db); //извлекаем из базы все данные о пользователе с введенным логином и паролем

$myrow = mysql_fetch_array($result);

if (empty($myrow['id'])){

         header("Location: wrong_user.php");

                   exit ("Извините, введённый вами логин или пароль неверный.");

         }

else{

                   //если пароли совпадают, то запускается сессия пользователя

$_SESSION['password']=$myrow['password'];

$_SESSION['login']=$myrow['login'];

                   $_SESSION['id']=$myrow['id'];

         }

echo "<html><head><meta http-equiv='Refresh' content='0; URL=index.php'></head></html>";//перенаправление пользователя на главную страницу

?>

Создание новой анкеты:

<?php_start();include ("bd.php");(!empty($_SESSION['login']) and !empty($_SESSION['password']))

{        $login=$_SESSION['login'];$password=$_SESSION['password'];

$result2=mysql_query("SELECT id,level FROM users WHERE login='$login' AND password='$password'",$db);

$myrow2=mysql_fetch_array($result2);

if (empty($myrow2['id']))

         exit();

}();

$id=$_SESSION['id'];$level=$myrow2['level'];($level==2){

         if(isset($_POST['type'])){

                   $type = $_POST['type'];

                   $result=mysql_query("SELECT * FROM blanks WHERE t_id= '$id' AND type='$type'",$db);       $ind=mysql_num_rows($result)+1;

                   if($type==1)//имя анкеты задается по умолчанию

                            $new_name="Анкета для родителей ".$ind;

                   if($type==2)

                            $new_name="Анкета для логопеда ".$ind;

                   //сохранение информации об анкете в базе данных

                   mysql_query("INSERT INTO blanks (bl_name,type,t_id) VALUES('$new_name','$type','$id')");

                   $result3=mysql_query("SELECT MAX(bl_id) as blank FROM blanks WHERE t_id='$id' AND type='$type'",$db);

                   $myrow3 = mysql_fetch_array($result3);

                   $blank=$myrow3['blank'];

                   header("Location: blanks.php?type=".$type."&blank=". $blank);

         }

         else

                   header("Location: blanks.php");

}

         header("Location: page.php?id=".$id);

?>

Добавление полей в анкету:(isset($_POST['where_add']) && isset($_POST['row_cnt']) && isset($_POST['blank'])&& isset($_POST['type'])){

         $blank = $_POST['blank'];$where_add = $_POST['where_add'];

         $row_cnt = $_POST['row_cnt'];      $type = $_POST['type'];

         if($where_add==4)//добавить поля в пустую анкету{

                   for($i=1;$i<=$row_cnt;$i++){

                            mysql_query("INSERT INTO blank_rows (r_index, bl_id) VALUES('$i','$blank')");

                            $result1=mysql_query("SELECT r_id FROM blank_rows WHERE r_index='$i' AND bl_id='$blank'",$db);

                            $myrow1=mysql_fetch_array($result1);

                            $r_id=$myrow1['r_id'];

                            $result=mysql_query("SELECT p_id FROM pupil_blanks_head WHERE bl_id='$blank'",$db);

                            $myrow=mysql_fetch_array($result);

                            if(!empty($myrow)){

                                      do{

                                               $p_id=$myrow['p_id'];

                                               mysql_query("INSERT INTO pupil_blanks (p_id,r_id,bl_id) VALUES('$p_id','$r_id','$blank')");

                                      }

                                      while($myrow=mysql_fetch_array($result));

                            }

                   }

         else    {

                   $result=mysql_query("SELECT MAX(r_index) AS max_index FROM blank_rows WHERE bl_id='$blank'",$db);

                   $myrow=mysql_fetch_array($result);

                   $last_index=$myrow['max_index'];

                   if($where_add==1){//добавить поля в конец анкеты

                            for($i=$last_index+1;$i<$row_cnt+$last_index+1; $i++){

                                      mysql_query("INSERT INTO blank_rows (r_index, bl_id) VALUES ('$i','$blank')");

                                      $result1=mysql_query("SELECT r_id FROM blank_rows WHERE r_index='$i' AND bl_id='$blank'",$db);

                                      $myrow1=mysql_fetch_array($result1);

                                      $r_id=$myrow1['r_id'];

                                      $result=mysql_query("SELECT p_id FROM pupil_blanks_head WHERE bl_id='$blank'",$db);

                                      $myrow=mysql_fetch_array($result);

                                      if(!empty($myrow)){

                                               do{

                                                        $p_id=$myrow['p_id'];

                                               mysql_query("INSERT INTO pupil_blanks (p_id, r_id, bl_id) VALUES('$p_id','$r_id','$blank')");

                                               }

                                               while($myrow= mysql_fetch_array($result) );                                }

                            }       

                   }

                   if($where_add==2){// добавить поля в начало анкеты

                            mysql_query("UPDATE blank_rows SET r_index=r_index+'$row_cnt' WHERE bl_id='$blank'",$db);

                            for($i=1;$i<=$row_cnt;$i++){

                                      mysql_query("INSERT INTO blank_rows (r_index,bl_id) VALUES('$i','$blank')");

                                      $result1=mysql_query("SELECT r_id FROM blank_rows WHERE r_index='$i' AND bl_id='$blank'",$db);

                                      $myrow1=mysql_fetch_array($result1);

                                      $r_id=$myrow1['r_id'];

                                      $result=mysql_query("SELECT p_id FROM pupil_blanks_head WHERE bl_id='$blank'",$db);

                                      $myrow=mysql_fetch_array($result);

                                      if(!empty($myrow)){

                                               do{

                                                        $p_id=$myrow['p_id'];

                                               mysql_query("INSERT INTO pupil_blanks (p_id,r_id,bl_id) VALUES('$p_id','$r_id','$blank')");

                                               }

                                               while($myrow=mysql_fetch_array($result) );

                                      }

                            }       

                   }

                   if($where_add==3 && isset($_POST['after'])){//добавить поля после определенного поля

                            $after=$_POST['after'];

                            mysql_query("UPDATE blank_rows SET r_index=r_index+'$row_cnt' WHERE r_index>'$after' AND bl_id='$blank'",$db);

                            for($i=$after+1;$i<$row_cnt+$after+1;$i++){

                                      mysql_query("INSERT INTO blank_rows (r_index,bl_id) VALUES('$i','$blank')");

                                      $result1=mysql_query("SELECT r_id FROM blank_rows WHERE r_index='$i' AND bl_id='$blank'",$db);

                                      $myrow1=mysql_fetch_array($result1);

                                      $r_id=$myrow1['r_id'];

                                      $result=mysql_query("SELECT p_id FROM pupil_blanks_head WHERE bl_id='$blank'",$db);

                                      $myrow=mysql_fetch_array($result);

                                      if(!empty($myrow)){

                                               do{

                                                        $p_id=$myrow['p_id'];

                                               mysql_query("INSERT INTO pupil_blanks (p_id,r_id,bl_id) VALUES('$p_id','$r_id','$blank')");

                                               }while($myrow=mysql_fetch_array($result) );

                                      }

                            }       

                   }

         }

         header("Location: blanks.php?type=".$type."&blank=".$blank. "&edit_bl=1");

}

         header("Location: blanks.php");

Добавление анкеты на страницу ученика:

<?php_start();("bd.php");(!empty($_SESSION['login']) and !empty($_SESSION['password'])) {         $login=$_SESSION['login']; $password= $_SESSION['password'];

$result2=mysql_query("SELECT id,level,block FROM users WHERE login='$login' AND password='$password'",$db);

$myrow2=mysql_fetch_array($result2);

if(empty($myrow2['id'])

exit();

         if($myrow2['block']==1)

                   exit(include("block.php"));

}

exit();

$id=$_SESSION['id'];$level=$myrow2['level'];($level==2){

         if (isset($_POST['bl_id']) && isset($_POST['p_id']) && isset($_POST['type'])){

                   $bl_id = $_POST['bl_id'];$p_id=$_POST['p_id'];                                  $type=$_POST['type'];$result3=mysql_query("SELECT * FROM pupil_blanks_head WHERE bl_id='$bl_id' AND p_id= '$p_id'",$db);      $myrow3=mysql_fetch_array($result3);

                   if(empty($myrow3)){//сохранение информации одобавленной анкете в базе данных

                            mysql_query("INSERT INTO pupil_blanks_head (p_id, bl_id) VALUES ('$p_id','$bl_id')");$result=mysql_query("SELECT * FROM blank_rows WHERE bl_id='$bl_id'",$db);

                            $myrow=mysql_fetch_array($result);

                            if(!empty($myrow)){

                                      do{//сохранение информации о структуре добавленной анкеты в базе данных

                                               $r_id=$myrow['r_id'];

                                               mysql_query("INSERT INTO pupil_blanks (p_id,bl_id,r_id) VALUES('$p_id','$bl_id','$r_id')");

                                      }while($myrow=mysql_fetch_array($result));

                            }

                            if($type==1){

                                      $date=date("d.m.y");$time=date("H:i");

                                      $res1=mysql_query("SELECT id FROM users WHERE login='logoped1'",$db); $row1=mysql_fetch_array($res1);$sender=$row1['id']; $text = "Учитель добавил новую анкету для родителей на вашу страницу";

                                      mysql_query("INSERT INTO messages (sender, receiver, date, time, text) VALUES ('$sender','$p_id','$date', '$time','$text')",$db);//оповещение ученика о добавлении анкеты

                            }

                   }

                   header("Location: page.php?id=".$p_id."&type=".$type."& blank=".$bl_id);

         }

         else

                   header("Location: page.php?id=".$id);

}

         header("Location: page.php?id=".$id);

?>

Заполнение анкеты на странице ученика($level==1 || $level==2){

         if((isset($_POST['bl_id']) && isset($_POST['r_text']) && $level==1) || (isset($_POST['bl_id']) && isset($_POST['r_text']) && isset($_POST['p_id']) && $level==2))         {

                   $bl_id=$_POST['bl_id'];        $r_text=$_POST['r_text'];

                   $count = count($r_text);

                   if($level==2)

                            $id=$_POST['p_id'];

                   for ($i = 0; $i < $count; $i++){

                            $r_index=$i+1;

                            $result = mysql_query("SELECT r_id FROM blank_rows WHERE r_index='$r_index' AND bl_id='$bl_id'",$db);

                            $myrow = mysql_fetch_array($result);

                            if(!empty($myrow)){

                                      $r_id=$myrow['r_id'];

                                      mysql_query("UPDATE pupil_blanks SET text='$r_text[$i]' WHERE r_id='$r_id' AND p_id='$id' AND bl_id='$bl_id'",$db);

                            }

                   }

                   header("Location: page.php?id=".$id."&type=". $level."&blank=".$bl_id);

}

Добавление записи о времени проведения занятия в расписание:

<?php_start(); include ("bd.php");(!empty($_SESSION['login']) and !empty($_SESSION['password']))

{        $login=$_SESSION['login'];$password=$_SESSION['password'];

$result2=mysql_query("SELECT * FROM users WHERE login= '$login' AND password='$password'",$db);

$myrow2 = mysql_fetch_array($result2);

if (empty($myrow2['id']))//логин или пароль не действителен

         exit();

}{();

}

$id=$_SESSION['id']; $level=$myrow2['level'];($level==2){

         if(isset($_POST['day']) && isset($_POST['h']) && isset ($_POST['m']) && isset($_POST['p_id']))  {

                   $day=$_POST['day'];   $p_id=$_POST['p_id'];

                   $time=sprintf("%02d:%02d",$_POST['h'],$_POST['m']);

                   mysql_query("INSERT INTO timing (day, time, p_id, t_id) VALUES ('$day','$time','$p_id','$id')",$db);//сохранение новой записи расписания в базу данных

                   header("Location: timing.php");

         }

}

?>

Создание нового раздела в материалах:

$id = $_SESSION['id'];$level=$myrow2['level'];($level==2)

{

         $result=mysql_query("SELECT * FROM folders WHERE t_id='$id'",$db);

         $ind=mysql_num_rows($result)+1;

         $new_name="Раздел ".$ind;

//сохранение информации о новом разделе в базе данных

         mysql_query("INSERT INTO folders (f_name,t_id) VALUES('$new_name','$id')");

         $result3=mysql_query("SELECT MAX(f_id) as folder FROM folders WHERE t_id='$id'",$db);

         $myrow3 = mysql_fetch_array($result3);

         $folder=$myrow3['folder'];

         header("Location: docs.php?&folder=".$folder);

}

         header("Location: page.php?id=".$id);

Загрузка файла материала на сайт:

if(isset($_POST['folder']) && isset($_FILES['file']['name']))

{

         if($_FILES['file']['size']<(2*1024*1024) && $_FILES['file']['size'] > 0)//ограничение размера файла

         {

                   $folder=$_POST['folder'];

                   $path_to_directory='docs/';

                   $filename= $_FILES['file']['name'];

                   $source= $_FILES['file']['tmp_name'];

                   $date=time();

                   $target=$path_to_directory.$date.$filename;

                   $date=date("d.m.y");

                   move_uploaded_file($source, $target);//загрузка в папку $path_to_directory

                   mysql_query("INSERT INTO docs (name,path,date,f_id,t_id) VALUES('$filename','$target','$date', '$folder', '$id')");

         }

}

Отправка сообщения:

if (isset($_POST['sender']) && isset($_POST['receiver']) && isset($_POST['text'])){

         $sender=$_POST['sender'];$text=$_POST['text'];

         $receiver=$_POST['receiver'];         $date = date("d.m.y");

         $time=date("H:i");$text = stripslashes($text);

$text=htmlspecialchars($text);$text= trim($text);

         if($level==2){

//извлечение информации о прикрепленных к новому сообщению материалах

                   $result3=mysql_query("SELECT new_attach_docs.d_id, new_attach_docs.mes_id from new_attach_docs, new_messages WHERE new_attach_docs.mes_id=new_messages.id AND new_messages.sender= '$sender' AND new_messages.receiver='$receiver'",$db);

                   $myrow3=mysql_fetch_array($result3);

                   if(!empty($myrow3)){

                            mysql_query("INSERT INTO messages (sender, receiver, date, time, text) VALUES ('$sender','$receiver', '$date','$time','$text')",$db);//заносим в базу сообщение

                            $result2=mysql_query("SELECT MAX(id) AS id from messages WHERE sender='$sender' AND receiver='$receiver'",$db);

                            $myrow2=mysql_fetch_array($result2);

                            $mes_id=$myrow2['id'];

                            do{

                                      $d_id=$myrow3['d_id'];

                                      mysql_query("INSERT INTO attach_docs (d_id,mes_id) VALUES ('$d_id','$mes_id')",$db);//заносим в базу прикрепленные материалы к сообщению

                            }

                            while($myrow3=mysql_fetch_array($result3));

                   }

                   else{

                            if($text!='')

                                      mysql_query("INSERT INTO messages (sender, receiver, date, time, text) VALUES ('$sender','$receiver', '$date','$time','$text')",$db);//заносим в базу сообщение

                   }       

                   $result4=mysql_query("SELECT new_attach_docs.d_id, new_attach_docs.mes_id from new_attach_docs, new_messages WHERE new_attach_docs.mes_id=new_messages.id AND new_messages.sender= '$sender' AND new_messages.receiver='$receiver'",$db);

                   $myrow4=mysql_fetch_array($result4);

                   if(!empty($myrow4)){

                            $del_mes_id=$myrow4['mes_id'];

                            mysql_query("DELETE FROM new_attach_docs WHERE mes_id='$del_mes_id' ",$db);

                            mysql_query("DELETE FROM new_messages WHERE id='$del_mes_id'",$db);

                   }

         }

         else{

                   if($text!='')

                            mysql_query("INSERT INTO messages (sender, receiver, date, time, text) VALUES ('$sender','$receiver', '$date','$time','$text')",$db);//заносим в базу сообщение

         }       

         header("Location: messages.php?show=".$receiver);

}

Скачивание файла на компьютер пользователя:

if(isset($_POST['download']))

{

         $path=$myrow['path'];

         $name=$myrow['name'];

         header("Content-Length: ".(string)(filesize($path)));

         header("Content-Disposition: attachment; filename=".$name);

         header("Content-Type: application/x-force-download; name=\"".$name."\"");

         readfile($path);

}

Похожие работы на - Разработка динамического сайта для логопедических занятий

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!