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

Основные аспекты конструирования интеллектуальных систем. Создание модели интеллектуальной системы подготовки летного состава. Интеллектуальная система по подготовке летного состава по индивидуальным траекториям. Апробация и внедрение ИС на предприятия.

Рубрика Военное дело и гражданская оборона
Вид дипломная работа
Язык русский
Дата добавления 06.05.2013
Размер файла 2,9 M

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

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

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

нарушений правил предполетного осмотра авиационной техники, превышения допустимой полетной массы ВС, недостаточной предполетной и (или) предпосадочной подготовки и, как следствие этого, принятия необоснованных решений при планировании и осуществлении полета,

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

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

Рис 1.

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

Рис 2.

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

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

Рис 3.

Существует обязательное правило предполетного и послеполетного осмотра ВС. Разработанная система позволит летному составу выучит наизусть обязательные процедуры проверки такие как знания «ЧЕК ЛИСТА». Где описана определенная последовательность действий (см.рис.4).

Рис 4.

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

Рис 5.

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

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

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

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

Из-за появления у российских компания много иностранных воздушных судов, авиационные власти РФ повышают требования, предъявляемых к личному составу. И в связи с этим авиационные компании (работодатель) проводят с личным составом занятия по изучению особенностей эксплуатации воздушных судов, выполнения полетов в особых условиях, при внесения изменений и уточнений в эксплуатационную документацию и проведение доработок изделий авиационной техники.

3. Заключение

В данном разделе было выявлено, что основной процент (до 70%) авиапросшествий связана с человеческим фактором. Во избежание подобной статистики в дальнейшем и повышения уровня безопасности полетов, была представлена разработанная интеллектуальная система, которая в дальнейшем поможет повысить безопасность полетов. И снизит авиационные происшествия из-за человеческого фактора или ошибки экипажа.

VIII. Экономическое обоснование проекта

1. Постановка задачи

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

2. Определение технического уровня разработки

Определим коэффициент технического уровня разработки:

Таблица 3.1 Характеристики качества

Характеристики качества

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

Значение характеристик качества

Значимость характеристик

аналог

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

Эффективность

1

10

0,2

Защищенность

1

1

0,35

Надежность

1

10

0,35

Сопровождаемость

1

1

0,1

ИТОГО:

1

Индекс технического уровня.

,

где , - уровень i-той функционально-технической характеристики соответственно нового (проектируемого) и базового изделий, - значимость i-й функционально-технической характеристики качества изделия, n - количество рассматриваемых функционально-технических характеристик. Сумма равна 1.

Если повышение технического уровня изделия связано со снижением абсолютной величины функционально-технического уровня необходимо поменять местами. В случае отсутствия данных об абсолютном значении изменения характеристик при проектировании новых изделий используется их относительные изменения. При использовании для оценки качественных функциональных характеристик их соотношение по новому и базовому вариантам может иметь следующие значения: «1» - при наличии данного признака у описываемого и базового варианта, «10» при отсутствии данного признака у базового варианта и наличии его у оцениваемого варианта.

>1 , т.е. разработка целесообразна.

3. Определение трудоемкости и затрат на разработку

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

tПР Т = tи+ tа+ tк+ tот+ tд, где

-затраты труда на подготовку описания задачи,

- затраты труда на постановку задачи,

- затраты труда на разработку алгоритма решения задачи,

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

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

- затраты труда на подготовку документации,

Q = q**(1++…+)

- условное количество строк кода в описании программы

q = 312 - количество этапов и элементарных процедур преобразования информации

- коэффициент сложности программного обеспечения.

-коэффициенты корректировки программного обеспечения в процессе отладки,

- Количество коррекций,

- увеличение затрат труда на изучение и постановку задачи вследствие их сложности и новизны.

-коэффициент квалификации разработчика программного обеспечения.

Таким образом

Q = q**(1++…+) = 822,68

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

Итого, затраты труда на разработку составили:

tПР Т = tи+ tа+ tк+ tот+ tд = 40+22,43+29,91+45,7+186,9+261,7 = 586,6 чел.-час.

tпр т=586,6 чел.-час.

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

Таблица 3.2 Трудоемкость этапов разработки

Наименование стадии (этапа) работ

Доля этапа в общем объеме работ, %

1.Анализ исходных данных, составление ТЗ

6

2. Анализ методов и средств решения задачи

5

3 .Разработка ПАК

15

4. Испытания на тестовом стенде

18

5. Отладка

29

6. Испытания в реальных условиях

22

7. Составление технической документации

5

ИТОГО:

100

4. Календарное планирование работ

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

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

, где

Тэi- трудоемкость этапа, чел-ч.,

tрд - продолжительность рабочего дня,

q - количество работников, одновременно участвующих в выполнении работ.

5. Определение себестоимости и цены разработки

Определение затрат на разработку проекта начитается с определения завтрат на оплату труда персонала. При этом зарплата персонала на стадии работы рассчитывается по формуле:

, где

- трудоемкость j-ой стадии работы

- средняя дневная ставка оплаты работ j-ой стадии работы

Таблица 3.4 Перечень исполнителей:

Категории исполнителей

Число исполнителей

Зарплата (руб./месяц)

Руководитель проекта

1

55200

Ведущий программист

1

45160

Программист

1

31120

Таблица 3.5 Расчет заработной платы персонала при оценке затрат на проектирование

№ стадии

Трудоемкость стадии (чел-дн)

Исполнители

Дневная ставка, руб

Среднаяя дневная ставка, руб

Заработная плата, руб

Должность

Численность

1

9

Руководитель проекта

Ведущий программист

1

1

2579,43

2110,28

2047,97

18431,73

2

27,5

Ведущий программист

программист

1

1

2110,28

1454,21

1782,24

49011,6

3

22

Ведущий программист

Программист

1

1

2110,28

2908,42

1672,90

36803,8

4

38,5

Ведущий программист

1

2110,28

2110,28

81245,6

5

11

Ведущий программист

Программист

1

1

2110,28

2908,42

1672,90

18401,9

6

2

Ведущий программист

Программист

1

1

2110,28

2908,42

1672,90

3345,8

ИТОГО:

207240,4

248688,4 (с учетом премиальных 20%)

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

Таблица 3.6 Приобретаемое программное обеспечение:

№ п/п

Наименование материала или оборудования

Стоимость за 1 единицу, руб

Расход (шт)

Общая стоимость, руб

1

Microsoft Windows XP

5237,70

1

5237,70

2

Aigeneral 1.0gen

3155,00

1

3155,00

3

Borland-Delphi 5.0

7344,65

1

7344,65

ИТОГО:

15737,3

Таблица 3.7 Приобретаемое оборудование:

№ п/п

Наименование материала или оборудования

Стоимость за 1 единицу, руб

Расход (шт)

Общая стоимость, руб

ПК для программиста

22000,00

1

22000,00

Бумага для лазерной печати

200,00

2

400,00

Тонер-картридж для лазерного принтера

2000,00

1

2000,00

ИТОГО:

24400,00

Норматив отчислений на социальные нужды составляет 26,2% от зарабтной платы сновных исполнителей и равен 65156,2 руб.

Величина накладных расходов определяется по формуле:

Рнакл= ЗППП * Кнакл, где

ЗППП - заработная плата основных исполнителей

Кнакл, - коэффициент накладных расходов, 1.0? Кнакл ?2.0

Рнакл= ЗППП * Кнакл = 248688,4 * 1.5 = 373032,6

Таблица 3.8 Затраты на создание

№ п/п

Наименование статей затрат

Затраты (руб.)

Удельный вес (%)

1

Материалы

15737,3

31,75

2

Оборудование

2440,00

24,15

3

Заработная плата основных исполнителей

248688,4

16,00

4

Отчисление на социальные нужды

65156,20

4,1

5

Накладные расходы

373032,6

24,00

ИТОГО:

727014,5

100

Затраты на создание и исследование:

727014,5/0,5 = 1454029 руб

Тогда цена предложения (при =250%):

1454029 + 248688,4 *250/100 = 4256793,5 руб

6. Оценка экономической эффективности

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

.

Годовые эксплуатационные затраты включают следующие затраты:

- затраты на оплату труда персонала, обслуживающего интеллектуальную систему (ИС);

- отчисления на единый социальный налог (26%) обслуживающего персонала;

- страховые социальные расходы на производственный травматизм исполнителей (3%);

- амортизационные отчисления (АВТ Г);

- затраты на электроэнергию для решения комплекса задач (ЭЭЛ);

- затраты на текущий ремонт и обслуживание (ЗР ВТ);

- затраты на технические носители информации ИС (ЗНОСис);

- накладные расходы на эксплуатации ИС (ЗН ИС).

Коэффициент использования мощности интеллектуальной системы системы для решения данной задачи.

dИС=/= 1600/1600=1, где

- количество машинного времени, затрачиваемого для решения задачи в год.

- эффективное время работы вычислительной техники в процессе решения задачи.

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

начальник отдела Ч1=1

инженер Ч2=1

техник Ч3=1

Месячный оклад персонала:

начальник отдела 45000 руб.;

инженера 30000 руб.;

техника 20000 руб.;

Коэффициент дополнительной заработной платы Кдоп=0,1

Коэффициент премиальных выплат Кпр=0,25

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

(4.10)

Таким образом по формуле 4.6:

ЗП эис=2857500руб.

Отчисления на единый социальный налог обслуживающего персонала составляют: 285750*0,26=74282руб.

Страховые социальные расходы на травматизм исполнителей:

285750*0,03=85720,5руб.

Стоимость вычислительной техники составляет Свт=30000 руб.

Амортизационные отчисления (годовые) по вычислительной технике:

Автг=Свт*Наэт*dис=30000*25*1/100=7500руб, где

=25%- годовая норма амортизации.

Суммарная мощность вычислительной техники W=2,3 КВт.

Стоимость одного КВт/ч электроэнергии: руб.

Затраты на электроэнергию в год:

руб.

Затраты на текущий ремонт и обслуживание техники.

Зрвт=Свт*Кр*dис/100=30000*5*1/100=1500руб., где

% -норматив затрат средств на ремонт.

Затраты на технические носители информации:

Знос=Свт*Кнос*dис/100=30000/100=300руб., где

-коэффициент расходов на носители информации.

Накладные расходы по эксплуатации ИС:

Знакл=ЗПэис*Кнакл*dис/100=285750/100=28575руб, где

- коэффициент накладных расходов

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

Зэис=Збэис=Знэис=74282+85720+7500+9200+1500+300+28575=205677 руб.

Оценка показателя среднего годового экономического эффекта:

Эппг=Збэис*Jнту-Знэис=Зэис*Jнту-1=205677*2,35-1=277633,9

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

Епп=Эппг/Зрпп=277633,9/248688,0=1,11

Срок окупаемости затрат на создание продукта:

Ток пп= 1/Е пп = 1/1,11=0,9года.

7. Выводы по разделу

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

Заключение

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

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

- рассмотрены теоретические и практические аспекты конструирования интеллектуальных систем. Результатом данного этапа исследования является создание модели интеллектуальной системы подготовки летного состава;

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

- осуществлена апробация и внедрение ИС на предприятия;

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

Список литературы

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

Балясников В.В., Никулин Н.Ф. и др. Обеспечение безопасности полетов в ГА: Методические указания по изучению курса. Л,; ОЛАГА, 1991г.

В.И. Жулев, В.С. Иванов. Безопасность полетов летательных аппаратов: (Теория и анализ).- М. Транспорт, 1986г.

Интернет-издание, 32 урока: Borland Delphi или о том, что лучше один раз увидеть, чем сто раз услышать

