⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 salary_change.pas

📁 这是工资管理系统,能够应用于各种类型的企业。
💻 PAS
字号:
unit salary_change;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, DBGrids, DB, DBTables, StdCtrls, Buttons;

type
  TSalaryChangeForm = class(TForm)
    DBGrid1: TDBGrid;
    Table1: TTable;
    DataSource1: TDataSource;
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    Label1: TLabel;
    Edit1: TEdit;
    Label2: TLabel;
    Edit2: TEdit;
    Label3: TLabel;
    Edit3: TEdit;
    Label4: TLabel;
    Edit4: TEdit;
    Label5: TLabel;
    Edit5: TEdit;
    Label6: TLabel;
    Edit6: TEdit;
    Label7: TLabel;
    Edit7: TEdit;
    Label8: TLabel;
    Edit8: TEdit;
    Label9: TLabel;
    Edit9: TEdit;
    Label10: TLabel;
    Edit10: TEdit;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    Table2: TTable;
    Table1number: TStringField;
    Table1name: TStringField;
    Table1sum: TFloatField;
    Table1real_salary: TFloatField;
    Table1tax: TFloatField;
    Table1note: TStringField;
    Table1salary_date: TStringField;
    Table1operator: TStringField;
    Table1base_salary: TFloatField;
    Table1float_salary: TFloatField;
    Table1allowance_salary: TFloatField;
    Table1age_salary: TFloatField;
    Table1award: TFloatField;
    Table1addition_award: TFloatField;
    Table1insurance: TFloatField;
    Table1rent: TFloatField;
    Table1detain: TFloatField;
    Table1rest: TFloatField;
    Label11: TLabel;
    Edit11: TEdit;
    Label12: TLabel;
    Edit12: TEdit;
    procedure FormActivate(Sender: TObject);
    procedure Table1AfterScroll(DataSet: TDataSet);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure Edit1Exit(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure initiate;
    procedure ReadFromTable;
    procedure SaveToTable;
    procedure CalTax;
    procedure CalSumSalary;
    procedure CalRealSalary;
  end;

var
  SalaryChangeForm: TSalaryChangeForm;
  real_salary:real;
implementation
  uses main;
{$R *.dfm}

procedure TSalaryChangeForm.FormActivate(Sender: TObject);
begin
  Table1.Active:=true;
  table2.DatabaseName:='gzgl';
  table2.TableName:=str;
  Table2.active:=true;
  dbgrid1.SetFocus;
  initiate;
  if not table1.Eof then
    ReadFromTable;
end;
procedure TSalaryChangeForm.ReadFromTable;
begin
  edit1.Text:=FloatToStr(Table1.FieldByName('base_salary').AsFloat);
  edit2.Text:=FloatToStr(Table1.FieldByName('float_salary').AsFloat);
  edit3.Text:=FloatToStr(Table1.FieldByName('allowance_salary').AsFloat);
  edit4.Text:=FloatToStr(Table1.FieldByName('age_salary').AsFloat);
  edit5.Text:=FloatToStr(Table1.FieldByName('award').AsFloat);
  edit6.Text:=FloatToStr(Table1.FieldByName('addition_award').AsFloat);
  edit7.Text:=FloatToStr(Table1.FieldByName('rest').AsFloat);
  edit8.Text:=FloatToStr(Table1.FieldByName('insurance').AsFloat);
  edit9.Text:=FloatToStr(Table1.FieldByName('rent').AsFloat);
  edit10.Text:=FloatToStr(Table1.FieldByName('detain').AsFloat);
  edit11.Text:=FloatToStr(Table1.FieldByName('sum').AsFloat);
  edit12.Text:=FloatToStr(Table1.FieldByName('tax').AsFloat);
end;

procedure TSalaryChangeForm.Table1AfterScroll(DataSet: TDataSet);
begin
    ReadFromTable;
end;
procedure TSalaryChangeForm.initiate;
begin
  Edit1.Text:='';
  Edit2.Text:='';
  Edit3.Text:='';
  Edit4.Text:='';
  Edit5.Text:='';
  Edit6.Text:='';
  Edit7.Text:='';
  Edit8.Text:='';
  Edit9.Text:='';
  Edit10.Text:='';
  Edit11.Text:='';
  Edit12.Text:='';
  real_salary:=0;
end;

procedure TSalaryChangeForm.BitBtn2Click(Sender: TObject);
begin
  Table1.Active:=false;
  close;
end;

procedure TSalaryChangeForm.BitBtn1Click(Sender: TObject);
begin
    SaveToTable;
end;
procedure TSalaryChangeForm.SaveToTable;
begin
  CalRealSalary;
  Table1.Edit;
  Table1.FieldByName('base_salary').AsFloat:=StrToFloat(Edit1.Text);
  Table1.FieldByName('float_salary').AsFloat:=StrToFloat(Edit2.Text);
  Table1.FieldByName('allowance_salary').AsFloat:=StrToFloat(edit3.Text);
  Table1.FieldByName('age_salary').AsFloat:=StrToFloat(edit4.Text);
  Table1.FieldByName('award').AsFloat:=StrToFloat(edit5.Text);
  Table1.FieldByName('addition_award').AsFloat:=StrToFloat(edit6.Text);
  Table1.FieldByName('rest').AsFloat:=StrToFloat(edit7.Text);
  Table1.FieldByName('insurance').AsFloat:=StrToFloat(edit8.Text);
  Table1.FieldByName('rent').AsFloat:=StrToFloat(edit9.Text);
  Table1.FieldByName('detain').AsFloat:=StrToFloat(edit10.Text);
  Table1.FieldByName('sum').AsFloat:=StrToFloat(edit11.Text);
  Table1.FieldByName('tax').AsFloat:=StrToFloat(edit12.Text);
  Table1.FieldByName('real_salary').AsFloat:=real_salary;
  Table1.Post;
  Table2.Append;
  Table2.Edit;
  Table2.FieldByname('number').AsString:=Table1.FieldByname('number').AsString;
  Table2.FieldByname('name').AsString:=Table1.FieldByname('name').AsString;
  Table2.FieldByname('base_salary').AsFloat:=Table1.FieldByname('base_salary').AsFloat;
  Table2.FieldByname('float_salary').AsFloat:=Table1.FieldByname('float_salary').AsFloat;
  Table2.FieldByname('allowance_salary').AsFloat:=Table1.FieldByname('allowance_salary').AsFloat;
  Table2.FieldByname('age_salary').AsFloat:=Table1.FieldByname('age_salary').AsFloat;
  Table2.FieldByname('award').AsFloat:=Table1.FieldByname('award').AsFloat;
  Table2.FieldByname('addition_award').AsFloat:=Table1.FieldByname('addition_award').AsFloat;
  Table2.FieldByname('rest').AsFloat:=Table1.FieldByname('rest').AsFloat;
  Table2.FieldByname('insurance').AsFloat:=Table1.FieldByname('insurance').AsFloat;
  Table2.FieldByname('rent').AsFloat:=Table1.FieldByname('rent').AsFloat;
  Table2.FieldByname('detain').AsFloat:=Table1.FieldByname('detain').AsFloat;
  Table2.FieldByname('tax').AsFloat:=Table1.FieldByname('tax').AsFloat;
  Table2.FieldByname('sum').AsFloat:=Table1.FieldByname('sum').AsFloat;
  Table2.FieldByName('real_salary').asfloat:=Table1.FieldByName('real_salary').asfloat;
  Table2.FieldByname('note').AsString:=Table1.FieldByname('note').AsString;
  Table2.FieldByname('operator').AsString:=username;
  Table2.FieldByname('operator_date').AsDateTime:=date();
  Table2.post;
end;
procedure TSalaryChangeForm.CalSumSalary;
begin
   Edit11.Text:=FloatToStr(StrToFloat(Edit1.Text)+StrToFloat(Edit2.Text)
                +StrToFloat(Edit3.Text)+StrToFloat(Edit4.Text)+StrToFloat(Edit5.Text)
                +StrToFloat(Edit6.Text)+StrToFloat(Edit7.Text));
end;
procedure TSalaryChangeForm.CalRealSalary;
begin
    real_salary:=0;
    real_salary:=StrToFloat(Edit11.Text)-StrToFloat(Edit8.Text)-StrToFloat(Edit9.Text)
              -StrToFloat(Edit12.Text)-StrToFloat(Edit10.Text);
end;
procedure TSalaryChangeForm.CalTax;
var
    TaxTable:TTable;
    i:Integer;
    sum,tax:real;
    rate:array[1..100] of real;
    division:array[1..100] of integer;
begin
    TaxTable:=TTable.Create(self);
    TaxTable.DatabaseName:='gzgl';
    TaxTable.TableName:='tax';
    TaxTable.Active:=true;
    i:=1;
    while not TaxTable.Eof do
    begin
          division[i]:=TaxTable.fieldbyname('division').AsInteger;
          rate[i]:=TaxTable.fieldbyname('rate').AsFloat;
          TaxTable.Next;
          i:=i+1;
    end;
    division[i]:=-1;
    rate[i]:=0;
    TaxTable.Active:=false;
    tax:=0;
    i:=1;
    sum:=StrToFloat(Edit11.Text);
    while (sum>division[i]) and (division[i]<>-1) do
    begin
          if i=1 then
               tax:=0
          else
               tax:=tax+(division[i]-division[i-1])*rate[i-1];
               i:=i+1;
    end;
    if i=1 then
         tax:=0
    else
    tax:=tax+(sum-division[i-1])*rate[i-1];
    Edit12.Text:=FloatToStr(tax);
end;
procedure TSalaryChangeForm.Edit1Exit(Sender: TObject);
begin
    CalSumSalary;
    CalTax;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -