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