[三流君] −−> [ASPで遊ぶ、失敗する] −−> [バックナンバー一覧]
−−> No.014 外見の調整とArray関数を使用して配列作成

外見の調整とArray関数を使用して配列作成


本文(発行内容)


<外見の調整とArray関数を使用して配列作成>

こんにちは、Ken3です。

前回は、
配列変数を使って、プログラムの中身をスッキリさせました。
でも、
世の中、中身も大切ですが、外見も重要みたいです。
男性も化粧する、そんな時代なので(オイオイ、ホントか?)
今回は、アンケート結果の出力に少し化粧してみます。(見やすく)
えっ、元が悪いと化粧もイミナイって?そんなぁ〜

あまり期待しないでね。

/*
 * 1.素顔で勝負(笑)、データを素で表示
*/

テキストファイルの処理もマンネリ化した今日この頃、
そろそろDBでもやるか?
じゃなくって、
アンケートの集計結果、そのまま下記のようにデータ件数を表示してます。

集計結果:  http://www.ken3.org/cgi-bin/test/test013-3.asp  より
----
6、大変満足は、1人
5、満足は、2人
4、まぁまぁは、1人
3、どちらとも言えないは、4人
2、少し不満は、2人
1、不満は、2人
0、かなり不満は、2人
----

見易いとは、お世辞でも言えないよね。
Ken3をヨイショする理由も無いし(笑)

家の中(社内システムなど身内しか見ない)や自分の部屋(マイマシーン)
ではいいかもしれないけど
外出る時は(インターネットで公開)、
少しぐらい化粧したら?

私は、素顔で勝負の女(男)だからね、いいよまわりは気にしないし。

それだと話が終わってしまうので、
そろそろ、マジメに見た目にこだわってみます。

/*
 * 2.<TABLE>タグでデータを整える(表にする)
*/

まずは、バラバラな出力を整えます。

6、大変満足は、1人
5、満足は、2人
4、まぁまぁは、1人
3、どちらとも言えないは、4人

を

評価                      人数
6 大変満足は、           1人
5 満足は、               2人
4 まぁまぁは、           1人
3 どちらとも言えないは、 4人

項目名を付けて、表にするか。


-- http://www.ken3.org/cgi-bin/test/test014-1.asp  
<%@LANGUAGE=VBScript%>
<html>
<head>
<title><TABLE>タグを使用してみた</title>
</head>
<body>
<h2><TABLE>タグを使用してみた</h2>
test014-1.asp<br>
<hr>

<%
dim strRECORD  'レコード内容を一時保存
dim nCNT(10)   'カウンター 変数 10個もいらないけど

'カウンター変数をループで初期化しておく
For i = 0 to 10
    nCNT(i) = 0 
Next 

'FileSystemObjectを生成します、、って英文、そのままジャン。
Set objFS = Server.CreateObject("Scripting.FileSystemObject")

'test013.txt 結果ファイルを読取専用モードで開く
Set ts = objFS.OpenTextFile(Server.MapPath("test013.txt"), 1, True)

Do While ts.AtEndOfStream = False  'ファイルの終端になってない間ループする
    strRECORD = ts.ReadLine   'ファイルからデータを一行を読む
    '*3 Left関数を使って左から1文字目をCintで数値変換
    i = Cint(Left(strRECORD, 1))  '読みこんだレコードの1文字目を数値変換
    '*4 nCNT(i番目)をカウントアップ
    nCNT(i) = nCNT(i) + 1
Loop

ts.close  '使ったファイルは閉じようよ

'*1結果の表示を<TABLE>タグを使用して表示
Response.Write "<TABLE>"
Response.Write "<TR><TD>評価</TD><TD>コメント</TD><TD>人数</TD></TR>"
Response.Write "<TR><TD>6</TD><TD>大変満足</TD><TD>" & nCNT(6) & "</TD></TR>"
Response.Write "<TR><TD>5</TD><TD>満足</TD><TD>" & nCNT(5) & "</TD></TR>"
Response.Write "<TR><TD>4</TD><TD>まぁまぁ</TD><TD>" & nCNT(4) & "</TD></TR>"
Response.Write "<TR><TD>3</TD><TD>どちらとも言えない</TD><TD>" & nCNT(3) & "</TD></TR>"
Response.Write "<TR><TD>2</TD><TD>少し不満</TD><TD>" & nCNT(2) & "</TD></TR>"
Response.Write "<TR><TD>1</TD><TD>不満</TD><TD>" & nCNT(1) & "</TD></TR>"
Response.Write "<TR><TD>0</TD><TD>かなり不満</TD><TD>" & nCNT(0) & "</TD></TR>"
Response.Write "</TABLE>"

