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

📄 zhixingjf.pas

📁 一个简单的学生费用管理系统
💻 PAS
字号:
unit zhixingjf;

interface

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

type
  TForm3 = class(TForm)
    Button1: TButton;
    Button3: TButton;
    lsb_DS: TDataSource;
    lsfyb_DS: TDataSource;
    Label2: TLabel;
    ComboBox1: TComboBox;
    fyb_DS: TDataSource;
    fyb_Q: TADOQuery;
    lsb_T: TADOTable;
    djb_T: TADOTable;
    sum_Q: TADOQuery;
    sum_DS: TDataSource;
    CheckBox1: TCheckBox;
    GroupBox1: TGroupBox;
    DBEdit1: TDBEdit;
    Label3: TLabel;
    DBEdit2: TDBEdit;
    Label4: TLabel;
    Edit1: TEdit;
    Label1: TLabel;
    djmxb_T: TADOTable;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    procedure Button3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure lsb_TAfterScroll(DataSet: TDataSet);
    procedure Button1Click(Sender: TObject);
    procedure init;
    procedure refresh_lsb;
    procedure DBGrid1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form3: TForm3;

implementation

uses DM, jiaofei, Share, SJ;

{$R *.dfm}

procedure TForm3.init;
var
  bool:boolean;
  i:integer;
begin
  djb_T.Open;
  djmxb_T.Open;
  lsb_T.Open;
  lsb_T.Filtered:=false;
  lsb_T.Last;
  while not lsb_T.bof do
    lsb_T.Delete;
  combobox1.Items.Clear;
  combobox1.Items.Add('累计');
  fyb_Q.Active:=false;
  fyb_Q.SQL.Clear;
  fyb_Q.SQL.Add('select fyh,xh,xm,fym,nf,yj,sj,qj from fy_b where xh='+QuotedStr(XH)+' order by fyh');
  fyb_Q.Active:=true;
  NF:=fyb_Q.FieldValues['nf'];
  with fyb_Q do
    begin
      first;
      while (not eof) do
        begin
          if FieldValues['qj']<>0 then
            begin
              bool:=false;
              for i:=0 to combobox1.Items.Count-1 do
                if FieldValues['nf']=combobox1.Items.Strings[i] then
                  bool:=true;
              if not bool then
                combobox1.Items.Add(FieldValues['nf']);
                lsb_T.append;
                lsb_T.FieldValues['xh']:=XH;
                lsb_T.FieldValues['nf']:=FieldValues['nf'];
                lsb_T.FieldValues['xm']:=XM;
                lsb_T.FieldValues['fyh']:=FieldValues['fyh'];
                lsb_T.FieldValues['fym']:=FieldValues['fym'];
                lsb_T.FieldValues['yj']:=FieldValues['qj'];
                lsb_T.FieldValues['sj']:=FieldValues['qj'];
                lsb_T.FieldValues['qj']:=0;
                lsb_T.Post;
            end;
          next;
        end;
      end;

    sum_Q.Active:=False;
    sum_Q.Active:=true;
    combobox1.ItemIndex:=0;
    if dbedit1.Text<>'' then
      Edit1.Text:=inttostr(strtoint(dbedit2.Text)-strtoint(dbedit1.Text))
    else
      begin
        button1.Enabled:=false;
        dbedit1.Text:=inttostr(0);
        dbedit2.Text:=inttostr(0);
        edit1.Text:=inttostr(0);
      end;
    QJ:=edit1.Text;
end;

procedure TForm3.Button3Click(Sender: TObject);
begin
  close;
end;

procedure TForm3.FormCreate(Sender: TObject);
begin
  init;
end;

procedure TForm3.ComboBox1Change(Sender: TObject);
var
   sql:string;
   yjje,sjje,qfje:double;
begin
   checkbox1.Checked:=false;
   lsb_T.Filtered:=false;
   if combobox1.ItemIndex=0 then
      sql:=''
   else
      sql:='nf='+QuotedStr(combobox1.text);
   lsb_T.Filter:=sql;
   lsb_T.Filtered:=true;
   yjje:=0;
   sjje:=0;
   qfje:=0;
   lsb_T.First;
   while not lsb_T.Eof do
     begin
       lsb_T.edit;
       lsb_T.FieldValues['sj']:=lsb_T.FieldValues['yj'];
       lsb_T.FieldValues['qj']:=lsb_T.FieldValues['yj'];
       lsb_T.Post;
       yjje:=yjje+lsb_T.FieldValues['yj'];
       sjje:=sjje+lsb_T.FieldValues['sj'];
       qfje:=qfje+lsb_T.FieldValues['qj'];
       lsb_T.Next;
     end;
end;

