diff --git a/代码/cpp/car_dealer_util/proj/vs2019/car_dealer_util/car_dealer_util.vcxproj b/代码/cpp/car_dealer_util/proj/vs2019/car_dealer_util/car_dealer_util.vcxproj
index 9644f87..977209b 100644
--- a/代码/cpp/car_dealer_util/proj/vs2019/car_dealer_util/car_dealer_util.vcxproj
+++ b/代码/cpp/car_dealer_util/proj/vs2019/car_dealer_util/car_dealer_util.vcxproj
@@ -17,6 +17,7 @@
+
@@ -44,6 +45,7 @@
+
diff --git a/代码/cpp/car_dealer_util/proj/vs2019/car_dealer_util/car_dealer_util.vcxproj.filters b/代码/cpp/car_dealer_util/proj/vs2019/car_dealer_util/car_dealer_util.vcxproj.filters
index b2ccef6..b77c246 100644
--- a/代码/cpp/car_dealer_util/proj/vs2019/car_dealer_util/car_dealer_util.vcxproj.filters
+++ b/代码/cpp/car_dealer_util/proj/vs2019/car_dealer_util/car_dealer_util.vcxproj.filters
@@ -80,6 +80,9 @@
{f51a3f4d-ff6f-4590-b123-b61afde72f0a}
+
+ {7f951e1f-a198-4833-bbec-853de77c8cfe}
+
@@ -127,6 +130,9 @@
数据\数据结构\用户信息
+
+ 数据\全局对象
+
@@ -196,5 +202,8 @@
数据\数据结构\用户信息
+
+ 数据\全局对象
+
\ No newline at end of file
diff --git a/代码/cpp/car_dealer_util/source/Data/AppParameters/AppParameters.cpp b/代码/cpp/car_dealer_util/source/Data/AppParameters/AppParameters.cpp
new file mode 100644
index 0000000..96da209
--- /dev/null
+++ b/代码/cpp/car_dealer_util/source/Data/AppParameters/AppParameters.cpp
@@ -0,0 +1,4 @@
+
+#include "AppParameters.h"
+
+UserInfo * pStaffInfo = nullptr;
\ No newline at end of file
diff --git a/代码/cpp/car_dealer_util/source/Data/AppParameters/AppParameters.h b/代码/cpp/car_dealer_util/source/Data/AppParameters/AppParameters.h
new file mode 100644
index 0000000..c6e545b
--- /dev/null
+++ b/代码/cpp/car_dealer_util/source/Data/AppParameters/AppParameters.h
@@ -0,0 +1,7 @@
+
+#pragma once
+
+#include
+#include "../Datastructure/UserInfo/UserInfo.h"
+
+extern UserInfo * pStaffInfo;
diff --git a/代码/cpp/car_dealer_util/source/Data/AppParameters/全局变量目录.txt b/代码/cpp/car_dealer_util/source/Data/AppParameters/全局变量目录.txt
new file mode 100644
index 0000000..e69de29
diff --git a/代码/cpp/car_dealer_util/source/Data/query/query_user.cpp b/代码/cpp/car_dealer_util/source/Data/query/query_user.cpp
index 8cd624c..5866219 100644
--- a/代码/cpp/car_dealer_util/source/Data/query/query_user.cpp
+++ b/代码/cpp/car_dealer_util/source/Data/query/query_user.cpp
@@ -21,12 +21,12 @@ UserInfo queryUserInfo( const string & userName,
int returnCode = 0;
- otext szSqlQueryStaff[] =
+ string sqlQueryStaff =
"SELECT a.staff_p13, a.staff_name, b.staff_post \n"
"FROM staff_info a, \n"
"staff_post_code b \n"
"WHERE a.staff_post_code = b.staff_post_code \n"
- "AND a.staff_p13 = :p13 ";
+ "AND a.staff_p13 = :p13";
returnCode = OCI_Initialize( l_error_handler, nullptr, OCI_ENV_DEFAULT );
@@ -56,16 +56,16 @@ UserInfo queryUserInfo( const string & userName,
{
pStmt = OCI_StatementCreate( pConn );
+ OCI_Prepare(pStmt, sqlQueryStaff.c_str());
OCI_AllowRebinding( pStmt, true );
- OCI_Prepare( pStmt, szSqlQueryStaff );
-
OCI_BindString( pStmt, ":p13", const_cast(staffP13.c_str()), staffP13.size() );
+
OCI_Execute( pStmt );
-
+
pResult = OCI_GetResultset( pStmt );
//检查结果集,如果没有返回,则说明没有此用户
- if ( OCI_FetchFirst( pResult ) == false )
+ if ( OCI_FetchNext( pResult ) == false )
{
throw runtime_error( "用户不存在!" );
}
diff --git a/代码/cpp/car_dealer_util/source/Data/query/query_user.h b/代码/cpp/car_dealer_util/source/Data/query/query_user.h
index aa0c5f8..85c05f2 100644
--- a/代码/cpp/car_dealer_util/source/Data/query/query_user.h
+++ b/代码/cpp/car_dealer_util/source/Data/query/query_user.h
@@ -2,4 +2,9 @@
#pragma once
#include
+#include "../Datastructure/UserInfo/UserInfo.h"
+UserInfo queryUserInfo( const std::string & userName,
+ const std::string & password,
+ const std::string & tnsName,
+ const std::string & staffP13 );
diff --git a/代码/cpp/car_dealer_util/source/widgets/LoginWidget/QLoginDialog.cpp b/代码/cpp/car_dealer_util/source/widgets/LoginWidget/QLoginDialog.cpp
index 5f90b80..7205f8f 100644
--- a/代码/cpp/car_dealer_util/source/widgets/LoginWidget/QLoginDialog.cpp
+++ b/代码/cpp/car_dealer_util/source/widgets/LoginWidget/QLoginDialog.cpp
@@ -1,5 +1,12 @@
-#include "QLoginDialog.h"
+#include
+#include "QLoginDialog.h"
#include "../../system/system_util.h"
+#include "../../data/Datastructure/UserInfo/UserInfo.h"
+#include "../../data/query/query_user.h"
+#include "../../data/AppParameters/AppParameters.h"
+#include
+
+using namespace std;
QLoginDialog::QLoginDialog( QWidget * parent )
: QDialog( parent )
@@ -24,26 +31,40 @@ void QLoginDialog::initData()
{
returnCode = EXIT;
- systemUserName = QString::fromStdWString(getUserName());
+ systemUserName = QString::fromStdWString( getUserName() );
}
void QLoginDialog::initSignal()
{
- connect(ui.pButtonOK, SIGNAL(clicked()), this, SLOT(onOK()));
- connect(ui.pButtonExit, SIGNAL(clicked()), this, SLOT(onExit()));
+ connect( ui.pButtonOK, SIGNAL( clicked() ), this, SLOT( onOK() ) );
+ connect( ui.pButtonExit, SIGNAL( clicked() ), this, SLOT( onExit() ) );
}
void QLoginDialog::initWidgets()
{
setLayout( ui.pLayoutMain );
- ui.pEditSystemUserName->setText(systemUserName);
+ ui.pEditSystemUserName->setText( systemUserName );
+
+ try
+ {
+ queryStaffInfo( systemUserName );
+ }
+ catch ( runtime_error & error )
+ {
+ //如果出现异常,就不让用户继续登录
+ QMessageBox::critical( nullptr,
+ "错误,请联系管理员!",
+ QString::fromLocal8Bit( error.what() ) );
+
+ ui.pButtonOK->setEnabled( false );
+ }
}
void QLoginDialog::onOK()
{
returnCode = OK;
-
+
this->close();
}
@@ -53,3 +74,19 @@ void QLoginDialog::onExit()
this->close();
}
+
+void QLoginDialog::queryStaffInfo( const QString & systemUserName )
+{
+ string userName = "car_dealer";
+ string password = "cpic123456";
+ string tnsName = "xmcx1";
+
+ string staffP13 = systemUserName.toLocal8Bit();
+
+ UserInfo && info = queryUserInfo( userName,
+ password,
+ tnsName,
+ staffP13 );
+
+ pStaffInfo = new UserInfo( info );
+}
diff --git a/代码/cpp/car_dealer_util/source/widgets/LoginWidget/QLoginDialog.h b/代码/cpp/car_dealer_util/source/widgets/LoginWidget/QLoginDialog.h
index b119ddb..b244a53 100644
--- a/代码/cpp/car_dealer_util/source/widgets/LoginWidget/QLoginDialog.h
+++ b/代码/cpp/car_dealer_util/source/widgets/LoginWidget/QLoginDialog.h
@@ -27,6 +27,9 @@ protected Q_SLOTS:
void onOK();
void onExit();
+private:
+ void queryStaffInfo( const QString & systemUserName );
+
private:
Ui::QLoginDialog ui;
ReturnCode returnCode;