第 8 回 ことはじめ レポート課題 氏名:水口天地 学籍番号:c1101862 語学クラス:英語2 コース(系):地域共創 1.筆記問題 A. html文書にあらかじめ入力されたデータをプログラムに持ってくるという部 分が、Hashのプログラム内に入力されたデータをそのまま持ってくる部分と 似ていると思った。 B. .htaccess で .rb と付いたプログラムを CGI として扱う。 .html は選択肢を表示し、その結果を .rb で表示するようになっている。 C.
# .rb に 選択した結果を渡す # 選択した結果を reset する
・form タグで、次のページを指定 ・select タグで、CGI専用の名前を決める ・option タグで、実際に表示される選択肢を決める ・input タグで、.rbに選択結果を渡す 選択結果をやり直す D. require 'cgi' # CGI を使う cgi = CGI.new("html4") # CGI を html文書に使う print("Content-type: text/html; charset=EUC-jp\n\n") # 日本語コードの定義 arv = cgi["arrive"] # CGI から取ってくるうち、arrive の部分を arv にする # これにより、htmlから取ってきたものを使用できるよう # になる 2.プログラム問題 A. 作成したプログラム #!/usr/koeki/bin/ruby require 'cgi' # CGI を使う cgi = CGI.new("html4") # CGI を html文書に使う data = Hash.new # データの Hash を使う print("Content-type: text/html; charset=EUC-jp\n\n") # 日本語コードの定義 def ryokin(h,o) # h = 出発駅、o = 到着駅 if h > o # もし、hazimeの値 が owariの値 より大きい時 120 + (h - o) / 2 * 20 # 基本料金 + (hazime値 - owari値) / 2kmごと * 20円 elsif h < o # もし、hazimeの値 が owariの値 より小さい時 120 + (o - h) / 2 * 20 # 基本料金 + (owari値 - hazime値) / 2kmごと * 20円 end end def kyori(ha,ow) # h = 出発駅、o = 到着駅 if ha > ow # もし、hazimeの値 が owariの値 より大きい時 ha - ow # hazime までの距離 - owari までの距離 elsif ha < ow # もし、hazimeの値 が owariの値 より小さい時 ow - ha # hazime までの距離 - owari までの距離 end end str = cgi["start"] # CGI から取ってくるうち、start の部分を str とする arv = cgi["arrive"] # CGI から取ってくるうち、arrive の部分を arv とする open("ticket.dat", "r") do |station| while line = station.gets if/(\S+)\s+(\S+)/ =~ line data[$1] = $2.to_i # データ内の2番目を数値とし、data[$1] とする end end end hazime = data[str] # データから取り出した出発駅の部分を hazime とする owari = data[arv] # データから取り出した到着駅の部分を owari とする print("\n") print("\n") print("\t------------------------------------------------------------
\n") print("\t出発駅:%s -- 到着駅:%s
\n", str, arv) printf("\t料金: %d [円]
\n", ryokin(hazime,owari)) printf("\t走行距離: %d [km]
\n", kyori(hazime,owari)) print("
\n") print("どうぞ、快適な旅をお楽しみ下さい。
\n") print("------------------------------------------------------------
\n") print("\n") print("\n") 実行結果 ------------------------------------------------------------ ◎乗車券◎ 出発駅:酒田 -- 到着駅:鶴岡 料金: 400 [円] 走行距離: 28 [km] どうぞ、快適な旅をお楽しみ下さい。 ------------------------------------------------------------ ------------------------------------------------------------ ◎乗車券◎ 出発駅:余目 -- 到着駅:藤島 料金: 200 [円] 走行距離: 9 [km] どうぞ、快適な旅をお楽しみ下さい。 ------------------------------------------------------------ B. 最高傑作のページに貼り付けた。 http://roy/~c110186/advertise2/ C. PDFのファイルを掲載したページ http://roy/~c110186/advertise2/ 3.感想 CGIは初めてで大変だったところが沢山あったが、とても便利なものだと思った。 一番大変だったところが、print文のなかにhtml文を入力していくところで、 実際にホームページではどんな風に表示されるか想像しながら取り組んだ。 CGIはまだまだ奥が深いと思うので、次回も頑張っていきたい。 共同学習者 千葉倫之 羽田圭介