4.ユーザー モジュールの設計
基礎となるデータベースの場合、データベースを変更するために mysql の C API 関数が呼び出され、
特定の状態変数が内部的に保存されます (ユーザー名など、それとも上位層に任せるべきですか?)。上位層、
ユーザー管理インターフェイス。
Class UserManage {
private:
char myuserid[20]; // ログイン前は空のユーザー ID
time logintime // 滞在時間の計算にユーザーのログイン時間が使用されます
char loginhost[20]; // アップステーションの位置。
public:
int NewUser(char *userid, char *passwd);
新しいユーザーを作成し、それが既に存在するかどうかを確認します。
Firstlogintime、権限などはデフォルト値に設定されます。
int UserLogin( char *userid, char *passwd );
ユーザー ログイン、パスワードを確認、
int ChangePasswd( char *oldpasswd, char *newpasswd );
パスワードを変更するには、元のパスワードが一致している必要があります。
int ChangePriData( char *newname, char *newemail,
char *newaddr );
基本データ、名前、メールアドレス、アドレスを変更します。 。 。 。
int ModifyNumData( int addlogin, int addpost );
記事数、サイト訪問数などのデータを変更します。 。 。 。呼び出し元のオブジェクトに注意してください。
int UserLogout();
ユーザーのログアウト、lastlogin、staytime、loginhost などの変更
// 一般的なクエリコマンド
int QueryCommonData( const char * userid, int& loginnum,
char * username, int& postnum,
Time& lastlogin, char * lasthost );
ネチズンの基本情報をクエリします。
// 特権命令。関数は関数を完了する前に、まず権限を決定します。
int QueryPriData( const char * userid, char *email,
char *addr );
基本情報をクエリします。一般の人は自分自身のみを確認でき、権限を持つ人は他の人を確認できます。
int ModifyUserLevel( BOOL isAdd, unsigned long level);
ユーザー権限を変更します、
int ModifyUserId( char *newemail, char *newaddr );
ユーザーの基本データを変更します。
int ModifyUserNumdata(char *userid, int addlogin, int addpost);
ユーザーの記事番号とその他のデータを変更します。
int ModifyUserPasswd(char *userid, char *newpasswd);
ユーザーのパスワードを変更します。
}
上記の関数はそれぞれ、対応する SQL ステートメントを実行し、mysql データベースにアクセスします。
一般的な命令は特権命令として分類されるべきですか?権限チェックはこのレベルで行うべきですか、それとも前のレベルで行うべきですか?
これは、プログラムの明確さか、コードの単純さかという点に重点が置かれています。さらに、アクセス数も考慮する必要があります。上位サービス層も権限チェックを考慮しますか?