第 8 回 ことはじめ レポート課題 氏名:見川英駿 学籍番号:c1101856 語学クラス:中国語3 コース(系):地域共創コース 1.筆記問題 A. CGIとHashの似ている点は選択したモノのデータを取り出す所だと思う。 例えば、「酒田駅」と項目から選択したら出発駅からかかる費用が表示された り、「しまうま」を項目から選択したら[しましま],[アフリカ],[草食動物]な どのデータが取り出せる。 B. .htaccessで、ディレクトリ内のファイルのみCGIが使える宣言をし、*.htmlで、 ネット上でCGI入力できるHPを作り、*.rbで、入力者によって入力されたデータ を処理し、結果を反映させる。 C. 授業で作成したticket.html内の
が書かれている行で、CGI変数をticket.rbに渡してデータ処理をさせている。 D. ticket.rb内のrequire'cgi'と書かれている行でCGI変数の使用宣言をしている。 CGI = CGI.new("html4")でCGI用のhtmlが作られる。 print("Content-type: text/html; charset=EUC-JP\n\n")の行では日本語コー ドを定義している。 2.プログラム問題 A. [テーマ設定] ドロップダウンメニューで発車駅、到着駅を選ぶと運賃が表示され、乗車券が 表示されるようにした。 [作成したプログラム] #!/usr/bin/env ruby $KCODE = 'e' # 日本語コード require 'cgi' # CGI変数の使用宣言をしている cgi = CGI.new("html4") print("Content-type: text/html; charset=EUC-jp\n\n")#日本語コード lea = cgi["leave"] # Ruby に CGI でもらってきた値を代入 arv = cgi["arrive"] # Ruby に CGI でもらってきた値を代入 tim = cgi["time"] kyori = Hash.new # Hash定義! open("rikuusaisen.dat", "r") do |eki| # 同じディレクトリ内に保存したrikuusaisen.dat のデータを開く while ichi = eki.gets if /(\S+)\s+(\d+\.\d)/ =~ ichi # 正規表現を使ってデータ内から拾ってくる kyori[$1] = $2.to_f end end end hajime = kyori[lea] # hajime には出発駅の距離が入る oriru = kyori[arv] # oriru には到着駅の距離が入る long = hajime - oriru # 出発駅の距離から到着駅の距離を引く if long < 0 # 距離の差がマイナスになった long *= -1 # マイナスにならないようにする end grid = (long + 0.5).to_i #ここで四捨五入をしている total = 120 + grid * 20 #初乗り料金120円に駅間の距離の差に20を掛けたものを足す print("\n") print("\n") print("陸羽西線券売機\n") print("\n") print("\n") print("

乗車券

\n") printf("

★*★*★*★*★*★*★*

\n") printf("

%s -- %s 間

\n",lea , arv) # 駅名を読み込む printf("%d円\n",total) # 料金を表示 printf("

★*★*★*★*★*★*★*

\n") print("\n") print("\n") [実行結果] ●新庄駅〜余目駅 pan{c110185}% ./ticket.rb [~/public_html/rubycgi] (offline mode: enter name=value pairs on standard input) leave="新庄駅" arrive="余目駅" Content-type: text/html; charset=EUC-jp 陸羽西線券売機

乗車券

★*★*★*★*★*★*★*

新庄駅 -- 余目駅 間

980円

★*★*★*★*★*★*★*

[確かめ算] pan{c110185}% bc -l [~/public_html/rubycgi] 120 + (43 + 0.5) * 20 980.0 プログラム内の計算結果と一致した。 CGI発券機を掲載しているページ ******************************* http://roy/~c110185/advertise2/ ******************************* B. ロゴを掲載しているページ *上に同じ ******************************* http://roy/~c110185/advertise2/ ******************************* C. PDFを掲載しているページ *上に同じ ******************************* http://roy/~c110185/advertise2/ ******************************* 3.感想 よくネット上で目にするCGIを実際に作成してみて以外と難しく感じた。ホーム ページに上手く反映されず試行錯誤を繰り返してようやく完成することができ た。早いうちからCGIに慣れておきたい。 4.参考文献 ・去年の基礎プロIIの第8回レポート講評のページ 著者:西村まどか http://roy/~madoka/2010/r2/08/rpt/crt.html ・基礎プロIIの第8回「動作プログラム作成」著者:西村まどか http://roy/~madoka/2011/r2/08/r2_08_08_theme_08_ruby.html ・基礎プロIIの第8回「利用者にデータを入力させる部品」著者:西村まどか http://roy/~madoka/2011/r2/08/r2_08_05_theme_05_form.html ◎共同学習者◎ 五十嵐兼一さん ◎添付◎ 今回作成したプログラムとプログラムに使用したデータファイル (rikuusaisen.dat)、作成したロゴ、作成したPDFファイルを添付します。