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

📄 datamodule.pas

📁 包含详细的代码设计,实现图书管理系统功能.是一个很好的实例
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit DataModule;

interface

uses
  SysUtils, Classes, DB, ADODB,Forms,variants,Dialogs;

type
  TDM = class(TDataModule)
    ADOConnection1: TADOConnection;
    ADODataSetBookEdit: TADODataSet;
    DataSource1: TDataSource;
    ADODataSet2: TADODataSet;
    ADODataSetLendBook: TADODataSet;
    DataSourceLendBook: TDataSource;
    ADODataSetBookType: TADODataSet;
    DataSourceBookType: TDataSource;
    ADODataSetBookQuery: TADODataSet;
    ADODataSetBookStockQuery: TADODataSet;
    ADODataSetReaderQuery: TADODataSet;
    ADODataSetLendBookQuery: TADODataSet;
    ADODataSetUserQuery: TADODataSet;
  private
    { Private declarations }
  public
    { Public declarations }
    procedure InitAdoDatasetBookEdit;
    function CCheckBookNumber(bookid:string):boolean; //根据书ID获得书数
    function CCheckID(sql:string):boolean;            //传入SQL检测ID是否存在(通用)
    function GetBookName(bookid:string):string;       //根据书ID获得书名
    function InsertBookType(value1,value2:string):boolean;
    function UpdateBookType(value1,value2:string):boolean;
    function DeleteBookType(bookid:string):boolean;   //删除图书类型
    function GetBookTypeNum(value:string):integer;  //获得某类图书在库中总数
    function GetBookTypeName(typeid:string):string; //根据书类型ID获得类型名
    function GetBookTypeID(typename:string):string; // 根据书类型名获得类型ID
    function GetStockBookNum(bookid:string):integer;//获得库存中某书总数
    function DeleteBook(bookid:string):boolean;     //删除图书数为0的所有图书信息
    function ModifyPassword(username,newpass:string):boolean;    //修改用户密码
    function CheckUserPassword(username,password:string):boolean;//检测密码正确性
    function CheckUserName(username:string):boolean;             //检测用户名
    function GetUserPurviewMenu(username:string):boolean;        //获得用户权限可使用菜单
    function GetMenuName(menuid:string):string;                  //通过菜单ID获得菜单名
    function GetReaderEducationName(educationid:string):string;  //通过学历ID获得学历名
    function GetReaderEducationID(educationname:string):string;  //通过学历ID获得学历名
    function GetReaderTypeName(typeid:string):string;            //通过读者类型ID获得类型名
    function GetReaderTypeID(typeNAME:string):string;            //通过读者类型名获得类型ID
    function GetReaderLendBookNum(readercardid:string):integer;  //通过读者卡号获得读者所借书数(未归还书数)
    function GetReaderLendBookCount(readercardid:string):integer;//通过卡号返回此卡借书总数
    function CheckReaderLendBookName(readercardid,bookid:string):boolean;//检查未归还书中有无此书
    function SaveUserLongin(username:string;longin:boolean):boolean;     //登陆日志
    function GetAllBookNum:integer; // 获得库中图书总数
  end;

var
  DM: TDM;

implementation

uses MainU,ShareU;
{$R *.dfm}


//保存登陆日志
function TDM.SaveUserLongin(username:string;longin:boolean):boolean;
var
  Query:TADOQuery;
begin
     Query:=TADOQuery.Create(self);
     Query.Connection:=ADOConnection1;
     try
     dm.ADOConnection1.BeginTrans;
     if longin then
     begin
       Query.SQL.Text:='insert into User_LoginLog (username,uptime,downtime)'+
                     'values (:username,:uptime,:downtime)';
       Query.Parameters.ParamByName('username').Value:=username;
       Query.Parameters.ParamByName('uptime').Value:=CurUserLonginTime;
       Query.Parameters.ParamByName('downtime').Value:=CurUserLonginTime;
     end
     else
     begin
       Query.SQL.Text:='update User_LoginLog set downtime=:downtime where'+
                       ' username=:username and uptime=:uptime';
       Query.Parameters.ParamByName('downtime').Value:=now;
       Query.Parameters.ParamByName('username').Value:=username;
       Query.Parameters.ParamByName('uptime').Value:=CurUserLonginTime;
     end;
     Query.ExecSQL;
     dm.ADOConnection1.CommitTrans;
     result:=true;
     except
       dm.ADOConnection1.RollbackTrans;
       result:=false;
     end;
     
     Query.Close;
     Query.Free;
end;

//检查未归还书中有无此书
function TDM.CheckReaderLendBookName(readercardid,bookid:string):boolean;
var
  Query:TADOQuery;
begin
   Query:=TADOQuery.Create(self);
   Query.Connection:=dm.ADOConnection1;
   Query.SQL.Text:='select bookid from lend_book where readercardid=:id '+
                   'and bookid=:bookid and state=1';
   Query.Parameters.ParamByName('id').Value:=readercardid;
   Query.Parameters.ParamByName('bookid').Value:=bookid;
   Query.Open;
   if not (query.RecordCount >0) then
       Result:=false  //没
   else
       result:=true;  //有
   Query.Close;
   Query.Free;
end;

//通过卡号返回此卡借书总数
function TDM.GetReaderLendBookCount(readercardid:string):integer;
var
  Query:TADOQuery;
begin
   Query:=TADOQuery.Create(self);
   Query.Connection:=dm.ADOConnection1;
   Query.SQL.Text:='select lendbook from reader_type where readertypeid in '+
                   ' (select readertypeid from reader_info where '+
                   ' readercardid=:readercardid)';
   Query.Parameters.ParamByName('readercardid').Value:=readercardid;
   Query.Open;
   Result:=query.FieldValues['lendbook'];
   Query.Close;
   Query.Free;
end;

//通过读者卡号获得读者所借书数(未归还书数)
function TDM.GetReaderLendBookNum(readercardid:string):integer;
var
  Query:TADOQuery;
begin
   Query:=TADOQuery.Create(self);
   Query.Connection:=dm.ADOConnection1;
   Query.SQL.Text:='select readercardid from lend_book where readercardid=:'+
                   'readercardid and state=:state';
   Query.Parameters.ParamByName('readercardid').Value:=readercardid;
   Query.Parameters.ParamByName('state').Value:=1;
   Query.Open;
   Result:=Query.RecordCount;
   Query.Close;
   Query.Free;
end;

//通过学历ID获得学历名
function TDM.GetReaderEducationID(educationname:string):string;
var
  Query:TADOQuery;
begin
    Query:=TADOQuery.Create(self);
    Query.Connection:=ADOConnection1;
    Query.SQL.Text:='select educationid from reader_education where '+
                           ' educationname=:name';
    Query.Parameters.ParamByName('name').Value:=educationname;
    Query.Open;
    result:=trim(Query.FieldValues['educationid']);
    Query.Close;
    Query.Free;
end;

//通过类型ID获得类型名
function TDM.GetReaderTypeName(typeid:string):string;
var
  Query:TADOQuery;
begin
    Query:=TADOQuery.Create(self);
    Query.Connection:=ADOConnection1;
    Query.SQL.Text:='select typename from reader_type where '+
                           ' readertypeid=:id';
    Query.Parameters.ParamByName('id').Value:=typeid;
    Query.Open;
    result:=trim(Query.FieldValues['typename']);
    Query.Close;
    Query.Free;
end;

//通过类型ID获得类型名
function TDM.GetReaderTypeID(typename:string):string;
var
  Query:TADOQuery;
begin
    Query:=TADOQuery.Create(self);
    Query.Connection:=ADOConnection1;
    Query.SQL.Text:='select readertypeid from reader_type where '+
                           ' typename=:name';
    Query.Parameters.ParamByName('name').Value:=typename;
    Query.Open;
    result:=trim(Query.FieldValues['readertypeid']);
    Query.Close;
    Query.Free;
end;

//通过学历ID获得学历名
function TDM.GetReaderEducationName(educationid:string):string;
var
  Query:TADOQuery;
begin
    Query:=TADOQuery.Create(self);
    Query.Connection:=ADOConnection1;
    Query.SQL.Text:='select educationname from reader_education where '+
                           ' educationid=:id';
    Query.Parameters.ParamByName('id').Value:=educationid;
    Query.Open;
    result:=trim(Query.FieldValues['educationname']);
    Query.Close;
    Query.Free;
end;

//通过菜单ID获得菜单名
function TDM.GetMenuName(menuid:string):string;
var
  Query:TADOQuery;
begin
    Query:=TADOQuery.Create(self);
    Query.Connection:=ADOConnection1;
    Query.SQL.Text:='select menuname from menu_info where menuid=:id';
    Query.Parameters.ParamByName('id').Value:=menuid;
    Query.Open;
    result:=trim(Query.FieldValues['menuname']);
    Query.Close;
    Query.Free;
end;

//获得用户权限可使用菜单
function TDM.GetUserPurviewMenu(username:string):boolean;
var
  Query:TADOQuery;
  tempmenuname:string;
begin
    Query:=TADOQuery.Create(self);
    Query.Connection:=ADOConnection1;
    Query.SQL.Text:='select menuid from user_purview where username=:name';
    Query.Parameters.ParamByName('name').Value:=username;
    Query.Open;
    Query.First;
    while not Query.Eof do
    begin
        tempmenuname:=GetMenuName(Query.FieldByName('menuid').AsString);
        EnabledMenu(tempmenuname);
        Query.Next;
    end;
    result:=true;
    Query.Close;
    Query.Free;
end;

//检测用户名
function TDM.CheckUserName(username:string):boolean;
var
  Query:TADOQuery;
begin
    Query:=TADOQuery.Create(self);
    Query.Connection:=ADOConnection1;

    Query.SQL.Text:='select username from user_info where username=:name';
    Query.Parameters.ParamByName('name').Value:=username;
    Query.Open;
    if query.RecordCount=1 then
      result:=true
    else
      result:=false;
  Query.Close;
  Query.Free;
end;

//检测密码正确性
function TDM.CheckUserPassword(username,password:string):boolean;
var
  Query:TADOQuery;
begin
    Query:=TADOQuery.Create(self);
    Query.Connection:=ADOConnection1;

    Query.SQL.Text:='select userpassword from user_info where username=:name';
    Query.Parameters.ParamByName('name').Value:=username;
    Query.Open;
    if trim(Query.FieldByName('userpassword').Value)=password then
      result:=true
    else
      result:=false;
  Query.Close;
  Query.Free;

⌨️ 快捷键说明

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