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

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

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 24.11.2010
Размер файла 807,0 K

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

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

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

Кондиционеры бывают двух видов:

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

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

Контроль параметров микроклимата осуществляется с помощью приборов непрерывного и периодического измерения. Измерения производятся пять раз в смену на высоте 1.5 метра от пола. Приборы непрерывного измерения: термографы, барографы. Они измеряют соответственно температуру, относительную влажность, атмосферное давление. Для обеспечения требуемых метеорологических условий труда принимают системы отопления, вентиляции и кондиционирования. Для очищения воздуха пыли в местах забора устанавливают фильтры 2-го и 3-го класса типов ФППУ, ФСВУ, ФЯЛ, ФВН.

Для эксплуатации ЭВМ предусматривается три типа помещений:

основные - к ним относятся: машинный зал, помещения для размещения сервисной и периферийной аппаратуры;

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

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

Помещения ВЦ, их размеры(площадь, объем) выбираются в соответствии количеством работающих и размещенном в них оборудованием. Для обеспечения нормальных условий труда в санитарных нормах устанавливают на одного работающего объем производственного помещения не менее 15 м.

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

высота зала под техническим полом до подвесного потолка 3-3.5 метра,

расстояние между подвесным и основным потолком при этом должно быть 0.5-0.8 метра,

габариты дверей машинного зала принимаются не менее 1.8 х 1.1 метра.

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

Все вспомогательные помещения ВЦ расположены в нижних и цокольных этажах, их высота - 3.3 метра.

6.1.6 Освещение

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

Согласно СНиП II-4-79 п.1.2 помещения для работы с дисплеями и видеотерминалами относятся к I группе по задачам зрительной работы.

Нормированный уровень освещенности для работы с ВТ принят 400 лк (см. табл. 6.3)

Таблица 6.3

Нормирование уровня освещенности

Искусственное освещение

Естественное освещение

Помещения

Освещен-ность рабочих поверхностей, лк

Показатель дискомфорта, не более

Коэффици-ент пульса-ции осве-щенности, % не более

КЕО eHIII, %

при верхнем или верхнем и боковом

при боковом освещении

в зоне с устойчивым снежным покровом

на остальной территории СССР

Помещения для работы с дисплеями, видеотерми-налами

400

40

10

4

1,2

1,5

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

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

Рис 6.1. Кривая силы света светильника с двойной крестовой оптикой.

Благодаря такому светораспределению в верхней полусфере яркость потолка в любом месте, в том числе и непосредственно под светильником, не превышает 200 кд/м2. Габаритная яркость светильников в зоне углов излучения более 50 от вертикали ограничивается в обеих плоскостях 200 кд/м2. (рис. 6.2.)

Рис.6.2. Ограничение яркости (L) светильников общего освещения для работы с видеотерминалом

В ВЦ применяют одностороннее естественное освещение. В машинных залах рабочие места операторов, работающих с дисплеями, располагают подальше от окон и таким образом, чтобы оконные проемы находились сбоку от работающих. В случае если экран ВТ обращен к оконному проему, должны быть предусмотрены специальные экранирующие устройства. Окна рекомендуется снабжать светорассеивающими шторами (=0,5-0,7), регулируемыми жалюзи или солнцезащитной пленкой с металлическим покрытием.

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

Для искусственного освещения помещений ВЦ следует использовать главным образом, люминесцентные лампы белого света (ЛБ) и темно-белого цвета (ЛТБ) мощностью 20,40 или 80 Вт.

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

6.1.7 Расчет естественного освещения

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

Естественное освещение подразделяется на боковое, верхнее и комбинированное.

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

При двухстороннем боковом освещении нормируется минимальное значение КЕО в точке посередине помещения на пересечении вертикальной плоскости характерного разреза помещения и условной рабочей поверхности (или пола).

Исходные данные для расчета:

размер помещения -- 15 * 17 * 4, м;

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

площадь остекления -- 4 м2;

размеры остекления -- 240*200, см.

Нормируемое значение КЕО eн определяется по формуле

,

(6.1.)

где = 1,5% для бокового освещения,

m - коэффициент светового климата, принят 0,9,

C - коэффициент солнечности климата, принят 0,8.

Получаем = 1.50.90.8 = 0.1.

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

,

(6.2.)

где S0 - площадь световых проёмов в свету,

Sn - площадь пола помещения,

eH - нормированное значение КЕО,

Кз - коэффициент запаса, принят 1,2,

0 - световая характеристика окно, принят 15,

Кзд - коэффициент, учитывающий затенение окон противостоящими зданиями, принят 1,2,

0 - коэффициент светопропускания материала, определяется по формуле

,

(6.3.)

где1 - коэффициент светопропускания материала, принят 0,8,

2 - коэффициент, учитывающий потери света в переплётах светопроёмов, принят 0,6,

3 - коэффициент, учитывающий потери света в несущих конструкциях при боковом освещении, принят 1,

4 - коэффициент, учитывающий потери света в солнцезащитных устройствах, принят 1,

5 - коэффициент, учитывающий потери света в защитной сетке, устанавливаемой под фонарями, принимается равным 0,9.

Отсюда = 0,4.

r1 - коэффициент, учитывающий повышение КЕО при боковом освещении, принят 1,25.

При выборе коэффициентов использовались значения для лаборатории центра ИТ.

Расчёт коэффициента естественной освещённости (КЕО) производится по формуле

,

(6.4.)

где - геометрический КЕО в расчётной точке при боковом освещении, учитывающий свет неба,

q - коэффициент, учитывающий неравномерную яркость облачного неба, принят 0,91 при угловой высоте светопроёма над рабочей поверхностью 34 град,

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

R - коэффициент, учитывающий относительную яркость противостоящих зданий, принят 0,15 при Z1 = 0,5, Z2 = 1.

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

(6.5.)

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

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

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

,

(6.6.)

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

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

Расчёт:

= 0,56,

= 0,42,

= 0,239.

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

6.1.8 Организация рабочего места

При размещении ВТ на рабочем месте согласно ГОСТ 12.2.032-78 учитываются границы полей зрения оператора, которые определяются движениями глаз и головы. Различают зоны зрительного наблюдения в вертикальной плоскости, ограниченные определенными углами, в которых располагаются экран ВТ (40-60 ), пюпитр (35-45 ) и клавиатура. (рис. 6.3.)

Рис.6.3. Зоны зрительного наблюдения в вертикальной плоскости

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

Высота сидения от пола должна регулироваться в пределах 42-55 см. Зависимость высоты рабочей поверхности от роста человека показана на рис.6.5. По желанию оператора устанавливается подставка для ног размером 40х30х15 см и углом наклона 0-20 с нескользящим покрытием и неперемещаемая по полу.

Рост человека, мм Рост человека, мм

При постоянной работе (рис.6.6) экран должен быть расположен в центре поля обзора, документы слева на столе или на специальной подставке. Рабочий стол должен иметь стабильную конструкцию. Плоскость стола выбирают в зависимости от размера документов. При больших размерах документов она должна быть 160х90 см. Плоскость стола, а также сидение оператора должны регулироваться по высоте. Высоту плоскости стола необходимо регулировать в диапазоне 65-85 см или 68-84 см. При этом высота от горизонтальной линии зрения до рабочей поверхности стола при выпрямленной рабочей позе должна быть 45-50 см.

Рис. 6.6. Расположение элементов оборудования ВТ при постоянной работе с экраном

6.2 Пожарная безопасность

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

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

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

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

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

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

Для ликвидации пожаров в начальной стадии применяются первичные средства пожаротушения:

внутренние пожарные водопроводы,

огнетушители типа ОХП-10, ОХП-11,

сухой песок,

асбестовые одеяла и др.

В здании ВЦ краны устанавливают в коридорах, на площадках лестничных клеток, у входа, т.е. в доступных и защитных местах. На каждые 100 квадратных метра пола производственных помещений обычно требуется 1-2 огнетушителя (табл. 6.4.). Время действия пенных огнетушителей 50-70с, длина струи 6-8м, кратность пены 5, стойкость 40 мин.

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

Таблица 6.4

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

Помещение, сооружение, установка

Единица измерения, м2

Углекислые огнетушители ручные ОУ-2, ОУ-5, ОУ-8

Пенные, химические, воздушно-пенные огнетушители

Войлок, кошма или асбест (1x1, 2x1.5, 2x2 м)

вычислитель-ные центры

100

1

1

1

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

7. ЭКОНОМИЧЕСКИЙ РАЗДЕЛ

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

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

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

Зр = Тр*к*tчр*(1+q)*(1+a)*(1+b),

(7.1.)

гдеТр -- трудоемкость разового решения задачи вручную, чел-ч. (Тр = 3.5),

к -- периодичность решения задачи в течение года (к = 200),

tчр -- среднечасовая ставка работника, осуществляющего ручной расчет задачи, руб.,

q -- коэффициент, учитывающий процент премий (q = 0.4),

а -- коэффициент, учитывающий дополнительную заработную плату (а = 0.15),

b -- коэффициент, учитывающий начисления на заработную плату, включая отчисления в фонд социальной защиты населения -- 35%, детских учреждений -- 5% и чрезвычайный чернобыльский налог -- 12% (b = 0.52).

Трудоемкость разового решения задачи вручную определяется по нормам времени на разработку конструкторской или технологической документации [19].

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

tчр = О1*kт/167,

(7.2.)

гдеО1 -- среднемесячная заработная плата работника 1 разряда (по состоянию на 01.04.97 -- 170000 руб.),

kт -- тарифный коэффициент работника соответствующего разряда (kт = 4.06),

167 -- нормативное количество рабочих часов в месяце.

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

Таблица 7.1

Тарифные коэффициенты специалистов с высшим образованием

Категория работников

Разряд

Тарифные коэффициенты

Специалисты с высшим образованием:

без категории

8

3.69

2 категории

9

4.06

1 категории

10

4.47

высшей категории

11

4.78

tчр = 170000*4.06/167 = 4132.93 (руб),

Зр = 3.5*200*4132.93*(1+0.4)*(1+0.15)*(1+0.52) = 7079874.41(руб)

Годовые текущие затраты, связанные с эксплуатацией задачи, определяются по формуле

Зт = Зпа,

(7.3.)

гдеЗп -- затраты на заработную плату пользователя программы,

За -- затраты на оплату аренды ЭВМ при решении задачи.

Затраты на заработную плату пользователя программы определяются по формуле

Зп = Тз*к*tчп*(1+q)*(1+a)*(1+b),

(7.4.)

гдеТз -- время решения задачи на ЭВМ, час.,

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

Время решения задачи на ЭВМ определяется по формуле

Тз = (Твврвыв)*(1+dпз)/60,

(7.5.)

гдеТвв -- время ввода в ЭВМ исходных данных, необходимых для решения задачи, мин.,

Тр -- время вычислений, мин.( Тр = 0.1),

Твыв -- время вывода результатов решения задачи (включая время распечатки на принтере и графопостроителе), мин. (Твыв = 4),

dпз -- коэффициент, учитывающий подготовительно-заключительное время (dпз = 0.20).

Время ввода в ЭВМ исходных данных может быть определено по формуле

Твв = Кz*Hz/100,

(7.6.)

гдеКz -- среднее количество знаков, набираемых с клавиатуры при вводе исходных данных (Кz = 250),

Hz -- норматив набора 100 знаков, мин. (Hz = 2).

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

tчп = 170000*3.69/167 = 3756.29 (руб),

Твв = 250*2/100 = 5 (мин),

Тз = (5+0.1+4)*(1+0.20)/60 = 0.182 (час),

Зп = 0.182*200*3756.29*(1+0.4)*(1+0.15)*(1+0.52) = 334603.10 (руб).

Затраты на оплату аренды ЭВМ для решения задачи определяются по следующей формуле

За = Тз*к*Sмч,

(7.7.)

гдеSмч -- стоимость одного машино-часа работы ЭВМ, руб.

Стоимость машино-часа работы ЭВМ определяется по формуле

Sмч = Сэ+(Аэвмэвмплплн)/Фэвм,

(7.8.)

гдеСэ -- расходы на электроэнергию за час работы ЭВМ, руб.,

Аэвм -- годовая величина амортизационных отчислений на реновацию ЭВМ, руб.,

Рэвм -- годовые затраты на ремонт и техническое обслуживание ЭВМ, руб.,

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

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

Нн -- годовая величина налога на недвижимость, руб.,

Фэвм -- годовой фонд времени работы ЭВМ, час.

Расходы на электроэнергию за час работы ЭВМ определяются по формуле

Сэ = Nэ*kисэ или Сэ = Чэлэ,

(7.9.)

гдеNэ -- установленная мощность электродвигателя ЭВМ, кВт (Nэ = 0.2),

kис -- коэффициент использования энергоустановок по мощности (kис = 0.9),

Цэ -- стоимость 1 кВт-часа электроэнергии, руб. (Цэ = 690),

Чэл -- среднечасовое потребление электроэнергии ЭВМ, кВт.

Сэ = 0.2*0.9*690 = 124.2 (руб).

Годовая величина амортизационных отчислений на реновацию ЭВМ определяется по формуле

Аэвм = Цэвм*kу*kмаэвм/100 = Цбэвмаэвм/100,

(7.10.)

гдеЦэвм -- цена ЭВМ на момент ее выпуска, руб. (Цэвм = 17500000),

kу -- коэффициент удорожания ЭВМ (зависит от года выпуска). В том случае, когда в качестве цены используется цена 1997г., коэффициент удорожания kу = 1,

kм -- коэффициент, учитывающий затраты на монтаж и транспортировку ЭВМ (kм = 1.1),

Наэвм -- норма амортизационных отчислений на ЭВМ, % (Наэвм = 10),

Цбэвм -- балансовая стоимость ЭВМ, руб.

Цбэвм = 17500000*1*1.1 = 19250000 (руб),

Аэвм = 17500000*1*1.1*10/100 = 1925000 (руб).

Годовые затраты на ремонт и техническое обслуживание ЭВМ укрупненно могут быть определены по формуле

Рэвм = Цбэвм*kро,

(7.11.)

гдеkро -- коэффициент, учитывающий затраты на ремонт и техническое обслуживание ЭВМ, в том числе затраты на запчасти, зарплату ремонтного персонала и др. (kро = 0.1).

Рэвм = 19250000*0.1 = 1925000 (руб).

Годовая величина амортизационных отчислений на реновацию производственных площадей, занятых ЭВМ определяется по формуле

Апл = Цбплапл/100 = Sэвм*kдплапл/100,

(7.12.)

гдеЦбпл -- балансовая стоимость площадей, руб.,

Напл -- норма амортизационных отчислений на производственные площади, % (Напл = 1.2 ),

Sэвм -- площадь, занимаемая ЭВМ, кв. м. (Sэвм = 1 кв. м.),

kд -- коэффициент, учитывающий дополнительную площадь (kд = 3),

Цпл -- цена 1 квадратного метра площади, руб. (Цпл = 4363837.5).

Цбпл = 1*3*4363837.5 = 13091512.5 (руб),

Апл = 13091512.5*1.2/100 = 157098.15 (руб).

Годовые затраты на ремонт и содержание производственных площадей укрупненно могут быть определены по формуле

Рпл = Цбпл*kрэ,

(7.13.)

гдеkрэ -- коэффициент, учитывающий затраты на ремонт и эксплуатацию производственных площадей (kрэ = 0.05).

Рпл = 13091512.5*0.05 = 654575.63 (руб).

Величина налога на недвижимость определяется по формуле

Нн = (Цбэвмбпл)*Снн,

(7.14.)

гдеСнн -- ставка налога на недвижимость (Снн = 0.01).

Нн = (19250000+13091512.5)*0.01 = 323415.13 (руб).

Годовой фонд времени работы ЭВМ определяется исходя из режима ее работы и может быть рассчитан по формуле

Фэвм = tсссг,

(7.15.)

гдеtсс -- среднесуточная фактическая загрузка ЭВМ, час. (tсс = 8),

Тсг -- среднее количество дней работы ЭВМ в год (Тсг = 250).

Фэвм = 8*250 = 2000 (час),

Sмч = 124.2+(1925000+1925000+157098.15+654575.63+323415.13)/2000 = 2504.96 (руб).

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

Пу = (Зрт)*(1-Снп),

(7.16.)

гдеСнп -- ставка налога на прибыль (Снп = 0.3).

За = 0.182*200*2504.96 = 91180.54 (руб),

Зт = 334603.10 + 91180.54 = 425783.64 (руб),

Пу = (7079874,41-425783,64)*(1-0,3) = 4657863.54 (руб).

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

Ко = Кзпр,

(7.17.)

гдеКз -- капитальные и приравненные к ним затраты, руб.,

Цпр -- отпускная цена программы, руб.,

Капитальные и приравненные к ним затраты определяются по формуле

Кз = Цбэвм*(1-X*Наэвм/100)*Тз*к/Фэвм,,

(7.18.)

гдеХ -- количество лет выработки ЭВМ, лет.

Кз = 19250000*(1-5*10/100)*0.182*200/ 2000 = 175175 (руб).

Отпускная цена программы определяется по формуле

Цпр = Цо+(Зрзр)*Ндоб,

(7.19.)

гдеЦо -- оптовая цена программы, руб.,

