Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пример оформления Пояснительной записки.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
1.07 Mб
Скачать

3.3. Руководство пользователя

Чтобы войти в программу, запустите файл Kurs.exe. После этого на экран будет выведено окно для ввода имени пользователя. Если вы не укажете свое имя, будет выдано соответствующее сообщение.

Для начала тестирования выберите пункт меню ТестНовый тест. После этого на экран будет выведен вопрос и варианты ответов. Чтобы ответить на вопрос, выберите вариант ответа и нажмите кнопку Ответить. В случае, если вы не укажете вариант ответа и нажмете кнопку Ответить, будет выдано сообщение. Также вы можете пропускать вопросы и возвращаться к предыдущему вопросу, нажимая кнопки Пропустить > или < Вернуться соответственно.

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

4. Описание результатов тестирования программы

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

Целью тестирования является проверка работоспособности программы, т.е. правильности выполнения всех функций, описанных выше.

Тестирование данного приложения включает в себя следующие пункты:

  • проверка возможности добавления новых вопросов;

  • проверка возможности удавления ненужных вопросов;

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

  • проверка возможности пропуска вопросов в процессе тестирования;

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

  • проверка вывода разъяснений по вопросам, на которые были даны неправильные ответы.

Для первой проверки в базу было добавлено двенадцать вопросов. Как показано на рисунке 19, программа позволяет добавлять новые вопросы.

Рисунок 19 – Добавленные вопросы

Для проверки возможности удаления ненужных вопросов был удален один вопрос. Из рисунка 20 видно, что удаление вопросов осуществляется корректно.

Рисунок 20 – Удаление вопросов

Для проверки возможности задания количества вопросов в тесте были изменены настройки программы (рисунок 21).

Рисунок 21 – Изменение количества вопросов в тесте

На рисунке 22 показан последний вопрос теста.

Рисунок 22 – Результат изменения настроек

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

Рисунок 23 – Результаты тестирования

В техническом задании указано, что по вопросам, на которые были даны неправильные ответы, требуется организовать вывод разъяснений. На рисунке 24 показан вывод разъяснений.

Рисунок 24 – Вывод разъяснений

По результатам тестирования по всем пунктам было установлено:

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

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

  • в процессе тестирования пользователь может пропустить вопрос или вернуться к предыдущему вопросу.

  • по окончании тестирования на экран выводятся результаты тестирования.

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

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

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

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

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

Список литературыниями ГОСТ 7.1.84 «Библиографическое описание документа» -->

1. Электронный вариант лекций по дисциплине «Технология программирования». Ресурс: is-serv//s:\Stulov\Технология программирования\ Лекции\ЛекцииC++.doc.

2. Электронный вариант лекций по дисциплине «ООП». Ресурс: is-serv//s:\ Andrianov\OOP\Лекции по ООП формат Office 2003.doc

3. Бобровский С. И. Самоучитель программирования на языке C++ в системе Borland C++ Builder 4.0. - М.: ДЕСС INFORCOM PRESS, 1999.

4. Архангельский А. Я. Программирование в C++ Builder 6 (+дискета). 2-е изд. - Тв.: «Бином – Пресс» , 2005 – 1168 с.

Приложение А. Блок-схема алгоритма работы программытельно пишется название приложения. -->

Полотно 278

Рисунок А.1 - Вход в программу

ложения -->

Полотно 246

Рисунок А.2 - Тестирование пользователя

Полотно 195

Рисунок А.3 - Переход к следующему вопросу

Полотно 156

Рисунок А.4 - Возврат к предыдущему вопросу

Полотно 115

Рисунок А.5 - Добавление нового вопроса (начало алгоритма)

Полотно 78

F

F

Рисунок А.6 - Добавление нового вопроса (окончание алгоритма)

