氏名: 兵藤 理沙 学籍番号: c1101721 語学クラス: 英語 6 コース: 政策マネジメント 第 8 回 ことはじめ のレポート課題を再提出します。 1、筆記問題 A、 CGIのnameがhashのkeyのような働きをして、CGIのoptionがhashのvalueのような 働きをしている。 B、 .htaccessという名前のファイルを作成し、このディレクトリの中の*.rbで終わ るファイルはCGIスクリプトと認識されるようにする。 *.htmlは表示させプログラムファイルにデータを送る。 *.rbはデータをhtmlにする C、 のOKを押すと*.rbへ送信する。 D、 for = cgi["start"] arv = cgi["arrove"] .htmlから送信されたデータを代入する。 2、プログラム問題 A、 (1)考えた設定 酒田駅から鶴岡駅までの料金と走行距離を表示するプログラム (2)作成したプログラム ticket.html========================================== #!/usr/bin/env ruby $KCODE = 'e' # 日本語の文字コード require 'cgi' # cgiを使う cgi = CGI.new('html4') # 受け取ったデータをhtmlで使う print("Content-type: text/html; charset=EUC-jp\n\n") # 日本語コードの定義 lav = cgi["leave"] # ユーザが選んだものを受け取る arv = cgi["arrive"] # ユーザが選んだものを受け取る data = Hash.new # 新しいHashをつくる open("ticket.dat","r") do |station| # ticket.datを使う while line = station.gets # 指定したファイルを読み込み、lineに代入する if/(\S+)\s+(\S+)/=~ line # ticket.datの中が \S(空白以外)と \s(空白)と \S(空白以外)の時受け取る data[$1] = $2.to_i end end end hajime = data[lav] # dataからlavを取り出し、hajimeに出発駅が入る oriru = data[arv] # dataからarvを取り出し、oriruに降りる駅が入る def ryokin(h,o) # 出発駅から降りる駅までの料金を求める if h > o # 出発駅の距離の方が長い時 120 + (h - o) / 2 * 20 elsif h < o # 降りる駅の距離の方が長い時 120 + (o - h) / 2 * 20 end end def kyori(ha,ow) # 出発駅から降りる駅までの距離を求める if ha > ow # 出発駅の距離の方が長い時 ha - ow elsif ha < ow # 降りる駅の距離の方が長い時 ow - ha end end print("\n") print("\n") print("\t酒田〜鶴岡 チケット\n") print("\n") print("\n") print("

\n") print("

◎乗車券◎

\n") printf("

\t出発駅:%s -- 到着駅:%s

\n", lav, arv) # ユーザが選んだものを表示する printf("

\t料金: %d [円]

\n", ryokin(hajime,oriru)) # def ryokinの計算式の答えを表示させる printf("

\t走行距離: %d [km]

\n", kyori(hajime,oriru)) # def kyoriの計算式の答えを表示させる print("

\n") print("

ご利用ありがとうございました。

\n") print("

\n") print("\n") print("\n") ===================================================== ticket.html========================================== オンライン券売機

乗車発券システム

「 酒田〜 鶴岡間 」

================================================= (3)変更点 変更点はありません (4)結果画面 (a)=============================== ◎乗車券◎ 出発駅:酒田 -- 到着駅:砂越 料金: 220 [円] 走行距離: 10 [km] ご利用ありがとうございました。 ================================== (b)=============================== ◎乗車券◎ 出発駅:砂越 -- 到着駅:藤島 料金: 400 [円] 走行距離: 28 [km] ご利用ありがとうございました。 ================================== (5)考察 bc -lで確認 (a) 出発駅:酒田 0 km 到着駅:砂越 10 km pan{c110172}% bc -l [~] 120 + (10 - 0) / 2 * 20 220.00000000000000000000 (b) 出発駅:砂越 10km 到着駅:藤島 38km pan{c110172}% bc -l [~] 120 + (38 -10) / 2 * 20 400.00000000000000000000 プログラムの結果と料金が同じなので正しく実行されていると言える。 (6)参考文献 http://roy/~madoka/2011/r2/08/ 西村まどか 基礎プログラミング II 第 8 回 「ことはじめ」 共同制作者:菅原彩花さん、鈴木椎菜さん 協力してくれた先輩: 青木千紗さん B、 GIMPのアドレス http://roy/~c110172/advertise2/logo_r2_c110172.png C、 WriterのPDFファイルのアドレス http://roy/~c110172/advertise2/r2_c110172.pdf 3、感想 作成したプログラムが実行できなかったので、筆記問題のみ提出します。 今回のプログラム問題は、次回再提出します。