第10回 基礎プログラミング II レポート課題 氏名:青木 千紗 学籍番号:C1090012 語学クラス:中国語 コース(系):地域共創コース 1 筆記問題 A require `pstore` 受け取ったデータを貯める宣言 PStore XX = PStore.new("XXXX.db") 出力させる部分を作成
PStore XX.transaction do 変数に代入された値を表示 2 プログラム問題 a リンク http://roy/~c109001/advertise2/rubycgi/r2_cgi_best.html b CGIの題名とその意図 花*花*花 8つのラジオボタンを提示し、色を選んでもらい、おすすめの花の絵を表示さ せる。また、どの色が人気かの統計を取るようなプログラムを考えた。 b 入力部分と送信結果の表示する部分 ●r2_cgi_best.html 花*花*花

花*花*花

色を選んで下さい。 選んだ色によっておすすめの花を紹介します。


選んだ色によって花の色が変わります


好きな色に投票して下さい



******

●r2_cgi_best.rb #!/usr/koeki/bin/ruby require 'cgi' # requireでcgiを使用できるようにする cgi = CGI.new("html4") # cgiという名前でCGIを作る print("Content-type: text/html; charset=EUC-jp\n\n") # 受け取ったデータを使う宣言 flower = cgi["flower"] # データをflowerに代入する color = cgi["color"] # データをcolorに代入する red = 0 # redは0からはじまる blue = 0 # blueは0からはじまる yellow = 0 # yellowは0からはじまる pink = 0 # pinkは0からはじまる purple = 0 # purpleは0からはじまる green = 0 # greenは0からはじまる white = 0 # whiteは0からはじまる black = 0 # blackは0からはじまる open("flower.txt" , "r") do |r| # flower.txtを読みこんで変数rにする while kazu = r.gets # getsでとりこんだものを変数rに代入する if /(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)/ =~ kazu # 文字 文字 文字 文字 文字 文字 文字 文字 文字 文字 で読みこむ red = $1.to_i # redの中に(\d+)をとりこむ blue = $2.to_i # blueの中に(\d+)をとりこむ yellow = $3.to_i # yellowの中に(\d+)をとりこむ pink = $4.to_i # pinkの中に(\d+)をとりこむ purple = $5.to_i # purpleの中に(\d+)をとりこむ green = $6.to_i # greenの中に(\d+)をとりこむ white = $7.to_i # whiteの中に(\d+)をとりこむ black = $8.to_i # blackの中に(\d+)をとりこむ end # ifに対するend end # whileに対するend end # openに対するend print("\n") # htmlのはじまり print("\n") # headのはじまり print("\n") # タイトルの表示 print("\n") # link,type,cssなどをリンク print("\n") # headの終わり print("\n") # bodyのはじまり if flower == "red" # もしflowerがredだったら print("

花の紹介

") print("

花の名前:チューリップ
花言葉:愛の告白

") print("") print("

*****

") elsif flower == "blue" # もしflowerがblueだったら print("

花の紹介

") print("

花の名前:アイリス
花言葉:あなたを大切にします

") print("") print("

*****

") elsif flower == "yellow" # もしflowerがyellowだったら print("

花の紹介

") print("

花の名前:ひまわり
花言葉:あこがれ

") print("") print("

*****

") elsif flower == "pink" # もしflowerがpinkだったら print("

花の紹介

") print("

花の名前:さくら
花言葉:純潔、精神美

") print("") print("

*****

") elsif flower == "purple" # もしflowerがpurpleだったら print("

花の紹介

") print("

花の名前:ラベンダー
花言葉:あなたを待っています

") print("") print("

*****

") elsif flower == "green" # もしflowerがgreenだったら print("

花の紹介

") print("

花の名前:クローバー(四つ葉)
花言葉:幸福

") print("") print("

*****

") elsif flower == "white" # もしflowerがwhiteだったら print("

花の紹介

") print("

花の名前:コスモス(白)
花言葉:美麗、優美

") print("") print("

*****

") else # もしそれ以外だったら print("

花の紹介

") print("

花の名前:パンジー(黒)
花言葉:物思い、思慮深い

") print("") print("

*****

") end # ifに対するend if color == "red" # もしflowerがredだったら red += 1 elsif color == "blue" # もしflowerがblueだったら blue += 1 elsif color == "yellow" # もしflowerがyellowだったら yellow += 1 elsif color == "pink" # もしflowerがpinkだったら pink += 1 elsif color == "purple" # もしflowerがpurpleだったら purple += 1 elsif color == "green" # もしflowerがgreenだったら green += 1 elsif color == "white" # もしflowerがwhiteだったら white += 1 else # もしそれ以外だったら black += 1 end # ifに対するend open("flower.txt" , "w") do |w| # flower.txtを書き込みで開いて変数wにする w.printf("%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\n",red,blue,yellow,pink,purple,green,white,black) # wでflower.txtに書き込む end # openに対するend print("\n") # bodyの終了 print("\n") # htmlの終了 d 各部の解説 ◯r2_cgi_best.html ●黒 ラジオボタンをname="flower"で作って、選んだ色によって花の色が変わるよう にした。 ●黒 ラジオボタンをname="color"で作って、好きな色に投票してもらうようにした。 ● OKを選択すると送信画面にいくようにした。 ◯r2_cgi_best.rb ●open("flower.txt" , "r") do |r| while kazu = r.gets if /(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)/ =~ kazu red = $1.to_i blue = $2.to_i yellow = $3.to_i pink = $4.to_i purple = $5.to_i green = $6.to_i white = $7.to_i black = $8.to_i end end end 好きな色を選択してもらい、管理者がどの色が一番人気であるかを知るために、flower.txtを読みこみモードで開いて、変数rにする。 ●if color == "red" red += 1 elsif color == "blue" blue += 1 elsif color == "yellow" yellow += 1 elsif color == "pink" pink += 1 elsif color == "purple" purple += 1 elsif color == "green" green += 1 elsif color == "white" white += 1 else black += 1 end 好きな色を選んでもらうところで、もしredを選んだ場合は1ずつ数が増えて行く ようにした。 ●open("flower.txt" , "w") do |w| w.printf("%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\n",red,blue,yellow,pink,purple,green,white,black) end flower.txtを書き込みモードで開いて変数wにする。そして、wでflower.txtに書 き込むようにする。 e 実行結果 roy{c109001}% ./r2_cgi_best.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) flower="red" color="pink" Content-type: text/html; charset=EUC-jp

花の紹介

花の名前:チューリップ
花言葉:愛の告白

*****