2010-11-30高度なプログラミング


Absolute C++ 6th ed./Savitch Chap.11 Programming Project.4

  • もんだいぎじゅつ
    筆者は本稿における管理者とユーザログイン情報管理システムの実現を要求する.

  • せっけいけいかく
    本明細書によっては、対応するメンバー関数を実装するために異なるクラスを作成し、ユーザーと管理者が対応するIDとパスワードを入力したときに実行するプライマリドメインを設計します.

  • データ処理プロセス
    本明細書のセキュリティ・ヘッダーを、ユーザーと管理者ヘッダーにそれぞれ宣言して、セキュリティを確保します.cppに発表する.その後のセキュリティクラスのメンバー関数の戻り値に基づいて、各クラスのLogin関数の親として入力し、結果値に基づいてログインします.

  • 実行結果と分析
  • <Security.h>
    
    #pragma once
    #include <iostream>
    #include <string>
    using namespace std;
    
    class Security {
    public:
    	static int validate(string username, string password);
    };
    
    int Security::validate(string username, string password) {
    	if ((username == "abbott") && (password == "monday")) return 1;
    	if ((username == "costello") && (password == "tuesday")) return 2;
    	return 0;
    }
    
    <Administrator.h>
    
    #pragma once
    #include "Security.h"
    
    class Administrator {
    public:
    	bool Login(int num);
    };
    
    bool Administrator::Login(int num) {
    	if (num == 2) return true;
    	else return false;
    }
    
    <User.h>
    
    #pragma once
    #include "Security.h"
    
    class User {
    public:
    	bool Login(int num);
    };
    
    bool User::Login(int num) {
    	if (num == 1) return true;
    	else return false;
    }
    
    <Security.cpp>
    
    #include "Administrator.h"
    #include "User.h"
    
    int main() {
    	Security a;
    	Administrator b;
    	User c;
    	
    	if (c.Login(a.validate("abbott", "monday")) == 1) cout << "Good morning, user" << endl;
    	if (b.Login(a.validate("costello", "tuesday")) == 1) cout << "Good morning, admin" << endl;
    	return 0;
    }