スパイラル3ではログインを可能にする。

会議室予約システム

企画書

要求分析

ユースケース図

ud.png

ユースケース記述の作成

ログインページを表示する

ログインする

ログアウトする

管理画面を開く

シナリオの作成

省略。

システム分析

オブジェクトの抽出

初期シーケンス図の作成

初期クラス図の作成

cd1.png

設計

詳細シーケンス図の作成

詳細クラス図の作成

cd2.png

実装

PHPコード

doLogin.php

<?php
// ログインする
// un: ユーザ名
// pw: パスワード
// 戻り値:
// result: 'ok' or 'ng'
// user_name: ユーザ名
try {
    $pdo = new PDO("mysql:host=mysql514.db.sakura.ne.jp; dbname=forcreate_fuchida; charset=utf8", "forcreate", "junior2015");
    $q = "select password,level from users where name=:name";
    $s = $pdo->prepare($q);
    $sa = array(":name" => $_POST['un']);
    $s->execute($sa);
    if ($s->rowCount() != 1) {
        print json_encode(array("result" => "ng"));
    } else {
        $r = $s->fetch();
        if ($r['password'] == $_POST['pw']) {
            print json_encode(array("result" => "ok", "user_name" => $_POST['un'],"user_level"=>$r['level']));
        } else {
            print json_encode(array("result" => "ng"));
        }
    }
} catch (PDOException $e) {
    print json_encode(array("msg" => $e->getMessage()));
}
$pdo = null;

HTMLコード

index.html

<!DOCTYPE html>
<html>
    <head>
        <title>会議室予約システムSP3</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <script type="text/javascript" src="js/libs/jquery/jquery.js"></script>
        <script type="text/javascript" src="js/libs/jquery-cookie/jquery.cookie.js"></script>
        <script type="text/javascript" src="js/DBManager.js"></script>
        <script type="text/javascript" src="js/SystemManager.js"></script>
        <script type="text/javascript" src="js/CalendarManager.js"></script>
        <script type="text/javascript" src="js/ControlPanel.js"></script>
        <script type="text/javascript" src="js/index.js"></script>
        <link type="text/css" rel="stylesheet" href="css/index.css">
    </head>
    <body>
        <div id="title"><h1>会議室予約システムSP3</h1></div>
        <div id="control_panel">
            <input id="year" type="text" size="5"/>年
            <input id="month" type="text" size="3"/>月
            会議室:<select id="room">
                <option value="全会議室">全会議室</option>
                <option value="中会議室">中会議室</option>
            </select>
            <input type="button" value="表示する" id="bt_disp"/>
            <span id="manage">
                <span id="login_name"></span>
                <a id="login_link" href="login.html">ログイン</a>
                <a id="admin_link" href="admin.html">管理</a>
            </span>
        </div>
        <div id="reservation_list">
            <table id="reservation_table" border="1">
                <tr><th>予約ID</th><th>会議室</th><th>開始日時</th><th>終了日時</th><th>予約者</th><th>予約日</th></tr>
            </table>
        </div>
    </body>
</html>

login.html

<!DOCTYPE html>
<html>
    <head>
        <title>ログイン</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <script type="text/javascript" src="js/libs/jquery/jquery.js"></script>
        <script type="text/javascript" src="js/libs/jquery-cookie/jquery.cookie.js"></script>
        <script type="text/javascript" src="js/DBManager.js"></script>
        <script type="text/javascript" src="js/LoginManager.js"></script>
        <script type="text/javascript" src="js/login.js"></script>
    </head>
    <body>
        <h1>会議室予約システム ログイン</h1>
        <table>
            <tr><td>ユーザ名:</td><td><input type="text" size="20" id="user_name"/></td></tr>
            <tr><td>パスワード:</td><td><input type="password" size="20" id="password"/></td></tr>
            <tr><td><input type="button" value="ログイン" id="bt_login"/></td></tr>
        </table>
    </body>
</html>

CSSコード

index.css

html,body{
    margin:0px;
    width:100%;
    height:100%;
}
div#title{
    padding:8px;
    position:absolute;
    top:0px;
    left:0px;
    right:0px;
    height:50px;
    background-color:#ccccff;
}
div#title h1{
    margin:0px;
}
div#control_panel{
    padding:8px;
    position:absolute;
    top:50px;
    left:0px;
    right:0px;
    height:40px;
    background-color:#ffffcc;
}
div#reservation_list{
    padding:8px;
    position:absolute;
    top:90px;
    left:0px;
    right:0px;
    bottom:0px;
    background-color:#ccffcc;
}
table#reservation_table{
    width:100%;
    border-collapse: collapse;
    background-color:white;
}
#manage{
    position:absolute;
    right:8px;
}
#admin_link{
    visibility: hidden;
}

JavaScriptスケルトンコード

DBManager.js

   // ログインする
   this.doLogin=function(un,pw,lgm){};

LoginManager.js

// ログイン管理者
var LoginManager = function (dbm) {

    // ログインする
    this.doLogin = function () {};

    // ログイン結果の通知
    this.loginResult = function (re) {};

    // ログアウトする
    this.doLogout = function () {};

    // ログイン状態をチェックする
    this.checkLogin = function () {};

    // 生成
    this.dbm = dbm;
    $('#bt_login').click($.proxy(this.doLogin, this));
};

テスト


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS