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

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

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

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

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

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

Модуль администратора выглядит следующим образом. При загрузке программы у нас появляется главное меню (Рисунок 4.13).

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

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

После выхода из главного меню Модуля администратора соединение с сервером у нас разрывается.

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

В верхней части выбирается предмет для тестирования. Например, математика или информатика. Данные предметов были сделаны для того, чтобы нельзя было перепутать тесты по одинаковым темам, но для разных специальностей и курсов. В нижней части располагается список тем, относящийся к тому или иному предмету. Меняя предмет, нижний список предметов автоматически обновляется. Для выбора предмета необходимо просто выбрать его левой кнопкой мыши в выпадающем списке. Затем нажать кнопку опрос. И на экране появится окно самого теста (Рисунок 4.12)

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

На последнем этапе на экране появляется окно с результатами тестирования

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

5. Расчет себестоимости

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

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

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

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

1. по экономическим элементам затрат (смета затрат);

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

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

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

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

3. амортизация: суммы начисленной амортизации по установленным нормам и амортизационным группам;

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

Технологическая себестоимость

Цеховые расходы

Цеховая себестоимость

Общезаводские расходы

Общезаводская себестоимость

Прочие производственные расходы

Производственная себестоимость

Внепроизводственные расходы

Рисунок 5.1 Последовательность формирования затрат по статьям калькуляции.

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

Таблица 5.1 Смета затрат но экономическим элементам.

Наименование элементов затрат

Сумма (руб.)

1

Материальные расходы

2

Затраты на оплату труда

3

Единый социальный налог

4

Амортизация

5

Прочие расходы

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

1. Материальные расходы

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

3 = T x Тст (руб.), где

3 - зарплата или оплата труда за выполненную работу (руб.)

T - время, необходимое на весь процесс создания видеопродукции

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

процессы (час).

Тст - часовая тарифная ставка.

T = 2 месяца = 44 дня = 264 часа.

Тст = 50 р/час.

З = 264 * 50 = 13200 р.

3. Расходы на оплату труда предполагают начисление единого социального налога (ECH) в размере 26% от зарплаты работника на формирование внебюджетных социальных фондов.

ЕСН = (11200 * 26%) / 100% = 3432 р.

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

рассчитываются по формуле:

А = С x а / 1 00% (руб.); где:

А - амортизационные отчисления (руб.);

С - стоимость оборудования и аппаратуры (руб.);

а - норма амортизации (%), которая по оборудованию: a = 10%;

A = (16866р * 10%) / 100% = 1686.6р

Для расчета стоимости оборудования составляется таблица.

Таблица 5.2 Смета затрат на оборудование.

п. п.

Наименование

оборудования

Стоимость

единицы

оборудования

Количество

единиц

оборудования (шт.)

Сумма

затрат

1

Системный блок

1100

2

2200

2

Монитор

6330

2

12660

3

Свитч

1350

1

1350

4

Клавиатура

208

2

416

5

Мышь

120

2

240

Итог суммы затрат составит стоимость оборудования.

Всего 16866 р.

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

способом и составляют 30% от суммы статей 1 - 4 таблицы 1.

Прочие расходы - 10133.73.

Значения рассчитанных элементов расходов переносятся в таблицу 1. Для расчета себестоимости видеопродукции необходимо просуммировать статьи 1-5 таблицы 1.

Наименование элементов затрат

Сумма (руб.)

1

Материальные расходы

16866

2

Затраты на оплату труда

13200

3

Единый социальный налог

3432

4

Амортизация

1686.6

5

Прочие расходы

10555.38

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

6. Техника безопасности

6.1 Требования по охране труда в соответствии с инструкцией №32-04-Б

6.1.1 Требования безопасности перед началом работы

Перед началом работы необходимо:

· осмотреть и привести в порядок рабочее место;

· отрегулировать освещенность на рабочем месте, убедиться в достаточности освещенности, отсутствии отражений на экране, отсутствии встречного светового потока;

· проверить правильность подключения оборудования в электросеть;

· убедиться в наличии защитного заземления и подключения экранного проводника к корпусу процессора;

· убедиться в отсутствии дискет в дисководах процессора персонального компьютера;

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

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

· включить блок питания;

· включить периферийные устройства (принтер, монитор, сканер и дт.);

· включить системный блок (процессор).

Запрещается приступать к работе при:

· отключенном заземляющем проводнике защитного фильтра;

· обнаружении неисправности оборудования;

· отсутствии защитного заземления устройств ПЭВМ.

6.1.2 Требования безопасности во время работы

Во время работы необходимо:

· в течение всего рабочего дня содержать в порядке и чистоте рабочее место;

· держать открытыми все вентиляционные отверстия устройств;

· при необходимости прекращения работы на некоторое время корректно закрыть все активные задачи;

· во время перерыва в работе на компьютере отключить питание, если пользователь находится в непосредственной близости (менее 2 метров), в противном случае питание можно не отключать;

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

· соблюдать установленные режимом рабочего времени регламентированные перерывы в работе; технические перерывы необходимо проводить каждые 45 минут, длительность перерыва должна составлять не менее 5 ? 15 минут в зависимости от напряженности рабочего графика;

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

· соблюдать расстояние от глаз до экрана в пределах 60-80см;

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

Во время работы запрещается:

· касаться одновременно экрана монитора и клавиатуры;

· прикасаться к задней панели системного блока (процессора) при включенном питании;

· загромождать верхние панели устройств бумагами и посторонними предметами;

· переключать разъемы интерфейсных кабелей периферийных устройств при включенном питании;

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

· производить отключение питания во время выполнения активной задачи;

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

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

· превышать величину количества обрабатываемых символов свыше 30 000. за 4 часа работы.

6.1.3 Требования безопасности после окончания работы

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

· произвести закрытие всех активных задач;

· убедиться, что в дисководах нет дискет;

· выключить питание системного блока (процессора);

· выключить питание всех периферийных устройств;

· отключить блок питания;

· осмотреть и привести в порядок рабочее место.

6.2 Вредные факторы

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

6.2.1 Физические

· повышенные уровни электромагнитного излучения;

· повышенные уровни рентгеновского излучения,

· повышенные уровни ультрафиолетового излучения,

· повышенный уровень инфракрасного излучения,

· повышенный уровень статического электричества,

· повышенные уровни запыленности воздуха рабочей зоны,

· повышенное содержание положительных аэроионов в воздухе рабочей зоны,

· пониженное содержание отрицательных аэроионов в воздухе рабочей зоны,

· пониженная или повышенная влажность воздуха рабочей зоны,

· пониженная или повышенная подвижность воздуха рабочей зоны,

· повышенный уровень прямой блесткости,

· повышенный уровень ослепленности,

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

· повышенная яркость светового изображения,

· повышенный уровень пульсации светового потока,

· повышенное значение напряжения в электрической цепи, замыкание которой может произойти через тело человека.

6.2.2 Химические

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

6.2.3 Психофизиологические

· напряжение зрения,

· напряжение внимания, интеллектуальные нагрузки,

· эмоциональные нагрузки,

· длительные статические нагрузки,

· монотонность труда,

· большой объем информации, обрабатываемой в единицу времени,

· нерациональная организация рабочего места; биологические:

· повышенное содержание в воздухе рабочей зоны микроорганизмов.

Чем же вредны эти воздействия? Например, сильный шум вызывает трудности с распознанием цветовых сигналов, снижает быстроту восприятия цвета, остроту зрения, зрительную адаптацию, нарушает восприятие визуальной информации, уменьшает на 5 - 12 % производительность труда. Длительное воздействие шума с уровнем звукового давления 90 дБ снижает производительность труда на 30 - 60 %. Для устранения негативного влияния перечисленных факторов необходимо соблюдать как требования по условиям труда, так и требования по безопасности в аварийных ситуациях.

6.3 Требования по условиям труда

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

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

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

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

При размещении рабочих мест с ПЭВМ расстояние между рабочими столами с видеомониторами (в направлении тыла поверхности одного видеомонитора и экрана другого видеомонитора) должно быть не менее 2м, а расстояние между боковыми поверхностями видеомониторов ? не менее 1,2м.

Рабочие места с ПЭВМ при выполнении творческой работы, требующей значительного умственного напряжения или высокой концентрации внимания, должны быть изолированы друг от друга перегородками высотой 1,5 ? 2м.

Экран видеомонитора должен находиться от глаз пользователя на расстоянии 600 ? 700мм, но не ближе 500мм с учетом размеров алфавитно-цифровых знаков и символов.

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

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

Лица, работающие с ПЭВМ более 50% рабочего времени (профессионально связанные с эксплуатацией ПЭВМ), должны проходить обязательный периодический мед. осмотр согласно приказа Минздравмедпрома от 14.03.96г. №90. Женщины со времени установления беременности должны переводиться на работы, не связанные с использованием ПЭВМ или для них должно ограничиваться время работы с ПЭВМ (не более 3-х часов за рабочую смену) при условии соблюдения установленных гигиенических требований. Немаловажное значение имеет правильная окраска помещений, особо лишенных естественного освещения и зрительной связи с внешней средой. Правильный выбор цвета компенсирует этот недостаток. Яркая окраска оживляет помещение и улучшает психологическое состояние человека. Необходимо учитывать, что цвет является сильным психологическим стимулятором:

красный цвет увеличивает мускульное напряжение;

оранжевый - стимулирует деятельность;

желтый - стимулирует зрение и нервную систему;

зеленый - успокаивает;

голубой - ослабляет мускульное напряжение;

фиолетовый - создает состояние спокойствия.

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

6.4 Требования безопасности в аварийных ситуациях в случае обнаружения аварийной ситуации

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

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

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

· в случае появления рези в глазах, резком ухудшении видимости - невозможности сфокусировать взгляд или навести его на резкость, появлении боли в пальцах и кистях рук, усилении сердцебиения немедленно покинуть рабочее место, сообщить о происшедшем руководителю и обратиться к врачу;

· при возгорании оборудования отключить питание и принять меры к тушению очага пожара имеющимися средствами пожаротушения, вызвать пожарную команду по телефону 01 и сообщить о происшедшем своему непосредственному руководителю;

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

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

Заключение

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

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

Список используемых источников

1. Delphi/ Под общ. ред. А.Д. Хомоненко. ? СПб.: БХВ-Петербург, 2006. ? 1216 с.

2. Delphi 7: Учебный курс/ Бобровский С.И. - СПб: "Питер", 2005. ? 736 с.

3. Введение в SQL для баз данных в архитектуре клиент/сервер/ Туманов В.Е., Гайфуллин Б.Н., Сгибнев В.Я. ? М.: Интерфейс Пресс, 2000. ? 188 стр.

4. Введение в системы баз данных (7-е издание) / Крис Дейт ? М.: Вильямс, 2001. ? 1072 с.

5. Основные концепции баз данных/ Фред Роланд ? М.: Вильямс, 2002. ? 256 с.

6. Рекомендации по подготовке и оформлению курсовых и дипломных работ. - 2 изд., переработанное и дополненное. / В.С. Голодаева. ? М.: Издательско-торговая корпорация "Дашков и Кє", 2003. ? 44 с.

7. Ингенкамп К. Педагогическая диагностика. - М.: Педагогика, 1991. - 240 c.;

8. Талызина Н.Ф. Методика составления обучающих программ. - М., 1980. - 46 с.

9. Шестоперов С.Б., Капелюш Г.С. Технико-экономическое обоснование дипломных проектов по созданию программных средств ВТ и информатики. Учебное пособие, М: МИП, 1993.

10. Калмыков Ю.В., Уроженке В.В. Структурный или объектно-ориентированный подход в программировании // М.: МИФИ, 2003.

11. В.В. Фаронов Delphi 5 Руководство программиста. // М.: "Нолидж", 2001.

12. Беспалько В.П. Педагогика и прогрессивные технологии обучения. - М.: 1995.

13. Камер Дуглас Э. Компьютерные сети и Internet. Разработка приложений для Internet: Пер. с англ. - М.: Изд. дом "Вильяме", 2002.

14. Основы SQL Полякова Л.Н.

15. Издательство: Интернет-университет информационных технологий - ИНТУИТ. ру ", БИНОМ. Лаборатория знаний " Серия: Основы информационных технологий " Год выпуска: 2007 Объем: 224 стр.

16. Основы проектирования приложений баз данных Баженова И. Ю.

17. Издательство: Интернет-университет информационных технологий - ИНТУИТ. ру " Серия: Основы информационных технологий " Год выпуска: 2006 Объем: 320 стр.

18. Базы данных в Delphi 7. Самоучитель. Понамарев В. А.

19. Википедия - свободная энциклопедия, создаваемая совместными усилиями добровольцев [Электронный реурс] ? М., 2007. ? www.ru. wikipedia.org

20. MSDN - http://msdn. microsoft.com/

21. Система тестирования knost http://www.scorp.ru/knost/kn_download. php? PHPSESSID=73f9bfa7aade1835d9c1738be3a73673

22. http://www.delphirus.com.ru

23. http://www.mysql.com/

24. Интернет-Университет Информационных Технологий http://www.INTUIT.ru

25. http://www.alphaskins.com/

26. http://www.interbase.ru/

27. ГОСТ 12.1.005-88. Общие санитарно-гигиенические требования к воздуху рабочей зоны.

28. ГОСТ 12.2.032-78 ССТБ. Рабочее место при выполнении работ сидя.

29. ИНСТРУКЦИЯ № 32-04-Б по охране труда при работе на персональных электронно-вычислительных машинах (ПЭВМ) и видеодисплейных терминалах (ВДТ).

30. Межотраслевым правилам по охране труда (правилам безопасности) при эксплуатации электроустановок ПОТ Р М-016-2001 РД 153-34.0-03.150-00

31. Методические указания по выполнению раздела "Охрана труда" в дипломных проектах (спец.0102, 2201, 2202). Часть 1. - М.: МИП, 1998.

32. Рекомендации по организации выполнения и защиты выпускной квалификационной работы в Сергиево-Посадском киновидеотехническом колледже. ? 2007. ? 5 с.

33. СанПиН 2.2.2/2.4.1340-03 "Гигиенические требования к персональным электронно-вычислительным машинам и организации работы"

34. ТОИ Р 01-00-01-96 "Типовая инструкция по охране труда для операторов и пользователей персональных электронно-вычислительных машин (ПЭВМ) и работников, занятых эксплуатацией ПЭВМ и видеодисплейных терминалов (ВДТ)"

Приложения

Приложение А

Модуль администратора

unit unit_authentication;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, unit_dm, StdCtrls, ExtCtrls, DBCtrls, Grids, DBGrids, unit_main_manager,

Buttons, sBitBtn, sLabel, sEdit, sGroupBox;

type

Tauthentication = class(TForm)

Bok: TsBitBtn;

sGroupBox1: TsGroupBox;

Euser: TsEdit;

Epas: TsEdit;

sLabel1: TsLabel;

sLabel2: TsLabel;

procedure BokClick(Sender: TObject);

procedure FormShow(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

private

{ Private declarations }

public

{ Public declarations }

end;

var

authentication: Tauthentication;

implementation

uses

unit_start;

{$R *.dfm}

procedure Tauthentication.BokClick(Sender: TObject);

// клик на кнопке принять

begin

if dm.log_in(euser.Text, epas.Text) then

begin

hide;

main_manager.Show;

end

else

begin

euser.Clear;

epas.Clear;

ShowMessage('Неправильный пароль или имя пользователя');

end;

end;

procedure Tauthentication.FormClose(Sender: TObject; var Action: TCloseAction);

begin

Form_Start.Close;

end;

procedure Tauthentication.FormShow(Sender: TObject);

begin

dm.ConnectSPKVTK();

dm.LoadSkinoutBD();

end;

end.

unit unit_edit_test;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Mask, DBCtrls, unit_dm, ExtCtrls, jpeg, Buttons, ComCtrls,

Grids, DBGrids, JRCheckBox, JRDBCheckBoxMySQL, DB, DBTables, Menus, ActnPopup,

ActnList, XPStyleActnCtrls, ActnMan, sEdit, sBitBtn, sDBRichEdit, sRichEdit,

sSplitter, sRadioButton, sCheckBox, sPanel, sScrollBox, sGroupBox;

type

TEdit_test = class(TForm)

ReLoadAll: TsBitBtn;

BoxAnswer: TsScrollBox;

MenuAnswer: TPopupMenu;

delete: TMenuItem;

MainAnswer: TsGroupBox;

QuestionText: TsDBRichEdit;

BoxQuestionrNavigator: TsGroupBox;

QCreate: TsBitBtn;

ACreate: TsBitBtn;

dbQGoToN: TsBitBtn;

dbQPost: TsBitBtn;

dbAReLoad: TsBitBtn;

dbQCancel: TsBitBtn;

N_Question: TsEdit;

dbQPrior: TsBitBtn;

dbQLasst: TsBitBtn;

dbQNext: TsBitBtn;

dbQFirst: TsBitBtn;

QDelete: TsBitBtn;

BoxMainIllustration: TsGroupBox;

BoxIllustration: TsGroupBox;

DBIllustrationText: TsDBRichEdit;

BoxNavigationIllustration: TsGroupBox;

mix_answer: TJRDBCheckBoxMySQL;

only_one: TJRDBCheckBoxMySQL;

mix_question: TJRDBCheckBoxMySQL;

BoxIllustrationStreatch: TsGroupBox;

propstr: TJRDBCheckBoxMySQL;

Questionillustration: TImage;

sSplitter1: TsSplitter;

DeleteQIllustration: TsBitBtn;

CreateQIllustration: TsBitBtn;

SaveQIllustration: TsBitBtn;

dbILast: TsBitBtn;

dbINext: TsBitBtn;

dbIPrior: TsBitBtn;

dbIFirst: TsBitBtn;

dbIGoToN: TsBitBtn;

N_Illustration: TEdit;

procedure deleteClick(Sender: TObject);

procedure dbQCancelClick(Sender: TObject);

procedure DeleteQIllustrationClick(Sender: TObject);

procedure dbIGoToNClick(Sender: TObject);

procedure dbILastClick(Sender: TObject);

procedure dbINextClick(Sender: TObject);

procedure dbIPriorClick(Sender: TObject);

procedure dbIFirstClick(Sender: TObject);

procedure QuestionillustrationClick(Sender: TObject);

procedure SaveQIllustrationClick(Sender: TObject);

procedure CreateQIllustrationClick(Sender: TObject);

procedure dbQPostClick(Sender: TObject);

procedure dbQGoToNClick(Sender: TObject);

procedure dbQLasstClick(Sender: TObject);

procedure dbQNextClick(Sender: TObject);

procedure dbQPriorClick(Sender: TObject);

procedure dbQFirstClick(Sender: TObject);

procedure dbAReLoadClick(Sender: TObject);

procedure ReLoadAllClick(Sender: TObject);

procedure ACreateClick(Sender: TObject);

procedure FormShow(Sender: TObject);

procedure FormDestroy(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure QCreateClick(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure QDeleteClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

procedure InsertAnswer();//Вставка нового ответа

procedure CreateList();//Создание переменных для хранения информации о динамечиске созданных элементвх

procedure DestroyObject();//Уничтожение созданных объектов

procedure LoadQuestion();//Получение списка вопросов по предметов

procedure LoadAnswer();//Получение списка ответов по вопросу

procedure CreateQuestion();//Создание нового вопроса

procedure CreateAnswer();//Создание нового ответа

procedure FreeListAnswer();//Уничтожение переменных для хранения информации о динамечиске созданных элементвх

procedure OpenIllustrationQuestion();//Открытие картинки для вопроса

function OpenIllustrationAnswer(): string;//Открытие иллюстрации для ответа

procedure ClickIllustrationAnswer(Sender: TObject);//Клик на картинке ответа

procedure ClickRadioAnswer(Sender: TObject);//Клик на зависемом переключателе

procedure ClikCheckAnswer(Sender: TObject);//Клик на независемом переключателе

procedure ClikCheckPropStr(Sender: TObject);//Клик на переключателе пропстр

procedure ClikTextAnswer(Sender: TObject);//Клик на тексте ответа

procedure MouseDownAnswerText(Sender: TObject;

Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

procedure SaveAnswer();//Сохранение ответов

procedure Loadillustration();//Загрузка картинок вопроса из бд

procedure Createillustration();//Создание картинки вопроса

procedure ReLoadIllustration();// Отображение картинки

procedure SaveillustrationQuestion();//Сохранение картинок

end;

var

Edit_test: TEdit_test;

AnswerTop: integer;

PanelList: TList;

TextList: TList;

SplitList: TList;

ImageList: TList;

CheckList: TLIst;

CheckStretchList: TLIst;

RadioList: TList;

RadioIndex: array[0..1000] of integer;

CheckIndex: array[0..1000] of integer;

CheckStretchIndex: array[0..1000] of integer;

TextIndex: array[0..1000] of integer;

IllustrationIndex: array[0..1000] of integer;

SenderRich: TObject;

implementation

{$R *.dfm}

uses

unit_main_manager;

procedure TEdit_test.ACreateClick(Sender: TObject);

begin

dm.Last_Selected.id_question := dm.Query_Question.FieldByName('id_question').AsInteger;

CreateAnswer();

dm.Load_Answer;

LoadAnswer();

end;

procedure TEdit_test.QCreateClick(Sender: TObject);

begin

CreateQuestion();

dbQLasst.Click;

ACreate.Click;

LoadQuestion();

end;

procedure TEdit_test.QDeleteClick(Sender: TObject);

begin

dm.Query_Question.Delete;

dm.Load_Answer;

LoadAnswer();

end;

procedure TEdit_test.QuestionillustrationClick(Sender: TObject);

begin

OpenIllustrationQuestion();

end;

procedure TEdit_test.dbINextClick(Sender: TObject);

begin

dm.Query_Illustration.Next;

ReLoadIllustration();

end;

procedure TEdit_test.dbIPriorClick(Sender: TObject);

begin

dm.Query_Illustration.Prior;

ReLoadIllustration();

end;

procedure TEdit_test.ClickIllustrationAnswer;

//обработчик клика на картинке ответа

var

FileName: String;

begin

FileName := OpenIllustrationAnswer();

if not (FileName <> '') then

exit;

TImage(Sender).Picture.LoadFromFile(FileName);

end;

procedure TEdit_test.ClickRadioAnswer(Sender: TObject);

//клик на зависемом переключателе ответа

var

ID: integer;

ID_ND: integer;

index: integer;

Checked: Char;

begin

ID_ND := RadioIndex[TsRadioButton(Sender).Tag];

index := 0;

while index < 100 do

begin

try

ID := RadioIndex[TsRadioButton(RadioList.Items[index]).Tag];

Checked := '0';

if ID = ID_ND then

begin

TsRadioButton(RadioList.Items[index]).Checked := True;

With dm.Query_Answer do

begin

Active := false;

SQL.Clear;

SQL.Add('UPDATE Answer ') ;

SQL.Add('SET correct = 1');

SQL.Add('WHERE id_answer =' + IntToStr(ID));

Active := true;

end;

end

else

begin

TsRadioButton(RadioList.Items[index]).Checked := False;

With dm.Query_Answer do

begin

Active := false;

SQL.Clear;

SQL.Add('UPDATE Answer ') ;

SQL.Add('SET correct = 0');

SQL.Add('WHERE id_answer =' + IntToStr(ID));

Active := true;

end;

end;

except

;

end;

inc(index);

end;

end;

procedure TEdit_test.ClikCheckAnswer(Sender: TObject);

//клик на независемом переключателе ответа

var

ID: integer;

ID_ND: integer;

index: integer;

Checked: Char;

begin

ID_ND := CheckIndex[TsCheckBox(Sender).Tag];

index := 0;

while index < 100 do

begin

try

ID := CheckIndex[TsCheckBox(CheckList.Items[index]).Tag];

if ID = ID_ND then

begin

if TsCheckBox(CheckList.Items[index]).Checked = True then

Checked := '1'

else

Checked := '0';

With dm.Query_Answer do

begin

Active := false;

SQL.Clear;

SQL.Add('UPDATE Answer ') ;

SQL.Add('SET correct = ' + Checked);

SQL.Add('WHERE id_answer =' + IntToStr(ID));

Active := true;

end;

end;

except

;

end;

inc(index);

end;

end;

procedure TEdit_test.ClikCheckPropStr(Sender: TObject);

//Клик на PropStr ответа

var

ID: integer;

ID_ND: integer;

index: integer;

Checked: Char;

begin

ID_ND := CheckStretchIndex[TsCheckBox(Sender).Tag];

index := 0;

while index < 100 do

begin

try

ID := CheckStretchIndex[TsCheckBox(CheckList.Items[index]).Tag];

if ID = ID_ND then

begin

if TsCheckBox(CheckStretchList.Items[index]).Checked = True then

Checked := '1'

else

Checked := '0';

With dm.Query_Answer do

begin

Active := false;

SQL.Clear;

SQL.Add('UPDATE Answer ') ;

SQL.Add('SET propstr = ' + Checked);

SQL.Add('WHERE id_answer =' + IntToStr(ID));

Active := true;

end;

end;

except

;

end;

inc(index);

end;

end;

procedure TEdit_test.ClikTextAnswer(Sender: TObject);

//клик на поле ткста ответа

begin

SenderRich := Sender;

end;

procedure TEdit_test.CreateAnswer;

//создание нового ответа

begin

try

dm.Create_Answer_New(dm.Last_Selected.id_question);

except

;

end;

end;

procedure TEdit_test.Createillustration;

begin

dm.Last_Selected.id_question := dm.Query_Question.FieldByName('id_question').AsInteger;

dm.Create_Illustration_New(dm.Last_Selected.id_question);

dm.Load_Illustration();

end;

procedure TEdit_test.CreateList;

begin

// Создание контейнеров Tlist для нумерации компонентов

TextList := TList.Create;

PanelList := TList.Create;

SplitList := TList.Create;

ImageList := TList.Create;

CheckList := TLIst.Create;

CheckStretchList := TLIst.Create;

RadioList := TList.Create;

end;

procedure TEdit_test.CreateQuestion;

begin

try

dm.Create_Question_New(dm.Last_Selected.id_theme);

dm.Load_Question();

except

;

end;

end;

procedure TEdit_test.CreateQIllustrationClick(Sender: TObject);

begin

Createillustration();

dm.Query_Illustration.Last;

ReLoadIllustration();

OpenIllustrationQuestion();

end;

procedure TEdit_test.DeleteQIllustrationClick(Sender: TObject);

begin

dm.Query_Illustration.Delete;

ReLoadIllustration();

end;

procedure TEdit_test.DestroyObject;

begin

FreeListAnswer();

end;

procedure TEdit_test.dbQCancelClick(Sender: TObject);

begin

try

dm.Query_Question.Cancel;

except

;

end;

SaveAnswer();

LoadQuestion();

end;

procedure TEdit_test.dbQFirstClick(Sender: TObject);

//переход на первый вопрос

begin

dm.Query_Question.First;

LoadQuestion();

LoadAnswer

end;

procedure TEdit_test.FormClose(Sender: TObject; var Action: TCloseAction);

begin

main_manager.Show;

end;

procedure TEdit_test.FormCreate(Sender: TObject);

begin

CreateList();

AnswerTop := 15;

end;

procedure TEdit_test.FormDestroy(Sender: TObject);

begin

DestroyObject();

end;

procedure TEdit_test.FormShow(Sender: TObject);

begin

dm.Load_Question();

dm.Query_Question.First;

LoadQuestion();

dm.Query_Illustration.First;

ReLoadIllustration();

MainAnswer.Width := Round(edit_test.Width * 0.4);

BoxMainIllustration.Height := Round(edit_test.Height * 0.3);

end;

procedure TEdit_test.FreeListAnswer;

var

index: integer;

begin

// Уничтожаем текст

index := 0;

try

while true do

begin

TRichEdit(TextList.Items[index]).Free;

inc(index);

end;

except

;

end;

// Уничтожаем картинки

index := 0;

try

while true do

begin

TImage(ImageList.Items[index]).Free;

inc(index);

end;

except

;

end;

// Уничтожаем сплиты

index := 0;

try

while true do

begin

TSplitter(SplitList.Items[index]).Free;

inc(index);

end;

except

;

end;

// Уничтожаем радиобт

index := 0;

try

while true do

begin

TRadioButton(RadioList.Items[index]).Free;

inc(index);

end;

except

;

end;

// Уничтожаем чекеты

index := 0;

try

while true do

begin

TCheckBox(CheckList.Items[index]).Free;

inc(index);

end;

except

;

end;

// Уничтожаем чекеты stretch / proportional

index := 0;

try

while true do

begin

TCheckBox(CheckStretchList.Items[index]).Free;

inc(index);

end;

except

;

end;

// Уничтожаем панели ответов

index := 0;

try

while true do

begin

TPanel(PanelList.Items[index]).Free;

inc(index);

end;

except

;

end;

// чистим листы ..

try

TextList.Clear;

PanelList.Clear;

SplitList.Clear;

ImageList.Clear;

CheckList.Clear;

CheckStretchList.Clear;

RadioList.Clear;

TextList.Free;

PanelList.Free;

SplitList.Free;

ImageList.Free;

CheckList.Free;

CheckStretchList.Free;

RadioList.Free;

except

;

end;

end;

procedure TEdit_test.dbQGoToNClick(Sender: TObject);

//переход на первый вопрос

begin

dm.Query_Question.RecNo := StrToInt(N_Question.Text);

LoadQuestion();

end;

procedure TEdit_test.InsertAnswer;

// вырисовка...

var

AnswerText: TRichEdit;

AnswerPanel: TsPanel;

AnswerCheck: TsCheckBox;

AnswerCheckStretch: TsCheckBox;

AnswerRadio: TsRadioButton;

AnswerImage: TImage;

AnswerSplitTop,

AnswerSplitBottom,

AnswerSplitRight,

AnswerSplitLeft: TsSplitter;

AnswerSplitBottomPole,

AnswerSplitLeftPole: TsSplitter;

PictureStream: TStream;

begin

//Создаю панель ответа

AnswerPanel := TsPanel.Create(BoxAnswer);

AnswerPanel.Top := AnswerTop;

AnswerPanel.Height := Round((BoxAnswer.Height * 40)/100);

AnswerPanel.Width := BoxAnswer.Width - 25;

AnswerPanel.Left := 5;

AnswerPanel.BorderStyle := bsSingle;

AnswerPanel.BorderWidth := 5;

AnswerPanel.Color := clSilver;

AnswerPanel.Tag := PanelList.Add(AnswerPanel);

BoxAnswer.InsertControl(AnswerPanel);

begin

AnswerImage := TImage.Create(AnswerPanel);

AnswerImage.Align := alBottom;

AnswerImage.Height := Round(AnswerPanel.Height / 2 - 6);

AnswerImage.Picture.Assign(dm.Query_Answer.FieldByName('illustration'));

if dm.Query_Answer.FieldByName('propstr').AsInteger = 1 then

begin

AnswerImage.Proportional := true;

AnswerImage.Stretch := true;

end

else

begin

AnswerImage.Proportional := false;

AnswerImage.Stretch := true;

end;

AnswerImage.OnClick := ClickIllustrationAnswer;

AnswerImage.Tag := ImageList.Add(AnswerImage);

IllustrationIndex[AnswerImage.Tag] := dm.Query_Answer.FieldByName('id_answer').AsInteger;

AnswerPanel.InsertControl(AnswerImage);

end;

//Создаю нижний сплит поля

AnswerSplitBottomPole := TsSplitter.Create(AnswerPanel);

AnswerSplitBottomPole.Height := 5;

AnswerSplitBottomPole.Width := 5;

AnswerSplitBottomPole.Align := alBottom;

AnswerSplitBottomPole.Tag := SplitList.Add(AnswerSplitBottomPole);

AnswerPanel.InsertControl(AnswerSplitBottomPole);

if only_one.Checked then

begin

//Создаю зависемый переключатель

AnswerRadio := TsRAdioButton.Create(AnswerPanel);

AnswerRadio.Width := 13 ;

AnswerRadio.Align := alLeft ;

AnswerRadio.Tag := RadioList.Add(AnswerRadio);

if dm.Query_Answer.FieldByName('correct').AsInteger = 1 then

begin

AnswerRadio.Checked := true;

end

else

begin

AnswerRadio.Checked := false;

end;

AnswerRadio.OnClick := ClickRadioAnswer;

RadioIndex[AnswerRadio.Tag] := dm.Query_Answer.FieldByName('id_answer').AsInteger;

AnswerPanel.InsertControl(AnswerRadio);

end

else

begin

//Создаю независемый переключатель

AnswerCheck := TsCheckBox.Create(AnswerPanel);

AnswerCheck.Width := 13 ;

AnswerCheck.Align := alLeft ;

if dm.Query_Answer.FieldByName('correct').AsInteger = 1 then

begin

AnswerCheck.Checked := true;

end

else

begin

AnswerCheck.Checked := false;

end;

AnswerCheck.OnClick := ClikCheckAnswer;

AnswerCheck.Tag := CheckList.Add(AnswerCheck);

CheckIndex[AnswerCheck.Tag] := dm.Query_Answer.FieldByName('id_answer').AsInteger;

AnswerPanel.InsertControl(AnswerCheck);

end;

//Создаю левый сплит

AnswerSplitLeft := TsSplitter.Create(AnswerPanel);

AnswerSplitLeft.Height := 5;

AnswerSplitLeft.Width := 5;

AnswerSplitLeft.Align := alLeft;

AnswerSplitLeft.Visible := false;

AnswerSplitLeft.Tag := SplitList.Add(AnswerSplitLeft);

AnswerPanel.InsertControl(AnswerSplitLeft);

//создаю переключатель stretch / proportional

AnswerCheckStretch := TsCheckBox.Create(AnswerPanel);

AnswerCheckStretch.Width := 13 ;

AnswerCheckStretch.Align := alBottom ;

if dm.Query_Answer.FieldByName('propstr').AsInteger = 1 then

begin

AnswerCheckStretch.Checked := true;

end

else

begin

AnswerCheckStretch.Checked := false;

end;

AnswerCheckStretch.OnClick := ClikCheckPropStr;

AnswerCheckStretch.Tag := CheckStretchList.Add(AnswerCheckStretch);

CheckStretchIndex[AnswerCheckStretch.Tag] := dm.Query_Answer.FieldByName('id_answer').AsInteger;

AnswerPanel.InsertControl(AnswerCheckStretch);

//Создаю поле ответа

AnswerText := TRichEdit.Create(AnswerPanel);

AnswerText.Align := alClient;

AnswerText.BorderStyle := bsSingle;

AnswerText.BorderWidth := 5;

AnswerText.ScrollBars := ssVertical;

AnswerText.PopupMenu := MenuAnswer;

AnswerText.OnClick := ClikTextAnswer;

AnswerText.OnMouseDown := MouseDownAnswerText;

AnswerText.Tag := TextList.Add(AnswerText);

TextIndex[AnswerText.Tag] := dm.Query_Answer.FieldByName('id_answer').AsInteger;

AnswerPanel.InsertControl(AnswerText);

AnswerText.Text := dm.Query_Answer.FieldByName('answer').AsString;

AnswerTop := AnswerTop + Answerpanel.Height + 10;

end;

procedure TEdit_test.dbQLasstClick(Sender: TObject);

//переход на последний вопрос

begin

dm.Query_Question.Last;

LoadQuestion();

end;

procedure TEdit_test.LoadAnswer;

//прорисовываем ответы на форме

begin

FreeListAnswer();

CreateList();

AnswerTop := 10;

dm.Query_Answer.First;

while not dm.Query_Answer.Eof do

begin

InsertAnswer();

dm.Query_Answer.Next;

end;

end;

procedure TEdit_test.Loadillustration;

begin

dm.Last_Selected.id_question := dm.Query_Question.FieldByName('id_question').AsInteger;

dm.Load_Illustration;

dm.Query_Illustration.First;

ReLoadIllustration();

end;

procedure TEdit_test.LoadQuestion;

//загрузка данных вопроса

begin

try

Questionillustration.Stretch := propstr.Checked;

except

;

end;

dm.Load_Answer();

dm.Query_Answer.First;

LoadAnswer();

loadIllustration();

end;

procedure TEdit_test.MouseDownAnswerText(Sender: TObject;

Button: TMouseButton; Shift: TShiftState; X, Y: Integer);


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

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