📄 mybook.pas
字号:
unit mybook;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, Grids, DBGrids ,connection , StdCtrls, dbctrls;
type
Tbook=class
private
fbookname:string;
fisbn:string;
fpress:string;
fwriter:string;
fmoney:integer;
fiscdrom:boolean;
fisborrow:boolean;
public
constructor create;
destructor destroy;override;
published
property bookname:string read fbookname write fbookname;
property isbn:string read fisbn write fisbn;
property press:string read fpress write fpress;
property writer:string read fwriter write fwriter;
property money:integer read fmoney write fmoney;
property iscdrom:boolean read fiscdrom write fiscdrom;
property isborrow:boolean read fisborrow write fisborrow;
end;
tcomputerbook=class(tbook)
public
constructor create;
destructor destroy;override;
end;
tnoncomputerbook=class(tbook)
public
constructor create;
destructor destroy;override;
end;
{ Tbook }
tbooklist=class(Tinterfacedobject)
private
fbook:tbook;
fconnect:tconnect;
public
constructor create;
destructor destroy;override;
procedure add;
procedure lendbook(st1,str2,str3:string);
procedure callbackbook;
function searchbook(str:string):boolean;
procedure displaybookdbgrid(dbgrid:tdbgrid);
procedure displaybookdbgrid2(dbgrid:tdbgrid);
function searchdetailbook(str1,str2,str3,str4,str5:string):boolean;
function searchfromdate(str:string;m,n:integer):boolean;
published
property book:tbook read fbook write fbook;
property connect:tconnect read fconnect write fconnect;
end;
tnonbooklist=class(tbooklist)
private
fnoncomputerbook:tnoncomputerbook;
public
constructor create;
destructor destroy;override;
published
property noncomputerbook:tnoncomputerbook read fnoncomputerbook write fnoncomputerbook;
end;
tcomputerbooklist=class(tbooklist)
private
fcomputerbook:tcomputerbook;
public
constructor create;
destructor destroy;override;
published
property computerbook:tcomputerbook read fcomputerbook write fcomputerbook;
end;
Tborrow=class
private
fbook:tbook;
fborrowman:string;
fborrowdate:tdate;
fborrownum:integer;
public
constructor create;
destructor destroy;override;
published
property book:tbook read fbook write fbook;
property borrowman:string read fborrowman write fborrowman;
property borrowdate:tdate read fborrowdate write fborrowdate;
property borrownum:integer read fborrownum write fborrownum;
end;
tborrowlist=class
private
fborrow:tborrow;
public
constructor create;
destructor destroy;override;
published
property borrow:tborrow read fborrow write fborrow;
end;
tbianhao=class
public
constructor create;
destructor destroy;override;
function createid(combobox:tcombobox):string;
end;
implementation
constructor Tbook.create;
begin
end;
destructor Tbook.destroy;
begin
inherited;
end;
{ tcomputerbook }
constructor tcomputerbook.create;
begin
end;
destructor tcomputerbook.destroy;
begin
end;
{ tnoncomputerbook }
constructor tnoncomputerbook.create;
begin
end;
destructor tnoncomputerbook.destroy;
begin
inherited;
end;
constructor tnonbooklist.create;
begin
end;
destructor tnonbooklist.destroy;
begin
inherited;
end;
{ tcomputerbooklist }
constructor tcomputerbooklist.create;
begin
end;
destructor tcomputerbooklist.destroy;
begin
inherited;
end;
{ Tborrow }
constructor Tborrow.create;
begin
end;
destructor Tborrow.destroy;
begin
inherited;
end;
{ tborrowlist }
constructor tborrowlist.create;
begin
end;
destructor tborrowlist.destroy;
begin
inherited;
end;
{ tbooklist }
procedure tbooklist.add;
begin
fconnect.doconnection;
fconnect.comm;
fconnect.adotable.Append;
fconnect.adotable.Fields[0].AsString:=fbook.fbookname;
fconnect.adotable.Fields[1].AsString:=fbook.fisbn;
fconnect.adotable.Fields[2].AsInteger:=fbook.fmoney;
fconnect.adotable.Fields[3].AsString:=fbook.fwriter;
fconnect.adotable.Fields[4].AsBoolean:=fbook.fiscdrom;
fconnect.adotable.Fields[5].AsString:=fbook.fpress;
fconnect.adotable.Fields[6].AsBoolean:=false;
fconnect.adotable.Fields[7].AsInteger:=strtoint(formatdatetime('yyyymmdd',now));
fconnect.adotable.Fields[9].AsBoolean:=copy(fbook.fisbn,1,3)='com';
fconnect.adotable.Post;
messagedlg('记录添加成功',mtInformation,[mbok],0);
end;
procedure tbooklist.callbackbook;
var
st:string;
begin
if fconnect.isnotnull then
begin
fconnect.adoquery.Edit;
if not fconnect.adoquery.Fields[2].AsBoolean then
messagedlg('对不起,这本书没有被借出,不能做归还操作,请检查!',mterror,[mbok],0)
else
begin
st:=fconnect.adoquery.Fields[0].AsString;
fconnect.adoquery.Fields[2].AsBoolean:=false;
fconnect.adoquery.Fields[3].AsInteger:=strtoint(formatdatetime('yyyymmdd',now));
fconnect.adoquery.Post;
fconnect.displayquery2(st);
fconnect.adoquery2.Delete;
messagedlg('操作完成!',mtinformation,[mbok],0);
fconnect.displayquery;
displaybookdbgrid(fconnect.dbgrid);
end;
end
else
messagedlg('无法操作,没有图书归还!',mterror,[mbok],0);
exit;
end;
constructor tbooklist.create;
begin
fbook:=tbook.create;
fconnect:=tconnect.create;
end;
destructor tbooklist.destroy;
begin
fbook.Free;
fbook:=nil;
fconnect.Free;
fconnect:=nil;
inherited;
end;
procedure tbooklist.displaybookdbgrid(dbgrid: tdbgrid);
begin
dbgrid.Columns[0].Width:=160;
dbgrid.Columns[0].FieldName:='图书编号';
dbgrid.Columns[1].Width:=160;
dbgrid.Columns[1].FieldName:='书名';
dbgrid.Columns[2].Width:=60;
dbgrid.Columns[2].FieldName:='是否借出';
end;
procedure tbooklist.displaybookdbgrid2(dbgrid: tdbgrid);
begin
dbgrid.Columns[0].Width:=120;
dbgrid.Columns[0].FieldName:='书名';
dbgrid.Columns[1].Width:=100;
dbgrid.Columns[1].FieldName:='借书人';
dbgrid.Columns[2].Width:=60;
dbgrid.Columns[2].FieldName:='归还日期';
end;
procedure tbooklist.lendbook(st1,str2,str3:string);
begin
if fconnect.isnotnull then
begin
fconnect.adoquery.Edit;
if fconnect.adoquery.Fields[2].AsBoolean then
messagedlg('对不起,这本书已经借出,请检查!',mterror,[mbok],0)
else
begin
fconnect.adoquery.Fields[2].AsBoolean:=true;
fconnect.adoquery.Post;
fconnect.setcommtoborrow;
fconnect.adotable.Append;
fconnect.adotable.fields[0].AsString:=fconnect.adoquery.Fields[1].AsString;
fconnect.adotable.Fields[1].AsString:=st1;
fconnect.adotable.Fields[2].AsInteger:=strtoint(str2);
fconnect.adotable.Fields[3].Asinteger:=strtoint(str3);
fconnect.adotable.Fields[4].AsString:=fconnect.adoquery.Fields[0].AsString;
fconnect.adotable.Post;
messagedlg('操作完成!',mtinformation,[mbok],0);
end;
end
else
messagedlg('无法借出,没有图书可借!',mterror,[mbok],0);
exit;
end;
function tbooklist.searchbook(str: string): boolean;
begin
fconnect.adoquery.Close;
fconnect.adoquery.SQL.Clear;
fconnect.adoquery.SQL.Add('select 图书编号,书名,是否借出 from book where 图书编号 like :bh');
fconnect.adoquery.Parameters.ParamByName('bh').Value:=str;
fconnect.adoquery.Open;
if not fconnect.adoquery.Eof then
fconnect.isnotnull:=true
else
fconnect.isnotnull:=false;
end;
function tbooklist.searchdetailbook(str1, str2, str3, str4,
str5: string): boolean;
begin
fconnect.adoquery.Close;
fconnect.adoquery.SQL.Clear;
if trim(str5)='' then
begin
if trim(str1)='所有图书' then
fconnect.adoquery.SQL.Add('select * from book where 书名 like :sm or 出版社 like :cbs or 作者 like :zz');
if trim(str1)='计算机图书' then
fconnect.adoquery.SQL.Add('select * from book where 是否计算机=true and 书名 like :sm or 出版社 like :cbs or 作者 like :zz');
if trim(str1)='其它图书' then
fconnect.adoquery.SQL.Add('select * from book where 是否计算机=false and 书名 like :sm or 出版社 like :cbs or 作者 like :zz');
end
else
begin
if trim(str1)='所有图书' then
fconnect.adoquery.SQL.Add('select * from search where 书名 like :sm or 出版社 like :cbs or 作者 like :zz or 借书人 like :jsr');
if trim(str1)='计算机图书' then
fconnect.adoquery.SQL.Add('select * from search where 是否计算机=true and 书名 like :sm or 出版社 like :cbs or 作者 like :zz or 借书人 like :jsr');
if trim(str1)='其它图书' then
fconnect.adoquery.SQL.Add('select * from search where 是否计算机=false and 书名 like :sm or 出版社 like :cbs or 作者 like :zz or 借书人 like :jsr');
fconnect.adoquery.Parameters.ParamByName('jsr').Value:=str5;
end;
fconnect.adoquery.Parameters.ParamByName('sm').Value:=str2;
fconnect.adoquery.Parameters.ParamByName('cbs').Value:=str3;
fconnect.adoquery.Parameters.ParamByName('zz').Value:=str4;
fconnect.adoquery.Open;
if not fconnect.adoquery.Eof then
result:=true
else
result:=false;
end;
function tbooklist.searchfromdate(str:string;m,n:integer): boolean;
begin
fconnect.adoquery.Close;
fconnect.adoquery.SQL.Clear;
if str='所有图书' then
fconnect.adoquery.SQL.Add('select 图书编号,书名,是否借出,登记时间 from book where 登记时间<=num2 and 登记时间>=num1');
if str='未借图书' then
fconnect.adoquery.SQL.Add('select 图书编号,书名,是否借出,登记时间 from book where 是否借出=false and 登记时间<=num2 and 登记时间>=num1');
if str='已借图书' then
fconnect.adoquery.SQL.Add('select 图书编号,书名,是否借出,登记时间 from book where 是否借出 and 登记时间<=num2 and 登记时间>=num1');
fconnect.adoquery.Parameters.ParamByName('num1').Value:=m;
fconnect.adoquery.Parameters.ParamByName('num2').Value:=n;
fconnect.adoquery.Open;
if not fconnect.adoquery.Eof then
fconnect.isnotnull:=true
else
fconnect.isnotnull:=false;
end;
{ tbianhao }
constructor tbianhao.create;
begin
end;
function tbianhao.createid(combobox: tcombobox): string;
begin
if combobox.Text='计算机' then
result:='com'+formatdatetime('yyyymmddhhnnss',now)
else
result:='non'+formatdatetime('yyyymmddhhnnss',now);
end;
destructor tbianhao.destroy;
begin
inherited;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -