Мегаобучалка Главная | О нас | Обратная связь


Приложение Б. Листинг основного модуля программы



2019-12-29 170 Обсуждений (0)
Приложение Б. Листинг основного модуля программы 0.00 из 5.00 0 оценок




unit MainMenu;

 

interface

 

uses

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

StdCtrls, ExtCtrls, Gauges, Menus, ComCtrls, User1, Report,

NewScen, ImgList,Report1;

 

type

TForm1 = class(TForm)

TaskList: TListBox;

RunBtn: TButton;

ExtBtn: TButton;

MainMenu1: TMainMenu;

Menu1: TMenuItem;

Menu4: TMenuItem;

Menu41: TMenuItem;

Menu5: TMenuItem;

Bevel1: TBevel;

StatusBar1: TStatusBar;

Image1: TImage;

ODT2: TImage;

ODT1: TImage;

BB50: TImage;

ODT3: TImage;

PBB2: TImage;

MBB2: TImage;

CMB1: TImage;

MBB1: TImage;

ABR1: TImage;

TRZ2: TImage;

TRZ1: TImage;

TRZ4: TImage;

TRZ3: TImage;

MBB4: TImage;

CMB2: TImage;

MBB3: TImage;

SRZ2: TImage;

SRZ9: TImage;

SR10: TImage;

SRZ1: TImage;

SRZ4: TImage;

SR37: TImage;

SR20: TImage;

SRZ3: TImage;

ABR2: TImage;

ResultBtn: TButton;

Label1: TLabel;

HelpBtn: TButton;

New: TMenuItem;

N2: TMenuItem;

Exit: TMenuItem;

Image2: TImage;

StaticText1: TStaticText;

Menu52: TMenuItem;

 Label2: TLabel;

Menu2: TMenuItem;

Menu21: TMenuItem;

Menu22: TMenuItem;

procedure ExtBtnClick(Sender: TObject);

procedure TaskListMouseUp(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure FormActivate(Sender: TObject);

procedure RunBtnClick(Sender: TObject);

procedure Menu41Click(Sender: TObject);

procedure MBB1Click(Sender: TObject);

procedure MBB2Click(Sender: TObject);

procedure MBB3Click(Sender: TObject);

procedure MBB4Click(Sender: TObject);

procedure CMB1Click(Sender: TObject);

procedure CMB2Click(Sender: TObject);

procedure BB50Click(Sender: TObject);

procedure PBB2Click(Sender: TObject);

procedure TRZ1Click(Sender: TObject);

procedure TRZ2Click(Sender: TObject);

procedure TRZ3Click(Sender: TObject);

procedure TRZ4Click(Sender: TObject);

procedure SRZ1Click(Sender: TObject);

procedure SRZ2Click(Sender: TObject);

procedure SRZ3Click(Sender: TObject);

procedure SRZ4Click(Sender: TObject);

procedure SRZ9Click(Sender: TObject);

procedure SR10Click(Sender: TObject);

procedure SR20Click(Sender: TObject);

procedure SR37Click(Sender: TObject);

procedure ODT1Click(Sender: TObject);

procedure ODT2Click(Sender: TObject);

procedure ODT3Click(Sender: TObject);

procedure ABR1Click(Sender: TObject);

procedure ABR2Click(Sender: TObject);

procedure ResultBtnClick(Sender: TObject);

procedure HelpBtnClick(Sender: TObject);

procedure NewClick(Sender: TObject);

procedure Menu52Click(Sender: TObject);

procedure Menu21Click(Sender: TObject);

procedure Menu22Click(Sender: TObject);

 

private

{ Private declarations }

public

{ Public declarations }

 

end;

 

TStringList1 = class (TStringList);

TMyZap=class(TObject)

FNo:Integer;

FImage:ShortString;

FState:Integer;

FComment:ShortString;

constructor Create(No:Integer;Image:ShortString;State:Integer;Comment:ShortString);

end;

 

var

Form1: TForm1;

TaskNumber:Integer;

WorkMode:Integer;

List1:TStringList1;

ActList:TList;

  Prot:TStringList;

   Zap:TMyZap;

    Switch:TImage;

     TaskName:string;

      Error:integer;

       Help:integer;

        Count:Integer;

      F: array [0..24] of boolean;

      E: array [0..24] of boolean;

implementation

 

uses Results;

 

{$R *.DFM}

 

constructor TMyZap.Create(No:Integer;Image:ShortString;State:Integer;Comment:ShortString);

begin

inherited Create;

FNo:=No;

FImage:=Image;

FState:=State;

FComment:=Comment;

end;

 

procedure SWState(AOwner:TImage;i:integer);

begin

if F[i]=false then begin

   with AOwner.Canvas do begin

           Pen.Color:=clWhite;

           MoveTo(6,1);

           LineTo(6,17);

           Pen.Width:=2;

           Pen.Color:=clBlack;

           Rectangle(1,1,17,17);

           MoveTo(6,17);

           LineTo(15,1);

           end;

   F[i]:=true;

   end

   else begin

   with AOwner.Canvas do begin

           Pen.Color:=clWhite;

           MoveTo(6,17);

           LineTo(15,1);

           Pen.Width:=2;

           Pen.Color:=clBlack;

           Rectangle(1,1,17,17);

           MoveTo(6,1);

           LineTo(6,17);

           end;

   F[i]:=false;

end;

end;

 

procedure ABRState(AOwner:TImage;i:integer);

begin

if F[i]=False then begin

   with AOwner.Canvas do begin

           Brush.Color:=clWhite;

           FloodFill(8,8,clBlack,fsSurface);

           Pen.Width:=2;

           Pen.Color:=clBlack;

           MoveTo(1,15);

           LineTo(8,1);

           MoveTo(8,1);

           LineTo(17,15);

           MoveTo(17,15);

           LineTo(1,15);

   end;

   F[i]:=True;

   end

else begin

   with AOwner.Canvas do begin

        FloodFill(8,8,clWhite,fsSurface);

        Pen.Width:=2;

        Pen.Color:=clBlack;

           MoveTo(1,15);

           LineTo(8,1);

           MoveTo(8,1);

           LineTo(17,15);

           MoveTo(17,15);

           LineTo(1,15);

        Brush.Color:=clBlack;

        FloodFill(8,8,clBlack,fsBorder);

   end;

   F[i]:=False;

   end;

end;

 

procedure MVState(AOwner:TImage;i:integer);

begin

if F[i]=false then begin

   with AOwner.Canvas do begin

           Pen.Color:=clWhite;

           MoveTo(9,6);

           LineTo(9,11);

           Pen.Width:=2;

           Pen.Color:=clBlack;

           Rectangle(1,1,17,17);

           MoveTo(6,8);

           LineTo(11,8);

           end;

   F[i]:=true;

   end

   else begin

   with AOwner.Canvas do begin

           Pen.Color:=clWhite;

           MoveTo(6,8);

           LineTo(11,8);

           Pen.Width:=2;

           Pen.Color:=clBlack;

           Rectangle(1,1,17,17);

           MoveTo(9,6);

           LineTo(9,11);

           end;

   F[i]:=false;

end;

end;

 

function Analyze(AOwner:TComponent):boolean;

begin

Zap:=ActList.First;

if WorkMode=0 then

if (Zap.FImage=AOwner.Name)

   then begin

   if Zap.FImage<>'0' then ActList.Delete(ActList.IndexOf(ActList.First));

   Result:=true;

   Form1.Label1.Caption:='';

   Prot.Append(Zap.FComment);

   end

     else begin

     Form1.Label1.Caption:='   Ошибка';

     Prot.Append('Ошибка, '+Zap.FComment);

     Error:=Error+1;

     Result:=false;

     end

else Count:=Count+1;

Form1.ResultBtn.Visible:=True;

end;

 

{Считывание информации дла решения задач}

 

procedure Read;

var Fil:textfile;

s:string;

j:integer;

begin

for j:=1 to 10 do begin

s:='Info\'+IntToStr(j)+'.str';

assign(fil,s);

reset(fil);

readln(fil,s);

Form1.TaskList.Items.Insert(j-1,s);

end;

end;

 

procedure ReadInfo(Num:integer);

var Fil:textfile;

s,s1:string;

i,j:integer;

begin

ActList:=TList.Create;

s:='Info\'+IntToStr(Num)+'.str';

assign(fil,s);

reset(fil);

readln(fil,s);

readln(fil,s);

for i:=0 to 24 do

if s[i+1]='1' then F[i]:=true

           else F[i]:=false;

readln(fil,s);

for i:=0 to 24 do

if s[i+1]='1' then E[i]:=true

           else E[i]:=false;

for i:=1 to 15 do begin

readln(fil,s);

s1:=s;

for j:=1 to 7 do s1[j]:=' ';

ActList.Add(TMyZap.Create(StrToInt(s[1]+s[2]),s[3]+s[4]+s[5]+s[6],StrToInt(s[7]),s1));

end;

closefile(fil);

end;

 

procedure TForm1.FormActivate(Sender: TObject);

begin

   Form1.ResultBtn.Visible:=False;

   Form1.HelpBtn.Visible:=False;

   Form1.Label2.Visible:=false;

   Image1.Visible:=False;

   Image2.Visible:=False;

   StaticText1.Visible:=False;

   Label2.Visible:=False;

   StatusBar1.Panels[2].Text:='Выберите режим работы и задачу.';

   StatusBar1.Panels[3].Text:='Режим работы: ';

   TaskList.ItemIndex:=0;

   TaskNumber:=0;

   Read;

   User1.User.ShowModal;

end;

 

procedure TForm1.ExtBtnClick(Sender: TObject);

begin

 if Prot<>nil then Prot.Clear;

 if ActList<>nil then ActList.Clear;

 if Prot<>nil then Prot.Clear;

 Application.Terminate;

end;

 

procedure TForm1.TaskListMouseUp(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

var Point:TPoint;

begin

   Point.X:=Y;Point.Y:=Y;

   TaskNumber:=TaskList.ItemAtPos(Point,true);

   StatusBar1.Panels[2].Text:=Form1.TaskList.Items.Strings[TaskNumber];

   StatusBar1.Panels[1].Text:='№'+IntToStr(1+TaskList.ItemAtPos(Point,true));

end;

 

procedure TForm1.RunBtnClick(Sender: TObject);

var s:string;

begin

   TaskList.Visible:=False;

   if WorkMode=0 then begin

   StatusBar1.Panels[3].Text:='Режим работы: Тренировка';

   Form1.HelpBtn.Visible:=true;

      Form1.Label1.Visible:=true;

   Form1.Label2.Visible:=true;

   ResultBtn.Caption:='Результаты';

   end;

   Image1.Visible:=true;

   Image2.Visible:=true;

   StaticText1.Visible:=true;

   ReadInfo(TaskNumber+1);

   Error:=0;

   Help:=0;

   Form1.Caption:=TaskList.Items[TaskNumber];

   {Начальные условия}

   SWState(ODT2,0);

   SWState(ODT1,1);

   SWState(ODT3,3);

   MVState(MBB1,10);

   MVState(MBB2,7);

   MVState(MBB3,19);

   MVState(MBB4,17);

   MVState(CMB1,8);

   MVState(CMB2,18);

   MVState(PBB2,4);

   MVState(BB50,2);

   SWState(TRZ1,6);

   SWState(TRZ2,5);

   SWState(TRZ3,16);

   SWState(TRZ4,15);

   SWState(SRZ1,14);

   SWState(SRZ2,11);

   SWState(SRZ3,24);

   SWState(SRZ4,20);

   SWState(SRZ9,12);

   SWState(SR10,13);

   SWState(SR20,23);

   SWState(SR37,21);

   ABRState(ABR1,9);

   ABRState(ABR2,22);

   Prot:=TStringList.Create;

   if WorkMode=0 then s:=(' тренировки')

                 else s:=(' экзамена');

   Prot.Append('                                      Протокол'+s);

   Prot.Append('                               ---------------------------');

   Prot.Append('Фамилия: '+User1.N1);

   Prot.Append('Имя: '+User1.N2);

   Prot.Append('Отчество: '+User1.N3);

   Prot.Append('               ЗАДАЧА: '+TaskList.Items[TaskNumber]);

   Prot.Append('            --------------------------------------------');

   if WorkMode=0 then s:=(' прохождения тренировки: ')

                 else s:=(' сдачи экзамена: ');

   Prot.Append('Дата '+s+DateToStr(Date));

end;

 

procedure TForm1.Menu41Click(Sender: TObject);

begin

User.ShowModal;

end;

 

procedure TForm1.MBB1Click(Sender: TObject);

begin

if Analyze(MBB1)=True then MVState(MBB1,10)

                 else MVState(MBB1,10);

if F[10]=true then

end;

 

procedure TForm1.MBB2Click(Sender: TObject);

begin

if Analyze(MBB2)=True then MVState(MBB2,7)

                 else MVState(MBB2,7);

end;

 

procedure TForm1.MBB3Click(Sender: TObject);

begin

if Analyze(MBB3)=True then MVState(MBB3,19)

                 else MVState(MBB3,19);

end;

 

procedure TForm1.MBB4Click(Sender: TObject);

begin

if Analyze(MBB4)=True then MVState(MBB4,17)

                 else MVState(MBB4,17);

end;

 

procedure TForm1.CMB1Click(Sender: TObject);

begin

if Analyze(CMB1)=True then MVState(CMB1,8)

                 else MVState(CMB1,8);

end;

 

procedure TForm1.CMB2Click(Sender: TObject);

begin

if Analyze(CMB2)=True then MVState(CMB2,18)

                 else MVState(CMB2,18);

end;

 

procedure TForm1.BB50Click(Sender: TObject);

begin

if Analyze(BB50)=True then MVState(BB50,2)

                 else MVState(BB50,2);

end;

 

procedure TForm1.PBB2Click(Sender: TObject);

begin

if Analyze(PBB2)=True then MVState(PBB2,4)

                 else MVState(PBB2,4);

end;

 

procedure TForm1.TRZ1Click(Sender: TObject);

begin

if Analyze(TRZ1)=True then SWState(TRZ1,6)

                 else SWState(TRZ1,6);

end;

 

procedure TForm1.TRZ2Click(Sender: TObject);

begin

if Analyze(TRZ2)=True then SWState(TRZ2,5)

                 else SWState(TRZ2,5);

end;

 

procedure TForm1.TRZ3Click(Sender: TObject);

begin

if Analyze(TRZ3)=True then SWState(TRZ3,16)

                 else SWState(TRZ3,16);

end;

 

procedure TForm1.TRZ4Click(Sender: TObject);

begin

if Analyze(TRZ4)=True then SWState(TRZ4,15)

                 else SWState(TRZ4,15);

end;

 

procedure TForm1.SRZ1Click(Sender: TObject);

begin

if Analyze(SRZ1)=True then SWState(SRZ1,14)

                 else SWState(SRZ1,14);

end;

 

procedure TForm1.SRZ2Click(Sender: TObject);

begin

if Analyze(SRZ2)=True then SWState(SRZ2,11)

                 else SWState(SRZ2,11);

end;

 

procedure TForm1.SRZ3Click(Sender: TObject);

begin

if Analyze(SRZ3)=True then SWState(SRZ3,24)

                 else SWState(SRZ3,24);

end;

 

procedure TForm1.SRZ4Click(Sender: TObject);

begin

if Analyze(SRZ4)=True then SWState(SRZ4,20)

                 else SWState(SRZ4,20);

end;

 

procedure TForm1.SRZ9Click(Sender: TObject);

begin

if Analyze(SRZ9)=True then SWState(SRZ9,12)

                 else SWState(SRZ9,12);

end;

 

procedure TForm1.SR10Click(Sender: TObject);

begin

if Analyze(SR10)=True then SWState(SR10,13)

                 else SWState(SR10,13);

end;

 

procedure TForm1.SR20Click(Sender: TObject);

begin

if Analyze(SR20)=True then SWState(SR20,23)

                 else SWState(SR20,23);

end;

 

procedure TForm1.SR37Click(Sender: TObject);

begin

if Analyze(SR37)=True then SWState(SR37,21)

                 else SWState(SR37,21);

end;

 

procedure TForm1.ODT1Click(Sender: TObject);

begin

if Analyze(ODT1)=True then SWState(ODT1,1)

                 else SWState(ODT1,1);

end;

 

procedure TForm1.ODT2Click(Sender: TObject);

begin

if Analyze(ODT2)=True then SWState(ODT2,0)

                 else SWState(ODT2,0);

end;

 

procedure TForm1.ODT3Click(Sender: TObject);

begin

if Analyze(ODT3)=True then SWState(ODT3,3)

                 else SWState(ODT3,3);

end;

 

procedure TForm1.ABR1Click(Sender: TObject);

begin

if Analyze(ABR1)=True then ABRState(ABR1,9)

                 else ABRState(ABR1,9);

 

end;

 

procedure TForm1.ABR2Click(Sender: TObject);

begin

if Analyze(ABR2)=True then ABRState(ABR2,22)

                 else ABRState(ABR2,22);

end;

 

procedure TForm1.ResultBtnClick(Sender: TObject);

var i:integer;

s:string;

begin

Error:=0;

Count:=0;

if WorkMode=1 then begin

for i:=0 to 24 do if E[i]=F[i] then Error:=Error+1;

if Error=0 then s:='Хорошо';

if Error=1 then s:='Удовлетворительно';

if Error>2 then s:='Неудовлетворительно';

Results.Result.Label1.Caption:='Оценка: '+s;

Prot.Append('Оценка: '+s);

Results.Result.ShowModal;

TaskList.Visible:=True;

end;

if (WorkMode=0)and(Zap.FNo=0)and(Zap.FImage='0000')and(Zap.FState=0) then begin

   Prot.Append('Количество ошибок: '+IntToStr(Error));

   Prot.Append('Количество обращений к подсказке: '+IntToStr(Help));

   Results.Result.Label1.Caption:='Количество ошибок: '+IntToStr(Error);

   Results.Result.Label2.Caption:='Количество обращений к подсказке: '+IntToStr(Help);

   Results.Result.ShowModal;

   Actlist.Clear;

   TaskList.Visible:=True;

   end;

end;

 

procedure TForm1.HelpBtnClick(Sender: TObject);

begin

if StatusBar1.Panels[1].Text='№'

   then

   Label1.Caption:='   Выберите задачу'

   else

   begin

   Zap:=ActList.First;

   Label1.Caption:=Zap.FComment;

   Help:=Help+1;

   end;

end;

 

procedure TForm1.NewClick(Sender: TObject);

begin

FormScene.Position:=poScreenCenter;

FormScene.ShowModal;

end;

 

procedure TForm1.Menu52Click(Sender: TObject);

var s:string;

i:integer;

begin

Report.ReportForm.ProtList.Clear;

if Prot<>nil then begin

for i:=0 to Prot.Count-1 do

Report.ReportForm.ProtList.Items.Append(Prot.Strings[i]);

s:=TimeToStr(Now);

if FileExists('Info\Report.txt') then Prot.SaveToFile('Info\Report'+s[7]+'.txt')

                            else Prot.SaveToFile('Info\Report.txt');

ReportForm.ShowModal;

end;

end;

 

procedure TForm1.Menu21Click(Sender: TObject);

begin

   WorkMode:=0;

   StatusBar1.Panels[3].Text:='Режим работы: Тренировка';

   Form1.HelpBtn.Visible:=true;

   Form1.Label1.Visible:=true;

   Form1.Label2.Visible:=true;

   ResultBtn.Caption:='Результаты';

end;

 

procedure TForm1.Menu22Click(Sender: TObject);

begin

   WorkMode:=1;

   StatusBar1.Panels[3].Text:='Режим работы: Экзамен';

     Form1.HelpBtn.Visible:=false;

   Form1.Label1.Visible:=false;

   Form1.Label2.Visible:=false;

   ResultBtn.Caption:='Готово';

end;

 

end.

 

 



2019-12-29 170 Обсуждений (0)
Приложение Б. Листинг основного модуля программы 0.00 из 5.00 0 оценок









Обсуждение в статье: Приложение Б. Листинг основного модуля программы

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

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



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (170)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.007 сек.)