第 10 回 CGI ことおぼえ レポート課題 氏名: 土門千里 学籍番号: c1111122 語学クラス: 英語5 コース: 政策マネジメント 1. 筆記問題 A. pstore は、第三者も書き込むことが出来るように設定、また、他の directory の中身を破壊、改変されたくないときに使う directory である。また、cgiruby の下に作ること二より、CGI を動かすことが出来る。 この directory を作成することにより、他の directory に第三者が書き込み、 改変、または削除が出来ないようにすることが可能である。 第三者による書き込みは、データベースにしまわれるためにデータとして保存さ れ、出力することも可能である。データベースに第三者が入力したものをデータ としてしまうことが出来るのは、Hash の仕組みを利用しているからである。 また、web 上で入力されたデータが CGI 変数 としてデータベースにしまわれる。 ・require 'pstore' -- これにより、受け取ったデータをためる宣言をすることになる。 ・PStore 変数 = PStore.new("データベース.db") -- これにより、データベース.db というデータベースを作成することが出来る。 このデータベースに第三者により入力されたデータがしまわれる。 ・PStore 変数.transaction do CGI 変数 に入っているものを表示させる命令文 end -- 第三者によって入力されたデータを読み込んで出力させる。 データベースからデータを引っ張ってくる。 2. A. 問題 a と c を選択した。 URL: http://roy/~c111112/rubycgi/r2_cgi_best.html a. 買い物プログラム URL: http://roy/~c111112/rubycgi/r2_cgi_bought.html 1) 考えた設定 入力したデータ(お客さんの名前)、選択したデータ(日付や商品) がレシートと して出力され、その日に店に来店した顧客の情報を書き込むプログラム。 2-1) 作成した html 文章
お買上げありがとうございます。
\n") print("またのご利用をお待ちしております。
\n") print("2012年 %s %s
\n", month, day) # 日付を出力する printf("%s様
\n", customer) # お客さんの名前を出力する print("%s |
レシートを出力しました。
\n") print("\n") print("\n") open("./mydb/sales.dat", "a+") do |sales| # sales.dat へデータを追加的に書き込む sales.printf("2012年 %s %s\n", month, day) # 日付を出力する sales.printf("%s様\n", customer) # お客さんの名前を出力する sales.print("--------------------------\n") sales.print("\n") end # open の終了 open("./mydb/receipt.dat", "w") do |receipt| # receipt.dat へデータを書き込む receipt.print("ご利用いただきありがとうございます。\n") receipt.print("\n") receipt.printf("▼2012年 %s %s\n", month, day) # 日付を出力する receipt.printf("%s様\n", customer) # お客さんの名前を出力する for bought in goods # goods の中から選んだ商品を探す receipt.printf("%s\n", bought) # 選んだ商品を出力する end # for の終了 receipt.print("またのご利用お待ちしております。\n") end # open の終了 3) プログラム実行結果 a-1) ウェブ上での実行結果お買上げありがとうございます。
またのご利用をお待ちしております。
2012年 1月 1日
るびお様
商品A |
商品B |
商品C |
レシートを出力しました。
a-2) ウェブ上での実行結果お買上げありがとうございます。
またのご利用をお待ちしております。
2012年 1月 1日
るび様
商品D |
商品E |
レシートを出力しました。
b) sales.dat への出力結果 2012年 1月 1日 1111様 -------------------------- 2012年 1月 1日 るびお様 -------------------------- 2012年 1月 1日 るび様 -------------------------- c-1) receipt.dat への出力結果 ご利用いただきありがとうございます。 ▼2012年 1月 1日 るびお様 商品A 商品B 商品C またのご利用お待ちしております。 c-2) receipt.dat への出力結果 ご利用いただきありがとうございます。 ▼2012年 1月 1日 るび様 商品D 商品E またのご利用お待ちしております。 4) 考察 選んだ商品のみが結果画面に出力され、入力した名前のデータ、選択した日付の データもきちんと表示されていたため、プログラムは正しく動いているといえる。 また、レシートにも選択した商品データ、入力された名前、日付のデータが出力 されていたため、正しく動いているといえる。 顧客情報に関しては、追加的に顧客の名前と日付が出力されて行ったため、これ も正しく動いているといえる。 改善点としては、商品名だけではなく商品それぞれに値段を与え、合計金額を計 算して出力するという部分を追加することであると考える。 c. 家計簿プログラム URL: http://roy/~c111112/rubycgi/r2_cgi_account.html 1) 考えた設定 入力されたデータを元に、現在の残高を計算するプログラム。 2-1) 作成した html 文章今回の収入と支出の金額です。
\n") print("2012年 %s %s
\n", m, d) # 日付を出力する print("収入
\n") printf("金額 : %d 円
\n", ic) # 収入の金額 printf("内訳 : %s
\n", n_i) # 収入の内訳 print("支出
\n") printf("金額 : %d 円
\n", ex) # 支出の金額 printf("内訳 : %s
\n", n_e) # 支出の内訳 print("今回の収入と支出の金額です。
2012年 3月 8日
収入
金額 : 1000 円
内訳 : 小遣い
支出
金額 : 200 円
内訳 : おかしを購入
今回の収入と支出の金額です。
2012年 4月 15日
収入
金額 : 5000 円
内訳 : 小遣い
支出
金額 : 1200 円
内訳 : CDを購入