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

📄 borrowbooks.pas

📁 图书管理系统DELPHI版本
💻 PAS
字号:
unit borrowbooks;

interface

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

type
  Tborrowfrm = class(TForm)
    BitBtn2: TBitBtn;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    GroupBox1: TGroupBox;
    Label1: TLabel;
    ListView1: TListView;
    GroupBox3: TGroupBox;
    ListView2: TListView;
    Label2: TLabel;
    Bevel1: TBevel;
    BitBtn3: TBitBtn;
    Bevel2: TBevel;
    BitBtn1: TBitBtn;
    TabSheet3: TTabSheet;
    Panel3: TPanel;
    R1: TRadioButton;
    R2: TRadioButton;
    valuebox: TEdit;
    Label4: TLabel;
    BitBtn4: TBitBtn;
    Bevel3: TBevel;
    ListView3: TListView;
    BitBtn5: TBitBtn;
    Label3: TLabel;
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
    procedure BitBtn5Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure TabSheet2Show(Sender: TObject);
    procedure TabSheet3Show(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
  procedure addbookinfo(var q:Tquery;var v:Tlistview;flg:integer);
  procedure listnewbooks;//新书推荐
  procedure listtopbooks;//借阅排行榜
  procedure borrowbook(b_no:string);// 借书
  procedure borrowproc(var v:Tlistview);//借书确认
    { Private declarations }
  public
    { Public declarations }
  end;

var
  borrowfrm: Tborrowfrm;

implementation
   uses global,login,main,regulation,exbookinfo;
{$R *.dfm}

procedure Tborrowfrm.addbookinfo(var q:Tquery;var v:Tlistview;flg:integer);
begin
q.First ;
while not q.Eof do
 begin
 with v.Items.Add do
   begin
   caption:=q.fieldbyname('图书编号').AsString ;
   subitems.Add(q.fieldbyname('书名').AsString);
   subitems.Add(q.fieldbyname('作者').AsString);
   subitems.Add(q.fieldbyname('出版社').AsString);
   if flg=1 then subitems.Add(q.fieldbyname('借阅次数').AsString)
   else subitems.Add(q.fieldbyname('类别').AsString);
   if isborrowed(caption) then subitems.Add('是') else subitems.Add('否');
   end;
  q.Next ;
 end;
end;
//------新入库新书推荐-------//
procedure Tborrowfrm.listnewbooks ;
var q:tquery;
begin
   q:=tquery.Create(nil);
   q.DatabaseName :=dbname ;
   q.SQL.Add('select * from book_info where 入库时间>=:mintime and 入库时间<=:maxtime');
   q.ParamByName('mintime').AsDate :=date-p_betdays;
   q.ParamByName('maxtime').AsDate :=date;
   q.Open ;
   addbookinfo(q,listview1,0);
   label1.Caption :='共'+inttostr(listview1.Items.Count)+'本';
   q.Close ;
   q.Free ;
end;

//---------借阅排行榜----------//
procedure tborrowfrm.listtopbooks ;
var q:tquery;
begin
  q:=tquery.Create(nil);
  q.DatabaseName :=dbname ;
  q.SQL.Add('select * from book_info order by 借阅次数 DESC');
  q.Open;
  addbookinfo(q,listview2,1);
  label2.Caption :='共'+inttostr(listview2.Items.Count)+'本';
  q.Close;
  q.Free ;
end;

//--------借书--------//
procedure tborrowfrm.borrowbook(b_no:string);
var q:tquery;
begin
   q:=tquery.Create(nil);
   q.DatabaseName :=dbname ;
   q.SQL.Add('insert into borrow_info(图书编号,学生证号,借出时间)'+
   ' values(:book_no,:stud_no,:borrow_date)');
   q.ParamByName('book_no').AsString :=b_no;
   q.ParamByName('stud_no').AsString :=userpwd ;
   q.ParamByName('borrow_date').AsDate :=date;
   q.ExecSQL ;
   q.Close ;
   q.SQL.Clear ;//更新借阅次数
   q.SQL.Add('update book_info set 借阅次数=借阅次数+1 where 图书编号=:book_no');
   q.ParamByName('book_no').AsString :=b_no;
   q.ExecSQL ;
   q.Close;
   q.Free ;
   mainfrm.listbookinfo ;
end;


//--------借书确认-----------//
procedure Tborrowfrm.borrowproc(var v:Tlistview);
var ch:integer;
    book_no,b_out:string;
begin
if v.Items.Count=0 then exit;
if v.Selected=nil then
  begin
  messagedlg('您要借阅哪本图书?',mtinformation,[mbYes],0);
  exit;
  end;
book_no:=v.Selected.Caption;
b_out:=v.Selected.SubItems[4];
if b_out='是' then
  begin
  messagedlg('这本图书已经借出!',mtinformation,[mbYes],0);
  exit;
  end;
if exbook_num=0 then
  if mainfrm.query1.RecordCount<P_books then
    begin
    if messagedlg('确认借这本图书吗?',mtinformation,[mbYes,mbNo],0)=mrNo then exit;
    borrowbook(book_no);
    end
  else
    begin
    messagedlg('您的借书额已满,不能再借!',mtinformation,[mbYes],0);
    exit;
    end;

if exbook_num>0 then
  begin
  ch:=messagedlg('您有'+inttostr(exbook_num)+'本书超时,请先还书,否则不能继续借书!'+
  chr(13)+chr(13)+chr(10)+'现在就还书吗?',mtinformation,[mbYes,mbNo],0);
  if ch=mrNo then  exit
  else extimebookfrm.ShowModal ;
  if exbook_num=0 then
     begin
     if messagedlg('确认借这本图书吗?',mtinformation,[mbYes,mbNo],0)=mrNo then exit;
     borrowbook(book_no);
     end
  else
     begin
     messagedlg('您还不能借阅这本图书,请先还书!',mtinformation,[mbYes],0);
     exit;
     end;
  end;
messagedlg('成功借阅!',mtinformation,[mbYes],0);
v.Selected.SubItems[4]:='是';
end;


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

procedure Tborrowfrm.BitBtn4Click(Sender: TObject);
var q:tquery;
begin
q:=tquery.Create(nil);
q.DatabaseName :=dbname ;
if valuebox.Text='' then
  q.SQL.Add('select * from book_info')
else
begin
  if r1.Checked then
  begin
  q.SQL.Add('select * from book_info where 图书编号=:b_no');
  q.ParamByName('b_no').AsString :=valuebox.Text ;
  end;
  if r2.Checked then
  begin
  q.SQL.Add('select * from book_info where 书名=:b_name');
  q.ParamByName('b_name').AsString :=valuebox.Text ;
  end;
end;
q.Open ;
listview3.Items.Clear ;
addbookinfo(q,listview3,0);
label3.Caption :='共'+inttostr(listview3.Items.Count)+'本';
q.Close;
q.Free ;
end;

procedure Tborrowfrm.BitBtn5Click(Sender: TObject);
begin
borrowproc(listview3);
end;

procedure Tborrowfrm.BitBtn3Click(Sender: TObject);
begin
borrowproc(listview2);
end;

procedure Tborrowfrm.BitBtn1Click(Sender: TObject);
begin
borrowproc(listview1);
end;

procedure Tborrowfrm.TabSheet2Show(Sender: TObject);
begin
listview2.Items.Clear ;
listtopbooks;//借阅排行榜
end;

procedure Tborrowfrm.TabSheet3Show(Sender: TObject);
begin
listview3.Items.Clear ;
label3.Caption :='共0本';
end;

procedure Tborrowfrm.FormShow(Sender: TObject);
begin
listnewbooks;//新书推荐
end;

end.

⌨️ 快捷键说明

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