Приложение Б. Листингляется самостоятельным документом, позволяющим работать с ним без обращения к пояснительной записке. Требования к оформлению исходного текста состоят в следующем: Структурирование текста программы (отступы, разделители, заголовки); Комментарий: Комментарий модуля/программы. Сведения об авторе программы/подпрограммы (группа, ФИО, дата). Назначение программы и результат ее выполнения. Указания по вызову программы и ее использованию: Имя файла исходного текста и используемых файлов. Режимы компиляции, компоновки. Тип исполняемого файла. Формат команды запуска, краткие сведения по управлению работой программы. Список и назначение основных переменных. Список используемых подпрограмм. Сведения о времени выполнения программы, требуемый объем памяти. Комментарий — заголовок группы инструкций, служащих для выполнения конкретной функции (например, «Открытие файла»). Каждый логически выделенный кусок программы следует комментировать. Комментарий процедуры или макрокоманды. (Назначение, входные/ выходные параметры, результат, разрушаемые регистры). Строчный комментарий. Пояснение прикладного результата действия инструкций программы. Рекомендуется придерживаться правила комментирования программы в соотношении 2:1 (инструкции:комментарии), обеспечивающего, в среднем, хорошую читаемость программы. -->

Листинг Б.1 - Файл Kurs.cpp, запускающий программу

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

//---------------------------------------------------------------------------

USEFORM("Main.cpp", Form1);

USEFORM("General.cpp", Form2);

USEFORM("Editor.cpp", Form3);

USEFORM("ChangePassword.cpp", Form8);

USEFORM("Options.cpp", Form6);

USEFORM("Result.cpp", Form5);

USEFORM("Comments.cpp", Form7);

USEFORM("Password.cpp", Form4);

//---------------------------------------------------------------------------

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)

{

try

{

Application->Initialize();

Application->Title = "Универсальный тест";

Application->CreateForm(__classid(TForm1), &Form1);

Application->CreateForm(__classid(TForm2), &Form2);

Application->CreateForm(__classid(TForm3), &Form3);

Application->CreateForm(__classid(TForm8), &Form8);

Application->CreateForm(__classid(TForm6), &Form6);

Application->CreateForm(__classid(TForm5), &Form5);

Application->CreateForm(__classid(TForm7), &Form7);

Application->CreateForm(__classid(TForm4), &Form4);

Application->Run();

}

catch (Exception &exception)

{

Application->ShowException(&exception);

}

catch (...)

{

try

{

throw Exception("");

}

catch (Exception &exception)

{

Application->ShowException(&exception);

}

}

return 0;

}

//---------------------------------------------------------------------------

Листинг Б.2 - Файл Main.cpp

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "Main.h"

#include "General.h"

#include "Result.h"

#include "Password.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn2Click(TObject *Sender)

{

Application->Terminate();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn1Click(TObject *Sender)

{

if (Edit1->Text=="")//если пользователь не ввел имя

ShowMessage("Введите имя");//вывод сообщения

else

{

String Imya=Edit1->Text;

Form5->Label1->Caption="Имя тестируемого: "+Imya;

if (Edit1->Text=="admin")//если входит администратор

Form4->Show();//переход на форму для ввода пароля

else

{//вход в программу в режиме пользователя

Form2->FormCreate(Sender);

Form2->RadioGroup1->Items->Clear();

Form2->GroupBox1->Caption="";

Form2->Memo1->Lines->Clear();

Form2->Memo1->Enabled=false;

Form2->Button1->Enabled=false;

Form2->Button2->Enabled=false;

Form2->Button3->Enabled=false;

Form2->N3->Enabled=false;

Form2->N4->Enabled=false;

Form2->N5->Enabled=false;

Form2->N6->Enabled=false;

Form2->Show();

}

Form1->Visible=false;

}

}

//---------------------------------------------------------------------------

Файл Main.h

//---------------------------------------------------------------------------

#ifndef MainH

#define MainH

//---------------------------------------------------------------------------

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

#include <DB.hpp>

#include <DBTables.hpp>

#include <Buttons.hpp>

//---------------------------------------------------------------------------

class TForm1 : public TForm

{

__published: // IDE-managed Components

TLabel *Label1;

TEdit *Edit1;

TBitBtn *BitBtn1;

TBitBtn *BitBtn2;

void __fastcall BitBtn2Click(TObject *Sender);

void __fastcall BitBtn1Click(TObject *Sender);

private: // User declarations

public: // User declarations

__fastcall TForm1(TComponent* Owner);

};

//---------------------------------------------------------------------------

extern PACKAGE TForm1 *Form1;

//---------------------------------------------------------------------------

#endif

Листинг Б.3 - Файл Password.cpp

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "Password.h"

#include "General.h"

#include "ChangePassword.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm4 *Form4;

//---------------------------------------------------------------------------

__fastcall TForm4::TForm4(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

//ввод пароля

void __fastcall TForm4::BitBtn1Click(TObject *Sender)

{

if (Edit1->Text==Form8->Table1->Fields->Fields[0]->DisplayText)//если пародь верный

{//вход в программу в режиме администратора

Form2->FormCreate(Sender);

Form2->RadioGroup1->Items->Clear();

Form2->GroupBox1->Caption="";

Form2->Memo1->Lines->Clear();

Form2->Memo1->Enabled=false;

Form2->Button1->Enabled=false;

Form2->Button2->Enabled=false;

Form2->Button3->Enabled=false;

Form2->N3->Enabled=true;

Form2->N4->Enabled=true;

Form2->N5->Enabled=true;

Form2->N6->Enabled=true;

Form2->Show();

Hide();

}

else

Application->MessageBox("Ваш пароль неверный!","Ошибка",MB_ICONSTOP)==IDOK; //вывод сообщения

}

//---------------------------------------------------------------------------

Листинг Б.4 - Файл Password.h

//---------------------------------------------------------------------------

#ifndef PasswordH

#define PasswordH

//---------------------------------------------------------------------------

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

#include <Buttons.hpp>

//---------------------------------------------------------------------------

class TForm4 : public TForm

{

__published: // IDE-managed Components

TLabel *Label1;

TEdit *Edit1;

TBitBtn *BitBtn1;

void __fastcall BitBtn1Click(TObject *Sender);

private: // User declarations

public: // User declarations

__fastcall TForm4(TComponent* Owner);

};

//---------------------------------------------------------------------------

extern PACKAGE TForm4 *Form4;

//---------------------------------------------------------------------------

#endif

Листинг Б.5 - Файл General.cpp

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "General.h"

#include "Editor.h"

#include "ChangePassword.h"

#include "Options.h"

#include "Main.h"

#include "Result.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm2 *Form2;

int Col_ques;//количество правидьных ответов

int List[30];//список уже встречавшихся вопросов

//---------------------------------------------------------------------------

__fastcall TForm2::TForm2(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

int Num;//номер текущего вопроса

int x;

//Ответ на вопрос

void __fastcall TForm2::Button1Click(TObject *Sender)

{

if (RadioGroup1->ItemIndex==-1)//если пользователь не выбрал вариант отваета

ShowMessage("Выберите вариант ответа");//вывод сообщения

else

{//если ответ роавильный

if (RadioGroup1->Items->Strings[RadioGroup1->ItemIndex]==Table1->Fields->Fields[Table1->Fields->Fields[9]->Value+1]->AsString)

{

ListBox1->Items->Add(Table1->RecNo);//добавляем вопрос в список вопросов, на которые даны правильные ответы

Col_ques++;//увеличиваеим количество правильных ответов на единицу

}

else

{//добавляем вопрос в список копросов, на которые даны неправильные ответы

Form5->ListBox1->Items->Add(Memo1->Lines->Text);

Form5->ListBox2->Items->Add(Table1->RecNo);

}

Form2->Button3Click(Sender);//переход к следующему вопросу

}

}

//---------------------------------------------------------------------------

//Переход к следующему вопросу

void __fastcall TForm2::Button3Click(TObject *Sender)

{

int i,j;

Boolean Bol,Bol1=false;

randomize();

Num++;//увеличиваем номер вопроса на единицу

if (Num<=Form6->CSpinEdit1->Value)//проверка на окончание тестирования

{

Memo1->Lines->Clear();

if (Form6->RadioButton1->Checked==true)//если вопросы выбираются последовательно

Table1->Next();

else

{//случайный выбор вопросов

x=random(Table1->RecordCount+1);

for (i=1;i<=Num;i++)

if (List[i-1]==x)

{

Bol=true;

break;

}

for (i=1;i<=Form6->CSpinEdit1->Value;i++)

{

Bol1=false;

for (j=1;j<=Num;j++)

if (i==List[j-1])

{

Bol1=true;

break;

}

if (Bol1==false)

{

x=i;

break;

}

}

Table1->RecNo=x;

List[Num-1]=x;//запоминаем номер вопроса

}

//вывод текста вопроса

Memo1->Lines->Add(Table1->Fields->Fields[1]->DisplayText);

//вывод вариантов ответов

RadioGroup1->Items->Clear();

RadioGroup1->Items->Add(Table1->Fields->Fields[2]->DisplayText);

RadioGroup1->Items->Add(Table1->Fields->Fields[3]->DisplayText);

if (Table1->Fields->Fields[4]->DisplayText!="")

RadioGroup1->Items->Add(Table1->Fields->Fields[4]->DisplayText);

if (Table1->Fields->Fields[5]->DisplayText!="")

RadioGroup1->Items->Add(Table1->Fields->Fields[5]->DisplayText);

if (Table1->Fields->Fields[6]->DisplayText!="")

RadioGroup1->Items->Add(Table1->Fields->Fields[6]->DisplayText);

if (Table1->Fields->Fields[7]->DisplayText!="")

RadioGroup1->Items->Add(Table1->Fields->Fields[7]->DisplayText);

if (Table1->Fields->Fields[8]->DisplayText!="")

RadioGroup1->Items->Add(Table1->Fields->Fields[8]->DisplayText);

//вывод номера вопроса

GroupBox1->Caption="Вопрос №"+IntToStr(Num);

}

else

{//вывод результатов тестирования

int Total=Col_ques;

float Percent=Col_ques*100/Form6->CSpinEdit1->Value;

Form5->Label2->Caption="Правильных ответов: "+IntToStr(Total);

Form5->Label3->Caption="Процент выполнения теста: "+FloatToStrF(Percent,ffFixed,10,2);

Form5->Show();

}

}

//---------------------------------------------------------------------------

//Выбор пункта меню База->Редактировать базу вопросов

void __fastcall TForm2::N4Click(TObject *Sender)

{

Form3->Show();//вызов редактора базы вопросов

}

//---------------------------------------------------------------------------

//Выбор пункта меню Тест->Новый тест

void __fastcall TForm2::N2Click(TObject *Sender)

{

randomize();

Num=1;//первый вопрос

Col_ques=0;//количество правильных ответов равно 0

Form5->ListBox1->Clear();

Form5->ListBox2->Clear();

ListBox1->Clear();

Memo1->Enabled=true;

Button1->Enabled=true;

Button2->Enabled=true;

Button3->Enabled=true;

Memo1->Lines->Clear();

if (Form6->RadioButton1->Checked==true)//если вопросы выбираются последовательно

Table1->Next();

else

{//случайный выбор первого вопроса

List[0]=random(Table1->RecordCount+1);

Table1->RecNo=List[0];

}

if (Form1->Edit1->Text!="admin")

N7->Enabled=false;

//вывод текста вопроса

Memo1->Lines->Add(Table1->Fields->Fields[1]->DisplayText);

//вывод вариантов ответов

RadioGroup1->Items->Clear();

RadioGroup1->Items->Add(Table1->Fields->Fields[2]->DisplayText);

RadioGroup1->Items->Add(Table1->Fields->Fields[3]->DisplayText);

if (Table1->Fields->Fields[4]->DisplayText!="")

RadioGroup1->Items->Add(Table1->Fields->Fields[4]->DisplayText);

if (Table1->Fields->Fields[5]->DisplayText!="")

RadioGroup1->Items->Add(Table1->Fields->Fields[5]->DisplayText);

if (Table1->Fields->Fields[6]->DisplayText!="")

RadioGroup1->Items->Add(Table1->Fields->Fields[6]->DisplayText);

if (Table1->Fields->Fields[7]->DisplayText!="")

RadioGroup1->Items->Add(Table1->Fields->Fields[7]->DisplayText);

if (Table1->Fields->Fields[8]->DisplayText!="")

RadioGroup1->Items->Add(Table1->Fields->Fields[8]->DisplayText);

//вывод номера вопроса

GroupBox1->Caption="Вопрос №1";

}

//---------------------------------------------------------------------------

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

void __fastcall TForm2::Button2Click(TObject *Sender)

{

Num--;//уменьшаем номер вопроса на единицу

Memo1->Lines->Clear();

if (Form6->RadioButton1->Checked==true)

Table1->Prior();//если вопросы выбираются последовательно

else

Table1->RecNo=List[Num-1];//если вопросы выбираются случайно

ListBox1->ItemIndex=Num-1;

Form5->ListBox1->ItemIndex=Num-1;

Form5->ListBox2->ItemIndex=Num-1;

if (Table1->RecNo==StrToInt(ListBox1->Items->Strings[ListBox1->ItemIndex]))

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

{//удаляем вопрос из списка вопросов, на которые даны правильные ответы

ListBox1->Items->Delete(ListBox1->ItemIndex);

Col_ques--;//количество правильных ответов уменьшаем на единицу

}

else

if (Table1->RecNo==StrToInt(Form5->ListBox2->Items->Strings[Form5->ListBox2->ItemIndex]))

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

{//удаляем вопрос из ссписка вопросов, на которые даны неправильные ответы

Form5->ListBox1->Items->Delete(Form5->ListBox1->ItemIndex);

Form5->ListBox2->Items->Delete(Form5->ListBox2->ItemIndex);

}

//вывод текста вопроса

Memo1->Lines->Add(Table1->Fields->Fields[1]->DisplayText);

//вывод вариантов ответов

RadioGroup1->Items->Clear();

RadioGroup1->Items->Add(Table1->Fields->Fields[2]->DisplayText);

RadioGroup1->Items->Add(Table1->Fields->Fields[3]->DisplayText);

if (Table1->Fields->Fields[4]->DisplayText!="")

RadioGroup1->Items->Add(Table1->Fields->Fields[4]->DisplayText);

if (Table1->Fields->Fields[5]->DisplayText!="")

RadioGroup1->Items->Add(Table1->Fields->Fields[5]->DisplayText);

if (Table1->Fields->Fields[6]->DisplayText!="")

RadioGroup1->Items->Add(Table1->Fields->Fields[6]->DisplayText);

if (Table1->Fields->Fields[7]->DisplayText!="")

RadioGroup1->Items->Add(Table1->Fields->Fields[7]->DisplayText);

if (Table1->Fields->Fields[8]->DisplayText!="")

RadioGroup1->Items->Add(Table1->Fields->Fields[8]->DisplayText);

//вывод номера вопроса

GroupBox1->Caption="Вопрос №"+IntToStr(Num);

}

//---------------------------------------------------------------------------

//Выбор пункта меню База->Сменить пароль

void __fastcall TForm2::N5Click(TObject *Sender)

{

Form8->Show();//Вызов формы для смены пароля

}

//---------------------------------------------------------------------------

//Выбор пункта меню Тест->Настройки

void __fastcall TForm2::N6Click(TObject *Sender)

{

Form6->Show();//Вызов формы для изменения настроек программы

}

//---------------------------------------------------------------------------

//Создание формы

void __fastcall TForm2::FormCreate(TObject *Sender)

{

Table1->Active=true;//открытие таблицы

Table1->RecNo=0;

}

//---------------------------------------------------------------------------

//Выбор пункта меню Тест->Выход

void __fastcall TForm2::N7Click(TObject *Sender)

{//переход на форму для ввода имени пользователя

Hide();

Form1->Edit1->Clear();

Form1->Show();

}

//---------------------------------------------------------------------------

Листинг Б.5 - Файл General.h

//---------------------------------------------------------------------------

#ifndef GeneralH

#define GeneralH

//---------------------------------------------------------------------------

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

#include <DB.hpp>

#include <DBTables.hpp>

#include <ExtCtrls.hpp>

#include <Menus.hpp>

//---------------------------------------------------------------------------

class TForm2 : public TForm

{

__published: // IDE-managed Components

TGroupBox *GroupBox1;

TMemo *Memo1;

TRadioGroup *RadioGroup1;

TButton *Button1;

TButton *Button2;

TButton *Button3;

TDataSource *DataSource1;

TMainMenu *MainMenu1;

TMenuItem *N1;

TMenuItem *N2;

TMenuItem *N3;

TMenuItem *N4;

TMenuItem *N5;

TMenuItem *N6;

TTable *Table1;

TListBox *ListBox1;

TMenuItem *N7;

void __fastcall Button1Click(TObject *Sender);

void __fastcall Button3Click(TObject *Sender);

void __fastcall N4Click(TObject *Sender);

void __fastcall N2Click(TObject *Sender);

void __fastcall Button2Click(TObject *Sender);

void __fastcall N5Click(TObject *Sender);

void __fastcall N6Click(TObject *Sender);

void __fastcall FormCreate(TObject *Sender);

void __fastcall N7Click(TObject *Sender);

private: // User declarations

public: // User declarations

__fastcall TForm2(TComponent* Owner);

};

extern int Col_ques;

//---------------------------------------------------------------------------

extern PACKAGE TForm2 *Form2;

//---------------------------------------------------------------------------

#endif

Листинг Б.6 - Файл Editor.cpp

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "Editor.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm3 *Form3;

//---------------------------------------------------------------------------

__fastcall TForm3::TForm3(TComponent* Owner)

: TForm(Owner)

{

Table1->Active=true;

}

//---------------------------------------------------------------------------

//Нажатие кнопки Добавить вопрос

void __fastcall TForm3::Table1BeforePost(TDataSet *DataSet)

{

//если администратор не ввел текст вопроса

if (Table1->Fields->Fields[1]->DisplayText=="")

{

MessageBox(0,"Введите текст вопроса","Ошибка",MB_OK);

Abort();

}

else

//если администратор не ввел первые два варианта ответов

if (Table1->Fields->Fields[2]->DisplayText=="")

{

MessageBox(0,"Введите первые два варианта ответов","Ошибка",MB_OK);

Abort();

}

else

if (Table1->Fields->Fields[3]->DisplayText=="")

{

MessageBox(0,"Введите первые два варианта ответов","Ошибка",MB_OK);

Abort();

}

else

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

if (Table1->Fields->Fields[9]->DisplayText=="")

{

MessageBox(0,"Введите номер правильного ответа","Ошибка",MB_OK);

Abort();

}

else

if (Table1->Fields->Fields[9]->DisplayText!="1"&&

Table1->Fields->Fields[9]->DisplayText!="2"&&

Table1->Fields->Fields[9]->DisplayText!="3"&&

Table1->Fields->Fields[9]->DisplayText!="4"&&

Table1->Fields->Fields[9]->DisplayText!="5"&&

Table1->Fields->Fields[9]->DisplayText!="6"&&

Table1->Fields->Fields[9]->DisplayText!="7")

{

MessageBox(0,"Номер правильного ответа задан неверно","Ошибка",MB_OK);

Abort();

}

else

if (Table1->Fields->Fields[Table1->Fields->Fields[9]->Value+1]->DisplayText=="")

{

MessageBox(0,"Номер правильного ответа задан неверно","Ошибка",MB_OK);

Abort();

}

else

//если администратор не ввел пояснение

if (Table1->Fields->Fields[10]->DisplayText=="")

{

MessageBox(0,"Введите пояснение","Ошибка",MB_OK);

Abort();

}

}

//---------------------------------------------------------------------------

Листинг Б.7 - Файл Editor.h

//---------------------------------------------------------------------------

#ifndef EditorH

#define EditorH

//---------------------------------------------------------------------------

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

#include <DB.hpp>

#include <DBCtrls.hpp>

#include <DBGrids.hpp>

#include <DBTables.hpp>

#include <ExtCtrls.hpp>

#include <Grids.hpp>

//---------------------------------------------------------------------------

class TForm3 : public TForm

{

__published: // IDE-managed Components

TDBGrid *DBGrid1;

TDBNavigator *DBNavigator1;

TDataSource *DataSource1;

TTable *Table1;

TAutoIncField *Table1QuestionNumber;

TStringField *Table1Question;

TStringField *Table1Answer1;

TStringField *Table1Answer2;

TStringField *Table1Answer3;

TStringField *Table1Answer4;

TStringField *Table1Answer6;

TStringField *Table1Answer7;

TStringField *Table1Answer5;

TStringField *Table1Comment;

TLabel *Label1;

TIntegerField *Table1RightAnswer;

void __fastcall Table1BeforePost(TDataSet *DataSet);

private: // User declarations

public: // User declarations

__fastcall TForm3(TComponent* Owner);

};

//---------------------------------------------------------------------------

extern PACKAGE TForm3 *Form3;

//---------------------------------------------------------------------------

#endif

Листинг Б.8 - Файл Result.cpp

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "Result.h"

#include "Main.h"

#include "General.h"

#include "Comments.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm5 *Form5;

//---------------------------------------------------------------------------

__fastcall TForm5::TForm5(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

//Нажатие кнопки Закрыть

void __fastcall TForm5::Button1Click(TObject *Sender)

{//переход к форме для ввода имени пользователя

Close();

Form2->Hide();

Form1->Edit1->Clear();

Form1->Visible=true;

}

//---------------------------------------------------------------------------

//Нажатие кнопки Пояснение

void __fastcall TForm5::Button2Click(TObject *Sender)

{//вывод разъяснений

ListBox2->ItemIndex=ListBox1->ItemIndex;

Form2->Table1->RecNo=StrToInt(ListBox2->Items->Strings[ListBox2->ItemIndex]);

Form7->Memo1->Lines->Text=Form2->Table1->Fields->Fields[10]->DisplayText;

Form7->Show();

}

//---------------------------------------------------------------------------

Листинг Б.9 - Файл Result.h

//---------------------------------------------------------------------------

#ifndef ResultH

#define ResultH

//---------------------------------------------------------------------------

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

//---------------------------------------------------------------------------

class TForm5 : public TForm

{

__published: // IDE-managed Components

TLabel *Label1;

TLabel *Label2;

TLabel *Label3;

TLabel *Label4;

TListBox *ListBox1;

TButton *Button1;

TListBox *ListBox2;

TButton *Button2;

void __fastcall Button1Click(TObject *Sender);

void __fastcall Button2Click(TObject *Sender);

private: // User declarations

public: // User declarations

__fastcall TForm5(TComponent* Owner);

};

//---------------------------------------------------------------------------

extern PACKAGE TForm5 *Form5;

//---------------------------------------------------------------------------

#endif

Листинг Б.10 - Файл Comments.cpp

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "Comments.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm7 *Form7;

//---------------------------------------------------------------------------

__fastcall TForm7::TForm7(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

//Нажатие кнопки Закрыть

void __fastcall TForm7::Button1Click(TObject *Sender)

{

Close();//закрытие формы

}

//---------------------------------------------------------------------------

Листинг Б.11 - Файл Commets.h

//---------------------------------------------------------------------------

#ifndef CommentsH

#define CommentsH

//---------------------------------------------------------------------------

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

//---------------------------------------------------------------------------

class TForm7 : public TForm

{

__published: // IDE-managed Components

TMemo *Memo1;

TButton *Button1;

void __fastcall Button1Click(TObject *Sender);

private: // User declarations

public: // User declarations

__fastcall TForm7(TComponent* Owner);

};

//---------------------------------------------------------------------------

extern PACKAGE TForm7 *Form7;

//---------------------------------------------------------------------------

#endif

Листинг Б.12 - Файл Options.cpp

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "Options.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma link "CSPIN"

#pragma resource "*.dfm"

TForm6 *Form6;

//---------------------------------------------------------------------------

__fastcall TForm6::TForm6(TComponent* Owner)

: TForm(Owner)

//конструктор формы

{

Table1->Active=true;//открытие таблицы

//загрузка настроек

Form6->CSpinEdit1->Value=Form6->Table1->Fields->Fields[1]->Value;

if (Form6->Table1->Fields->Fields[2]->AsBoolean==true)

Form6->RadioButton1->Checked=true;

else

Form6->RadioButton2->Checked=true;

}

//---------------------------------------------------------------------------

//Нажатие кнопки OK

void __fastcall TForm6::BitBtn1Click(TObject *Sender)

{//сохранение настроек

Table1->Edit();

Table1->Fields->Fields[1]->AsInteger=CSpinEdit1->Value;

if (RadioButton1->Checked==true)

Table1->Fields->Fields[2]->AsBoolean=true;

else

Table1->Fields->Fields[2]->AsBoolean=false;

Table1->Post();

Close();//закрытие формы

}

//---------------------------------------------------------------------------

//Нажатие кнопки Отмена

void __fastcall TForm6::BitBtn2Click(TObject *Sender)

{

Close();//закрытие формы

}

//---------------------------------------------------------------------------

Листинг Б.13 - Файл Options.h

//---------------------------------------------------------------------------

#ifndef OptionsH

#define OptionsH

//---------------------------------------------------------------------------

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

#include "CSPIN.h"

#include <Buttons.hpp>

#include <DB.hpp>

#include <DBTables.hpp>

//---------------------------------------------------------------------------

class TForm6 : public TForm

{

__published: // IDE-managed Components

TLabel *Label1;

TCSpinEdit *CSpinEdit1;

TGroupBox *GroupBox1;

TRadioButton *RadioButton1;

TRadioButton *RadioButton2;

TBitBtn *BitBtn1;

TBitBtn *BitBtn2;

TDataSource *DataSource1;

TTable *Table1;

void __fastcall BitBtn1Click(TObject *Sender);

void __fastcall BitBtn2Click(TObject *Sender);

private: // User declarations

public: // User declarations

__fastcall TForm6(TComponent* Owner);

};

//---------------------------------------------------------------------------

extern PACKAGE TForm6 *Form6;

//---------------------------------------------------------------------------

#endif

Файл ChangePassword.cpp

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "ChangePassword.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm8 *Form8;

//---------------------------------------------------------------------------

__fastcall TForm8::TForm8(TComponent* Owner)

: TForm(Owner)

{

Table1->Active=true;

}

//---------------------------------------------------------------------------

//Нажатие кглпки OK

void __fastcall TForm8::BitBtn1Click(TObject *Sender)

{ //если старый пароль введен верно

if (LabeledEdit1->Text==Table1->Fields->Fields[0]->DisplayText)

{//если новый пароль и подтверждение совпадают

if (LabeledEdit2->Text==LabeledEdit3->Text)

{//сохранение нового пароля

Table1->Edit();

Table1->Fields->Fields[0]->AsString=LabeledEdit2->Text;

Table1->Post();

Close();

}

else

MessageDlg("Пароли не совпадают. Подтвердите ввод",mtWarning,TMsgDlgButtons()<< mbOK,0);

}

else

MessageDlg("Введите старый пароль", mtWarning, TMsgDlgButtons() <<mbOK,0);

}

//---------------------------------------------------------------------------

Листинг Б.14 - Файл ChangePassword.h

//---------------------------------------------------------------------------

#ifndef ChangePasswordH

#define ChangePasswordH

//---------------------------------------------------------------------------

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

#include <Buttons.hpp>

#include <ExtCtrls.hpp>

#include <DB.hpp>

#include <DBTables.hpp>

//---------------------------------------------------------------------------

class TForm8 : public TForm

{

__published: // IDE-managed Components

TLabeledEdit *LabeledEdit1;

TLabeledEdit *LabeledEdit3;

TBitBtn *BitBtn1;

TDataSource *DataSource1;

TTable *Table1;

TLabeledEdit *LabeledEdit2;

void __fastcall BitBtn1Click(TObject *Sender);

private: // User declarations

public: // User declarations

__fastcall TForm8(TComponent* Owner);

};

//extern String OldPassword,Password;

//---------------------------------------------------------------------------

extern PACKAGE TForm8 *Form8;

//---------------------------------------------------------------------------

#endif

Rectangle 739