📄 login.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Login.h" //登录窗体头文件
#include "Person.h" //主窗体头文件
#include "Pass_Pope_Modify.h" //修改密码、权限窗体头文件
#include "Crypt.cpp" //加密、解密程序文件
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TF_Login *F_Login;
//---------------------------------------------------------------------------
__fastcall TF_Login::TF_Login(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TF_Login::BitBtn1Click(TObject *Sender)
{ /*****登录按钮点击事件******/
if(Edit1->Text.IsEmpty()){ //用户工号输入框为空判断
ShowMessage("请输入用户工号");
Edit1->SetFocus(); //焦点仍在工号输入框中
}
else{ //以下代码判断用户的合法性和权限
ADOQ_Login->Close();
ADOQ_Login->SQL->Clear(); //清除SQL语句
ADOQ_Login->SQL->Add("SELECT * FROM Person_User"); //增加SQL语句
ADOQ_Login->SQL->Add("WHERE User_ID=:ID"); //条件为用户工号等于输入工号,设置一个参数ID
ADOQ_Login->Parameters->ParamByName("ID")->Value = Edit1->Text; //参数ID赋值
ADOQ_Login->Open(); //执行Add的SQL语句
if(ADOQ_Login->RecordCount!=1||ADOQ_Login->FieldByName("User_Password")->AsString.SubString(1,E_Password->Text.Length())!=Encrypt(E_Password->Text)){ //如果用户工号或密码不对则提示密码错
//另外AnsiString.Trim()函数可以去掉后面的空格,原字符串保持不变,上句可以使用此函数
if(ADOQ_Login->RecordCount != 1){
ShowMessage("用户工号不存在,请您重新输入");
Edit1->SetFocus();
}
if(Encrypt(E_Password->Text) != ADOQ_Login->FieldByName("User_Password")->AsString.SubString(1,E_Password->Text.Length())){
AnsiString str=ADOQ_Login->FieldByName("User_Password")->AsString;
ShowMessage("用户密码不正确,请您重新输入");
E_Password->SetFocus();
}
}
else{
if(ADOQ_Login->FieldByName("User_Popedom")->AsString.SubString(1,13) == "Administrator"){ //管理员权限判断
F_Main->MainMenu->Items->Items[0]->Items[1]->Enabled = true; //允许"用户注册"
F_Main->BB_Registry->Enabled = true;
F_Main->MainMenu->Items->Items[0]->Items[3]->Enabled = true; //允许"修改权限"
F_PP_Modi->CheckBox2->Enabled = true;
F_Main->TB_Pass_Modity->Enabled = true;
F_Main->TB_Rele_Modify->Enabled = true;
}
if(ADOQ_Login->FieldByName("User_Popedom")->AsString.SubString(1,4) == "User"){ //客户权限判断
F_Main->MainMenu->Items->Items[0]->Items[1]->Enabled = false; //禁止"用户注册"
F_Main->BB_Registry->Enabled = false;
F_Main->MainMenu->Items->Items[0]->Items[3]->Enabled = false; //禁止"修改权限"
F_PP_Modi->CheckBox2->Enabled = false;
F_Main->TB_Pass_Modity->Enabled = false;
F_Main->TB_Rele_Modify->Enabled = false;
}
F_Login->Close(); //关闭用户登录窗口
}
}
}
//---------------------------------------------------------------------------
void __fastcall TF_Login::BitBtn2Click(TObject *Sender)
{
/*****取消按钮点击事件******/
F_Login->Close(); //关闭窗口
Application->Terminate(); //中止程序运行
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -