Информация о сотрудниках фирмы включает: Ф.И.О., табельный номер, количество проработанных часов за месяц, почасовый тариф. Рабочее время свыше 144 часов считается сверхурочным и оплачивается в двойном размере. Вывести размер заработной платы каждого сотрудника фирмы за вычетом подоходного налога, который составляет 12 % от суммы заработка.
Цитата:
unit Lab_Rab_6;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Label3: TLabel;
Edit2: TEdit;
Label4: TLabel;
Edit3: TEdit;
Label5: TLabel;
Edit4: TEdit;
Button1: TButton;
Memo1: TMemo;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
Label6: TLabel;
BitBtn1: TBitBtn;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
Type
TWorker = record
FIO:string[100];
number:integer;
hours ouble;
tarif ouble;
zp ouble;
end;
var
Fz: file of TWorker;
Ft:textfile;
nomerzap:integer;
filenameZ,filenameT:string;
work:array[1..100]of Tworker;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Text := '';
Edit2.Text := '';
Edit3.Text := '';
Edit4.Text := '';
Memo1.Clear;
Button1.Hide; //Сделать невидимой кнопку "Ввести запись"
nomerzap:=0;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
nomerzap:=nomerzap+1;
with work[nomerzap] do begin
Fio:=Edit1.Text;
number:=strtoint(edit2.Text);
hours:=strtoint(edit3.Text);
tarif:=strtoint(edit4.Text);
zp:=(hours*tarif);
Memo1.Lines.Add(fio+' '+IntToStr(number)+' '+ FloatToStr(hours)+' '+FloatToStr(tarif));
end;
write(fz,work[nomerzap]);
Edit1.Text:='';
Edit2.Text:='';
Edit3.Text:='';
Edit4.Text:='';
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
OpenDialog1.Title := 'Создать новый файл';
// Изменение заголовка окна диалога
if OpenDialog1.Execute then
// Выполнение стандартного диалога выбора имени файла
begin
Memo1.Lines.Add('ФИО сотрудника'+' '+'Табельный номер'+' '+ 'Кол-во отработанных часов'+' '+'Почасовый тариф');
FileNameZ := OpenDialog1.FileName;
// Возвращение имени дискового файла
AssignFile(Fz, FileNameZ);
// Связывание файловой переменной Fz с именем файла
Rewrite(Fz); //Создание нового файла
Button1.Show; //Сделать видимой кнопку "Ввести запись"
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
if OpenDialog1.Execute then
//Выполнение стандартного диалога выбора имени файла
begin
FileNameZ := OpenDialog1.FileName;
// Возвращение имени дискового файла
AssignFile(Fz, FileNameZ);
// Связывание файловой переменной Fz с именем файла
Reset(Fz); //Открытие существующего файла
end;
While not EOF(fz) do
begin
nomerzap:=nomerzap+1;
Read(fz,work[nomerzap]);
with work[nomerzap] do
Memo1.Lines.Add(fio+' '+IntToStr(number)+' '+ FloatToStr(hours)+' '+FloatToStr(tarif));
end;
Button1.Show; //Сделать видимой кнопку "Ввести запись"
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
CloseFile(fz);
// Закрытие файла записей при нажатии на кнопку "Close"
end;
procedure TForm1.Button4Click(Sender: TObject);
var
i,j:word;
wr:Tworker;
begin
for I:=1 to nomerzap-1 do
for j:=i+1 to nomerzap do
if work[i].zp < work[j].zp then begin
wr:=work[i];
work[i]:=work[j];
work[j]:=wr;
end;
memo1.Clear;
for i:=1 to nomerzap do
with work[i] do
Memo1.Lines.Add(IntToStr(i)+' '+fio+' '+FloatToStrf(zp,fffixed,4,2));
end;
procedure TForm1.Button5Click(Sender: TObject);
var i:word;
begin
if SaveDialog1.Execute then
begin
FileNameT:= SaveDialog1.FileName;
AssignFile(Ft, FileNameT);
Rewrite(Ft);
end;
for i:=1 to nomerzap do
with work[i] do Writeln(Ft,i:4,'. ',fio,zp:8:2);
CloseFile(Ft);
end;
end.
|