Карчевская М.П., Рамбургер О.Л., Тархов С.В., Хамзина Е.А., Разработка приложений в среде Borland Delphi: лабораторный практикум по дисциплине "Информатика",- Уфа: УГАТУ, 2005.

Кузнецов В.А., Чугунов В.И. Альбом методических материалов к изучению основных АП в транспортной ГА СССР в 1982-1988г. / С-Пб,; Академия ГА, 1998г.

Методические рекомендации и уточненные критерии оперативной оценки величины перегрузок при приземлении самолетов.-М.: Гос- НИИГА, 1984.

Программа Оксфорд подготовка пилотов

Статистика авиапроисшествий

Экономическое обоснование дипломных проектов по пробо- и радиоприборостроению. Панагушена В.П ,МАИ ,2008г.

Приложение

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

unit Unit1;

interface

uses

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

Dialogs, StdCtrls;

type

TForm1 = class(TForm)

GroupBox1: TGroupBox;

Label1: TLabel;

Edit1: TEdit;

Label2: TLabel;

Edit2: TEdit;

Label3: TLabel;

Edit3: TEdit;

Button1: TButton;

Memo2: TMemo;

Memo1: TMemo;

procedure Button1Click(Sender: TObject);

procedure FormShow(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

procedure fillq; //объявление процедуры

function check:boolean; //объявление функции

end;

const

fn1='_questns.txt'; //имя файла с заданиями теста

fn2='_reslts.txt'; //имя файла с данными о неверных ответах

nmax=20; //максимальное количество вопросов теста

var

Form1: TForm1;

d1:string; //ФИО

d2:integer; //год рождения

d3:string; //город

qcnt:integer; //количество вопросов в тесте

rcnt:integer; //количество записей данных о неверных ответах

tcnt:integer; //количество вопросов для прохождения

qst:array[1..nmax] of integer; //массив номеров вопросов для прохождения

tnumber:integer; //номер текущего вопроса

dmark:integer; //оценка верного ответа

mark:integer; //оценка прохождения теста

error:string; //список номеров вопросов с неверными ответами

error2:string; //список вопросов с неверными ответами

implementation

uses Unit2, Unit3;

{$R *.dfm}

procedure tform1.fillq; //Процедура заполнения формы задания

begin

//отображаем номер задания

form3.Label1.Caption:='Задание N'+inttostr(qst[tnumber]);

//отображаем вопрос

form3.Memo1.Text:=Memo1.Lines[(qst[tnumber]-1)*6];

form3.RadioButton1.Checked:=false; //деактивируем выбор варианта ответа

form3.RadioButton2.Checked:=false;

form3.RadioButton3.Checked:=false;

form3.RadioButton4.Checked:=false;

//отображаем варианты ответов

form3.RadioButton1.Caption:=Memo1.Lines[(qst[tnumber]-1)*6+1];

form3.RadioButton2.Caption:=Memo1.Lines[(qst[tnumber]-1)*6+2];

form3.RadioButton3.Caption:=Memo1.Lines[(qst[tnumber]-1)*6+3];

form3.RadioButton4.Caption:=Memo1.Lines[(qst[tnumber]-1)*6+4];

end;

function tform1.check:boolean; //Функция проверки ответа

begin

if (form3.RadioButton1.Checked=false) and //если ни один вариант ответа не выбран, то

(form3.RadioButton2.Checked=false) and

(form3.RadioButton3.Checked=false) and

(form3.RadioButton4.Checked=false) then

begin

check:=false; //формируем неудачное значение выполнения функции

//выводим сообщение

showmessage('Необходимо выбрать вариант ответа!');

exit; //выходим из функции

end;

//если выбран правильный вариант ответа, то

if ((form3.RadioButton1.Checked=true) and (Memo1.Lines[(qst[tnumber]-1)*6+5]='1')) or

((form3.RadioButton2.Checked=true) and (Memo1.Lines[(qst[tnumber]-1)*6+5]='2')) or

((form3.RadioButton3.Checked=true) and (Memo1.Lines[(qst[tnumber]-1)*6+5]='3')) or

((form3.RadioButton4.Checked=true) and (Memo1.Lines[(qst[tnumber]-1)*6+5]='4')) then

mark:=mark+dmark //увеличиваем результат на величину оценки

else //иначе

begin

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

error:=error+inttostr(qst[tnumber])+';';

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

error2:=error2+inttostr(qst[tnumber])+'. '+(Memo1.Lines[(qst[tnumber]-1)*6])+'; ';

end;

check:=true; //формируем успешное значение выполнения функции

end;

procedure TForm1.FormShow(Sender: TObject); //Процедура, вызываемая при показе формы

begin

try //пытаемся

//загрузить файл с заданиями теста

Memo1.Lines.LoadFromFile(ExtractFilePath(Application.ExeName)+fn1);

except //если возникли ошибки, то

//выводим сообщение

showmessage('ОШИБКА! Невозможно загрузить файл с заданиями!');

Application.Terminate; //выходим из программы

end;

//если файл с заданиями пустой или количество строк не пропорционально 6, то

if (Memo1.Lines.Count=0) or (Memo1.Lines.Count mod 6<>0) then

begin

//выводим сообщение

showmessage('ОШИБКА! Файл с заданиями поврежден!');

Application.Terminate; //выходим из программы

end;

qcnt:=Memo1.Lines.Count div 6; //вычисляем количество вопросов в тесте

if qcnt>nmax then //если полученное количество превышаем максимальное значение, то

qcnt:=nmax; //корректируем количество вопросов в тесте

dmark:=trunc(100/qcnt); //вычисляем оценку за один вопрос по 100 бальной системе

end;

procedure TForm1.Button1Click(Sender: TObject); //Процедура, вызываемая при нажатии кнопки 'ОК'

var a:integer; //счетчик

s:string; //строка

begin

try //пытаемся

Memo2.Lines.LoadFromFile(fn2); //загрузить файл с данными о неверных ответах

except

end;

//если имеются данные о неверных ответах и количество строк не пропорционально 5, то

if (Memo2.Lines.Count<>0) and (Memo2.Lines.Count mod 5<>0) then

begin

//выводим сообщение

showmessage('ОШИБКА! Файл результатов поврежден!');

Application.Terminate; //выходим из программы

end;

rcnt:=Memo2.Lines.Count div 5; //вычисляем количество записей о неверных ответах

//если любое поле ввода незаполнено, то

if (Edit1.Text='') or (Edit2.Text='') or (Edit3.Text='') then

begin

//выводим сообщение

showmessage('Необходимо заполнить все поля!');

exit; //выходим из процедуры

end;

try //пытаемся

d2:=strtoint(Edit2.Text); //преобразовать 'год рождения' в число

except //если возникли ошибки, то

//выводим сообщение

Showmessage ('ОШИБКА! Поле "Год рождения" заполнено неправильно!');

Edit2.SetFocus; //фокусируемся на данном поле

exit; //выходим из процедуры

end;

if (d2<0) or (d2>9999) then //если значение года рождения задано неверно, то

begin

//выводим сообщение

Showmessage ('ОШИБКА! Поле "Год рождения" заполнено неправильно!');

Edit2.SetFocus; //фокусируемся на данном поле

exit; //выходим из процедуры

end;

d1:=Edit1.Text; //сохраняем ФИО

d3:=Edit3.Text; //сохраняем город

form2.ListBox1.Items.Clear; //очищаем список для выбора записи о неверных ответах

if rcnt<>0 then //если количесво записей о неверных ответах в файле не нулевое, то

for a:=0 to rcnt-1 do //цикл по всем записям

//если введенные данные пользователя совпадают с данными из записи, то

if d1+inttostr(d2)+d3=Memo2.Lines[a*5]+Memo2.Lines[a*5+1]+Memo2.Lines[a*5+2] then

//переносим данные текущей записи в список

form2.ListBox1.Items.Add(Memo2.Lines[a*5+3]);

if form2.ListBox1.Items.Count<>0 then //если список для выбора записи о неверных ответах не нулевой, то

Form2.showmodal //вызываем форму для выбора варианта прохождения теста

else //иначе

begin

//задаем прохождение всего теста целиком

tcnt:=qcnt; //задаем количество заданий = количеству вопросов в тесте

for a:=1 to qcnt do //цикл по всем вопросам

qst[a]:=a; //формируем массив массив номеров вопросов для прохождения

end;

mark:=0; //обнуляем результат теста

error:=''; //очищаем список номеров вопросов с неверными ответами

error2:=''; //очищаем список вопросов с неверными ответами

tnumber:=1; //задаем начальный номер вопроса

fillq; //вызываем процедуру заполнения формы задания

Form3.showmodal; //вызываем форму ответа на задания

if error='' then //если список номеров вопросов с неверными ответами пуст, то

s:='нет' //формируем строку

else //иначе

s:=error; //формируем строку

//выводим результаты теста на экран

showmessage('Результат прохождения теста: '+inttostr(mark)+#13#10#13#10+

'Неверные ответы на задания: '+s);

if error<>'' then //если список номеров вопросов с неверными ответами не пуст, то

begin

Memo2.Lines.Add(d1); ормируем новую запись в списке номеров вопросов с неверными ответами

Memo2.Lines.Add(inttostr(d2));

Memo2.Lines.Add(d3);

Memo2.Lines.Add(error);

Memo2.Lines.Add(error2);

try //пытаемся

//сохранить данные в файл

Memo2.Lines.SaveToFile(ExtractFilePath(Application.ExeName)+fn2);

except //если возникли ошибки, то

//выводим сообщение

showmessage('ОШИБКА! Файл результатов не удалось сохранить!');

end;

end;

end;

end.

ТЕКСТЫ ПРОГРАММ СОЗДАНИЯ ГРАФИКИ:

1) object Form1: TForm1

