Сопровождение программного продукта
Сопровождение программного продукта
Обозначения и сокращения ИС Информационная Система ЖЦ Жизненный Цикл ПО Программное обеспечение ГОСТ Государственный Стандарт PHP Hypertext Preprocessor, гипертекстовый процессор HTML Hyper Text Markup Languare, язык разметки гипертекста АИС Автоматизированная Информационная Система БД База Данных СУБД Система Управления Базами Данных Введение Сопровождение программного продукта - это одна из стадий жизненного цикла ИС, она производится при проведении опытной эксплуатации созданного продукта, оно заключается в удовлетворении потребностей пользователя, проведение доработок и вообще повышении полезности программы. При этом могут выявляться недостатки продукта, ошибки в программном коде, для этого моделируются различные действия пользователя, аварийные ситуации, в ходе которых анализируется поведение программы. Если же выявлены недостатки, то специалист, занимающийся сопровождением данного продукта должен отладить программу и предоставить заказчику надежную рабочую версию. Надежность программы стоит понимать как уровень, при котором она удовлетворяет всем поставленным требованиям и пригодна для эксплуатации. 1. Теоретическая часть 1.1 Жизненный цикл Методология проектирования ИС описывает процесс создания и сопровождения систем в виде жизненного цикла ИС. ЖЦ ПО - это период разработки и эксплуатации ПО, в котором можно выделить следующие этапы: - разработка требований; - проектирование; - реализация; - тестирование; - ввод в действие. Существуют стандарты, регламентирующие ЖЦ, например ГОСТ 34.601-90. Распространяется на АИС и устанавливает стадии и этапы их создания. Содержит описания содержания работ на каждом этапе. Стадии и этапы работы, закреплены в стандарты соответствия каскадной модели ЖЦ. ISO\IEC 12207:1995. Стандарт на процесс и организацию ЖЦ не содержит описания стадий и этапов. 1.2 Сопровождение программного обеспечения Сопровождение ПО - процесс улучшения, оптимизации и устранения дефектов ПО после передачи его в эксплуатацию. В ходе сопровождения в программу вносятся изменения, с тем, чтобы исправить обнаруженные в процессе эксплуатации дефекты и недостатки, а также для добавления новой функциональности, с целью повышения удобства использования. Процессы сопровождения программных продуктов определяются стандартами IEEE 1219 (Standard for Software Maintenance) и ISO/IEC 14764 (Standard for Software Engineering - Software Maintenance). 1.2.1 Природа сопровождения Сопровождение программного обеспечения определяется как вся совокупность деятельности, необходимой для обеспечения эффективной поддержки программных систем. Эти работы выполняются как перед вводом системы в эксплуатацию, так и после этого. Предварительные работы включают планирование деятельности по сопровождению системы, а также организацию перехода к ее полнофункциональному использованию. Если новая система должна заменить старую систему, предназначенную для решения тех же задач, просто на новом уровне эффективности, стоимости использования, новых функциональных возможностей, в этом случае важно обеспечить плавный переход со старой системы на новую, максимально естественный для пользователей. С этим связано не только планирование, например, переноса информации, хранимой в соответствующих базах данных, но и обучение пользователей. Сопровождение поддерживает функционирование программного продукта на протяжении всего периода его эксплуатации. В процессе сопровождения фиксируются и отслеживаются запросы на модификацию, оценивается влияние предлагаемых изменений, модифицируется код и другие элементы продукта, проводится необходимое тестирование и, наконец, выпускается обновленная версия продукта. Кроме того, проводится обучение пользователей и обеспечивается их ежедневная поддержка при работе с текущей версией продукта. Специалист, занимающийся сопровождением, может получать знания о программном продукте непосредственно от разработчиков. Взаимодействие с разработчиками и раннее привлечение этих специалистов помогает уменьшить усилия, необходимые для адекватного сопровождения программной системы. Передача знаний сопроводителю, его обучение, должно начинаться не позднее начала опытной эксплуатации продукта. Специалист, занимающийся сопровождением должен иметь доступ к активам проекта (описанию его внутренней архитектуры), включая код, документацию. Как правило, основная нагрузка на службу сопровождения приходится на период первых 2-6 недель с момента передачи системы в эксплуатацию. Инженеры по технической поддержке производителя программного обеспечения должны не просто иметь доступ ко всем ключевым активам проекта (код, документация, спецификации требований, внутренние модели), но в их обязанности входит исправлений ошибок и, в особых случаях, такие изменения, до выпуска новой версии продукта, создаются с привлечением непосредственно разработчиков продукта. При этом, разработчики продукта информируются о найденных ошибках и, в случае нахождения соответствующих решений специалистами технической поддержки, такие решения передаются разработчикам с тем, чтобы те либо включили такие изменения в новую версию программного продукта, в случае успешного прохождения всех необходимых тестов, либо нашли более адекватное решение. В обязанности инженеров службы сопровождения, в общем случае, входит: - проверка пользовательского сценария, приводящего к сбою; - идентификация причин сбоя, т.е. локализация ошибки/причин ее появления; - предоставление соответствующих исправлений или, при невозможности создания таковых на данном этапе либо в заданные сроки - предоставление обходного пути решения проблемы для достижения требуемых задач; - журналирование всех работ и операций; помещение описания проблемы и ее решения в базу знаний службы сопровождения; передача всей информации разработчикам. 1.2.2 Потребность в сопровождении Сопровождение необходимо для обеспечения того, чтобы программный продукт на протяжении всего периода эксплуатации удовлетворял требованиям пользователей. Деятельность по сопровождению применима для программного обеспечения, созданного с использованием любой модели жизненного цикла. В общем случае, работы по сопровождению должны проводиться для решения следующих задач: - устранение сбоев; - улучшение дизайна; - реализация расширений; - создание интерфейсов взаимодействия с другими (внешними) системами; - адаптация (например, портирование) для возможности работы на другой аппаратной платформе (или обновленной платформе), применения новых системных возможностей, функционирования в среде обновленной телекоммуникационной инфраструктуры и т.п.; - миграции унаследованного программного обеспечения; - вывода программного обеспечения из эксплуатации. Деятельность персонала сопровождения включает четыре ключевых аспекта: - поддержка контроля (управляемости) программного обеспечения в течение всего цикла эксплуатации; - поддержка модификаций программных систем; - совершенствование существующих функций; - предотвращение падения производительности программной системы до неприемлемого уровня. 1.2.3 Категории сопровождения Определяют четыре категории работ по сопровождению: корректировка, адаптация, совершенствование и профилактическое сопровождение: - корректирующее сопровождение: “реактивная” модификация программного продукта, выполняемая уже после передачи в эксплуатацию для устранения сбоев; - адаптирующее сопровождение: модификация программного продукта на этапе эксплуатации для обеспечения продолжения его использования с заданной эффективностью (с точки зрения удовлетворения потребностей пользователей) в изменившемся или находящемся в процессе изменения окружении; - совершенствующее сопровождение: модификация программного продукта на этапе эксплуатации для повышения характеристик производительности и удобства сопровождения; - профилактическое сопровождение: модификация программного продукта на этапе эксплуатации для идентификации и предотвращения скрытых дефектов до того, когда они приведут к реальным сбоям. 1.2.4 Работы по сопровождению Многие работы по сопровождению похожи на аспекты деятельности по разработке. В обоих случаях необходимо проводить анализ, проектирование, кодирование, тестирование и документирование. Специалисты по сопровождению должны отслеживать требования так же, как и инженеры-разработчики и обновлять документацию по мере разработки и/или выпуска обновленных или новых релизов продукта. В то же время, деятельность по сопровождению обладает и определенными уникальными чертами, что приводит к необходимости использования специализированных процессов: - передача: контролируемая и координируемая деятельность по передаче программного обеспечения от разработчиков группе, службе или организации, отвечающей за дальнейшую поддержку; - принятие/отклонение запросов на модификацию: запросы на изменения могут как приниматься и передаваться в работу, так и отклоняться по различным обоснованным причинам - объему и/или сложности требуемых изменений, а также необходимых для этого усилий. Соответствующие решения могут также приниматься на основе приоритетности, оценке обоснованности, отсутствии ресурсов - средства извещения персонала сопровождения и отслеживания статуса запросов на модификацию и отчетов об ошибках: функция поддержки конечных пользователей, инициирующая работы по оценке (в том числе оценку необходимости), анализу приоритетности и стоимости модификаций, связанных с поступившим запросом или сообщенной проблемой. - анализ влияния: анализ возможных последствий изменений, вносимых в существующую систему; - поддержка программного обеспечения: работы по консультированию пользователей, проводимые в ответ на их информационные запросы, например, касающиеся соответствующих бизнес-правил, проверки, содержания данных и специфических вопросов пользователей и их сообщений о проблемах; - контракты и обязательства: к ним относятся классическое соглашение об уровне предоставляемого сервиса, а также другие договорные аспекты, на основании которых, группа/служба/организация по сопровождению выполняет соответствующие работы. 1.3 Язык программирования PHP PHP - это широко используемый язык сценариев общего назначения с открытым исходным кодом, специально разработанный для написания web-приложений (сценариев), исполняющихся на Web-сервере. Важным преимуществом языка PHP перед такими языками, как языков Perl и C заключается в возможности создания HTML документов с внедренными командами PHP, может быть встроен непосредственно в HTML-код страниц, которые, в свою очередь будут корректно обрабатываться PHP-интерпретатором. PHP обладает пятью важными характеристиками: - традиционность - код РНР очень похож на тот, который встречается в типичных программах на С или Pascal; - простота - механизм РНР просто начинает выполнять код после первой экранирующей последовательности (<?) и продолжает выполнение до того момента, когда он встретит парную экранирующую последовательность (?>); - эффективность - «движок» PHP не является ни компилятором, ни интерпретатором. Он является транслирующим интерпретатором. Такое устройство «движка» PHP позволяет обрабатывать сценарии с достаточно высокой скоростью; - безопасность - в РНР реализован механизм безопасности - это обеспечивает максимальную свободу действий и безопасность; - гибкость - нет проблем и с зависимостью от браузеров, поскольку перед отправкой клиенту сценарии РНР полностью компилируются на стороне сервера. 2. Практическая часть 2.1 Словесное описание предметной области В Воткинском Машиностроительном техникуме существует заочное отделение. Каждый студент заочного отделения должен сдавать контрольную работу по дисциплинам, которые изучает. Идентифицировать студента можно, зная номер его студенческого билета и дату поступления, так как номера студенческих повторяются каждые пять лет. Секретарь регистрирует сдачу контрольной работы и вклеивает в работу рецензию, в которой краткая информация о сдаче контрольной работы (дата сдачи, дата проверки, специальность, группа, дисциплина, ФИО студента, ФИО рецензента). Сданные и зарегистрированные контрольные работы забирают преподаватели на проверку. После проверки работы преподаватель обязан поставить оценку и дату проверки на рецензии, после чего контрольную работу возвращают обратно к секретарю. Задача данного приложения регистрировать сданные контрольные работы и распечатывать рецензии, хранить информацию о преподавателе, проверившего контрольную работу, о дате проверки и оценке. Выдавать сведения по проверке контрольных работ, как по всем преподавателям, так и по отдельному преподавателю; вывод данных о сдаче контрольных работ студентами за определенный период, вывод данных на web-страницу. 2.2 Логическая модель Логическая модель представлена на рисунке 4. Рисунок 4 - Логическая модель. Изменена сущность «Студент», добавлен атрибут «Дата поступления». Первичный ключ таблицы составной, состоит из двух полей: «Номер билета» и «Дата поступления». 2.3 Схема данных приложения Схема данных приложения представлена на рисунке 5. Рисунок 5 - Схема данных приложения. Схема данных приложения изменена в соответствии с логической моделью. 2.4. Схема работы приложения Схема работы приложения представлена на рисунке 6. Рисунок 6 - Схема работы приложения. Добавлена web страница для обновления БД MySQL со студентами и контрольными работами, отображены все формы 2.5 Внешний интерфейс Главная форма приложения представлена на рисунке 7.
Рисунок 7 - Главная форма приложения. Изменен цвет формы, добавлена картинка. Форма регистрации контрольных работ представлена на рисунке 8. Рисунок 8 - Форма регистрации контрольных работ. Изменен цвет формы, добавлено поле с датой поступления студента. Форма перевода студентов на другой курс представлена на рисунке 9. Рисунок 9 - Форма перевода студентов на другой курс. Изменен цвет формы, добавлено поле с текущей датой и поле, поясняющее как перевести группу на следующий курс. Форма ввода новых студентов представлена на рисунке 10. Рисунок 10 - Форма ввода новых студентов. Изменен цвет формы, добавлено поле с текущей датой. Форма для ввода нового преподавателя представлена на рисунке 11. Рисунок 11 - Форма для ввода нового преподавателя. Изменен цвет формы, добавлена кнопка перехода к форме регистрации контрольных. 2.6 Организация вывода информации на web страницу Для организации вывода отчета по сданным контрольным работам на web страницу, была разработана идея переноса необходимых данных из MS Access в MySQL. После занесения новой записи в таблицу БД MS Access выполняется макрос, экспортирующий данные в текстовый файл. Далее выполняется php сценарий, записывающий данные из текстового файла в таблицу БД MySQL. Данные для отчета берутся из таблиц БД MySQL. Такой алгоритм работы был разработан ввиду невозможности прямого экспорта данных из MS Access в MySQL. Схема передачи данных из MS Access в MYSQL представлена на рисунке 12. Рисунок 12 - Схема передачи данных из MS Access в MYSQL. Алгоритм работы php-скрипта обновления таблиц со студентами и контрольными работами в БД MySQL представлен на рисунке 13. Рисунок 13 - алгоритм работы php-скрипта обновления таблиц со студентами и контрольными работами в БД MySQL Web страница для обновления БД MySQL представлена на рисунке 14. Рисунок 14 - Web страница обновления БД. Web страница после обновления БД MySQL, представлена на рисунке 15. Рисунок 15 - Web страница после обновления БД. Web страница для ввода данных для получения контрольных работ представлена на рисунке 16 Рисунок 16 - Web страница для ввода данных для получения контрольных работ. Web страница с контрольными работами определенного студента представлена на рисунке 17. Рисунок 17 - Web страница с контрольными работами. 3. Экономическая часть 3.1 Определение годового экономического эффекта Таблица 1- Нормы времени по видам работ |
Этап работы | Ручной способ мин/день | Автоматизированный способ мин/день | | Создание списка преподавателей Создание списка дисциплин Создание списка специальностей Создание списка групп и студентов Заполнение и распечатка рецензии | 15 10 10 20 15 | 10 7 8 15 1 | | Итого: | 70 | 41 | | |
Далее производится расчет годовой экономии рабочего времени по формуле Эг = ( Нруч - Навт ) * Др, (1) где Эг - экономия годовая; Н - суммарная норма времени при обработке данных ручным способом; Н - суммарная норма времени при обработке данных автоматизированным способом; Д - среднее число рабочих дней в году (принимаем 48 дней, так как программа используется 48 дней). Э г = ( 1,17 - 0,69 ) * 48 = 23,04 час/год 3.2 Оценка трудоёмкости разработки Трудоемкость продукции - показатель затрат рабочего времени на производство единицы продукции или на выполнение определенной технологической операции. Для чего необходимо весь процесс проектирования программного изделия разбить на этапы. Таблица 2 - Удельный вес трудоемкости всех этапов работы |
Этап работы | Удельный вес % | | Изучение ПИ Беседы со специалистами в данной предметной области Отладка программного кода Тестирование программы Ввод в эксплуатацию | 15 10 35 15 25 | | Итого: | 100 | | |
Трудозатраты по каждому из этапов рассчитывается по формуле Тэi = Tэ * Уэi / Уэ, (2) где Тэi - трудозатраты i-го этапа научно-исследовательской работы; Тэ - трудоемкость одного этапа исследования, рассчитанное методом прямого счета (час); Уэi - удельный вес трудоемкости i-го этапа; Уэ - удельный вес трудоемкости данного этапа, рассчитанного методом прямого счета. За основу Тэ берется первый этап, рассчитывается время затраченное на этот этап методом прямого счета. Таблица З - Расчет трудоемкости работ |
Этап | (%) | Расчет | н/час | | Изучение ПИ Беседа со специалистами в данной предметной области Отладка программного кода Тестирование программы Ввод в эксплуатацию | 15 10 35 15 25 | 15 * 10 / 15 = 10 15 * 35 / 15 = 35 15 * 15 / 15 = 15 15 * 25 / 15 = 25 | 15 10 35 15 25 | | Итого: | 100 | | 100 | | |
Трудоемкость всей работы рассчитывается по формуле Tобщ =?19 Tэi, (3) Т общ = 15 + 10 + 35 + 15 +25 = 100 час. 3.3 Расчет себестоимости разработки программного изделия 3.3.1 Расчет затрат на материалы Затраты на материалы рассчитываются в таблице 4 Таблица 4 - Затраты на материалы |
Материал | Ед. изм. | Кол-во | Цена за ед. руб. | Стоимость руб. | | Бумага «Снегурочка» | Лист | 10 | 0,5 | 5 | | Итого: | | | | 5 | | |
3.3.2 Расчет затрат на оплату труда разработчикам программного изделия Рассчитывается по формуле Ф зп = З осн + П + У к + З доп + Отч, (4) Ф зп = 4000 + 1200 + 780 + 1196 + 1865,76 = 9041,76 руб. Расчет основной заработной платы производится по формуле З осн = Т * Т ст, (5) где Т - трудозатраты (н/час); Тст - тарифная ставка инженера (40 руб). З осн = 100 * 40 = 4000 руб. Размер премии рассчитывается по формуле П = Зосн * 0.3, (6) П = 4000 * 30% / 100% = 1200 руб. Уральский коэффициент рассчитывается по формуле Ук = (Зосн + П) * 0.15, (7) У к = ( 4000 + 1200 ) * 15% / 100% = 780 руб. Дополнительная заработная плата инженера рассчитывается по формуле З доп = (З осн + П + Ук) * 0.2, (8) З доп = ( 4000 + 1200 + 780 ) * 20% / 100% = 1196 руб. Размеры отчислений с заработной платы в государственные фонды рассчитываются по формуле Отч = ( З осн + П + У к + З доп ) * 0.26, (9) Отч = ( 4000 + 1200 + 780 + 1196 ) * 26% / 100% = 1865,76 руб. Расчет общей заработной платы производится по формуле ЗП общ = ЗП осн + ЗП доп +Пр + У к, (10) ЗП общ = 4000 + 1200 + 780 + 1196 = 7176 руб. 3.3.3 Расчет общепроизводственных расходов Это расходы на электроэнергию, потребляемую компьютером и принтером за время разработки программного изделия и их амортизационных отчислений. Затраты на электроэнергию рассчитываются в таблице 5 Таблица 5 - затраты на электроэнергию |
Вид оборудования | Мощность в Квт | Стоимость 1 Квт, руб. | Время работы, ч. | Сумма затрат,руб. | | Компьютер | 0,5 | 2 | 60 | 60 | | Принтер | 2 | 2 | 0,5 | 2 | | Итого: | | | | 62 | | |
Затраты на амортизационные отчисления рассчитаны в таблице 6 Таблица 6 - Амортизационные отчисления |
Вид оборудования | Первоначальная стоимость, руб. | Норма амортизации, % | Время работы, ч. | Сумма амортизационных отчислений, руб. | | Компьютер | 25000 | 13 | 60 | 92,8 | | Принтер | 8000 | 13 | 0,5 | 0,2 | | Итого: | | | | 93 | | |
Сумма амортизационные отчисления рассчитывается по формуле А =C перв* Na/100*Траб/12/ФРВ, (11) где А - амортизационные отчисления; Cперв- первоначальная стоимость; Na - норма амортизации; Траб - время работы; ФРВ - месячный фонд рабочего времени, принимаем 175 ч. А1 = 25000 0,1360 / (12*175) = 92,8 А2 = 8000 0,130,5 / (12*175) = 0,2 Аобщ = 92,8 + 0,2 = 93 3.3.4 Расчет накладных расходов Накладные расходы составляют 30% от основной заработной платы. Расчет накладных расходов рассчитывается по формуле Р н = 30% / 100% * ЗП осн, (12) Рн = 4000 * 30% / 100% = 1200 руб. 3.3.5 Расчет коммерческих расходов Коммерческие расходы составляет 1% от производственной себестоимости. Расчет коммерческих расходов производится по формуле Р ком = С произ * 0.01, (13) Р ком = 10401,76 * 1% / 100% = 104,01 руб. 3.3.6 Расчет полной себестоимости программного изделия Данные заносятся в таблицу 7. Таблица 7 - Калькуляция себестоимости программного изделия |
Статья затрат | Ед. изм. | Сумма, руб | | Материальные затраты | Руб. | 5 | | Общая заработная плата | Руб. | 7176 | | Отчисления (ЕСН) | Руб. | 1865,76 | | Общепроизводственные расходы | Руб. | 155 | | Накладные расходы | Руб. | 1200 | | Производственная себестоимость | Руб. | 10401,76 | | Коммерческие расходы | Руб. | 104,01 | | Полная себестоимость | Руб. | 10505,77 | | |
Структура себестоимости разработки программного изделия представлена на рисунке 18. Рисунок 18 - Структура себестоимости разработки программного изделия. 3.4 Расчет цены программного изделия Плановый уровень прибыли составляет 25% от полной себестоимости, рассчитывается по формуле П = С произ * 0.25, (14) П = 10505,77 * 25% / 100% = 2626,44 руб. Цена расчетная рассчитывается по формуле Црасч= Сполн+П, (15) Ц расч = 10505,77 + 2626,44 = 13132,21 руб. Цена отпускная рассчитывается по формуле Цотп= Црасч+ НДС, (16) НДС рассчитывается по формуле НДС = Црасч * 18% / 100%, (17) НДС = 13132,21 * 18% /100% = 2363,79 руб. Ц отп = 13132,21 + 2363,79 = 15495,91 руб. Все расчеты сводятся в таблицу 8. Таблица 8 - Расчет цены программного изделия |
Статья затрат | Сумма, руб. | | Полная себестоимость | 1505,77 | | Прибыль | 2626,44 | | Расчетная цена | 13132,21 | | НДС | 2363,79 | | Отпускная цена | 15495,91 | | |
3.5 Расчет годовой экономии текущих затрат Относительная годовая экономия текущих затрат определяется по формуле ?С = (Тpj * Цр - Тmj * Цм)*Д р, (18) где - норма времени на каждом этапе, затраченная при ручном способе (ч); - стоимость одного часа не автоматизированной работы (35 руб); - нормы времени на каждом этапе, затраченные при автоматизированном способе (ч); - стоимость одного часа автоматизированной работы (40 руб); - количество рабочих дней в году (48 дней). ДС = ( 1,17 * 35 - 0,69 * 40 ) * 48 = 640,8 руб. 4. Организация труда 4.1 Общие требования К работе с компьютерами, принтерами, ксероксами и другими электрическими приборами допускаются лица, обученные данной специальности, прошедшие вводный инструктаж по охране труда, инструктаж по охране труда, инструктаж по технике безопасности непосредственно на рабочем месте и инструктаж в объеме 1-й группы по электробезопасности. При работе с дисплеями не допускается расположение рабочих мест в помещениях без естественного освещения. Рабочие места с дисплеями от стены с оконными проемами должны находиться на расстоянии не менее 1,5 м, от других стен - не менее 1 м. Расстояние от задней и боковых стен дисплея до другого работника должно быть не менее 1,5 м. Размеры рабочей поверхности столешницы должны быть не менее 1600 х 900 мм. Под столешницей рабочего стола должно быть свободное пространство для ног с размерами по высоте не менее 600 мм, по ширине - 500 мм, по глубине - 650 мм. Рабочее место должно быть оборудовано подставкой для ног шириной 350 мм и длиной 400 мм. Для защиты от прямых солнечных лучей должны предусматриваться солнцезащитные устройства (пленка с металлизированным покрытием, регулируемые жалюзи с вертикальными ламелями и др.) Для исключения бликов отражения на экранах от светильников общего освещения необходимо применить специальные фильтры для экранов, защитные козырьки или располагать источники света параллельно направлению взгляда на экран. Пол помещения должен быть покрыт материалами, не выделяющими вредных веществ, поглощающими шум, не накапливающими статического электричества. Допускаемые уровни напряженности электростатических полей на рабочих местах не должны превышать 20 кв/м (ГОСТ 120,145-84). Мощность экспозиционной дозы низкоэнергетического рентгеновского излучения на расстоянии 5 см от экрана, задней и боковых стенок дисплея не должна превышать 100 мкр/ч (0,03 мкр/с). Мощность ультрафиолетового излучения не должна превышать 10 Вт/мч-2 Вт/мч на расстоянии 5 и 30 см от экрана дисплея (ГОСТ 27954-88). Клавиатура дисплея не должна быть жестко связана с монитором. Площадь помещения из расчета на одного человека следует предусматривать не менее 6,0 кв.м. На рабочих местах необходимо обеспечивать микроклиматические параметры, уровни освещенности шума и состояния.воздушной среды согласно санитарным нормам. Освещение должно быть смешанным (естественным и искусственным). Осветительные установки должны обеспечивать равномерную освещенность с помощью преимущественно отраженного или рассеянного светораспределения. Они не должны создавать слепящих бликов на клавиатуре и других частях пульта, а также на экране дисплея в направлении глаз оператора. Для исключения отражения на экране бликов от светильников необходимо применять специальные фильтры для экранов, антибликерные сетки, козырьки или располагать источники света параллельно направлению взгляда на экран ВДТ с обеих сторон. Для предотвращения образования и защиты от статического электричества необходимо использовать нейтрализаторы и увлажнители, а полы должны иметь антистатическое покрытие. Защита от статического электричества должна проводиться в соответствии с санитарно- гигиеническими нормами допускаемой напряженности электрического поля. О случаях травмирования и обнаружения неисправности оборудования работники должны немедленно сообщить руководителю. Работать на неисправном оборудовании запрещается. Не разрешается допускать на свое рабочее место лиц, не имеющих отношения к данной работе. Работники обязаны выполнять правила безопасности, при обнаружении возможной опасности предупредить окружающих и немедленно сообщить руководителю; содержать в чистоте рабочее место и не загромождать его посторонними предметами. Лица, виновные в нарушении требований, изложенных в данной инструкции, привлекаются к дисциплинарной ответственности в соответствии с действующим законодательством. 4.2 Требования безопасности перед началом работы Осмотреть и убедиться в исправности оборудования, заземления электропроводки. В случае обнаружения неисправностей к работе не приступать. Сообщить об этом руководителю и только после устранения неполадок и его разрешения приступить к работе. Проверить освещение рабочего места, при необходимости принять меры к его нормализации. 4.3 Требования безопасности во время работы Не включать оборудование в неисправную розетку, во время работы следить, не греется ли электровилка, не нарушена ли целостность электрошнура. Не приступать к работе с влажными руками. Не оставлять включенное оборудование без присмотра. Не класть предметы на оборудование и дисплей. Режим труда и отдыха предусматривает соблюдение регламентированных перерывов. Основным перерывом является перерыв на обед. В режиме труда должны быть дополнительные регламентированные перерывы по 10 минут каждый; два перерыва при 8-часовом рабочем дне. При 8-часовом рабочем дне с обеденным перерывом через 4 часа работы, дополнительные перерывы необходимо делать через 3 часа работы и за 2 часа до окончания. Режим труда и отдыха персонала, непосредственно работающего с дисплеем, зависит от характера работы: при вводе данных, редактировании программ, чтении информации с экрана; непрерывная продолжительность работы с дисплеем не должна превышать четырех часов при 8-часовом рабочем дне. 4.4 Требования безопасности в аварийных случаях При возникновении возгорания немедленно отключить оборудование, обесточить электросеть за исключением осветительной сети, сообщить о пожаре всем работающим и приступить к тушению очага загорания имеющимися средствами пожаротушения. Если на металлических частях оборудования обнаружено напряжение (ощущение тока), заземляющий провод оборван - отключить оборудование немедленно, доложить руководителю о неисправности электрооборудования и без его указания к работе не приступать. При прекращении подачи электроэнергии отключить оборудование. При несчастном случае необходимо в первую очередь освободить пострадавшего от травмирующего фактора. При освобождении пострадавшего от действия электротока следите за тем, чтобы самому не оказаться в контакте с токоведущей частью и под напряжением. 4.5 Требования безопасности по окончании работ Отключить оборудование от электросети. Привести в порядок рабочее место. Закрыть оборудование чехлами. Заключение В ходе сопровождения программного продукта был проведен анализ работы программного продукта, выявлены замечания заказчика. Внесены изменения в соответствии с сделанными замечаниями: - отредактирован внешний вид приложения; - откорректирован бланк рецензии; - изменён программный код некоторых форм; - изменён отчет для подсчета суммы работы преподавателей; - создана web-страница с выводом на неё отчета по студенту. Программный продукт сдан в эксплуатацию. Отработана принципиальная возможность вывода web-страницы в Internet. Список используемых источников 1. Р. Гласс «Руководство по надежному программированию», 1982г., Москва. 2. Игорь Одинцов «Профессиональное программирование. Системный подход», 2006г., Санкт-Петербург. 3. Л.Г. Гагарина, Б.Д. Висман, А.В. Игошин «Основы технологии разработки программных продуктов», 2006г., Москва. 4. http://swebok.sorlik.ru/ Приложение А Техническое задание А.1 Введение Тема дипломного проекта: «Сопровождение БД и приложения для учета часов работы преподавателей на заочном отделении ВМТ». А.2 Основание для разработки Данная разработка ведется на основе технического задания к дипломному проекту. А.З Назначение для разработки Данное программное изделие предназначено для автоматизации ввода вывода, поиска, хранения информации. А.4 Требования к программному изделию Должны быть произведены следующие изменения, не нарушающие функциональность приложения: - отредактирован внешний вид приложения; - откорректирован бланк рецензии; - изменён программный код некоторых форм; - изменён отчет для подсчета суммы работы преподавателей; - создана web страница с выводом на неё отчета по студенту. При работе с программой должны быть предоставлены условия: - комнатная температура (15С-25С); - количество персонала не менее одного человека; - персонал должен быть хорошо ознакомлен с работой приложения. Требования к техническим средствам: - 1 Гб на жестком диске; - ОЗУ 512 Мб; Требования к информационной и программной совместимости: - OC Windows 2000/ XP; - Ms Office, Access 2003; - Denwer; - MySQL; - Web браузер. А.5 Стадии и этапы разработки - изучение программного продукта; - анализ программного продукта; - тестирование программного продукта; - корректировка программного продукта; - перенос данных из MS Access в MySQL; - создание web страницы; - обучение персонала; - устранение замечаний персонала; - разработка подробного руководства пользователя; - заключение. Приложение Б Программный код Программный код обработки нажатия кнопки «Восстановить дисциплину» на форме «Ввод дисциплины» Private Sub cboVosst_Click() If CboVosst.Caption <> "Отмена восстановления" Then cboydal_reg.Visible = True txtSpravka.Visible = True cmdok.Enabled = False CboVosst.Caption = "Отмена восстановления" Else cboydal_reg.Visible = False txtSpravka.Visible = False cmdok.Enabled = True CboVosst.Caption = "Восстановить удаленных" End If End Sub Программный код обработки нажатия кнопки «Восстановить из удаленных» на форме «Ввод студента» Private Sub CboVosst_Click() If CboVosst.Caption <> " Отмена восстановления " Then cboydal_reg.Visible = True txtSpravka.Visible = True cmdok.Enabled = False CboVosst.Caption = " Отмена восстановления " Else cboydal_reg.Visible = False txtSpravka.Visible = False cmdok.Enabled = True CboVosst.Caption = " Восстановить удаленных " End If End Sub Программный код обработки нажатия кнопки «Восстановить из удаленных» на форме «Ввод преподавателя» Private Sub CboVosst_Click() If CboVosst.Caption <> " Отмена восстановления " Then cboydal_reg.Visible = True txtSpravka.Visible = True Кнопка10.Enabled = False cboPerehod.Visible = False CboVosst.Caption = " Отмена восстановления " Else cboydal_reg.Visible = False txtSpravka.Visible = False Кнопка10.Enabled = True cboPerehod.Visible = True CboVosst.Caption = " Восстановить удаленных " End If End Sub Программный код обработки нажатия кнопки «Закончил курс обучения» на форме «Перевод на другой курс» Private Sub cmdzanos_Click() a = cbogruppa.Value d = txtdata.Value If IsNull(a) = True Then MsgBox "Вы не выбрали группу или она уже удалена!" Exit Sub End If ' Для закончивших курс strConnect = "Provider = Microsoft.jet.Oledb.4.0; " & _ "Data Source= " & CurrentProject.Connection Set cnn = New ADODB.Connection cnn.ConnectionString = strConnect cnn.Mode = adModeReadWrite Debug.Print a Debug.Print d f = a & " " & Date Debug.Print f cnn.Open 'обновление названия группы в таблице Группа strqryprx = "UPDATE gruppa SET gruppa.Shifr_gruppa = 'В_'& [o] " & _ "WHERE (((gruppa.Shifr_gruppa)=[u]));" Set cmd = New ADODB.Command cmd.ActiveConnection = cnn cmd.CommandText = strqryprx cmd.CommandType = adCmdText Set prm1 = cmd.CreateParameter("oper", adChar, adParamInput, 20, f) cmd.Parameters.Append prm1 Set prm2 = cmd.CreateParameter("oper", adChar, adParamInput, 20, a) cmd.Parameters.Append prm2 Set rst = cmd.Execute 'обновление названия группы в таблице Студент strqryprx = "UPDATE Student SET Student.Shifr_gruppa = a & Date() " & _ "WHERE (((Student.Shifr_gruppa)=[Forms]![frm_perevod]![cbogruppa].[Value]));" Set cmd = New ADODB.Command cmd.ActiveConnection = cnn cmd.CommandText = strqryprx cmd.CommandType = adCmdText Set prm1 = cmd.CreateParameter("oper", adChar, adParamInput, 10, Date) cmd.Parameters.Append prm1 Set prm2 = cmd.CreateParameter("oper", adChar, adParamInput, 10, a) cmd.Parameters.Append prm2 Set rst = cmd.Execute cboinfo.AddItem ("Группа " & cbogruppa.Value & " закончила курс. Контрольные занесены в архив!") End Sub Программный код обработки события нажатия кнопки «Весь список» на форме «Регистрация контрольных работ». Private Sub cmdspisok_Click() If cmdspisok.Caption = "Весь список" Then cboprepod.RowSource = "SELECT Prepodavatel.Tabel_nomer, [familiaPR] & ' ' & [imayPR] & ' ' & [otchestvoPR] AS Выражение1, Prepodavatel.[status prepodavatelya] " & _ "FROM Prepodavatel " & _ "WHERE (((Prepodavatel.[status prepodavatelya])=1));" cmdspisok.Caption = "По дисциплине" Else cboprepod.RowSource = "SELECT Prepodavatel.Tabel_nomer, [familiaPR] & ' ' & [imayPR] & ' ' & [otchestvoPR] AS Выражение1, Prepodavatel.[status prepodavatelya] " & _ "FROM Prepodavatel INNER JOIN peresechenie ON Prepodavatel.Tabel_nomer = peresechenie.Tabel_nomer " & _ "WHERE (((peresechenie.Shifr_disziplina)=[Forms]![frm_registrazia_rabot]![cbodisziplina].[Value]) AND ((Prepodavatel.[status prepodavatelya])=1));" cmdspisok.Caption = "Весь список" End If End Sub Программный код обработки события открытия формы «Журнал регистрации» Private Sub cbovubord_AfterUpdate() Dim stDocName As String Dim stLinkCriteria As String If cbovuborg.Value <> "" Then strConnect = "Provider = Microsoft.jet.Oledb.4.0; " & _ "Data Source= " & CurrentProject.Connection Set cnn = New ADODB.Connection cnn.ConnectionString = strConnect cnn.Mode = adModeReadWrite cnn.Open strqryprx = "INSERT INTO zhurnal ( nomer_kontr_raboty, data_registr, Выражение1, data_proverki, Выражение2, id_ozenki ) " & _ "SELECT Kontrolnay_rabota.nomer_kontr_raboty, Kontrolnay_rabota.data_registr, [familiaST] & ' ' & [imaySt] & ' ' & [OtchestvoST] AS Выражение1, Kontrolnay_rabota.data_proverki, [familiaPR] & ' ' & [imayPR] & ' ' & [otchestvoPR] AS Выражение2, Kontrolnay_rabota.id_ozenki " & _ "FROM ozenka INNER JOIN ((Gruppa INNER JOIN Student ON Gruppa.Shifr_gruppa = Student.Shifr_gruppa) INNER JOIN (Kontrolnay_rabota INNER JOIN Prepodavatel ON Kontrolnay_rabota.Tabel_nomer = Prepodavatel.Tabel_nomer) ON Student.Nomer_bileta = Kontrolnay_rabota.Nomer_bileta) ON ozenka.id_ozenki = Kontrolnay_rabota.id_ozenki " & _ "WHERE (((Gruppa.Shifr_gruppa) = [Forms]![Frm_zhurnal_nachalo]![cbovuborg].[Value]) And ((Kontrolnay_rabota.Shifr_disziplina) = [Forms]![Frm_zhurnal_nachalo]![cbovubord].[Value])) " & _ "ORDER BY Kontrolnay_rabota.nomer_kontr_raboty;" Set cmd = New ADODB.Command cmd.ActiveConnection = cnn cmd.CommandText = strqryprx cmd.CommandType = adCmdText Set prm = cmd.CreateParameter("oper", adChar, adParamInput, 10, [Forms]![Frm_zhurnal_nachalo]![cbovuborg].[Value]) cmd.Parameters.Append prm Set prm1 = cmd.CreateParameter("oper", adChar, adParamInput, 150, [Forms]![Frm_zhurnal_nachalo]![cbovubord].[Value]) cmd.Parameters.Append prm1 cmd.Execute cnn.Close stDocName = "frm_zhurnal_konez" DoCmd.OpenForm stDocName, acNormal,, stLinkCriteria Exit Sub www: MsgBox "В журнале нет зарегистрированных контрольных работ" Exit Sub End If End Sub Программный код обработки события «Проверка контрольной работы». Private Sub naimenovanie_ozenka_AfterUpdate() strConnect = "Provider = Microsoft.jet.Oledb.4.0; " & _ "Data Source= " & CurrentProject.Connection Set cnn = New ADODB.Connection cnn.ConnectionString = strConnect cnn.Mode = adModeReadWrite cnn.Open Debug.Print [Forms]![frm_zhurnal_konez]![raboty].[Value] n = [Forms]![frm_zhurnal_konez]![raboty].[Value] Debug.Print "n " & n dp1 = Forms![frm_zhurnal_konez]![data_proverki].[Value] oc1 = Forms![frm_zhurnal_konez]![naimenovanie_ozenka].[Value] Do strqryprx = "UPDATE Kontrolnay_rabota SET Kontrolnay_rabota.data_proverki = [dp], Kontrolnay_rabota.id_ozenki = [oc] " & _ "WHERE (((Kontrolnay_rabota.nomer_kontr_raboty)=[u]));" Set cmd = New ADODB.Command cmd.ActiveConnection = cnn cmd.CommandText = strqryprx cmd.CommandType = adCmdText Set prm = cmd.CreateParameter("oper", adChar, adParamInput, 10, dp1) cmd.Parameters.Append prm Set prm1 = cmd.CreateParameter("oper", adChar, adParamInput, 10, oc1) cmd.Parameters.Append prm1 Set prm2 = cmd.CreateParameter("oper", adChar, adParamInput, 10, n) cmd.Parameters.Append prm2 Debug.Print prm cmd.Execute Loop While dp1 <> Null cnn.Close End Sub Программный код обработки события нажатия кнопки «Весь список» на форме «Регистрация контрольный работ» Private Sub cmdspisok_Click() If cmdspisok.Caption = "Весь список" Then cboprepod.RowSource = "SELECT Prepodavatel.Tabel_nomer, [familiaPR] & ' ' & [imayPR] & ' ' & [otchestvoPR] AS Выражение1, Prepodavatel.[status prepodavatelya] " & _ "FROM Prepodavatel " & _ "WHERE (((Prepodavatel.[status prepodavatelya])=1));" cmdspisok.Caption = "По дисциплине" Else cboprepod.RowSource = "SELECT Prepodavatel.Tabel_nomer, [familiaPR] & ' ' & [imayPR] & ' ' & [otchestvoPR] AS Выражение1, Prepodavatel.[status prepodavatelya] " & _ "FROM Prepodavatel INNER JOIN peresechenie ON Prepodavatel.Tabel_nomer = peresechenie.Tabel_nomer " & _ "WHERE (((peresechenie.Shifr_disziplina)=[Forms]![frm_registrazia_rabot]![cbodisziplina].[Value]) AND ((Prepodavatel.[status prepodavatelya])=1));" cmdspisok.Caption = "Весь список" End If End Sub Программный код php-скрипта для обновления таблицы с контрольными работами в БД MySQL <?php echo "<TITLE>Обновление базы данных</TITLE>"; echo "<H1 align = center> Обновление базы данных </H1> <HR> <HR>"; $soed=mysql_connect('localhost:3306','root',''); if ($soed == true) { echo "Соединение установлено успешно! <br>";} else { echo "Соединение не установлено! <br>"; exit;} mysql_query("set names cp1251"); $bd=mysql_select_db(kr,$soed); if ($bd == truе) { echo "База данных выбрана! <br>";} else { echo "Соединение с базой невозможно! <br>";exit;} echo "<br>"; $udal = "truncate table kontrolnay_rabota"; $zapros = mysql_query($udal,$soed) or die (mysql_error()); $sql="load data local infile 'L:\\kontrolnay_rabota.txt' replace into table Kontrolnay_rabota fields terminated by ';' enclosed by '\"' lines terminated by '\r\n' ;"; $zapros1=mysql_query($sql,$soed) or die(mysql_error()) ; echo "Данные занесены!!! Можете закрыть это окно"; ?> Программный код php-скрипта для обновления таблицы со студентами в БД MySQL <?php echo "<TITLE>Обновление базы данных</TITLE>"; echo "<H1 align = center> Обновление базы данных </H1> <HR> <HR>"; $soed=mysql_connect('localhost:3306','root',''); if ($soed == true) { echo "Соединение установлено успешно! <br>";} else { echo "Соединение не установлено! <br>"; exit;} mysql_query("set names cp1251"); $bd=mysql_select_db(kr,$soed); if ($bd == truе) { echo "База данных выбрана! <br>";} else { echo "Соединение с базой невозможно! <br>";exit;} echo "<br>"; $udal = "truncate table student"; $zapros = mysql_query($udal,$soed) or die (mysql_error()); $sql="load data local infile 'L:\\student.txt' replace into table student fields terminated by ';' enclosed by '\"' lines terminated by '\r\n' ;"; $zapros1=mysql_query($sql,$soed) or die(mysql_error()) ; echo "Данные занесены!!! Можете закрыть это окно"; ?> Программный код php-скрипта для вывода отчета по студенту на web-страницу <?php echo "<TITLE>Контрольные работы</TITLE>"; echo "<H1 align = center> Контрольные работы </H1> <HR> <HR>"; echo "<BR> <p> Сводные данные студента:"; $Fam=$_POST['Familiya']; $FNAME=$_POST['Name']; $LNAME=$_POST['Otchestvo']; $soed=mysql_connect('localhost:3306','root',''); mysql_query("set names cp1251"); $bd=mysql_select_db(kr,$soed); echo $Fam; echo "<br>"; echo $FNAME; echo "<br>"; echo $LNAME; echo "<br> <br> "; mysql_real_escape_string($Fam); mysql_real_escape_string($LNAME); mysql_real_escape_string($FNAME); $sql="SELECT student.Nomer_bileta FROM student WHERE ((`student`.`FamiliaST`='$Fam') AND (`student`.`ImayST`='$FNAME') AND (`student`.`OtchestvoST`='$LNAME'));"; $zapros1=mysql_query($sql,$soed) or die(mysql_error()) ; $stroki1=mysql_num_rows($zapros1); $polya1=mysql_num_fields($zapros1); for ($st=0; $st<$stroki1; $st++){ $bilet =mysql_fetch_array($zapros1); $nombil= $bilet[Nomer_bileta]; echo "Номер студенческого билета: $bilet[Nomer_bileta] <br>";} echo "<br>"; mysql_real_escape_string($nombil); $sql2 = " SELECT distinct kontrolnay_rabota.data_registr, kontrolnay_rabota.nomer_kontr_raboty, kontrolnay_rabota.data_proverki, kontrolnay_rabota.Shifr_disziplina, kontrolnay_rabota.id_ozenki FROM kontrolnay_rabota WHERE (`kontrolnay_rabota`.`Nomer_bileta` ='$nombil');"; $zapros2=mysql_query($sql2,$soed) or die(mysql_error()) ; $stroki2=mysql_num_rows($zapros2); $polya2=mysql_num_fields($zapros2); echo "<TABLE BORDER=0.5 width=70%> <TR> <TD> Дата регистрации КР </TD> <TD> Номер КР </TD> <TD> Дата проверки </TD> <TD> Оценка </TD> <TD> Дисциплина </TD> <TR> </TABLE> <BR>"; for ($st2=0; $st2<$stroki2; $st2++){ $kr =mysql_fetch_array($zapros2); $oc=$kr[id_ozenki]; if ($oc == "1" ) { $kr[id_ozenki] = " " ;} if ($oc == "2" ) { $kr[id_ozenki] = "зачет" ;} if ($oc == "3" ) { $kr[id_ozenki] = "незачет" ; } echo "<TABLE BORDER=0 width=70%> <TR> <TD width=32%>$kr[data_registr] </TD> <TD width=15%> $kr[nomer_kontr_raboty] </TD> <TD width=22%> $kr[data_proverki] </TD> <TD width=12%> $kr[id_ozenki] </TD> <TD width=19%> $kr[Shifr_disziplina] </TD> <TR> </TABLE> <BR>";} ?> Приложение В Запросы Запрос для «Отчет по преподавателю» SELECT Kontrolnay_rabota.data_proverki, Disziplina.naimen_disziplina, Student.Shifr_gruppa, [familiaST] & ' ' & Mid([imayST],1,1) & '.' & Mid([otchestvoST],1,1) & '.' AS Выражение1, Kontrolnay_rabota.nomer_kontr_raboty, [familiaPR] & ' ' & [imayPR] & ' ' & [otchestvopr] AS Выражение2 FROM Student INNER JOIN ((Kontrolnay_rabota INNER JOIN Disziplina ON Kontrolnay_rabota.Shifr_disziplina = Disziplina.Shifr_disziplina) INNER JOIN Prepodavatel ON Kontrolnay_rabota.Tabel_nomer = Prepodavatel.Tabel_nomer) ON Student.Nomer_bileta = Kontrolnay_rabota.Nomer_bileta WHERE (((Kontrolnay_rabota.data_proverki) Between ([Forms]![frm_vvod_perioda]![cbodata1].[Value]) And ([Forms]![frm_vvod_perioda]![cbodata2].[Value])) AND ((Student.Shifr_gruppa) Not Like "В_*") AND ((Kontrolnay_rabota.Tabel_nomer)=[Forms]![frm_vvod_perioda]![cboprepod].[Value])); Запрос для «Отчет по студенту» SELECT Kontrolnay_rabota.data_proverki, [familiaSt] & ' ' & [ImaySt] & ' ' & [OtchestvoSt] AS Выражение1, [familiaPR] & ' ' & Mid([imayPR],1,1) & '.' & Mid([otchestvoPR],1,1) & '.' AS Выражение2, Spezialnost.Naimenovanie_spezialnosti, Kontrolnay_rabota.data_registr, Disziplina.naimen_disziplina FROM (Spezialnost INNER JOIN (Gruppa INNER JOIN Student ON Gruppa.Shifr_gruppa = Student.Shifr_gruppa) ON Spezialnost.Shifr_spezialnosti = Gruppa.Shifr_spezialnosti) INNER JOIN ((Kontrolnay_rabota INNER JOIN Prepodavatel ON Kontrolnay_rabota.Tabel_nomer = Prepodavatel.Tabel_nomer) INNER JOIN Disziplina ON Kontrolnay_rabota.Shifr_disziplina = Disziplina.Shifr_disziplina) ON Student.Nomer_bileta = Kontrolnay_rabota.Nomer_bileta WHERE (((Kontrolnay_rabota.data_proverki) Between ([Forms]![frm_vvod_perioda]![cbodata1].[Value]) And ([Forms]![frm_vvod_perioda]![cbodata2].[Value])) AND ((Kontrolnay_rabota.Nomer_bileta)=[Forms]![frm_vvod_perioda]![cbostudent].[Value])); Запрос для «Отчет по всем преподавателям» SELECT [familiaPR] & ' ' & Mid([imaypr],1,1) & '.' & Mid([otchestvopr],1,1) & '.' AS Выражение1, Disziplina.naimen_disziplina, Sum(([vremia_proverki])/60) AS выражение2, Kontrolnay_rabota.Shifr_disziplina, Count(Kontrolnay_rabota.nomer_kontr_raboty) AS [Count-nomer_kontr_raboty] FROM Student INNER JOIN ((Kontrolnay_rabota INNER JOIN Prepodavatel ON Kontrolnay_rabota.Tabel_nomer = Prepodavatel.Tabel_nomer) INNER JOIN Disziplina ON Kontrolnay_rabota.Shifr_disziplina = Disziplina.Shifr_disziplina) ON Student.Nomer_bileta = Kontrolnay_rabota.Nomer_bileta WHERE (((Kontrolnay_rabota.data_proverki) Between ([Forms]![frm_vvod_perioda]![cbodata1].[Value]) And ([Forms]![frm_vvod_perioda]![cbodata2].[Value]))) GROUP BY [familiaPR] & ' ' & Mid([imaypr],1,1) & '.' & Mid([otchestvopr],1,1) & '.', Disziplina.naimen_disziplina, Kontrolnay_rabota.Shifr_disziplina; Запрос для отчета «Рецензия» SELECT Last(Kontrolnay_rabota.data_registr) AS [Last-data_registr], Last(Kontrolnay_rabota.nomer_kontr_raboty) AS [Last-nomer_kontr_raboty], Last(Kontrolnay_rabota.data_proverki) AS [Last-data_proverki], Last(Kontrolnay_rabota.vremia_proverki) AS [Last-vremia_proverki], Last(Prepodavatel!FamiliaPR & " " & Prepodavatel!ImayPR & " " & Prepodavatel!OtchestvoPR) AS Выражение1, Last(ozenka.Naimenovanie_ozenka) AS [Last-Naimenovanie_ozenka], Last(Disziplina.naimen_disziplina) AS [Last-naimen_disziplina], Last(Student!FamiliaST & " " & Student!ImayST & " " & Student!OtchestvoST) AS Выражение2, Last(Gruppa.Shifr_gruppa) AS [Last-Shifr_gruppa], Last(Spezialnost.Shifr_spezialnosti) AS [Last-Shifr_spezialnosti] FROM ozenka RIGHT JOIN ((Spezialnost RIGHT JOIN (Gruppa RIGHT JOIN Student ON Gruppa.Shifr_gruppa = Student.Shifr_gruppa) ON Spezialnost.Shifr_spezialnosti = Gruppa.Shifr_spezialnosti) RIGHT JOIN ((Kontrolnay_rabota LEFT JOIN Prepodavatel ON Kontrolnay_rabota.Tabel_nomer = Prepodavatel.Tabel_nomer) LEFT JOIN Disziplina ON Kontrolnay_rabota.Shifr_disziplina = Disziplina.Shifr_disziplina) ON (Student.data_postupleniya = Kontrolnay_rabota.data_postupleniya) AND (Student.Nomer_bileta = Kontrolnay_rabota.Nomer_bileta)) ON ozenka.id_ozenki = Kontrolnay_rabota.id_ozenki; Запрос для формы «Журнал регистрации» "INSERT INTO zhurnal ( nomer_kontr_raboty, data_registr, Выражение1, data_proverki, Выражение2, id_ozenki ) " & _ "SELECT Kontrolnay_rabota.nomer_kontr_raboty, Kontrolnay_rabota.data_registr, [familiaST] & ' ' & [imaySt] & ' ' & [OtchestvoST] AS Выражение1, Kontrolnay_rabota.data_proverki, [familiaPR] & ' ' & [imayPR] & ' ' & [otchestvoPR] AS Выражение2, Kontrolnay_rabota.id_ozenki " & _ "FROM ozenka INNER JOIN ((Gruppa INNER JOIN Student ON Gruppa.Shifr_gruppa = Student.Shifr_gruppa) INNER JOIN (Kontrolnay_rabota INNER JOIN Prepodavatel ON Kontrolnay_rabota.Tabel_nomer = Prepodavatel.Tabel_nomer) ON Student.Nomer_bileta = Kontrolnay_rabota.Nomer_bileta) ON ozenka.id_ozenki = Kontrolnay_rabota.id_ozenki " & _ "WHERE (((Gruppa.Shifr_gruppa) = [Forms]![Frm_zhurnal_nachalo]![cbovuborg].[Value]) And ((Kontrolnay_rabota.Shifr_disziplina) = [Forms]![Frm_zhurnal_nachalo]![cbovubord].[Value])) " & _ "ORDER BY Kontrolnay_rabota.nomer_kontr_raboty;" Запрос, выполняющийся при проверке контрольной работы на форме «Журнал регистрации» "UPDATE Kontrolnay_rabota SET Kontrolnay_rabota.data_proverki = [dp], Kontrolnay_rabota.id_ozenki = [oc] " & _ "WHERE (((Kontrolnay_rabota.nomer_kontr_raboty)=[u]));" Запрос выполняющийся при закрытии формы «Журнал регистрации» "DELETE zhurnal.* " & _ "FROM zhurnal;" Приложение Г Отчеты Отчет по проверенным контрольным работам за определенный период выбранным преподавателем представлен на рисунке Г1. Рисунок Г1 - Отчет по преподавателю Отчет по проверенным контрольным работам выбранного студента за определенный период представлен на рисунке Г2. Рисунок Г2 - Отчет по студенту Отчет по всем преподавателям отображающий количество проверенных контрольных работ и количество затраченного на это времени представлен на рисунке Г3. Рисунок Г3 - Отчет по всем преподавателям Рецензия для контрольной работы представлена на рисунке Г4. Рисунок Г4 - Рецензия для контрольной работы. Отчет по студенту отображающий сданные контрольные работы выбранным студентом представлен на рисунке Г5. Рисунок Г5 - Отчет по студенту Отчет по сданным контрольным работам преподавателю представлен на рисунке Г6. Рисунок Г6 - Отчет по преподавателю. Отчет по контрольным работам студента на web странице представлен на рисунке Г7 Рисунок Г7 - контрольные работы выведенные на web странице. Приложение Д Руководство пользователя Алгоритм работы секретаря 1. Открыть главную форму приложения, которая представлена на рисунке Д1 Рисунок Д1 - главная форма приложения 2. Нажать «Регистрация контрольных». На открывшейся форме «Регистрация контрольных» представленной на Рисунке Д2 сделать следующее: - выбрать группу, если необходимой группы нет, то нажать кнопку 1 и в открывшейся форме, представленной на Рисунке Д3 ввести нужное; - выбрать студента, если нужного студента нет, то нажав кнопку 2 откроется форма (Рисунок Д4), где можно занести нового студента; - выбрать дисциплину, если нужное нет то. Нажать кнопку 12и в открывшейся форме (Рисунок Д5) занести новую дисциплину; - выбрать преподавателя, если нужного нет, то нажать кнопку 11 и в открывшейся форме (Рисунок Д6) занести преподавателя; - нажать кнопку 9; - для просмотра рецензии нажать кнопку 7; - для печати рецензии нажать кнопку 6. Рисунок Д2 - форма регистрации контрольных Рисунок Д3 - Форма добавления новой группы Рисунок Д4 - Фома добавления нового студента Рисунок Д5 - Форма занесения новой дисциплины Рисунок Д6 - Форма занесения нового преподавателя Для занесения оценки контрольной работы нажать кнопку «Журнал регистрации» на главной форме приложения (Рисунок Д1), после чего откроется форма «Журнал регистрации» представленная на Рисунке Д7. На ней выбрать группу и дисциплину, после чего откроется форма с зарегистрированными контрольными работами, представленная на Рисунке Д8. Найдя нужную контрольную работу в соответствующих окнах указать дату проверки и поставленную оценку. Нажать кнопку «ОК», после этого появится окно (Рисунок Д9), в которое нужно ввести URL адрес и нажать «ОК». Откроется окно браузера(Рисунок Д10) которое следует просто закрыть. Рисунок Д7 - Форма журнала регистрации Рисунок Д8 - Форма зарегистрированных контрольных работ Рисунок Д9 - окно ввода URL адреса Рисунок Д10 - окно браузера
|