第 8 回 ことはじめ レポート課題
氏名:大熊麻友
学籍番号:C1100377
語学クラス:英語6
コース(系):政策マネジメント
木曜日に送ったつもりだったのですが、
今日確認したところ送信エラーだったことが分かり
提出が遅れました。大変申し訳ありませんでした。
次回からは送信できているかしっかり確認します。
評価よろしくお願いします。
〔1〕
A.Hash は key と value を使用し、任意の値に任意の値を結び付けて保存する
ことが出来る変数である。
Hashは key と valueがペアになって代入され実行する。
CGIは HTML内にデータ入力エリアを配置し、あらかじめ定められていた処理を
行うことにより、結果が表示されるという特別な変数である。
いくつかの分担プログラムとその連係動作から成り立っている。
そのため、CGI変数と Hash変数の似ている点は、最初に必要事項を定めておき
それらを結び付けることでプログラムが実行されるという点が似ていると思う。
B.まず、ディレクトリでCGIを利用する宣言のためにhtaccessを作成する。
ユーザーがデータを入力するためにHTML文書の*htmlを作成する。
入力したデータを受け取って処理するためのプログラム *rbを作成する
ことで CGIのしくみが成り立つ。
C.HTML文書で CGI変数を渡すには
*.html に form と呼ばれる tagを作る必要がある。
この作業をすることでCGI変数を渡すことが出来る。
D.*rbでCGI変数を受け取って、HTML文書にするには
受け取ったデータを使うための宣言をする必要がある。
普段は#!/usr/koeki/bin/rubyと表記するところをCGI変数を用いる場合には
#!/usr/bin/env rubyとする必要がある。
次に受け取ったデータを使う宣言をする。
require 'cgi'
CGI変数 =CGI.new("html4")
print("Content-type: text/html; charset=EUC-JP\n\n")
と入力し、作った CHIスクリプトの名前定義のためにHashを用いる。
実行するためにprint文 で HTML 文書を出力することでプログラムが実行され
HTML文書が完成する。
参考文献:
基礎プログラミングII
制作者:西村まどか
CGIスクリプト専用 directory の作成
http://roy/~madoka/2009/r2/08/08-02-html.html
入力を促すホームページの作成
http://roy/~madoka/2009/r2/08/08-04-datainputpart.html
Ruby で CGI を動かそう
http://roy/~madoka/2009/r2/08/08-07-rubycgi.html
----------------------------------------------------------------------
〔2〕
A
1.考えた設定
オンライン発券システム。
利用者名、利用日、出発駅と到着駅、座席指定を入力すると
web上にチケットを表示する。
2.作成したプログラム
※ticket.html
オンライン券売機
※ticket.rb
#!/usr/bin/env ruby
$KCODE = 'e'
require 'cgi' #CGIを使う
kippu = CGI.new("html4") #CGIをHTML文章に使う
print("Content-type: text/html; charset=EUC-JP\n\n") #日本語コード
#それぞれ固定の変数を設定
ticketid = "41-1258"
car = 3
seat = "2A"
millage = "Y998-8580"
hatunori=120
#それぞれticket.htmlで選択したoptionを代入
name = kippu["namae"]
y = kippu["year"]
m = kippu["month"]
d = kippu["day"]
seki= kippu["zaseki"]
le = kippu["leave"]
ar = kippu["arrive"]
#leに対応した走行距離にする
if le=="酒田"
a=166.9
elsif le=="東酒田"
a=163.7
elsif le=="砂越"
a=160.4
elsif le=="北余目"
a=157.4
elsif le=="余目"
a=154.7
elsif le=="西袋"
a=151.1
elsif le=="藤島"
a=146.0
elsif le=="鶴岡"
a=139.4
end
#arに対応した走行距離にする
if ar=="酒田"
b=166.9
elsif ar=="東酒田"
b=163.7
elsif ar=="砂越"
b=160.4
elsif ar=="北余目"
b=157.4
elsif ar=="余目"
b=154.7
elsif ar=="西袋"
b=151.1
elsif ar=="藤島"
b=146.0
elsif ar=="鶴岡"
b=139.4
end
if a > b
total =hatunori+((a-b)/2*20)
#上りの場合の計算
elsif a < b
total =hatunori+((b-a)/2*20)
#下りの場合の計算
elsif a = b
total =0
#同じ駅名を選んだ場合は0
end
print"\n"
print"\n"
print"\n"
print"オンライン券売機\n"
print"\n"
print"\n"
print"\n"
if seki=="指定席" #指定席を選んだ場合
printf("△△急行%s特急券 |
\n",seki)
printf(" %s ⇒ %s |
\n", le, ar)
printf("発券番号:%s-----座席:%d号車%s |
\n",
ticketid,car , seat)
printf("料金:%d円 |
\n",total )
printf("利用者名:%s |
\n", name)
printf("利用日:%d年 %d月%d日 |
\n", y, m, d)
printf("番号:%s |
\n", millage)
print"券面記載の指定日のみ有効 |
\n"
print"発行:△△急行 |
\n"
elsif seki=="自由席" #自由席を選んだ場合
printf("△△急行%s特急券 |
\n",seki)
printf(" %s ⇒ %s |
\n", le, ar)
printf("発券番号:%s |
\n",ticketid)
printf("料金:%d円 |
\n",total )
printf("利用者名:%s |
\n", name)
printf("利用日:%d年 %d月%d日 |
\n", y, m, d)
printf("番号:%s |
\n", millage)
print"券面記載の指定日より2日間有効 |
\n"
print"発行:△△急行 |
\n"
end
print"\n"
print"\n"
※ticket.css
body {
background: coral;
font-size: 1em;
}
h1 {
color: black;
background: lawngreen;
font-size: 1.5em;
text-align: center;
padding: 0.5em;
}
p {
background: yellow;
color: black;
font-size: 1.5em;
text-align: center;
}
table.center {
margin:auto;
}
--------------------------------------------------------------------
※ticket_r.css
table {
align; center;
border: 0.4em;
border-color: black;
border-style: ridge;
}
td {
align; center;
color: black;
font-size: 1.5em;
background: lightgreen;
width: 18em;
height: 2em;
}
3.変更点
授業で作成したticket.rbのプログラムに
if文 と を加えた。
4.実行結果
・2012年6月27日に自由席で 出発駅を東酒田 到着駅を北余目
(offline mode: enter name=value pairs on standard input)
namae="まゆ"
year="2012"
month="6"
day="27"
zaseki="自由席"
leave="東酒田"
arrive="北余目"
Content-type: text/html; charset=EUC-JP
オンライン券売機
△△急行自由席特急券 |
東酒田 ⇒ 北余目 |
発券番号:41-1258 |
料金:182円 |
利用者名:まゆ |
利用日:2012年 6月27日 |
番号:Y998-8580 |
券面記載の指定日より2日間有効 |
発行:△△急行 |
・2011年3月8日に指定席 出発駅を鶴岡 到着駅を砂越
(offline mode: enter name=value pairs on standard input)
namae="まゆ"
year="2011"
month="3"
day="8"
zaseki="指定席"
leave="鶴岡"
arrive="砂越"
Content-type: text/html; charset=EUC-JP
オンライン券売機
△△急行指定席特急券 |
鶴岡 ⇒ 砂越 |
発券番号:41-1258-----座席:3号車2A |
料金:330円 |
利用者名:まゆ |
利用日:2011年 3月8日 |
番号:Y998-8580 |
券面記載の指定日のみ有効 |
発行:△△急行 |
5.考察
計算が正しいかを確認するため、bc-lで確かめ算を行った。
120+(163.7-157.4)/2*20
183.00000000000000000000
120+(160.4-139.4)/2*20
330.00000000000000000000
実行結果と確かめ算より、プログラムは正しく実行されていて
計算も正確だといえる。
色合を考えたうえで配色をつけてみたが、文字の色を黒で統一し
背景などを明るめの色にしたため見やすくなっている。
----------------------------------------------------------------
B
牛模様というロゴを使用し、背景を黄緑にすることで
牧場のようなイメージにしてみた。
太さの変え方がわからなかったため
納得のいくロゴが作成できなかった。
ホームぺージで検索を行えば様々な組み合わせで
作成してる例がたくさんあると思うので
調べてみたい。
ロゴを掲載したアドレス
http://roy/~c110037/advertise2/logo_r2_c110037.png
----------------------------------------------------------------
C
リンク
http://roy/~c110037/advertise2/r2_c110037.pdf
広告ページからたどれるようになっている。
----------------------------------------------------------------
6.感想
CGIの扱い方に苦労したが、時間をかけて取り組んでいくうちに
使い方を理解していき、何とかプログラムを作成することができた。
html や スタイルシートに関しては前期にかなり使用していたので、
久し振りに使用したので少し手間取った。復習をしっかりしたい。
7.参考文献
基礎プログラミング II 第08回 CGI ことはじめ CGI 専用作業 directory
http://roy/~madoka/20011/r2/08/08-02-html.html
基礎プログラミング II 第08回 CGI ことはじめ CGI を使用することを宣言しよ
う http://roy/~madoka/2011/r2/08/08-03-htaccess.html
基礎プログラミング II 第08回 CGI ことはじめ Ruby で CGI スクリプト
http://roy/~madoka/2011/r2/08/08-01-cgi.html
基礎プログラミング II 第08回 CGI ことはじめ 利用者にデータを入力させる部
品 http://roy/~madoka/2011/r2/08/08-04-datainputpart.html
基礎プログラミング II 第08回 CGI ことはじめ 基本の CGI ホームページの作
りかた http://roy/~madoka/2011/r2/08/08-05-inputforms.html
基礎プログラミング II 第08回 CGI ことはじめ CGI スクリプトの解説
http://roy/~madoka/2011/r2/08/08-06-actionprogram.html
基礎プログラミング II 第08回 CGI ことはじめ 動作プログラム作成
http://roy/~madoka/2011/r2/08/08-07-rubycgi.html
基礎プログラミング II 第08回 CGI ことはじめ Ruby で CGI を作る宣言
http://roy/~madoka/2011/r2/08/08-08-irb-print.html
基礎プログラミング II 第08回 CGI ことはじめ print() 文と HTML 文書のなか
み http://roy/~madoka/2011/r2/08/08-09-firefox.html
共同者:青木千紗さん