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

📄 tsjh_form.pas

📁 delphi+sql2000实现的图书管理系统软件
💻 PAS
字号:
unit TSJH_Form;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, TFlatButtonUnit, ExtCtrls, ComCtrls, StdCtrls, TFlatEditUnit,
  TFlatSpeedButtonUnit, TFlatRadioButtonUnit,DB,ADODB,DateUtils,
  TFlatComboBoxUnit;

type
  TTSJH_F = class(TForm)
    Close_Btn: TButton;
    Panel1: TPanel;
    Label1: TLabel;
    JS_FRBtn: TFlatRadioButton;
    HS_FRBtn: TFlatRadioButton;
    Panel2: TPanel;
    Panel3: TPanel;
    Label2: TLabel;
    KS_FBtn: TFlatSpeedButton;
    TSBH_FE: TFlatEdit;
    JSHS_PC: TPageControl;
    JS_TS: TTabSheet;
    Bevel1: TBevel;
    Label4: TLabel;
    Bevel2: TBevel;
    Label13: TLabel;
    JSJSZBH_FE: TFlatEdit;
    JSQD_FBtn: TFlatButton;
    Panel4: TPanel;
    Label3: TLabel;
    Label5: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label11: TLabel;
    JSSM_FE: TFlatEdit;
    JSZZ_FE: TFlatEdit;
    JSCBRQ_FE: TFlatEdit;
    JSCBS_FE: TFlatEdit;
    JSSYSL_FE: TFlatEdit;
    JSSL_FE: TFlatEdit;
    HS_TS: TTabSheet;
    Panel5: TPanel;
    Label6: TLabel;
    Label12: TLabel;
    Label15: TLabel;
    Label17: TLabel;
    Bevel3: TBevel;
    Label14: TLabel;
    Label16: TLabel;
    Bevel4: TBevel;
    Label18: TLabel;
    Lable1: TLabel;
    Label7: TLabel;
    HSSM_FE: TFlatEdit;
    HSZZ_FE: TFlatEdit;
    HSCBS_FE: TFlatEdit;
    HSDJ_FE: TFlatEdit;
    HSXM_FE: TFlatEdit;
    HSSL_FE: TFlatEdit;
    HSCGTS_FE: TFlatEdit;
    HSFJ_FE: TFlatEdit;
    HSBH_FE: TFlatEdit;
    HSQD_FBtn: TFlatButton;
    ClassEdit: TFlatEdit;
    StaticText3: TStaticText;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormDestroy(Sender: TObject);
    procedure JS_FRBtnClick(Sender: TObject);
    procedure HS_FRBtnClick(Sender: TObject);
    procedure Close_BtnClick(Sender: TObject);
    procedure KS_FBtnClick(Sender: TObject);
    procedure JSQD_FBtnClick(Sender: TObject);
    procedure HSQD_FBtnClick(Sender: TObject);
    procedure TSBH_FEChange(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
     procedure ViewBook(Code : string);
  end;

var
  TSJH_F: TTSJH_F;

implementation

uses Share_Unit,  uShowBookF, HSS_Form;

{$R *.dfm}

var
  JYXX_T:TADOTable;

procedure TTSJH_F.FormCreate(Sender: TObject);
begin
   JYXX_T:=TADOTable.Create(nil);
   JYXX_T.Connection:=Connect;
   JYXX_T.TableName:='借阅信息';
   JS_TS.TabVisible:=False;
   HS_TS.TabVisible:=False;
   JS_FRBtn.Checked:=True;
   JYXX_T.Open;
end;

procedure TTSJH_F.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   Action:=caFree;
end;

procedure TTSJH_F.FormDestroy(Sender: TObject);
begin
   FreeAndNil(JYXX_T);
   TSJH_F:=nil;
end;

procedure TTSJH_F.JS_FRBtnClick(Sender: TObject);
begin
   Label2.Caption:='图书编号:';
   TSBH_FE.Text:='';
   TSBH_FE.MaxLength:=10;
   JSHS_PC.ActivePage:=JS_TS;

   TSBH_FE.Text:='';
   JSSM_FE.Text:='';
   JSZZ_FE.Text:='';
   JSCBRQ_FE.Text:='';
   JSCBS_FE.Text:='';
   JSSYSL_FE.Text:='';
   JSJSZBH_FE.Text:='';
   JSSL_FE.Text:='';
end;

procedure TTSJH_F.HS_FRBtnClick(Sender: TObject);
begin
   Label2.Caption:='借书证号:';
   TSBH_FE.MaxLength:=10;
   JSHS_PC.ActivePage:=HS_TS;
   TSBH_FE.Text:='';

   HSBH_FE.Text:='';
   HSSM_FE.Text:='';
   HSZZ_FE.Text:='';
   HSCBS_FE.Text:='';
   HSDJ_FE.Text:='';
   HSSM_FE.Text:='';
   HSSL_FE.Text:='';
   HSCGTS_FE.Text:='';
   HSFJ_FE.Text:='';
end;

procedure TTSJH_F.Close_BtnClick(Sender: TObject);
begin
   close;
end;

procedure TTSJH_F.KS_FBtnClick(Sender: TObject);
var
   YHDA_Q:TADOQuery;
   p:TPoint;
begin
   if JS_FRBtn.Checked then           //借书
      begin
         P.x := KS_FBtn.Left;
         P.y := KS_FBtn.Top +KS_FBtn.Height;
         ShowBookF.Top := Panel3.ClientToScreen(P).y;
         ShowBookF.Left := Panel3.ClientToScreen(P).x;
         ShowBookF.Show(TSBH_FE);
      end
   else begin                      //还书
      YHDA_Q:=TADOQuery.Create(nil);
      YHDA_Q.Connection:=Connect;
      YHDA_Q.SQL.Add('Select * From 用户 Where 用户帐号=:用户帐号');
      YHDA_Q.Parameters.ParamByName('用户帐号').Value :=TSBH_FE.Text;  //用户ID号
      YHDA_Q.Open;
      BH:=TSBH_FE.Text;
      if YHDA_Q.Bof and YHDA_Q.Eof then
         begin
          MessageBox(handle,'输入的借书证号有错!','错误',MB_ok or MB_ICONERROR);
          FreeAndNil(YHDA_Q);
          TSBH_FE.SetFocus;
          exit;
         end
         else begin
           P.x := KS_FBtn.Left;
          P.y := KS_FBtn.Top +KS_FBtn.Height;
          with THSS_F.Create(nil) do
            try
              Top := Panel3.ClientToScreen(P).y;
              Left:= Panel3.ClientToScreen(P).x;
              ShowModal;
            finally
              Free;
            end;
        end;
   end;

end;
//******************************************************************************

procedure TTSJH_F.JSQD_FBtnClick(Sender: TObject);             //借书确定
var
   MaxNum,OldNum,MaxDate,SYSL:integer;
   JYXX_Q,YHDA_Q,YH_Q:TADOQuery;
   TSJBXX_T:TADOTable;
begin
   JYXX_Q:=TADOQuery.Create(nil);            //查看这本书用户是否已经借了但还没有还
   JYXX_Q.Connection:=Connect;
   JYXX_Q.SQL.Add('Select * From 借阅信息 Where 用户帐号=:用户帐号 and 图书编号=:图书编号 and 还书日期 is Null');
   JYXX_Q.Parameters.ParamByName('用户帐号').Value:=JSJSZBH_FE.Text;
   JYXX_Q.Parameters.ParamByName('图书编号').Value:=TSBH_FE.Text;
   JYXX_Q.Open;
   if JYXX_Q.RecordCount>0 then
     begin
        MessageBox(handle,'这本书你已经借而还没有还,不能重复借!','错误',MB_ok or MB_ICONERROR);
        FreeAndNil(JYXX_Q);
        TSBH_FE.SetFocus;
        exit;
     end;

  if JSSL_FE.Text='' then                //检查借书数量是否正确
     begin
        MessageBox(handle,'借书数量不能为空','错误',MB_ok or MB_ICONERROR);
        exit;
     end
  else
     try
        StrToInt(JSSL_FE.Text);
     except
        MessageBox(handle,'借书数量必须为整数','错误',MB_ok or MB_ICONERROR);
        exit;
     end;

  YH_Q:=TADOQuery.Create(nil);            //检查借书证号是否正确
  YH_Q.Connection:=Connect;
  YH_Q.SQL.Add('Select 1 From 用户 Where 用户帐号=:用户帐号');
  YH_Q.Parameters.ParamByName('用户帐号').Value:=JSJSZBH_FE.Text;
  YH_Q.Open;
  if YH_Q.RecordCount=0 then
    begin
      MessageBox(handle,'你输入的借书证号不存在,请检查!','错误',MB_ok or MB_ICONERROR);
      FreeAndNil(YH_Q);
      exit;
    end;
  FreeAndNil(YH_Q);

  JYXX_Q.Close;                                      //取得已经借了的且没有还书的数目
  JYXX_Q.SQL.Clear;
  JYXX_Q.SQL.Add('Select * From 借阅信息 Where 用户帐号=:用户帐号 and 还书日期 is Null');
  JYXX_Q.Parameters.ParamByName('用户帐号').Value:=JSJSZBH_FE.Text;
  JYXX_Q.Open;
  OldNum:=0;
  if not(JYXX_Q.Bof and JYXX_Q.Eof) then
    begin
      while not JYXX_Q.Eof do
        begin
          OldNum:=OldNum+JYXX_Q.FieldValues['数量'];
          JYXX_Q.Next;
        end;
    end;

  YHDA_Q:=TADOQuery.Create(nil);                //取得此用户最多能借多少书
  YHDA_Q.Connection:=Connect;
  YHDA_Q.SQL.Add('Select 最大天数,最大数量 From 组用户 A,用户 B Where A.组号=B.组号 and B.用户帐号=:用户帐号');
  YHDA_Q.Parameters.ParamByName('用户帐号').Value:=JSJSZBH_FE.Text;
  YHDA_Q.Open;
  MaxDate:=YHDA_Q.FieldValues['最大天数'];
  MaxNum:=YHDA_Q.FieldValues['最大数量'];
  if StrToInt(JSSL_FE.Text)>(MaxNum-OldNum) then
    begin
      MessageBox(handle,pchar(Format('您最多还能借 %d 本书!',[MaxNum-OldNum])),'错误',MB_ok or MB_ICONERROR);
      FreeAndNil(JYXX_Q);
      FreeAndNil(YHDA_Q);
      JSSL_FE.SetFocus;
      exit;
    end;

  TSJBXX_T:=TADOTable.Create(nil);                //修改些图书的剩余数量
  TSJBXX_T.Connection:=Connect;
  TSJBXX_T.TableName:='图书信息';
  TSJBXX_T.Open;
  TSJBXX_T.Locate('图书编号',TSBH_FE.Text,[]);
  SYSL:=StrToInt(JSSYSL_FE.Text)-StrToInt(JSSL_FE.Text);
  TSJBXX_T.Edit;
  TSJBXX_T.FieldByName('剩下数量').AsInteger:=SYSL;
  TSJBXX_T.Post;

  JYXX_T.Append;                                        // 添加借书记录
  JYXX_T.FieldByName('用户帐号').AsString:=JSJSZBH_FE.Text;
  JYXX_T.FieldByName('图书编号').AsString:=TSBH_FE.Text;
  JYXX_T.FieldByName('借书日期').AsDateTime:=Date;  //今天
  JYXX_T.FieldByName('到期日期').AsDateTime:=IncDay(Date,MaxDate);//到期时间
  JYXX_T.FieldByName('数量').AsInteger:=StrToInt(JSSL_FE.Text);
  JYXX_T.Post;

  TSBH_FE.Text:='';
  JSSM_FE.Text:='';
  JSZZ_FE.Text:='';
  JSCBRQ_FE.Text:='';
  JSCBS_FE.Text:='';
  JSSYSL_FE.Text:='';
  JSJSZBH_FE.Text:='';
  JSSL_FE.Text:='';
  ClassEdit.Text:='';

  MessageBox(handle,'借书成功','成功',MB_ok or MB_ICONINFORMATION);
  FreeAndNil(JYXX_Q);
  FreeAndNil(YHDA_Q);
  FreeAndNil(TSJBXX_T);
end;
//***********************************************************************************

procedure TTSJH_F.HSQD_FBtnClick(Sender: TObject);              //还书确定
var
  TSJBXX_T:TADOTable;
  SL:integer;
begin
  JYXX_T.Locate('用户帐号;图书编号;还书日期',VarArrayOf([TSBH_FE.Text,HSBH_FE.Text,null]),[]);//修改借阅信息表
  JYXX_T.Edit;
  JYXX_T.FieldByName('还书日期').AsDateTime:=now;  //添加还书时间
  JYXX_T.Post;

  TSJBXX_T:=TADOTable.Create(nil);               //修改图书基本表中的此图书的剩余数量
  TSJBXX_T.Connection:=Connect;
  TSJBXX_T.TableName:='图书信息';
  TSJBXX_T.Open;
  TSJBXX_T.Locate('图书编号',HSBH_FE.Text,[]);
  SL:=StrToInt(TSJBXX_T.FieldValues['剩下数量']);
  SL:=SL+StrToInt(HSSL_FE.Text);
  TSJBXX_T.Edit;
  TSJBXX_T.FieldByName('剩下数量').AsInteger:=SL;
  TSJBXX_T.Post;
  TSJBXX_T.Close;
  FreeAndNil(TSJBXX_T);

  HSBH_FE.Text:='';
  HSSM_FE.Text:='';
  HSZZ_FE.Text:='';
  HSCBS_FE.Text:='';
  HSDJ_FE.Text:='';
  HSXM_FE.Text:='';
  HSSL_FE.Text:='';
  HSCGTS_FE.Text:='';
  HSFJ_FE.Text:='';

  MessageBox(handle,'还书成功','成功',MB_ok or MB_ICONINFORMATION);

end;

procedure TTSJH_F.ViewBook(Code : string);
var
   XGTS_Q : TADOQuery;
begin
   XGTS_Q := TADOQuery.Create(nil);
   XGTS_Q.Connection:=Connect;
   XGTS_Q.SQL.Add('select 图书信息.* ,类名 from 图书信息,图书类别 where 图书编号=:图书编号 and 图书类别.类别=图书信息.类别');
   XGTS_Q.Parameters.ParamByName('图书编号').Value := Code;
   XGTS_Q.Open;
   if XGTS_Q.RecordCount = 0 then
     MessageDlg('没有此书的信息存在',mtError,[mbok],0);
   JSSM_FE.Text := XGTS_Q.FieldValues['书名'];
   ClassEdit.Text :=XGTS_Q.FieldValues['类名'];
   JSZZ_FE.Text := XGTS_Q.FieldByName('作者').AsString;
   JSCBS_FE.Text := XGTS_Q.FieldByName('出版社').AsString;
   JSCBRQ_FE.Text := XGTS_Q.FieldByName('出版日期').AsString;
   JSSYSL_FE.Text := XGTS_Q.FieldByName('剩下数量').AsString;
   XGTS_Q.Close;
   FreeAndNil(XGTS_Q);
end;
//******************************************************************************

procedure TTSJH_F.TSBH_FEChange(Sender: TObject);
begin
   if JS_FRBtn.Checked then           //借书
     if length(TSBH_FE.Text)= BHLength  then
       begin
         try
           ViewBook(TSBH_FE.Text);
         except
           MessageDlg('数据操作出错',mtError,[mbok],0);
         end;
       end;
end;


end.

⌨️ 快捷键说明

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