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

📄 unitkaoqin.pas

📁 自己设计的一个简易的考勤管理系统
💻 PAS
字号:
unit UnitKaoqin;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, Grids, DBGrids, DB, ADODB, StdCtrls, ComCtrls,
  DBCtrls, Mask;

type
  TfrmKaoqin = class(TForm)
    Panel1: TPanel;
    GroupBox1: TGroupBox;
    Label1: TLabel;
    editID: TEdit;
    Label2: TLabel;
    editPassword: TEdit;
    btnEnter: TButton;
    btnQuit: TButton;
    StatusBar1: TStatusBar;
    Timer1: TTimer;
    btnAlterPwd: TButton;
    GroupBox2: TGroupBox;
    Label9: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Panel2: TPanel;
    Label8: TLabel;
    Label10: TLabel;
    lblStatus: TLabel;
    lblTime: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    procedure Timer1Timer(Sender: TObject);
    procedure btnEnterClick(Sender: TObject);
    procedure btnQuitClick(Sender: TObject);
    procedure dataDisplay(id:string);
    procedure btnAlterPwdClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmKaoqin: TfrmKaoqin;
  uid,upwd : string;
  resultValue:integer;
  pass,status:boolean;
implementation
uses unitAlterPwd,unitDataModule;
{$R *.dfm}
procedure TfrmKaoqin.dataDisplay(id:string);
begin
    with dModule.ADOQU do
    begin
       edit1.Text := fieldbyname('name').AsString;
       edit2.Text := fieldbyname('id').AsString;
       edit3.Text := fieldbyname('major').AsString;
       edit4.Text := fieldbyname('sex').AsString;
       edit5.Text := fieldbyname('grade').AsString;
       edit6.Text := fieldbyname('class').AsString; 
    end;
end;
procedure TfrmKaoqin.Timer1Timer(Sender: TObject);
begin
    statusbar1.Panels[1].Text:= datetimetostr(Now);
end;

procedure TfrmKaoqin.btnEnterClick(Sender: TObject);
begin
    uid := trim(editID.Text);
    upwd := editPassword.Text;
    pass := dModule.check(uid,upwd,resultValue);
    if pass then
    begin
        with dModule.ADOQRecords do
        begin
            close;
            sql.Clear;
            sql.Add('select * from records where userid = ''' + uid + ''' order by timeIn asc'); //查询uid的最后一次登陆状态
            open;
            last;
            status := fieldbyname('isOn').AsBoolean;
            if status then
            begin
                messagedlg('你已于 ' + FieldByName('timeIn').asstring +' 登陆,请先登出后再登入',mtInformation,mbokcancel,0);
                editID.SetFocus;
            end
            else
            begin
                append;
                fieldbyname('userid').Value := uid;
                fieldbyname('timeIn').Value := DateTimeToStr(now);
                fieldbyname('isOn').Value := true; //标识用户已登陆
                post;
                editID.Clear;
                editPassword.Clear;
                editID.setfocus;

                dataDisplay(uid);  //重新用户显示
                lblStatus.Caption := '登入';  //修改状态显示
                lbltime.Caption := DateTimeToStr(now);
            end;
        end;
    end
    else
    begin
        case resultValue of
            1:
            begin
                messagebox(0,'该用户不存在!,请重新输入合法的用户ID','提示',0);
                editid.Clear;
                editpassword.Clear;
                editID.setfocus;
            end;
            2:
            begin
                messagebox(0,'密码错误,请重新输入','提示',0);
                editpassword.SetFocus;
            end;
        end;
    end; 
end;

procedure TfrmKaoqin.btnQuitClick(Sender: TObject);
begin
    uid := trim(editID.Text);
    upwd := editPassword.Text;
    pass := dModule.check(uid,upwd,resultValue);
    if pass then
    begin
        with dModule.ADOQRecords do
        begin
            close;
            sql.Clear;
            sql.Add('select * from records where userid = ''' + uid + ''' order by timeIn asc'); //查询uid的最后一次登陆状态
            open;
            last;
            status := fieldbyname('isOn').AsBoolean;
            if status then
            begin
                edit;
                fieldbyname('timeOut').Value := DateTimeToStr(now);
                fieldbyname('isOn').Value := false; //标识用户已登出
                post;

                datadisplay(uid);
                lblStatus.Caption := '登出';  //修改状态显示
                lbltime.Caption := DateTimeToStr(now);

                messagebox(0,'登出成功!','提示',0);
                editID.Clear;     //清空登陆记录
                editPassword.Clear;
                editID.setfocus;
            end
            else
                messagebox(0,'您尚未登入','提示',0); 
        end;
    end
    else
    begin
        case resultValue of
            1:
            begin
                messagebox(0,'该用户不存在!,请重新输入合法的用户ID','提示',0);
                editid.Clear;
                editpassword.Clear;
                editID.setfocus;
            end;
            2:
            begin
                messagebox(0,'密码错误,请重新输入','提示',0);
                editpassword.SetFocus;
            end;
        end;
    end;
end;
procedure TfrmKaoqin.btnAlterPwdClick(Sender: TObject);
begin
    uid := trim(editID.Text);
    upwd := editPassword.Text;
    pass := dModule.check(uid,upwd,resultValue);
    if pass then
    begin
            gUserID := uID;     //传值给弹出窗口的uid
            editID.clear;
            editPassword.clear;
            Application.CreateForm(TfrmAlterPwd, frmAlterPwd);
            frmAlterPwd.Show;
    end
    else
    begin
        case resultValue of
            1:
            begin
                messagebox(0,'该用户不存在!,请重新输入合法的用户ID','提示',0);
                editid.Clear;
                editpassword.Clear;
                editID.setfocus;
            end;
            2:
            begin
                messagebox(0,'密码错误,请重新输入','提示',0);
                editpassword.SetFocus;
            end;
        end;
    end;
end;

procedure TfrmKaoqin.FormClose(Sender: TObject; var Action: TCloseAction);
begin
    action := cafree;
end;

end.

⌨️ 快捷键说明

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