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

Тип работы:
Дипломная
Предмет:
Программирование


Узнать стоимость

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

Выдержка из работы

СОДЕРЖАНИЕ

  • ВВЕДЕНИЕ
  • 1. РАЗРАБОТКА СИСТЕМЫ ФОРМИРОВАНИЯ ЧАСОВ УЧЕБНОЙ НАГРУЗКИ
    • 1. 1Обзор программных продуктов
    • 1. 2Перечень требований к системе
    • 1.3 Диаграмма бизнес-процессов
    • 1.4 Диаграмма вариантов использования
    • 1.5 Сценарии вариантов использования
    • 1.6 Проверка модели на полноту и непротиворечивость
    • 1. 7 Разработка архитектуры системы
    • 1. 8 Реализация системы
    • 1. 9 Тест информационной системы
  • ЗАКЛЮЧЕНИЕ
  • СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
  • Приложение 1 Текст компонентов программы

ВВЕДЕНИЕ

Проблема исследования

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

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

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

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

Объект исследования

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

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

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

Цели исследования

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

Задачи исследования

Задачи исследования приведены ниже:

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

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

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

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

1. РАЗРАБОТКА СИСТЕМЫ ФОРМИРОВАНИЯ ЧАСОВ УЧЕБНОЙ НАГРУЗКИ

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

При постановке задачи на разработку программного средства рассматривались следующие альтернативы:

Программная платформа. Были рассмотрены ОС Windows и Linux. В данный момент ОС семейства Windows на рабочих станциях распространены гораздо шире, чем какие-либо другие ОС. Однако во внимание был принят тот факт, что все большую популярность приобретают ОС семейства Linux. В связи с этим было принято решение разработать программу, переносимую с одной платформы на другую. Такой выбор заставил использовать в качестве языка программирования скриптовый язык PHP (Hypertext Preprocessor). Программы на этом языке переносимы между практически всеми ОС, для которых установлен веб-сервер и интерпретатор PHP.

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

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

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

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

Также рассматривались системы менее известных компаний такие как, «NAUMEN», и различные электронные системы «Деканат», разработанные на базе отдельно взятых университетов.

1. 2 Перечень требований к системе

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

Основные задачи кафедры решаемые при достижение данной цели является:

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

2) активное привлечение студентов к работе в профильных компаниях и в исследовательских проектах кафедры, организация курсового и дипломного проектирования на рабочих местах;

3) постоянное обновление компьютерной техники в учебных аудиториях кафедры;

4) обновление учебно-методических материалов;

5) развитие и совершенствование стажировок студентов кафедры.

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

Основные требования заказчика заключались в следующем:

1. Программный продукт должен выполнять следующие функции:

a) обработка личных данных (логин, пароль), введенных администратором,

b) поддержка постоянного соединения с базой данных,

c) вывод запрашиваемой информации в удобной для пользователя форме,

d) верификацию действий администратора системы, направленных на изменение информации,

e) обновление данных содержащихся в базе данных,

f) вывод запрошенной информации авторизованным пользователям.

2. Входными данными для программы будут являться данные html-форм, введенные пользователями, унифицированные идентификаторы ресурсов (URI).

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

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

5. Разработка программной документации и программного продукта должна производиться согласно ГОСТ 19. 701−90, ГОСТ 2. 304−88. Стандарты языка XHTML определяются рекомендациями консорциума W3C.

Глоссарий:

1. Учебная нагрузка — рассчитанное количество часов в год на одного преподавателя.

2. Пользователь — лицо или организация, которое использует действующую систему для выполнения конкретной функции.

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

4. Заведующей кафедрой — руководитель кафедры в высших учебных заведениях.

5. Учебное поручение — отчет о выполнение учебной нагрузки преподавателя.

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

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

8. Специальность — комплекс приобретённых путём специальной подготовки и опыта работы знаний, умений и навыков, необходимых для определённого вида деятельности в рамках той или иной профессии.

1. 3 Диаграмма бизнес-процессов

В начале работы система получает входные данные. Затем следует идентификация данных (данные url-запроса, данные html-форм). Если был запрошен url — идет проверка корректности URL. Если проверка прошла успешно — формирование запроса с БД, затем обработка полученных данных и подготовка их к выводу для пользователя.

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

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

Рисунок 1

1. 4 Диаграмма вариантов использования

С системой могут работать 2 вида лиц:

· пользователь (преподаватель);

· привилегированный пользователь (заведующий кафедрой).

Для пользователя системы (преподавателя) имеются следующие варианты использования:

— аутентификация в системе,

— просматривать объекты статичного содержимого, представленные сформированными html-страницами с содержимым, выбранным из базы данных.

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

— добавлять нового пользователя;

— удалять существующего пользователя;

— редактировать существующего пользователя;

— добавлять нагрузку преподавателю;

— просматривать нагрузку по кафедре;

— добавлять новую кафедру;

— редактировать информацию о кафедре;

— добавлять информацию о новой дисциплине;

— редактировать информацию о существующей дисциплине;

— добавлять информацию о новой специальности;

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

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

Рисунок 2.

1. 5 Сценарии вариантов использования

Основным вариантом использования является:

· Формирование учебного поручения для преподавателя.

Актеры:

· Зав. Кафедрой;

· Преподаватель.

Цель: получение преподавателем учебного поручения.

Краткое описание: Зав. Кафедрой в соответствии со штатным расписанием выдает учебное поручение преподавателю.

Действия актеров приведены в таблице 2.1. Исключения приведены в таблицах 2. 2, 2,4. Альтернативные потоки приведены в таблицах 2. 3, 2.5.

Таблица 2. 1-Действия актеров

Действия актеров

Отклик системы

1. Зав. Кафедрой авторизуется в системе.

2. Система проверяет имя пользователя и пароль.

3. Система отображает опции меню.

Исключение № 1: недействительно имя пользователя и пароль.

4. Зав. Кафедрой выбирает «Добавить нагрузку преподавателю».

5. Система выдает список преподавателей, имеющихся в базе данных.

6. Зав. Кафедрой выбирает преподавателя, которому хочет добавить нагрузку.

7. Система выдает текущую нагрузку, имеющуюся у преподавателя.

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

9. Система добавляет выбранный предмет к учебной нагрузке преподавателя.

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

11. Зав. Кафедрой выходит из системы.

12. Система отображает окно приветствия и просит ввести имя пользователя и пароль.

13. Преподаватель авторизуется в системе.

14. Система проверяет имя пользователя и пароль.

15. Система выводит карточку учебного поручения.

16. Преподаватель выходит из системы.

17. Система отображает окно приветствия и просит ввести имя пользователя и пароль.

Таблица 2. 2-Исключение № 1. Недействительно имя пользователя и пароль

Действия актеров

Отклик системы

Система отображает информацию о неверно введенном имени и пароле

Зав. Кафедрой вводит новое имя пользователя и пароль

Таблица 2. 3-Альтернативный поток события № 1

Действия актеров

Отклик системы

1

2

1. Зав. Кафедрой авторизуется в системе.

2. Система проверяет имя пользователя и пароль.

3. Система отображает опции меню.

4. Зав. Кафедрой выбирает «Добавить нагрузку преподавателю».

5. Система выдает список преподавателей, имеющихся в базе данных.

6. Зав. Кафедрой не находит нужного преподавателя в списке.

7. Зав. Кафедрой выходит в основное меню.

8. Система отображает опции меню.

9. Зав. Кафедрой выбирает меню «добавить нового пользователя».

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

Исключение № 2 Пользователь с таким именем уже существует.

11. Зав. Кафедрой подтверждает введенные данные.

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

13. Зав. Кафедрой подтверждает введенные данные.

14. Система добавляет введенные личные данные о преподавателей.

15. Зав. Кафедрой выходит в основное меню.

16. Система отображает опции меню.

17. Зав. Кафедрой выбирает «Добавить нагрузку преподавателю».

18. Система выдает список преподавателей, имеющихся в базе данных.

19. Зав. Кафедрой выбирает преподавателя, которому хочет добавить нагрузку.

20. Система выдает текущую нагрузку, имеющуюся у преподавателя.

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

22. Система добавляет выбранный предмет к учебной нагрузке преподавателя.

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

1

2

24. Зав. Кафедрой выходит из системы.

25. Система отображает окно приветствия и просит ввести имя пользователя и пароль.

26. Преподаватель авторизуется в системе.

27. Система проверяет имя пользователя и пароль.

28. Система выводит карточку учебного поручения.

29. Преподаватель выходит из системы.

30. Система отображает окно приветствия и просит ввести имя пользователя и пароль.

Таблица 2. 4-Исключение № 2. Пользователь с таким именем уже существует

Действия актеров

Отклик системы

Система отображает информацию о том, что пользователь с таким именем уже существует.

Зав. Кафедрой вводит новое имя пользователя.

