Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПЗ (1).doc
Скачиваний:
1
Добавлен:
02.09.2019
Размер:
805.89 Кб
Скачать

5.4 Сообщения оператору

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

  1. «Введите о себе всю информацию!!!» (рисунок 7). Данное сообщение появляется при попытке перейти на главную форму, не заполнив одно или несколько полей на форме «Данные о пользователе»;

Рисунок 7

  1. «Ошибка обращения к файлу теста» (рисунок 8). Сообщение появляется, когда файл с вопросами и вариантами ответов не найден;

Рисунок 8

  1. «Ошибка доступа к файлу» (рисунок 9). Сообщение появляется, когда файл с теоретическими данными не найден;

Рисунок 9

Заключение

Обучающая программа по теме «Стандартные процедуры и функции модуля Graph» была разработана с целью упрощения и автоматизации учебного процесса. При разработке данной программы были учтены и реализованы все требования, которые налагались на нее в разделе «Постановка задачи».

Программа может быть использована во всех учебных заведениях, где изучается Pascal. Она очень удобна и проста в использовании, не требует больших системных ресурсов и наличия каких-либо дополнительных аппаратных или программных средств.

При необходимости программу можно переделать, для проведения тестирования на всевозможные темы. Для этого лишь необходимо изменить в текстовом редакторе файлы Vopr.txt и Teoriya.txt.

Список использованной литературы

  1. Фаронов В.В. «Delphi. Программирование на языке высокого уровня».

  2. Иллюстрированный самоучитель по Delphi7 для начинающих [Электронный ресурс] .- / library.mtec.edu/8/Index.htm.

  3. Иллюстрированный самоучитель по Delphi7 для профессионалов [Электронный ресурс] .- / library.mtec.edu/17/Index.htm.

Приложение А

Листинг программы

program Obychalka;

uses

Forms,

Unit1 in 'Unit1.pas' {Form1},

Unit2 in 'Unit2.pas' {Form2},

Unit3 in 'Unit3.pas' {Form3},

Unit4 in 'Unit4.pas' {Form4},

Unit5 in 'Unit5.pas' {Form5},

Unit6 in 'Unit6.pas' {Form6};

{$R *.res}

begin

Application.Initialize;

Application.CreateForm(TForm1, Form1);

Application.CreateForm(TForm2, Form2);

Application.CreateForm(TForm3, Form3);

Application.CreateForm(TForm4, Form4);

Application.CreateForm(TForm5, Form5);

Application.CreateForm(TForm6, Form6);

Application.Run;

end.

----------------------------------------------------------------------------------------------------

unit Unit1;

interface

uses

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

Dialogs, StdCtrls, ExtCtrls, Buttons, Grids, jpeg;

type

TForm1 = class(TForm)

Image1: TImage;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Label4: TLabel;

Edit4: TEdit;

BitBtn1: TBitBtn;

procedure BitBtn1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

uses Unit2, Unit3, Unit5, Unit4, Unit6;

{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);

begin

if(Edit1.Text<>'')and(Edit2.Text<>'')and(Edit1.Text<>'')and(Edit3.Text<>'')and

(Edit4.Text<>'')then

begin

Form6.Memo1.Lines.Add(Edit1.Text);

Form6.Memo1.Lines.Add(Edit2.Text);

Form6.Memo1.Lines.Add(Edit3.Text);

Form6.Memo1.Lines.Add(Edit4.Text);

form1.Visible:=false;

form4.Visible:=true;

end

else

Showmessage('Введите о себе всю информацию!!!');

end;

end.

----------------------------------------------------------------------------------------------------

unit Unit2;

interface

uses

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

Dialogs, StdCtrls, ExtCtrls, Menus, printers, jpeg, Buttons;

type

TForm2 = class(TForm)

GroupBox1: TGroupBox;

PrintDialog1: TPrintDialog;

Memo1: TMemo;

Panel1: TPanel;

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

procedure BitBtn1Click(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form2: TForm2;

implementation

uses Unit1, Unit3 , Unit4, Unit5, Unit6;

{$R *.dfm}

procedure TForm2.BitBtn1Click(Sender: TObject);

begin

form2.Visible:=false;

form4.Visible:=true;

end;

procedure TForm2.BitBtn2Click(Sender: TObject);

var

fo:textfile;

i:integer;

begin

if PrintDialog1.Execute then

begin

AssignPRN(fo);

rewrite(fo);

Printer.Canvas.Font:=Memo1.Font;

for i:=0 to Memo1.Lines.Count-1 do

writeln(fo,Memo1.Lines.ValueFromIndex[i]);

Closefile(fo);

end;

end;

end.

----------------------------------------------------------------------------------------------------

unit Unit3;

interface

uses

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

Dialogs, StdCtrls, Buttons, ComCtrls, ExtCtrls;

type

TForm3 = class(TForm)

GroupBox1: TGroupBox;

RadioButton1: TRadioButton;

RadioButton2: TRadioButton;

RadioButton3: TRadioButton;

Label1: TLabel;

Label2: TLabel;

Button1: TButton;

procedure Button1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure RadioButton1Click(Sender: TObject);

procedure RadioButton2Click(Sender: TObject);

procedure RadioButton3Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form3: TForm3;

implementation

uses Unit2, Unit1, Unit4, Unit5, Unit6;

{$R *.dfm}

var

f: TextFile; // файл теста (вопросы и варианты ответов)

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

right: integer; // количество правильных ответов

level: array[1..4] of integer; // критерии оценок

mes: array[1..4] of string; // комментарии

buf: string;

// читает вопрос из файла и выводит его

// на в поля формы

function NextQw : boolean;

begin

if not EOF(f) then

begin

// прочитать и вывести вопрос

Readln(f,buf);

Form3.Label1.Caption := buf;

// прочитать и вывести варианты ответов

// 1-й вариант

Readln(f,buf); // прочитать 1-й вариант ответа

Form3.RadioButton1.Caption := buf;

Readln(f,buf);

Form3.RadioButton1.Tag := StrToInt(buf);

// 2-й вариант

Readln(f,buf);

Form3. RadioButton2.Caption := buf;

Readln(f,buf);

Form3.RadioButton2.Tag := StrToInt(buf);

// 3-й вариант

Readln(f,buf);

Form3. RadioButton3.Caption := buf;

Readln(f,buf);

Form3.RadioButton3.Tag := StrToInt(buf);

// счетчик общего количества вопросов

kol:= kol + 1;

Form3.Label2.Caption:='Вопрос №'+IntToStr(kol);

// кнопка "Дальше" не доступна,

// пока не выбран один из вариантов ответа

Form3.Button1.Enabled := False;

// ни одна из радиокнопок не выбрана

Form3.RadioButton1.Checked := False;

Form3.RadioButton2.Checked := False;

Form3.RadioButton3.Checked := False;

NextQw := TRUE;

end

else NextQw := FALSE;

end;

// событие FormCreate возникает в момент

// создания формы

procedure TForm3.FormCreate(Sender: TObject);

var

i: integer;

Filename: string;

begin

// взять имя файла теста

Filename := 'Vopr.txt';

AssignFile(f,fname);

// в процессе открытия файла возможны

// ошибки, поэтому ...

try

Reset(f); // эта инструкция может вызвать ошибку

except

on EInOutError do

begin

ShowMessage('Ошибка обращения к файлу теста: ' + Filename);

// завершить программу

Application.Terminate;

end;

end;

// здесь файл теста успешно открыт

Readln(f,buf);

// прочитать оценки и комментарии

for i:=1 to 4 do

begin

Readln(f,buf);

mes[i] := buf;

Readln(f,buf);

level[i] := StrToInt(buf);

end;

// правильных ответов

right := 0;

// всего вопросов

kol := 0;

// прочитать и вывести первый вопрос

NextQW;

end;

// щелчок на кнопке "Дальше"

procedure TForm3.Button1Click(Sender: TObject);

var

buf: string;

i: integer;

begin

if Button1.Caption = 'Завершить' then Close;

// добавим оценку за выбранный вариант ответа

// оценка находится в свойстве Button.Tag

// Button.Tag = 1 - ответ правильный, 0 - нет

if RadioButton1.Checked then

right := right + RadioButton1.Tag;

if RadioButton2.Checked then

right := right + RadioButton2.Tag;

if RadioButton3.Checked then

right := right + RadioButton3.Tag;

if ((RadioButton1.Checked)and(RadioButton1.Tag=1))or

((RadioButton2.Checked)and(RadioButton2.Tag=1))or

((RadioButton3.Checked)and(RadioButton3.Tag=1))Then Form3.Label3.Caption:='ПРАВИЛЬНО'else Form3.Label3.Caption:='НЕВЕРНО';

if Form3.Label3.Caption='НЕВЕРНО'then Form3.Label3.Font.Color:=clRed

else Form3.Label3.Font.Color:=clGreen;

// вывести следующий вопрос

// NextQW читает и выводит вопрос

// NextQw = FALSE если в файле теста

// вопросов больше нет

if not NextQW then

begin

// здесь значение NextQw = FALSE

Button1.Caption := 'Завершить';

// скрыть переключатели и поля меток

RadioButton1.Visible := False;

RadioButton2.Visible := False;

RadioButton3.Visible := False;

form4.BitBtn2.Enabled:=False;

buf := 'Правильных ответов: ' + IntToStr(right) +

' из ' + IntToStr(kol) + '.' + #13;

// выставить оценку

// right - кол-во правильных ответов

i:=1; // номер уровня

while (right < level[i]) and (i < 4) do

inc(i);

buf := buf + mes[i];

form6.Memo1.Lines.Add(buf);

form6.Visible:=true;

form3.Visible:=false;

end;

end;

// щелчок на переключателе выбора первого варианта ответа

procedure TForm3.RadioButton1Click(Sender: TObject);

begin

// кнопка Далее теперь доступна

Button1.Enabled := True;

Form3.Label3.Caption:='';

end;

procedure TForm3.RadioButton2Click(Sender: TObject);

begin

Button1.Enabled := True;

Form3.Label3.Caption:='';

end;

procedure TForm3.RadioButton3Click(Sender: TObject);

begin

Button1.Enabled := True;

Form3.Label3.Caption:='';

end;

end.

----------------------------------------------------------------------------------------------------

unit Unit4;

interface

uses

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

Dialogs, StdCtrls, Grids,printers, ExtCtrls, Buttons, jpeg;

type

TForm4 = class(TForm)

BitBtn2: TBitBtn;

BitBtn3: TBitBtn;

BitBtn4: TBitBtn;

BitBtn1: TBitBtn;

BitBtn5: TBitBtn;

Image1: TImage;

procedure BitBtn2Click(Sender: TObject);

procedure BitBtn3Click(Sender: TObject);

procedure BitBtn4Click(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

procedure BitBtn5Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form4: TForm4;

implementation

uses Unit3, Unit1, Unit2, Unit5, Unit6;

{$R *.dfm}

procedure TForm4.BitBtn1Click(Sender: TObject);

var

f: TextFile;

Filename: String[80];

begin

form6.Memo1.Lines.Add('С теорией был ознакомлен');

form2.Visible:=true;

form4.Visible:=false;

Filename :='teoriya.txt';

AssignFile(f, Filename);

try

Reset(f);

except

on EInOutError do

begin

ShowMessage('Ошибка доступа к файлу '+

Filename);

exit;

end;

end;

begin

form2.Memo1.Lines.LoadFromFile(Filename);

end;

CloseFile(f);

Form4.BitBtn1.Enabled:=False;

end;

procedure TForm4.BitBtn2Click(Sender: TObject);

begin

If Form4.BitBtn1.Enabled=True then

Form6.Memo1.Lines.Add('С теорией не был ознакомлен!');

Form4.BitBtn1.Enabled:=False;

form4.Visible:=false;

Form3.Visible:=true;

end;

procedure TForm4.BitBtn3Click(Sender: TObject);

begin

Form5.Visible:=true;

end;

procedure TForm4.BitBtn4Click(Sender: TObject);

begin

Close;

end;

procedure TForm4.BitBtn5Click(Sender: TObject);

begin

form6.Visible:=true;

form4.Visible:=false;

end;

procedure TForm4.FormCreate(Sender: TObject);

begin

bitbtn5.Enabled:=false;

end;

end.

----------------------------------------------------------------------------------------------------

unit Unit5;

interface

uses

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

Dialogs, ComCtrls, StdCtrls, Buttons, jpeg, ExtCtrls;

type

TForm5 = class(TForm)

Panel1: TPanel;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

BitBtn1: TBitBtn;

procedure BitBtn1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form5: TForm5;

implementation

uses Unit1, Unit2, Unit3, Unit4, Unit6

{$R *.dfm}

procedure TForm5.BitBtn1Click(Sender: TObject);

begin

Form5.Visible:=False;

end;

end.

----------------------------------------------------------------------------------------------------

unit Unit6;

interface

uses

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

Dialogs, StdCtrls, Buttons,printers, jpeg, ExtCtrls;

type

TForm6 = class(TForm)

Memo1: TMemo;

BitBtn1: TBitBtn;

PrintDialog1: TPrintDialog;

BitBtn2: TBitBtn;

BitBtn3: TBitBtn;

SaveDialog1: TSaveDialog;

Image1: TImage;

procedure BitBtn1Click(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

procedure BitBtn3Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form6: TForm6;

implementation

uses Unit1, Unit2, Unit3, Unit4, Unit5;

{$R *.dfm}

procedure TForm6.BitBtn1Click(Sender: TObject);

var

fo:textfile;

i:integer;

begin

if PrintDialog1.Execute then

begin

AssignPRN(fo);

rewrite(fo);

Printer.Canvas.Font:=Memo1.Font;

for i:=0 to Memo1.Lines.Count-1 do

writeln(fo,Memo1.Lines.ValueFromIndex[i]);

Closefile(fo);

end;

end;

procedure TForm6.BitBtn2Click(Sender: TObject);

begin

form4.BitBtn5.Enabled:=true;

form6.Visible:=false;

form4.Visible:=true;

end;

procedure TForm6.BitBtn3Click(Sender: TObject);

begin

SaveDialog1.DefaultExt:='txt';

SaveDialog1.Filter:='Текстовые файлы|*.txt';

if saveDialog1.Execute then

memo1.Lines.SaveToFile(SaveDialog1.FileName);

end;

end.

Приложение Б

Разработка программы

Анализ требований

Пректирование

Диаграмма классов