第8回 ことはじめ レポート課題 氏名:伊藤桜子 学籍番号:c1100265 語学クラス:英語6 コース:政策マネジメント 1、筆記問題 A どちらもユーザーが入力したもの、選んだものをプログラムで読みこみ、 それに合った結果を表示することができる。 また、どちらも変数名をつけることができるところも似ていると思った。 B ◯.htaccessで〜.rbというプログラムをCGIで使うということを表している。 rubycgiの下の.rbファイルのみがCGIを使うと設定する。 ◯.htmlはホームページを表示させるためのプログラム ◯.rbでユーザーがホームページを見て入力した値を読みこみ、 それに合った結果を表示させる。 C ticket.htmlの
で利用者に入力させるために使われるformメソッドを使う。 の部分で到着駅を表示させ、ユーザーに選んでもらう。 nameはCGI変数を表しており、optionでメニューを選べる。 の部分でユーザーがクリックしたものが値としてrbに渡される。 submitが送信させることを表し、resetがリセットさせることを 表す。送信されると、value(CGI変数)の値がRubyに送り込まれる。 D ticket.rbの require 'cgi' でCGIを使うことをあらわす。 cgi = CGI.new('html4') でCGIをhtml文書で使うことを表す。(CGI用のHash) print("Content-type: text/html; charset=EUC-jp\n\n") で文字化けしないように日本語コードにする arv = cgi["arrive"] # Ruby に CGI でもらってきた値を代入 でhtmlから読みこんだものを使用できるようになる。 2、プログラム問題 A ◯考えた設定 出発駅と到着駅を指定してもらい、その情報をもとに乗車券が作られるようなオンライン発券システムをつくる。 ◯プログラム(rb) #!/usr/koeki/bin/ruby $KCODE = 'e' require 'cgi' # cgiを使う宣言 cgi = CGI.new('html4') print("Content-type: text/html; charset=EUC-jp\n\n")#日本語コード name = cgi["namae"] syu = cgi["syuppatu"] arv = cgi["arrive"] # Ruby に CGI でもらってきた値を代入 eki = Hash.new def nedan(sta,lea) # 変数名 nedan 仮引数 sta lea lea - sta # 乗った距離を出す if sta > lea # 新庄駅から出発駅までの距離が新庄駅から到着駅までの距離より # 長いときは ((sta - lea) / 2 * 20) + 120 # 計算式 elsif lea > sta #新庄駅から到着駅までの距離が新庄駅から出発駅までの距離 #長いときは ((lea - sta) / 2 * 20) + 120 #計算式 end end eki["新庄駅"] = 0.0 eki["升形駅"] = 7.5 eki["羽前前波駅"] = 10.6 eki["津谷駅"] = 12.9 eki["古口駅"] = 17.0 eki["高屋駅"] = 24.8 eki["清川駅"] = 31.1 eki["狩川駅"] = 34.9 eki["南野駅"] = 38.9 eki["余目駅"] = 43.0 print("\n") print("\n") print("発券結果\n") print("\n") print("\n") print("

乗車券

\n") printf("

%s樣

\n",name) printf("

%s--%s間

\n",syu, arv) printf("

%d円

\n",nedan(eki[syu],eki[arv])) print("\n") print("\n") ◯プログラム(html) 券売機

券売機

◯もとにしたプログラムからの変更点 授業で使った、ticket.rbをもとにした。アンケートのプログラムを参考にして 名前入力もできるようにした。 Hashを使って距離をデータとしてプログラムに登録した。 出発駅もユーザーが選べるようにして出発駅から到着駅までの金額を計算して 表示できるようにした。 ◯実行結果(ketrm) ●新庄駅→津谷駅 pan{ITO Sakurako}% ./ticket2.rb [~/public_html/rubycgi] (offline mode: enter name=value pairs on standard input) syuppatu="新庄駅" arrive="津谷駅" Content-type: text/html; charset=EUC-jp 発券結果

乗車券

新庄駅--津谷駅間

249円

●清川駅→升形駅 pan{c110026}% ./ticket2.rb [~/public_html/rubycgi] (offline mode: enter name=value pairs on standard input) syuppatu="清川駅" arrive="升形駅" Content-type: text/html; charset=EUC-jp 発券結果

乗車券

清川駅--升形駅間

356円

◯実行結果(html) ●新庄駅→津谷駅 乗車券 伊藤桜子樣 新庄駅--津谷駅間 249円 ●清川駅→升形駅 乗車券 伊藤桜子樣 清川駅--升形駅間 356円 ◯考察 ●新庄駅→津谷駅 bc -lで計算が合っているか確認してみると pan{ITO Sakurako}% bc -l [~/public_html/rubycgi] ((12.9-0.0)/2*20)+120 249.00000000000000000000 quit となり、実行結果と一致しているので正しく計算できていることがわかる。 また、html上でも正しく表示できていたのでこのプログラムは正しいといえる。 ●清川駅→升形駅 bc -lで計算を確かめてみると pan{c110026}% bc -l [~/public_html/rubycgi] ((31.1-7.5)/2*20)+120 356.00000000000000000000 quit となり、実行結果と一致しているので正しいとわかる。 html上でも正しく表示できていたのでこのプログラムは正しいといえる。 B ◯GIMP http://roy/~c110026/advertise2/index2.html (今回の広告ページ)に貼り付けた。 ロゴ掲載のアドレス http://roy/~c110026/advertise2/logo_r2_c110026.png C ◯PDFファイル http://roy/~c110026/advertise2/index2.html (今回の広告ページ)に貼り付けた。 掲載のアドレス http://roy/~c110026/advertise2/r2_c110026.pdf 3、感想 今回は課題の中で一番大変だったと思う。CGIについて理解するのに時間が かかり、プログラムを作るのにも時間がかかってしまった。GIMPも久しぶりに 作ったので復習できて良かった。発券システムのチケットは色もつけたいと思っ たが、今回は時間の都合もあったので余裕があればやってみたいと思った。 CGIを扱ってみて難しいと思うところもあったが自分で作れたときは達成感が あった。 4、参考文献 ◯西村先生の後期授業 第8回 講義ノート http://roy/~madoka/2011/r2/08/lec/resume.html ◯西村先生の後期授業 第8回 7、CGI スクリプトの解説 http://roy/~madoka/2011/r2/08/r2_08_07_theme_07_actionprogram.html ◯協同作成者 齊藤陽香さん 畠山貴衣さん 東北公益文科大学 公益学部 公益学科 2年 伊藤桜子 c110026@f.koeki-u.ac.jp