基礎プログラミング II 第 10 回 (CGI ことおぼえ) 「乗降客数を調べよう」 講義ノート目次

乗降客を調べるdb_sales.rb を作ろう。

乗降客数を調べるために、データベースを拾って来る部分が必要である。

ticket = PStore.new("ticket.db")

またデータを読みこませる部分は以下の通り。


sales = Hash.new

ticket.transaction do
  for time in  ticket.roots
    sales[time] = ticket[time]
                   # Hash sales にデータを読みこませる
  end
end

p sales で中身を調べてみると

% ./db_sales.rb        [~/public_html/rubycgi/pstore]
Content-type: text/html; charset=EUC-JP

{2012-09-21 18:28:05 +0900=>["酒田", "東酒田"], 2012-09-21 18:28:11 +0900=>["酒田", "余目"], 2012-09-21 18:28:16 +0900=>["酒田", "西袋"], 2012-09-21 18:28:22 +0900=>["酒田", "余目"]}

購入日時と購入駅名、行先がしまわれていることが確認できる。

データを解析するには、sales という Hash を改めて調べ直して、 到着する駅名が出現した場合に value に 1 を加えることにしよう。


peak = Hash.new(0)   # Hash 値が数値であることを明示する

for time in sales.keys
  stop = sales[time][1]
  peak[stop] += 1
end

p peak の結果を調べる。

{"東酒田"=>1, "余目"=>2, "西袋"=>1}

peak の出力を乗降客の多い順に並べ替えてきれいに出力するようにすれば、 完成である。

駅の配置順、特急の泊まる駅だけを取りだすなど、 さらなる検索ができるようにするには、どう工夫したらよいだろうか。

見かけは こちら

前期を参考に、乗車券の料金と人数を組み合わせた 売上げ一覧を作ってみよう。

HTML 形式で Web サイトに結果を出力するならば、cgi_bbs.rb 等を参考につくることができる。