автоматизация кафедра информационный учебный нагрузка

Таблица 2. 5-Альтернативный поток события № 2

Действия актеров

Отклик системы

1

2

1. Зав. Кафедрой авторизуется в системе.

2. Система проверяет имя пользователя и пароль.

3. Система отображает опции меню.

4. Зав. Кафедрой выбирает «Добавить нагрузку преподавателю».

5. Система выдает список преподавателей, имеющихся в базе данных.

6. Зав. Кафедрой выбирает преподавателя, которому хочет добавить нагрузку.

7. Система выдает текущую нагрузку, имеющуюся у преподавателя.

8. Зав. Кафедрой не находит нужный предмет в списке предметов.9. Зав. Кафедрой выходит в основное меню.

10. Система отображает опции меню.

11. Зав. Кафедрой выбирает «Добавить новую дисциплину».

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

13. Зав. Кафедрой подтверждает введенные данные.

14. Система добавляет новую дисциплину.

15. Зав. Кафедрой выходит в основное меню.

16. Система отображает опции меню.

17. Зав. Кафедрой выбирает «Добавить нагрузку преподавателю».

18. Система выдает список преподавателей, имеющихся в базе данных.

19. Зав. Кафедрой выбирает преподавателя, которому хочет добавить нагрузку.

20. Система выдает текущую нагрузку, имеющуюся у преподавателя.

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

22. Система добавляет выбранный предмет к учебной нагрузке преподавателя.

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

24. Зав. Кафедрой выходит из системы.

25. Система отображает окно приветствия и просит ввести имя пользователя и пароль.

26. Преподаватель авторизуется в системе.

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

Окончание таблицы 2. 5

1

2

29. Преподаватель выходит из системы.

30. Система отображает окно приветствия и просит ввести имя пользователя и пароль.

1. 6 Проверка модели на полноту и непротиворечивость

Система работает со следующими объектами:

1) пользователь,

2) дисциплина,

3) специальность.

Из вышеизложенного можно увидеть что все объекты используются и с ними производятся действия:

· создание,

· поддержание,

· удаление.

1. 7 Разработка архитектуры системы

Соглашения по моделированию разработанной системы может быть представлена в виде иерархии пакетов и диаграмм Trace-abilities приведенных в таблицах 2.6 — 2. 11.

Таблица 2. 6-Объекты модели организационной структуры верхнего уровня

Тип объекта

Символ объекта

Цвет

Описание / комментарий

Organizational unit (Организа-ционная единица)

Желтый

Объект соответствует подразделению

Position (Должность)

Желтый

Объект соответствует должности.

Таблица 2. 7-Описание процессов

Тип объекта

Символ объекта

Цвет

Описание / комментарий

Function (Функция)

Зеленый

Объект соответствует процессу верхнего уровня

Таблица 2. 8-Объекты модели группы процессов

Тип объекта

Символ объекта

Цвет

Описание / комментарий

Function (Функция)

Зеленый

Объект соответствует группе процесса

Таблица 2. 9-Объекты модели сценариев процесса

Тип объекта

Символ объекта

Цвет

Описание / комментарий

Function (Функция)

Зеленый

Объект описывает сценарий выполнения процесса

Main process (Главный процесс)

Желтый

Объект описывает типизированную процедуру

Таблица 2. 10-Объекты модели сценария процесса

Тип объекта

Символ объекта

Цвет

Описание / комментарий

Function (Функция)

Зеленый

Объект соответствует процедуре

Event (Событие)

Фиоле-товый

Объект, описывающий событие

Таблица 2. 11-Объекты модели процедуры

Тип объекта

Символ объекта

Цвет

Описание / комментарий

Function (Функция)

Зеленый

Объект соответствует процедуре

Event (Событие)

Фиоле-товый

Объект, описывающий событие

Event (Событие)

Желтый

Объект соответствует событиям, являющимся началом и окончанием цикла

Information

Carrier (Носитель информации)

Белый

Объект соответствует документу на бумажном носителе

Диаграмма классов описывает типы объектов системы и различного рода статические отношения, которые существуют между ними. Исходя из идеологии MVC (Model- View- Controller — модель-вид-контроллер) проектирования, систему можно разбить на два вида классов — классы, относящиеся к модели и классы, относящиеся к контроллеру. Построение классов, относящихся к отображению, не требуется, так как отображение — не использует логику приложения.