procedure TForm3.CheckBox1Click(Sender: TObject);
begin
  if CheckBox1.Checked then
    begin
      dbgrid1.Columns[4].ReadOnly:=false;
      dbgrid1.SetFocus;
    end
  else
    dbgrid1.Columns[4].ReadOnly:=true;
end;

procedure TForm3.refresh_lsb;
begin
   if lsb_t.FieldValues['sj']>lsb_t.FieldValues['yj'] then
     begin
       showmessage('实交金额应该小于应交金额!');
       button1.Enabled:=false;
     end
   else
     begin
       lsb_T.Post;
       sum_Q.Requery;
       lsb_T.Edit;
       Edit1.Text:=inttostr(strtoint(dbedit2.Text)-strtoint(dbedit1.Text));
       lsb_T.FieldValues['qj']:=lsb_T.FieldValues['yj']-lsb_T.FieldValues['sj'];
       lsb_T.Post;
       QJ:=edit1.Text;
       button1.Enabled:=true;
     end
end;

procedure TForm3.lsb_TAfterScroll(DataSet: TDataSet);
begin
  lsb_T.Edit;
end;

procedure TForm3.Button1Click(Sender: TObject);
begin
   xdjh:=djb_T.RecordCount+1;
   lsb_T.First;
   while not lsb_T.eof do
     begin
       fyb_Q.Close;
       fyb_Q.SQL.Clear;
       fyb_Q.SQL.Add('select * from fy_b where xh='+quotedstr(lsb_T.FieldValues['xh'])+'and fyh='+quotedstr(lsb_T.FieldValues['fyh'])+'and nf='+quotedstr(lsb_T.FieldValues['nf'])) ;
       fyb_Q.Open;
       if fyb_Q.RecordCount>0 then
         begin
           fyb_Q.Edit;
           fyb_Q.FieldValues['sj']:=inttostr(strtoint(fyb_Q.FieldValues['sj'])+strtoint(lsb_T.FieldValues['sj']));
           fyb_Q.FieldValues['qj']:=inttostr(strtoint(fyb_Q.FieldValues['qj'])-strtoint(lsb_T.FieldValues['sj']));
           fyb_Q.Post;
         end
       else
         begin
           fyb_Q.Append;
           fyb_Q.FieldValues['xh']:=lsb_T.FieldValues['xh'];
           fyb_Q.FieldValues['xm']:=lsb_T.FieldValues['xm'];
           fyb_Q.FieldValues['fym']:=lsb_T.FieldValues['fym'];
           fyb_Q.FieldValues['fyh']:=lsb_T.FieldValues['fyh'];
           fyb_Q.FieldValues['nf']:=lsb_T.FieldValues['nf'];
           fyb_Q.FieldValues['yj']:=lsb_T.FieldValues['yj'];
           fyb_Q.FieldValues['sj']:=lsb_T.FieldValues['sj'];
           fyb_Q.FieldValues['qj']:=lsb_T.FieldValues['qj'];
           fyb_Q.Post;
         end;
       with cxjf.student_T do
         begin
           Edit;
           FieldValues['sj']:=inttostr(strtoint(FieldValues['sj'])+strtoint(lsb_T.FieldValues['sj']));
           FieldValues['qj']:=inttostr(strtoint(FieldValues['qj'])-strtoint(lsb_T.FieldValues['sj']));
           post;
         end;
       djmxb_T.Append;
       djmxb_T.FieldValues['djh']:=xdjh;                                       //写入到单据明细表
       djmxb_T.FieldValues['xh']:=lsb_T.FieldValues['xh'];
       djmxb_T.FieldValues['fyh']:=lsb_T.FieldValues['fyh'];
       djmxb_T.FieldValues['nf']:=lsb_T.FieldValues['nf'];
       djmxb_T.FieldValues['fym']:=lsb_T.FieldValues['fym'];
       djmxb_T.FieldValues['sj']:=lsb_T.FieldValues['sj'];
       djmxb_T.Post;

      lsb_T.Next;
    end;

   djb_T.Append;                                  //写入到单据表
   djb_T.FieldValues['djh']:=xdjh;
   djb_T.FieldValues['sfrh']:=sfrh;             //全局变量
   djb_T.FieldValues['xh']:=lsb_T.FieldValues['xh'];
   djb_T.FieldValues['sfrq']:=date;
   djb_T.FieldValues['ss']:=sum_Q.FieldValues['sj'];
   djb_T.FieldValues['zf']:=false;
   djb_T.Post;
   with TSJ_F.Create(nil) do
     try
       quickrep1.preview;
     finally
       free;
     end;
   init;
end;

procedure TForm3.DBGrid1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
    if key=vk_Return then
    refresh_lsb;
end;

end.

⌨️ 快捷键说明

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