📄 jshs_form.pas
字号:
unit JSHS_Form;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons, ComCtrls, TFlatComboBoxUnit,
TFlatEditUnit, TFlatGroupBoxUnit, TFlatSpeedButtonUnit,DB,DBTables,
TFlatRadioButtonUnit, TFlatMemoUnit, TFlatButtonUnit;
type
TJSHS_F = class(TForm)
Panel1: TPanel;
Label1: TLabel;
Panel2: TPanel;
Panel3: TPanel;
Label2: TLabel;
JSHS_PC: TPageControl;
JS_TS: TTabSheet;
HS_TS: TTabSheet;
JS_FRBtn: TFlatRadioButton;
HS_FRBtn: TFlatRadioButton;
TSBH_FE: TFlatEdit;
KS_FBtn: TFlatSpeedButton;
Bevel1: TBevel;
Label4: TLabel;
JSJSZBH_FE: TFlatEdit;
JSQD_FBtn: TFlatButton;
Bevel2: TBevel;
Close_Btn: TButton;
Panel4: TPanel;
Label3: TLabel;
JSSM_FE: TFlatEdit;
Label5: TLabel;
JSZZ_FE: TFlatEdit;
Label8: TLabel;
JSCBRQ_FE: TFlatEdit;
Label9: TLabel;
JSCBS_FE: TFlatEdit;
JSSYSL_FE: TFlatEdit;
Label11: TLabel;
JSDJ_FE: TFlatEdit;
Label10: TLabel;
Panel5: TPanel;
Label6: TLabel;
Label12: TLabel;
Label15: TLabel;
Label17: TLabel;
HSSM_FE: TFlatEdit;
HSZZ_FE: TFlatEdit;
HSCBS_FE: TFlatEdit;
HSDJ_FE: TFlatEdit;
Label13: TLabel;
JSSL_FE: TFlatEdit;
Bevel3: TBevel;
Label14: TLabel;
HSXM_FE: TFlatEdit;
Label16: TLabel;
HSSL_FE: TFlatEdit;
Bevel4: TBevel;
Label18: TLabel;
HSCGTS_FE: TFlatEdit;
Lable1: TLabel;
HSFJ_FE: TFlatEdit;
HSQD_FBtn: TFlatButton;
Label7: TLabel;
HSBH_FE: TFlatEdit;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormDestroy(Sender: TObject);
procedure FormCreate(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);
private
{ Private declarations }
public
{ Public declarations }
end;
var
JSHS_F: TJSHS_F;
implementation
uses
Common_Unit,DateUtils, ShowBook_Form;
{$R *.dfm}
var
JYXX_T:TTable;
procedure TJSHS_F.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caFree;
end;
//***********************************************************************************
procedure TJSHS_F.FormDestroy(Sender: TObject);
begin
JYXX_T.Close;
FreeAndNil(JYXX_T);
JSHS_F:=nil;
end;
//***********************************************************************************
procedure TJSHS_F.FormCreate(Sender: TObject);
begin
JS_TS.TabVisible:=false;
HS_TS.TabVisible:=false;
JS_FRBtn.Checked:=true;
JYXX_T:=TTable.Create(nil);
JYXX_T.DatabaseName:=DataPath;
JYXX_T.TableName:='JYXXB.db';
JYXX_T.Open;
end;
//***********************************************************************************
procedure TJSHS_F.JS_FRBtnClick(Sender: TObject);
begin
Label2.Caption:='图书编号:';
TSBH_FE.Text:='';
TSBH_FE.MaxLength:=13;
JSHS_PC.ActivePage:=JS_TS;
TSBH_FE.Text:='';
JSSM_FE.Text:='';
JSZZ_FE.Text:='';
JSCBRQ_FE.Text:='';
JSCBS_FE.Text:='';
JSDJ_FE.Text:='';
JSSYSL_FE.Text:='';
JSJSZBH_FE.Text:='';
JSSL_FE.Text:='';
end;
//***********************************************************************************
procedure TJSHS_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 TJSHS_F.Close_BtnClick(Sender: TObject);
begin
close;
end;
//***********************************************************************************
procedure TJSHS_F.KS_FBtnClick(Sender: TObject); //开始借书还书
var
TSJBXX_Q,YHDA_Q:TQuery;
p:TPoint;
begin
if JS_FRBtn.Checked then //借书
begin
TSJBXX_Q:=TQuery.Create(nil);
TSJBXX_Q.DatabaseName:=DataPath;
TSJBXX_Q.SQL.Add('Select * From TSJBXX Where TSBH=:TSBH');
TSJBXX_Q.ParamByName('TSBH').AsString:=TSBH_FE.Text;
TSJBXX_Q.Open;
if TSJBXX_Q.RecordCount=0 then
begin
MessageBox(handle,'输入的图书编号有错!','编号错误',MB_ok or MB_ICONERROR);
FreeAndNil(TSJBXX_Q);
TSBH_FE.SetFocus;
exit;
end;
JSSM_FE.Text:=TSJBXX_Q.FieldValues['Name'];
JSZZ_FE.Text:=TSJBXX_Q.FieldValues['Auther'];
JSCBRQ_FE.Text:=DateToStr(TSJBXX_Q.FieldValues['OutDate']);
JSCBS_FE.Text:=TSJBXX_Q.FieldValues['CBS'];
JSDJ_FE.Text:=FloatToStr(TSJBXX_Q.FieldValues['Cost']);
JSSYSL_FE.Text:=IntToStr(TSJBXX_Q.FieldValues['LastNum']);
end
else begin //还书
YHDA_Q:=TQuery.Create(nil);
YHDA_Q.DatabaseName:=DataPath;
YHDA_Q.SQL.Add('Select * From YH Where UserID=:UserID');
YHDA_Q.ParamByName('UserID').AsString:=TSBH_FE.Text; //用户ID号
YHDA_Q.Open;
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
//BH:=TSBH_FE.Text; 用全局变量共享数据
P.x := KS_FBtn.Left;
P.y := KS_FBtn.Top +KS_FBtn.Height;
with TShowBook_F.Create(nil) do
try
Top := Panel3.ClientToScreen(P).y;
Left:= Panel3.ClientToScreen(P).x;
ShowModal;
finally
Free;
end;
end;
end;
FreeAndNil(TSJBXX_Q);
end;
//***********************************************************************************
procedure TJSHS_F.JSQD_FBtnClick(Sender: TObject); //借书确定
var
MaxNum,OldNum,MaxDate,SYSL:integer;
JYXX_Q,YHDA_Q,YH_Q:TQuery;
TSJBXX_T:TTable;
begin
JYXX_Q:=TQuery.Create(nil); //查看这本书用户是否已经借了但还没有还
JYXX_Q.DatabaseName:=DataPath;
JYXX_Q.SQL.Add('Select * From JYXXB Where UserID=:UserID and TSBH=:TSBH and HDate is Null');
JYXX_Q.ParamByName('UserID').AsString:=JSJSZBH_FE.Text;
JYXX_Q.ParamByName('TSBH').AsString:=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:=TQuery.Create(nil); //检查借书证号是否正确
YH_Q.DatabaseName:=DataPath;
YH_Q.SQL.Add('Select 1 From YH Where UserID=:UserID');
YH_Q.ParamByName('UserID').AsString:=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 JYXXB Where UserID=:UserID and HDate is Null');
JYXX_Q.ParamByName('UserID').AsString:=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
//if JYXX_Q.FieldByName('HDate').IsNull then OldNum:=OldNum+JYXX_Q.FieldValues['Num'];
OldNum:=OldNum+JYXX_Q.FieldValues['Num'];
JYXX_Q.Next;
end;
end;
YHDA_Q:=TQuery.Create(nil); //取得此用户最多能借多少书
YHDA_Q.DatabaseName:=DataPath;
YHDA_Q.SQL.Add('Select MaxDate,MaxNum From GroupUser A,YH B Where A.GroupID=B.GroupID and B.UserID=:UID');
YHDA_Q.ParamByName('UID').AsString:=JSJSZBH_FE.Text;
YHDA_Q.Open;
MaxDate:=YHDA_Q.FieldValues['MaxDate'];
MaxNum:=YHDA_Q.FieldValues['MaxNum'];
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:=TTable.Create(nil); //修改些图书的剩余数量
TSJBXX_T.DatabaseName:=DataPath;
TSJBXX_T.TableName:='TSJBXX.db';
TSJBXX_T.Open;
TSJBXX_T.Locate('TSBH',TSBH_FE.Text,[]);
SYSL:=StrToInt(JSSYSL_FE.Text)-StrToInt(JSSL_FE.Text);
TSJBXX_T.Edit;
TSJBXX_T.FieldByName('LastNum').AsInteger:=SYSL;
TSJBXX_T.Post;
JYXX_T.Append; //添加借书记录
JYXX_T.FieldByName('UserID').AsString:=JSJSZBH_FE.Text;
JYXX_T.FieldByName('TSBH').AsString:=TSBH_FE.Text;
JYXX_T.FieldByName('JDate').AsDateTime:=Date; //今天
JYXX_T.FieldByName('LastDate').AsDateTime:=IncDay(Date,MaxDate);//到期时间
JYXX_T.FieldByName('Num').AsInteger:=StrToInt(JSSL_FE.Text);
JYXX_T.Post;
TSBH_FE.Text:='';
JSSM_FE.Text:='';
JSZZ_FE.Text:='';
JSCBRQ_FE.Text:='';
JSCBS_FE.Text:='';
JSDJ_FE.Text:='';
JSSYSL_FE.Text:='';
JSJSZBH_FE.Text:='';
JSSL_FE.Text:='';
MessageBox(handle,'借书成功','成功',MB_ok or MB_ICONINFORMATION);
FreeAndNil(JYXX_Q);
FreeAndNil(YHDA_Q);
FreeAndNil(TSJBXX_T);
end;
//***********************************************************************************
procedure TJSHS_F.HSQD_FBtnClick(Sender: TObject); //确定还书
var
TSJBXX_T:TTable;
SL:integer;
begin
JYXX_T.Locate('UserID;TSBH;HDate',VarArrayOf([TSBH_FE.Text,HSBH_FE.Text,null]),[]);//修改借阅信息表
JYXX_T.Edit;
JYXX_T.FieldByName('HDate').AsDateTime:=now; //添加还书时间
JYXX_T.Post;
TSJBXX_T:=TTable.Create(nil); //修改图书基本表中的此图书的剩余数量
TSJBXX_T.DatabaseName:=DataPath;
TSJBXX_T.TableName:='TSJBXX.db';
TSJBXX_T.Open;
TSJBXX_T.Locate('TSBH',HSBH_FE.Text,[]);
SL:=StrToInt(TSJBXX_T.FieldValues['LastNum']);
SL:=SL+StrToInt(HSSL_FE.Text);
TSJBXX_T.Edit;
TSJBXX_T.FieldByName('LastNum').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;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -