第 8 回 ことはじめ レポート課題 氏名:佐藤 千香 学籍番号:C1101069 語学クラス:英語6 コース(系):地域共創コース 1、筆記問題 A、 CGI 変数と Hush の似ている点は、あらじめ入力された複数のデータから 呼び出すことが出来るということである。 Hash での key は CGI変数において name で、 Hash での value は CGI変数において option であるところが似ている。 B、 .htaccess とすることで .rbファイルのみが CGI スクリプトであると設定する。 あとは html で .rb の結果を表示する。 C、
データを入力させるためには、まず form という tag を作る。 構造は以下の通りである。 メソッドの部分には GET または POST が入る。 今回は項目数が多く、長い文章を入力させる POST を用いる。 スクリプトの部分には、入力データの引渡し先が入る。 rubycgi ディレクトリの中にある ticket.rb がデータを受け取り、 処理を行っている。 D、 require 'cgi' # CGI を使う cgi = CGI.new('html4') # 入力された値を変数 cgi に代入させる print("Content-type: text/html; charest=EUC-jp\n\n") # 日本語コードの定義 arv = cgi["arrive"] # Ruby に CGI でもらってきた値を代入 参考文献:ウェブページ 神田 直弥 基礎プログラミングII 第8回 「CGI[1]」 http://roy.e.koeki-u.ac.jp/~naoya/cgi-bin/9.html 西村 まどか 基礎プログラミングII 第8回 「ことはじめ」 http://roy.e.koeki-u.ac.jp/~madoka/2011/r2/08/ 2、プログラム問題 A、 a、考えた設定 オンライン券売機。 出発駅と到着駅を選択してもらい、乗車券を発行するプログラム。 b、プログラム #!/usr/bin/env ruby require 'cgi' # CGI を使う cgi = CGI.new("html4") # CGI を html 文書に使う print("Content-type: text/html; charset=Euc-jp\n\n") # 日本語コードにする start = cgi["depart"] # CGI での "depart" を変数 start に代入する goal = cgi["arrive"] # CGI での "arrive" を変数 goal に代入する station = Hash.new # Hash 配列 station["新庄"] = 0.0 station["升形"] = 7.5 station["羽前前波"] = 10.6 station["津谷"] = 12.9 station["古口"] = 17.0 station["高屋"] = 24.8 station["清川"] = 31.1 station["狩川"] = 34.9 station["南野"] = 38.9 station["余目"] = 43.0 station["北余目"] = 45.7 station["砂越"] = 48.7 station["東酒田"] = 52.0 station["酒田"] = 55.2 print("\n") print("\n") print("\tチケット\n") print("") print("\n") print("\n") if start == goal # if 文で出発駅と到着駅が同じだった場合 print("

") print("※エラー※") # 行う操作 (エラーの表示) print("

") print("もう一度やり直して下さい。") print("

\n") else # その他だった場合 print("

◎乗車券") # 行う操作 print("

****************************************

") print("公益日本電車 --陸羽西線--") printf("

%s → %s 間\n

",start,goal) if station[start] > station[goal] # if 文で出発駅が到着駅より距離が長い場合 printf("走行距離: %3.1f\t km

",(station[start] - station[goal]).to_f) # 走行距離 = 出発駅の距離 - 到着駅の距離 printf("運賃: %d 円
",120+(station[start] - station[goal]).to_f/2 * 20) # 運賃 = 基本料金 + (走行距離) ÷ 2(km) × 20(加算される料金) else printf("走行距離: %3.1f km

",(station[goal]-station[start]).to_f) # 走行距離 = 到着駅の距離 - 出発駅の距離 printf("運賃:\t %d 円
",120+(station[goal]-station[start]).to_f/2 * 20) # 運賃 = 基本料金 + (走行距離) ÷ 2(km) × 20(加算される料金) end # if 文に対する end print("

*****************************************

") end # if 文に対する end print("\n") print("\n") ●HTML方式● オンライン券売機