第10回 基礎プログラミング II レポート課題 氏名: 池田博哉 学籍番号: c1090147 語学クラス: 英語3 コース(系): 地域共創 1.筆記問題 require 'pstore' でデータを貯める宣言をし、データベースを作る。これを 使うことで、open であらかじめ作っておいたデータを使わなくてもファイル を出力できる。 db = PStore.new("comment.db") で comment.db に貯めたデータを 変数db と して扱うことを宣言する。 db.transaction do の transaction は、PStore変数( db )内で実行する時に 使うメソッド。 db.transaction do if db == nil # もし、db に何も無いなら(新規作成の時) db[name] = Hash.new # name を key とした Hash を作成する end db[name] = n # 入力した number( n ) を Hash に入れる onamae = db.roots # db の全データを onamae とする for shimei in onamae # onamae の中 の shimei を持ってくる end end これにより、データベース内にデータを貯めることが出来る。 2.プログラム問題 ◯CGI作品の最高傑作ページ … 「http://roy/~c109014/advertise2/rubycgi/r2_cgi_best.html」 ◯ラーメンIKEDA … 入力画面「http://roy/~c109014/advertise2/rubycgi//ramen.html」 結果画面「http://roy/~c109014/advertise2/rubycgi//ramen.rb 」 a.考えた設定 CGIの題名「ラーメンIKEDA」 ラジオボタンやテキストを使って、自分が注文したいラーメンの味・トッピ ング・注文数を入力できるようにした。注文した組み合わせで結果画面の画 像にも変化がでるようにした。また、注文数が 20〜39 の間だと閉店し、そ れより多いと店員に注意されるようにした。 ラーメン屋の雰囲気が味わえればと思い、このプログラムを作成した。 b.元にしたプログラムからの変更点 講義で作成した「sightseeing.html」、「sightseeing.rb」 前回のレポート「keisan.html」、「keisan.rb」 ・それぞれのラジオボタンやテキストの部分を組み合わせた ・結果画面に新しく画像が表示されるように変更 ・所々の色やフォントを変更 c. ◯入力画面「ramen.html」 -------------------------------------------------------------------------- ラーメンIKEDA

◎ラーメンIKEDAへようこそ!!◎


絵

☆メニュー☆

ラーメン400円
醤油、味噌、キムチ
トッピングモヤシ:50円、ネギ:80円、コーン:70円


◯ラーメンの味を選んで下さい

醤油 味噌 キムチ


◯ラーメンのトッピングを選んで下さい


◯何人前にするか教えて下さい

人前




※著作権について※

このプログラムは、東北公益文科大学 池田博哉が著作権を保有しています。

プログラムの入手・改変・再配布は、自由に行っても構いません。

なお、このプログラムの取り扱いによって生じた問題については責任を負いませんので、注意して下さい。

このプログラムに対する感想・意見・苦情など言いたいことがありましたら、

c109014@e.koeki-u.ac.jp 」へお願いします。


戻る

トップページへ

-------------------------------------------------------------------------- ◯結果画面「ramen.rb」 -------------------------------------------------------------------------- #!/usr/bin/env ruby require 'cgi' # CGI を使う cgi = CGI.new("html4") # CGI を html文書に使う print("Content-type: text/html; charset=EUC-jp\n\n") # 日本語コードの定義 ta = cgi["taste"] # taste は、味のこと to = cgi["topping"] # topping は、トッピングのこと ka = cgi["kazu"].to_i # kazu は、注文した数 price = Hash.new # 新しく price という Hash を作る price["特になし"] = 0 price["モヤシ"] = 50 # モヤシは 50円 price["ネギ"] = 80 # ネギは 80円 price["コーン"] = 70 # コーンは 70円 print("\n") print("\n") print("ラーメンの注文結果\n") print("") print("\n") print("\n") print("
\n") print("\n") print("

--------------------◎注文結果◎--------------------

\n") print("
\n") print("\n") printf("

\t味 : %s

\n", ta) printf("

\tトッピング: %s

\n", to) printf("

\t%d [人前]

\n", ka) if ta == "醤油" && to == "特になし" # もし、味が 醤油 かつ トッピングが 特になし の場合 print("

醤油ラーメンの完成!!

\n") print("

\n") printf("

%d 人前の料金は、%d[円]になります。

\n", ka,(400 + price[to]) * ka) elsif ta == "醤油" && to == "モヤシ" # もし、味が 醤油 かつ トッピングが モヤシ の場合 print("

モヤシ入り醤油ラーメンの完成!!

\n") print("

\n") printf("

%d 人前の料金は、%d[円]になります。

\n", ka, (400 + price[to]) * ka) elsif ta == "醤油" && to == "ネギ" # もし、味が 醤油 かつ トッピングが ネギ の場合 print("

ネギ入り醤油ラーメンの完成!!

\n") print("

\n") printf("

%d 人前の料金は、%d[円]になります。

\n", ka, (400 + price[to]) * ka) elsif ta == "醤油" && to == "コーン" # もし、味が 醤油 かつ トッピングが コーン の場合 print("

コーン入り醤油ラーメンの完成!!

\n") print("

\n") printf("

%d 人前の料金は、%d[円]になります。

\n", ka, (400 + price[to]) * ka) elsif ta == "味噌" && to == "特になし" # もし、味が 味噌 かつ トッピングが 特になし の場合 print("

普通の味噌ラーメンの完成!!

\n") print("

\n") printf("

%d 人前の料金は、%d[円]になります。

\n", ka, (400 + price[to]) * ka) elsif ta == "味噌" && to == "モヤシ" # もし、味が 味噌 かつ トッピングが モヤシ の場合 print("

モヤシ入り味噌ラーメンの完成!!

\n") print("

\n") printf("

%d 人前の料金は、%d[円]になります。

\n", ka,(400 + price[to]) * ka) elsif ta == "味噌" && to == "ネギ" # もし、味が 味噌 かつ トッピングが ネギ の場合 print("

ネギ入り味噌ラーメンの完成!!

\n") print("

\n") printf("

%d 人前の料金は、%d[円]になります。

\n", ka, (400 + price[to]) * ka) elsif ta == "味噌" && to == "コーン" # もし、味が 味噌 かつ トッピングが コーン の場合 print("

コーン入り味噌ラーメンの完成!!

\n") print("

\n") printf("

%d 人前の料金は、%d[円]になります。

\n", ka, (400 + price[to]) * ka) elsif ta == "キムチ" && to == "特になし" # もし、味が キムチ かつ トッピングが 特になし の場合 print("

普通のキムチラーメンの完成!!

\n") print("

\n") printf("

%d 人前の料金は、%d[円]になります。

\n", ka, (400 + price[to]) * ka) elsif ta == "キムチ" && to == "モヤシ" # もし、味が キムチ かつ トッピングが モヤシ の場合 print("

モヤシ入りキムチラーメンの完成!!

\n") print("

\n") printf("

%d 人前の料金は、%d[円]になります。

\n", ka, (400 + price[to]) * ka) elsif ta == "キムチ" && to == "ネギ" # もし、味が キムチ かつ トッピングが ネギ の場合 print("

ネギ入りキムチラーメンの完成!!

\n") print("

\n") printf("

%d 人前の料金は、%d[円]になります。

\n", ka, (400 + price[to]) * ka) elsif ta == "キムチ" && to == "コーン" # もし、味が キムチ かつ トッピングが コーン の場合 print("

コーン入りキムチラーメンの完成!!

\n") print("

\n") printf("

%d 人前の料金は、%d[円]になります。

\n", ka, (400 + price[to]) * ka) end print("\n") print("

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

\n") print("
\n") print("

\n") if ka >= 20 && ka <= 39 # もし、注文数が 20以上 かつ 39以下 の場合 print("

麺がなくなったんで、今日は閉店しま〜す!

\n") print("

また来て下さ〜い

") elsif ka >= 40 # もし、注文数が 40以上 の場合 print("

お客さん!

\n") print("

冗談はやめて下さーい!!

\n") else print("

熱いので、気をつけながら食べて下さい!!

\n") end print("
\n") print("
\n") print("\n") print("\n") -------------------------------------------------------------------------- ◯CSSの部分 「ramen1.css」 -------------------------------------------------------------------------- body { background: #ffcc33; } h1 { color: white; background: red; } h2 { background: #ffff99; } -------------------------------------------------------------------------- 「ramen2.css」 -------------------------------------------------------------------------- body { background: #ffff99; } -------------------------------------------------------------------------- d.各部の解説 ・味は、ラジオボタン ・トッピングは、ドロップダウンメニュー ・注文数は、テキスト ・注文数が20〜39の間だと、今日は閉店するというコメントが表示される ・注文数が40以上だと、店員コメントに注意されるコメントが表示される 注文数は、使う人自身が入力できれば自由度が上がると思ったので、テキス トを使った。 e.実行結果 味は醤油、トッピングはモヤシ、注文数は 2 として実行した。 -------------------------------------------------------------------------- pan{c109014}% ./ramen.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) taste="醤油" topping="モヤシ" kazu="2" Content-type: text/html; charset=EUC-jp ラーメンの注文結果

--------------------◎注文結果◎--------------------

味 : 醤油

トッピング: モヤシ

2 [人前]

モヤシ入り醤油ラーメンの完成!!

2 人前の料金は、900[円]になります。

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


熱いので、気をつけながら食べて下さい!!

-------------------------------------------------------------------------- これを実際の入力画面から実行してみる。 ↓ --------------------◎注文結果◎-------------------- 味 : 醤油 トッピング: モヤシ 2 [人前] モヤシ入り醤油ラーメンの完成!! (※この部分に画像が表示される) 2 人前の料金は、900[円]になります。 ---------------------------------------------------- 熱いので、気をつけながら食べて下さい!! f.考察 pan{c109014}% bc -l [~/public_html/advertise2/rubycgi] (400 + 50) * 2 900 料金の計算は正しかった。 今回はトッピングを自分で選べるようにした。でも、実際の注文はトッピング は1種類だけでなく何種類も組み合わせて注文するので、ラーメン屋のプログ ラムとしては不安が残るものになってしまったと思われる。もし作るとすれば、 もっとif文と画像の種類を増やす必要があると思った。 3.感想 「http://roy/~c109130/advertise2/rubycgi/stress.html」 著作者:藤井駿 藤井くんの作ったストレス度チェックをやってみて興味がわきました。実際に やってみて、ややストレスがたまっているけれど大丈夫ということだったので、 一度自分を見つめ直すことが出来たと思います。 ラジオボタンで「はい」と「いいえ」の数で結果が変わってくるものが色々と 応用がききそうなので、これを応用して、誰かを喜ばせられる作品や誰かにア ドバイスを与えられる作品を作ることが出来そうでした。 人それぞれで作品の題材が違い、応用の仕方も違うので参考になるものがたく さんありました。他の人の良いところを参考にしていくことで、前の自分より も成長できるのだと改めて感じました。同じ題材にしても、見た目を変えるだ けでも作品の雰囲気が全然個となってくると分かりました。 また、ラーメンの絵を作成して後、友達にアドバイスをたくさん貰ったので助 かりました。客観的に見てもらうと自分では見えないところにまで気づくので、 とても貴重なことだと思いました。 次回も皆と協力しながら頑張りたいです。 4.参考文献 ・tgifの使い方 「http://www.ice.gunma-ct.ac.jp/~mame/kougi/kisoron/tgif.html」 ◯共同学習者 ・藤井駿 ・遠藤孝之 ・佐藤裕康