Зрз -- затраты на заработную плату разработчиков программы, руб.,

Пр -- размер плановой прибыли на программу, руб.,

Ндоб -- ставка налога на добавленную стоимость (Ндоб = 0.20).

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

Зрз = Трз*tчрз*(1+q)*(1+a)*(1+b),

(7.20.)

гдеТрз -- трудоемкость разработки программы, час.,

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

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

Трз = (Тпосi+Тпргi)*8,

(7.21.)

i=1 i=1

гдеnэ -- количество этапов разработки программы,

Тпосi -- трудоемкость постановки задачи на i-м этапе разработки программы, дней,

Тпргi -- трудоемкость программирования задачи на i-м этапе разработки программы, дней.

Разработка пакета программ, представленного в настоящем проекте, включала в себя 4 этапа:

Проектирование структур баз данных (Тпос = 1, Тпрг = 3);

Разработка программы создания и модификации тестов (Тпос = 0.4, Тпрг = 18);

Разработка программы контроля знаний (Тпос = 0.3, Тпрг = 15);

Разработка программы администрирования (Тпос = 0.3, Тпрг = 11);

Трз = 392 (час),

tчрз = 170000*4.78/167 = 4865.87 (руб),

Зрз = 392*4865.87*(1+0.4)*(1+0.15)*(1+0.52) = 4667840.77 (руб).

Нормы времени учитывают ряд факторов, наибольшим образом влияющих на трудоемкость разработки проекта:

количество разновидностей форм входной информации;

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

степень новизны задачи;

сложность алгоритма;

вид используемой информации;

сложность контроля входной и выходной информации;

язык программирования;

объем входной информации;

использование типовых решений, типовых проектов и программ,

стандартных модулей.

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

А -- разработка задач, предусматривающая применение принципиально новых методов разработки, проведение научно-исследовательских работ;

Б -- разработка типовых проектных решений, оригинальных задач и систем, не имеющих аналогов;

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

Г -- привязка типовых проектных решений.

Сложность алгоритма представлена тремя группами:

1 -- алгоритмы оптимизации и моделирования систем и объектов;

2 -- алгоритмы учета, отчетности, статистики и поиска;

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

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

Плановая прибыль на программу определяется по формуле

Пр = Спрп,,

(7.22.)

гдеСпр -- себестоимость программы, руб.,

Нп -- норма прибыли проектной организации (Нп = 0.25).

Себестоимость программы определяется по формуле

Спр = Зрз*F+Зот,

(7.23.)

гдеF -- коэффициент накладных расходов проектной организации без учета эксплуатации ЭВМ (F = 1.15),

Зот -- затраты на отладку программы.

Затраты на отладку программы определяются по формуле

Зот = Тотл*Sмч,

(7.24.)

гдеТотл -- трудоемкость отладки программы, час. (Тотл = 32).

Зот = 32* 2504.96 = 80159 (руб),

Спр = 4667840.77*1.15+80159= 5448175.89 (руб).

Оптовая цена программы определяется по формуле

Цо = Спрр.

(7.25.)

Пр = 5448175.89 *0.25 = 1362043.97 (руб),

Цо = 5448175.89 + 1362043.97 = 5440712.13 (руб),

Цпр = 5440712.13+(4667840.77+1362043.97)*0.2 = 6646689.08 (руб).

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

ЭФ = Пу-Е*Ко = Пу-Е*(Кзпр),

(7.26.)

гдеЕ -- коэффициент эффективности, равный ставке за кредиты на рынке долгосрочных кредитов (Е = 0.25).

Ко = 175175+6646689.08 = 6821864.08 (руб),

ЭФ = 4657863.54 -0.25*6821864.08= 2952397.52 (руб).

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

Тв = Коу,

(7.27.)

Тв = 6821864.08/ 4657863.54 = 1.46 (лет).

Результаты расчета сведены в табл. 7.2.

Таблица 7.2

Технико_экономические показатели проекта

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

Базовый вариант

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

Трудоемкость решения задачи, час.

4

0.182

Периодичность решения задачи, раз/год

200

200

Годовые текущие затраты, связанные с решением задачи, млн. руб.

7.080

0.335

Отпускная цена программы, млн. руб.

--

6.647

Степень новизны программы

--

В

Группа сложности алгоритма

--

3

Прирост условной прибыли, млн. руб.

--

4.658

Ожидаемый годовой экономический эффект, млн. руб.

--

2.952

Срок возврата инвестиций, лет

--

1.46

Разработанная «Обучающе-контролирующая система» обеспечивает получение годового экономического эффекта в сумме 2.952 млн. рублей. Прирост условной прибыли составляет 4.658 млн. рублей. При отпускной цене программы в 6.647 млн. рублей проект обеспечивает возврат инвестиций за 1.46 года.

ЗАКЛЮЧЕНИЕ

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

программа для создания и модификации тестов;

сервисная программа администрирования;

программа контроля знаний.

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

создание на основе имеющихся баз знаний тестов по различным предметам;

модификация созданных тестов;

формирование билетов;

задание времени ответа на вопросы билета;

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

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

возможность работы системы в ЛВС;

просмотр и распечатка результатов (протокола) тестирования на принтере

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

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

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

Приложение 1

ТЕКСТ ПРОГРАММЫ TESTBUILDER

program TestBuilder;

uses

Forms,

S2 in 'S2.PAS' {TreeForm},

db_unit in 'db_unit.pas' {EditForm},

addtema in 'addtema.pas' {WinEditTema},

progrInd in 'progrInd.pas' {ProcessForm};

{$R *.RES}

begin

Application.Title:= 'TestBuilder';

Application.CreateForm(TTreeForm, TreeForm);

Application.CreateForm(TEditForm, EditForm);

Application.CreateForm(TWinEditTema, WinEditTema);

Application.CreateForm(TProcessForm, ProcessForm);

Application.Run;

end.

Текст модуля DB_Unit

unit S2;

interface

uses

SysUtils, WinTypes,{ Windows,} Messages, Classes, Graphics, Controls,

Forms, Dialogs, Buttons, StdCtrls, Grids, Outline, ComCtrls, DBCtrls,

DBTables, DB;

type

TTreeForm = class(TForm)

MainTree: TOutline;

AddDocBut: TSpeedButton;

DeleteBut: TSpeedButton;

FullExpBut: TSpeedButton;

FullColBut: TSpeedButton;

ExitBut: TSpeedButton;

AddTemaBut: TSpeedButton;

TemaSource: TDataSource;

QuestSource: TDataSource;

DBTema: TTable;

DBTemaTema_id: TAutoIncField;

DBTemaTema_name: TStringField;

DBQuest: TTable;

DBQuestTema_id: TIntegerField;

DBQuestQuest_id: TAutoIncField;

DBQuestQuest_name: TMemoField;

procedure AddDocButClick(Sender: TObject);

procedure MainTreeClick(Sender: TObject);

procedure DeleteButClick(Sender: TObject);

procedure FullExpButClick(Sender: TObject);

procedure FullColButClick(Sender: TObject);

procedure ExitButClick(Sender: TObject);

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

procedure AddTemaButClick(Sender: TObject);

procedure FormShow(Sender: TObject);

procedure FormResize(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure AppendQuestion(temaId: longint);

procedure ClearQuestion;

private

{ Private declarations }

x1,x2: integer; {вспомогательные переменные}

CreateMainForm: boolean;

public

{ Public declarations }

end;

var

TreeForm: TTreeForm;

implementation

uses db_unit, addtema, progrInd;

{$R *.DFM}

procedure TTreeForm.AddDocButClick(Sender: TObject);

var

Nodename: string;

number,ind,docindex: longint;

begin

If MainTree.Items[MainTree.SelectedItem].Level = 1 then Exit;

If MainTree.Items[MainTree.SelectedItem].Level = 2 then {в NUMBER заносится номер темы }

begin

number:= longint(MainTree.Items[MainTree.SelectedItem].Data);{в NUMBER заносится номер темы}

ind:= MainTree.SelectedItem;

end

else

begin

number:= longint(MainTree[MainTree.SelectedItem].Parent.Data);

ind:= MainTree[MainTree.SelectedItem].Parent.Index;

end;

AppendQuestion(number); {добавление нового вопроса в БД вопросов}

With MainTree.Items[ind] do

If HasItems then number:= GetLastChild - GetFirstChild + 2 {определение числа потомков + 2}

else number:= 1;

Str(number,Nodename); {номер вопроса в теме}

If MainTree.Items[MainTree.SelectedItem].Level = 2 then

begin

docIndex:= MainTree.AddChildObject(MainTree.SelectedItem,NodeName,

pointer(DBQuest.Fields[1].AsInteger));

MainTree.Items[MainTree.SelectedItem].Expand;

end

else {if... = 3}

docIndex:= MainTree.AddObject(MainTree.SelectedItem,NodeName,

pointer(DBQuest.Fields[1].AsInteger));

MainTree.Selecteditem:= docIndex; {установление фокуса на new вопрос}

end;

procedure TTreeForm.MainTreeClick(Sender: TObject);

Var

cur_id: longint;

NewAnswer: TAnswer;

del_count,i: integer;

begin

if MainTree.Items[MainTree.SelectedItem].Level = 1 then

begin

EditForm.QuestLabel.Hide;

EditForm.DBEditTema.Hide;

EditForm.MemoQuest.Hide;

EditForm.MemoScroll.Enabled:= False;

EditForm.AddAnswerBut.Enabled:= False;

EditForm.DelAnswerBut.Enabled:= False;

Exit;

end;

cur_id:= Longint(MainTree.Items[MainTree.SelectedItem].Data);

EditForm.QuestLabel.Show;

if MainTree.Items[MainTree.SelectedItem].Level = 3 then

begin

With TreeForm.DBQuest do begin {установка фильтра на БД вопросов }

SetKey;

Fields[1].AsInteger:= cur_id;

GotoKey;

end;

EditForm.DBEditTema.Hide;

EditForm.QuestLabel.Caption:= 'Текст вопроса';

EditForm.MemoQuest.Show;

EditForm.MemoScroll.Enabled:= True;

EditForm.AddAnswerBut.Enabled:= True;

EditForm.DelAnswerBut.Enabled:= True;

i:= 0; {индекс ДЛЯ ОБЪЕКТА TMemo в списке}

EditForm.DBAnswer.First; {чтобы не было глюков при повторном щелчке на вопросе}

while NOT EditForm.DBAnswer.Eof do

begin

If (i+1) > EditForm.MemoScroll.ComponentCount then

NewAnswer:= TAnswer.Create(EditForm.MemoScroll,100); {добавление new варианта ответа в список}

TMemo(EditForm.MemoScroll.Components[i]).Text:=

EditForm.DBAnswer.Fields[2].AsString; {Otvet_name}

TCheckBox(EditForm.MemoScroll.Components[i+1]).Checked:=

EditForm.DBAnswer.Fields[3].AsBoolean; {Otvet_name}

inc(i,2); // <--- увеличение индекса ДЛЯ ОБЪЕКТА TMemo в списке

EditForm.DBAnswer.Next;

end;

While i< EditForm.MemoScroll.ComponentCount do {удаление из списка лишних вариантов ответа}

TAnswer.DeleteAnswer(EditForm.MemoScroll,EditForm.MemoScroll.ComponentCount - 2);

If EditForm.MemoScroll.ComponentCount > 0 then TMemo(EditForm.MemoScroll.Components[0]).SetFocus; {Set focus on first answer.}

end

else {if level = 2, т.е. выбрана тема}

begin

With TreeForm.DBTema do begin {установка фильтра на БД тем }

SetKey;

Fields[0].AsInteger:= cur_id;

GotoKey;

end;

EditForm.AddAnswerBut.Enabled:= False;

EditForm.DelAnswerBut.Enabled:= False;

EditForm.MemoScroll.Enabled:= False;

EditForm.MemoQuest.Hide;

EditForm.QuestLabel.Caption:= 'Название темы';

EditForm.DBEditTema.Show;

end;

end;

procedure TTreeForm.DeleteButClick(Sender: TObject);

begin

If Maintree.SelectedItem = 1 then Exit;

If MainTree.Items[MainTree.SelectedItem].Level = 3 then

begin

If Application.MessageBox('Удалить вопрос ?','Удаление вопроса',

mb_YesNo+mb_IconQuestion+MB_DEFBUTTON2) = IdYes then

begin

ClearQuestion; // логическое удаление вопроса из БД

MainTree.Delete(MainTree.SelectedItem); {удаление текущего узла дерева}

end;

end

else

If Application.MessageBox('Удалить раздел ?','Удаление раздела',

mb_YesNo+mb_IconQuestion+MB_DEFBUTTON2) = IdYes then

begin

DBQuest.IndexName:= 'tema_ind';

DBQuest.SetKey;

DBQuest.Fields[0].AsInteger:= DBTema.Fields[0].AsInteger; // Fields[0] - Tema_Id

While DBQuest.GotoKey do ClearQuestion; // логическое удаление всех вопросов, принадлежащих теме

DBQuest.IndexName:= '';

DBTema.Delete; { Удаление выбранной темы }

{ DBTema.Edit; DBTema.Fields[1].Clear; DBTema.Post; // logical delete }

MainTree.Delete(MainTree.SelectedItem); {удаление текущего узла дерева}

end;

end;

procedure TTreeForm.FullExpButClick(Sender: TObject);

begin

MainTree.FullExpand;

end;

procedure TTreeForm.FullColButClick(Sender: TObject);

begin

MainTree.FullCollapse;

end;

procedure TTreeForm.ExitButClick(Sender: TObject);

begin

TreeForm.Close;

end;

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

begin

Action:= caFree;

EditForm.DBAnswer.Active:= False;

DBQuest.Active:= False;

DBTema.Active:= False;

end;

procedure TTreeForm.AddTemaButClick(Sender: TObject);

var

index: Longint;

FoundEmpty: boolean;

begin

WinEditTema.ShowModal;

If WinEditTema.ModalResult = mrOk then begin

FoundEmpty:= False;

DBTema.First;

While (not DBTema.EOF) and (not FoundEmpty) do {поиск записи в DBTEMA с пустым полем Tema_name}

begin

If DBTema.Fields[1].IsNull Then FoundEmpty:= True

else DBTema.Next;

end;

If FoundEmpty then DBTema.Edit

else DBTema.Append; {добавление новой темы в БД, если не найдено пустой}

DBTema['Tema_name']:= WinEditTema.TemaEdit.Text;

DBTema.Post;

AppendQuestion(DBTema.Fields[0].AsInteger); {добавление нового вопроса в БД }

index:= MainTree.AddChildObject(1,

DBTema.Fields[1].AsString,

pointer(DBTema.Fields[0].AsInteger)); {добавление new темы}

MainTree.AddChildObject(index,'1',

pointer(DBQuest.Fields[1].AsInteger)); {добавление пустого вопроса в тему}

If not MainTree.Items[1].Expanded then

MainTree.Items[1].Expand; {раскрытие корневого узла}

MainTree.Items[index].Expand; {раскрытие узла темы}

MainTree.Selecteditem:= index; {установление фокуса на new тему}

end;

end;

procedure TTreeForm.FormShow(Sender: TObject);

Var

cur_node,i: Longint;

node_name: string;

begin

if CreateMainForm then

begin

ProcessForm.Show;

DBTema.Active:= True; {Открытие БД тем и вопросов}

DBQuest.Active:= True;

ProcessForm.ProgressBar.Max:= DBTema.RecordCount + DBQuest.RecordCount;

While not DBTema.EOF do begin {загрузка дерева из БД}

ProcessForm.ProgressBar.StepIt;

If not DBTema.Fields[1].IsNull then

begin

cur_node:= MainTree.AddChildObject(1,

DBTema.Fields[1].AsString,

pointer(DBTema.FieldByName('Tema_id').AsInteger)); {добавление темы в дерево}

i:= 1;

While not DBQuest.EOF do begin

ProcessForm.ProgressBar.StepIt;

Str(i,node_name);

MainTree.AddChildObject(cur_node,node_name,

pointer(DBQuest.Fields[1].AsInteger));{добавление вопроса в тек.тему}

DBQuest.Next; inc(i);

end;

end;

DBTema.Next;

end; {while}

DBQuest.IndexName:= ''; {отключение связи между DBTema и DBQuest}

DBQuest.MasterFields:= '';

ProcessForm.Close;

CreateMainForm:= False;

end;

EditForm.Show;

end;

procedure TTreeForm.FormResize(Sender: TObject);

begin

if TreeForm.Height >= 300 then

MainTree.Height:= TreeForm.ClientHeight - Maintree.Top - x1

else

TreeForm.Height:= 300;

IF TreeForm.Width >= 263 then

MainTree.Width:= TreeForm.ClientWidth - MainTree.Left - x2

else

TreeForm.Width:= 263;

end;

procedure TTreeForm.FormCreate(Sender: TObject);

begin

CreateMainForm:= True;

x1:= ClientHeight - MainTree.Top - MainTree.Height;

x2:= ClientWidth - MainTree.Left - Maintree.Width;

TreeForm.Height:= GetSystemMetrics(SM_CYMAXIMIZED) - 10;

end;

procedure TTreeForm.AppendQuestion(temaId: longint);

{ Добавляет в таблицу DBQuest новый вопрос.

temaId - содержит значение темы, которой принадлежит вопрос

}

begin

DBQuest.IndexName:= 'tema_ind'; {подключение вторичного индекса}

DBQuest.SetKey; {поиск записи с 0-ым значением DBQuest.Tema_id}

DBQuest.Fields[0].AsInteger:= 0;

If DBQuest.GotoKey then {если найдена запись, то редактируем ее поля}

begin

DBQuest.IndexName:= ''; {отключение вторичного индекса}

DBQuest.Edit;

end

else {если не найдена такая запись, то добавляем новую}

begin

DBQuest.IndexName:= ''; {отключение вторичного индекса}

DBQuest.Append;

end;

DBQuest['Tema_id']:= TemaId;

DBQuest.Post;

end;

procedure TTreeForm.ClearQuestion;

{осуществляет логическое удаление текущего вопроса из БД}

begin

{обнуление параметра Quest_id во всех связанных записях БД answer.db}

EditForm.DBAnswer.First;

While not EditForm.DBAnswer.Eof do EditForm.ClearAnswer;

{обнуление tema_id текущего вопроса}

DBQuest.Edit;

DBQuest.Fields[0].AsInteger:= 0; // DBQUEST.Tema_id

DBQuest.Fields[2].AsString:= ''; // DBQUEST.QUest_name

DBQuest.Post;

end;

end.

Текст модуля DB_Unit

unit db_unit;

interface

uses

SysUtils, Windows, Messages, Classes, Graphics, Controls,

StdCtrls, Forms, Mask, Buttons,

DBTables, DB, DBCtrls;

type

TEditForm = class(TForm)

MemoQuest: TDBMemo;

QuestName: TLabel;

QuestLabel: TLabel;

DBEditTema: TDBEdit;

MemoScroll: TScrollBox;

AddAnswerBut: TSpeedButton;

DelAnswerBut: TSpeedButton;

DBAnswer: TTable;

AnswerSource: TDataSource;

DBAnswerOtvet_id: TAutoIncField;

DBAnswerQuest_id: TIntegerField;

DBAnswerOtvet_name: TMemoField;

DBAnswerTrued: TBooleanField;

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

procedure DBEditTemaChange(Sender: TObject);

procedure AddAnswerButClick(Sender: TObject);

procedure DelAnswerButClick(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure AppendAnswer(QuestId: longint);

procedure ClearAnswer;

procedure FormResize(Sender: TObject);

procedure MemoScrollResize(Sender: TObject);

private

x1,x2: integer; {вспомогательные переменные}

public

end;

TAnswer = Class(TObject)

memo: TMemo;

check: TCheckBox;

constructor Create(AOwner:TComponent;Height_: Integer);

procedure Free;

procedure CheckClick(Sender: TObject);

procedure MemoChange(Sender: TObject);

class procedure DeleteAnswer(AOwner: TComponent;Number: integer);

private

nocreate: boolean; {TRUE - if don't run the CREATE-constructor}

end;

var

EditForm: TEditForm;

implementation

uses S2;

{$R *.DFM}

procedure TEditForm.AppendAnswer(QuestId: longint);

{ Добавляет в таблицу DBQuest новый вопрос.

temaId - содержит значение темы, которой принадлежит вопрос

}

Var

i: integer;

Isinsert: boolean;

NewAnswer: TAnswer;

begin

IsInsert:= false; {True if NOT APPEND new record into database}

DBAnswer.MasterFields:= '';

DBAnswer.SetKey; {поиск записи с 0-ым значением DBAnswer.Tema_id}

DBAnswer.Fields[1].AsInteger:= 0;

If DBAnswer.GotoKey then

begin

DBAnswer.Edit;

IsInsert:= True;

end

else DBAnswer.Append;{если не найдена запись, то добавляем новую}

DBAnswer.Fields[1].AsInteger:= QuestId;

DBAnswer.Post;

DBAnswer.MasterFields:= 'Quest_id';

NewAnswer:= TAnswer.Create(MemoScroll,100); {добавление new варианта ответа в список}

If IsInsert then

begin

DBAnswer.First; i:=0;

While i < MemoScroll.ComponentCount do

begin

DBAnswer.Edit;

DBAnswerOtvet_name.Assign(Tmemo(MemoScroll.Components[i]).Lines);

DBAnswer.Fields[3].AsBoolean:= TCheckBox(MemoScroll.Components[i+1]).Checked;

DBAnswer.Post;

DBAnswer.Next; inc(i,2);

end;

end; {endif}

end;

procedure TEditForm.ClearAnswer;

{логическое удаление из БД текущего варианта ответа для текущнго вопроса}

begin

DBAnswer.Edit;

DBAnswer['Quest_id']:= 0;

DBAnswer.Fields[2].Clear; { Otvet_name }

DBAnswer['Trued']:= False;

DBAnswer.Post;

end;

constructor TAnswer.Create(AOwner:TComponent;Height_: Integer);

begin

NoCreate:= False;

memo:= TMemo.Create(Aowner);

memo.Parent:= TWinControl(AOwner);

With memo do begin

If ComponentIndex = 0 then

begin

Left:= 0; Top:= 0;

end

else

begin

Left:= 0;

Top:= TMemo(AOwner.Components[ComponentIndex-2]).Top +

TMemo(AOwner.Components[ComponentIndex-2]).Height;

end;

Width:= TScrollBox(AOwner).Width - 60;

Height:= Height_;

If (ComponentIndex div 2 + 1)*Height > TScrollBox(AOwner).VertScrollBar.Range

then TScrollBox(AOwner).VertScrollBar.Range:= (ComponentIndex div 2 + 1)*Height;

OnChange:= MemoChange;

SetFocus;

end; {end Init Memo}

check:= TCheckBox.Create(AOwner);

check.Parent:= TWinControl(AOwner);

With check do begin

Left:= Memo.Left + Memo.Width + 15;

Top:= Memo.Top + Memo.Height div 2;

Height:= 17;

Width:= 17;

OnClick:= CheckClick;

end;

NoCreate:= True;

end;

procedure TAnswer.Free;

begin

check.Free;

memo.Free;

end;

procedure TAnswer.CheckClick(Sender: TObject);

begin

If nocreate then begin

EditForm.DBAnswer.First;

EditForm.DBAnswer.MoveBy((Check.Componentindex-1) div 2);

EditForm.DBAnswer.Edit;

EditForm.DBAnswer['Trued']:= check.checked;

EditForm.DBAnswer.Post;

end;

end;

procedure TAnswer.MemoChange(Sender: TObject);

begin

If memo.Modified then

begin

EditForm.DBAnswer.First;

EditForm.DBAnswer.MoveBy(Memo.Componentindex div 2);

EditForm.DBAnswer.Edit;

EditForm.DBAnswerOtvet_name.Assign(Memo.Lines);

EditForm.DBAnswer.Post;

end;

end;

class procedure TAnswer.DeleteAnswer(AOwner: TComponent;Number: integer);

Var

i: integer;

{удаленние из списка объекта NUMBER и NUMBER+1}

begin

TCheckBox(AOwner.Components[number+1]).Free;

TMemo(AOwner.Components[number]).Free;

For i:= Number to AOwner.ComponentCount-1 do {перерисовка компонентов в ScrollBox}

If AOwner.Components[i] is TMemo then

TMemo(AOwner.Components[i]).Top:= TMemo(AOwner.Components[i]).Top -

TMemo(AOwner.Components[i]).Height

else

TCheckBox(AOwner.Components[i]).Top:= TCheckBox(AOwner.Components[i]).Top -

TMemo(AOwner.Components[i-1]).Height;

If AOwner.ComponentCount > 0 then

TScrollBox(AOwner).VertScrollBar.Range:= (AOwner.ComponentCount div 2)*

TMemo(AOwner.Components[0]).Height;

end;

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

begin

TreeForm.Close; {закрыть окно, содержащее дерево}

end;

procedure TEditForm.DBEditTemaChange(Sender: TObject);

begin

If DBEditTema.Modified Then

begin

TreeForm.DBTema.Post;

TreeForm.MainTree.Items[TreeForm.MainTree.SelectedItem].Text:= TreeForm.DBTema.Fields[1].AsString;

{модификация названия узла дерева, содержащего тему}

end;

end;

procedure TEditForm.AddAnswerButClick(Sender: TObject);

begin

AppendAnswer(TreeForm.DBQuest.Fields[1].AsInteger);

end;

procedure TEditForm.DelAnswerButClick(Sender: TObject);

var

CurAnswer,i: integer;

begin {удаленние из списка CURRENT ANSWER, если на нем стоит курсор}

i:= 0;

CurAnswer:= -1;

While i < MemoScroll.ComponentCount do

begin

If TMemo(MemoScroll.Components[i]).Focused then

CurAnswer:= TMemo(MemoScroll.Components[i]).ComponentIndex;

inc(i,2);

end;

if CurAnswer > -1 then

begin

EditForm.DBAnswer.First;

EditForm.DBAnswer.MoveBy(CurAnswer div 2);

ClearAnswer;

TAnswer.DeleteAnswer(MemoScroll,CurAnswer);

end;

end;

procedure TEditForm.FormCreate(Sender: TObject);

begin

EditForm.DBAnswer.Active:= True; {Открытие БД ответов}

x1:= ClientHeight - MemoScroll.Top - MemoScroll.Height;

x2:= ClientWidth - MemoScroll.Left - MemoScroll.Width;

EditForm.Height:= GetSystemMetrics(SM_CYMAXIMIZED) - 10;

end;

procedure TEditForm.FormResize(Sender: TObject);

begin

if EditForm.Height >= 300 then

MemoScroll.Height:= EditForm.ClientHeight - MemoScroll.Top - x1

else EditForm.Height:= 300;

IF EditForm.Width >= 300 then

begin

MemoScroll.Width:= EditForm.ClientWidth - MemoScroll.Left - x2;

MemoQuest.Width:= EditForm.ClientWidth - MemoQuest.Left - x2;

DBEditTema.Width:= EditForm.ClientWidth - DBEditTema.Left - x2;

end

else EditForm.Width:= 300;

end;

procedure TEditForm.MemoScrollResize(Sender: TObject);

var

i: integer;

begin

i:= 0;

While i < (MemoScroll.ComponentCount-1) do

begin

TMemo(MemoScroll.Components[i]).Width:= MemoScroll.Width - 60;

TCheckBox(MemoScroll.Components[i+1]).Left:=

TMemo(MemoScroll.Components[i]).Left + TMemo(MemoScroll.Components[i]).Width + 15;

inc(i,2);

end;

end;

end.

Текст модуля AddTema

unit addtema;

interface

uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,

Buttons, ExtCtrls;

type

TWinEditTema = class(TForm)

TemaEdit: TEdit;

TemaNameLabel: TLabel;

OkBtn: TBitBtn;

CancelBtn: TBitBtn;

procedure butCancelClick(Sender: TObject);


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

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

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

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

    курсовая работа [786,5 K], добавлен 24.02.2015

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

    реферат [1,9 M], добавлен 27.12.2013

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

    курсовая работа [186,9 K], добавлен 18.12.2010

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

    курсовая работа [234,1 K], добавлен 04.08.2009

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

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

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

    дипломная работа [3,8 M], добавлен 24.06.2013

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

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

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

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

  • Понятие базы данных, их цели и задачи, требования к БД; система управления базами данных. Файловые системы: именование и структуры файлов, программное обеспечение. Уровни абстракции в СУБД, функции абстрактных данных. Экспертные системы и базы знаний.

    презентация [301,6 K], добавлен 17.04.2013

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