第8回 基礎プログラミング II レポート課題 氏名 :藤井 駿 学籍番号 : c1091307 語学クラス : 英語3 コース : 地域共創 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.プログラム問題 A. 私のホームページ http://roy/~c109130/ オンライン発券システム http://roy/~c109130/rubycgi/ticket.html a.考えた設定 酒田 - 新庄間の電車の運賃を選択した駅から検索する。 b.元にしたプログラム 授業の時の 「ticket.rb」 を参考にして作成した。 また、計算は 「def_rollplaying_a.rb」 を参考にした。 c.作成したプログラム ◯プログラム「ticket.rb」 #!/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") ◯データ「ticket.dat」 酒田 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方式このプログラムは東北公益文科大学2009年度生 藤井駿 が著作権を所有しています。
プログラムを入手・改変・再配布は自由に行っても構いませんが
このプログラムを取り扱って生じた問題は一切責任を負いませんのでご了承ください.
このプログラムに対する要件がありましたら下記まで連絡してください。
c109130@e.koeki-u.ac.jp