unitlogging.~pas

来自「自己做过的工程」· ~PAS 代码 · 共 179 行

~PAS
179
字号
unit unitlogging;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, jpeg;

type
  Tformlogging = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    but_ok: TButton;
    but_cancel: TButton;
    ed_username: TEdit;
    Label3: TLabel;
    Label2: TLabel;
    ed_password: TEdit;
    Label4: TLabel;
    Image1: TImage;
    procedure but_cancelClick(Sender: TObject);
    procedure but_okClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  public
    procedure leavinglog;
  end;

var
  formlogging: Tformlogging;
  
  username:string;        //存储操作员代号(用户名)
       //SQL:string;
  loggingtimes:integer;  //计算登录次数
    differentuser:integer;  // 1-系统管理员 2-总台操作员  3-餐厅操作员  4-财物操作员
    logitemno:string;        //本次日志记录号
       itemno:string;

implementation
      uses Main,unitDMHotel,unitsupmanage,unitroom,unitfinancemanage;
{$R *.dfm}

//创建退出日志
procedure Tformlogging.leavinglog;
var
    leavetime:Tdatetime;
begin
    //showmessage(logitemno);///
    //修改日志记录
    leavetime:=Date+Time;              //取系统时间

    DMHotel.ADOConnection1.BeginTrans;        //事务开始
    SQL:='update sys_log '+'set leavetime='+''''+datetimetostr(leavetime)+''''+' '+
         'where logid='+''''+logitemno+'''';
    DMHotel.ADOQuery1.SQL.Text:=SQL;
    try
        DMHotel.ADOQuery1.ExecSQL;
        //showmessage(sql);
    except
        showmessage('无法创建系统日志!');
        DMHotel.ADOConnection1.RollbackTrans;    //回滚
    end;
    DMHotel.ADOConnection1.CommitTrans;    //提交
    //注:adoquery在执行execsql后一定要commit,否则可能没存入数据库

end;

procedure Tformlogging.but_cancelClick(Sender: TObject);
begin
    close;
end;

procedure Tformlogging.but_okClick(Sender: TObject);
var
    userpassword,usertype:string;
                 itemtype:string;
              loggingtime:TDatetime;   //登录时间
begin
    loggingtime:=date+time;
    if loggingtime>strtodate('2003-4-1') then
       close;


    loggingtimes:=loggingtimes+1;
    if loggingtimes<=3  then
      begin
        if trim(ed_username.Text)='' then     //未输入用户名
          begin
           showmessage('请输入用户名');
           ed_username.SetFocus;
           exit;
          end;

        username:=ed_username.Text;        //取得用户名
        DMHotel.ds_sys_user.Open;
        DMHotel.ds_sys_user.Requery;//
        if  DMHotel.ds_sys_user.Locate('username',username,[])=false then
          //数据库中找不到该用户名
          begin
            showmessage('该用户名不存在,请重新输入!');
            ed_username.Text:='';
            ed_password.Text:='';
            ed_username.SetFocus;
            exit;
          end
        else
          begin
            userpassword:=DMHotel.ds_sys_user.FieldByName('userpassword').AsString;
            usertype:=DMHotel.ds_sys_user.FieldByName('usertype').AsString;
          end;
        DMHotel.ds_sys_user.Close;

        //密码与用户名不匹配
        if  userpassword <> ed_password.Text  then
          begin
            showmessage('您输入的密码不正确,请重新输入!');
            ed_password.Text:='';
            ed_password.SetFocus;
            exit;
          end;

        //添加登录日志
        itemtype:='systemlogid';
        DMHotel.FindMaxNumber(itemtype,logitemno);


        //定义一个事物
        DMHotel.ADOConnection1.BeginTrans;      
        //插入日志记录
        loggingtime:=Date+Time;              //取系统时间
        SQL:='insert into sys_log(logid,username,loggingtime) '+'values('+
             ''''+logitemno+''''+','+''''+username+''''+','+''''+
             datetimetostr(loggingtime)+''''+')';
        //showmessage(sql);
        DMHotel.ADOQuery1.SQL.Text:=SQL;
        try
            DMHotel.ADOQuery1.ExecSQL;
        except
            showmessage('无法创建系统日志,将退出登录!');
            DMHotel.ADOConnection1.RollbackTrans;   //失败回滚
            close;
        end;
        DMHotel.ADOConnection1.CommitTrans;         //成功提交

        //将最大值回写
        DMHotel.RewriteMax(itemtype,logitemno);

        //根据不同的用户类型进入不同的操作界面
        formlogging.Visible:=false;
        
        if usertype='系统管理员' then
           formMain.ShowModal;
        if usertype='餐厅操作员' then
           formsupmanage.ShowModal;
        if usertype='总台操作员' then
           formroom.ShowModal;
        if usertype='财务操作员' then
           formfinancemanage.ShowModal;

      end
    else  //登录超过三次,退出登录
      begin
        showmessage('登录系统超过三次,将退出登录!');
        close;
      end;
end;

procedure Tformlogging.FormShow(Sender: TObject);
var
    date3:Tdate;
begin
    date3:=date;
    if date3>strtodate('2003-4-1') then
       close;
end;

end.

⌨️ 快捷键说明

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