
- •Введение
- •1. Технико-экономическое обоснование
- •1.1 Организация учебного процесса в бму
- •1.1.1 Функционирование объекта управления
- •Выбор масштабов автоматизации
- •1.1.1.1 Структура и содержание учебной дисциплины
- •1.1.1.1.1 Содержание учебного материала (обучающий материал)
- •Раздел 3.
- •Тема 3.2 “Сестринский процесс при болезнях новорожденных”
- •Содержание учебной информации теоретических занятий:
- •Содержание учебной информации практических занятий.
- •1.1.1.1.2 Глоссарий учебной дисциплины
- •1.1.1.1.3 Понятийная структура дисциплины
- •1.1.1.1.4. Умения и навыки
- •1.1.1.1.5. Функциональная структура дисциплины
- •Функциональная структура дисциплины представлена в таблице 1.1.7 и на
- •1.1.1.1.6. Сценарий обучения и методики решения задач
- •1.1.1.1.7. Задачи для тренинга и контроля знаний
- •Эталон ответа:
- •1.1.1.1.8. Характеристика обучаемого студента Общие понятия о памяти
- •Общие понятия о темпераменте
- •1.1.1.2.4 Определение характеристики обучаемого студента перед обучением
- •1.1.1.2.4.1 Оценка содержания и уровня знаний и умений
- •1.1.1.2.4.2 Оценка психологических характеристик студента
- •1.1.1.2.5 Планирование текущего занятия
- •1.1.1.2.5.1 Формирование программы занятия
- •1.1.1.2.6 Управление обучением
- •1.1.1.2.6.6 Диагностика и определения причин неправильных действий
- •1.1.1.2.7 Формирование отчета о завершении обучения и рекомендаций для продолжения обучения студента
- •1.1.2 Функционирование системы управления
- •1.1.2.2 Определение результатов решения задач
- •1.2 Определение целей, задач и функций системы
- •1.3 Ожидаемые технико-экономические результаты создания системы
- •1.3.1 Обоснование актуальности разработки
- •1.3.2 Подбор исходных данных
- •1.3.3 Расчет трудоемкости работ по созданию пп
- •1. Материальные затраты
- •2. Покупные комплектующие изделия и полуфабрикаты.
- •3. Расчет заработной платы.
- •4. Налог на фонд заработной платы
- •5. Затраты на машинное время.
- •6. Накладные расходы.
- •7. Затраты на проведение маркетинговых исследований.
- •1.3.4 Расчёт эксплутационных затрат.
- •1. Материальные затраты.
- •3. Расчет заработной платы.
- •4. Налог на фонд заработной платы
- •5. Затраты на машинное время.
- •6. Накладные расходы.
- •7. Расчёт цены программного продукта.
- •2. Системо-технические проектные решения
- •2.1 Функциональная структура аос
- •2.1.1 Внешние объекты аос Список внешних объектов представлен в таблице 2.1.1.
- •Структура внешних объектов представлена на рис. 2.1.1.
- •2.1.2 Структура данных аос
- •2.1.3 Задачи и функции аос
- •«Система обучения студентов»
- •2.2 Математическое обеспечение аос
- •2.2.1 Построение математической модели
- •Структура автоматизированной обучающей системы
- •2.2.2 Разработка методов решения задач
- •2.2.3 Решение задачи на контрольном примере
- •2.3 Информационное обеспечение
- •2.3.1 Проектирование базы данных
- •2.3.1.1 Формирование и анализ требований
- •2.3.1.2 Концептуальное проектирование бд
- •2.3.1.3. Логическое проектирование базы данных.
- •2.3.2 Ведение базы данных
- •2.3.2.1 Поддержка базы данных в актуальном состоянии
- •2.3.2.1.1 Определение списка событий, связанных с корректировкой отношений
- •Для отношения «Тесты и задачи» (наименование темы, код вопроса, вопрос, код ответа, варианты ответов) изменения показаны в таблице 2.3.9:
- •Для отношения «Журнал» (наименование темы, номер зачетной книжки, оценки студента) изменения показаны в таблице 2.3.10:
- •Для отношения «Ответы» (код ответа, ответ) изменения показаны в таблице 2.3.11:
- •2.3.2.1.2. Определение списка задач по корректировке бд.
- •2.4 Технологический процесс обработки данных
- •2.4.1 Структура аис
- •Построение модели технологического процесса обработки информации
- •2.4.3 Обеспечение достоверности и
- •Расчет достоверности обработки информации
- •3. Конструкторско-технологические проектные решения
- •3.1 Программное обеспечение аос
- •3.1.1 Системное программное обеспечение
- •3.1.3. Прикладное программное обеспечение.
- •3.1.3.1. Схемы диалога
- •3.1.3.1.1 Определение пользователей-операторов аос
- •3.1.3.1.2 Определение состава задач пользователей-операторов аис
- •3.1.3.1.3 Формирование глобальной структуры диалога
- •Ведение бд
- •3.1.3.1.4 Определение типа шага диалога
- •Где введены следующие обозначения:
- •3.1.3.1.5 Построение структуры диалога
- •3.1.3.2 Алгоритмы программ решения задач
- •3.2 Техническое обеспечение аос
- •3.2.1 Спецификация технических средств
- •3.2.2 Определение списка и мест размещения операторов аос
- •3.2.3 Определение списка задач по обработке данных
- •Список задач подготовки принятия решений приведен в таблице 3.2.2.
- •Декомпозиция задач и определение списка операций
- •3.2.5 Оценка времени ввода данных
- •3.2.6 Оценка времени печати данных
- •3.2.7 Оценка времени выполнения диалоговых процедур
- •3.2.8 Определение загрузки эвм
- •Комплекс технических средств
- •3.3 Организационно – методическое обеспечение
- •3.4 План изготовления и внедрения аос
- •3.4.1 Ввод в эксплуатацию
- •3.4.2 Организация работ на стадии внедрения системы
- •4. Безопасность жизнедеятельности
- •4.1 Введение – экологическая экспертиза проекта (предмет, цели, задачи)
- •4.2 Промышленная санитария
- •4.2.1 Метеоусловия
- •4.2.2 Вытяжка, вентиляция, отопление
- •Отопление
- •4.2.3 Освещение (расчет освещения)
- •Расчет освещения.
- •4.2.4 Шум, вибрация
- •4.2.5 Излучение (эл/магнитное)
- •Характеристики (параметры) эми.
- •4.3 Техника безопасности
- •4.3.1 Электробезопасность
- •4.3.2 Эргономические условия Визуальные эргономические параметры вдт и пределы их изменений.
- •4.3.3 Подъемно-транспортные механизмы
- •4.3.4 Сосуды под давлением
- •4.4 Пожарная безопасность (определение категории помещения по пожаробезопасности)
- •4.5 Чрезвычайные ситуации (построение дерева событий)
- •Транспорт
- •Природные чс.
- •Эпизототии инфекционные заболевания животных: сибирская язва, кчс (классическая чума свиней), туберкулез
- •90% Человек
- •4.6 Охрана окружающейсреды
- •4.6.1 Атмосфера
- •Загрязнение атмосферы
- •4.6.2 Гидросфера
- •4.6.3 Утилизация отходов Утилизация твердых отходов различного происхождения
- •Утилизация жидких отходов
- •Заключение
- •1. Примерная программа
- •Сестринское дело в педиатрии
- •Базовый уровень среднего профессионального образования
- •2. Тематический план учебной дисциплины
- •3. Учебно-методическая карта и план занятия
- •4. Приказ об изменении фамилии студента
- •5. Приказ об исключении студента из училища
- •6. Приказ об исключении группы из училища
- •7. Приказ об изменении номера группы
- •8. Приказ о формировании новой группы
- •9. Список групп
- •10. Список студентов
- •11. Протокол кодификаторы информации
- •1. Кодификатор вопросов
- •2. Кодификатор ответов
- •3. Кодификатор тем занятий
- •Текст программы Глобальный модуль
- •Модуль формы элемента справочника «Группы»
- •Модуль формы списка справочника «Студенты»
- •Модуль формы элемента справочника «Темы»
- •Модуль формы списка справочника «Темы»
- •Модуль формы элемента справочника «Вопросы»
- •Модуль формы элемента справочника «Понятия»
- •Модуль формы элемента справочника «Уровни сложности»
- •Модуль формы списка справочника «Уровни сложности»
Модуль формы элемента справочника «Понятия»
//_____________________________________________________________________________
Процедура ПриЗаписи() //предопределенная
Если (ПравильныйОтвет=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 Тогда
Возврат;
КонецЕсли;
глОбъект="Документ.Обучение";
КонецЕсли;
ОткрытьФорму(глОбъект,Парам);
КонецПроцедуры