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 + -
显示快捷键?