第 10 回 ことおぼえ レポート課題 氏名: 鈴木椎菜 学籍番号: C1101276 語学クラス: 英語6 コース(系): 社会福祉コース 1.筆記問題 pstore とは、第三者が書き込み可能なデータベースを使用したいときにつかう。 -------------------------- require 'pstore' -------------------------- pstore を使用する宣言をする。 これにより、第三者が書き込んだデータを保存できる。 ---------------------------------------------------- PStore変数 = PStore.new("データベースのファイル名") ---------------------------------------------------- これにより、データベースのファイルに書き込ませる。 ※PStore変数に入ったものがデータベースのファイルに書き込ませる。 --------------------------- PStore変数.transaction do end --------------------------- これにより、CGI変数に代入された値を読みこんで表示させる。 2.プログラム問題 <課題の題名> スポーツジム C7 <企画意図> スポーツジムでアルバイトをしています。その業務の中に、 CGIプログラムと して作成したら便利そうなものや、わかりやすそうなものが複数あったため、今 回のプログラムを作成しました。 <概要と目次> http://roy/~c110127/advertise2/rubycgi/r2_cgi_best.htmlを課題のトップペー ジとし、2つ のページをつくりました。また、1つのページにつき 2つの CGIプ ログラムがあります。 1つ目の項目 http://roy/~c110127/advertise2/rubycgi/c7_nyukai.html ・その1 スポーツジムC7 に入会した会員に、入会目的に合わせた運動プランを提案す る CGIプログラム。 ・その2 パスワードを入れると集計結果を見ることができるプログラム。 2つ目の項目 http://roy/~c110127/advertise2/rubycgi/touroku.html ・その3 スポーツジムC7 の従業員が、新規に入会した会員の情報を登録する CGIプログラム ・その4 会員番号を入れると、その番号の会員の情報が表示される CGIプログラム ---------------------------------- トップページ; http://roy.e.koeki-u.ac.jp/~c110127/advertise2/rubycgi/r2_cgi_best.html ---------------------------------- --本体--r2_cgi_best.html 第 10 回 課題 すずきしいな

こんにちは。
東北公益文科大学 2年 鈴木椎菜の CGI最高傑作 です。

スポーツジムC7

企画意図

私は2011年12月現在、スポーツジムでアルバイトをしています。
その業務の中に、 CGIプログラムとして作成したら便利そうなものや
わかりやすそうなものが複数あったため、
スポーツジムでの業務内容を CGIプログラムとして作成しました。

作品

その1 ご提案

・スポーツジムC7 に入会した会員に、入会目的に合わせた運動プランを提案するCGIプログラム
・パスワードを入れると集計結果を見ることができる CGIプログラム(パスワードは 0417 です)
こちら をご覧下さい。

その2 会員情報の登録と表示

・スポーツジムC7 の従業員が、新規に入会した会員の情報を登録する CGIプログラム
・会員番号を入れると、その番号の会員の情報が表示される CGIプログラム
こちらをご覧下さい。



このプログラムは、鈴木椎菜が著作権を保有しています。
連絡先 c110127@f.koeki-u.ac.jp

基礎プログラミングII個人ページ

--使用したCGI-- ・テキストフィールド ・ドロップダウンメニュー ・ラジオボタン ・送信ボタン ---------------------------------- 1つ目の項目ページ; http://roy/~c110127/advertise2/rubycgi/c7_nyukai.html ---------------------------------- --本体--c7_nyukai.html スポーツジム C7

スポーツジムC7

--------------------------------------------------------
ご入会ありがとうございます。
本スポーツジムでは、お客様の目的に合わせた運動プランを
ご提案させていただいております。
ぜひ、ご利用下さい。
--------------------------------------------------------

お名前

性別

年齢

目的

ダイエット強 ダイエット弱 筋力トレーニング メタボ予防 腰痛 運動不足




※お名前以外の項目に関しては、集計させていただいております。
より良いサービス提供のために、ご理解おねがいします。


-----------------------------

従業員専用ページ
パスワードをいれてください。

-----------------------------

このプログラムは、鈴木椎菜が著作権を保有しています。
連絡先 c110127@f.koeki-u.ac.jp

戻る

---------------------------------- CGIプログラムその1; teian.rb ---------------------------------- --設定-- スポーツジムC7 に入会した会員に、入会目的に合わせた運動プランを提案す る CGIプログラム。 --本体-- #!/usr/bin/env ruby $KCODE = 'e' require 'cgi' # CGI を使いますという宣言 cgi = CGI.new("html4") # CGI変数は HTML に使用する print("Content-type: text/html; charset=EUC-JP\n\n") # 日本語コードの定義 # CGIスクリプトから受け取った変数の対を、rbで使う変数に代入 namae = cgi["name"] seibetsu = cgi["sex"] nenrei = cgi["age"] mokuteki = cgi["purpose"] # otokonoronnna.txt に書き込む作業をする open("otokooronnna.txt","a")do |kaku| if seibetsu == "男性" # seibetsu が "男性"だったら kaku.print("男性\n") # "男性(改行)"と書き込む elsif seibetsu == "女性" # seibetsu が "女性"だったら kaku.print("女性\n") # "女性(改行)"と書き込む end end # how_old.txt に書き込む作業をする open("how_old.txt","a")do |kaku| if nenrei == "10代" # nenrei が "10代"だったら kaku.print("10\n") # "10(改行)"と書き込む elsif nenrei == "20代" # nenrei が "20代"だったら kaku.print("20\n") # "20(改行)"と書き込む elsif nenrei == "30代" # nenrei が "30代"だったら kaku.print("30\n") # "30(改行)"と書き込む elsif nenrei == "40代" # nenrei が "40代"だったら kaku.print("40\n") # "40(改行)"と書き込む elsif nenrei == "50代" # nenrei が "50代"だったら kaku.print("50\n") # "50(改行)"と書き込む elsif nenrei == "60代" # nenrei が "60代"だったら kaku.print("60\n") # "60(改行)"と書き込む elsif nenrei == "70代" # nenrei が "70代"だったら kaku.print("70\n") # "70(改行)"と書き込む end end # nannotameni.txt に書き込む作業をする open("nannotameni.txt","a")do |kaku| if mokuteki == "ダイエット強" # mokuteki が "ダイエット強"だったら kaku.print("ダイエット強\n") # "ダイエット強(改行)"と書き込む elsif mokuteki == "ダイエット弱" # mokuteki が "ダイエット弱"だったら kaku.print("ダイエット弱\n") # "ダイエット弱(改行)"と書き込む elsif mokuteki == "筋肉トレーニング" # mokuteki が "筋力トレーニング"だったら kaku.print("筋力トレーニング\n") # "筋力トレーニング(改行)"と書き込む elsif mokuteki == "メタボ予防" # mokuteki が "メタボ予防"だったら kaku.print("メタボ予防\n") # "メタボ予防(改行)"と書き込む elsif mokuteki == "腰痛" # mokuteki が "腰痛"だったら kaku.print("腰痛\n") # "腰痛(改行)"と書き込む elsif mokuteki == "運動不足" # mokuteki が "運動不足"だったら kaku.print("運動不足\n") # "運動不足(改行)"と書き込む end end print("\n") # HTMLの規定 print("\n") # HTMLの設定 if seibetsu == "男性" # seibetsu が "男性" だったら print("\n") # cssを読みこむ elsif seibetsu == "女性" # seibetsu が "女性" だったら print("\n") # cssを読みこむ end print("提案\n") # を表示 print("</head>\n") # HTMLの設定(閉) print("<body>\n") # HTMLの表示部分 print("<p>------------------------------------------------</p>\n") # <p>の表示 print("<h1>お客様へのご提案メニュー</h1>\n") # <h1>の表示 print("<p>------------------------------------------------</p>\n") # <p>の表示 printf("<h2>%s様 %s %s</h2>\n",namae, seibetsu, nenrei) # <h2>の表示 printf("<h2>目的: %s</h2>\n",mokuteki) # <h2>の表示 print("<p>------------------------------------------------</p>\n") # <p>の表示 print("<h3>おすすめのトレーニングメニューはこちらです。</h3>\n") # <h3>の表示 if mokuteki == "ダイエット強" # mokuteki が "ダイエット強"なら print("<p>ランニングマシーン(ジョギング) 水泳</p>\n") # <p>の表示 elsif mokuteki == "ダイエット弱" # mokuteki が "ダイエット弱"なら print("<p>ランニングマシーン(ウォーキング) 水中ウォーキング</p>\n") #<p>の表示 elsif mokuteki == "筋力トレーニング" # mokuteki が "筋力トレーニング"なら print("<p>筋力トレーニングマシン</p>\n") # <p>の表示 elsif mokuteki == "メタボ予防" # mokuteki が "メタボ予防"なら print("<p>プール歩行 水中ウォーキング ランニングマシーン</p>\n") # <p>の表示 elsif mokuteki == "腰痛" # mokuteki が "腰痛"なら print("<p>水中ウォーキング マットストレッチ</p>\n") # <p>の表示 elsif mokuteki == "運動不足" # mokuteki が "運動不足"なら print("<p>ランニングマシーン 水中ウォーキング</p>\n") # <p>の表示 end print("<p>------------------------------------------------</p>\n") # <p>の表示 print("<h3>こちらのプログラムもおすすめです。</h3>\n") # <h3>の表示 if mokuteki == "ダイエット(強)" # mokuteki が "ダイエット強"なら print("<p>チャレンジエアロビクス シェイプアップダンス</p>\n") # <p>の表示 elsif mokuteki == "ダイエット(弱)" # mokuteki が "ダイエット弱"なら print("<p>スタートエアロビクス チャレンジスイム</p>\n") # <p>の表示 elsif mokuteki == "筋力トレーニング" # mokuteki が "筋力トレーニング"なら print("<p>キックエアロビクス マッスル筋トレ</p>\n") # <p>の表示 elsif mokuteki == "メタボ予防" # mokuteki が "メタボ予防"なら print("<p>ストレッチ体操 スタートエアロビクス</p>\n") # <p>の表示 elsif mokuteki == "腰痛" # mokuteki が "腰痛"なら print("<p>ポールストレッチ ヨガ</p>\n") # <p>の表示 elsif mokuteki == "運動不足" # mokuteki が "運動不足"なら print("<p>スタートエアロビクス エンジョイスイ厶</p>\n") # <p>の表示 end print("<p>------------------------------------------------</p>\n") # <p>の表示 print("<br><br>\n") # <p>の表示 print("<p>スポーツジムC7</p>\n") # <p>の表示 print("</body>\n") # HTMLの表示部分(閉) print("</html>\n") # HTMLの規定(閉) --実行結果-- 1回目 roy{c110127}% ./teian.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) name="しいな" sex="女性" age="20代" purpose="ダイエット強" Content-type: text/html; charset=EUC-JP <html> <head> <link rel="stylesheet" type="text/css" href="teian2.css"> <title>提案

------------------------------------------------

お客様へのご提案メニュー

------------------------------------------------

しいな様 女性 20代

目的: ダイエット強

------------------------------------------------

おすすめのトレーニングメニューはこちらです。

ランニングマシーン(ジョギング) 水泳

------------------------------------------------

こちらのプログラムもおすすめです。

------------------------------------------------



スポーツジムC7

2回目 roy{c110127}% ./teian.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) name="しいな" sex="男性" age="10代" purpose="腰痛" Content-type: text/html; charset=EUC-JP 提案

------------------------------------------------

お客様へのご提案メニュー

------------------------------------------------

しいな様 男性 10代

目的: 腰痛

------------------------------------------------

おすすめのトレーニングメニューはこちらです。

水中ウォーキング マットストレッチ

------------------------------------------------

こちらのプログラムもおすすめです。

ポールストレッチ ヨガ

------------------------------------------------



スポーツジムC7

--考察-- 集計を出すために、 open--endを使用してファイルへの書き込みを行った。 ---------------------------------- CGIプログラムその2; kekka.rb ---------------------------------- --設定-- パスワードを入れると、CGIプログラムその1の集計結果を見ることができるプログラム。 これは、従業員が集計を見ることをイメージしました。 --本体-- #!/usr/bin/env ruby $KCODE = 'e' require 'cgi' # CGI を使いますという宣言 cgi = CGI.new("html4") # CGI変数は HTML に使用する print("Content-type: text/html; charset=EUC-JP\n\n") # 日本語コードの定義 # CGIスクリプトから受け取った変数の対を、rbで使う変数に代入 passward = cgi["pass"] # 以下の変数を全て配列とする otoko = Array.new onnna = Array.new ichi = Array.new ni = Array.new san = Array.new yon = Array.new go = Array.new roku = Array.new nana = Array.new dietkyo = Array.new dietja = Array.new kinniku = Array.new metabo = Array.new yotsu = Array.new undo = Array.new # 以下の変数の初期値を 0 とする a = 0 b = 0 c = 0 d = 0 e = 0 f = 0 g = 0 h = 0 i = 0 j = 0 k = 0 l = 0 m = 0 n = 0 o = 0 # otokokaonnna.txt を読みこんで行う作業 open("otokooronnna.txt","r")do |yomu| while data = yomu.gets # 読みこんだものを data に代入 if /(男性)/=~data # もし (男性) という文字列があったら otoko[a] = $1 # "男性"を 配列otoko に代入 a += 1 # 配列の要素番号とした a に 1を加算代入 elsif /(女性)/=~data # もし (女性) という文字列があったら onnna[b] = $1 # "女性"を 配列otoko に代入 b += 1 # 配列の要素番号とした b に 1を加算代入 end end end # how_old.txt を読みこんで行う作業 open("how_old.txt","r")do |yomu| while data = yomu.gets # 読みこんだものを data に代入 if /(10)/=~data # もし (10) という文字列があったら ichi[c] = $1 # "10"を 配列ichi に代入 c += 1 # 配列の要素番号とした c に 1を加算代入 elsif /(20)/=~data # もし (20) という文字列があったら ni[d] = $1 # "20"を 配列ni に代入 d += 1 # 配列の要素番号とした d に 1を加算代入 elsif /(30)/=~data # もし (30) という文字列があったら san[e] = $1 # "30"を 配列san に代入 e += 1 # 配列の要素番号とした e に 1を加算代入 elsif /(40)/=~data # もし (40) という文字列があったら yon[f] = $1 # "40"を 配列yon に代入 f += 1 # 配列の要素番号とした f に 1を加算代入 elsif /(50)/=~data # もし (50) という文字列があったら go[g] = $1 # "50"を 配列go に代入 g += 1 # 配列の要素番号とした g に 1を加算代入 elsif /(60)/=~data # もし (60) という文字列があったら roku[h] = $1 # "60"を 配列roku に代入 h += 1 # 配列の要素番号とした h に 1を加算代入 elsif /(70)/=~data # もし (70) という文字列があったら nana[i] = $1 # "70"を 配列nana に代入 i += 1 # 配列の要素番号とした i に 1を加算代入 end end end open("nannotameni.txt","r")do |yomu| while data = yomu.gets if /(ダイエット強)/=~data dietkyo[j] = $1 # "ダイエット強"を 配列dietkyo に代入 j += 1 # 配列の要素番号とした j に 1を加算代入 elsif /(ダイエット弱)/=~data dietja[k] = $1 # "ダイエット弱"を 配列dietja に代入 k += 1 # 配列の要素番号とした k に 1を加算代入 elsif /(筋力トレーニング)/=~data kinniku[l] = $1 # "筋力トレーニング"を 配列kinniku に代入 l += 1 # 配列の要素番号とした l に 1を加算代入 elsif /(メタボ予防)/=~data # "メタボ予防"を 配列metabo に代入 metabo[m] = $1 # "メタボ予防"を 配列metabo に代入 m += 1 # 配列の要素番号とした m に 1を加算代入 elsif /(腰痛)/=~data yotsu[n] = $1 # "腰痛"を 配列youtsu に代入 n += 1 # 配列の要素番号とした n に 1を加算代入 elsif /(運動不足)/=~data undo[o] = $1 # "運動不足"を 配列undo に代入 o += 1 # 配列の要素番号とした o に 1を加算代入 end end end if passward == "0417" print("\n") # HTMLの規定 print("\n") # HTMLの設定 print("\n") print("集計結果\n") # HTMLのタイトル設定 print("\n") # HTMLの設定(閉) print("\n") # HTMLの表示部分 print("

アンケート集計結果

") #

の表示 print("

性別

") #

の表示 print("

男性:\n") #

の表示 a.times do # a の数字の回数だけ繰り返す print("★") #

の表示(★) end print("

\n") #

の閉じ print("

女性:\n") #

の表示 b.times do # b の数字の回数だけ繰り返す print("★") #

の表示(★) end print("

\n") #

の閉じ print("

年齢

") #

の表示 print("

10代:\n") #

の表示 c.times do # c の数字の回数だけ繰り返す print("★") #

の表示(★) end print("

\n") #

の閉じ print("

20代:\n") #

の表示 d.times do # d の数字の回数だけ繰り返す print("★") #

の表示(★) end print("

\n") #

の閉じ print("

30代:\n") #

の表示 e.times do # e の数字の回数だけ繰り返す print("★") #

の表示(★) end print("

\n") #

の閉じ print("

40代:\n") #

の表示 f.times do # f の数字の回数だけ繰り返す print("★") #

の表示(★) end print("

\n") #

の閉じ print("

50代:\n") #

の表示 g.times do # g の数字の回数だけ繰り返す print("★") #

の表示(★) end print("

\n") #

の閉じ print("

60代:\n") #

の表示 h.times do # h の数字の回数だけ繰り返す print("★") #

の表示(★) end print("

\n") #

の閉じ print("

70代:\n") #

の表示 i.times do # i の数字の回数だけ繰り返す print("★") #

の表示(★) end print("

\n") #

の閉じ print("

目的

") #

の表示 print("

ダイエット強
\n") #

の表示 j.times do # j の数字の回数だけ繰り返す print("★") #

の表示(★) end print("

\n") #

の閉じ print("

ダイエット弱
\n") #

の表示 k.times do # k の数字の回数だけ繰り返す print("★") #

の表示(★) end print("

\n") #

の閉じ print("

筋力トレーニング
\n") #

の表示 l.times do # l の数字の回数だけ繰り返す print("★") #

の表示(★) end print("

\n") #

の閉じ print("

メタボ予防
\n") #

の表示 m.times do # m の数字の回数だけ繰り返す print("★") #

の表示(★) end print("

\n") #

の閉じ print("

腰痛
\n") #

の表示 n.times do # n の数字の回数だけ繰り返す print("★") #

の表示(★) end print("

\n") #

の閉じ print("

運動不足
\n") #

の表示 o.times do # o の数字の回数だけ繰り返す print("★") #

の表示(★) end print("

\n") #

の閉じ print("



\n") #

の表示 print("

スポーツジム C7

\n") #

の表示 print("\n") # HTMLの表示部分(閉) print("\n") # HTMLの規定(閉) else print("\n") # HTMLの規定 print("\n") # HTMLの設定 print("エラー\n") # HTMLのタイトル設定 print("\n") # HTMLの設定(閉) print("\n") # HTMLの表示部分 print("

パスワード間違えています。

\n") #

の表示 print("\n") # HTMLの表示部分(閉) print("\n") # HTMLの規定(閉) end --実行結果-- 1回目(CGIプログラムその1 の実行結果 1回目後) roy{c110127}% ./kekka.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) pass="0417" Content-type: text/html; charset=EUC-JP 集計結果

アンケート集計結果

性別

男性:

女性: ★

年齢

10代:

20代: ★

30代:

40代:

50代:

60代:

70代:

目的

ダイエット強

ダイエット弱

筋力トレーニング

メタボ予防

腰痛

運動不足



スポーツジム C7

2回目(CGIプログラムその1 の実行結果 2回目後) roy{c110127}% ./kekka.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) pass="0417" Content-type: text/html; charset=EUC-JP 集計結果

アンケート集計結果

性別

男性: ★

女性: ★

年齢

10代: ★

20代: ★

30代:

40代:

50代:

60代:

70代:

目的

ダイエット強

ダイエット弱

筋力トレーニング

メタボ予防

腰痛

運動不足



スポーツジム C7

3回目(失敗 パスワード間違い) roy{c110127}% ./kekka.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) pass="0000" Content-type: text/html; charset=EUC-JP エラー

パスワード間違えています。

4回目(失敗 パスワード間違い) roy{c110127}% ./kekka.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) pass="2234" Content-type: text/html; charset=EUC-JP エラー

パスワード間違えています。

--考察-- プログラムその1 の実行結果と平行して見ると、 1回目の CGIプログラムその1 では、 name="しいな" sex="女性" age="20代" purpose="ダイエット強" を入力した。 その直後に実行した本プログラムでは、 女性、20代、ダイエット強 の3つの項目に ★ がついた。 これにより、ファイルの書き込みと呼び出しが間違いなく行われていることがわ かる。 2回目の CGIプログラムその1 では、 name="しいな" sex="女性" age="20代" purpose="ダイエット強" を入力した。 その直後に実行した本プログラムでは、 男性、10代、腰痛 の3つの項目に ★ がついた。 これにより、ファイルの書き込みと呼び出しが間違いなく行われていることがわ かる。 本プログラムの実行結果 3回目 と 4回目では、 パスワードを間違えて入力した。 エラーページが出たため、間違いなくプログラムは作動している。 ---------------------------------- 2つ目の項目ページ; http://roy/~c110127/advertise2/rubycgi/touroku.html ---------------------------------- --本体--touroku.html スポーツジム C7 登録ページ

スポーツジムC7

-------------------
新規会員情報の登録
-------------------

入会した方の情報を登録します。
各項目を入力して下さい。

お名前

性別

年齢

住所

電話番号

- -



-------------------
会員情報の表示
-------------------

会員番号を入力すると、その番号の会員様の情報が表示されます。



このプログラムは、鈴木椎菜が著作権を保有しています。
連絡先 c110127@f.koeki-u.ac.jp

--使用したCGI-- ・テキストエリア 未記入を防ぐために、始めからなにかが記入してある必要があると考えた。 これによって始めから文字を記入しておくことが可能になる。 テキストフィールドではなく、テキストエリアを使用した。 ・ドロップダウンメニュー ・送信ボタン ---------------------------------- CGIプログラムその3; touroku.rb ---------------------------------- --設定-- スポーツジムC7 の従業員が、新規に入会した会員の情報を登録する CGIプログ ラム --本体-- #!/usr/bin/env ruby $KCODE = 'e' # 日本語コードの定義 require 'cgi' # CGI を使いますという宣言 cgi = CGI.new("html4") # CGI変数は HTML に使用する print("Content-type: text/html; charset=EUC-JP\n\n") # 日本語コードの定義 # CGIスクリプトから受け取った変数の対を、rbで使う変数に代入 namae = cgi["name"] seibetsu = cgi["sex"] nenrei = cgi["age"] jusho = cgi["adress"] de = cgi["tel1"] nn = cgi["tel2"] wa = cgi["tel3"] suuji = 0 # kainbango.txt を読み取る作業をする open("kainbango.txt","r") do |yomu| while data = yomu.gets # 読み取った内容を data に代入 if /(\d+)/ =~ data # 数字が一回以上繰り返される部分があったら suuji = $1.to_i # suuji に 10進数の整数として代入 end end end # touroku.txt に書き込む作業をする open("touroku.txt","a")do |kaku| kaku.printf("%d %s %s %s %s %s %s %s\n",suuji,namae,seibetsu,nenrei,jusho,de,nn,wa) # printf の内容を touroku.txt に追加書き込みする end print("\n") # HTMLの規定 print("\n") # HTMLの設定 print("\n") # cssの設定 print("登録完了\n") # の表示 print("</head>\n") # HTMLの設定(閉) print("<body>\n") # HTMLの表示部分 print("<h1>登録情報</h1>\n") # <h1>の表示 printf("<p>名前:%s様</p>\n",namae) # <p>の表示 printf("<p>性別:%s</p>\n",seibetsu) # <p>の表示 printf("<p>年齢:%s</p>\n",nenrei) # <p>の表示 printf("<p>住所:%s</p>\n",jusho) # <p>の表示 printf("<p>電話番号:%s-%s-%s</p>\n",de,nn,wa) # <p>の表示 print("<h2>以上の情報を登録しました。<br>\n") # <h2>の表示 printf("%s様の会員番号は%dです。</h2>\n",namae,suuji) # <h2>の表示 print("<p>スポーツジム C7</p>\n") # <p>の表示 print("</body>\n") # HTMLの表示部分(閉) print("</html>\n") # HTMLの規定(閉) suuji += 1 # suuji に 1 を加算代入 # 更新された会員番号を kainbango.txt に書き込む open("kainbango.txt","w") do |kaku| kaku.printf("%d\n",suuji) # printf の内容を kainbango.txt に上書きする end --実行結果-- 1回目 roy{c110127}% ./touroku.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) name="酒田たろう" sex="男性" age="18歳" adress="酒田市" tel1="1222" tel2="111" tel3="33" Content-type: text/html; charset=EUC-JP <html> <head> <link rel="stylesheet" type="text/css" href="kakunin.css"> <title>登録完了

登録情報

名前:酒田たろう様

性別:男性

年齢:18歳

住所:酒田市

電話番号:1222-111-33

以上の情報を登録しました。
酒田たろう様の会員番号は6です。

スポーツジム C7

2回目 roy{c110127}% ./touroku.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) name="鶴岡はなこ" sex="女性" age="80歳" adress="鶴岡市" tel1="222" tel2="777" tel3="222" Content-type: text/html; charset=EUC-JP 登録完了

登録情報

名前:鶴岡はなこ様

性別:女性

年齢:80歳

住所:鶴岡市

電話番号:222-777-222

以上の情報を登録しました。
鶴岡はなこ様の会員番号は7です。

スポーツジム C7

--考察-- 入力された内容を touroku.txt に書き込むのと同時に、 会員番号を登録していく必要があったため、 kainbango.txt というファイルに 数字を上書きして会員番号をつけていく作業を行った。 ---------------------------------- CGIプログラムその4; kakunin.rb ---------------------------------- --設定-- 会員番号を入れると、その番号の会員の情報が表示される CGIプログラム --本体-- #!/usr/bin/env ruby $KCODE = 'e' # 日本語コードの定義 require 'cgi' # CGI を使いますという宣言 cgi = CGI.new("html4") # CGI変数は HTML に使用する print("Content-type: text/html; charset=EUC-JP\n\n") # 日本語コードの定義 # CGIスクリプトから受け取った変数の対を、rbで使う変数に代入 bangou = cgi["number"] kain = Hash.new # kain を Hash配列とする i = 1 # i の初期値を 1 とする # touroku.txt の中身を読みこんで、この内容を Hash配列にいれる open("touroku.txt","r")do |yomu| while line = yomu.gets # 読みこんだものを line に代入 if /(\d+)\s(\S+)\s(\S+)\s(\S+)\s(\S+)\s(\S+)\s(\S+)\s(\S+)/=~ line # 正規表現で空白以外の部分を 7つ 取り出す kain[i] = $1,$2,$3,$4,$5,$6,$7,$8 # 正規表現で受け取ったものを Hash配列 に代入していく # $1 = 会員番号 # $2 = 名前 # $3 = 性別 # $4 = 年齢 # $5 = 住所 # $6 = 電話1 # $7 = 電話2 # $8 = 電話3 i += 1 # i に 1 を足す end end end # p kain[bangou.to_i] # Hash配列が作動するかの確認 print("\n") # HTMLの規定 print("\n") # HTMLの設定 print("\n") # cssの設定 print("会員情報\n") # の表示 print("</head>\n") # HTMLの設定(閉) print("<body>\n") # HTMLの表示部分 printf("<h2>会員番号 %s のお客様の情報</h2>\n",kain[bangou.to_i][0]) # <h2>の表示 printf("<p>名前:%s様</p>\n",kain[bangou.to_i][1]) # <p>の表示 printf("<p>性別:%s</p>\n",kain[bangou.to_i][2]) # <p>の表示 printf("<p>年齢:%s</p>\n",kain[bangou.to_i][3]) # <p>の表示 printf("<p>住所:%s</p>\n",kain[bangou.to_i][4]) # <p>の表示 printf("<p>電話番号:%s-%s-%s</p>\n",kain[bangou.to_i][5],kain[bangou.to_i][6],kain[bangou.to_i][7]) # <p>の表示 print("<p>スポーツジム C7</p>\n") print("</body>\n") # HTMLの表示部分(閉) print("</html>\n") # HTMLの規定(閉) --実行結果-- 1回目 (CGIプログラムその3 の実行結果 1回目でつけられた会員番号) roy{c110127}% ./kakunin.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) number="6" Content-type: text/html; charset=EUC-JP <html> <head> <link rel="stylesheet" type="text/css" href="kakunin.css"> <title>会員情報

会員番号 6 のお客様の情報

名前:酒田たろう様

性別:男性

年齢:18歳

住所:酒田市

電話番号:1222-111-33

スポーツジム C7

2回目 (CGIプログラムその3 の実行結果 2回目でつけられた会員番号) roy{c110127}% ./kakunin.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) number="7" Content-type: text/html; charset=EUC-JP 会員情報

会員番号 7 のお客様の情報

名前:鶴岡はなこ様

性別:女性

年齢:80歳

住所:鶴岡市

電話番号:222-777-222

スポーツジム C7

--考察-- CGIプログラムその3 の 1回目の実行結果で、 name="酒田たろう" sex="男性" age="18歳" adress="酒田市" tel1="1222" tel2="111" tel3="33" を入力し、会員番号は 6 になった。 その後実行した本プログラムでは、 number="6" を入力し、

会員番号 6 のお客様の情報

名前:酒田たろう様

性別:男性

年齢:18歳

住所:酒田市

電話番号:1222-111-33

スポーツジム C7

が表示されている。 これにより、ファイルの書き込みと呼び出しが間違いなく行われていることがわ かる。 CGIプログラムその4 の 1回目の実行結果で、 name="鶴岡はなこ" sex="女性" age="80歳" adress="鶴岡市" tel1="222" tel2="777" tel3="222" を入力し、会員番号は 7 になった。 その後実行した本プログラムでは、 number="7" を入力し、

会員番号 7 のお客様の情報

名前:鶴岡はなこ様

性別:女性

年齢:80歳

住所:鶴岡市

電話番号:222-777-222

スポーツジム C7

が表示されている。 れにより、ファイルの書き込みと呼び出しが間違いなく行われていることがわ かる。 4.感想 2009年度 進藤未夢さん http://roy/~c108113/advertise2/rubycgi/r2_cgi_best.html <根拠> 一つの HTML に 2つの form を使用している点で私の作品と似ていたため、 興味を持ってみてみた。 1つ目の form からは、 http://roy/~c108113/advertise2/rubycgi/pstore/bbs.rbにつながっており、 そのなかには、今までの集計と、掲示板のようなものがあった。 ページソースをみてみると、掲示板では同じファイルに form をつかっていて、 よくみたところ、pstoreを使用していた。 2つ目の formからは、 http://roy/~c108113/advertise2/rubycgi/mydb/anq.rbにつながっており、 その中には、 CGIで入力した結果が表示されていた。 こちらも、私が作ったプログラム(CGIプログラムその2)と似た要素があり、 多分 open--end でファイルに書き込みを行ったか、pstoreを使っているのだろ うと思う。 このように、自分のプログラムに共通する部分や、自分は使えなかった高度な 技術も使っていたため、興味を持った。 5.参考文献など 基礎プログラミング II 第 2 回 「なになにといえばこれこれ」 http://roy/~madoka/2011/r2/02/ 基礎プログラミング II 第 8 回 「ことはじめ」 http://roy/~madoka/2011/r2/08/ 基礎プログラミング II 第 9 回 「ことえらび」 http://roy/~madoka/2011/r2/09/ 基礎プログラミング II 第 9 回 「ことえらび」 レポート課題の参考資料 http://roy/~madoka/2011/r2/src/counter.rb 基礎プログラミング II 第 10 回 「ことおぼえ」 http://roy/~madoka/2011/r2/10/ <共同作成者> 吉住貴則 <アドバイス> 齋藤陽香 最後に.添付ファイル r2_cgi_best.html c7_nyukai.html teian.rb teian1.css teianman.png teian2.css teianwoman.png kekka.rb kekka.css otokooronnna.txt how_old.txt nannotameni.txt touroku.html touroku.rb kakunin.rb kakunin.css touroku.txt kainbango.txt --------------------------- 東北公益文科大学 公益学部 公益学科 2年 鈴木椎菜 c110127@f.koeki-u.ac.jp teianman.png