第10回 基礎プログラミング II レポート課題
氏名 : 藤井駿
学籍番号 :c1091307
語学クラス :英語3
コース : 地域共創
1.筆記問題
◎Pstore を説明するにあたって 「comment.rb」をつかって説明する。
require'pstore' # 受け取ったデータを保存することを宣言
db = PStore.new("comment.db") # comment.db にデータベースを作成する
db.transaction do # 入力されたデータを読みこみ、出力する
if db == nil # もしデータがなかったとき
db[name] = Hash.new # 新しく Hash を作る
end
db[name] = n
onamae = db.roots # db 内のデータを onamae にする
for shimei in onamae
printf("
%s
%s
\n",db[shimei],shimei) # 結果を表示する
end
end
以上のように説明できる。
2.プログラム問題
アドレス : http://roy/~c109130/advertise2/rubycgi/r2_cgi_best.html
その1. 買い物したことを記録に残す CGIスクリプト
a.ホームページアドレス
http://roy/~c109130/advertise2/rubycgi/kaimono.html
b.CGI の題名とその意図
「買い物リストを作ろう」 → 買い物したことを入力してデータを表示さ
せるプログラム
c.入力部分と送信部分
入力部分 : http://roy/~c109130/advertise2/rubycgi/kaimono.html
送信部分 : http://roy/~c109130/advertise2/rubycgi/kaimono.rb
d.各部分の解説
◯「kaimono.html」
買い物リスト
★注意!!★
このプログラムは東北公益文科大学2009年度生 藤井駿 が著作権を所有しています。
プログラムを入手・改変・再配布は自由に行っても構いませんが
このプログラムを取り扱って生じた問題は一切責任を負いませんのでご了承ください.
このプログラムに対する要件がありましたら下記まで連絡してください。
c109130@e.koeki-u.ac.jp
◯「kaimono1.css」
body {
background: #0099ff ;
}
h1 {
color: #ffffff;
font-size: 25pt;
text-align: center;
padding: 0.5em;
}
p {
background: #00ffff ;
color: black;
font-size: 13pt;
text-align: center;
}
◯「kaimono.rb」
#!/usr/bin/env ruby
$KCODE = 'e' # 文字化け防止
require 'cgi' # CGIの形式に変換する
c = CGI.new("html4") # CGIをHTML文書で使用する
print("Content-type: text/html; charset=EUC-JP\n\n") # 日本語コード
name =c["namae"] # CGI の namae を name に変換する
hizu =c["hizuke"] # CGI の hizuke を hizu に変換する
ido =c["idou"] # CGI の idou を ido に変換する
kou = c["koumoku"] # CGI の koumoku を kou に変換する
print("\n") # HTML文書
print("\n")
print("実行結果 \n")
print(" \n")
print("\n")
print("\n")
print("
実行結果は・・・ \n")
print(" \n") # 改行する
p rintf("☆ 名前 : %s \n",name) # name を代入する
printf("☆ 買い物実施日 : %s \n",hizu) # hizu を代入する
printf("☆ 移動手段 : %s \n",ido) # ido を代入する
print(" \n") # 改行する
print(" \n") # 改行する
print("◯買い物リスト◯ \n")
printf("%s さんが購入した商品は %s です。 \n",name,kou) # name と kou を代入する
print("\n")
print("\n")
print("\n")
◯「kaimono2.css」
body {
background: #0099ff ;
}
h1 {
color: #ffffff;
font-size: 25pt;
text-align: center;
padding: 0.5em;
}
e.実行結果
◯ 「名前 = shun 日付 = 12月9日 移動手段 = 車 商品 = テレビ 」のとき
pan{c109130}% ./kaimono.rb [~/public_html/advertise2/rubycgi]
(offline mode: enter name=value pairs on standard input)
namae="shun"
hizuke="12月9日"
idou="車"
koumoku="テレビ"
Content-type: text/html; charset=EUC-JP
実行結果
実行結果は・・・
☆ 名前 : shun
☆ 買い物実施日 : 12月9日
☆ 移動手段 : 車
◯買い物リスト◯
shun さんが購入した商品は テレビ です。
◯「名前 = 藤井 日付 = 3月18日 移動手段 = 電車 商品 = パン 」のとき
pan{c109130}% ./kaimono.rb [~/public_html/advertise2/rubycgi]
(offline mode: enter name=value pairs on standard input)
namae="藤井"
hizuke="3月18日"
idou="電車"
koumoku="パン"
Content-type: text/html; charset=EUC-JP
実行結果
実行結果は・・・
☆ 名前 : 藤井
☆ 買い物実施日 : 3月18日
☆ 移動手段 : 電車
◯買い物リスト◯
藤井 さんが購入した商品は パン です。
その2.ストレス度を知ることが出来るCGIスクリプト
a.ホームページアドレス
http://roy/~c109130/advertise2/rubycgi/stress.html
b.CGI の題名とその意図
「ストレス度チェック」 → 日常のストレス度を25項目の質問を答えるこ
とで知ることができる
c.入力部分と送信部分
入力部分 : http://roy/~c109130/advertise2/rubycgi/stress.html
送信部分 : http://roy/~c109130/advertise2/rubycgi/stress.rb
d.各部分の解説
◯「stress.html」
ストレス度チェック
◯チェック項目(全25項目)
Q1 朝起きるのが辛いことが多いですか?
はい
いいえ
Q2 疲れているのになかなか眠れないときはありますか?
はい
いいえ
Q3 夜中によく目を覚ましますか?
はい
いいえ
Q4 学校に行きたくないと思うことがよくありますか?
はい
いいえ
Q5 下痢や便秘をしやすい方ですか?
はい
いいえ
Q6 食欲がなかったり過食をしてしまうことがありますか?
はい
いいえ
Q7 ひどい肩こりはありますか?
はい
いいえ
Q8 なにかするとすぐ疲れますか?
はい
いいえ
Q9 お酒や買い物が止められないことがありますか?
はい
いいえ
Q10 一人で過ごしたいと思うことが多いですか?
はい
いいえ
Q11 最近痩せてきたように思いますか?
はい
いいえ
Q12 人に会うのが苦痛なときがありますか?
はい
いいえ
Q13 漠然と不安になることがよくありますか?
はい
いいえ
Q14 いつも勉強に追われている気がしますか?
はい
いいえ
Q15 グチが多いですか?
はい
いいえ
Q16 異性に興味が持てませんか?
はい
いいえ
Q17 胃が痛んだり胸やけのすることが多いですか?
はい
いいえ
Q18 気分が落ち込みやすいですか?
はい
いいえ
Q19 無駄なことばかり考えてしまいますか?
はい
いいえ
Q20 何をしても楽しくないですか?
はい
いいえ
Q21 周囲に気の合わない人がいて困りますか?
はい
いいえ
Q22 他人にどう思われているか気になりますか?
はい
いいえ
Q23 何もかも放りだしたくなりますか?
はい
いいえ
Q24 イライラすることが多いですか?
はい
いいえ
Q25 小さなことが気になってしょうがないことがありますか?
はい
いいえ
★注意!!★
このプログラムは東北公益文科大学2009年度生 藤井駿 が著作権を所有しています。
プログラムを入手・改変・再配布は自由に行っても構いませんが
このプログラムを取り扱って生じた問題は一切責任を負いませんのでご了承ください.
このプログラムに対する要件がありましたら下記まで連絡してください。
c109130@e.koeki-u.ac.jp
◯「stress1.css」
body {
background: #ffff33 ;
}
h1 {
color: #66ff99;
font-size: 25pt;
text-align: center;
padding: 0.5em;
}
h2 {
background: #ffffff;
padding: 0.5em;
}
p {
background: #ffff66 ;
color: black;
font-size: 13pt;
text-align: center;
}
◯「stress.rb」
#!/usr/bin/env ruby
$KCODE = 'e' # 文字化け防止
require 'cgi' # CGIの形式に変換する
c = CGI.new("html4") # CGIをHTML文書で使用する
print("Content-type: text/html; charset=EUC-JP\n\n") # 日本語コード
name =c["goshimei"] # CGI の namae を name に変換する
sei =c["seibetsu"] # CGI の hizuke を hizu に変換する
total = 0 # total = 0からスタート
k1 =c["kotae1"] # CGI の kotae1 を k1 に変換する
k2 =c["kotae2"] # 以下同様
k3 =c["kotae3"]
k4 =c["kotae4"]
k5 =c["kotae5"]
k6 =c["kotae6"]
k7 =c["kotae7"]
k8 =c["kotae8"]
k9 =c["kotae9"]
k10 =c["kotae10"]
k11 =c["kotae11"]
k12 =c["kotae12"]
k13 =c["kotae13"]
k14 =c["kotae14"]
k15 =c["kotae15"]
k16 =c["kotae16"]
k17 =c["kotae17"]
k18 =c["kotae18"]
k19 =c["kotae19"]
k20 =c["kotae20"]
k21 =c["kotae21"]
k22 =c["kotae22"]
k23 =c["kotae23"]
k24 =c["kotae24"]
k25 =c["kotae25"]
print("\n") # HTML文書
print("\n")
print("ストレス度チェック実行結果 \n")
print(" \n")
print("\n")
print("\n")
printf("
%sさんの実行結果は・・・ \n",name)
print("
◎ 診断結果 ◎ \n")
if k1 == "はい" # もし k1 == "はい" なら
total +=1 # total に +1 する
end # 以下同様
if k2 == "はい"
total +=1
end
if k3 == "はい"
total +=1
end
if k4 == "はい"
total +=1
end
if k5 == "はい"
total +=1
end
if k6 == "はい"
total +=1
end
if k7 == "はい"
total +=1
end
if k8 == "はい"
total +=1
end
if k9 == "はい"
total +=1
end
if k10 == "はい"
total +=1
end
if k11 == "はい"
total +=1
end
if k12 == "はい"
total +=1
end
if k13 == "はい"
total +=1
end
if k14 == "はい"
total +=1
end
if k15 == "はい"
total +=1
end
if k16 == "はい"
total +=1
end
if k17 == "はい"
total +=1
end
if k18 == "はい"
total +=1
end
if k19 == "はい"
total +=1
end
if k20 == "はい"
total +=1
end
if k21 == "はい"
total +=1
end
if k22 == "はい"
total +=1
end
if k23 == "はい"
total +=1
end
if k24 == "はい"
total +=1
end
if k25 == "はい"
total +=1
end
print("\n")
if total >=6 && total <= 10 # もし total が6以上10以下なら
print("ややストレスがありますがそれほど問題はないでしょう
\n") # これを表示
elsif total >= 11 && total<= 15 # もし total が11以上15以下なら
print("ストレスが溜まっているかもしれません
\n") # これを表示
elsif total >= 16 && total <= 25 # もし total が16以上25以下なら
print("かなりストレスが溜まっています
\n") # これを表示
else # それ以外なら
print("ストレスはほとんどないと思われます!!
\n") # これを表示
end
print(" \n")
print(" \n") # 改行する
print(" \n")
print(" \n") # 改行する
print("\n")
printf("氏名 : %s さん
\n",name)
printf("性別 : %s
\n",sei)
print(" \n")
print(" \n") # 改行する
print(" \n") # 改行する
print("☆回答一覧
\n")
printf(" Q1 朝起きるのが辛いことが多いですか? A : %s
\n",k1)
printf(" Q2 疲れているのになかなか眠れないときはありますか? A : %s
\n",k2)
printf(" Q3 夜中によく目を覚ましますか? A : %s
\n",k3)
printf(" Q4 学校に行きたくないと思うことがよくありますか? A : %s
\n",k4)
printf(" Q5 下痢や便秘をしやすい方ですか? A : %s
\n",k5)
printf(" Q6 食欲がなかったり過食をしてしまうことがありますか? A : %s
\n",k6)
printf(" Q7 ひどい肩こりはありますか? A : %s
\n",k7)
printf(" Q8 なにかするとすぐ疲れますか?A : %s
\n",k8)
printf(">Q9 お酒や買い物が止められないことがありますか? A : %s
\n",k9)
printf(" Q10 一人で過ごしたいと思うことが多いですか? A : %s
\n",k10)
printf(" Q11 最近痩せてきたように思いますか? A : %s
\n",k11)
printf(" Q12 人に会うのが苦痛なときがありますか? A : %s
\n",k12)
printf(" Q13 漠然と不安になることがよくありますか? A : %s
\n",k13)
printf(" Q14 いつも勉強に追われている気がしますか? A : %s
\n",k14)
printf(" Q15 グチが多いですか? A : %s
\n",k15)
printf(" Q16 異性に興味が持てませんか? A : %s
\n",k16)
printf(" Q17 胃が痛んだり胸やけのすることが多いですか? A : %s
\n",k17)
printf(" Q18 気分が落ち込みやすいですか? A : %s
\n",k18)
printf(" Q19 無駄なことばかり考えてしまいますか? A : %s
\n",k19)
printf(" Q20 何をしても楽しくないですか? A : %s
\n",k20)
printf(" Q21 周囲に気の合わない人がいて困りますか? A : %s
\n",k21)
printf(" Q22 他人にどう思われているか気になりますか? A : %s
\n",k22)
printf(" Q23 何もかも放りだしたくなりますか? A : %s
\n",k23)
printf(" Q24 イライラすることが多いですか? A : %s
\n",k24)
printf(" Q25 小さなことが気になってしょうがないことがありますか? A : %s
\n",k25)
print("\n")
print("\n")
print("\n")
◯「stress2.css」
body {
background: #ffff66 ;
}
h1 {
color: #66ff99;
font-size: 25pt;
text-align: center;
padding: 0.5em;
}
p {
background: #ffffff ;
color: black;
font-size: 13pt;
}
e.実行結果
◯「"はい" が 6 のとき」
pan{c109130}% ./stress.rb [~/public_html/advertise2/rubycgi]
(offline mode: enter name=value pairs on standard input)
goshimei="fujii"
seibetsu="男性"
kotae1="はい"
kotae2="はい"
kotae3="はい"
kotae4="はい"
kotae5="はい"
kotae6="はい"
Content-type: text/html; charset=EUC-JP
ストレス度チェック実行結果
fujiiさんの実行結果は・・・
◎ 診断結果 ◎
ややストレスがありますがそれほど問題はないでしょう
氏名 : fujii さん
性別 : 男性
以下、省略。
◯「"はい" が 10 のとき」
pan{c109130}% ./stress.rb [~/public_html/advertise2/rubycgi]
(offline mode: enter name=value pairs on standard input)
goshimei="fujii"
seibetsu="男性"
kotae1="はい"
kotae2="はい"
kotae3="はい"
kotae4="はい"
kotae5="はい"
kotae6="はい"
kotae7="はい"
kotae8="はい"
kotae9="はい"
kotae10="はい"
Content-type: text/html; charset=EUC-JP
ストレス度チェック実行結果
fujiiさんの実行結果は・・・
◎ 診断結果 ◎
ややストレスがありますがそれほど問題はないでしょう
氏名 : fujii さん
性別 : 男性
以下、省略。
◯「"はい" が 11 のとき」
pan{c109130}% ./stress.rb [~/public_html/advertise2/rubycgi]
(offline mode: enter name=value pairs on standard input)
goshimei="fujii"
seibetsu="男性"
kotae1="はい"
kotae2="はい"
kotae3="はい"
kotae4="はい"
kotae5="はい"
kotae6="はい"
kotae7="はい"
kotae8="はい"
kotae9="はい"
kotae10="はい"
kotae11="はい"
Content-type: text/html; charset=EUC-JP
ストレス度チェック実行結果
fujiiさんの実行結果は・・・
◎ 診断結果 ◎
ストレスが溜まっているかもしれません
氏名 : fujii さん
性別 : 男性
以下、省略。
◯「"はい" が 15 のとき」
pan{c109130}% ./stress.rb [~/public_html/advertise2/rubycgi]
(offline mode: enter name=value pairs on standard input)
goshimei="fujii"
seibetsu="男性"
kotae1="はい"
kotae2="はい"
kotae3="はい"
kotae4="はい"
kotae5="はい"
kotae6="はい"
kotae7="はい"
kotae8="はい"
kotae9="はい"
kotae10="はい"
kotae11="はい"
kotae12="はい"
kotae13="はい"
kotae14="はい"
kotae15="はい"
Content-type: text/html; charset=EUC-JP
ストレス度チェック実行結果
fujiiさんの実行結果は・・・
◎ 診断結果 ◎
ストレスが溜まっているかもしれません
以下、省略。
◯「"はい" が 16 のとき」
pan{c109130}% ./stress.rb [~/public_html/advertise2/rubycgi]
(offline mode: enter name=value pairs on standard input)
goshimei="fujii"
seibetsu="男性"
kotae1="はい"
kotae2="はい"
kotae3="はい"
kotae4="はい"
kotae5="はい"
kotae6="はい"
kotae7="はい"
kotae8="はい"
kotae9="はい"
kotae10="はい"
kotae11="はい"
kotae12="はい"
kotae13="はい"
kotae14="はい"
kotae15="はい"
kotae16="はい"
Content-type: text/html; charset=EUC-JP
ストレス度チェック実行結果
fujiiさんの実行結果は・・・
◎ 診断結果 ◎
かなりストレスが溜まっています
氏名 : fujii さん
性別 : 男性
以下、省略。
◯「"はい" が 25 のとき」
pan{c109130}% ./stress.rb [~/public_html/advertise2/rubycgi]
(offline mode: enter name=value pairs on standard input)
goshimei="fujii"
seibetsu="男性"
kotae1="はい"
kotae2="はい"
kotae3="はい"
kotae4="はい"
kotae5="はい"
kotae6="はい"
kotae7="はい"
kotae8="はい"
kotae9="はい"
kotae10="はい"
kotae11="はい"
kotae12="はい"
kotae13="はい"
kotae14="はい"
kotae15="はい"
kotae16="はい"
kotae17="はい"
kotae18="はい"
kotae19="はい"
kotae20="はい"
kotae21="はい"
kotae22="はい"
kotae23="はい"
kotae24="はい"
kotae25="はい"
Content-type: text/html; charset=EUC-JP
ストレス度チェック実行結果
fujiiさんの実行結果は・・・
◎ 診断結果 ◎
かなりストレスが溜まっています
氏名 : fujii さん
性別 : 男性
以下、省略。
◯「それ以外」
pan{c109130}% ./stress.rb [~/public_html/advertise2/rubycgi]
(offline mode: enter name=value pairs on standard input)
goshimei="fujii"
seibetsu="男性"
Content-type: text/html; charset=EUC-JP
ストレス度チェック実行結果
fujiiさんの実行結果は・・・
◎ 診断結果 ◎
ストレスはほとんどないと思われます!!
氏名 : fujii さん
性別 : 男性
以下、省略。
3.感想
私が興味を持ったCGI作品は c109066 の人の作品です。
アドレスは「 http://roy/~c109066/advertise2/rubycgi/fork.html」
根拠は誕生日と血液型を入力すると、星座が分かるほかに、性格も分かると
いうことが画期的だと思ったからである。
また、スタイルシートも利用しており、とても見やすい作品で印象に残った
からである。
今回の課題は今出来ることをすべて盛り込むことが出来たとおもう。
CGI ははじめとてもむずかしくて理解するのに手間が掛かったが、今となっ
ては大体のことが出来るようになったので良かった。
次回からも今まで以上に凄い作品が作れるように頑張っていきたい。
4.参考文献等
◯共同学習者
・池田博哉
・遠藤孝之
・花木剛志