第 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
こんにちは。
東北公益文科大学 2年 鈴木椎菜の CGI最高傑作 です。
私は2011年12月現在、スポーツジムでアルバイトをしています。
その業務の中に、 CGIプログラムとして作成したら便利そうなものや
わかりやすそうなものが複数あったため、
スポーツジムでの業務内容を CGIプログラムとして作成しました。
・スポーツジムC7 に入会した会員に、入会目的に合わせた運動プランを提案するCGIプログラム
・パスワードを入れると集計結果を見ることができる CGIプログラム(パスワードは 0417 です)
こちら
をご覧下さい。
・スポーツジムC7 の従業員が、新規に入会した会員の情報を登録する CGIプログラム
・会員番号を入れると、その番号の会員の情報が表示される CGIプログラム
こちらをご覧下さい。
このプログラムは、鈴木椎菜が著作権を保有しています。
連絡先 c110127@f.koeki-u.ac.jp
基礎プログラミングII個人ページ
このプログラムは、鈴木椎菜が著作権を保有しています。
連絡先 c110127@f.koeki-u.ac.jp
戻る
------------------------------------------------
\n") #の表示 print("
------------------------------------------------
\n") #の表示 printf("
------------------------------------------------
\n") #の表示 print("
ランニングマシーン(ジョギング) 水泳
\n") #の表示 elsif mokuteki == "ダイエット弱" # mokuteki が "ダイエット弱"なら print("
ランニングマシーン(ウォーキング) 水中ウォーキング
\n") #の表示 elsif mokuteki == "筋力トレーニング" # mokuteki が "筋力トレーニング"なら print("
筋力トレーニングマシン
\n") #の表示 elsif mokuteki == "メタボ予防" # mokuteki が "メタボ予防"なら print("
プール歩行 水中ウォーキング ランニングマシーン
\n") #の表示 elsif mokuteki == "腰痛" # mokuteki が "腰痛"なら print("
水中ウォーキング マットストレッチ
\n") #の表示 elsif mokuteki == "運動不足" # mokuteki が "運動不足"なら print("
ランニングマシーン 水中ウォーキング
\n") #の表示 end print("
------------------------------------------------
\n") #の表示 print("
チャレンジエアロビクス シェイプアップダンス
\n") #の表示 elsif mokuteki == "ダイエット(弱)" # mokuteki が "ダイエット弱"なら print("
スタートエアロビクス チャレンジスイム
\n") #の表示 elsif mokuteki == "筋力トレーニング" # mokuteki が "筋力トレーニング"なら print("
キックエアロビクス マッスル筋トレ
\n") #の表示 elsif mokuteki == "メタボ予防" # mokuteki が "メタボ予防"なら print("
ストレッチ体操 スタートエアロビクス
\n") #の表示 elsif mokuteki == "腰痛" # mokuteki が "腰痛"なら print("
ポールストレッチ ヨガ
\n") #の表示 elsif mokuteki == "運動不足" # mokuteki が "運動不足"なら print("
スタートエアロビクス エンジョイスイ厶
\n") #の表示 end print("
------------------------------------------------
\n") #の表示
print("
\n") #
の表示 print("
スポーツジムC7
\n") #の表示 print("\n") # HTMLの表示部分(閉) print("\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
------------------------------------------------
------------------------------------------------
------------------------------------------------
ランニングマシーン(ジョギング) 水泳
------------------------------------------------
------------------------------------------------
スポーツジム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------------------------------------------------
------------------------------------------------
------------------------------------------------
水中ウォーキング マットストレッチ
------------------------------------------------
ポールストレッチ ヨガ
------------------------------------------------
スポーツジム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") #
の表示 a.times do # a の数字の回数だけ繰り返す print("★") #
の表示(★) end print("
\n") #の閉じ print("
女性:\n") #
の表示 b.times do # b の数字の回数だけ繰り返す print("★") #
の表示(★) end print("
\n") #の閉じ 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("
ダイエット強
\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("
の表示 print("
スポーツジム C7
\n") #の表示 print("\n") # HTMLの表示部分(閉) print("\n") # HTMLの規定(閉) else print("\n") # HTMLの規定 print("
\n") # HTMLの設定 print("男性:
女性: ★
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
このプログラムは、鈴木椎菜が著作権を保有しています。
連絡先 c110127@f.koeki-u.ac.jp
名前:%s様
\n",namae) #の表示 printf("
性別:%s
\n",seibetsu) #の表示 printf("
年齢:%s
\n",nenrei) #の表示 printf("
住所:%s
\n",jusho) #の表示 printf("
電話番号:%s-%s-%s
\n",de,nn,wa) #の表示 print("
スポーツジム C7
\n") #の表示 print("\n") # HTMLの表示部分(閉) print("\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
名前:酒田たろう様
性別:男性
年齢:18歳
住所:酒田市
電話番号:1222-111-33
スポーツジム 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
スポーツジム 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("名前:%s様
\n",kain[bangou.to_i][1]) #の表示 printf("
性別:%s
\n",kain[bangou.to_i][2]) #の表示 printf("
年齢:%s
\n",kain[bangou.to_i][3]) #の表示 printf("
住所:%s
\n",kain[bangou.to_i][4]) #の表示 printf("
電話番号:%s-%s-%s
\n",kain[bangou.to_i][5],kain[bangou.to_i][6],kain[bangou.to_i][7]) #の表示 print("
スポーツジム C7
\n") print("\n") # HTMLの表示部分(閉) print("\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名前:酒田たろう様
性別:男性
年齢: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名前:鶴岡はなこ様
性別:女性
年齢:80歳
住所:鶴岡市
電話番号:222-777-222
スポーツジム C7
--考察-- CGIプログラムその3 の 1回目の実行結果で、 name="酒田たろう" sex="男性" age="18歳" adress="酒田市" tel1="1222" tel2="111" tel3="33" を入力し、会員番号は 6 になった。 その後実行した本プログラムでは、 number="6" を入力し、名前:酒田たろう様
性別:男性
年齢:18歳
住所:酒田市
電話番号:1222-111-33
スポーツジム C7
が表示されている。 これにより、ファイルの書き込みと呼び出しが間違いなく行われていることがわ かる。 CGIプログラムその4 の 1回目の実行結果で、 name="鶴岡はなこ" sex="女性" age="80歳" adress="鶴岡市" tel1="222" tel2="777" tel3="222" を入力し、会員番号は 7 になった。 その後実行した本プログラムでは、 number="7" を入力し、名前:鶴岡はなこ様
性別:女性
年齢:80歳
住所:鶴岡市
電話番号:222-777-222
スポーツジム C7
が表示されている。 れにより、ファイルの書き込みと呼び出しが間違いなく行われていることがわ かる。 4.感想 2009年度 進藤未夢さん