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

📄 mybook.pas

📁 现在家庭藏书越来越多
💻 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 + -