Базовым классом, используемым в классах контроллеров, является класс Controller. Далее он наследуется классом AppController. Эти два класса встроены в механизм логики Фреймворка CakePHP и в большинстве случаев не требуют существенных изменений. Как правило, изменения необходимы, если появляется задача, решаемая в большинстве пользовательских классах, наследниках AppController. Все остальные классы — UserController, являются наследниками встроенного класса AppController. При необходимости переопределения каких-либо свойств или методов базового класса Controller следует производить в классе AppController, чтобы избежать возможных ошибок, связанных с работой базовых функций Фреймворка.

Далее в иерархии идут предопределенные класс AppModel Фреймворка CakePHP. Все пользовательские классы модели — User, Subject, Chair, Spec, Semester, Plan наследуются от AppModel, поэтому как и в случае с классами котроллера вносить какие-либо изменения нужно именно в класс AppModel. В терминологии CakePHP моделями являются таблицы базы данных. Название класса модели должно совпадать с названием таблицы.

Диаграмма классов системы приведена на рисунке 2.3.

Рисунок 2. 3

Основными компонентами диаграмм потоков данных являются:

· внешние сущности,

· системы и подсистемы,

· процессы,

· накопители данных,

· потоки данных.

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

Диаграмма пакетов подсистем приведена на рисунке 2.4.

Рисунок 2. 4

Диаграмма деятельности — диаграмма, на которой показано разложение некоторой деятельности на её составные части. Основным элементом диаграммы является деятельность, положение этого термина зависит от той точки зрения, с которой строится диаграмма.

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

Рисунок 2. 5

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

Полный проект программной системы представляет собой совокупность моделей логического и физического уровней, которые должны быть согласованы между собой. Проектируемая система может быть разделена на три пользовательских компонента — Модель (Model), Вид или Отображение (View) и Котроллер (Controller). Основным компонентом является пакет, содержащий встроенные библиотеки Фреймворка CakePHP.

Диаграмма компонентов системы приведена на рисунке 2.6.

Рисунок 2. 6

Внешний вид формы принимает данные от заведующего кафедрой в виде адресов URL и передает их на обработку контроллеру User_Controller. Контроллер по заданным параметрам формирует sql-запрос к базе данных на выбор конкретного объекта статичного содержимого Content, заданного идентификатором. После успешного выполнения запроса, контроллером формируется список полей с данными, которые передаются в отображение, т. е. на саму форму.

Внешний вид формы представлен на рисунке 2.7.

Рисунок 2. 7

Цифрами обозначены: 1 — строка адреса браузера. Данные URL являются для этой формы входными данными; 2 основное меню, которое позволяет пользователю перемещаться по объектам статичного содержимого, содержащегося в базе дынных; 3 — панель входа в систему управлением ресурса для привилегированного пользователя; 4 — дополнительное информационное поле.

На рисунке 2.8 представлена форма преподавателя.

Рисунок 2. 8

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

1. 9 Тест информационной системы

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

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

— тестирование операций выборки данных;

— тестирование операций внесения данных в БД или изменения уже наличествующих данных (используя программный каркас CakePHP, эти операции можно объединить в одну);

— тестирование операций удаления данных.

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

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

Тестирование операции выборки данных:

1. На рисунке 2.9 изображен результат входа в систему заведующего кафедрой, после которого ему предоставляется возможность выполнить одно из предложенных действий, выведенный пользователю отображением View.

Рисунок 2. 9

2. Выбрав вариант «просмотреть нагрузку по кафедре», система выдает список имеющихся в базе данных кафедр. Результат можно увидеть на рисунке 2. 10.

Рисунок 2. 10

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

Рисунок 2. 11

Тестирование операций внесения данных в БД или изменения наличествующих:

1. Данный тест показывает правильную работу функций добавления нового преподавателя в систему. Вначале заведующий кафедрой должен задать имя пользователя и пароль по которым преподаватель будет аутентифицироваться в системе. А также определить будет ли данный пользователь являться администратором системы. Имя пользователя и пароль должны отвечать условиям уникальности. Если данное условие не соблюдается транзакция не пройдет. Пример представлен на рисунке2. 12.

Рисунок 2. 12

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

Рисунок 2. 13

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

Рисунок 2. 14

Тестирование операции удаления данных:

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

На рисунке 2. 15 изображена форма удаления данных преподавателя из системы.

Рисунок 2. 15

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

Рисунок 2. 16

В результате тестирования не было выявлено никаких ошибок системы.

Данный программный продукт предназначен для формирования учебной нагрузки преподавателя.

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

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