%>
<hr>
アンケート結果はこんな感じです。<br>
<A HREF="test013.txt" target="_new">元データtest013.txtを見る</A><br>
<br>
</body>
</html>
-- 

実行すると、結果の表示は、こんな感じでした。
評価 コメント          人数 
6   大変満足           1 
5   満足               2 
4   まぁまぁ           1 
3   どちらとも言えない 2 
2   少し不満           2 
1   不満               1 
0   かなり不満         1 


'*1結果の表示を<TABLE>タグを使用して表示
Response.Write "<TABLE>"
Response.Write "<TR><TD>評価</TD><TD>コメント</TD><TD>人数</TD></TR>"
Response.Write "<TR><TD>6</TD><TD>大変満足</TD><TD>" & nCNT(6) & "</TD></TR>"
Response.Write "<TR><TD>5</TD><TD>満足</TD><TD>" & nCNT(5) & "</TD></TR>"
Response.Write "<TR><TD>4</TD><TD>まぁまぁ</TD><TD>" & nCNT(4) & "</TD></TR>"
Response.Write "<TR><TD>3</TD><TD>どちらとも言えない</TD><TD>" & nCNT(3) & "</TD></TR>"
Response.Write "<TR><TD>2</TD><TD>少し不満</TD><TD>" & nCNT(2) & "</TD></TR>"
Response.Write "<TR><TD>1</TD><TD>不満</TD><TD>" & nCNT(1) & "</TD></TR>"
Response.Write "<TR><TD>0</TD><TD>かなり不満</TD><TD>" & nCNT(0) & "</TD></TR>"
Response.Write "</TABLE>"
が
修正したプログラム場所です。

化粧と言うか、ぷっ(笑)、厚化粧だよね。
ほんと、ほんと、自分でも笑っちゃうよね書いてて。

/*
 * 3.Arrayを使って配列を初期化
*/

さて、中途半端に厚化粧したけど、本人も納得してないので、
気分を変えて、中身の処理も少し変えてみます。

配列の初期化で、Array関数を使った方法があります。
strBOX = Array("満足","普通","不満")
とやると、
strBOX(0)に満足、(1)に普通...と配列の0番目からデータを作成してくれます。

こいつを使用して、下記のように書いてみました。

-- http://www.ken3.org/cgi-bin/test/test014-2.asp
<%@LANGUAGE=VBScript%>
<html>
<head>
<title>Array関数を使用して配列の初期化</title>
</head>
<body>
<h2>Array関数を使用して配列の初期化</h2>
test014-2.asp<br>
<hr>

<%
dim strRECORD  'レコード内容を一時保存
dim nCNT(10)   'カウンター 変数 10個もいらないけど

'カウンター変数をループで初期化しておく
For i = 0 to 10
    nCNT(i) = 0 
Next 

'FileSystemObjectを生成します、、って英文、そのままジャン。
Set objFS = Server.CreateObject("Scripting.FileSystemObject")

'test013.txt 結果ファイルを読取専用モードで開く
Set ts = objFS.OpenTextFile(Server.MapPath("test013.txt"), 1, True)

Do While ts.AtEndOfStream = False  'ファイルの終端になってない間ループする
    strRECORD = ts.ReadLine   'ファイルからデータを一行を読む
    '*3 Left関数を使って左から1文字目をCintで数値変換
    i = Cint(Left(strRECORD, 1))  '読みこんだレコードの1文字目を数値変換
    '*4 nCNT(i番目)をカウントアップ
    nCNT(i) = nCNT(i) + 1
Loop

ts.close  '使ったファイルは閉じようよ

'*2Array関数を使用して、評価コメントを初期化
strBOX = Array("かなり不満", "不満", "少し不満", "どちらとも言えない", _
               "まぁまぁ", "満足", "大変満足")

'*1結果の表示を<TABLE>タグを使用して表示
Response.Write "<TABLE border=1>"   'border=1で境界線(ワクを表示)
Response.Write "<TR><TD>評価</TD><TD>コメント</TD><TD>人数</TD></TR>"
'*3ループで回してデータを表示する
For i = 6 To 0 Step -1   '6〜0のループを作る
	Response.Write "<TR><TD>" & i & "</TD>"
    Response.Write "<TD>" & strBOX(i) & "</TD>"
    Response.Write "<TD>" & nCNT(i) & "</TD></TR>"