Left = 195

Top = 549

BorderIcons = [biSystemMenu, biMinimize]

BorderStyle = bsSingle

Caption = #1042#1093#1086#1076

ClientHeight = 153

ClientWidth = 249

Color = clBtnFace

Font.Charset = DEFAULT_CHARSET

Font.Color = clWindowText

Font.Height = -11

Font.Name = 'MS Sans Serif'

Font.Style = []

OldCreateOrder = False

Position = poDesktopCenter

OnShow = FormShow

PixelsPerInch = 96

TextHeight = 13

object GroupBox1: TGroupBox

Left = 8

Top = 8

Width = 233

Height = 105

Caption = ' '#1042#1074#1077#1076#1080#1090#1077' '#1076#1072#1085#1085#1099#1077' '#1087#1086#1083#1100#1079#1086#1074#1072#1090#1077#1083#1103' '

TabOrder = 0

object Label1: TLabel

Left = 16

Top = 24

Width = 27

Height = 13

Caption = #1060#1048#1054

end

object Label2: TLabel

Left = 16

Top = 48

Width = 71

Height = 13

Caption = #1043#1086#1076' '#1088#1086#1078#1076#1077#1085#1080#1103

end

object Label3: TLabel

Left = 16

Top = 72

Width = 30

Height = 13

Caption = #1043#1086#1088#1086#1076

end

object Edit1: TEdit

Left = 93

Top = 21

Width = 121

Height = 21

TabOrder = 0

end

object Edit2: TEdit

Left = 93

Top = 45

Width = 121

Height = 21

TabOrder = 1

end

object Edit3: TEdit

Left = 93

Top = 69

Width = 121

Height = 21

TabOrder = 2

end

end

object Button1: TButton

Left = 88

Top = 122

Width = 75

Height = 25

Caption = 'OK'

Default = True

TabOrder = 1

OnClick = Button1Click

end

object Memo2: TMemo

Left = 48

Top = 104

Width = 41

Height = 41

TabOrder = 2

Visible = False

WordWrap = False

end

object Memo1: TMemo

Left = 0

Top = 104

Width = 41

Height = 41

TabOrder = 3

Visible = False

WordWrap = False

end

end

2) object Form2: TForm2

Left = 458

Top = 370

BorderIcons = [biSystemMenu, biMinimize]

BorderStyle = bsSingle

Caption = #1042#1099#1073#1086#1088' '#1090#1077#1089#1090#1072

ClientHeight = 335

ClientWidth = 742

Color = clBtnFace

Font.Charset = DEFAULT_CHARSET

Font.Color = clWindowText

Font.Height = -11

Font.Name = 'MS Sans Serif'

Font.Style = []

OldCreateOrder = False

Position = poDesktopCenter

OnClose = FormClose

OnShow = FormShow

PixelsPerInch = 96

TextHeight = 13

object Button1: TButton

Left = 283

Top = 16

Width = 177

Height = 25

Caption = #1055#1088#1086#1081#1090#1080' '#1090#1077#1089#1090' '#1089' '#1085#1072#1095#1072#1083#1072

TabOrder = 0

OnClick = Button1Click

end

object GroupBox1: TGroupBox

Left = 8

Top = 56

Width = 729

Height = 273

Caption = ' '#1042#1099#1073#1086#1088' '#1074#1072#1088#1080#1072#1085#1090#1072' '#1090#1077#1089#1090#1072' '

TabOrder = 1

object ListBox1: TListBox

Left = 8

Top = 16

Width = 713

Height = 213

ItemHeight = 13

TabOrder = 0

end

object Button2: TButton

Left = 328

Top = 240

Width = 75

Height = 25

Caption = #1042#1099#1073#1086#1088

TabOrder = 1

OnClick = Button2Click

end

end

end

3) object Form3: TForm3

Left = 801

Top = 434

BorderIcons = [biSystemMenu, biMinimize]

BorderStyle = bsSingle

Caption = #1058#1077#1089#1090

ClientHeight = 271

ClientWidth = 543

Color = clBtnFace

Font.Charset = DEFAULT_CHARSET

Font.Color = clWindowText

Font.Height = -11

Font.Name = 'MS Sans Serif'

Font.Style = []

OldCreateOrder = False

Position = poDesktopCenter

PixelsPerInch = 96

TextHeight = 13

object Label1: TLabel

Left = 8

Top = 8

Width = 54

Height = 13

Caption = #1047#1072#1076#1072#1085#1080#1077' N'

end

object Label2: TLabel

Left = 8

Top = 128

Width = 96

Height = 13

Caption = #1042#1072#1088#1080#1072#1085#1090#1099' '#1086#1090#1074#1077#1090#1086#1074':'

end

object Memo1: TMemo

Left = 8

Top = 24

Width = 529

Height = 84

ScrollBars = ssVertical

TabOrder = 0

end

object RadioButton1: TRadioButton

Left = 8

Top = 152

Width = 529

Height = 17

Caption = #1042#1072#1088#1080#1072#1085#1090' 1'

TabOrder = 1

end

object RadioButton2: TRadioButton

Left = 8

Top = 168

Width = 529

Height = 17

Caption = #1042#1072#1088#1080#1072#1085#1090' 2'

TabOrder = 2

end

object RadioButton3: TRadioButton

Left = 8

Top = 184

Width = 529

Height = 17

Caption = #1042#1072#1088#1080#1072#1085#1090' 3'

TabOrder = 3

end

object RadioButton4: TRadioButton

Left = 8

Top = 200

Width = 529

Height = 17

Caption = #1042#1072#1088#1080#1072#1085#1090' 4'

TabOrder = 4

end

object Button1: TButton

Left = 232

Top = 240

Width = 75

Height = 25

Caption = 'OK'

TabOrder = 5

OnClick = Button1Click

end

end

Размещено на Allbest.ru


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

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