Автоматизированная система обучения медсестер сестринскому делу деятельности

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

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

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

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

Список групп

Список групп на 2003-2004 учебный год

Бугульминского медицинского училища

3 курс

Таблица

Номер группы

Номер специальности

Специальность

Количество студентов в группе

301

0401

Сестринское дело

25

302

0402

Лечебное дело

25

Таблица. Список студентов на 2003-2004 учебный год

Номер группы

Номер зачет. книжки студента

Фамилия

Имя

Отчество

301

301001

Башкатова

Любовь

Николаевна

301

301002

Сибгатуллина

Наталья

Александровна

301

301003

Габитова

Диляра

Ильясовна

301

301004

Островская

Лариса

Анатольевна

301

301005

Самаркина

Ирина

Николаевна

301

301006

Брандукова

Татьяна

Ивановна

301

301007

Николаева

Марина

Анатольевна

301

301008

Файзрахманова

Фарида

Фаридовна

301

301009

Паруллина

Наталья

Сергеевна

301

301010

Масленникова

Зинаида

Петровна

301

301011

Вальтонова

Лариса

Викторовна

301

301012

Арапова

Маргарита

Гавриловна

301

301013

Кондрышева

Галина

Николаевна

301

301014

Савина

Ольга

Федоровна

301

301015

Сафиуллина

Сария

Масхутовна

301

301016

Камалова

Гульзида

Хайдаровна

301

301017

Чумарина

Наталья

Валерьевна

301

301018

Бабичева

Ольга

Анатольевна

301

301019

Пестерев

Юрий

Александрович

301

301020

Чернов

Андрей

Геннадьевич

301

301021

Марданова

Глюса

Садыковна

301

301022

Гиниятуллина

Айгуль

Наилевна

301

301023

Халимова

Альбина

Гариповна

301

301024

Харитонова

Ирина

Сергеевна

301

301025

Насырова

Фильсина

Салихзяновна

302

301026

Гайнутдинова

Кадрия

Закиевна

302

301027

Гатауллина

Алина

Абелгасовна

302

301028

Абызова

Ирина

Павловна

302

301029

Арсланова

Аниса

Даулеевна

302

301030

Ольнева

Наталья

Александровна

302

301031

Кириченко

Юлия

Анатольевна

302

301032

Борисова

Ольга

Юрьевна

302

301033

Арсланова

Алия

Мухарамовна

302

301034

Коновалов

Александр

Владимирович

302

301035

Иванова

Наталья

Александровна

302

301036

Наумова

Марина

Викторовна

302

301037

Кондаленкова

Марина

Александровна

302

301038

Лескин

Виктор

Юрьевич

302

301039

Лосев

Геннадий

Сергеевич

302

301040

Лубашева

Любовь

Степановна

302

301041

Масленникова

Валентина

Петровна

302

301042

Пантелеева

Валентина

Николаевна

302

301043

Барышева

Валентина

Николаевна

302

301044

Танакова

Юлия

Ивановна

302

301045

Лихачев

Юрий

Васильевич

302

301046

Котлова

Виктория

Владимировна

302

301047

Богачук

Вера

Борисовна

302

301048

Чувгунова

Ольга

Анатольевна

302

301049

Вязьмин

Анатолий

Павлович

302

301050

Иванова

Людмила

Викторовна

Таблица 1

Код вопроса

Код ответа

Вопрос

1

2

3

332101

0001

Оценку состояния по шкале Апгар оценивают на первой минуте после рождения и повторно через:

1) 2 мин

2) 3 мин

3) 4 мин

4) 5 мин

332102

0002

Оцените состояние новорожденного (степень тяжести) по шкале Апгар при следующих симптомах: частота сердцебиения - более 100 в мин, дыхательные движения - хорошие, громкий крик, активные движения, на носовой катетер реагирует кашлем и чиханием, цвет кожных покровов - весь розовый, красный.

1) 0 баллов

2) 1 балл

3) 2 балла

4) 3 балла

332103

0003

Какую оценку по шкале Апгар имеют новорожденные:

1) 0-3 балла

2) 4-5 баллов

3) 6-7 баллов

4) 8-10 баллов

332104

0004

Асфиксия легкой степени по шкале Апгар:

1) 1-3 балла

2) 4-5 баллов

3) 6-7 баллов

4) 8-10 баллов

332105

0005

Тяжелая асфиксия по шкале Апгар:

1) 1-3 балла

2) 4-5 баллов

3) 6-7 баллов

4) 8-10 баллов

332201

0006

Что не входит в подготовку к реанимации:

1) Подготовка блока температурной защиты

2) Подготовка блока оксигенотерапии

3) Подготовка блока медикаментозной терапии

4) Подготовка 60% кислородно-воздушной смеси

332202

0015

Что не входит в подготовку блока температурной защиты:

1) Подготовить обогреваемый столик

2) Включить источник лучистого тепла

3) Подготовить резиновые груши

4) Подготовить комплект стерильных пеленок в термостате стемпературой 38-400

Продолжение таблицы 1

1

2

3

332203

0016

Что не входит в подготовку блока оксигенотерапии:

1) Подготовить источник сжатого кислорода

2) Включить источник лучистого тепла

3) Подготовить установку для увлажнения и подогрева воздушно-кислородной смеси

4) Подготовить набор соединительных трубок и приспособлений для введения кислорода

332204

0017

Что не входит в подготовку блока медикаментозной терапии:

1) Подготовить наборы медикаментов

2) Подготовить фонендоскоп

3) Подготовить наборы катетеров для пупочной вены

4) Подготовить одноразовые шприцы

332205

0018

Что не входит в подготовку блока контроля жизнедеятельности:

1) Подготовить кардиомонитор

2) Подготовить аппарат для измерения артериального давления

3) Подготовить фонендоскоп

4) Подготовить набор соединительных трубок и приспособлений для введения кислорода

332301

0007

Что является 1-м этапом при освобождении и поддержании свободной проходимости дыхательных путей:

1) Отсосать катетером содержимое полости рта и глотки

2) Организовать наблюдение за ребенком

3) Подготовить блок температурной защиты

4) Провести санацию дыхательных путей

332302

0008

При адекватном дыхании, ЧСС выше 100 в мин и небольшом акроцианозе:

1) Прекратить реанимационные мероприятия и организовать наблюдение за ребенком

2) Обеспечить вентиляцию легких

3) Провести санацию дыхательных путей

4) Провести интубацию дыхательных путей

332303

0009

При отсутствии самостоятельного дыхания или его неэффективности:

1) Подготовить блок температурной защиты

2) Перейти к обеспечению вентиляции легких

3) Энергично растереть спину

4) Ввести внутривенно налорфин или этимизол

332304

0019

Что значит «провести тактильную стиммуляцию»:

1) Энергично растереть спину и похлопать по подошве

2) Ввести внутривенно налорфин или этимизол

3) Предать телу ребенка дренажное положение

4) Провести санацию дыхательных путей

332305

0020

Что значит «предать телу ребенка дренажное положение»:

1) Головной конец поднять примерно на 150

2) Головной конец опустить примерно на 150

3) Головной конец поднять примерно на 450

4) Головной конец опустить примерно на 450

Продолжение таблицы 1

1

2

3

332401

0010

Что является первым этапом при обеспечении вентиляции легких:

1) Подготовить 60% кислородно-воздушную смесь

2) Ввести внутривенно налорфин или этимизол

3) Оценить дыхание ребенка

4) Провести тактильную стимуляцию

332402

0011

Что не входит в обеспечение вентиляции легких:

1) Произвести вентиляцию легких с помощью маски и дыхательного мешка

2) Ввести внутривенно налорфин или этимизол

3) Предать телу ребенка дренажное положение

4) Подсчитать ЧСС

332403

0012

Если ЧСС находится в пределах 80-100 в мин:

1) Продолжают ИВЛ до тех пор пока она не возрастет до 100 в мин

2) Продолжают ИВЛ до тех пор пока она не упадет до 60 в мин

3) Проводят тактильную стимуляцию

4) Проводят интубацию дыхательных путей

332404

0013

При ЧСС менее 80 в мин:

1) Проводят тактильную стимуляцию

2) Переходят к восстановлению и поддержанию сердечной деятельности и гемодинамики

3) Проводят интубацию дыхательных путей

4) Проводят санацию дыхательных путей

332405

0014

Какие препараты нужно ввести внутривенно при обеспечении вентиляции легких:

1) Налорфин или этимизол

2) Ампицилин или новокаин

3) Финлепсин или димедрол

4) Диклофенак или корбаксилазу

332501

0021

При ЧСС менее 80 в мин необходимо срочно начать:

1) Наружный массаж сердца на фоне ИВЛ маской со 100% концентрацией кислорода

2) Тактильную стиммуляцию

3) Интубацию дыхательных путей

4) Санацию дыхательных путей

332502

0022

Оценивать эффективность мероприятий следует:

1) По окраске кожи и пульсу на бедренной артерии

2) По дыханию новорожденного

3) По реакции на похлопывание по подошве

4) По реакции на введение носового катетера

332503

0023

При неэффективности массажа сердца в течение 60 с стимулируют сердечную деятельность:

1) 5-10% раствором глюкозы

2) 0,1% раствором адреналина

3) 15-20% раствором глюкозы

4) 0,01% раствором адреналина

Продолжение таблицы 1

1

2

3

332504

0001

Через какое время можно повторить введение 0,1% раствора адреналина при неэффективности массажа сердца:

1) 5 мин

2) 10 мин

3) 15 мин

4) 20 мин

332505

0025

Всем детям, родившимся в асфиксии, в родзале вводят:

1) Витамин А

2) Витамин В

3) Витамин С

4) Витамин К

331101

0026

Какое заболевание не относится к неинфекционным заболеваниям пупочной ранки:

1) Пупочная грыжа

2) Кожный пупок

3) Свищи пупка

4) Склерема пупка

331102

0027

Какое заболевание не относится к неинфекционным заболеваниям кожных покровов:

1) Потница

2) Опрелости

3) Омфалит

4) Склерема

331103

0028

Как называется выпячивание в области пупочного кольца, увеличивающееся при крике или беспокойстве:

1) Кожный пупок

2) Пупочная грыжа

3) Свищи пупка

4) Фингус пупка

331104

0029

Как разделяют свищи пупка:

1) Полные и неполные

2) Короткие и длинные

3) Инфекционные и неинфекционные

4) Кишечные и желудочные

331105

0030

Какой степени опрелости не существует:

1) Умеренное покраснение кожи

2) Яркая краснота с малыми эрозиями

3) Яркая краснота с большими эрозиями

4) Яркая краснота и мокнутие в результате слившихся эрозий

330001

0036

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

1) Асфиксия

2) Гиперкапния

3) Брадикардия

4) Эрозия

Продолжение таблицы 1

1

2

3

330002

0037

Заболевание характеризующееся снижением гемоглобина в крови:

1) Асфиксия

2) Анемия

3) Гиперкапния

4) Брадикардия

330003

0038

Отсасывание специальным инструментом жидкости или воздуха из какой-либо полости тела:

1) Аспирация

2) Санация

3) Табуляция

4) Эрозия

330004

0039

Синюшная окраска дистальных частей тела:

1) Аспирация

2) Акроцианоз

3) Санация

4) Гипоксия

330005

0040

Пониженное артериальное давление:

1) Гипертония

2) Гипоксия

3) Гипотония

4) Артериальная гипотензия

330006

0041

Уменьшение частоты сердечных сокращений ниже 60 ударов в 1 минуту:

1) Анемия

2) Асфиксия

3) Брадикардия

4) Гипоксия

330007

0042

Обогреваемый столик, источник лучистого тепла, комплект стерильных теплых пеленок в термостате с температурой 38-400С:

1) Блок температурной защиты

2) Блок оксигенотерапии

3) Блок медикаментозной терапии

4) Блок искусственной вентиляции легких

330008

0043

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

1) Блок температурной защиты

2) Блок оксигенотерапии

3) Блок медикаментозной терапии

4) Блок восстановления проходимости дыхательных путей

330009

0044

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

1) Блок температурной защиты

2) Блок оксигенотерапии

3) Блок медикаментозной терапии

4) Блок восстановления проходимости дыхательных путей

Продолжение таблицы 1

1

2

3

330010

0045

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

1) Блок искусственной вентиляции легких

2) Блок температурной защиты

3) Блок оксигенотерапии

4) Блок медикаментозной помощи

330011

0046

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

1) Блок искусственной вентиляции легких

2) Блок температурной защиты

3) Блок оксигенотерапии

4) Блок медикаментозной помощи

330012

0047

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

1) Блок искусственной вентиляции легких

2) Блок температурной защиты

3) Блок контроля жизнедеятельности

4) Блок медикаментозной помощи

330013

0048

Асфиксия новорожденного, возникающая в последующие часы и дни жизни новорожденного:

1) Первичная асфиксия

2) Вторичная гипоксия

3) Вторичная анемия

4) Первичная аспирация

330014

0049

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

1) Брадикардия

2) Гипоксия

3) Врожденный порок сердца

4) Акроцианоз

330015

0050

Недостаток кислорода в тканях:

1) Гипоксия

2) Асфиксия

3) Гипоксемия

4) Гиперкапния

330016

0051

Недостаток кислорода в крови:

1) Гипоксия

2) Асфиксия

3) Гипоксемия

4) Гиперкапния

330017

0052

Накопление в организме углекислоты:

1) Гипоксия

2) Асфиксия

3) Гипоксемия

4) Гиперкапния

Продолжение таблицы 1

1

2

3

330018

0053

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

1) Гипоксия

2) Гипертензия

3) Гипоксемия

4) Гиперкапния

330019

0054

Положение ребенка причем головной конец опускают примерно на 150:

1) Дренажное положение

2) Инфузионное положение

3) Акроцианотичное положение

4) Гипоксичное положение

330020

0055

Введение осьтовой трубки в гортань и трахею при их сужениях, грозящих удушьем (например, при отеке гортани), а также для проведения наркоза:

1) Санация

2) Интубация

3) Гипоксия

4) Гипоксемия

330021

0056

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

1) Интубационная терапия

2) Инфузионная терапия

3) Первичная терапия

4) Вторичная терапия

330022

0057

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

1) Мышечный тонус

2) Омфалит

3) Кожный пупок

4) Пуповина

330023

0058

Длительно сохраняющееся состояние упругости мышцы:

1) Мышечный тонус

2) Омфалит

3) Кожный пупок

4) Пуповина

330024

0059

Процесс направленного движения различных жидкостей организма:

1) Интубация

2) Санация

3) Микроциркуляция

4) Аспирация

Продолжение таблицы 1

1

2

3

330025

0060

Кал первородный, содержимое кишечника плода (с 3-го месяца утробного развития):

1) Омфалит

2) Пуповина

3) Акроцианоз

4) Меконий

330026

0061

Воспаление кожи и подкожной клетчатки в области пупка:

1) Омфалит

2) Акроцианоз

3) Гипоксия

4) Склерема

330027

0062

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

1) Омфалит

2) Опрелости

3) Потница

4) Склерема

330028

0063

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

1) Первичная асфиксия

2) Вторичная гипоксия

3) Вторичная анемия

4) Первичная аспирация

330029

0064

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

1) Пуповина

2) Склерема

3) Гипоксемия

4) Плацента

330030

0065

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

1) Плацента

2) Пупочная грыжа

3) Пуповина

4) Склерема

330031

0066

Мелкоточечная красная сыпь на туловище, шее и внутренних поверхностях конечностей:

1) Краснуха

2) Потница

3) Желтушка

4) Цианоз

Продолжение таблицы 1

1

2

3

330033

0068

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

1) Пуповина

2) Омфалит

3) Пупочная грыжа

4) Родовая травма

330034

0069

Нарушения целостности тканей и органов ребенка, возникающие во время родов:

1) Пуповина

2) Омфалит

3) Пупочная грыжа

4) Родовая травма

330035

0070

Целенаправленные лечебно-профилактические меры по оздоровлению организма:

1) Интубация

2) Этиология

3) Санация

4) Склерема

330036

0071

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

330037

0072

Деревянистой плотности отеки кожи и подкожной клетчатки:

1) Склерема

2) Потница

3) Цианоз

4) Фингус

330038

0073

Энергичное растирание спины или похлопывание по подошве:

1) Этиология

2) Тактильная стимуляция

3) Склерема

4) Микроциркуляция

330039

0074

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

1) Асфиксия

2) Акроцианоз

3) Цианоз

4) Анемия

330040

0075

Грибовидное разрастание грануляций на две пупочные ранки размером 1-3 см в диаметре:

1) Пупочная грыжа

2) Фингус пупка

3) Свищи пупка

4) Склерема

Окончание таблицы 1

1

2

3

330041

0076

Учение о причинах болезни. Употребляется также как синоним «причина»:

1) Этиология

2) Эрозия

3) Асфиксия

4) Анемия

Таблица 2

Код ответа

Ответ

1

2

0001

5 мин

0002

2 балла

0003

8-10 баллов

0004

6-7 баллов

0005

1-3 балла

0006

Подготовка 60% кислородно-воздушной смеси

0007

Отсосать катетером содержимое полости рта и глотки

0008

Прекратить реанимационные мероприятия и организовать наблюдение за ребенком

0009

Перейти к обеспечению вентиляции легких

0010

Подготовить 60% кислородно-воздушную смесь

0011

Предать телу ребенка дренажное положение

0012

Продолжают ИВЛ до тех пор пока она не возрастет до 100 в мин

0013

Переходят к восстановлению и поддержанию сердечной деятельности и гемодинамики

0014

Налорфин или этимизол

0015

Подготовить резиновые груши

0016

Включить источник лучистого тепла

0017

Подготовить фонендоскоп

0018

Подготовить набор соединительных трубок и приспособлений для введения кислорода

0019

Энергично растереть спину и похлопать по подошве

0020

Головной конец опустить примерно на 150

0021

Наружный массаж сердца на фоне ИВЛ маской со 100% концентрацией кислорода

0022

По окраске кожи и пульсу на бедренной артерии

0023

0,1% раствором адреналина

0024

5 мин

0025

Витамин К

0026

Склерема пупка

0027

Омфалит

0028

Пупочная грыжа

0029

Полные и неполные

0030

Яркая краснота с малыми эрозиями

0036

Асфиксия

0037

Анемия

0038

Аспирация

Продолжение таблицы 2

1

2

0039

Акроцианоз

0040

Артериальная гипотензия

0041

Брадикардия

0042

Блок температурной защиты

0043

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

0044

Блок оксигенотерапии

0045

Блок искусственной вентиляции легких

0046

Блок медикаментозной терапии

0047

Блок контроля жизнедеятельности

0048

Вторичная гипоксия

0049

Врожденный порок сердца

0050

Гипоксия

0051

Гипоксемия

0052

Гиперкапния

0053

Гипертензия

0054

Дренажное положение

0056

Интубация

0057

Инфузионная терапия

0058

Кожный пупок

0059

Мышечный тонус

0060

Микроциркуляция

0061

Меконий

0062

Омфалит

0063

Опрелости

0064

Первичная асфиксия

0065

Плацента

0066

Пуповина

0067

Потница

0068

Родовая травма

0069

Санация

0070

Свищи пупка

0071

Склерема

0072

Тактильная стиммуляция

0073

Цианоз

0074

Фингус пупка

0075

Этиология

0076

Эрозия

Таблица 3

Код занятия

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

331

Неинфекционные заболевания кожи и пупочной ранки

332

Асфиксия, родовые травмы, гемолитическая болезнь новорожденных

333

Гнойно-воспалительные заболевания кожи и пупка. Сепсис.

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

Глобальный модуль

Перем глПользователь Экспорт;

Перем глТема Экспорт;

Перем глУровеньСложности Экспорт;

Перем AddComp Экспорт;

Перем глВремяНачала,глВремяОкончания Экспорт;

Перем ТекПротокол Экспорт;

//___________________

Процедура ПроверкаВремени() Экспорт

Перем Часы,Минуты,Секунды;

ТекущееВремя(Часы,Минуты,Секунды);

ТекВремя=(Часы*60+Минуты)*60+Секунды;

ВремОст=глВремяОкончания-ТекВремя;

ТекПроц=Цел(100-ВремОст/(глУровеньСложности.Время*60)*100);

AddComp.GaugePosition(ТекПроц);

Если ТекВремя>=глВремяОкончания Тогда

Если ТекПроц<100 Тогда

AddComp.GaugePosition(100);

КонецЕсли;

ОбработкаОжидания("ПроверкаВремени",0);

AddComp.SendKey("VK_F7");

КонецЕсли;

КонецПроцедуры //ПроверкаВремени

//_______________

Процедура ПриНачалеРаботыСистемы()

ФБ=КаталогИБ()+"Miracle.Dll";

Попытка

AddComp=СоздатьОбъект("Miracle.VCL");

Исключение

Если ФС.СуществуетФайл(ФБ)=0 Тогда

Предупреждение("Не найдена внешняя компонента, необходимая для работы данной конфигурации! Программа будет закрыта!");

ЗавершитьРаботуСистемы(0);

КонецЕсли;

ЗапуститьПриложение("regsvr32.exe"+Симв(34)+ФБ+Симв(34));

Для А=1 По 500000 Цикл; КонецЦикла;

Предупреждение("Установлена внешняя компонента"+РазделительСтрок+

"Программу необходимо перезагрузить!");

ЗавершитьРаботуСистемы(0);

КонецПопытки;

AddComp.SetMainIcon(КаталогИБ()+"128.ico");

Если ИмяПользователя()="Студент" Тогда

ОткрытьФорму("Обработка.Авторизация");

КонецЕсли;

КонецПроцедуры //ПриНачалеРаботыСистемы

//______________

Функция ЧислоПрописью(Ном) Экспорт

Стр=Формат(Ном,"ЧП");

Возврат Стр;

КонецФункции //ЧислоПрописью

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

//

Функция глКоличествоСловВСтр(Фраза,Разделитель) Экспорт

Перем Рез;

Перем Счетчик;

Рез=0;

//Фраза=СокрЛП(Фраз)+Разделитель;

Если ПустоеЗначение(Фраза)=0 Тогда

Для Счетчик=1 по СтрДлина(Фраза) Цикл

Если Сред(Фраза,Счетчик,1)=Разделитель Тогда

Если (Счетчик<СтрДлина(Фраза))И(Сред(Фраза,Счетчик+1,1)<>Разделитель) Тогда

Рез=Рез+1;

ИначеЕсли (Счетчик=СтрДлина(Фраза))И(Сред(Фраза,Счетчик-1,1)<>Разделитель) Тогда

Рез=Рез+1;

КонецЕсли;

КонецЕсли;

КонецЦикла;

КонецЕсли;

Возврат Рез;

КонецФункции

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

//

Функция глКоличествоСлов(Фраза) Экспорт

Возврат глКоличествоСловВСтр(Фраза," ");

КонецФункции

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

//

Функция глСловоПоНомеруВСтр(Номер,Фраз,Разделитель) Экспорт

Перем Счетчик;

Перем Рез;

//Перем Фраз;

Перем Ном;

//Фраз=СокрЛП(Фраза)+Разделитель;

Ном=1;

Рез="";

Для Счетчик=1 по СтрДлина(Фраз) Цикл

Если Счетчик<СтрДлина(Фраз) Тогда

Если (Ном=Номер)И(Сред(Фраз,Счетчик,1)<>Разделитель) Тогда

Рез=Рез+Сред(Фраз,Счетчик,1);

КонецЕсли;

Если (Сред(Фраз,Счетчик,1)=Разделитель)И(Сред(Фраз,Счетчик+1,1)<>Разделитель) Тогда

Ном=Ном+1;

КонецЕсли;

КонецЕсли;

КонецЦикла;

Возврат Рез;

КонецФункции // глСловоПоНомеру(Номер,Фраза,Разделитель)

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

//

Функция глСловоПоНомеру(Номер,Фраза) Экспорт

Возврат глСловоПоНомеруВСтр(Номер,Фраза," ");

КонецФункции

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

//

Функция глФИО(Стр) Экспорт

Перем Рез;

Рез="";

Рез=глСловоПоНомеру(1,Стр)+" "+Сред(глСловоПоНомеру(2,Стр),1,1)+"."+Сред(глСловоПоНомеру(3,Стр),1,1)+".";

Возврат Рез;

КонецФункции

Модуль формы элемента справочника «Группы»

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

//

Процедура ОбновитьКол()

Перем Запрос, ТекстЗапроса;

Запрос=СоздатьОбъект("Запрос");

ТекстЗапроса="Группа = Справочник.Студенты.Группа;

|Функция Счётчик = Счётчик();

|Условие(Группа = ТекущийЭлемент());

|";

Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда

Возврат;

КонецЕсли;

КолВоСтудентов=Запрос.Счётчик;

Если Константа.ОбновлятьКолСтудПриОткрытии=0 Тогда

Форма.Обновить();

Записать();

КонецЕсли;

КонецПроцедуры

//_____________________________________________________________________________

