第 8 回 ことはじめ レポート課題 氏名: 薮田 大樹 学籍番号: c1101916 語学クラス: 中国語3 コース(系): 地域共創コース 1、筆記問題 A: CGI 変数と Hash の似ている点 ・CGIでは、html内にあるあらかじめ複数の選択できるものから、 取り出したいものを取り出せる。Hashでもプログラム内に入力された データをそのまま持ってくる事が出来る。そこが似ていると思いました。 B: .htaccess で .rb と付いたプログラムを CGI として扱う。 .html は選択肢を表示し、その結果を .rb で表示するようになっている。 C: ticket.html で使ったのは、 この部分でドロップダウンメニューを作り、選ばれた option が で現れたボタンを押すことで値が送られる。 D: ticket.rb で使ったのは、 require 'cgi' この部分で CGI を使う宣言をして cgi = CGI.new("html4") print("Content-type: text/html; charset=EUC-jp\n\n") の部分で受け取ったデータを使う宣言をする。 この後に print 文で表示したい文を表示する。 2: プログラム問題 A a:ドロップダウンメニューで発車駅、到着駅を選び ticket.rbプログラムにより 運賃を計算する。この時、基本運賃(120円)+2kmごとに20円づつ加算するもの と、新幹線運賃として2kmごとに50円づつ加算する設定を作り、よりリアリティ を追究したプログラムを作成した。 アドレス http://roy/~c110191/rubycgi/ticket.html b:作成したプログラム (ticket.rbプログラム) #!/usr/bin/env ruby $KCODE = "e" #日本語の文字コード require "cgi" # CGIの実行を要求。 cgi = CGI.new("html4") # CGIをHTML文書で使用する train = Hash.new # ハッシュを設定 def price(zr,arv) # zeroを出発駅とし、arriveを到着駅とし defを設定する。 if zr > arv (zr-arv)/2*20 + 120 # 料金を出す計算 zrは出発駅、arvは到着駅 # 基本料金は120円、そこから2kmごとに20円づつ加算。 elsif arv > zr (arv-zr)/2*20 + 120 end # if - end end # def - end def price2(zr2,arv2) # 2つ目の def は、新幹線料金を作る為に設定。 # zeroを出発駅、arriveを到着駅に。 if zr2 > arv2 (zr2-arv2)/2*50 # 新幹線料金は2kmごとに50円づつ加算する。 elsif arv2 > zr2 (arv2-zr2)/2*50 end # if - end end # def - end print("Content-type: text/html; charset=EUC-JP\n\n") # 日本語コードの定義 sta = cgi["start"] # CGIでのstartはstaに fin = cgi["finish"] # CGIでのfinishはfinに open("ticket.dat","r") do |cut| # open method(rなので読み込み専用) によりticket.datを読みこむ。 while station = cut.gets if /(\S+)\s+(\S+)\s+(\S+)/ =~station train[$1] = $2.to_f #データをきりだす($1は駅名を、$2は距離を読み込む) end end end zero = train[sta] arrive = train[fin] zero2 = train[sta] arrive2 = train[fin] total = price(zero,arrive) total2 = price2(zero2,arrive2) # 基本料金をtotalに、新幹線料金をtotal2に設定 print("\n") print("
\n") print("\n") print("\n") print("*-------------------------------------------*
[ %s駅発 ] → [ %s駅着 ]
\n",sta ,fin) printf("
[ 新幹線料金 ]:¥ %d [円]
[ 合計料金 ]: ¥ %d [円]
山形新幹線の御利用ありがとうございます
\n") print("*-------------------------------------------*
\n") print("\n") print("\n") (ticket.html)このプログラムは、東北公益文科大学 薮田大樹が著作権を保有しています。
プログラムの入手・改変・再配布は、自由に行っても構いません。
なお、このプログラムの取り扱いによって生じた問題については責任を負いませんので、注意して下さい。
このプログラムに対する感想・意見・苦情など言いたいことがありましたら、
「 c110191@f.koeki-u.ac.jp 」へお願いします。