Обучающе-контроллирующая система для подготовки студентов
функциональные части обучающей системы: программа для создания и модификации тестов, сервисная программа администрирования и программа контроля знаний. Концептуальная и логическая модель базы данных. Структура файлов базы данных. Руководство пользователя.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 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чрз -- среднечасовая ставка работника, осуществляющего разработку программы, руб.
Трудоемкость разработки программы включает время на постановку задачи и время на программирование задачи и определяется по формуле
nэ nэ |
||
Трз = (Тпос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