?? 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 + -