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

📄 uxzbooksjiebook.pas

📁 图书管理系统Delphi源代码
💻 PAS
字号:
unit uxzBooksJieBook;

{$WARN SYMBOL_PLATFORM OFF}

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComServ, ComObj, VCLCom, StdVcl, bdemts, DataBkr, DBClient,
  MtsRdm, Mtx, pxzBooksJieBook_TLB, DB, ADODB, uPublic;

type
  TxzBooksJieBook = class(TMtsDataModule, IxzBooksJieBook)
    ADOConnection1: TADOConnection;
    adoBooks: TADODataSet;
    adoGetUserName: TADODataSet;
    adoJS: TADODataSet;
    adoJSXS: TADODataSet;
    adoJSBS: TADODataSet;
    adoMax: TADODataSet;
  private
    function BookCanJie(BookID:String):boolean;
    function YHHF(userID:String):Boolean;
    //判断当前用户是否可以借书,包括注册类型的天数限制、本数限制。
    { Private declarations }
  protected
    class procedure UpdateRegistry(Register: Boolean; const ClassID, ProgID: string); override;
    procedure JieShu(const CZY, JYRDH, JYR, JYRQ, BookID, BookName: WideString;
      DJ: Double; var vResult: OleVariant); safecall;
    procedure GetBookInfoFromBookID(const id: WideString; var vBookName,
      vDJ: OleVariant); safecall;
    procedure GetUserInfoFromUserID(const id: WideString; var vUserName,
      vJSXS: OleVariant); safecall;
  public
    { Public declarations }
  end;

var
  xzBooksJieBook: TxzBooksJieBook;

implementation

{$R *.DFM}

class procedure TxzBooksJieBook.UpdateRegistry(Register: Boolean; const ClassID, ProgID: string);
begin
  if Register then
  begin
    inherited UpdateRegistry(Register, ClassID, ProgID);
    EnableSocketTransport(ClassID);
    EnableWebTransport(ClassID);
  end else
  begin
    DisableSocketTransport(ClassID);
    DisableWebTransport(ClassID);
    inherited UpdateRegistry(Register, ClassID, ProgID);
  end;
end;

procedure TxzBooksJieBook.JieShu(const CZY, JYRDH, JYR, JYRQ, BookID,
  BookName: WideString; DJ: Double; var vResult: OleVariant);
begin
  if YHHF(JYRDH) then
  begin  //用户可以借书
    if BookCanJie(BookID) then
      vResult:='这本书已借出!'
    else
      try
        if ADOConnection1.Connected then
          ADOConnection1.Connected := False;
        ADOConnection1.ConnectionString := GetConStr;
        adoJS.Open;
        try
          adoJS.Append;
          adoJS.FieldByName('CZY').Value:=CZY;
          adoJS.FieldByName('JYRDH').Value :=JYRDH;
          adoJS.FieldByName('JYR').Value :=JYR;
          adoJS.FieldByName('JYRQ').Value :=strToDate(JYRQ);
          adoJS.FieldByName('BookID').Value :=BookID;
          adoJS.FieldByName('BookName').Value :=BookName;
          adoJS.FieldByName('DJ').Value :=DJ;
          adoJS.Post;
          adoBooks.Parameters.ParamByName('aid').Value :=BookID;
          adoBooks.Open;
          adoBooks.Edit;
          adoBooks.FieldByName('YJC').Value :=True;
          adoBooks.Post;
        finally
          setComplete;
          adoJS.Close;
          vResult:='Complete';
        end;
      except
        setAbort;
        vResult:=ADOConnection1.Errors[0].Description;
      end;
  end
  else
    vResult:='不能完成操作:当前用户已不能借书!';
end;

procedure TxzBooksJieBook.GetBookInfoFromBookID(const id: WideString;
  var vBookName, vDJ: OleVariant);
begin
  try
    if ADOConnection1.Connected then
      ADOConnection1.Connected := False;
    ADOConnection1.ConnectionString := GetConStr;
    adoBooks.Parameters.ParamByName('aid').Value :=ID;
    adoBooks.Open;
    if adoBooks.IsEmpty then
      vBookName:='None'
    else
    begin
      vBookName:=adoBooks.fieldByName('Name').Value;
      vDJ:=adoBooks.FieldByName('Money').Value;
    end;
  finally
    adoBooks.Close;
  end;
end;

procedure TxzBooksJieBook.GetUserInfoFromUserID(const id: WideString;
  var vUserName, vJSXS: OleVariant);
begin
  try
    if ADOConnection1.Connected then
      ADOConnection1.Connected := False;
    ADOConnection1.ConnectionString := GetConStr;
    adoGetUserName.Parameters.ParamByName('aid').Value :=id;
    adoGetUserName.Open;
    if adoGetUserName.IsEmpty then
      vUserName:='None'
    else
    begin
      vUserName:=adoGetUserName.fieldByName('Name').Value;
      vJSXS:=adoGetUserName.fieldByName('JSXS').Value;
    end;
  finally
    adoGetUserName.Close;
  end;
end;

//检测图书是否已借出.T.是,.F.可以借
function TxzBooksJieBook.BookCanJie(BookID: String): boolean;
begin
  try
    adoBooks.Parameters.ParamByName('aid').Value :=BookID;
    adoBooks.Open;
    Result:=adoBooks.FieldByName('YJC').Value;
  finally
    adoBooks.Close;
  end;
end;

function TxzBooksJieBook.YHHF(userID: String): Boolean;
var
  JSXS:integer;//用户租书形式
  iMax,iBooks:integer;//最多借多少本,已借多少本;
begin
  try
    if ADOConnection1.Connected then
      ADOConnection1.Connected := False;
    ADOConnection1.ConnectionString := GetConStr;
    adoJSXS.Close;
    adoJSXS.Parameters.ParamByName('aid').Value :=userID;
    adoJSXS.Open;
    JSXS:=adoJSXS.FieldByName('jsxs').AsInteger; //获取用户的借书形式;
    adoMax.Close;
    adoMax.Parameters.ParamByName('aid').Value :=JSXS;
    adoMax.Open;
    iMax:=adoMax.fieldByName('Max').Value;  //获取用户最多可借多少本书
    iBooks:=0;  //默认用户没有借书
    adoJSBS.Close;
    adoJSBS.Parameters.ParamByName('aid').Value :=userID;
    adoJSBS.Open;
    if not adoJSBS.IsEmpty then
    begin
      adoJSBS.First;
      while not adoJSBS.Eof do
      begin
        iBooks:=iBooks + adoJSBS.fieldByName('CS').AsInteger;
        adoJSBS.Next;
      end;
    end;
    if iMax>iBooks then
      result:=True  //可以借书
    else
      result:=false;  //不可以借书
  finally
    adoJSXS.Close;
    adoJSBS.Close;
    adoMax.Close;
  end;
end;

initialization
  TComponentFactory.Create(ComServer, TxzBooksJieBook,
    Class_xzBooksJieBook, ciMultiInstance, tmApartment);
end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -