unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Memo1: TMemo;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    BitBtn1: TBitBtn;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    OpenDialog1: TOpenDialog;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

      Trabotnik = record
    FIO: string[40];			// Поле ф.и.о.
    otc: array[1..3] of word;	// Поле массива часов и номера.
    szar : extended;	// Поле зарплаты
    end;

var

  Fz  : file of  Trabotnik;			// Файл типа запись
  Ft  : TextFile;				// Текстовой файл
  Rab : array[1..100] of Trabotnik;	// Массив записей
  nzap,m : integer;				// Номер записи
  FileNameZ, FileNameT : string; 	// Имя файла


var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
 Edit1.Clear; Edit2.Clear; Edit3.Clear; Edit4.Clear;
 Memo1.Clear;
 Button1.Hide;
 nzap:=0;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 nzap:=nzap+1;

   with rab[nzap] do
        begin
           m:=StrToInt(Edit3.Text);
           FIO:=Edit1.Text;
           otc[1]:=StrToInt(Edit2.Text);
           otc[2]:=StrToInt(Edit3.Text);
           otc[3]:=StrToInt(Edit4.Text);
           if  m>144 then
           szar:=((otc[2]*otc[3])*2*0.88)
           else szar:=((otc[2]*otc[3])*0.88);
           Memo1.Lines.Add(fio+'  '+IntToStr(otc[1])+'   '+FloatToStr(szar));
        end;
     Write(fz,Rab[nzap]);				// Запись в файл
   Edit1.Clear;   Edit2.Clear;   Edit3.Clear;   Edit4.Clear;
end;



procedure TForm1.Button2Click(Sender: TObject);
begin
 OpenDialog1.Title:='Создать новый файл';
 if OpenDialog1.Execute then
  begin
   FileNameZ:=OpenDialog1.FileName;
   AssignFile(Fz,FileNameZ);
   Rewrite(Fz);
  end;
 Button1.Show;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
FileNameZ:= OpenDialog1.FileName;
AssignFile(Fz, FileNameZ);
Reset(Fz);
end;
nzap:=0;
while not eof(fz) do begin
nzap:=nzap+1;

 Read(fz,rab[nzap]);                // Чтение записи из файла
 with rab[nzap] do
 Memo1.Lines.Add(fio+' '+IntToStr(otc[1])+'   '+FloatToStr(szar));

end;
Button1.Show;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
 CloseFile(fz);
end;

procedure TForm1.Button4Click(Sender: TObject);

  var i,j :  word;
       st : Trabotnik;
begin
 for i:=1 to nzap-1 do                   // Сортировка массива записей
  for j:=i+1 to nzap do
   if Rab[i].szar < Rab[j].szar then
      begin
          st:=Rab[i];
         Rab[i]:=Rab[j];
         Rab[j]:=st;
      end;
      Memo1.Clear;
  for i:=1 to nzap do       // Вывод в окно Memo1 отсортированных записей
          with Rab[i] do
     Memo1.Lines.Add(IntToStr(i)+'  '+fio+'  '+FloatToStrf(szar,fffixed,6,2));

end;

end.