Процедура ПриОткрытии()

Форма.кнОбновить.Видимость(1-Константа.ОбновлятьКолСтудПриОткрытии);

КонецПроцедуры //ПриОткрытии

//_______________

Процедура ПриЗаписи() //предопределенная

Если Константа.ОбновлятьКолСтудПриОткрытии=1 Тогда

ОбновитьКол();

КонецЕсли;

КонецПроцедуры //ПриЗаписи

Модуль формы списка справочника «Студенты»

//_________

Процедура ПриОткрытии() //предопределенная

ВыборГруппы(0);

КонецПроцедуры //ПриОткрытии

Модуль формы элемента справочника «Темы»

Процедура ВыбратьФайл(ИФ)

Перем кат,ифв;

Если (СокрЛП(ИФ)<>"")И(ФС.СуществуетФайл(ИФ)=1) Тогда

Кат=ИФ;

Пока Сред(кат,СтрДлина(кат),1)<>"\" Цикл

кат=сред(кат,1,стрдлина(кат)-1);

Если СтрДлина(кат)=0 Тогда

Прервать;

КонецЕсли;

КонецЦикла;

Иначе

ИФ="";

Кат=КаталогИБ()+"Help\";

КонецЕсли;

Если ФС.ВыбратьФайл(0,ИФв,Кат,"Выберите файл","(*.txt)|*.txt",,)=1 Тогда

ИФ=Кат+ИФв;

КонецЕсли;

КонецПроцедуры

//________________

Процедура кнВопросы()

Если Выбран()=0 Тогда

Записать();

КонецЕсли;

Если Выбран()=0 Тогда

Возврат;

КонецЕсли;

КонтекстФормы="";

ОткрытьФорму("Справочник.Вопросы",КонтекстФормы);

КонтекстФормы.ИспользоватьВладельца(ТекущийЭлемент());

КонецПроцедуры //кнВопросы

Модуль формы списка справочника «Темы»

//_________________

Процедура ПриОткрытии() //предопределенная

ВыборГруппы(0);

Если ИмяПользователя()="Студент" Тогда

Форма.Справка.Видимость(0);

КонецЕсли;

КонецПроцедуры //ПриОткрытии

Модуль формы элемента справочника «Вопросы»

//_______

Процедура ПриЗаписи() //предопределенная

Если ПравильныйОтвет=0 Тогда

Предупреждение("Не указан правильный ответ!");

СтатусВозврата(0);

Возврат;

КонецЕсли;

Если ПустоеЗначение(ПолучитьАтрибут("Ответ"+Строка(ПравильныйОтвет)))=1 Тогда

Предупреждение("Не указан правильный ответ!");

СтатусВозврата(0);

Возврат;

КонецЕсли;

КолОтветов=0;

Для Л=1 по 5 Цикл

КолОтветов=КолОтветов+ПустоеЗначение(ПолучитьАтрибут("Ответ"+Строка(Л)));

КонецЦикла;

Если КолОтветов>3 Тогда

Предупреждение("Задайте не менее 2-х вариантов ответов!");

СтатусВозврата(0);

Возврат;

КонецЕсли;

КонецПроцедуры //ПриЗаписи

//_____________

Процедура кнПонятия()

Если Выбран()=0 Тогда

Записать();

КонецЕсли;

Если Выбран()=0 Тогда

Возврат;

КонецЕсли;

КонтекстФормы=ТекущийЭлемент();

ОткрытьФорму("Справочник.СсылкиНаПонятия.ФормаСписка",КонтекстФормы);

КонтекстФормы.ИспользоватьВладельца(ТекущийЭлемент());

КонецПроцедуры //кнПонятия

Модуль формы элемента справочника «Понятия»

//__________

Процедура ПриЗаписи() //предопределенная

Если (ПравильныйОтвет=0)ИЛИ(ПустоеЗначение(ПолучитьАтрибут("Ответ"+Строка(ПравильныйОтвет)))=1) Тогда

Предупреждение("Не указан правильный ответ!");

СтатусВозврата(0);

Возврат;

КонецЕсли;

КолОтветов=0;

Для Л=1 по 5 Цикл

КолОтветов=КолОтветов+ПустоеЗначение(ПолучитьАтрибут("Ответ"+Строка(Л)));

КонецЦикла;

Если КолОтветов>3 Тогда

Предупреждение("Задайте не менее 2-х вариантов ответов!");

СтатусВозврата(0);

Возврат;

КонецЕсли;

КонецПроцедуры //ПриЗаписи

Модуль формы элемента справочника «Уровни сложности»

//_____________

Процедура ПриВсехВопросах()

Форма.КолВопросовОбучения.Доступность(1-ВсеВопросы);

КолВопросовОбучения=1-ВсеВопросы;

КонецПроцедуры //ПриВсехВопросах

//___________

Процедура ПриВсехПонятиях()

Форма.КолПонятийОбучения.Доступность(1-ВсеПонятия);

КолПонятийОбучения=1-ВсеПонятия;

КонецПроцедуры //ПриВсехВопросах

//___________

Процедура ВводНового()

Балл1=30;

Балл2=45;

Балл3=60;

Балл4=75;

Балл5=90;

ПроходнойБалл=60;

КоличествоВопросов=3;

КоличествоПонятий=2;

КолОтветовНаВопросы=3;

КолОтветовНаПонятия=4;

Зачет=1;

ИспользоватьПонятия=1;

Время=30;

КонецПроцедуры //ВводНового

//_____________

Процедура ПриВыбореПонятий()

Форма.КоличествоПонятий.Доступность(ИспользоватьПонятия);

Форма.КолОтветовНаПонятия.Доступность(ИспользоватьПонятия);

КонецПроцедуры //ПриВыбореПонятий

//________________

Процедура ПриВыбореВидаОпроса()

Форма.Балл1.Доступность(2-Зачет);

Форма.Балл2.Доступность(2-Зачет);

Форма.Балл3.Доступность(2-Зачет);

Форма.Балл4.Доступность(2-Зачет);

Форма.Балл5.Доступность(2-Зачет);

Форма.ПроходнойБалл.Доступность(Зачет-1);

КонецПроцедуры //ПриВыбореВидаОпроса

//_____________

Процедура ПриВыбореЗакладки(Номер,Значение) //предопределенная

Если Значение=1 Тогда

Форма.ИспользоватьСлой("Основной,Кнопки");

ПриВыбореВидаОпроса();

ПриВыбореПонятий();

Иначе

ВсеВопросы=?(КолВопросовОбучения=0,1,0);

ВсеПонятия=?(КолПонятийОбучения=0,1,0);

Форма.КолВопросовОбучения.Доступность(1-ВсеВопросы);

Форма.КолПонятийОбучения.Доступность(1-ВсеПонятия);

Форма.ИспользоватьСлой("Обучение,Кнопки");

КонецЕсли;

КонецПроцедуры //ПриВыбореЗакладки

//_____________

Процедура ПриОткрытии() //предопределенная

Форма.ИспользоватьЗакладки(1);

Форма.Закладки.ДобавитьЗначение(1,"Тестирование");

Форма.Закладки.ДобавитьЗначение(2,"Обучение");

ПриВыбореЗакладки(1,1)

КонецПроцедуры //ПриОткрытии

Модуль формы списка справочника «Уровни сложности»

//_____________

Процедура ПриОткрытии() //предопределенная

ВыборГруппы(0);

КонецПроцедуры //ПриОткрытии

Модуль формы списка справочника «Ссылки на понятия»

//________________

Процедура ПриОткрытии()

Форма.ПанельИнструментов(0);

КонецПроцедуры //ПриОткрытии()

//_________________

Процедура ПриВводеСтроки()

СтатусВозврата(0);

КонецПроцедуры //ВводНового

//_______________

Процедура кнДобавить()

Перем Понят;

Спр=СоздатьОбъект("Справочник.СсылкиНаПонятия");

Спр.ИспользоватьВладельца(Форма.Параметр);

Если ВвестиЗначение(Понят,"Выберите понятие","Справочник.Понятия")=1 Тогда

Если Спр.НайтиПоРеквизиту("Понятие",Понят,0)=0 Тогда

Спр.Новый();

Спр.Понятие=Понят;

Спр.Записать();

Форма.Обновить();

Иначе

Предупреждение("Такое понятие уже зарегистрировано для данного вопроса!");

КонецЕсли;

КонецЕсли;

КонецПроцедуры //кнДобавить

Модуль формы документа «Протокол»

Перем СписокВопросов,СписокПонятий,ВремяНачала,ТекВопрос,ТекПонятие,ЗаданоВопросов;

Перем КолВопросов,КолПонятий,ТекстВопр,СписокОтветов,ТаблОтветов,глРежим;

//_______________

Процедура Сохранение()

УдалитьСтроки();

ЗагрузитьТабличнуюЧасть(ТаблОтветов);

Записать();

КонецПроцедуры //Сохранение

//_______________

Процедура ПриРедактированииНовойСтроки()

Предупреждение("Займитесь лучше делом!",3);

СтатусВозврата(0);

КонецПроцедуры //Сохранение

//_____________

Процедура ВидимостьОтветов(Кол=0)

Если Кол>0 Тогда

Форма.ВариантОтвета.Видимость(1);

Иначе

Форма.ВариантОтвета.Видимость(0);

Ответ1="";

ТекстВопр="";

КонецЕсли;

Если Кол>1 Тогда

Форма.Вар2.Видимость(1);

Иначе

Форма.Вар2.Видимость(0);

Ответ2="";

КонецЕсли;

Если Кол>2 Тогда

Форма.Вар3.Видимость(1);

Иначе

Форма.Вар3.Видимость(0);

Ответ3="";

КонецЕсли;

Если Кол>3 Тогда

Форма.Вар4.Видимость(1);

Иначе

Форма.Вар4.Видимость(0);

Ответ4="";

КонецЕсли;

Если Кол>4 Тогда

Форма.Вар5.Видимость(1);

Иначе

Форма.Вар5.Видимость(0);

Ответ5="";

КонецЕсли;

КонецПроцедуры //ВидимостьОтветов

//_____________

Процедура ВремяВышло()

ВидимостьОтветов();

Форма.Подсказка.Заголовок("У Вас закончилось время!");

Форма.Обновить();

Форма.кнДалее.Видимость(0);

ОбработкаОжидания("ПроверкаВремени",0);

ТаблОтветов.УдалитьСтроку();

ОстатокВремени=0;

ОценкаБалл="Overtime";

Форма.тВопрос.Видимость(0);

Сохранение();

КонецПроцедуры //ВремяВышло

//______________

Процедура ЗадатьПонятие(ТекВопр)

ТекПонятие=ТекПонятие+1;

СписокОтветов=СоздатьОбъект("СписокЗначений");

СписОтветов=СоздатьОбъект("СписокЗначений");

НомВопроса=1+AddComp.RND(СписокПонятий.РазмерСписка()-1);

ТаблОтветов.НоваяСтрока();

ТаблОтветов.Понятие=СписокПонятий.ПолучитьЗначение(НомВопроса);

СписокПонятий.УдалитьЗначение(НомВопроса);

ТаблОтветов.ЗаданВопрос=ТекВопр;

ТекстВопр=ТаблОтветов.Понятие.ТекстВопроса;

Форма.Подсказка.Заголовок("Подвопрос "+ТекПонятие+" из "+КолПонятий);

Форма.Обновить();

Для Л=1 по 5 Цикл

отв=ТаблОтветов.Понятие.ПолучитьАтрибут("Ответ"+Строка(Л));

Если ПустоеЗначение(отв)=0 Тогда

Если Л=ТаблОтветов.Понятие.ПравильныйОтвет Тогда

СписОтветов.ДобавитьЗначение(Л,отв);

Иначе

СписокОтветов.ДобавитьЗначение(Л,отв);

КонецЕсли;

КонецЕсли;

КонецЦикла;

Если УровеньСложности.КолОтветовНаПонятия-1>СписокОтветов.РазмерСписка() Тогда

Для Л=1 по СписокОтветов.РазмерСписка() Цикл

Строк="";

Значен=СписокОтветов.ПолучитьЗначение(Л,Строк);

СписОтветов.ДобавитьЗначение(Значен,Строк);

КонецЦикла;

Иначе

Для Л=1 по УровеньСложности.КолОтветовНаПонятия-1 Цикл

Строк="";

Ном=1+AddComp.RND(СписокОтветов.РазмерСписка()-1);

Значен=СписокОтветов.ПолучитьЗначение(Ном,Строк);

СписОтветов.ДобавитьЗначение(Значен,Строк);

СписокОтветов.УдалитьЗначение(Ном);

КонецЦикла;

КонецЕсли;

СписокОтветов.УдалитьВсе();

ВидимостьОтветов(СписОтветов.РазмерСписка());

Для Л=1 по СписокОтветов.РазмерСписка()+СписОтветов.РазмерСписка() Цикл

Строк="";

Ном=1+AddComp.RND(СписОтветов.РазмерСписка()-1);

Значен=СписОтветов.ПолучитьЗначение(Ном,Строк);

СписокОтветов.ДобавитьЗначение(Значен,Строк);

СписОтветов.УдалитьЗначение(Ном);

УстановитьАтрибут("Ответ"+Строка(Л),Строк);

КонецЦикла;

Форма.Обновить();

КонецПроцедуры //ЗадатьПонятие

//________________

Процедура ЗадатьВопрос()

ТекВопрос=ТекВопрос+1;

СписокОтветов=СоздатьОбъект("СписокЗначений");

СписОтветов=СоздатьОбъект("СписокЗначений");

НомВопроса=1+AddComp.RND(СписокВопросов.РазмерСписка()-1);

ТаблОтветов.НоваяСтрока();

ТаблОтветов.ЗаданВопрос=СписокВопросов.ПолучитьЗначение(НомВопроса);

СписокВопросов.УдалитьЗначение(НомВопроса);

ТекстВопр=ТаблОтветов.ЗаданВопрос.ТекстВопроса;

Для Л=1 по 5 Цикл

отв=ТаблОтветов.ЗаданВопрос.ПолучитьАтрибут("Ответ"+Строка(Л));

Если ПустоеЗначение(отв)=0 Тогда

Если Л=ТаблОтветов.ЗаданВопрос.ПравильныйОтвет Тогда

СписОтветов.ДобавитьЗначение(Л,отв);

Иначе

СписокОтветов.ДобавитьЗначение(Л,отв);

КонецЕсли;

КонецЕсли;

КонецЦикла;

Если УровеньСложности.КолОтветовНаВопросы-1>СписокОтветов.РазмерСписка() Тогда

Для Л=1 по СписокОтветов.РазмерСписка() Цикл

Строк="";

Значен=СписокОтветов.ПолучитьЗначение(Л,Строк);

СписОтветов.ДобавитьЗначение(Значен,Строк);

КонецЦикла;

Иначе

Для Л=1 по УровеньСложности.КолОтветовНаВопросы-1 Цикл

Строк="";

Ном=1+AddComp.RND(СписокОтветов.РазмерСписка()-1);

Значен=СписокОтветов.ПолучитьЗначение(Ном,Строк);

СписОтветов.ДобавитьЗначение(Значен,Строк);

СписокОтветов.УдалитьЗначение(Ном);

КонецЦикла;

КонецЕсли;

СписокОтветов.УдалитьВсе();

ВидимостьОтветов(СписОтветов.РазмерСписка());

Для Л=1 по СписокОтветов.РазмерСписка()+СписОтветов.РазмерСписка() Цикл

Строк="";

Ном=1+AddComp.RND(СписОтветов.РазмерСписка()-1);

Значен=СписОтветов.ПолучитьЗначение(Ном,Строк);

СписокОтветов.ДобавитьЗначение(Значен,Строк);

СписОтветов.УдалитьЗначение(Ном);

УстановитьАтрибут("Ответ"+Строка(Л),Строк);

КонецЦикла;

Форма.Обновить();

КонецПроцедуры //ЗадатьВопрос

//__________________

Процедура ВводНового(Копирование) //предопределенная

Студент=глПользователь;

Тема=?(ПустоеЗначение(глТема)=1,Студент.Группа.ТемаПоУмолчанию,глТема);

УровеньСложности=?(ПустоеЗначение(глУровеньСложности)=1,Константа.УровеньПоУмолчанию,глУровеньСложности);

глУровеньСложности=УровеньСложности;

КонецПроцедуры //ВводНового

//___________________

Процедура ПриОткрытии() //предопределенная

Форма.ПрогрессВремени.Видимость(0);

Спр=СоздатьОбъект("Справочник.Вопросы");

СписокВопросов=СоздатьОбъект("СписокЗначений");

Спр.ИспользоватьВладельца(Тема);

СВ=СоздатьОбъект("ТаблицаЗначений");

