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

📄 chongzhi.pas

📁 健身会馆会员管理,实现了部分财务管理和,报表统计功能
💻 PAS
字号:
unit chongzhi;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, DB, Mask, DBCtrls, ADODB;

type
  Tchongzhifrm = class(TForm)
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    Label3: TLabel;
    DBEdit1: TDBEdit;
    DataSource1: TDataSource;
    Label4: TLabel;
    DBEdit2: TDBEdit;
    Label5: TLabel;
    DBEdit3: TDBEdit;
    Label6: TLabel;
    DBEdit4: TDBEdit;
    Edit1: TEdit;
    Label7: TLabel;
    DBEdit5: TDBEdit;
    ADOQuery1: TADOQuery;
    Label8: TLabel;
    DBEdit6: TDBEdit;
    ADODataSet1: TADODataSet;
    Label10: TLabel;
    ADOQuery2: TADOQuery;
    Label11: TLabel;
    ComboBox1: TComboBox;
    ComboBox2: TComboBox;
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure Edit1Change(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure DBEdit1Change(Sender: TObject);
    procedure ComboBox1KeyPress(Sender: TObject; var Key: Char);
    procedure ComboBox1Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  chongzhifrm: Tchongzhifrm;

implementation
uses unit1;
{$R *.dfm}

procedure Tchongzhifrm.BitBtn1Click(Sender: TObject);
var
   danjia,zhekou:single;
   chongzhicishu:integer;
   chongzhidate:TDatetime;
   riqi1,riqi2:single;
   duoji:boolean;
begin
MainForm.old_kahao :='';
{if ADOQuery1.FieldValues['会员卡级别']<>null then
begin
  MainForm.ADOQuery2.Close ;
  MainForm.ADOQuery2.SQL.Text :='select * from 级别分类 where 会员级别=''' + ADOQuery1.FieldValues['会员卡级别'] + '''';
  MainForm.ADOQuery2.Open ;
  if  MainForm.ADOQuery2.RecordCount >0 then
     zhekou:= MainForm.ADOQuery2.FieldValues['折扣']
  else zhekou:=1;
end else zhekou:=1; }

if edit1.Text <>'' then
begin
  ADOQuery2.SQL.Text :='select * from 收支表';
  ADOQuery2.Open ;
  ADOQuery2.Append ;
  ADOQuery2.FieldByName('收入').AsFloat := strtofloat(Edit1.text);
  ADOQuery2.FieldByName('经手人').AsString :=MainForm.user_name;
  ADOQuery2.FieldByName('事由').AsString :='会员冲值';
  ADOQuery2.FieldByName('日期').AsDateTime :=date +time;
  ADOQuery2.Post ;
  ADOQuery2.Close ;
  MainForm.qianxiang.Open ;
  MainForm.qianxiang.Edit ;
  MainForm.qianxiang.FieldByName('钱箱内总金额').AsFloat :=MainForm.qianxiang.FieldValues['钱箱内总金额']+ strtofloat(Edit1.text);
  MainForm.qianxiang.FieldByName('本班收支').AsFloat :=MainForm.qianxiang.FieldValues['本班收支']+ strtofloat(Edit1.text);
  MainForm.qianxiang.Post ;
  MainForm.qianxiang.Close ;
end;


MainForm.ADOQuery2.Close;
MainForm.ADOQuery0.Close ;
MainForm.ADOQuery0.SQL.Text :='select * from 会员冲值表';
MainForm.ADOQuery0.Open ;
MainForm.ADOQuery0.Append ;
MainForm.ADOQuery0.FieldByName('会员卡号').AsString :=DBEdit1.text ;
if edit1.Text <>'' then
MainForm.ADOQuery0.FieldByName('金额').AsFloat  :=strtofloat(Edit1.text) ;
MainForm.ADOQuery0.FieldByName('日期').AsDateTime :=date+time ;
ADOQuery1.Edit ;
if ADOQuery1.FieldValues['会员卡类型']='计时卡' then
     begin
        //danjia:=ADODataSet1.FieldValues ['计时卡'];
        //danjia:=danjia*zhekou;
        if ComboBox2.ItemIndex =0 then
           zhekou:=strtofloat(ComboBox1.Text )
        else  zhekou:=strtofloat(ComboBox1.Text )*7 ;
        riqi1:= round(ADOquery1.FieldValues ['到期日期']);
        riqi2:=round(date);
        riqi1:=riqi1-riqi2;
        if  (ADOQuery1.FieldValues['到期日期']=NULL) or (riqi1<=0) then
            chongzhidate:=date
        else chongzhidate:= ADOQuery1.FieldValues['到期日期'];
        ADOQuery1.FieldByName('到期日期').AsDateTime :=chongzhidate+ Round(zhekou);
        MainForm.ADOQuery0.FieldByName('备注').AsString :='增加可用天数:' + floattostr(Round(zhekou)) +'天    ';
     end
else begin
      if ADOQuery1.FieldValues['会员卡类型']='计次卡' then
      begin
        if  ADOQuery1.FieldValues['剩余次数']=NULL then
            chongzhicishu:=0
        else chongzhicishu:= ADOQuery1.FieldValues['剩余次数'];
        //danjia:=ADODataSet1.FieldValues ['计次卡'];
        //danjia:=danjia*zhekou;
        ADOQuery1.FieldByName('剩余次数').AsFloat :=chongzhicishu+Round(strtofloat(ComboBox1.Text ));
        MainForm.ADOQuery0.FieldByName('备注').AsString :='增加可用次数:' + floattostr(Round(strtofloat(ComboBox1.Text ))) +'次    ';
      end else showmessage('该会员资料有误');
     end;
MainForm.ADOQuery0.Post ;
MainForm.ADOQuery0.Close;
if  ADOQuery1.FieldValues['累计金额']=NULL then
     danjia:=0                    //使用danjia变量暂时保存上次冲值后的累积金额
else danjia:= ADOQuery1.FieldValues['累计金额'];
if edit1.text<>''then
ADOQuery1.FieldByName('累计金额').AsFloat :=danjia+strtofloat(edit1.Text )
else ADOQuery1.FieldByName('累计金额').AsFloat :=danjia;
if (ADOQuery1.FieldValues['会员卡级别']<>'') and (ADOQuery1.FieldValues['会员卡级别']<>null) then
begin
MainForm.ADOQuery2.Close ;
MainForm.ADOQuery2.SQL.Text :='select * from 级别分类 where 会员级别=''' + ADOQuery1.FieldValues['会员卡级别'] +'''';
MainForm.ADOQuery2.Open ;
if (MainForm.ADOQuery2.FieldValues['积分规则']<>'') and (MainForm.ADOQuery2.FieldValues['积分规则']<>null) then
begin
MainForm.ADOQuery2.SQL.Text :='select * from 积分规则表 where 积分规则=''' + MainForm.ADOQuery2.FieldValues['积分规则'] +'''';
MainForm.ADOQuery2.Close ;
MainForm.ADOQuery2.Open ;
if not MainForm.ADOQuery2.Eof then begin
riqi1:=MainForm.ADOQuery2.FieldValues['冲值积分系数'];
danjia:=MainForm.ADOQuery2.FieldValues['多级积分递减'];
riqi2:= MainForm.ADOQuery2.FieldValues['介绍人加分单价'];
duoji:= MainForm.ADOQuery2.FieldValues['允许多级积分'];
MainForm.ADOQuery2.Close ;
ADOQuery1.FieldByName('会员积分').AsFloat :=ADOQuery1.FieldValues['会员积分'] +strtofloat(edit1.Text ) * riqi1;
ADOQuery1.FieldByName('为上积分').AsFloat :=ADOQuery1.FieldValues['为上积分'] +strtofloat(edit1.Text ) * riqi1;
if ADOQuery1.FieldValues['介绍人卡号']<>null then
begin
if  ADOQuery1.FieldValues['为上积分'] >  riqi2 then
    begin
    MainForm.ADOQuery2.SQL.Text :='select * from 会员表 where 会员卡号=''' + ADOQuery1.FieldValues['介绍人卡号'] +'''';
    MainForm.ADOQuery2.Open ;
    if not MainForm.ADOQuery2.Eof then
       begin
       MainForm.ADOQuery2.Edit ;
       zhekou:=ADOQuery1.FieldValues['为上积分'];
       MainForm.ADOQuery2.FieldByName('会员积分').AsFloat :=MainForm.ADOQuery2.FieldValues['会员积分'] + zhekou/riqi2;
       ADOQuery1.FieldByName('为上积分').AsFloat :=0;
       if duoji then
           begin
               while danjia>0.01 do
               begin
                 MainForm.ADOQuery2.SQL.Text :='select * from 会员表 where 会员卡号=''' + MainForm.ADOQuery2.FieldValues['介绍人卡号'] +'''';
                 MainForm.ADOQuery2.Close;
                 MainForm.ADOQuery2.Open ;
                 if not MainForm.ADOQuery2.Eof then
                     begin
                       MainForm.ADOQuery2.Edit ;
                       MainForm.ADOQuery2.FieldByName('会员积分').AsFloat :=MainForm.ADOQuery2.FieldValues['会员积分'] + zhekou/riqi2 * danjia;
                       danjia:=danjia * danjia;
                    end
                 else begin
                    MainForm.ADOQuery2.Close;
                    break;
                    end;
               end;
           end;
       end;
    end;
end;
end;//MainForm.ADOQuery2.FieldValues['积分规则']<>''
end;
end;// ADOQuery1.FieldValues['会员卡级别']<>''
//MainForm.ADOQuery2.Close ;
if ADOQuery1.FieldValues['会员积分']<>null then begin
   MainForm.ADOQuery2.SQL.Text :='select 会员级别 from 级别分类 where 需要积分<' + floattostr(ADOQuery1.FieldValues['会员积分']) + ' order by 需要积分 desc ';
   MainForm.ADOQuery2.Open ;
   if MainForm.ADOQuery2.FieldValues['会员级别']<>null then
      ADOQuery1.FieldByName('会员卡级别').AsString :=MainForm.ADOQuery2.FieldValues['会员级别'];
   MainForm.ADOQuery2.Close;
end;
if dbedit1.text<>'' then begin
ADOQuery1.FieldByName('会员卡状态').AsString :='可用';
ADOQuery1.Post ;
end;

close;
MainForm.Edit1Change(self);
end;

procedure Tchongzhifrm.BitBtn2Click(Sender: TObject);
begin
close;
end;

procedure Tchongzhifrm.Edit1Change(Sender: TObject);

begin
{if dbedit1.Text <>'' then begin
if edit1.Text <>'' then
  begin
     bitbtn1.Enabled := true;
     if ADOQuery1.FieldValues['会员卡级别']<>null then
     begin
     MainForm.ADOQuery2.Close ;
     MainForm.ADOQuery2.SQL.Text :='select * from 级别分类 where 会员级别=''' + ADOQuery1.FieldValues['会员卡级别'] + '''';
     MainForm.ADOQuery2.Open ;
     if  MainForm.ADOQuery2.RecordCount >0 then
        zhekou:= MainForm.ADOQuery2.FieldValues['折扣']
     else zhekou:=1;
     end
     else zhekou:=1;
     if ADOQuery1.FieldValues['会员卡类型']='计时卡' then
       begin
          if ADODataSet1.FieldValues ['计时卡']<>null then
             danjia:=ADODataSet1.FieldValues ['计时卡']
          else begin
             showmessage('计时卡健身消费价格没有设置,请设置。');
             exit;
             end;
          danjia:=danjia*zhekou;
          if danjia=0 then
             begin
             showmessage('健身消费价格设置不合理,请重新设置。');
             exit;
             end;
          Label9.Caption :='增加可用天数:' + floattostr(Round(strtofloat(edit1.Text )/danjia)) +'天    ';
          if  ADOQuery1.FieldValues['到期日期']=NULL then
            chongzhidate:=date
          else chongzhidate:= ADOQuery1.FieldValues['到期日期'];
          //Label10.caption:='到期日期' + datetimetostr(chongzhidate+ Round(strtofloat(edit1.Text )/danjia));
          Label10.caption:='到期日期' + FormatDateTime('YYYY"年"MM"月"DD"日      "', chongzhidate+ Round(strtofloat(edit1.Text )/danjia));

       end
     else begin  
          if ADOQuery1.FieldValues['会员卡类型']='计次卡' then
          begin
          if ADODataSet1.FieldValues ['计次卡']<>null then
             danjia:=ADODataSet1.FieldValues ['计次卡']
          else begin
             showmessage('计次卡健身消费价格没有设置,请设置。');
             exit;
             end;
          //danjia:=ADODataSet1.FieldValues ['计次卡'];
          danjia:=danjia*zhekou;
          if danjia=0 then
             begin
             showmessage('计次卡健身消费价格设置不合理,请重新设置。');
             exit;
             end;
          Label9.Caption :='增加可用次数:' + floattostr(Round(strtofloat(edit1.Text )/danjia)) +'次    ';
          if  ADOQuery1.FieldValues['剩余次数']=NULL then
            chongzhicishu:=0
          else chongzhicishu:= ADOQuery1.FieldValues['剩余次数'];
          Label10.caption:='剩余次数' + floattostr(chongzhicishu+ Round(strtofloat(edit1.Text )/danjia)) +'次    ';
          end   
          else showmessage('该会员数据有误');
       end; 
  end
else bitbtn1.Enabled :=false;
end
else bitbtn1.Enabled :=false; }
end;

procedure Tchongzhifrm.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not(key in ['0'..'9','.']) then
  key:=chr(0);
if (Pos('.', Edit1.Text) > 0) and (key='.') then
   key:=chr(0);
end;

procedure Tchongzhifrm.FormShow(Sender: TObject);
begin
ADODataSet1.Open ;
Edit1.Text :='';
end;

procedure Tchongzhifrm.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
mainform.DataSource2.Enabled :=true;
end;

procedure Tchongzhifrm.DBEdit1Change(Sender: TObject);
begin
if dbedit1.Text <>'' then
  if edit1.Text <>'' then bitbtn1.Enabled := true
else bitbtn1.Enabled :=false;
end;

procedure Tchongzhifrm.ComboBox1KeyPress(Sender: TObject; var Key: Char);
begin
if not(key in ['0'..'9','.']) then
  key:=chr(0);
if (Pos('.', Edit1.Text) > 0) and (key='.') then
   key:=chr(0);
end;

procedure Tchongzhifrm.ComboBox1Change(Sender: TObject);
begin
if dbedit1.Text <>'' then begin
if (edit1.Text <>'') and (ComboBox1.Text <>'') then
  begin
     bitbtn1.Enabled := true;
  end
else bitbtn1.Enabled :=false;
end
else bitbtn1.Enabled :=false;
end;

end.

⌨️ 快捷键说明

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