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

📄 lendunit.~pas

📁 图书馆管理系统,非常有用,希望给你带来帮助
💻 ~PAS
字号:
unit LendUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, Buttons;

type
  TLendForm = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    GroupBox1: TGroupBox;
    Label2: TLabel;
    Edit2: TEdit;
    BitBtn1: TBitBtn;
    ListView1: TListView;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    procedure Edit1Exit(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
    procedure WMNCpaint(var Msg:TWMNCPaint); message WM_NCPAINT;
  public
    { Public declarations }
    cannum,havenum,tempnum:byte;
  end;

var
  LendForm: TLendForm;

implementation
uses DMUnit,Share;

{$R *.dfm}

{ TLendForm }

procedure TLendForm.WMNCpaint(var Msg: TWMNCPaint);
begin
  inherited;
  Draw(LendForm);
end;

procedure TLendForm.Edit1Exit(Sender: TObject);
begin
  with DM do
  begin
    LendQuery.SQL.Text:='select t.book_num from read_type as t inner join '+
                        'read_info as i on t.type_sno=i.read_type where i.read_id=:in0';
    LendQuery.Parameters[0].Value:=Trim(edit1.Text);
    LendQuery.Prepared;
    LendQuery.Open;
    if LendQuery.RecordCount=1 then
    begin
      cannum:=LendQuery.fields[0].AsInteger;
      LendQuery.SQL.Text:='select count(read_id) from lend_book where read_id=:in0';
      LendQuery.Parameters[0].Value:=Trim(Edit1.Text);
      LendQuery.Prepared;
      LendQuery.Open;
      havenum:=LendQuery.Fields[0].AsInteger;
      tempnum:=havenum;
      LendQuery.Close;
    end;
    LendQuery.Close;
  end;
  listview1.Items.Clear;
end;

procedure TLendForm.BitBtn1Click(Sender: TObject);
var
  bookname:string;
begin
  if edit1.Text='' then
  begin
    showmessage('没有输入读者编号!');
    edit1.SetFocus;
    exit;
  end;
  if edit2.Text='' then
  begin
    showmessage('没有输入ISBN编号!');
    exit;
  end;
  if tempnum=cannum then
  begin
    showmessage('该读者已经借满,不可再借!');
    exit;
  end;
  if not DM.ValReadId(Trim(edit1.Text)) then
  begin
    showmessage('不存在该读者编号!');
    edit1.SetFocus;
    exit;
  end;
  bookname:=DM.ValBook(Trim(edit2.Text));
  if bookname='' then
  begin
    showmessage('不存在该书籍!');
    exit;
  end;
  with listview1.Items.Add do
  begin
    caption:=Trim(edit1.Text);
    subitems.Add(bookname);
  end;
  inc(tempnum);
end;

procedure TLendForm.BitBtn2Click(Sender: TObject);
var
  i:byte;
begin
  if listview1.Items.Count=0 then
  begin
    showmessage('没有输入要借的书籍!');
    exit;
  end;
  with DM do
  begin
    ADOconn.BeginTrans;
    try
      LendQuery.SQL.Text:='insert into lend_book(read_id,book_isbn) values(:in0,:in1)';
      for i:=0 to listview1.Items.Count-1  do
      begin
        LendQuery.Parameters[0].Value:=Trim(edit1.Text);
        LendQuery.Parameters[1].Value:=Trim(edit2.Text);
        LendQuery.Prepared;
        LendQuery.ExecSQL;
      end;
      LendQuery.SQL.Text:='update book_stock set lendout="y" where book_isbn=:in0';
      for i:=0 to listview1.Items.Count-1 do
      begin
        Lendquery.Parameters[0].Value:=Trim(Edit2.Text);
        LendQuery.Prepared;
        LendQuery.ExecSQL;
      end;
      LendQuery.SQL.Text:='insert into lend_log(read_id,book_isbn,lend_date) '+
                          ' values(:in0,:in1,:in2)';
      for i:=0 to listview1.Items.Count-1 do
      begin
        LendQuery.Parameters[0].Value:=Trim(Edit1.Text);
        LendQuery.Parameters[1].Value:=Trim(Edit2.Text);
        LendQuery.Parameters[2].Value:=now;
        LendQuery.Prepared;
        LendQuery.ExecSQL;
      end;
      ADOconn.CommitTrans;
    except
      ADOConn.RollbackTrans;
      showmessage('在借书时发生意外!事务回滚');
    end;
    LendQuery.Close;
  end;
  edit1.Clear;
  edit2.Clear;
  listview1.Items.Clear;
  edit1.SetFocus;
end;

procedure TLendForm.BitBtn3Click(Sender: TObject);
begin
  close; 
end;

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

end.

⌨️ 快捷键说明

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