ВыгрузитьТабличнуюЧасть(СВ,"ЗаданВопрос");

СВ.Свернуть("ЗаданВопрос",);

ЗаданоВопросов=0;

ЗаданоВопросов=СВ.КоличествоСтрок();

//CВ.УдалитьСтроки();

//ВыгрузитьТабличнуюЧасть(СВ,"Понятие");

//СВ.Свернуть("ЗаданВопрос",);

глРежим=0;

Спр.ВыбратьЭлементы();

Пока Спр.ПолучитьЭлемент()=1 Цикл

Строчка=ПолучитьПустоеЗначение("Число");

Если СВ.НайтиЗначение(Спр.ТекущийЭлемент(),Строчка,1)=0 Тогда

СписокВопросов.ДобавитьЗначение(Спр.ТекущийЭлемент());

КонецЕсли;

КонецЦикла;

СВ.Очистить();

Если УровеньСложности.КоличествоВопросов>СписокВопросов.РазмерСписка() Тогда

КолВопросов=СписокВопросов.РазмерСписка();

Иначе

КолВопросов=УровеньСложности.КоличествоВопросов;

КонецЕсли;

ВидимостьОтветов();

Форма.кнДалее.Видимость(0);

Форма.тВопрос.Видимость(0);

Если (КолВопросов=0)И(ПустоеЗначение(ОценкаБалл)=1) Тогда

Форма.кнСтарт.Видимость(0);

Предупреждение("Отсутствуют вопросы к данной теме!");

СтатусВозврата(0);

Возврат;

КонецЕсли;

Если ПустоеЗначение(ОценкаБалл)=0 Тогда

Форма.кнСтарт.Видимость(0);

Форма.Подсказка.Заголовок("Оценка - "+СокрП(ОценкаБалл)+" , % правильных ответов - "+Строка(ОценкаПроцент));

Форма.Обновить();

КонецЕсли;

КонецПроцедуры //ПриОткрытии

//_______________________

Процедура кнСтарт()

Перем Часы,Минуты,Секунды;

AddComp.MaximizeReport();

AddComp.SetGauge();

ТаблОтветов.УдалитьСтроки();

ВыгрузитьТабличнуюЧасть(ТаблОтветов);

Если ОстатокВремени>0 Тогда

Предупреждение("У Вас осталось "+Строка(Цел(ОстатокВремени/60))+"мин.");

КонецЕсли;

ТекВопрос=0;

Форма.кнСтарт.Видимость(0);

Форма.кнДалее.Видимость(1);

ОценкаБалл="";

Форма.тВопрос.Видимость(1);

ТекущееВремя(Часы,Минуты,Секунды);

глВремяНачала=(Часы*60+Минуты)*60+Секунды;

Если ОстатокВремени>0 Тогда

глВремяОкончания=глВремяНачала+ОстатокВремени-1;

Иначе

глВремяОкончания=глВремяНачала+глУровеньСложности.Время*60-1;

КонецЕсли;

ОбработкаОжидания("ПроверкаВремени",5);

ЗадатьВопрос();

глРежим=1;

КонецПроцедуры //кнСтарт

//__________________

Процедура кнДалее()

Перем Часы,Минуты,Секунды;

Если ПустоеЗначение(ВариантОтвета)=1 Тогда

Предупреждение("Укажите вариант ответа!");

Возврат;

КонецЕсли;

Если глРежим=2 Тогда

ТаблОтветов.ОтветНаПонятие=СписокОтветов.ПолучитьЗначение(ВариантОтвета);

ВариантОтвета=0;

Если ТаблОтветов.ОтветНаПонятие=ТаблОтветов.Понятие.ПравильныйОтвет Тогда

ОценкаПроцент=ОценкаПроцент+1/КолПонятий;

Сообщить("Подвопрос № "+(ТекВопрос+ЗаданоВопросов)+"."+ТекПонятие+" - ответ верный!"," ");

Иначе

Сообщить("Подвопрос № "+(ТекВопрос+ЗаданоВопросов)+"."+ТекПонятие+" - ответ не верный!","!!");

КонецЕсли;

Если ТекПонятие<КолПонятий Тогда

ЗадатьПонятие(ТаблОтветов.ЗаданВопрос);

Возврат;

Иначе

глРежим=1;

Форма.Подсказка.Заголовок("");

Форма.Обновить();

Перейти ~М1

КонецЕсли;

Иначе

ТаблОтветов.ОтветНаВопрос=СписокОтветов.ПолучитьЗначение(ВариантОтвета);

ВариантОтвета=0;

Если ТаблОтветов.ОтветНаВопрос=ТаблОтветов.ЗаданВопрос.ПравильныйОтвет Тогда

ОценкаПроцент=ОценкаПроцент+1;

Сообщить("Вопрос № "+(ТекВопрос+ЗаданоВопросов)+" - ответ верный!"," ");

Иначе

Сообщить("Вопрос № "+(ТекВопрос+ЗаданоВопросов)+" - ответ не верный!","!");

Если УровеньСложности.ИспользоватьПонятия=1 Тогда

СписокПонятий=СоздатьОбъект("СписокЗначений");

Спр=СоздатьОбъект("Справочник.СсылкиНаПонятия");

Спр.ИспользоватьВладельца(ТаблОтветов.ЗаданВопрос);

Спр.ВыбратьЭлементы();

Пока Спр.ПолучитьЭлемент()=1 Цикл

СписокПонятий.ДобавитьЗначение(Спр.Понятие);

КонецЦикла;

Если УровеньСложности.КоличествоПонятий>СписокПонятий.РазмерСписка() Тогда

КолПонятий=СписокПонятий.РазмерСписка();

Иначе

КолПонятий=УровеньСложности.КоличествоПонятий;

КонецЕсли;

Если КолПонятий=0 Тогда Перейти ~М1;КонецЕсли;

глРежим=2;

ТекПонятие=0;

ЗадатьПонятие(ТаблОтветов.ЗаданВопрос);

Возврат;

КонецЕсли;

КонецЕсли;

КонецЕсли;

~М1:Если ТекВопрос<КолВопросов Тогда

ЗадатьВопрос();

Иначе

ОбработкаОжидания("ПроверкаВремени",0);

ТекущееВремя(Часы,Минуты,Секунды);

AddComp.GaugePosition(100);

ОценкаПроцент=ОценкаПроцент/(КолВопросов+ЗаданоВопросов)*100;

Если УровеньСложности.Зачет=2 Тогда

Если УровеньСложности.ПроходнойБалл>ОценкаПроцент Тогда

ОценкаБалл="Незачет";

Иначе

ОценкаБалл="Зачет";

КонецЕсли;

Иначе

ОценкаБалл="Идиот";

Для Л=1 по 5 Цикл

Если ОценкаПроцент>=УровеньСложности.ПолучитьАтрибут("Балл"+Строка(6-Л)) Тогда

ОценкаБалл=Строка(6-Л);

Прервать;

КонецЕсли;

КонецЦикла;

КонецЕсли;

Форма.кнДалее.Видимость(0);

Форма.тВопрос.Видимость(0);

ВидимостьОтветов();

ОстатокВремени=глВремяОкончания-(Часы*60+Минуты)*60+Секунды;

Сохранение();

Форма.Подсказка.Заголовок("Ваша оценка - "+ОценкаБалл);

Форма.Обновить();

КонецЕсли;

КонецПроцедуры //кнДалее

//____________

Процедура ПриЗакрытии() //предопределенная

Если (глРежим=3)ИЛИ(глРежим=0) Тогда

Иначе

СтатусВозврата(0);

КонецЕсли;

КонецПроцедуры //ПриЗакрытии

//______________

Процедура кнВыход()

Перем Часы,Минуты,Секунды;

Если (глРежим=2)И(ТекВопрос=КолВопросов) Тогда

Возврат;

КонецЕсли;

Если (ПустоеЗначение(ОценкаБалл)=1)И(глРежим<>0) Тогда

Если Вопрос("Сохранить данный тест для последующего продолжения?",4)=6 Тогда

ТаблОтветов.УдалитьСтроку();

ТекущееВремя(Часы,Минуты,Секунды);

ОстатокВремени=глВремяОкончания-(Часы*60+Минуты)*60+Секунды;

Сохранение();

Иначе

Возврат;

КонецЕсли;

КонецЕсли;

глРежим=3;

Форма.Закрыть(0);

КонецПроцедуры //кнВыход

//______________

ТаблОтветов=СоздатьОбъект("ТаблицаЗначений");

