diff --git a/backend/include/database.h b/backend/include/database.h index 08107c6..1747354 100644 --- a/backend/include/database.h +++ b/backend/include/database.h @@ -15,6 +15,11 @@ class UserDataBase { UserDataBase() = default; void Open(std::string file_name); bool PAM(const std::string &user_id, const std::string &password); + int GetPrevilege(const std::string &user_id); + void AddUser(const std::string &user_id, const std::string &password, + const std::string &user_name, int privilege); + void DeleteUser(const std::string &user_id); + void ChangePassword(const std::string &user_id, const std::string &password); }; class BookDataBase { DriveArray full_book_data; @@ -22,6 +27,12 @@ class BookDataBase { public: void Open(std::string file_name); + void QueryBook(const std::string &ISBN, const std::string &name, + const std::string &author, const std::string &keyword, + std::vector &ret); + void ModifyInfo(const std::string &ISBN, const std::string &name, + const std::string &author, const std::string &keyword, + double price); }; class LogDataBase { DriveArray finance_data; @@ -29,6 +40,7 @@ class LogDataBase { public: void Open(std::string file_name); + void QueryFinance(int count, std::vector &ret); }; #endif // PROTECTOR_DATABASE_HPP \ No newline at end of file diff --git a/backend/src/engine.cpp b/backend/src/engine.cpp index f5c41bf..7895537 100644 --- a/backend/src/engine.cpp +++ b/backend/src/engine.cpp @@ -16,7 +16,8 @@ BookStoreEngineClass::BookStoreEngineClass(std::string __config_dir, is_server = __is_server; } std::vector BookStoreEngineClass::Execute( - const std::string &cmd, std::stack> &login_stack) { + const std::string &cmd, + std::stack> &login_stack) { for (int i = 0; i < cmd.length(); i++) if (std::isspace(cmd[i]) && cmd[i] != ' ') return std::vector({"Invalid"}); @@ -87,11 +88,9 @@ std::vector BookStoreEngineClass::Execute( return ExecuteBuy(cmd, login_stack); } case OperationType::__Kreport: { - // throw FatalError("report Not implemented", 2); return ExecuteReport(cmd, login_stack); } case OperationType::__Klog: { - // throw FatalError("log Not implemented", 3); return ExecuteLog(cmd, login_stack); } } @@ -100,71 +99,88 @@ std::vector BookStoreEngineClass::Execute( } std::vector BookStoreEngineClass::ExecuteSu( - const std::string &cmd, std::stack> &login_stack) { + const std::string &cmd, + std::stack> &login_stack) { + std::string user_id, password; + if (!CommandSuLexer(cmd, user_id, password)) + return std::vector({"Invalid"}); return std::vector(); } std::vector BookStoreEngineClass::ExecuteLogout( - const std::string &cmd, std::stack> &login_stack) { + const std::string &cmd, + std::stack> &login_stack) { return std::vector(); } std::vector BookStoreEngineClass::ExecuteRegister( - const std::string &cmd, std::stack> &login_stack) { + const std::string &cmd, + std::stack> &login_stack) { return std::vector(); } std::vector BookStoreEngineClass::ExecutePasswd( - const std::string &cmd, std::stack> &login_stack) { + const std::string &cmd, + std::stack> &login_stack) { return std::vector(); } std::vector BookStoreEngineClass::ExecuteUserAdd( - const std::string &cmd, std::stack> &login_stack) { + const std::string &cmd, + std::stack> &login_stack) { return std::vector(); } std::vector BookStoreEngineClass::ExecuteDelete( - const std::string &cmd, std::stack> &login_stack) { + const std::string &cmd, + std::stack> &login_stack) { return std::vector(); } std::vector BookStoreEngineClass::ExecuteShow( - const std::string &cmd, std::stack> &login_stack) { + const std::string &cmd, + std::stack> &login_stack) { return std::vector(); } std::vector BookStoreEngineClass::ExecuteBuy( - const std::string &cmd, std::stack> &login_stack) { + const std::string &cmd, + std::stack> &login_stack) { return std::vector(); } std::vector BookStoreEngineClass::ExecuteSelect( - const std::string &cmd, std::stack> &login_stack) { + const std::string &cmd, + std::stack> &login_stack) { return std::vector(); } std::vector BookStoreEngineClass::ExecuteMOdify( - const std::string &cmd, std::stack> &login_stack) { + const std::string &cmd, + std::stack> &login_stack) { return std::vector(); } std::vector BookStoreEngineClass::ExecuteImport( - const std::string &cmd, std::stack> &login_stack) { + const std::string &cmd, + std::stack> &login_stack) { return std::vector(); } std::vector BookStoreEngineClass::ExecuteShowFinance( - const std::string &cmd, std::stack> &login_stack) { + const std::string &cmd, + std::stack> &login_stack) { return std::vector(); } std::vector BookStoreEngineClass::ExecuteLog( - const std::string &cmd, std::stack> &login_stack) { + const std::string &cmd, + std::stack> &login_stack) { return std::vector(); } std::vector BookStoreEngineClass::ExecuteReport( - const std::string &cmd, std::stack> &login_stack) { + const std::string &cmd, + std::stack> &login_stack) { return std::vector(); } \ No newline at end of file diff --git a/backend/src/lexer.cpp b/backend/src/lexer.cpp index 8f0d7c8..918f14d 100644 --- a/backend/src/lexer.cpp +++ b/backend/src/lexer.cpp @@ -156,6 +156,8 @@ bool CommandUseraddLexer(const std::string &command, std::string &user_id, ss >> password; ss >> privilege; ss >> username; + if (privilege != 0 && privilege != 1 && privilege != 3 && privilege != 7) + return false; return true; } else return false;