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

📄 zulingfrm.pas

📁 该系统实现了对DVD租赁过程的管理,功能完善,方便实用.
💻 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 + -