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

📄 borrowfrm.pas

📁 基于Interbase的图书管理系统
💻 PAS
字号:
unit borrowfrm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ButtonFrm, StdCtrls, Buttons, ExtCtrls, Mask, DBCtrls, ComCtrls,childfrm,
  Menus;

type
  TBorrowForm = class(Tbuttonform)
    GroupBox1: TGroupBox;
    Splitter1: TSplitter;
    GroupBox2: TGroupBox;
    Panel1: TPanel;
    Label1: TLabel;
    Edreaderid: TEdit;
    BtBreader: TBitBtn;
    GroupBox3: TGroupBox;
    GroupBox4: TGroupBox;
    Panel2: TPanel;
    Label2: TLabel;
    Edbookid: TEdit;
    BtBbook: TBitBtn;
    GroupBox5: TGroupBox;
    GroupBox6: TGroupBox;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    LBbook: TListBox;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    GroupBox7: TGroupBox;
    Label12: TLabel;
    Edday: TEdit;
    DBE1: TDBEdit;
    DBE2: TDBEdit;
    DBE3: TDBEdit;
    DBE4: TDBEdit;
    DBE6: TDBEdit;
    DBE7: TDBEdit;
    DBE8: TDBEdit;
    DBE9: TDBEdit;
    Label13: TLabel;
    DBE5: TDBEdit;
    DBE10: TDBEdit;
    LBbookid: TListBox;
    DTPdate: TDateTimePicker;
    Label14: TLabel;
    Label22: TLabel;
    Label23: TLabel;
    procedure FormDestroy(Sender: TObject);
    procedure BtBreaderClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure EdreaderidKeyPress(Sender: TObject; var Key: Char);
    procedure BtBbookClick(Sender: TObject);
    procedure EdbookidKeyPress(Sender: TObject; var Key: Char);
    procedure LBbookidClick(Sender: TObject);
    procedure EddayKeyPress(Sender: TObject; var Key: Char);
    procedure BBtnBorrowClick(Sender: TObject);
    procedure DTPdateKeyPress(Sender: TObject; var Key: Char);
    procedure BBtnCancelClick(Sender: TObject);
    procedure EdbookidEnter(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure BBtnPrintClick(Sender: TObject);
  private
    { Private declarations }
  public
    procedure clearDBEdit;
    procedure clearEdit;
    procedure clearDBEdit1_5;
    { Public declarations }
  end;

var
  BorrowForm: TBorrowForm;
implementation
uses dmfrm, prtborrowfrm;
{$R *.dfm}
var
 templistbox:Tlistbox;
 tmpborrowlist1:Tstringlist;
procedure TBorrowForm.FormDestroy(Sender: TObject);
begin
  inherited;
  templistbox.Free;
  tmpborrowlist1.Free;
  tmpborrowlist1:=nil;
  BorrowForm:=nil;
end;

procedure TBorrowForm.clearDBEdit;
begin
  {dmbook.Qryreader.DisableControls;
  dmbook.Qrybook.DisableControls;}
  Edreaderid.Clear;
  Edbookid.Clear;
  DBE1.Clear;
  DBE2.Clear;
  DBE3.Clear;
  DBE4.Clear;
  DBE5.Clear;
  DBE6.Clear;
  DBE7.Clear;
  DBE8.Clear;
  DBE9.Clear;
  DBE10.Clear;
  LBbook.Clear;
  LBbookid.Clear;
  templistbox.Clear;
end;

procedure TBorrowForm.clearEdit;
begin
  DBE6.Clear;
  DBE7.Clear;
  DBE8.Clear;
  DBE9.Clear;
  DBE10.Clear;
  Edbookid.Clear;
  LBbookid.Clear;
  templistbox.Clear;
end;

procedure TBorrowForm.clearDBEdit1_5;
begin
 DBE6.Clear;
  DBE7.Clear;
  DBE8.Clear;
  DBE9.Clear;
  DBE10.Clear;
end;

procedure TBorrowForm.BtBreaderClick(Sender: TObject);
var
 i:integer;
 tmpstr1:string;
begin
  inherited;
clearEdit;
if Edreaderid.Text=Emptystr then
  begin
   bookInformation('请输入借书证号!');
   Edreaderid.SetFocus;
   Edreaderid.Clear;
   exit;
  end;
dmbook.readerfirst;
if not dmbook.Qryreader.Locate('reader_id',Edreaderid.Text,[]) then
   begin
    clearDBEdit;
    bookInformation('输入借书证号在数据库中不存在!');
    Edreaderid.SetFocus;
    exit;
   end;
//dmbook.Qryreader.EnableControls;
LBbook.Items.text:=dmbook.getborrowedbook(Edreaderid.Text);
tmpborrowlist1.Clear;
for i:=0 to LBbook.Items.Count-1 do
begin
  tmpstr1:=LBbook.Items.Strings[i];
  tmpstr1:=copy(tmpstr1,2,length(tmpstr1));
  tmpstr1:=copy(tmpstr1,1,pos(']',tmpstr1)-1);
  tmpborrowlist1.Add(tmpstr1);
end;
Edbookid.SetFocus;
end;


procedure TBorrowForm.FormCreate(Sender: TObject);
begin
  inherited;
 templistbox:=Tlistbox.Create(self);
 templistbox.Parent:=self;
 templistbox.Visible:=false;
 tmpborrowlist1:=tstringlist.Create;
 Edday.Text:=inttostr(childfrm.borrowbookday);
end;

procedure TBorrowForm.EdreaderidKeyPress(Sender: TObject; var Key: Char);
begin
  inherited;
if key=#13 then
 begin
  if TEdit(Sender)=Edreaderid then  BtBreaderClick(Sender);
 // if TEdit(Sender)=Edbookid then BtBbook.SetFocus;
 end
 else begin
        if not(key in ['0'..'9',#8]) then
         begin
          key:=#0;
          beep;
         end;
       end;
end;

procedure TBorrowForm.BtBbookClick(Sender: TObject);
var
 booknametemp:string;
 indexstring:integer;
begin
  inherited;
 if lbbook.Count+lbbookid.Count>=borrowbooknum then
 begin
    bookInformation('对不起!'+#13+'借书不能超过'+inttostr(borrowbooknum)+'本!');
    if lbbookid.Count<>0 then
     begin
      Edbookid.Clear;
      Edday.SetFocus;
          end
    else begin
           Edbookid.Clear;
           Edreaderid.SetFocus;
        end;
    exit;
 end;
 if Edbookid.Text=Emptystr then
  begin
   bookInformation('请输入待借书号!');
   Edbookid.SetFocus;
   Edbookid.Clear;
   exit;
  end;
  dmbook.bookfirst;
  if not dmbook.Qrybook.Locate('book_id',Edbookid.Text,[]) then
   begin
    clearDBEdit1_5;
    bookInformation('输入待借书号在数据库中不存在!');
    Edbookid.SetFocus;
    Edbookid.Clear;
  if  LBbookid.ItemIndex<>-1 then
  dmbook.Qrybook.Locate('book_id',LBbookid.Items.Strings[LBbookid.ItemIndex],[])
  else clearDBEdit1_5;
    exit;
   end
  else begin
     {  DBE6.Clear;
      DBE7.Clear;
      DBE8.Clear;
      DBE9.Clear;
      DBE10.Clear;}
// if LBbook.Items.IndexOf('['+dmbook.Qrybook['book_id']+']'+dmbook.Qrybook['book_name'])<>-1 then
if tmpborrowlist1.IndexOf(dmbook.Qrybook['book_id'])<>-1 then 
     begin
      bookInformation('你已经借了这本书,未还'+#13+'不能再借这本书,请续借吧!');
      Edbookid.SetFocus;
      Edbookid.Clear;
 if  LBbookid.ItemIndex<>-1 then
  dmbook.Qrybook.Locate('book_id',LBbookid.Items.Strings[LBbookid.ItemIndex],[])
  else clearDBEdit1_5;
      exit;
     end;
       if dmbook.Qrybook['book_reside']=0 then
        begin
         bookInformation('该书已全部借出!');
         Edbookid.SetFocus;
         Edbookid.Clear;
  if  LBbookid.ItemIndex<>-1 then
  dmbook.Qrybook.Locate('book_id',LBbookid.Items.Strings[LBbookid.ItemIndex],[])
  else clearDBEdit1_5;
        exit;
        end;
         booknametemp:=dmbook.Qrybook['book_name'];
       end;
if LBbookid.Items.IndexOf(Edbookid.Text)<>-1 then
 begin
   Edbookid.SetFocus;
   Edbookid.Clear;
    exit;
 end;
indexstring:=LBbookid.Items.Add(Edbookid.Text);
LBbookid.ItemIndex:=indexstring; 
templistbox.Items.Insert(indexstring,booknametemp);
if childfrm.checkusesdefaultday then Edday.ReadOnly:=true
 else Edday.ReadOnly:=false;
Edday.SetFocus;
end;

procedure TBorrowForm.EdbookidKeyPress(Sender: TObject; var Key: Char);
begin
  inherited;
 if key=#13 then BtBbookClick(Sender);
  if not(key in ['a'..'z','A'..'Z','0'..'9','-',#8]) then
   begin
    key:=#0;
    beep;
   end;
  if (key in ['a'..'z']) then key:=chr(ord(key)-32);
end;

procedure TBorrowForm.LBbookidClick(Sender: TObject);
begin
  inherited;
if LBbookid.ItemIndex=-1 then exit;
dmbook.bookfirst;
if not dmbook.Qrybook.Locate('BOOK_ID',LBbookid.Items.Strings[LBbookid.ItemIndex],[]) then
      begin
       bookInformation('输入待借书号在数据库中不存在!');
       LBbookid.Items.Delete(LBbookid.ItemIndex);
       exit;
      end;
      dmbook.Qrybook.EnableControls;
end;

procedure TBorrowForm.EddayKeyPress(Sender: TObject; var Key: Char);
begin
  inherited;
if key=#13 then BBtnBorrow.OnClick(Sender)
else if not(key in ['0'..'9',#8]) then
         begin
          key:=#0;
          beep;
         end;
end;

procedure TBorrowForm.BBtnBorrowClick(Sender: TObject);
var
 Aborrowid,i,Anumber,Aborrowday:integer;
 Areaderid,Abookid,Abookname:string;
 Aborrowdate:Tdatetime;
begin
  inherited;
 if LBbook.Count>4 then
  begin
    bookInformation('对不起!'+#13+'你已经借了4本书,不能再借了!');
    clearDBEdit;
    Edreaderid.SetFocus;
    exit;
  end;
 if Edreaderid.Text=Emptystr then
  begin
   bookInformation('请输入借书证号!');
   Edreaderid.SetFocus;
   exit;
  end;
  if LBbookid.Count=0 then
  begin
   bookInformation('请输入待借书号!');
   Edbookid.SetFocus;
   exit;
  end;
 if Edday.Text=Emptystr then
  begin
   bookInformation('请输入借期!');
   Edday.SetFocus;
   exit;
  end;
 dmbook.Dbasebook.StartTransaction;
 Areaderid:=Edreaderid.Text;
 Anumber:=LBbookid.Count;
 try
 Aborrowid:=dmbook.insertborrow(Areaderid,Anumber);
 Aborrowdate:=DTPdate.DateTime;
 Aborrowday:=strtoint(Edday.text);
for i:=0 to LBbookid.Count-1 do
  begin
     Abookid:=LBbookid.Items.Strings[i];
     Abookname:=templistbox.Items.Strings[i];
     dmbook.insertborrowitems(Aborrowid,Aborrowday,Abookid,Abookname,Aborrowdate);
     dmbook.insertborrowhistory(Areaderid,Abookid,Abookname,Aborrowdate,Aborrowday);
     dmbook.bookReside(Abookid,1);
     //store item proc
     //store history proc
  end;
  dmbook.Dbasebook.Commit;
except
  dmbook.Dbasebook.Rollback;
  bookError('借书入库失败!');
end;
 clearDbedit;
 Edreaderid.SetFocus;
end;

procedure TBorrowForm.DTPdateKeyPress(Sender: TObject; var Key: Char);
begin
  inherited;
if key=#13 then Edday.SetFocus;
end;

procedure TBorrowForm.BBtnCancelClick(Sender: TObject);
begin
  inherited;
  clearDBEdit;
end;

procedure TBorrowForm.EdbookidEnter(Sender: TObject);
begin
  inherited;
  if (DBE2.Text=Emptystr)OR(DBE2.Text<>Edreaderid.Text) then
 begin
   bookInformation('请先输入借书证号并确认!');
   Edreaderid.SetFocus;
   exit;
 end;
end;

procedure TBorrowForm.FormShow(Sender: TObject);
begin
  inherited;
 dmbook.closebook;
 dmbook.closereader;
 dmbook.openbook;
 dmbook.openreader;
 clearDBEdit;
end;

procedure TBorrowForm.BBtnPrintClick(Sender: TObject);
begin
  inherited;
if not assigned(prtborrowForm) then
 prtborrowForm:=TprtborrowForm.Create(Application);
try
prtborrowForm.RB3.Enabled:=false;
prtborrowForm.ShowModal;
finally
prtborrowForm.Free;
prtborrowForm:=nil;
end;
end;

end.

⌨️ 快捷键说明

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