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

📄 unit12_jydj.pas

📁 图书管理系统。可以实现简单的图书管理
💻 PAS
字号:
unit Unit12_jydj;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons,data_main, DB;

type
  TForm12 = class(TForm)
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    Edit1: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    Edit8: TEdit;
    Edit9: TEdit;
    Edit10: TEdit;
    Edit11: TEdit;
    Label12: TLabel;
    Edit12: TEdit;
    BitBtn3: TBitBtn;
    DataSource1: TDataSource;
    Label13: TLabel;
    Edit13: TEdit;
    procedure BitBtn2Click(Sender: TObject);
    procedure Edit1Exit(Sender: TObject);
    procedure Edit7Exit(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure Edit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form12: TForm12;
   s4,s5:double;
   s1:string;
implementation

{$R *.dfm}

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

procedure TForm12.Edit1Exit(Sender: TObject);
begin
 datamodule1.adoquery1.Close;
 datamodule1.adoquery1.sql.clear;
 datamodule1.adoquery1.sql.Add('select book.*,BOOK1.书号,book1.状态 from book,book1 where book1.isbn=book.isbn and  书号=:edit1.text');
  datamodule1.adoquery1.parameters[0].value:=edit1.text;
 datamodule1.adoquery1.open;
 //根据书籍编号找到该书的信息并显示


 edit2.Text:=datamodule1.adoquery1.fieldbyname('书名').AsString;
 edit3.Text:=datamodule1.adoquery1.fieldbyname('类别').AsString ;
 edit4.Text:=datamodule1.adoquery1.fieldbyname('作者').AsString ;
 edit5.Text:=datamodule1.adoquery1.fieldbyname('出版社').AsString ;
 edit6.Text:=datamodule1.adoquery1.fieldbyname('isbn').AsString ;
  edit12.Text:=datamodule1.adoquery1.fieldbyname('状态').AsString ;
end;

procedure TForm12.Edit7Exit(Sender: TObject);
 var i:integer;
begin
  datamodule1.adoquery1.Close;
 datamodule1.adoquery1.sql.clear;
 datamodule1.adoquery1.sql.Add('select * from reader where 借阅证号=:edit7.text');
  datamodule1.adoquery1.parameters[0].value:=edit7.text;
 datamodule1.adoquery1.open;
 //根据借阅证号找到该借阅者的信息并显示

  edit8.Text:=datamodule1.adoquery1.fieldbyname('读者姓名').AsString;
 edit9.Text:=datamodule1.adoquery1.fieldbyname('性别').AsString ;
 edit10.Text:=datamodule1.adoquery1.fieldbyname('单位').AsString ;
 edit11.Text:=datamodule1.adoquery1.fieldbyname('联系方式').AsString ;
   edit13.Text:=datamodule1.adoquery1.fieldbyname('级别').AsString ;
   //罚金处理
   if  edit8.Text<>'' then
   begin
   datamodule1.adoquery1.Close;
   datamodule1.adoquery1.sql.clear;
   datamodule1.adoquery1.sql.Add('select * from reader where 借阅证号=:edit7.text') ;
   datamodule1.adoquery1.parameters[0].value:=edit7.text;
   datamodule1.adoquery1.open;
     if datamodule1.adoquery1.fieldbyname('上次未交罚金').asfloat>0 then
     begin
         showmessagefmt(' 您有未交的罚金.请交罚金%f',[datamodule1.adoquery1.fieldbyname('上次未交罚金').asfloat] ) ;
         i:=messagedlg('是否现在要交罚金',mtwarning,[mbyes,mbno],0);
          if i=6 then
             begin
               datamodule1.adoquery1.Close;
               datamodule1.adoquery1.sql.clear;
               datamodule1.adoquery1.sql.Add('update reader   set 上次未交罚金=0.0 where 借阅证号=:edit7.text ') ;
               datamodule1.adoquery1.parameters[0].value:=edit7.text;
              if  datamodule1.adoquery1.ExecSQL>0 then
                 BitBtn1.Enabled:=true;
              end
             else
             BitBtn1.Enabled:=false;
     end
     else
      BitBtn1.Enabled:=true;
   end;


 end;

 //借阅登记控件
 //思路:合法用户借用在库未借出书籍 且该用户所借书籍未超出3本,同时书籍借出状态改为"Y"
procedure TForm12.BitBtn1Click(Sender: TObject);
 var i:integer;
begin
//根据级别找到可借数目。
 datamodule1.adoquery1.Close;
 datamodule1.adoquery1.sql.clear;
 datamodule1.adoquery1.sql.Add('select * from borrow where 借阅证号=:edit7.text');
  datamodule1.adoquery1.parameters[0].value:=edit7.text;
  datamodule1.adoquery1.open;
   if datamodule1.adoquery1.recordcount>=3 then
      showmessage('对不起,您已借够3本书,无法再借')
  else
   begin
    datamodule1.adoquery1.Close;
    datamodule1.adoquery1.sql.clear;
    datamodule1.adoquery1.sql.Add('update book1  set 状态=:s ') ;
    datamodule1.adoquery1.sql.Add('where 书号=:edit1.text');
    datamodule1.adoquery1.parameters[0].value:='Y';
    datamodule1.adoquery1.parameters[1].value:=edit1.text;
    if datamodule1.adoquery1.execsql>0 then
      begin
       datamodule1.adoquery1.Close;
       datamodule1.adoquery1.sql.clear;
       datamodule1.adoquery1.sql.Add('insert into  borrow ') ;
       datamodule1.adoquery1.sql.Add('values(:edit7.text,:edit1.text,:s)');
       datamodule1.adoquery1.parameters[0].value:=edit7.text;
       datamodule1.adoquery1.parameters[1].value:=edit1.text;
       datamodule1.adoquery1.parameters[2].value:=date();
       if datamodule1.adoquery1.execsql>0 then
         showmessage('借阅成功');
       end;
    end ;
  end;

 //还书处理
 //思路:根据书籍编号查看书的超期情况,把书的借出状态改为"N".
 procedure TForm12.BitBtn3Click(Sender: TObject);
 var s2:string;
 var s3:double;
 begin
 
  if edit1.text<>'' then
  begin
  datamodule1.adoquery1.Close;
  datamodule1.adoquery1.sql.clear;
  datamodule1.adoquery1.sql.Add('select * from borrow ') ;
  datamodule1.adoquery1.sql.Add('where 书号=:edit1.text');
  datamodule1.adoquery1.parameters[0].value:=edit1.text;
  datamodule1.adoquery1.open;
  if date()-datamodule1.adoquery1.fieldbyname('借出日期').asdatetime>30 then
   s4:=s4+(date()-datamodule1.adoquery1.fieldbyname('借出日期').asdatetime-30)*0.1;
  //把BORROW中的记录移到 BORROW1 表中,同时注明还书日期
   s1:=datamodule1.adoquery1.fieldbyname('借阅证号').asstring;
   s2:=datamodule1.adoquery1.fieldbyname('书号').asstring;
   s3:=datamodule1.adoquery1.fieldbyname('借出日期').asdatetime;
  datamodule1.adoquery1.Close;
  datamodule1.adoquery1.sql.clear;
  datamodule1.adoquery1.sql.Add('insert into borrow1') ;
  datamodule1.adoquery1.sql.Add('values(:s1,:s2,:s3,:s4)');
  datamodule1.adoquery1.parameters[0].value:=s1;
  datamodule1.adoquery1.parameters[1].value:=s2;
  datamodule1.adoquery1.parameters[2].value:=s3;
  datamodule1.adoquery1.parameters[3].value:=date();
 if  datamodule1.adoquery1.execsql>0 then
  //删除borrow表中的信息
  begin
  datamodule1.adoquery1.Close;
  datamodule1.adoquery1.sql.clear;
  datamodule1.adoquery1.sql.Add('delete from borrow') ;
  datamodule1.adoquery1.sql.Add('where 书号=:edit1.text ');
  datamodule1.adoquery1.parameters[0].value:=edit1.text;
  if datamodule1.adoquery1.execsql> 0 then
  // 把借出状态改为'N'
    begin
  datamodule1.adoquery1.Close;
  datamodule1.adoquery1.sql.clear;
  datamodule1.adoquery1.sql.Add('update book1 set 状态=''N''') ;
  datamodule1.adoquery1.sql.Add('where 书号=:edit1.text');
  datamodule1.adoquery1.parameters[0].value:=edit1.text;
   if datamodule1.adoquery1.execsql>0 then
        showmessage('还书成功');
  end;
  end;
  
  end;

end;

procedure TForm12.FormShow(Sender: TObject);
begin
BitBtn1.Enabled:=false;
end;

procedure TForm12.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
  var i:integer;
begin
if key=13 then
begin
  datamodule1.adoquery1.Close;
  datamodule1.adoquery1.sql.clear;
  datamodule1.adoquery1.sql.Add('select * from reader ') ;
  datamodule1.adoquery1.sql.Add('where 借阅证号=:edit1.text');
  datamodule1.adoquery1.parameters[0].value:=s1;
  datamodule1.adoquery1.open;
  if  (s4>0) or (datamodule1.adoquery1.FieldByName('上次未交罚金').asfloat >0) then
  begin
      s5:= s4+datamodule1.adoquery1.FieldByName('上次未交罚金').asfloat;
      S4:=0;
    showmessagefmt(' 您已经超期.请交罚金%f',[s5]);
    i:=messagedlg('是否现在要交罚金',mtwarning,[mbyes,mbno],0);
    if i=6 then
      begin
      datamodule1.adoquery1.Close;
      datamodule1.adoquery1.sql.clear;
      datamodule1.adoquery1.sql.Add('update reader   set 上次未交罚金=0.0 where 借阅证号=:edit7.text ') ;
      datamodule1.adoquery1.parameters[0].value:=s1;
      datamodule1.adoquery1.ExecSQL;
      end
    else
      begin
      datamodule1.adoquery1.Close;
      datamodule1.adoquery1.sql.clear;
      datamodule1.adoquery1.sql.Add('update reader   set 上次未交罚金=:w where 借阅证号=:edit7.text ') ;
      datamodule1.adoquery1.parameters[0].value:=s5;
       datamodule1.adoquery1.parameters[1].value:=s1;
      datamodule1.adoquery1.ExecSQL;
      end;
  end;
 end ;
 
end;

end.

⌨️ 快捷键说明

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