📄 borrowbooks.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 + -