Next

Response.Write "</TABLE>"   '忘れずにテーブルを終わりにする

%>
<hr>
アンケート結果はこんな感じです。<br>
<A HREF="test013.txt" target="_new">元データtest013.txtを見る</A><br>
<br>
</body>
</html>
---

修正したポイントを書くと、
まず、使用する評価コメントを配列に代入しました。

'*2Array関数を使用して、評価コメントを初期化
strBOX = Array("かなり不満", "不満", "少し不満", "どちらとも言えない", _
               "まぁまぁ", "満足", "大変満足")
と、Array関数を使ってます。

隠された?ポイントとして、
 "どちらとも言えない", _ ←ここのアンダーバー気になりました?
一行に命令やパラメータを書けない時や、
書けてもダラダラと続けるのがイヤな時、
_ を行末に付けて、記述することができます。

次に表示で、ループ処理を使って、各配列を6〜0まで表示してます。

'*3ループで回してデータを表示する
For i = 6 To 0 Step -1   '6〜0のループを作る
	Response.Write "<TR><TD>" & i & "</TD>"
    Response.Write "<TD>" & strBOX(i) & "</TD>"
    Response.Write "<TD>" & nCNT(i) & "</TD></TR>"
Next

ポイントは、
For i = 6 To 0 Step -1
で、通常はカウンターは+1していくのを、
Step −1
で、6から−1してます。

表示が同じだと、芸が無いので、
Response.Write "<TABLE border=1>"   'border=1で境界線(ワクを表示)
とTABLEタグのパラメータ、境界線border=1として、ワクを書いて見ました。

/*
 * 4.プログラムも大事、見せ方も大事
*/

まぁ、言いたかったのは、

前回は、同じ処理をするんだけど、
今後の修正・保守性を考えたプログラムを書きましょう。

今回は、同じ内容のデータを出力するんだけど、
見えない中身よりも、目に見える外見も重要ですよ。
集計結果表示:
http://www.ken3.org/cgi-bin/test/test013-3.asp  ←そのまま人数を表示
http://www.ken3.org/cgi-bin/test/test014-1.asp  ←表(TABLE)にした
http://www.ken3.org/cgi-bin/test/test014-2.asp  ←表にワクをつけた
でした。

まぁ、中身も外見もバランス良くですが。
(さらに進むと、厚化粧で時間をかけるよりは、そのままでもって意見もあるよ)

/*
 * 5.終わりの挨拶
*/

今回は、
・TABLEタグを使ってデータの見せ方を変えてみた
・Arrayを使って配列を初期化
・中身と外見のお話
でした。

結果の見せ方も、いろいろな書き方あるので、
人を振り向かせる、夢中にさせるページをみなさんは書いてくださいね。

姿だけ美人やイケメン君でも中身が無いと、すぐにフラレでしまうけどね。
えっ、中身はそんなに変わらないんだから、美人・イケメンのほうがいいって?
う〜ん、、、まぁ、バランスだと思うけど(笑)

最強ページへの道のりは遠いなぁ〜。

またね(笑)

何か質問・感想があったら、気軽に、
メール、掲示板に書き込んでくださいね。

三流プログラマーのKen3でした。

フィードバック

ASP系の→[掲示板]←を覗く、質問を書き込む

評価・感想

No.014を読んだ満足度(評価)は?
5満足(参考になった)
4まぁまぁ(一部参考になった)
3普通(どちらとも言えない)
2なんかなぁ(期待と違った)
1不満(読んで損した気分)
作者に感想・質問を送る場合は下記に気軽に書いてください
あなたのお名前(ニックネーム) さん

作者からの返信は、 不用 E-mail で受信したい
*質問・感想はメルマガで紹介する場合があります

三流君の主なリンク先

[アクセスランキング] [サイトマップ] [リンク先・相互リンク先など]
ASPで遊ぶ、失敗する 掲示板 バックナンバー 登録と解除
三流プログラマー 業務の愚痴 掲示板 バックナンバー 登録と解除
VBAで楽しくプログラミング 掲示板 バックナンバー 登録と解除
コンビニのオモテとウラ話 掲示板 バックナンバー 登録と解除
www.ken3.org(サイト内)から Google を利用して、

Ken3の日記(weblog) -- [広告・副収入系] [プログラマー業務の愚痴] [VBA系の話題] [ASP系の話題] [コンビニ系ネタ] [その他]

その他 宣伝広告