ТаблОтветов.НоваяКолонка("ЗаданВопрос","Справочник.Вопросы");

ТаблОтветов.НоваяКолонка("ОтветНаВопрос","Число",1,0);

ТаблОтветов.НоваяКолонка("Понятие","Справочник.Понятия");

ТаблОтветов.НоваяКолонка("ОтветНаПонятие","Число",1,0);

Модуль формы документа «Обучение»

Перем СписокВопросов,ТекстВопр,глРежим;

//_____________

Процедура ПриРедактированииНовойСтроки()

Предупреждение("Займитесь лучше делом!",3);

СтатусВозврата(0);

КонецПроцедуры //Сохранение

//___________

Процедура ЗадатьВопрос()

ТекВопрос=ТекВопрос+1;

НомВопроса=1+AddComp.RND(СписокВопросов.РазмерСписка()-1);

НоваяСтрока();

ТВ=СписокВопросов.ПолучитьЗначение(НомВопроса);

Если Режим=2 Тогда

ЗаданВопрос=ТВ;

ТекстВопр=ЗаданВопрос.ТекстВопроса;

ИначеЕсли Режим=3 Тогда

Понятие=ТВ;

ТекстВопр=Понятие.ТекстВопроса;

КонецЕсли;

СписокВопросов.УдалитьЗначение(НомВопроса);

УстановитьАтрибут("Ответ",ТВ.ПолучитьАтрибут("Ответ"+Строка(ТВ.ПравильныйОтвет)));

Форма.Обновить();

КонецПроцедуры //ЗадатьВопрос

//_______________

Процедура ВводНового(Копирование) //предопределенная

Студент=глПользователь;

Тема=?(ПустоеЗначение(глТема)=1,Студент.Группа.ТемаПоУмолчанию,глТема);

УровеньСложности=?(ПустоеЗначение(глУровеньСложности)=1,Константа.УровеньПоУмолчанию,глУровеньСложности);

глУровеньСложности=УровеньСложности;

Режим=Форма.Параметр;

КонецПроцедуры //ВводНового

//____________

Процедура ПриОткрытии() //предопределенная

СписокВопросов=СоздатьОбъект("СписокЗначений");

Если Режим=2 Тогда

Спр=СоздатьОбъект("Справочник.Вопросы");

Спр.ИспользоватьВладельца(Тема);

КолВопросов=УровеньСложности.КолВопросовОбучения;

ИначеЕсли Режим=3 Тогда

Спр=СоздатьОбъект("Справочник.Понятия");

КолВопросов=УровеньСложности.КолПонятийОбучения;

КонецЕсли;

Если Режим<>1 Тогда

Спр.ВыбратьЭлементы();

Пока Спр.ПолучитьЭлемент()=1 Цикл

СписокВопросов.ДобавитьЗначение(Спр.ТекущийЭлемент());

КонецЦикла;

Если (КолВопросов>СписокВопросов.РазмерСписка())ИЛИ(КолВопросов=0) Тогда

КолВопросов=СписокВопросов.РазмерСписка();

КонецЕсли;

Если КолВопросов=0 Тогда

Форма.кнСтарт.Видимость(0);

Предупреждение("Отсутствуют вопросы к данной теме!");

Форма.Закрыть(0);

КонецЕсли;

КонецЕсли;

Форма.кнДалее.Видимость(0);

Форма.тВопрос.Видимость(0);

КонецПроцедуры //ПриОткрытии

//______________

Процедура кнСтарт()

УдалитьСтроки();

AddComp.MaximizeReport();

ТекВопрос=0;

Форма.кнСтарт.Видимость(0);

Если Режим=1 Тогда

ИФ=СокрЛП(Тема.Справка);

Если ФС.СуществуетФайл(ИФ)=1 Тогда

Спр=СоздатьОбъект("Текст");

Спр.Открыть(ИФ);

Спр.ТолькоПросмотр(1);

Спр.Показать("Справочная информация");

Иначе

Предупреждение("Справочная информация по данной теме отсутствует!");

КонецЕсли;

Иначе

Форма.кнДалее.Видимость(1);

Форма.тВопрос.Видимость(1);

ЗадатьВопрос();

КонецЕсли;

КонецПроцедуры //кнСтарт

//____________

Процедура кнДалее()

Если ТекВопрос<КолВопросов Тогда

ЗадатьВопрос();

Иначе

Форма.кнДалее.Видимость(0);

Форма.тВопрос.Видимость(0);

Форма.Обновить();

КонецЕсли;

КонецПроцедуры //кнДалее

//_____________

Процедура кнВыход()

Если ТекВопрос<КолВопросов Тогда

Если Вопрос("Вы действительно хотите прервать обучение?",4)=6 Тогда

Иначе

Возврат;

КонецЕсли;

КонецЕсли;

глРежим=3;

Записать();

Форма.Закрыть(0);

КонецПроцедуры //кнВыход

//_____________

Процедура ПриЗакрытии() //предопределенная

Если глРежим<>3 Тогда

кнВыход();

КонецЕсли;

КонецПроцедуры //ПриЗакрытии

Модуль формы журнала «Обучение»

//__________

Функция ВидОбучения()

ТекРеж=ТекущийДокумент.Режим;

Если ТекРеж=1 Тогда

Возврат "Справка";

ИначеЕсли ТекРеж=2 Тогда

Возврат "Вопросы";

Иначе

Возврат "Понятия";

КонецЕсли;

КонецФункции //ВидОбучения

Модуль формы отчета «Отчет по студенту»

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

//

Процедура Сформировать()

Перем Запрос, ТекстЗапроса, Таб;

Запрос=СоздатьОбъект("Запрос");

ТекстЗапроса="Период с ВыбНачПериода по ВыбКонПериода;

|ОбрабатыватьДокументы НеПроведенные;

|ТекДокумент = Документ.Протокол.ТекущийДокумент;

|Студент = Документ.Протокол.Студент;

|Тема = Документ.Протокол.Тема;

|ОценкаПроцент = Документ.Протокол.ОценкаПроцент;

|УровеньСложности = Документ.Протокол.УровеньСложности;

|ОценкаБалл = Документ.Протокол.ОценкаБалл;

|ЗаданВопрос = Документ.Протокол.ЗаданВопрос;

|ОтветНаВопрос = Документ.Протокол.ОтветНаВопрос;

|Понятие = Документ.Протокол.Понятие;

|ОтветНаПонятие = Документ.Протокол.ОтветНаПонятие;

|Функция Счётчик = Счётчик();

|Функция СчётчикПравильныхВопр = Счётчик() когда(ЗаданВопрос.ПравильныйОтвет=ОтветНаВопрос);

|Функция СчётчикПравильныхПонятий = Счётчик() когда((Понятие.ПравильныйОтвет=ОтветНаПонятие)И(ОтветНаПонятие<>0));

|Функция СчетчикПонятий = Счётчик() когда(ПустоеЗначение(Понятие)=0);

|Группировка Тема без групп;

|Группировка ТекДокумент упорядочить по ТекДокумент.ДатаДок;

|Условие(Студент = ВыбСтудент);

|Условие(Тема в ВыбТема);";

Если ВыбДокумент.Выбран()=1 Тогда

ТекстЗапроса=ТекстЗапроса+"Условие(ТекДокумент=ВыбДокумент);";

КонецЕсли;

Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда

Возврат;

КонецЕсли;

Таб = СоздатьОбъект("Таблица");

Таб.ИсходнаяТаблица("Сформировать");

Таб.ВывестиСекцию("Заголовок");

Состояние("Заполнение выходной таблицы...");

Таб.Опции(0, 0, Таб.ВысотаТаблицы(),0);

НомТем=0;

НомДок=0;

ОбщПроцент=0;

Пока Запрос.Группировка(1) = 1 Цикл

НомТем=НомТем+1;

Таб.ВывестиСекцию("Тема");

НомДок=0;

Пока Запрос.Группировка(2) = 1 Цикл

НомДок=НомДок+1;

ТекДок=Запрос.ТекДокумент;

ОбщПроцент=ОбщПроцент+ТекДок.ОценкаПроцент;

Таб.ВывестиСекцию("ТекДок");

Если РазворачиватьПоВопросам=1 Тогда

ТекДок.ВыбратьСтроки();

ТекВопр=0;

НомВопр=0;

Пока ТекДок.ПолучитьСтроку()=1 Цикл

Если ТекВопр<>ТекДок.ЗаданВопрос Тогда

