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

📄 logon_u.~pas

📁 汽车维修系统的设计
💻 ~PAS
字号:
unit logon_u;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, Buttons, DBCtrls, DB, ADODB,inifiles,
  ComCtrls,jpeg;

type
  TloginFrm = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    DBLookupComboBox1: TDBLookupComboBox;
    Image1: TImage;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    Bevel1: TBevel;
    Bevel2: TBevel;
    DataSource1: TDataSource;
    UserTable: TADOTable;
    ADOQuery1: TADOQuery;
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    procedure DBLookupComboBox1KeyPress(Sender: TObject; var Key: Char);
    procedure Edit2KeyPress(Sender: TObject; var Key: Char);
    Function IsUser(mystr1,mystr2:string):Boolean;    //检测用户密码是否正确
    procedure WriteIniFile();  //注册服务器名称
    procedure ReadIniFile();   //读取配置文件
    Function isConfigIni():Boolean;
    procedure FormActivate(Sender: TObject);
    Function DeCrypt(const S: string;key:word):string;
    procedure Edit1Change(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }

  end;

var
  loginFrm: TloginFrm;
  myTitle:string;      //读取主窗口标题设置信息
implementation

uses MyDM_u, MainFrm_u;

{$R *.dfm}

procedure TloginFrm.BitBtn2Click(Sender: TObject);
begin
  application.Terminate ;
end;

procedure TloginFrm.BitBtn1Click(Sender: TObject);
var
  strConn:string;
  strMess:string;
begin
  strMess:='初始化错误,数据库连接失败!'+char(13)+'请检查网络连接是否正常,服务器是否可用。';
  if not myDM.Conn.Connected  then
     begin
        if Edit1.text='' then
           begin
               application.MessageBox('没有可用的数据库服务器可连接!','',mb_ok+mb_IconExclamation);
               edit1.SetFocus ;
               abort;
           end;
        strConn:='Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source='+trim(Edit1.Text) ;
        //strConn:='Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=myDataBase;Data Source='+trim(Edit1.Text);
        myDM.Conn.ConnectionString:=strConn;
        try
            myDM.Conn.Connected:=True;
        except
            application.MessageBox(pchar(strMess),'连接错误',MB_OK+mb_IconError);
            abort;
        end;
        UserTable.Active:=True;
     end;

  if DBLookupComboBox1.Text='' then
     begin
         application.MessageBox('请确认您登陆的用户名!','提示',mb_ok+mb_IconExclamation);
         DBLookupComboBox1.SetFocus ;
         abort;
     end;
  if Edit2.Text='' then
     begin
         application.MessageBox('请输入您的密码!','提示',mb_ok+mb_IconExclamation);
         Edit2.SetFocus ;
         abort;
     end;
   with AdoQuery1 do
       begin
          //核对用户名和密码是否相符
          if not IsUser(trim(DBLookupComboBox1.KeyValue),DeCrypt(trim(Edit2.Text),2468))  then
             begin
                 application.MessageBox ('您的密码输入有误,请重新输入!','提示',mb_ok+mb_iconExclamation);
                 edit2.Clear ;
                 edit2.SetFocus ;
                 exit;
             end;
           MainFrm.str_uid:=trim(FieldByName('uid').Asstring);
           MainFrm.str_UserName:=trim(FieldByName('Uid').Asstring);
           MainFrm.str_pwd:=trim(FieldByName('Pwd').Asstring);
           Mainfrm.Caption:=myTitle;
           Mainfrm.strServerName:=trim(Edit1.Text);
           if not isConfigIni then WriteIniFile;
       end;
   self.Close;
   with MainFrm do
       begin
           StatusBar1.Panels[1].Text:='操作员:'+str_UserName;
           //StatusBar1.Panels[3].Text:=FormatDateTime('yyyy年mm月dd日  ddd',now);
           StatusBar1.Panels[3].Text:=FormatDateTime('HH:MM:SS',now);
        end;
end;

procedure TloginFrm.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if key=#13 then DBLookupComboBox1.SetFocus ;
end;

procedure TloginFrm.DBLookupComboBox1KeyPress(Sender: TObject;
  var Key: Char);
begin
  if key=#13 then Edit2.SetFocus ;
end;

procedure TloginFrm.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
   if key=#13 then BitBtn1.SetFocus ;
end;

Function TloginFrm.IsUser(mystr1,mystr2:string):Boolean;
begin
  with AdoQuery1 do
      begin
          close;
          sql.Clear ;
          sql.Add('select * from Userdb where uid=:a and Pwd=:b');
          parameters[0].value :=mystr1;
          parameters[1].value:=mystr2;
          open;
      end;
  if ADOQuery1.RecordCount >0 then
     result:=True
  else
     result:=False;
end;

//系统启动时返回读取服务器配置文件是否成功
//如果不成功则注册服务器,以便下次启动时直接与之连接
procedure TloginFrm.ReadIniFile();
var
 myinifile:Tinifile;
begin
 myinifile:=Tinifile.create('CfgServer.ini');     //打开INI文件
 Edit1.text:=myinifile.readString('服务器名称','ServerName','');   //读取INI文件
 myTitle:=myinifile.ReadString('公司名称','Company','');
end;

Function TloginFrm.isConfigIni():Boolean;
var
 myinifile:Tinifile;
 S:string;
begin
 myinifile:=Tinifile.create('CfgServer.ini');     //打开INI文件
 s:=myinifile.readString('服务器名称','ServerName','');      //读取INI文件
 if S='' then
    result:=False
 else
    result:=True;
end;

procedure TloginFrm.WriteIniFile();  //注册服务器名称
var
   myinifile:Tinifile;
begin
   if (edit1.text='')then exit;
   myinifile:=Tinifile.create('CfgServer.ini');            //打开INI文件
   myinifile.writestring('服务器名称','ServerName', edit1.text);     //将服器名写入INI文件
   myinifile.writestring('公司名称','Company','汽车维修管理系统') ;
   myinifile.writestring('时间','Time',datetostr(date()));          //将注册日期添加到INI文件
   myinifile.Destroy;     //释放myinifile

end;

procedure TloginFrm.FormActivate(Sender: TObject);
begin
  //如果读取文件成功则把注册的服务器名赋值给Edit1
  if isConfigIni then ReadIniFile ;

  //if not myDM.Conn.Connected=True then
  //   UserTable.Active:=True;
end;

Function TloginFrm.DeCrypt(const S: string;key:word):string;
var
   i:byte;
begin
   SetLength(result, Length(s));
   for i:=1 to Length(S) do
       begin
          Result[i]:=Char(byte(s[i])XOR(key shr 8));
          //key:=(byte(s[i])+key)*C1+C2;
       end;
end;

procedure TloginFrm.Edit1Change(Sender: TObject);
var
   strConn,strMess:string;
begin
   strMess:='初始化错误,数据库连接失败!'+char(13)+'请检查网络连接是否正常,服务器是否可用。';
   strConn:='Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=' +trim(Edit1.Text);
        //strConn:='Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=myDataBase;Data Source=';
   myDM.Conn.ConnectionString:=strConn;
   try
      begin
         myDM.Conn.Connected:=True;
         UserTable.Active:=True;
      end
   except
      application.MessageBox(pchar(strMess),'连接错误',MB_OK+mb_IconError);
      abort;
   end;

end;

end.

⌨️ 快捷键说明

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