第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") print("\n") print("\n") print("

-------------------------------------------

\n") printf("

快速庄内 乗車券

\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

ホームページへ(http://roy/~c109130)

d.実行結果 ◎酒田 -- 東酒田間の場合 ------------------------------------------- 快速庄内 乗車券 ☆ 乗車区間 : 酒田 -- 東酒田 間 ☆ 運賃 : 152 [円] ------------------------------------------- ◎酒田 -- 古口間の場合 ------------------------------------------- 快速庄内 乗車券 ☆ 乗車区間 : 酒田 -- 古口 間 ☆ 運賃 : 502 [円] ------------------------------------------- ◎新庄 -- 余目間の場合 ------------------------------------------- 快速庄内 乗車券 ☆ 乗車区間 : 新庄 -- 余目 間 ☆ 運賃 : 550 [円] ------------------------------------------- e.考察 実際に運賃が合っているかを bc -l で確認すると ◎酒田 -- 東酒田間の場合 pan{c109130}% bc -l [~/public_html/rubycgi] (3.2 - 0.0)/2 *20 +120 152.00000000000000000000 quit ◎酒田 -- 古口間の場合 pan{c109130}% bc -l [~/public_html/rubycgi] (38.2 - 0.0)/2 *20 +120 502.00000000000000000000 quit ◎新庄 -- 余目間の場合 pan{c109130}% bc -l [~/public_html/rubycgi] (55.2 - 12.2)/2 *20 +120 550.00000000000000000000 quit よって、計算結果とプログラム本体が一致したので正しいといえる。 今回は運賃だけを表示させたが、距離も表示させるプログラムを作ろうとし たが、何回も失敗したため今回は表示させなかった。しかし表示させるよう に頑張っていきたい。 B. 私のホームページ http://roy/~c109130/ に貼り付けた。 ロゴを掲載したアドレスは http://roy/~c109130/logo_r2_c109130.png である。 C. 広告ページ http://roy/~c109130/advertise2/ に貼り付けた。 (r2_c109130.pdf) 「基礎プログラミングを学んで」 3. 感想 今回の課題は、オンライン券売機を完成させたが、まだまだ改良しなければ ならないことがあると思うのでしっかり修正できるところは修正していきた い。 残り少なくなってきたが、しっかり頑張っていきたいと思う。 4.参考文献等 ◎共同学習者 ・池田 博哉