ТекВопр=ТекДок.ЗаданВопрос;

НомВопр=НомВопр+1;

ТекПонят=0;

СпрВопр=ТекДок.ЗаданВопрос;

ТВопр=СпрВопр.ТекстВопроса;

ТПравОтвет=СпрВопр.ПравильныйОтвет;

ТОтвет=ТекДок.ОтветНаВопрос;

Иначе

ТекПонят=ТекПонят+1;

СпрВопр=ТекДок.Понятие;

ТВопр=СпрВопр.ТекстВопроса;

ТПравОтвет=СпрВопр.ПравильныйОтвет;

ТОтвет=ТекДок.ОтветНаПонятие;

КонецЕсли;

Таб.ВывестиСекцию("Вопрос"+Строка(?(ТПравОтвет=ТОтвет,"",1)));

КонецЦикла;

КонецЕсли;

КонецЦикла;

КонецЦикла;

Таб.ВывестиСекцию("Итого");

Таб.ТолькоПросмотр(1);

Таб.Показать("Сформировать", "");

КонецПроцедуры

ВыбНачПериода=НачМесяца(ТекущаяДата());

ВыбКонПериода=КонМесяца(ТекущаяДата());

Модуль формы отчета «Отчет по группам»

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

//

Процедура Сформировать()

Перем Запрос,ТекстЗапроса,Таб;

Запрос=СоздатьОбъект("Запрос");

ТекстЗапроса="Период с ВыбНачПериода по ВыбКонПериода;

|ОбрабатыватьДокументы все;

|Обрабатывать НеПомеченныеНаУдаление;

|Студент = Документ.Протокол.Студент;

|Группа = Документ.Протокол.Студент.Группа;

|Тема = Документ.Протокол.Тема;

|ОценкаПроцент = Документ.Протокол.ОценкаПроцент;

|ОценкаБалл = Документ.Протокол.ОценкаБалл;

|ТекущийДокумент = Документ.Протокол.ТекущийДокумент;

|Функция Счётчик = Счётчик();

|Группировка Группа упорядочить по Группа.Наименование без групп;

|Группировка Тема без групп;

|Группировка Студент упорядочить по Студент.Наименование без групп;

|Группировка ТекущийДокумент упорядочить по ТекущийДокумент.ДатаДок;

|Условие(Группа в ВыбГруппа);

|Условие(Студент в ВыбСтудент);

|Условие(Тема в ВыбТема);";

Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда

Возврат;

КонецЕсли;

Таб=СоздатьОбъект("Таблица");

Таб.ИсходнаяТаблица("Сформировать");

Таб.ВывестиСекцию("Заголовок");

Состояние("Заполнение выходной таблицы...");

Таб.Опции(0,0,Таб.ВысотаТаблицы(),0);

НомГрупп=0;

Пока Запрос.Группировка(1)=1 Цикл

НомГрупп=НомГрупп+1;

Таб.ВывестиСекцию("Группа");

НомТем=0;

Пока Запрос.Группировка(2)=1 Цикл

НомТем=НомТем+1;

Таб.ВывестиСекцию("Тема");

НомСтуд=0;

Пока Запрос.Группировка(3)=1 Цикл

НомСтуд=НомСтуд+1;

Таб.ВывестиСекцию("Студент");

НомДок=0;

Пока Запрос.Группировка(4)=1 Цикл

НомДок=НомДок+1;

Таб.ВывестиСекцию("Док");

КонецЦикла;

КонецЦикла;

КонецЦикла;

КонецЦикла;

Таб.ВывестиСекцию("Итого");

Таб.ТолькоПросмотр(1);

Таб.Показать("Сформировать", "");

КонецПроцедуры

Модуль формы обработки «Авторизация»

Перем глОбъект;

//_____________

Процедура ПриЗакрытии() //предопределенная

Если Вопрос("Выйти из программы?",4)<>6 Тогда

СтатусВозврата(0);

Возврат;

КонецЕсли;

ЗавершитьРаботуСистемы(0);

КонецПроцедуры //ПриЗаписи

//______________

Процедура УправлениеДиалогом()

Форма.тСложность.Видимость(ПустоеЗначение(УровеньСложности));

Форма.УровеньСложности.Видимость(ПустоеЗначение(УровеньСложности));

Форма.Экзамен.Видимость(1-УровеньСложности.ЗапретитьОбучение);

Форма.тЭкзамен.Видимость(1-УровеньСложности.ЗапретитьОбучение);

Форма.Обучение.Видимость(1-УровеньСложности.ЗапретитьОбучение);

Форма.тОбучение.Видимость(1-УровеньСложности.ЗапретитьОбучение);

Если УровеньСложности.ЗапретитьОбучение=1 Тогда

Экзамен=1;

КонецЕсли;

Форма.Тема.Доступность(ПустоеЗначение(Тема));

КонецПроцедуры //УправлениеДиалогом

//_____________

Процедура ПриВыбореСтудента()

Если Студент.Выбран()=1 Тогда

Тема=Студент.Группа.ТемаПоУмолчанию;

УровеньСложности=Студент.Группа.УровеньПоУмолчанию;

КонецЕсли;

УправлениеДиалогом();

КонецПроцедуры //ПриВыбореСтудента

//_____________

Процедура ПриВыбореТемы()

Если ПустоеЗначение(Студент)=1 Тогда

Предупреждение("Сначала нужно указать студента!");

Тема=0;

КонецЕсли;

КонецПроцедуры //ПриВыбореТемы

//____________

Процедура ПриОткрытии() //предопределенная

Форма.Заголовок("Авторизация пользователя...");

УровеньСложности=Константа.УровеньПоУмолчанию;

Экзамен=1;

Флаг=0;

УправлениеДиалогом();

КонецПроцедуры //ПриОткрытии

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

//

Процедура Экзамен()

Перем Запрос,ТекстЗапроса,Док;

Запрос=СоздатьОбъект("Запрос");

НачПериода='01.01.1980';

КонПериода=ТекущаяДата();

ТекстЗапроса="Период с НачПериода по КонПериода;

|ОбрабатыватьДокументы все;

|Обрабатывать НеПомеченныеНаУдаление;

|ТекДок=Документ.Протокол.ТекущийДокумент;

|ЗСтудент=Документ.Протокол.Студент;

|ОценкаБалл=Документ.Протокол.ОценкаБалл;

|ОстатокВремени=Документ.Протокол.ОстатокВремени;

|Функция Счётчик=Счётчик();

|Группировка ТекДок упорядочить по ТекДок.ДатаДок;

|Условие(ЗСтудент=Студент);

|Условие(Число(ОценкаБалл)=0);

|Условие(ОстатокВремени>0);";

Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда

Возврат;

КонецЕсли;

СписДок=СоздатьОбъект("СписокЗначений");

Пока Запрос.Группировка(1) = 1 Цикл

ТД=Запрос.ТекДок;

СписДок.ДобавитьЗначение(ТД,Строка(ТД.ДатаДок)+" "+СокрЛП(ТД.Тема.Наименование));

КонецЦикла;

Если СписДок.РазмерСписка()>0 Тогда

Если Вопрос("У Вас остались недоделанные задания."+РазделительСтрок+"Хотите доделать?",4)=6 Тогда

Если СписДок.ВыбратьЗначение(Док,,,,)=1 Тогда

глОбъект=Док;

Возврат;

КонецЕсли;

КонецЕсли;

КонецЕсли;

глОбъект="Документ.Протокол";

КонецПроцедуры

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

Процедура Выполнить()

Перем Парам;

Если ПустоеЗначение(УровеньСложности)+ПустоеЗначение(Тема)+ПустоеЗначение(Студент)<>0 Тогда

Предупреждение("Не указан один из параметров!");

Возврат;

КонецЕсли;

глУровеньСложности=УровеньСложности;

глТема=Тема;

глПользователь=Студент;

Если Экзамен=1 Тогда

Экзамен();

Иначе

Меню=СоздатьОбъект("СписокЗначений");

Меню.ДобавитьЗначение(1,"Справка по теме");

Меню.ДобавитьЗначение(2,"Ответы на вопросы");

Меню.ДобавитьЗначение(3,"Ответы на понятия");

Если Меню.ВыбратьЗначение(Парам,,,,1)=0 Тогда

Возврат;

КонецЕсли;

глОбъект="Документ.Обучение";

КонецЕсли;

ОткрытьФорму(глОбъект,Парам);

КонецПроцедуры

Размещено на Allbest.ru


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

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