📄 tsjh_form.pas
字号:
unit TSJH_Form;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, TFlatButtonUnit, ExtCtrls, ComCtrls, StdCtrls, TFlatEditUnit,
TFlatSpeedButtonUnit, TFlatRadioButtonUnit,DB,ADODB,DateUtils,
TFlatComboBoxUnit;
type
TTSJH_F = class(TForm)
Close_Btn: TButton;
Panel1: TPanel;
Label1: TLabel;
JS_FRBtn: TFlatRadioButton;
HS_FRBtn: TFlatRadioButton;
Panel2: TPanel;
Panel3: TPanel;
Label2: TLabel;
KS_FBtn: TFlatSpeedButton;
TSBH_FE: TFlatEdit;
JSHS_PC: TPageControl;
JS_TS: TTabSheet;
Bevel1: TBevel;
Label4: TLabel;
Bevel2: TBevel;
Label13: TLabel;
JSJSZBH_FE: TFlatEdit;
JSQD_FBtn: TFlatButton;
Panel4: TPanel;
Label3: TLabel;
Label5: TLabel;
Label8: TLabel;
Label9: TLabel;
Label11: TLabel;
JSSM_FE: TFlatEdit;
JSZZ_FE: TFlatEdit;
JSCBRQ_FE: TFlatEdit;
JSCBS_FE: TFlatEdit;
JSSYSL_FE: TFlatEdit;
JSSL_FE: TFlatEdit;
HS_TS: TTabSheet;
Panel5: TPanel;
Label6: TLabel;
Label12: TLabel;
Label15: TLabel;
Label17: TLabel;
Bevel3: TBevel;
Label14: TLabel;
Label16: TLabel;
Bevel4: TBevel;
Label18: TLabel;
Lable1: TLabel;
Label7: TLabel;
HSSM_FE: TFlatEdit;
HSZZ_FE: TFlatEdit;
HSCBS_FE: TFlatEdit;
HSDJ_FE: TFlatEdit;
HSXM_FE: TFlatEdit;
HSSL_FE: TFlatEdit;
HSCGTS_FE: TFlatEdit;
HSFJ_FE: TFlatEdit;
HSBH_FE: TFlatEdit;
HSQD_FBtn: TFlatButton;
ClassEdit: TFlatEdit;
StaticText3: TStaticText;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormDestroy(Sender: TObject);
procedure JS_FRBtnClick(Sender: TObject);
procedure HS_FRBtnClick(Sender: TObject);
procedure Close_BtnClick(Sender: TObject);
procedure KS_FBtnClick(Sender: TObject);
procedure JSQD_FBtnClick(Sender: TObject);
procedure HSQD_FBtnClick(Sender: TObject);
procedure TSBH_FEChange(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure ViewBook(Code : string);
end;
var
TSJH_F: TTSJH_F;
implementation
uses Share_Unit, uShowBookF, HSS_Form;
{$R *.dfm}
var
JYXX_T:TADOTable;
procedure TTSJH_F.FormCreate(Sender: TObject);
begin
JYXX_T:=TADOTable.Create(nil);
JYXX_T.Connection:=Connect;
JYXX_T.TableName:='借阅信息';
JS_TS.TabVisible:=False;
HS_TS.TabVisible:=False;
JS_FRBtn.Checked:=True;
JYXX_T.Open;
end;
procedure TTSJH_F.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caFree;
end;
procedure TTSJH_F.FormDestroy(Sender: TObject);
begin
FreeAndNil(JYXX_T);
TSJH_F:=nil;
end;
procedure TTSJH_F.JS_FRBtnClick(Sender: TObject);
begin
Label2.Caption:='图书编号:';
TSBH_FE.Text:='';
TSBH_FE.MaxLength:=10;
JSHS_PC.ActivePage:=JS_TS;
TSBH_FE.Text:='';
JSSM_FE.Text:='';
JSZZ_FE.Text:='';
JSCBRQ_FE.Text:='';
JSCBS_FE.Text:='';
JSSYSL_FE.Text:='';
JSJSZBH_FE.Text:='';
JSSL_FE.Text:='';
end;
procedure TTSJH_F.HS_FRBtnClick(Sender: TObject);
begin
Label2.Caption:='借书证号:';
TSBH_FE.MaxLength:=10;
JSHS_PC.ActivePage:=HS_TS;
TSBH_FE.Text:='';
HSBH_FE.Text:='';
HSSM_FE.Text:='';
HSZZ_FE.Text:='';
HSCBS_FE.Text:='';
HSDJ_FE.Text:='';
HSSM_FE.Text:='';
HSSL_FE.Text:='';
HSCGTS_FE.Text:='';
HSFJ_FE.Text:='';
end;
procedure TTSJH_F.Close_BtnClick(Sender: TObject);
begin
close;
end;
procedure TTSJH_F.KS_FBtnClick(Sender: TObject);
var
YHDA_Q:TADOQuery;
p:TPoint;
begin
if JS_FRBtn.Checked then //借书
begin
P.x := KS_FBtn.Left;
P.y := KS_FBtn.Top +KS_FBtn.Height;
ShowBookF.Top := Panel3.ClientToScreen(P).y;
ShowBookF.Left := Panel3.ClientToScreen(P).x;
ShowBookF.Show(TSBH_FE);
end
else begin //还书
YHDA_Q:=TADOQuery.Create(nil);
YHDA_Q.Connection:=Connect;
YHDA_Q.SQL.Add('Select * From 用户 Where 用户帐号=:用户帐号');
YHDA_Q.Parameters.ParamByName('用户帐号').Value :=TSBH_FE.Text; //用户ID号
YHDA_Q.Open;
BH:=TSBH_FE.Text;
if YHDA_Q.Bof and YHDA_Q.Eof then
begin
MessageBox(handle,'输入的借书证号有错!','错误',MB_ok or MB_ICONERROR);
FreeAndNil(YHDA_Q);
TSBH_FE.SetFocus;
exit;
end
else begin
P.x := KS_FBtn.Left;
P.y := KS_FBtn.Top +KS_FBtn.Height;
with THSS_F.Create(nil) do
try
Top := Panel3.ClientToScreen(P).y;
Left:= Panel3.ClientToScreen(P).x;
ShowModal;
finally
Free;
end;
end;
end;
end;
//******************************************************************************
procedure TTSJH_F.JSQD_FBtnClick(Sender: TObject); //借书确定
var
MaxNum,OldNum,MaxDate,SYSL:integer;
JYXX_Q,YHDA_Q,YH_Q:TADOQuery;
TSJBXX_T:TADOTable;
begin
JYXX_Q:=TADOQuery.Create(nil); //查看这本书用户是否已经借了但还没有还
JYXX_Q.Connection:=Connect;
JYXX_Q.SQL.Add('Select * From 借阅信息 Where 用户帐号=:用户帐号 and 图书编号=:图书编号 and 还书日期 is Null');
JYXX_Q.Parameters.ParamByName('用户帐号').Value:=JSJSZBH_FE.Text;
JYXX_Q.Parameters.ParamByName('图书编号').Value:=TSBH_FE.Text;
JYXX_Q.Open;
if JYXX_Q.RecordCount>0 then
begin
MessageBox(handle,'这本书你已经借而还没有还,不能重复借!','错误',MB_ok or MB_ICONERROR);
FreeAndNil(JYXX_Q);
TSBH_FE.SetFocus;
exit;
end;
if JSSL_FE.Text='' then //检查借书数量是否正确
begin
MessageBox(handle,'借书数量不能为空','错误',MB_ok or MB_ICONERROR);
exit;
end
else
try
StrToInt(JSSL_FE.Text);
except
MessageBox(handle,'借书数量必须为整数','错误',MB_ok or MB_ICONERROR);
exit;
end;
YH_Q:=TADOQuery.Create(nil); //检查借书证号是否正确
YH_Q.Connection:=Connect;
YH_Q.SQL.Add('Select 1 From 用户 Where 用户帐号=:用户帐号');
YH_Q.Parameters.ParamByName('用户帐号').Value:=JSJSZBH_FE.Text;
YH_Q.Open;
if YH_Q.RecordCount=0 then
begin
MessageBox(handle,'你输入的借书证号不存在,请检查!','错误',MB_ok or MB_ICONERROR);
FreeAndNil(YH_Q);
exit;
end;
FreeAndNil(YH_Q);
JYXX_Q.Close; //取得已经借了的且没有还书的数目
JYXX_Q.SQL.Clear;
JYXX_Q.SQL.Add('Select * From 借阅信息 Where 用户帐号=:用户帐号 and 还书日期 is Null');
JYXX_Q.Parameters.ParamByName('用户帐号').Value:=JSJSZBH_FE.Text;
JYXX_Q.Open;
OldNum:=0;
if not(JYXX_Q.Bof and JYXX_Q.Eof) then
begin
while not JYXX_Q.Eof do
begin
OldNum:=OldNum+JYXX_Q.FieldValues['数量'];
JYXX_Q.Next;
end;
end;
YHDA_Q:=TADOQuery.Create(nil); //取得此用户最多能借多少书
YHDA_Q.Connection:=Connect;
YHDA_Q.SQL.Add('Select 最大天数,最大数量 From 组用户 A,用户 B Where A.组号=B.组号 and B.用户帐号=:用户帐号');
YHDA_Q.Parameters.ParamByName('用户帐号').Value:=JSJSZBH_FE.Text;
YHDA_Q.Open;
MaxDate:=YHDA_Q.FieldValues['最大天数'];
MaxNum:=YHDA_Q.FieldValues['最大数量'];
if StrToInt(JSSL_FE.Text)>(MaxNum-OldNum) then
begin
MessageBox(handle,pchar(Format('您最多还能借 %d 本书!',[MaxNum-OldNum])),'错误',MB_ok or MB_ICONERROR);
FreeAndNil(JYXX_Q);
FreeAndNil(YHDA_Q);
JSSL_FE.SetFocus;
exit;
end;
TSJBXX_T:=TADOTable.Create(nil); //修改些图书的剩余数量
TSJBXX_T.Connection:=Connect;
TSJBXX_T.TableName:='图书信息';
TSJBXX_T.Open;
TSJBXX_T.Locate('图书编号',TSBH_FE.Text,[]);
SYSL:=StrToInt(JSSYSL_FE.Text)-StrToInt(JSSL_FE.Text);
TSJBXX_T.Edit;
TSJBXX_T.FieldByName('剩下数量').AsInteger:=SYSL;
TSJBXX_T.Post;
JYXX_T.Append; // 添加借书记录
JYXX_T.FieldByName('用户帐号').AsString:=JSJSZBH_FE.Text;
JYXX_T.FieldByName('图书编号').AsString:=TSBH_FE.Text;
JYXX_T.FieldByName('借书日期').AsDateTime:=Date; //今天
JYXX_T.FieldByName('到期日期').AsDateTime:=IncDay(Date,MaxDate);//到期时间
JYXX_T.FieldByName('数量').AsInteger:=StrToInt(JSSL_FE.Text);
JYXX_T.Post;
TSBH_FE.Text:='';
JSSM_FE.Text:='';
JSZZ_FE.Text:='';
JSCBRQ_FE.Text:='';
JSCBS_FE.Text:='';
JSSYSL_FE.Text:='';
JSJSZBH_FE.Text:='';
JSSL_FE.Text:='';
ClassEdit.Text:='';
MessageBox(handle,'借书成功','成功',MB_ok or MB_ICONINFORMATION);
FreeAndNil(JYXX_Q);
FreeAndNil(YHDA_Q);
FreeAndNil(TSJBXX_T);
end;
//***********************************************************************************
procedure TTSJH_F.HSQD_FBtnClick(Sender: TObject); //还书确定
var
TSJBXX_T:TADOTable;
SL:integer;
begin
JYXX_T.Locate('用户帐号;图书编号;还书日期',VarArrayOf([TSBH_FE.Text,HSBH_FE.Text,null]),[]);//修改借阅信息表
JYXX_T.Edit;
JYXX_T.FieldByName('还书日期').AsDateTime:=now; //添加还书时间
JYXX_T.Post;
TSJBXX_T:=TADOTable.Create(nil); //修改图书基本表中的此图书的剩余数量
TSJBXX_T.Connection:=Connect;
TSJBXX_T.TableName:='图书信息';
TSJBXX_T.Open;
TSJBXX_T.Locate('图书编号',HSBH_FE.Text,[]);
SL:=StrToInt(TSJBXX_T.FieldValues['剩下数量']);
SL:=SL+StrToInt(HSSL_FE.Text);
TSJBXX_T.Edit;
TSJBXX_T.FieldByName('剩下数量').AsInteger:=SL;
TSJBXX_T.Post;
TSJBXX_T.Close;
FreeAndNil(TSJBXX_T);
HSBH_FE.Text:='';
HSSM_FE.Text:='';
HSZZ_FE.Text:='';
HSCBS_FE.Text:='';
HSDJ_FE.Text:='';
HSXM_FE.Text:='';
HSSL_FE.Text:='';
HSCGTS_FE.Text:='';
HSFJ_FE.Text:='';
MessageBox(handle,'还书成功','成功',MB_ok or MB_ICONINFORMATION);
end;
procedure TTSJH_F.ViewBook(Code : string);
var
XGTS_Q : TADOQuery;
begin
XGTS_Q := TADOQuery.Create(nil);
XGTS_Q.Connection:=Connect;
XGTS_Q.SQL.Add('select 图书信息.* ,类名 from 图书信息,图书类别 where 图书编号=:图书编号 and 图书类别.类别=图书信息.类别');
XGTS_Q.Parameters.ParamByName('图书编号').Value := Code;
XGTS_Q.Open;
if XGTS_Q.RecordCount = 0 then
MessageDlg('没有此书的信息存在',mtError,[mbok],0);
JSSM_FE.Text := XGTS_Q.FieldValues['书名'];
ClassEdit.Text :=XGTS_Q.FieldValues['类名'];
JSZZ_FE.Text := XGTS_Q.FieldByName('作者').AsString;
JSCBS_FE.Text := XGTS_Q.FieldByName('出版社').AsString;
JSCBRQ_FE.Text := XGTS_Q.FieldByName('出版日期').AsString;
JSSYSL_FE.Text := XGTS_Q.FieldByName('剩下数量').AsString;
XGTS_Q.Close;
FreeAndNil(XGTS_Q);
end;
//******************************************************************************
procedure TTSJH_F.TSBH_FEChange(Sender: TObject);
begin
if JS_FRBtn.Checked then //借书
if length(TSBH_FE.Text)= BHLength then
begin
try
ViewBook(TSBH_FE.Text);
except
MessageDlg('数据操作出错',mtError,[mbok],0);
end;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -