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

📄 login.pas

📁 教材管理系统
💻 PAS
字号:
unit login;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,Registry, Buttons, ExtCtrls, WinSkinData, DB, DBTables,
  XPMenu, SUIForm;

type
  TFrmlogin = class(TForm)
    Panel1: TPanel;
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Eduser: TEdit;
    Edpwd: TEdit;
    db1: TDatabase;
    QryGn: TQuery;
    Qryuser: TQuery;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    procedure Button2Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    //function GetUser(var userName,MyPermission:String):Boolean;
  private
    { Private declarations }
    MyReg:TRegistry;       //系统注册表
    lastUser:String;       //上次登录的用户名
    validUser:String;      //获取的有效用户名
    valid:Boolean;         //登录成功判断
    fSuper:Boolean;        //是否系统管理员
    IsFirstTime:Boolean;
  public
    { Public declarations }
  end;
function GetUser(var userName,MyPermission:String):Boolean;
var
 Frmlogin: TFrmlogin;
implementation
uses mycommon,server, main;
{$R *.dfm}

procedure TFrmlogin.Button2Click(Sender: TObject);
begin
close;
end;

procedure TFrmlogin.FormClose(Sender: TObject; var Action: TCloseAction);
begin
MyReg.Free;
  if QryUser.Active =true then
    QryUser.Close;
  if QryGn.Active =true then
    QryGn.Close;
  if db1.Connected =true then
    db1.Connected:=False;
end;
function GetUser(var UserName,MyPermission:String):Boolean;
var
   QryTemp:TQuery;
   modCnt, i :word;
   FrmLogIn: TFrmLogIn;
begin
  UserName:='';
  MyPermission:='';
  Result :=false;
  FrmLogin:=TFrmlogin.Create(Application);
  with Frmlogin do
  begin
    try
      QryTemp:=TQuery.Create(Application);
      QryTemp.DatabaseName:='logindb';
      with QryTemp do
      begin
        SQL.Clear;
        SQL.Add('SELECT *');
        SQL.Add('FROM operuser');
        Open;
        if eof then
        begin
          IsFirstTime:=True;
          Caption:='第一次登录,设置管理员密码';
          EdUser.Enabled:=False;
          EdUser.Text:='Administrator';
        end
        else
        begin
          IsFirstTime:=False;
        end;
      end;
      ShowModal;
      if not valid then exit;
      UserName:=validUser;

      QryGn.Active:=true;
      modCnt:=QryGn.Fields[0].asInteger;

      if fSuper then
      begin
        SetLength(MyPermission,modCnt);
        for i:=1 to modCnt do MyPermission[i]:='Y';
      end
      else
      begin
        QryUser.close;
        QryUser.parambyname('name').asstring:=edUser.text;
        QryUser.parambyname('pwd').asstring:=Encrypt(edpwd.text);
        QryUser.open;
        MyPermission:=QryUser.FieldByName('userright').asstring;
        if Length(MyPermission)<modCnt then
        begin
          SetLength(MyPermission,modCnt);
          for i:=Length(MyPermission) to modCnt do
            MyPermission[i]:='N';
        end;
      end;
      Result :=True;
    finally
      Free;
    end;
  end;
  end;
procedure TFrmlogin.FormCreate(Sender: TObject);
begin
//变量初始化
  lastUser:='';
  validUser:='';
  valid:=False;
  fSuper:=False;
  db1.LoginPrompt:=False;
  db1.Params.Clear;
  db1.Params.add('USER NAME='+pusername);
  db1.Params.add('PASSWORD='+ppassword);

  //访问注册表,取上次用户登录的工号
  MyReg:=TRegistry.Create;
  if MyReg.OpenKey('\Software\jcgl\UserLog',True) then
  begin
    try
      LastUser:=MyReg.ReadString('LastUser');
    except
      LastUser:='';
    end;
    MyReg.CloseKey ;
   end;
   edUser.Text :=LastUser;  //给用户名赋值
end;

procedure TFrmlogin.BitBtn1Click(Sender: TObject);
var
  QryTemp:TQuery;
begin
  if IsFirstTime Then
  begin
    QryTemp:=TQuery.Create(Application);
    QryTemp.DatabaseName:='logindb';
    QryTemp.SQL.Add('insert into operuser (username,password,Administrator) Values (:name,:pwd,1)');
    QryTemp.parambyname('name').asstring:=edUser.text;
    QryTemp.parambyname('name').asstring:='Administrator';
    QryTemp.parambyname('pwd').asstring:=Encrypt(edpwd.text);
    QryTemp.ExecSQL;
    Valid:=True;
    ValidUser:=edUser.text;
    fSuper:=True;
    if (edUser.Text<>LastUser) then
      if MyReg.OpenKey('\Software\jcgl\UserLog',True) then
      begin
        MyReg.WriteString('LastUser',edUser.Text);
        MyReg.CloseKey ;
      end;
   // Close;  //关闭窗口
  end
  else
  begin
    QryUser.close;
    QryUser.parambyname('name').asstring:=edUser.text;
    QryUser.parambyname('pwd').asstring:=Encrypt(edpwd.text);
    QryUser.open;
    if not QryUser.eof then
    begin
      Application.MessageBox('登录成功!','信息',mb_ok or mb_iconInformation);
      Valid:=True;
      ValidUser:=QryUser.fieldbyname('username').asstring;
      //frmmain.StatusBar1.Panels[1].Text := '登录用户:'+Validuser;
    if QryUser.FieldByName('Administrator').asboolean=True then  fSuper:=True;
      if (edUser.Text<>LastUser) then
      //frmmain.StatusBar1.Panels[0].Text := '登录用户:'+Qryuser.parambyname('name').AsString;
        if MyReg.OpenKey('\Software\jcgl\UserLog',True) then
        begin
          MyReg.WriteString('LastUser',edUser.Text);
          MyReg.CloseKey ;
        end;
        QryUser.close;
        Close;
    end;
    if not valid then
    begin
      Application.MessageBox('用户名或密码错误,'+#13+'请重新输入!','错误',mb_ok or mb_iconError);
      edUser.SetFocus;
      edUser.text:='';
      edpwd.Text:='';
    end;
  end;
end;

end.

⌨️ 快捷键说明

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