— обработка личных данных (логин, пароль), введенных пользователем;

— поддержка постоянного соединения с базой данных;

— вывод запрашиваемой информации в удобной для пользователя форме;

— верификацию действий администратора системы, направленных на изменение информации;

— обновление данных, содержащихся в базе данных;

— формирование отчета нагрузки по преподавателю;

— формирование отчета нагрузки по кафедры.

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

Администратор системы имеет возможность создавать новые информационные объекты. Предусмотрена функция создания нового информационного объекта.

Все информационные объекты имеют уникальный URI (Uniform Resource Identifier) — унифицированный идентификатор ресурса, то есть свое собственное уникальное имя. Программа имеет возможность присваивать каждому информационному объекту уникальный URI.

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

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

Заключение

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

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

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

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

1. Аргерих, Л. Профессиональное PHP программирование, 2-е издание. — Пер. с англ. [Текст]. // Аргерих Л. — СПб: Символ-Плюс, 2004. — 1048 с., ил.

2. Мазуркевич, А. PHP: настольная книга программиста. [Текст]. // Мазуркевич А. — Мн.: Новое знание, 2005. — 480 с., ил.

3. CakePHP Bakery [Электронный ресурс]. -- Режим доступа: URL: http: //cakephp. org/bakery)

4. Группы Google, посвященные CakePHP [Электронный ресурс]. -- Режим доступа: URL: http: //groups. google. com/cakephp)

5. MVC для начинающих и для Интернета в частности [Электронный ресурс]. -- Режим доступа: URL: http: //www. chtivo. webhost. ru/articles/mvc)

6. Хадсон, П. PHP. Справочник [Текст]. // Хадсон П. — М.: КУДИЦ-ПРЕСС, 2006. — 448 с.

7. Гутманс, Э. PHP 5. Профессиональное программирование [Текст]. // Гутманс Э. — Пер. с англ. — СПб: Символ-Плюс, 2006. — 704 с., ил.

8. Скляр, Д. PHP. Сборник рецептов [Текст]. // Скляр Д. — Пер с англ. — СПб: Символ-Плюс, 2006. — 672 с., ил.

9. Мейер, Э. CSS — каскадные таблицы стилей. Побробное руководство, 2-е издание [Текст]. // Мейер Э. — Пер. с англ. — СПб: Символ-Плюс, 2006. — 576 с., ил.

10. Флэнаган, Д. JavaScript. Подробное руководство [Текст]. // Флэнаган Д. — Пер с англ. — СПб: Символ Плюс, 2008. — 992 с., ил.

Приложение 1

Текст компонентов программы

User_controller. php

< ?php

class UsersController extends AppController

{

var $name = 'User';

var $uses = array ('User', 'Teacher', 'Chair', 'Subject', 'Semester', 'Spec', 'Plan');

function index (){

$this-> pageTitle = «Вход в систему»;

if (!empty ($this-> data)) {

$user = $this-> User->findAll («login='». $this->data['User']['login']. «' and psw='». $this->data['User']['psw']. «'»);

if (count ($user > 0)) {

$this-> Session->Write («user», $user[0]['User']['login']);

if ($user[0]['User']['status'] == 0) {

$this-> Session->Write («admin», 1);

$this-> redirect (array ('controller'=>'users','action' => 'admin_actions'));

}

else {

$this-> Session->Write («admin», 0);

$this-> redirect (array ('controller'=>'users','action' => 'user_plan'));

}

}

else {

$this-> set('error', «Неверное имя пользователя или пароль»);

}

}

}

//***************************************

// вывод учебного плана для преподавателя

//***************************************

function user_plan () {

if ($this-> Session->Read ('user') == '') {

return false;

}

else {

$login = $this-> Session->Read ('user');

$user = $this-> User->findAll («login='». $login. «'»);

if ($user[0]['User']['status'] == 1) {

$this-> pageTitle = «Учебная карточка преподавателя»;

$teacher = $this-> Teacher->findAll ('user_id='. $user[0]['User']['id']);

$this-> set ('teacher', $teacher);

$plans = $this-> Plan->findAll ('teacher_id='. $teacher[0]['Teacher']['id'].' order by semester_id');

$data = array ();

$i = 0;

foreach ($plans as $plan) {

$data[$i]['id'] = $plan['Plan']['id'];

$data[$i]['students'] = $plan['Plan']['students'];

$data[$i]['groups'] = $plan['Plan']['groups'];

$this-> Subject->id = $plan['Plan']['subject_id'];

$subject = $this-> Subject->read ();

$data[$i]['subject'] = $subject['Subject']['name'];

$data[$i]['subject_all'] = $subject['Subject'];

$this-> Spec->id = $plan['Plan']['spec_id'];

$spec = $this-> Spec->read ();

$data[$i]['spec'] = $spec['Spec']['name'];

$this-> Semester->id = $plan['Plan']['semester_id'];

$semester = $this-> Semester->read ();

$data[$i]['semester'] = $semester['Semester']['name'];

$i ++;

}

$this-> set ('data', $data);

}

}

}

//*********************************

// выбор действия администратором

//*********************************

function admin_actions() {

if (!$this-> is_admin ()) {

$this-> redirect (array ('controller'=>'users','action' => 'index'));

}

else {

$this-> pageTitle = «Выбор действия для администратора»;

}

}

//*****************************

// вывод нагрузки по кафедре

//******************************

function plan_chair ($id_chair) {

if (!$this-> is_admin ()) {

$this-> redirect (array ('controller'=>'users','action' => 'index'));

}

else {

if (!empty ($id_chair)) {

$this-> pageTitle = «Просмотр нагрузки»;

$this-> Chair->id = $id_chair;

$chair = $this-> Chair->read ();

$this-> set ('chair', $chair['Chair']['name']);

$teachers = $this-> Teacher->findAll ('chair_id='. $id_chair);

$data = array ();

$i = 0;

foreach ($teachers as $teacher) {

$plans = $this-> Plan->findAll ('teacher_id='. $teacher['Teacher']['id'].' order by semester_id');

$data[$i]['teacher'] = $teacher;

$j = 0;

foreach ($plans as $plan) {

$data[$i]['plan'][$j]['id'] = $plan['Plan']['id'];

$data[$i]['plan'][$j]['students'] = $plan['Plan']['students'];

$data[$i]['plan'][$j]['groups'] = $plan['Plan']['groups'];

$this-> Subject->id = $plan['Plan']['subject_id'];

$subject = $this-> Subject->read ();

$data[$i]['plan'][$j]['subject'] = $subject['Subject']['name'];

$data[$i]['plan'][$j]['subject_all'] = $subject['Subject'];

$this-> Spec->id = $plan['Plan']['spec_id'];

$spec = $this-> Spec->read ();

$data[$i]['plan'][$j]['spec'] = $spec['Spec']['name'];

$this-> Semester->id = $plan['Plan']['semester_id'];

$semester = $this-> Semester->read ();

$data[$i]['plan'][$j]['semester'] = $semester['Semester']['name'];

$j ++;

}

$i ++;

}

$this-> set ('data', $data);

}

}

}

//*********************************

// выбор кафедры для просмотра нагрузки

//*********************************

function select_chair_plan () {

if (!$this-> is_admin ()) {

$this-> redirect (array ('controller'=>'users','action' => 'index'));

}

else {

$this-> pageTitle = «Выбор кафедры для просмотра нагрузки»;

$chairs = $this-> Chair->findAll («order by name»);

$this-> set('chairs', $chairs);

}

}

//*********************************************

// выбор преподавателя для добавления нагрузки

//*********************************************

function select_teacher_plan () {

if (!$this-> is_admin ()) {

$this-> redirect (array ('controller'=>'users','action' => 'index'));

}

else {

$this-> pageTitle = «Выбор преподавателя»;

$teachers = $this-> Teacher->findAll ('order by last_name');

$this-> set('teachers', $teachers);

}

}

//*************************************

// удаление из нагрузки преподавателя

//*************************************

function del_plan ($id_plan = null, $teacher_id = null) {

if (!$this-> is_admin ()) {

$this-> redirect (array ('controller'=>'users','action' => 'index'));

}

else {

if ((!empty ($id_plan)) & & (!empty ($teacher_id))) {

$this-> Plan->id = $id_plan;

$this-> Plan->del ();

$this-> redirect (array ('controller'=>'users','action' => 'plan', $teacher_id));

}

}

}

//****************************************

// добавление нагрузки преподавателю

//****************************************

function plan ($id = null) {

if (!$this-> is_admin ()) {

$this-> redirect (array ('controller'=>'users','action' => 'index'));

}

else {

if (!empty ($id)) {

$this-> pageTitle = «Учебная карточка преподавателя»;

if (!empty ($this-> data)) {

$ok = true;

if ((empty ($this-> data['Plan']['groups'])) || (empty ($this-> data['Plan']['students']))) {

$this-> set('error', «Количество групп и студентов должно быть заполнено»);

$ok = false;

}

if ($ok) {

$data = array ('Plan'=> array ('teacher_id'=>$id, 'subject_id'=> $this->data['Subject']['name'], 'spec_id'=> $this->data['Spec']['name'], 'students'=> $this->data['Plan']['students'], 'groups'=> $this->data['Plan']['groups'], 'semester_id'=> $this->data['Semester']['name']));

$this-> Plan->save ($data);

$this-> data['Plan']['groups'] = '';

$this-> data['Plan']['students'] = '';

}

}

$this-> Teacher->id = $id;

$teacher = $this-> Teacher->read ();

$this-> set ('teacher', $teacher);

$plans = $this-> Plan->findAll ('teacher_id='. $id.' order by semester_id');

$data = array ();

$i = 0;

foreach ($plans as $plan) {

$data[$i]['id'] = $plan['Plan']['id'];

$data[$i]['students'] = $plan['Plan']['students'];

$data[$i]['groups'] = $plan['Plan']['groups'];

$this-> Subject->id = $plan['Plan']['subject_id'];

$subject = $this-> Subject->read ();

$data[$i]['subject'] = $subject['Subject']['name'];

$data[$i]['subject_all'] = $subject['Subject'];

$this-> Spec->id = $plan['Plan']['spec_id'];

$spec = $this-> Spec->read ();

$data[$i]['spec'] = $spec['Spec']['name'];

$this-> Semester->id = $plan['Plan']['semester_id'];

$semester = $this-> Semester->read ();

$data[$i]['semester'] = $semester['Semester']['name'];

$i ++;

}

$this-> set ('data', $data);

$semesters = $this-> Semester->findAll ();

$this-> set ('semesters', $semesters);

$subjects = $this-> Subject->findAll ('where id not in (select plans. subject_id from plans) order by name');

$this-> set ('subjects', $subjects);

$specs = $this-> Spec->findAll ('order by name');

$this-> set('specs', $specs);

}

}

}

//****************************

// добавление специальности

//****************************

function add_spec () {

if (!$this-> is_admin ()) {

$this-> redirect (array ('controller'=>'users','action' => 'index'));

}

else {

$this-> pageTitle = «Добавление специальности»;

if (!empty ($this-> data)) {

if (empty ($this-> data['Spec']['name'])) {

$this-> set('error', 'Название специальности не введено');

}

else {

$this-> Spec->save ($this->data);

$this-> set('error', 'Специальность успешно добавлена');

$this-> data['Spec']['name'] = ««;

}

}

$specs = $this-> Spec->findAll ('order by name');

$this-> setspecs», $specs);

}

}

//*************************************

// выбор специальности для редактирования

//*************************************

function select_spec () {

if (!$this-> is_admin ()) {

$this-> redirect (array ('controller'=>'users','action' => 'index'));

}

else {

$this-> pageTitle = «Выбор специальности для редактирования»;

$specs = $this-> Spec->findAll ('order by name');

$this-> set('specs', $specs);

}

}

//************************************

// редактирование специальности

//************************************

function edit_spec ($id = null) {

if (!$this-> is_admin ()) {

$this-> redirect (array ('controller'=>'users','action' => 'index'));

}

else {

if (!empty ($id)) {

if (!empty ($this-> data)) {

if (empty ($this-> data['Spec']['name'])) {

$this-> set('error', 'Название специальности не введено');

}

else {

$this-> Spec->id = $id;

$this-> Spec->save ($this->data);

$this-> set('error', 'Специальность успешно отредактирована');

$this-> data['Spec']['name'] = ««;

}

}

$this-> pageTitle = «Редактирование специальности»;

$this-> Spec->id = $id;

$spec = $this-> Spec->read ();

$this-> setspec», $spec);

}

}

}

//********************************

// добавление предмета

//********************************

function add_subject () {

if (!$this-> is_admin ()) {

$this-> redirect (array ('controller'=>'users','action' => 'index'));

}

else {

$this-> pageTitle = «Добавление нового предмета»;

if (!empty ($this-> data)) {

if (empty ($this-> data['Subject']['name'])) {

$this-> set('error', 'Название дисциплины не введено');

}

else {

$this-> data['Subject']['semester_id'] = $this-> data['Semester']['name'];

$this-> Subject->save ($this->data);

$this-> set('error', 'Дисциплина успешно добавлена');

$this-> data['Subject']['name'] = ««;

}

}

$subjects = $this-> Subject->findAll ('order by name');

$this-> set ('subjects', $subjects);

$semesters = $this-> Semester->findAll ();

$this-> set ('semesters', $semesters);

}

}

//*********************************

// выбор дисциплины для редактирования

//*********************************

function select_subject () {

if (!$this-> is_admin ()) {

$this-> redirect (array ('controller'=>'users','action' => 'index'));

}

else {

$this-> pageTitle = «Выбор дисциплины для редактирования»;

$subjects = $this-> Subject->findAll ('order by name');

$this-> set ('subjects', $subjects);

}

}

//*************************************

// редактирование дисциплины

//*************************************

function edit_subject ($id = null) {

if (!$this-> is_admin ()) {

$this-> redirect (array ('controller'=>'users','action' => 'index'));

}

else {

if (!empty ($id)) {

if (!empty ($this-> data)) {

if (empty ($this-> data['Subject']['name'])) {

$this-> set('error', 'Название дисциплины не введено');

}

else {

$this-> data['Subject']['semester_id'] = $this-> data['Semester']['name'];

$this-> Subject->id = $id;

$this-> Subject->save ($this->data);

$this-> set('error', 'Дисциплина успешно изменена');

$this-> data['Subject']['name'] = ««;

}

}

$this-> Subject->id = $id;

$subject = $this-> Subject->read ();

$this-> set ('subject', $subject);

$this-> pageTitle = «Редактирование дисциплины»;

$semesters = $this-> Semester->findAll ();

$this-> set ('semesters', $semesters);

$this-> Semester->id = $subject['Subject']['semester_id'];

$semester = $this-> Semester->read ();

$this-> set ('semester', $semester['Semester']['name']);

}

}

}

//**********************************

// добавление кафедры

//**********************************

function add_chair () {

if (!$this-> is_admin ()) {

$this-> redirect (array ('controller'=>'users','action' => 'index'));

}

else {

if (!empty ($this-> data)) {

if (empty ($this-> data['Chair']['name'])) {

$this-> set('error', «Введите название кафедры»);

}

else {

$this-> Chair->save ($this->data);

$this-> set ('error', «Кафедра „. $this->data['Chair']['name'].“ успешно добавлена»);

$this-> data['Chair']['name'] = ««;

}

}

$this-> pageTitle = «Добавление новой кафедры»;

$chairs = $this-> Chair->findAll ('order by name');

$this-> set('chairs', $chairs);

}

}

//****************************************

// выбор кафедры для изменения названия

//****************************************

function select_chair () {

if (!$this-> is_admin ()) {

$this-> redirect (array ('controller'=>'users','action' => 'index'));

}

else {

$this-> pageTitle = «Выбор кафедры для редактирования»;

$chairs = $this-> Chair->findAll («order by name»);

$this-> set ('chairs', $chairs);

}

}

//*********************************

// редактирование кафедры

//*********************************

function change_chair ($id = null) {

if (!$this-> is_admin ()) {

$this-> redirect (array ('controller'=>'users','action' => 'index'));

}

else {

if (!empty ($id)) {

if (!empty ($this-> data)) {

$this-> Chair->id = $id;

$data = array («Chair"=> array ('name'=>$this->data['Chair']['name']));

$this-> Chair->save ($data);

$this-> set('error', «Название успешно изменено»);

}

$this-> Chair->id = $id;

$chair = $this-> Chair->read ();

$this-> setchair», $chair);

}

}

}

//****************************************

// добавление новго пользователя администратором

//****************************************

function add_user () {

if (!$this-> is_admin ()) {

$this-> redirect (array ('controller'=>'users','action' => 'index'));

}

else {

$this-> pageTitle = «Добавление нового пользователя»;

if (!empty ($this-> data)) {

if (empty ($this-> data['User']['login'])) {

$this-> set('error', «Не введен Логин пользователя»);

return;

}

if (empty ($this-> data['User']['psw'])) {

$this-> set('error', «Не введен пароль пользователя»);

return;

}

if ($this-> data['User']['psw'] ≠ $this-> data['User']['psw2']) {

$this-> set ('error', «Введенные пароли не совпадают»);

return;

}

$users = $this-> User->findAll («login='». $this->data['User']['login']. «'»);

if (count($users) > 0) {

$this-> seterror», «Пользователь с таким логином уже зарегистрирован»);

ПоказатьСвернуть
Заполнить форму текущей работой