📄 zulingfrm.pas
字号:
unit ZulingFrm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, jpeg, ExtCtrls, DB, ADODB, Grids, DBGrids;
type
TFrmZuling = class(TForm)
Image1: TImage;
ADOQuery1: TADOQuery;
ADOQuery2: TADOQuery;
Panel1: TPanel;
Label1: TLabel;
edStore_ID: TEdit;
Panel2: TPanel;
Panel4: TPanel;
StaticText1: TStaticText;
edMem_ID: TEdit;
Label2: TLabel;
Label3: TLabel;
Panel6: TPanel;
Image2: TImage;
Panel3: TPanel;
Image3: TImage;
Label4: TLabel;
StaticText2: TStaticText;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label9: TLabel;
Label8: TLabel;
StaticText3: TStaticText;
StaticText4: TStaticText;
StaticText5: TStaticText;
edIncome: TEdit;
Label10: TLabel;
StaticText6: TStaticText;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure edStore_IDKeyPress(Sender: TObject; var Key: Char);
procedure FormCreate(Sender: TObject);
procedure edMem_IDKeyPress(Sender: TObject; var Key: Char);
procedure edIncomeKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FrmZuling: TFrmZuling;
implementation
uses MainFrm;
var
DiskNum, UserID : String;
Return_Date, Income : Real;
{$R *.dfm}
procedure TFrmZuling.FormClose(Sender: TObject; var Action: TCloseAction);
begin
FrmZuling.Free;
FrmMain.sp1 := False;
end;
procedure TFrmZuling.edStore_IDKeyPress(Sender: TObject; var Key: Char);
var
DiskName : String;
DiskPhoto : String;
Borrow_Date, DateDiff : Real;
Btimes : Integer;
begin
if Key=#13 then
begin
if Length(Trim(edStore_ID.Text)) < 10 then
begin
Application.MessageBox('店内编号错误,重新输入!','错误',MB_ICONWARNING+MB_OK);
edStore_ID.SetFocus;
edStore_ID.SelectAll;
Exit;
end;
DiskNum := Trim(edStore_ID.Text);
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text := 'Select CD_Info.CD_Namecn, CD_Info.Photo From CD_Info, CD_Store Where CD_Store.Store_ID = '''+DiskNum+''' and CD_Store.CD_ID=CD_Info.CD_ID';
ADOQuery1.Open;
if ADOQuery1.Eof and ADOQuery1.Bof then
begin
Application.MessageBox('没有该光盘的信息,租赁/归还操作失败!','错误',MB_ICONWARNING+MB_OK);
edStore_ID.SetFocus;
edStore_ID.SelectAll;
Exit;
end
else
begin
DiskName := ADOQuery1.FieldByName('CD_NameCn').AsString;
DiskPhoto := ADOQuery1.FieldByName('Photo').AsString;
end;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text := 'Select * From BorrowInfo Where Store_ID = '''+DiskNum+''' and Yes_No=''0''';
ADOQuery1.Open;
if ADOQuery1.Eof and ADOQuery1.Bof then
begin //光盘租赁
Panel2.Visible := True;
try
Image2.Picture.LoadFromFile('DBS\Photo\'+ DiskPhoto);
except
Panel6.Caption := '未设定图片';
end;
StaticText1.Caption := DiskName;
edMem_ID.SetFocus;
end
else
begin //光盘归还
Panel4.Visible := True;
UserID := ADOQuery1.FieldByName('User_ID').AsString; //获得归还者的编号
try
Image3.Picture.LoadFromFile('DBS\Photo\'+ DiskPhoto);
except
Panel3.Caption := '未设定图片';
end;
StaticText2.Caption := DiskName;
edIncome.SetFocus;
Borrow_Date := ADOQuery1.FieldByName('Borrow_Date').AsDateTime;
StaticText3.Caption := DateTimeToStr(Borrow_Date);
Return_Date := Now();
StaticText4.Caption := DateTimeToStr(Return_Date);
DateDiff := Return_Date - Borrow_Date; //求出时间差
btimes := Trunc(DateDiff)+1; //收费记次
if Length(UserID)=6 then //根据是否会员计费
Income := btimes * 1.50
else
Income := btimes * 2.00;
StaticText5.Caption := FormatFloat('0.00',Income);
end;
end;
end;
procedure TFrmZuling.FormCreate(Sender: TObject);
begin
Panel2.Visible := False;
Panel4.Visible := False;
end;
procedure TFrmZuling.edMem_IDKeyPress(Sender: TObject; var Key: Char);
var
CardID : String;
MemType : String;
AllowNum : Integer;
Sys_Date : real;
begin
if Key = #13 then
begin
CardID := edMem_ID.Text;
if Length(Trim(CardID)) = 6 then
begin //会员租借
//Application.MessageBox('会员租借!','错误',MB_ICONWARNING+MB_OK);
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text := 'Select * From MemberInfo Where Mem_ID = '''+CardID+'''';
ADOQuery1.Open;
if ADOQuery1.FieldByName('Deadline').AsDateTime - Date() <0 then //超过有效期
begin
Application.MessageBox('会员卡已过有效期,不可租借!','错误',MB_ICONWARNING+MB_OK);
edMem_ID.SetFocus;
edMem_ID.SelectAll;
Exit;
end;
MemType := Copy(CardId,1,1); //判断会员类别
if MemType = 'A' then
AllowNum := 4
else
AllowNum := 2;
if ADOQuery1.FieldByName('Borrow_Num').AsInteger >= AllowNum then
begin
Application.MessageBox('已到最到租借数,不可借阅!','错误',MB_ICONWARNING+MB_OK);
edMem_ID.SetFocus;
edMem_ID.SelectAll;
Exit;
end;
ADOQuery1.Edit; //会员的在借光盘数增1
ADOQuery1.FieldByName('Borrow_Num').AsInteger := ADOQuery1.FieldByName('Borrow_Num').AsInteger + 1;
ADOQuery1.Post;
end
else if Length(Trim(CardID)) = 5 then
begin //非会员租借
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text := 'Select * From BorrowInfo Where User_ID = '''+CardID+''' and Yes_No = ''0''';
ADOQuery1.Open;
if ADOQuery1.RecordCount <> 0 then
begin
Application.MessageBox('有在借光盘未归还,不可租借!','错误',MB_ICONWARNING+MB_OK);
edMem_ID.SetFocus;
edMem_ID.SelectAll;
Exit;
end;
end
else
begin
Application.MessageBox('会员号或租借卡号错误,重新输入!','错误',MB_ICONWARNING+MB_OK);
edMem_ID.SetFocus;
edMem_ID.SelectAll;
Exit;
end;
Sys_Date := Now();
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text := 'Select * From BorrowInfo';
ADOQuery1.Open;
ADOQuery1.Append;
ADOQuery1.FieldByName('User_ID').AsString := CardID;
ADOQuery1.FieldByName('Store_ID').AsString := DiskNum;
ADOQuery1.FieldByName('Borrow_Date').AsDateTime := Sys_Date;
ADOQuery1.FieldByName('Yes_No').AsString := '0';
ADOQuery1.Post;
edStore_ID.Clear;
edStore_ID.SetFocus;
edMem_ID.Clear;
Panel2.Visible := False;
Application.MessageBox('本次租借成功!', '成功',MB_OK+MB_ICONINFORMATION);
end;
end;
procedure TFrmZuling.edIncomeKeyPress(Sender: TObject; var Key: Char); //输入收费金额,收费
var
i, keynum : Integer;
dotkey : String;
begin
keynum := 0;
for i:=1 to Length(edIncome.Text) do
begin
dotkey := Copy(edIncome.Text,i,1);
if dotkey ='.' then
keynum := keynum + 1;
end;
if ((key<'0') or (key>'9')) and (key <> #13) and (Key<>#8) and (Key<>'.') or ((keynum=1) and (key='.')) then
key := chr(0);
if Key = #13 then
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text := 'Select * From BorrowInfo Where Store_ID = '''+DiskNum+''' and Yes_No=''0''';
ADOQuery1.Open;
ADOQuery1.Edit; //更新BorrowInfo表中的Income、Return_Date、Yes_N0=1
ADOQuery1.FieldByName('Income').AsFloat := Income;
ADOQuery1.FieldByName('Return_Date').AsDateTime := Return_Date;
ADOQuery1.FieldByName('Yes_No').AsString := '1';
ADOQuery1.Post;
ADOQuery1.Close; //将CD_Info表中的租借次数(Times_Borrow)值增1
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text := 'Select * From CD_Info, CD_Store Where CD_Store.Store_ID = '''+DiskNum+''' and CD_Store.CD_ID = CD_Info.CD_ID';
ADOQuery1.Open;
ADOQuery1.Edit;
ADOQuery1.FieldByName('Times_Borrow').AsInteger := ADOQuery1.FieldByName('Times_Borrow').AsInteger + 1;
ADOQuery1.Post;
if Length(UserID) = 6 then //判断是否是会员
begin
ADOQuery1.Close; //如果是会员,则将MemberInfo表中的在借光盘数(Borrow_Num)值减1
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text := 'Select * From MemberInfo Where Mem_ID = '''+UserID+'''';
ADOQuery1.Open;
ADOQuery1.Edit;
ADOQuery1.FieldByName('Borrow_Num').AsInteger := ADOQuery1.FieldByName('Borrow_Num').AsInteger - 1;
ADOQuery1.Post;
end;
StaticText6.Caption := FormatFloat('0.00',StrToFloat(edIncome.Text) - StrToFloat(StaticText5.Caption));
Application.MessageBox('光盘归还成功!', '成功',MB_OK+MB_ICONINFORMATION);
edIncome.Clear;
StaticText6.Caption := '';
Panel4.Visible := False;
edStore_ID.Clear;
edStore_ID.SetFocus;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -