📄 certify.~cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Certify.h"
#include "DataUnit.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TCertifyDlg *CertifyDlg;
//---------------------------------------------------------------------------
__fastcall TCertifyDlg::TCertifyDlg(TComponent* Owner)
: TForm(Owner)
{
m_nTimes = 0 ;
m_strStuName = "" ;
}
//---------------------------------------------------------------------------
void __fastcall TCertifyDlg::OKBtnClick(TObject *Sender)
{
m_nTimes ++;
//首先根据用户选择的是教务还是学生,确定查询哪个数据表
if(RadioGroup1->ItemIndex == 0)
{
DataMod->EduManagQuery->SQL->Clear();
DataMod->EduManagQuery->Close();
//查询EduManager.db数据表
//首先查询是否有该用户名
AnsiString queryString = "Select * from EduManager";
queryString += " where EMName=\"";
queryString += UserEdt->Text ;
queryString += "\"" ;
try
{
DataMod->EduManagQuery->SQL->Add(queryString);
DataMod->EduManagQuery->ExecSQL() ;
DataMod->EduManagQuery->Active = true ;
}
catch(EDBEngineError &E)
{
MessageBox(this,"不能查询数据表","错误",MB_OK) ;
ModalResult = mrAbort ;
return ;
}
if (DataMod->EduManagQuery->RecordCount == 0)
{
//如果查询表中的记录数目为0,表示没有该用户名
if(m_nTimes == 3)
{
//如果已经出现三次错误,则显示该用户不合法,强行退出
MessageBox(NULL,"您不是合法用户!","登录数据库错误",MB_OK ) ;
ModalResult = mrAbort ;
//关闭对话框
Close() ;
}
else
{
//用户重新输入用户名
MessageBox(NULL,"用户名不存在,请重新输入","登录数据库错误",MB_OK) ;
UserEdt->Text = "";
//将光标移动到用户输入编辑框中
UserEdt->SetFocus() ;
PasswordEdt->Text = "" ;
ModalResult = mrNone ;
}
}
else
{
//用户名存在,则判断口令是否正确
queryString += " and EPassword =\"" ;
queryString += PasswordEdt->Text ;
queryString += "\"" ;
try
{
DataMod->EduManagQuery->SQL->Clear();
DataMod->EduManagQuery->SQL->Add(queryString);
DataMod->EduManagQuery->ExecSQL() ;
DataMod->EduManagQuery->Active = true ;
}
catch(EDBEngineError &E)
{
MessageBox(this,"不能查询数据表","错误",MB_OK ) ;
ModalResult = mrAbort ;
return ;
}
if (DataMod->EduManagQuery->RecordCount == 0)
{
//如果查询表中的记录数目为0,表示口令不正确
if(m_nTimes == 3)
{
//如果已经出现三次错误,则显示该用户不合法,强行退出
MessageBox(NULL,"您不是合法用户!","登录数据库错误",MB_OK ) ;
ModalResult = mrAbort ;
//关闭对话框
Close() ;
}
else
{
MessageBox(NULL,"口令不正确,请重新输入","登录数据库错误",MB_OK ) ;
//让用户重新输入口令
PasswordEdt->Text = "" ;
ModalResult = mrNone ;
}
DataMod->EduManagQuery->Close() ;
}
else
{
//找到记录,关闭数据表,并返回到主窗口中
DataMod->EduManagQuery->Close() ;
ModalResult = mrOk ;
}
}
}
else
{
//学生登录,查询Student.db数据表 (下面程序结构说明与教务登录类似,不再做说明了)
DataMod->StudentQuery->SQL->Clear();
DataMod->StudentQuery->Close();
AnsiString queryString = "Select * from Student";
queryString += " where StudentNo =\"";
queryString += UserEdt->Text ;
queryString += "\"" ;
try
{
DataMod->StudentQuery->SQL->Add(queryString);
DataMod->StudentQuery->ExecSQL() ;
DataMod->StudentQuery->Active = true ;
}
catch(EDBEngineError &E)
{
MessageBox(this,"不能查询数据表","错误",MB_OK) ;
ModalResult = mrAbort ;
return ;
}
if (DataMod->StudentQuery->RecordCount == 0)
{
if(m_nTimes == 3)
{
MessageBox(NULL,"您不是合法用户!","登录数据库错误",MB_OK ) ;
ModalResult = mrAbort ;
Close() ;
}
else
{
MessageBox(NULL,"用户名不存在,请重新输入","登录数据库错误",MB_OK ) ;
UserEdt->Text = "";
UserEdt->SetFocus() ;
PasswordEdt->Text = "" ;
ModalResult = mrNone ;
}
}
else
{
queryString += " and SPassword =\"" ;
queryString += PasswordEdt->Text;
queryString += "\"" ;
try
{
DataMod->StudentQuery->SQL->Clear();
DataMod->StudentQuery->SQL->Add(queryString);
DataMod->StudentQuery->ExecSQL();
DataMod->StudentQuery->Active =true;
}
catch(EDBEngineError &E)
{
MessageBox(this,"不能查询数据表","错误",MB_OK ) ;
ModalResult = mrAbort ;
return ;
}
if (DataMod->StudentQuery->RecordCount == 0)
{
if(m_nTimes == 3)
{
MessageBox(NULL,"您不是合法用户!","登录数据库错误",MB_OK) ;
ModalResult = mrAbort ;
Close() ;
}
else
{
MessageBox(NULL,"口令不正确,请重新输入","登录数据库错误",MB_OK ) ;
PasswordEdt->Text = "" ;
ModalResult = mrNone ;
}
DataMod->StudentQuery->Close() ;
}
else
{
m_strStuName = DataMod->StudentQuery->FieldValues["StudentName"] ;
DataMod->StudentQuery->Close() ;
ModalResult = mrOk ;
}
}
}
}
//---------------------------------------------------------------------------
void __fastcall TCertifyDlg::PasswordEdtKeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if(Key == VK_RETURN)
{
OKBtnClick(Sender) ;
}
}
//---------------------------------------------------------------------------
void __fastcall TCertifyDlg::UserEdtKeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if(Key == VK_RETURN)
{
PasswordEdt->SetFocus() ;
}
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -