第 8 回 ことはじめ レポート課題 氏名:羽田圭介 学籍番号:c1101690 語学クラス:英語2 コース(系):地域共創 1.筆記問題 A.CGI変数とHashが似ている点は、複数の選択肢があるうちからピックアップし たいものを取りだせるということだと思う。 CGIは選んだ項目が何かの項目と結びつく。項目は hash でいえば key のよ うなものであり、選択肢は value のようなものである。 B.「.hataccess」 は保存したディレクトリの中の .rb ファイルのみをCGIとして 読みこむ。 「.html」 はホームぺージを表示させる。また、「.rb」は「.html」で入力 したものを綺麗に並べて表示するといった結果を出すことができる。 C.
# CGI変数の value の値を 「.rbファイル」に送る。 # CGI変数の value の値を 「.rbファイル」でリセットする
D. require 'cgi' # CGI 変数を使用することを明記 cgi = CGI.new("html4") # 使用する Hash を作成し、html文書で使う # cgi というhash に key = arrive,value = optionで選択したものが入力 される。 print("Content-type: text/html; charset=EUC-jp\n\n") # 日本語コードにする arv = cgi["arrive"] # arrive を 「.rbファイル」において使用できるように変数 arv に代入さ せる。 printf("酒田 -- %s\n",arv) # 文の中に HTMLタグを入力して、HTML文書として出力する 2.プログラム ホームページ http://roy/~c110169/ オンライン発券システム http://roy/~c110169/rubycgi/ticket.html プログラム #!/usr/koeki/bin/ruby require 'cgi' # CGIの形式に変換する cgi=CGI.new("html4") # CGIをHTML文書で使用する nakami = Hash.new def cost(sai,owa) # sai = 出発駅、owa = 到着駅 if sai > owa # 運賃をもとめる (sai-owa)/2*20 + 120 elsif owa > sai (owa-sai)/2*20 + 120 end end print("Content-type: text/html; charset=EUC-JP\n\n") # 日本語コード lev = cgi["leave"] arv = cgi["arrive"] open("ticket.dat","r") do |card| # データ ticket.datを読みこむ while line = card.gets if /(\S+)\s+(\S+)/ =~line nakami[$1] =$2.to_f #データをきりだす end end end saisho = nakami[lev] owari = nakami[arv] print("\n") # HTML文書 print("\n") print("-------------------------------------------
\n") printf("☆ 乗車区間 : %s -- %s 間
\n",lev,arv) printf("☆ 運賃 : %d [円]
\n",cost(saisho,owari)) print("-------------------------------------------
\n") print("\n") print("\n") データ 酒田 0.0 東酒田 3.2 砂越 6.5 北余目 9.5 余目 12.2 南野 16.3 狩川 20.3 清川 24.1 高屋 30.4 古口 38.2 津谷 42.3 羽前前波 44.6 升形 47.7 新庄 55.2 htmlこのプログラムは羽田圭介が著作権を保有しています。このプログラムの入手・実行・改変・再配布は、いずれも無料で自由に行なうことができます。ただしこのプログラムを取り扱うことで生じたいかなる結果に対しても著作権者は責任を負いません。
このプログラムに対するする、感想・助言・要望・愚痴・説教など大歓迎致します。
110169@f.koeki-u.ac.jp
までメッセージをお送り下さい。ただし、迷惑メール防止のため@は全角にしています。コピーして使用する場合は半角にしてください。