データベース実習レポート
田中
課題 データベースを利用したインターネットショッピングシステムの作成 担当 データベースサーバとの通信、および web ページの作成(アドミニストレータ 用) 目的 ユーザからの要求を受け取り、データベースサーバ上で使用する関数を選択す る。使用関数が決定したら、それに必要な引数をユーザから受け取って、それ らをデータベースサーバに送信する。データベースサーバから関数実行の結果 を受け取り、それをブラウザ上で表示する。 機能 データベース上には以下の3つのクラスが作成されている。 ・Customer 顧客名簿 ・Commodity 商品名簿 ・Order 注文表web ページは上記のクラスに合わせて、Customer 、Commodity 、Order という ページを作り、それぞれのページからデータベースに対する操作を選択できる ようにした。 **Customer ページ ・ CUSTOMER LIST(現在登録されているユーザの情報を表示する。) データベースサーバに要求して顧客情報の一覧を受け取り、ユーザ ID でソートして表示する。 ・ ADD CUSTOMER(顧客の登録を行う。) 使用されているユーザ ID の中で最大のものを検索し、それより1 大きい数をユーザ ID として自動的に割り当てる。このユーザ ID と、 ユーザから入力された顧客のメールアドレス、パスワードをデータ ベースサーバに渡す。この時、テンプレート名として、addCus を 指定する。 ・ DELETE CUSTOMER(顧客の削除を行う。) ユーザから入力されたユーザ ID をデータベースサーバに渡す。こ の時、テンプレート名として、delCus を指定する。 *addCus ページ 手続き addcus()を利用して、顧客の登録を行う。成功、または失敗 のメッセージを表示し、その時点での顧客情報の一覧を表示する。 *delCus ページ 手続き deletecus()を利用して、顧客の削除を行う。成功、または失 敗のメッセージを表示し、その時点での顧客情報の一覧を表示する。
**Commodity ページ ・ COMMODITY LIST(現在登録されている商品の情報を表示する。) データベースサーバに要求して商品情報の一覧を受け取り、商品 ID でソートして表示する。この時、在庫量が 0 のものは、赤字で 表示する。 ・ ADD COMMODITY(商品の追加を行う。) 使用されている商品 ID の中で最大のものを検索し、それより1大 きい数を商品 ID として自動的に割り当てる。この商品 ID と、ユー ザから入力された商品名、単価、数量をデータベースサーバに渡す。 この時、テンプレート名として、addCom を指定する。 ・ DELETE COMMODITY(商品の削除を行う。) ユーザから入力された商品 ID をデータベースサーバに渡す。この 時、テンプレート名として、delCom を指定する。 ・ ADD STOCK(商品の在庫の追加。) ユーザから入力された商品 ID と追加量をデータベースサーバに渡 す。この時、テンプレート名として、addStock を指定する。 ・ SUB STOCK(商品の在庫の削除。) ユーザから入力された商品 ID と削除量をデータベースサーバに渡 す。この時、テンプレート名として、subStock を指定する。 *addCom ページ 手続き addcom()を利用して、商品の追加を行う。成功、または失敗 のメッセージを表示し、その時点での商品情報の一覧を表示する。 *delCom ページ 手続き delcom()を利用して、商品の削除を行う。成功、または失敗 のメッセージを表示し、その時点での商品情報の一覧を表示する。 *addStock ページ 手続き addstock()を利用して、商品在庫の追加を行う。成功、また は失敗のメッセージを表示し、その時点での商品情報の一覧を表示 する。 *subStock ページ 手続き substock()を利用して、商品在庫の削除を行う。成功、また は失敗のメッセージを表示し、その時点での商品情報の一覧を表示 する。 **read_Order ページ ・ SELECT USER(注文を行う顧客名を指定。) プルダウンメニューで選択された顧客名の ID をデータベースサー バに渡す。この時、テンプレート名として、Order を指定する。 **Order ページ ・ ORDER LIST(注文表を表示する。) データベースサーバに要求して、read_Order ページで指定された顧 客の注文一覧を受け取り、オーダ No でソートして表示する。この
時、手続き cleanorder()を利用して、注文表からの削除期限が過ぎて いる物を削除しておく。 ・ ADD ORDER(注文を行う。) 使用されているオーダ No の中で最大のものを検索し、それより1 大きい数をオーダ No として自動的に割り当てる。このオーダ No と、注文を行うユーザ ID、商品 ID、注文量をデータベースサーバ に渡す。この時のユーザ ID は、read-Order ページで指定されたユー ザ ID を使用するが、Read_Order ページで ALL を指定した場合は、 注文を行う顧客名をユーザに選択させる。また、商品 ID はプルダ ウンメニューから商品名で選択させ、それに該当する商品 ID をサ ーバに渡す。この時、テンプレート名として delOrder を指定する。 ・ DEELETE ORDER(注文のキャンセルを行う。) ユーザから入力されたオーダ No をデータベースサーバに渡す。こ の時、テンプレート名として、delOrder を指定する。 ・ SEND ORDER(商品の発送を行う。) ユーザから入力されたオーダ No をデータベースサーバに渡す。こ の時、テンプレート名として、sendOrder を指定する。 *addOrder 手続き addorder()を利用して、注文を行う。成功、または失敗のメ ッセージを表示し、その時点でのユーザの注文の一覧を表示する。 *delOrder 手続き deleteorder()を利用して、注文のキャンセルを行う。成功、 または失敗のメッセージを表示し、その時点でのユーザの注文の一 覧を表示する。 *sendOrder 手続き sendorder()を利用して、注文の発送を行う。成功、または失 敗のメッセージを表示し、その時点でのユーザの注文の一覧を表示 する。 内部設計
今回はデータベースとの通信に WebLink を利用した。WebLink は、WebLink テンプレートに含まれている ODQL コマンドを使用して Jasmine データベース にアクセスする。テンプレートは WebLink セション中に表示されるページのひ な型を、Jasmine データベースに格納したものである。WebLink テンプレートに は、通常の HTML の構造に加えて、Jasmine データベースからデータを検索す るための ODQL 文を含むことができる。 まず、HTML_Template クラスにテンプレートを作成し、WebLink クラスファ ミリ格納しておく。すると、 WWW ブラウザから WebLink コマンド(odb-get.exe)が起動された時に、指定された WebLink テンプレートを通して、デー タベース処理が実行される。
内部構造の詳細は以下の通りである。 Index.html Homepage2.html Customer Commodity Order addCus delCus
addCom delCom addStock subStock
Read_Order
addOrder delOrder sendOrder
Logout.html
Logout_message.html Domain error
Object not found Already send のエラー 上記以外 のエラー Error.html login logout logout
使用法 Web ブラウザで http://jasmine.db.is.kyushu-u.ac.jp/tanaka/ にアクセスする。ユーザ名とパスワードを要求されるので、jasmine ログイン時 に使用するユーザ名、パスワードを入力する。 正しければ、ホームページに移動する。あとはメニューに従って操作を行えば よい。最後は logout を選択して、終了する。 工夫点 ・注文時にユーザ ID などの入力ミスが起こりやすかった為、プルダウンメニ ューを利用して選択方式にした。また、在庫のない商品を注文できないように するため、在庫0の商品をメニューに表示させないようにした。 ・ユーザ ID や商品 ID が重複しないように、自動で番号を割り当てるようにし た。 ・アドミニストレータ用なので、注文時に顧客別の注文一覧と、全顧客の注文 一覧を選択できるようにした。 統合結果、考察 プログラムを統合した結果、引数の受け渡し、結果の表示などは、特に問題 なく動いた。Web のプログラムの作成で、WebLink を利用するという方針が決 定し、使用環境を整えるまでに時間がかかってしまった為、もう少し早くでき ていれば良かったと思う。 プログラムリスト index.html <HTML> <HEAD> <TITLE>login</TITLE> </HEAD>
<BODY BgColor="#6699FF" Link="#0070ff" Vlink="#4682B4" Alink="#88c4ff"> <FONT size="4" color="#0000ff">
<CENTER>
<h1>KANEKO SHOPPING CENTER LOGIN PAGE</h1>
<FORM ACTION="/cgi-bin/odb-login.exe" METHOD="POST"> Please push OK!<BR>
<INPUT TYPE="submit" VALUE="OK"> <INPUT TYPE="hidden" NAME=WIT_env
VALUE=/jasmine/jasmine31/jasmine/WebLink/lib/default2.env> </FORM>
<FORM ACTION="/cgi-bin/odb-login.exe" METHOD="POST"> Administorator Login<BR><INPUT TYPE="hidden" NAME=WIT_env VALUE=/jasmine/jasmine31/jasmine/WebLink/lib/default.env>
Password:<INPUT NAME=WIT_passwd TYPE="password" SIZE=20><BR>
<INPUT TYPE="submit" VALUE="OK"> </FORM> </CENTER> </FONT> </BODY> </HTML> Homepage2.html <HTML> <HEAD> <TITLE>Home</TITLE> </HEAD>
<BODY BgColor="#6699FF" Link="#0070ff" Vlink="#4682B4" Alink="#88c4ff"> <FONT size="4" color="#0000ff">
<H1>WELCOME TO KANEKO SHOPPING CENTER FOR ADMIN!</H1>
<A HREF="/cgi-bin/odb-get.exe?WIT_template=Customer"><H2>CUSTOMER</H2 </A><BR> <P> <A HREF="/cgi-bin/odb-get.exe?WIT_template=Commodity"><H2>COMMODITY</H2 </A><BR> <P> <A HREF="/cgi-bin/odb-get.exe?WIT_template=Read_Order"><H2>ORDER</H2 </A><BR> <P>
<A HREF="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/homepage2.html"> TO TOP PAGE <BR> <A HREF="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/logout.html"> LOGOUT<BR> </FONT> </BODY> </HTML> Customer <HTML> <HEAD> <TITLE>CUSTOMER TOP</TITLE> </HEAD>
<FONT size="4" color="#0000ff"> <H1>CUSTOMER LIST</H1>
<!VAR "Bag<moriiCF::Customer>" "cusbag"> <!VAR "moriiCF::Customer" "cus">
<!VAR "moriiCF::Customer" "c"> <!VAR Integer i>
<!DO "cusbag = cus.printcus()"> <!CATCH "JAS_default">
<!ABORT SESSION=LOGOUT URL="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/error.html">
<!/CATCH>
<!DO "cusbag = cusbag.sort(\"uid\")"> <!CATCH "JAS_default">
<!ABORT SESSION=LOGOUT URL="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/error.html"> <!/CATCH> <P> <table border = 2> <tr> <th align = left>userID</th> <th align = left>mail</th> <th align = left>passwd</th> </tr> <!DO "i=0"> <!FOREACH cusbag c> <tr>
<td align = left><!REPLACE c.uid></td> <td align = left><!REPLACE c.mail></td> <td align = left><!REPLACE c.pass></td> </tr> <!IF "i<c.uid"> <!DO "i=c.uid"> <!/IF> <!/FOREACH> </table> </P> <!DO "i = i + 1"> <P> <H1>ADD CUSTOMER</H1> Fill the forms and push 'go!'
<FORM ACTION="/cgi-bin/odb-get.exe" METHOD="POST"> <INPUT TYPE="hidden" NAME=WIT_template VALUE=addCus> <INPUT TYPE="hidden" NAME="uid" VALUE=<!REPLACE i>> mail:<INPUT TYPE="text" NAME="mail" size="40"><BR>
password:<INPUT TYPE="password" NAME="pw" size="40"><BR> <INPUT TYPE="submit" VALUE="go!">
</FORM> </P>
<P>
<H1>DELETE CUSTOMER</H1> Fill the forms and push 'go!'
<FORM ACTION="/cgi-bin/odb-get.exe" METHOD="POST"> <INPUT TYPE="hidden" NAME=WIT_template VALUE=delCus> ID:<INPUT TYPE="text" NAME="uid" size="10"><BR>
<INPUT TYPE="submit" VALUE="go!"> </FORM>
</P>
<A HREF="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/homepage2.html"> TO TOP PAGE <BR>
<A HREF="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/logout.html"> LOGOUT<BR>
</FONT> </BODY> </HTML> addCus <HTML> <HEAD>
<TITLE>Result of add customer</TITLE> </HEAD>
<BODY BgColor="#6699FF" Link="#0070ff" Vlink="#4682B4" Alink="#88c4ff"> <FONT size="4" color="#0000ff">
<!VAR "moriiCF::Customer" "cus">
<!VAR "Bag<moriiCF::Customer>" "cusbag"> <!VAR "Integer" "i">
<!DO "i = cus.addcus(wit_uid.convertToInteger(),wit_mail,wit_pw)"> <!CATCH "JAS_default">
<!ABORT SESSION=LOGOUT URL="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/error.html">
<!/CATCH>
<!IF "i==1">
<H2> MISSION COMPLETE!</H2><BR> <!ELSE>
<!IF "i==2">
<H2> OBJECT NOT FOUND!</H2><BR> <!ELSE> <!IF "i==3"> <H2> DOMAIN ERROR!</H2><BR> <!ELSE> <!IF "i==0"> <H2>ALREADY SENT!</H2><BR> <!ELSE>
<H2>ERROR! TRY AGAIN!</H2><BR> <!/IF>
<!/IF> <!/IF> <!/IF> <P>
<!--print the table-->
<!VAR "moriiCF::Customer" "c"> <!DO "cusbag = cus.printcus()"> <!CATCH "JAS_default">
<!ABORT SESSION=LOGOUT URL="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/error.html">
<!/CATCH>
<!DO "cusbag = cusbag.sort(\"uid\")"> <!CATCH "JAS_default">
<!ABORT SESSION=LOGOUT URL="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/error.html"> <!/CATCH> <table border = 2> <tr> <th align = left>userID</th> <th align = left>mail</th> <th align = left>passwd</th> </tr> <!FOREACH cusbag c> <tr>
<td align = left><!REPLACE c.uid></td> <td align = left><!REPLACE c.mail></td> <td align = left><!REPLACE c.pass></td> </tr>
<!/FOREACH> </table>
<A HREF="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/homepage2.html"> TO TOP PAGE <BR>
<A HREF="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/logout.html"> LOGOUT<BR>
</FONT> </BODY> </HTML> delCus <HTML> <HEAD> <META CONTENT="text/html;CHARSET=euc-up"> <TITLE>Result of delete customer</TITLE>
</HEAD>
<BODY BgColor="#6699FF" Link="#0070ff" Vlink="#4682B4" Alink="#88c4ff"> <FONT size="4" color="#0000ff">
<!VAR "Bag<moriiCF::Customer>" "cusbag"> <!VAR "moriiCF::Customer" "cus">
<!VAR "Integer" "i">
<!DO "i = cus.deletecus(wit_uid.convertToInteger())"> <!CATCH "JAS_default">
<!ABORT SESSION=LOGOUT URL="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/error.html"> <!/CATCH> <!IF "i==1"> <H2> MISSION COMPLETE!</H2><BR> <!ELSE> <!IF "i==2">
<H2> OBJECT NOT FOUND!</H2><BR> <!ELSE> <!IF "i==3"> <H2> DOMAIN ERROR!</H2><BR> <!ELSE> <!IF "i==0"> <H2>ALREADY SENT!</H2><BR> <!ELSE>
<H2>ERROR! TRY AGAIN!</H2><BR> <!/IF>
<!/IF> <!/IF> <!/IF>
<P>
<!VAR "moriiCF::Customer" "c">
<!--print the table-->
<!DO "cusbag = cus.printcus()"> <!CATCH "JAS_default">
<!ABORT SESSION=LOGOUT URL="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/error.html">
<!/CATCH>
<!DO "cusbag = cusbag.sort(\"uid\")"> <!CATCH "JAS_default">
<!ABORT SESSION=LOGOUT URL="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/error.html"> <!/CATCH> <table border = 2> <tr> <th align = left>userID</th> <th align = left>mail</th> <th align = left>passwd</th> </tr> <!FOREACH cusbag c> <tr>
<td align = left><!REPLACE c.uid></td> <td align = left><!REPLACE c.mail></td> <td align = left><!REPLACE c.pass></td> </tr>
<!/FOREACH> </table>
<P>
<A HREF="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/homepage2.html"> TO TOP PAGE <BR>
<A HREF="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/logout.html"> LOGOUT<BR>
</FONT> </BODY> </HTML> Commodity <HTML> <HEAD> <TITLE>COMMODITY TOP</TITLE>
</HEAD>
<BODY BgColor="#6699FF" Link="#0070ff" Vlink="#4682B4" Alink="#88c4ff"> <FONT size="4" color="#0000ff">
<H1>COMMODITY LIST</H1>
<!VAR "Bag<moriiCF::Commodity>" "combag"> <!VAR "moriiCF::Commodity" "com">
<!VAR "moriiCF::Commodity" "c"> <!VAR Integer i>
<!DO "combag = com.printcom()"> <!CATCH "JAS_default">
<!ABORT SESSION=LOGOUT URL="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/error.html">
<!/CATCH>
<!DO "combag = combag.sort(\"cid\")"> <!CATCH "JAS_default">
<!ABORT SESSION=LOGOUT URL="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/error.html"> <!/CATCH> <P> <table border = 2> <tr> <th align = left>comID</th> <th align = left>Name</th> <th align = left>price</th> <th align = left>quantity</th> </tr> <!DO "i=0"> <!FOREACH combag c> <tr>
<td align = left><!REPLACE c.cid></td> <td align = left><!REPLACE c.cname></td> <td align = left><!REPLACE c.price></td> <td align = left><!IF "c.quantity==0">
<FONT color="#cc0000"> <!REPLACE c.quantity></td> <!ELSE> <!REPLACE c.quantity></td> <!/IF> </tr> <!IF "i<c.cid"> <!DO "i=c.cid"> <!/IF>
<!/FOREACH> </table> </P> <!DO "i = i + 1"> <P> <H1>ADD COMMODITY</H1> Fill the forms and push 'go!'
<FORM ACTION="/cgi-bin/odb-get.exe" METHOD="POST"> <INPUT TYPE="hidden" NAME=WIT_template VALUE=addCom> <INPUT TYPE="hidden" NAME="cid" VALUE=<!REPLACE i>>
commodity name:<INPUT TYPE="text" NAME="cname" size="40"><BR> commodity price:<INPUT TYPE="text" NAME="price" size="40"><BR> commodity quantity:<INPUT TYPE="text" NAME="quantity" size="40"><BR> <INPUT TYPE="submit" VALUE="go!">
</FORM> </P>
<P>
<H1>DELETE COMMODITY</H1> Fill the forms and push 'go!'
<FORM ACTION="/cgi-bin/odb-get.exe" METHOD="POST"> <INPUT TYPE="hidden" NAME=WIT_template VALUE=delCom> commodity ID:<INPUT TYPE="text" NAME="cid" size="10"><BR> <INPUT TYPE="submit" VALUE="go!">
</FORM> </P>
<P>
<H1>ADD STOCK</H1> Fill the forms and push 'go!'
<FORM ACTION="/cgi-bin/odb-get.exe" METHOD="POST"> <INPUT TYPE="hidden" NAME=WIT_template VALUE=addStock> commodity ID:<INPUT TYPE="text" NAME="cid" size="10"><BR>
commodity quantity:<INPUT TYPE="text" NAME="quantity" size="10"><BR> <INPUT TYPE="submit" VALUE="go!">
</FORM> </P>
<P>
<H1>SUB STOCK</H1> Fill the forms and push 'go!'
<FORM ACTION="/cgi-bin/odb-get.exe" METHOD="POST"> <INPUT TYPE="hidden" NAME=WIT_template VALUE=subStock> commodity ID:<INPUT TYPE="text" NAME="cid" size="10"><BR>
<INPUT TYPE="submit" VALUE="go!"> </FORM>
</P>
<A HREF="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/homepage2.html"> TO TOP PAGE <BR>
<A HREF="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/logout.html"> LOGOUT<BR>
</FONT> </BODY> </HTML> addCom <HTML> <HEAD> <META CONTENT="text/html;CHARSET=euc-up"> <TITLE>Result of add commodity</TITLE>
</HEAD>
<BODY BgColor="#6699FF" Link="#0070ff" Vlink="#4682B4" Alink="#88c4ff"> <FONT size="4" color="#0000ff">
<!VAR "Bag<moriiCF::Commodity>" "combag"> <!VAR "moriiCF::Commodity" "com">
<!VAR "Integer" "i"> <!DO "i =
com.addcom(wit_cid.convertToInteger(),wit_cname,wit_price.convertToInteger(),wit_q uantity.convertToInteger())">
<!CATCH "JAS_default">
<!ABORT SESSION=LOGOUT URL="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/error.html"> <!/CATCH> <!IF "i==1"> <H2> MISSION COMPLETE!</H2><BR> <!ELSE> <!IF "i==2">
<H2> OBJECT NOT FOUND!</H2><BR> <!ELSE> <!IF "i==3"> <H2> DOMAIN ERROR!</H2><BR> <!ELSE> <!IF "i==0"> <H2>ALREADY SENT!</H2><BR> <!ELSE>
<H2>ERROR! TRY AGAIN!</H2><BR> <!/IF>
<!/IF> <!/IF> <P>
<!VAR "moriiCF::Commodity" "c">
<!DO "combag = com.printcom()"> <!CATCH "JAS_default">
<!ABORT SESSION=LOGOUT URL="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/error.html">
<!/CATCH>
<!DO "combag = combag.sort(\"cid\")"> <!CATCH "JAS_default">
<!ABORT SESSION=LOGOUT URL="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/error.html"> <!/CATCH> <table border = 2> <tr> <th align = left>comID</th> <th align = left>Name</th> <th align = left>price</th> <th align = left>quantity</th> </tr> <!FOREACH combag c> <tr>
<td align = left><!REPLACE c.cid></td> <td align = left><!REPLACE c.cname></td> <td align = left><!REPLACE c.price></td> <td align = left><!IF "c.quantity==0">
<FONT color="#cc0000"> <!REPLACE c.quantity></td> <!ELSE> <!REPLACE c.quantity></td> <!/IF> </tr> <!/FOREACH> </table> <P>
<A HREF="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/homepage2.html"> TO TOP PAGE <BR>
<A HREF="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/logout.html"> LOGOUT<BR>
</BODY> </HTML>
delCom
<HTML> <HEAD>
<TITLE>Resuit of delete commodity</TITLE> </HEAD>
<BODY BgColor="#6699FF" Link="#0070ff" Vlink="#4682B4" Alink="#88c4ff"> <FONT size="4" color="#0000ff">
<!VAR "Bag<moriiCF::Commodity>" "combag"> <!VAR "moriiCF::Commodity" "com">
<!VAR "Integer" "i">
<!DO "i = com.deletecom(wit_cid.convertToInteger())"> <!CATCH "JAS_default">
<!ABORT SESSION=LOGOUT URL="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/error.html"> <!/CATCH> <!IF "i==1"> <H2> MISSION COMPLETE!</H2><BR> <!ELSE> <!IF "i==2">
<H2> OBJECT NOT FOUND!</H2><BR> <!ELSE> <!IF "i==3"> <H2> DOMAIN ERROR!</H2><BR> <!ELSE> <!IF "i==0"> <H2>ALREADY SENT!</H2><BR> <!ELSE>
<H2>ERROR! TRY AGAIN!</H2><BR> <!/IF> <!/IF> <!/IF> <!/IF> <P> <!VAR "moriiCF::Commodity" "c">
<!DO "combag = com.printcom()"> <!CATCH "JAS_default">
<!ABORT SESSION=LOGOUT URL="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/error.html">
<!/CATCH>
<!CATCH "JAS_default">
<!ABORT SESSION=LOGOUT URL="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/error.html"> <!/CATCH> <table border = 2> <tr> <th align = left>comID</th> <th align = left>Name</th> <th align = left>price</th> <th align = left>quantity</th> </tr> <!FOREACH combag c> <tr>
<td align = left><!REPLACE c.cid></td> <td align = left><!REPLACE c.cname></td> <td align = left><!REPLACE c.price></td> <td align = left><!IF "c.quantity==0">
<FONT color="#cc0000"> <!REPLACE c.quantity></td> <!ELSE> <!REPLACE c.quantity></td> <!/IF> </tr> <!/FOREACH> </table> <P>
<A HREF="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/homepage2.html"> TO TOP PAGE <BR>
<A HREF="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/logout.html"> LOGOUT<BR>
</FONT> </BODY> </HTML> addStock <HTML> <HEAD>
<TITLE>result of add stock</TITLE> </HEAD>
<BODY BgColor="#6699FF" Link="#0070ff" Vlink="#4682B4" Alink="#88c4ff"> <FONT size="4" color="#0000ff">
<!VAR "Bag<moriiCF::Commodity>" "combag"> <!VAR "moriiCF::Commodity" "com">
<!VAR "Integer" "i"> <!DO "i =
com.addstock(wit_cid.convertToInteger(),wit_quantity.convertToInteger())">
<!CATCH "JAS_default">
<!ABORT SESSION=LOGOUT URL="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/error.html"> <!/CATCH> <!IF "i==1"> <H2> MISSION COMPLETE!</H2><BR> <!ELSE> <!IF "i==2">
<H2> OBJECT NOT FOUND!</H2><BR> <!ELSE> <!IF "i==3"> <H2> DOMAIN ERROR!</H2><BR> <!ELSE> <!IF "i==0"> <H2>ALREADY SENT!</H2><BR> <!ELSE>
<H2>ERROR! TRY AGAIN!</H2><BR> <!/IF> <!/IF> <!/IF> <!/IF> <P> <!VAR "moriiCF::Commodity" "c">
<!DO "combag = com.printcom()"> <!CATCH "JAS_default">
<!ABORT SESSION=LOGOUT URL="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/error.html">
<!/CATCH>
<!DO "combag = combag.sort(\"cid\")"> <!CATCH "JAS_default">
<!ABORT SESSION=LOGOUT URL="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/error.html"> <!/CATCH> <table border = 2> <tr> <th align = left>comID</th> <th align = left>Name</th> <th align = left>price</th>
<th align = left>quantity</th> </tr>
<!FOREACH combag c> <tr>
<td align = left><!REPLACE c.cid></td> <td align = left><!REPLACE c.cname></td> <td align = left><!REPLACE c.price></td> <td align = left><!IF "c.quantity==0">
<FONT color="#cc0000"> <!REPLACE c.quantity></td> <!ELSE> <!REPLACE c.quantity></td> <!/IF> </tr> <!/FOREACH> </table> <P>
<A HREF="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/homepage2.html"> TO TOP PAGE <BR>
<A HREF="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/logout.html"> LOGOUT<BR>
</FONT> </BODY> </HTML> subStock <HTML> <HEAD>
<TITLE>result of delete stock</TITLE> </HEAD>
<BODY BgColor="#6699FF" Link="#0070ff" Vlink="#4682B4" Alink="#88c4ff"> <FONT size="4" color="#0000ff">
<!VAR "Bag<moriiCF::Commodity>" "combag"> <!VAR "moriiCF::Commodity" "com">
<!VAR "Integer" "i">
<!DO "i =
com.substock(wit_cid.convertToInteger(),wit_quantity.convertToInteger())"> <!CATCH "JAS_default">
<!ABORT SESSION=LOGOUT URL="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/error.html">
<!/CATCH>
<H2> MISSION COMPLETE!</H2><BR> <!ELSE>
<!IF "i==2">
<H2> OBJECT NOT FOUND!</H2><BR> <!ELSE> <!IF "i==3"> <H2> DOMAIN ERROR!</H2><BR> <!ELSE> <!IF "i==0"> <H2>ALREADY SENT!</H2><BR> <!ELSE>
<H2>ERROR! TRY AGAIN!</H2><BR> <!/IF> <!/IF> <!/IF> <!/IF> <P> <!VAR "moriiCF::Commodity" "c">
<!DO "combag = com.printcom()"> <!CATCH "JAS_default">
<!ABORT SESSION=LOGOUT URL="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/error.html">
<!/CATCH>
<!DO "combag = combag.sort(\"cid\")"> <!CATCH "JAS_default">
<!ABORT SESSION=LOGOUT URL="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/error.html"> <!/CATCH> <table border = 2> <tr> <th align = left>comID</th> <th align = left>Name</th> <th align = left>price</th> <th align = left>quantity</th> </tr> <!FOREACH combag c> <tr>
<td align = left><!REPLACE c.cid></td> <td align = left><!REPLACE c.cname></td> <td align = left><!REPLACE c.price></td> <td align = left><!IF "c.quantity==0">
<!REPLACE c.quantity></td> <!ELSE> <!REPLACE c.quantity></td> <!/IF> </tr> <!/FOREACH> </table> <P>
<A HREF="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/homepage2.html"> TO TOP PAGE <BR>
<A HREF="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/logout.html"> LOGOUT<BR>
</FONT> </BODY> </HTML> Read_Order <HTML> <HEAD> <TITLE>read order</TITLE> </HEAD>
<BODY BgColor="#6699FF" Link="#0070ff" Vlink="#4682B4" Alink="#88c4ff"> <FONT size="4" color="#0000ff">
<!VAR "Bag<moriiCF::Customer>" "cusbag"> <!Var "moriiCF::Customer" "cus">
<!DO "cusbag=moriiCF::Customer from moriiCF::Customer"> <!DO "cusbag=cusbag.sort(\"uid\")">
<FORM ACTION="/cgi-bin/odb-get.exe" METHOD="POST"> <INPUT TYPE="hidden" NAME=WIT_template VALUE=Order> <P><H2>PLEASE SELECT THE USER!</H2><BR>
<SELECT NAME="uid">
<OPTION VALUE="0">ALL</OPTION> <!FOREACH cusbag cus>
<OPTION VALUE=<!REPLACE cus.uid>><!REPLACE cus.mail></OPTION> <!/FOREACH>
</SELECT></P>
<INPUT TYPE="submit" VALUE="go!"> <P>
<A HREF="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/homepage2.html"> TO TOP PAGE <BR>
<A HREF="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/logout.html"> LOGOUT<BR>
</FONT> </BODY>
</HTML> Order <HTML> <HEAD> <TITLE>ORDER TOP</TITLE> </HEAD>
<BODY BgColor="#6699FF" Link="#0070ff" Vlink="#4682B4" Alink="#88c4ff"> <FONT size="4" color="#0000ff">
<!VAR "Bag<moriiCF::Customer>" "cusbag"> <!VAR "Bag<moriiCF::Commodity>" "combag"> <!VAR "Bag<moriiCF::Order>" "ordbag">
<!VAR "moriiCF::Customer" "cus"> <!VAR "moriiCF::Commodity" "com"> <!VAR "moriiCF::Order" "ord">
<!VAR "moriiCF::Order" "o"> <!VAR Integer i>
<!DO "cusbag = moriiCF::Customer from moriiCF::Customer"> <!DO "cusbag = cusbag.sort(\"uid\")">
<!DO "combag = moriiCF::Commodity from moriiCF::Commodity"> <!DO "combag = combag.sort(\"cid\")">
<H1>ORDER LIST</H1>
<!DO "ordbag = ord.printorder(wit_uid.convertToInteger())"> <!CATCH "JAS_default">
<!ABORT SESSION=LOGOUT URL="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/error.html">
<!/CATCH>
<!FOREACH ordbag ord> <!DO "ord.cleanorder()"> <!CATCH "JAS_default">
<!ABORT SESSION=LOGOUT URL="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/error.html">
<!/CATCH> <!/FOREACH>
<!DO "ordbag = ordbag.sort(\"onum\")"> <!CATCH "JAS_default">
<!ABORT SESSION=LOGOUT URL="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/error.html">
<!/CATCH>
<P>
<tr>
<th align = left>orderNo</th> <th align = left>userID</th>
<th align = left>commodityID</th> <th align = left>number</th> <th align = left>order date</th> <th align = left>del date</th> <th align = left>send?</th> </tr>
<!DO "i=0">
<!FOREACH ordbag o> <tr>
<td align = left><!REPLACE o.onum></td> <td align = left><!REPLACE o.uid></td> <td align = left><!REPLACE o.cid></td> <td align = left><!REPLACE o.num></td> <td align = left><!REPLACE o.odate></td> <td align = left><!REPLACE o.deldate></td> <td align = left><!REPLACE o.send></td> </tr> <!IF "i<o.onum"> <!DO "i=o.onum"> <!/IF> <!/FOREACH> </table> </P> <!DO "i = i + 1"> <P> <H1>ADD ORDER</H1>
Fill the forms and push 'go!' <BR>
<FORM ACTION="/cgi-bin/odb-get.exe" METHOD="POST"> <INPUT TYPE="hidden" NAME=WIT_template VALUE=addOrder> <INPUT TYPE="hidden" NAME="onum" VALUE=<!REPLACE i>> <!IF "wit_uid.convertToInteger()==0">
user <BR>
<SELECT NAME="uid"> <!FOREACH cusbag cus>
<OPTION VALUE=<!REPLACE cus.uid>><!REPLACE cus.mail></OPTION> <!/FOREACH>
</SELECT> <!ELSE>
<INPUT TYPE="hidden" NAME="uid" VALUE=<!REPLACE wit_uid>> <!/IF><BR>
commodity<BR>
<SELECT NAME="cid"> <!FOREACH combag com> <!IF "com.quantity>0">
<OPTION VALUE=<!REPLACE com.cid>><!REPLACE com.cname></OPTION>
<!/IF>
<!/FOREACH> </SELECT><BR>
number:<INPUT TYPE="text" NAME="num" size="10"><BR>
<INPUT TYPE="hidden" NAME="printID" VALUE=<!REPLACE wit_uid>> <INPUT TYPE="submit" VALUE="go!">
</FORM> </P>
<P>
<H1>DELETE ORDER</H1> Fill the forms and push 'go!'
<FORM ACTION="/cgi-bin/odb-get.exe" METHOD="POST"> <INPUT TYPE="hidden" NAME=WIT_template VALUE=delOrder> order number:<INPUT TYPE="text" NAME="onum" size="10"><BR>
<INPUT TYPE="hidden" NAME="printID" VALUE=<!REPLACE wit_uid>> <INPUT TYPE="submit" VALUE="go!">
</FORM> </P>
<P>
<H1>SEND ORDER</H1> Fill the forms and push 'go!'
<FORM ACTION="/cgi-bin/odb-get.exe" METHOD="POST">
<INPUT TYPE="hidden" NAME=WIT_template VALUE=sendOrder> order number:<INPUT TYPE="text" NAME="onum" size="10"><BR>
<INPUT TYPE="hidden" NAME="printID" VALUE=<!REPLACE wit_uid>> <INPUT TYPE="submit" VALUE="go!">
</FORM> </P>
<A HREF="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/homepage2.html"> TO TOP PAGE <BR>
<A HREF="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/logout.html"> LOGOUT<BR>
</FONT> </BODY> </HTML>
addOrder
<HEAD>
<TITLE>Result of add order</TITLE> </HEAD>
<BODY BgColor="#6699FF" Link="#0070ff" Vlink="#4682B4" Alink="#88c4ff"> <FONT size="4" color="#0000ff">
<!VAR "moriiCF::Order" "ord"> <!VAR "Integer" "i"> <!DO "i =
ord.addorder(wit_onum.convertToInteger(),wit_uid.convertToInteger(),wit_cid.convert ToInteger(),wit_num.convertToInteger())">
<!CATCH "JAS_default">
<!ABORT SESSION=LOGOUT URL="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/error.html"> <!/CATCH> <!IF "i==1"> <H2> MISSION COMPLETE!</H2><BR> <!ELSE> <!IF "i==2">
<H2> OBJECT NOT FOUND!</H2><BR> <!ELSE> <!IF "i==3"> <H2> DOMAIN ERROR!</H2><BR> <!ELSE> <!IF "i==0"> <H2>ALREADY SENT!</H2><BR> <!ELSE>
<H2>ERROR! TRY AGAIN!</H2><BR> <!/IF>
<!/IF> <!/IF> <!/IF>
<!--print the table-->
<!DO "ordbag = ord.printorder(wit_printID.convertToInteger())"> <!CATCH "JAS_default">
<!ABORT SESSION=LOGOUT URL="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/error.html">
<!/CATCH>
<!DO "ordbag = ordbag.sort(\"onum\")"> <!CATCH "JAS_default">
<!ABORT SESSION=LOGOUT URL="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/error.html">
<P> <table border = 2> <tr> <th align = left>orderNo</th> <th align = left>userID</th> <th align = left>commodityID</th> <th align = left>number</th> <th align = left>date</th> <th align = left>del date</th> <th align = left>send?</th> </tr>
<!DO "i=1">
<!FOREACH ordbag o> <tr>
<td align = left><!REPLACE o.onum></td> <td align = left><!REPLACE o.uid></td> <td align = left><!REPLACE o.cid></td> <td align = left><!REPLACE o.num></td> <td align = left><!REPLACE o.odate></td> <td align = left><!REPLACE o.deldate></td> <td align = left><!REPLACE o.send></td> </tr>
<!/FOREACH> </table>
</P>
<A HREF="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/homepage2.html"> TO TOP PAGE <BR>
<A HREF="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/logout.html"> LOGOUT<BR>
</FONT> </BODY> </HTML> delOrder <HTML> <HEAD>
<TITLE>Result of delete order</TITLE> </HEAD>
<BODY BgColor="#6699FF" Link="#0070ff" Vlink="#4682B4" Alink="#88c4ff"> <FONT size="4" color="#0000ff">
<!VAR "Bag<moriiCF::Order>" "ordbag"> <!VAR "moriiCF::Order" "ord">
<!VAR "Integer" "i">
<!DO "i = ord.deleteorder(wit_onum.convertToInteger())"> <!CATCH "JAS_default">
<!ABORT SESSION=LOGOUT URL="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/error.html"> <!/CATCH> <!IF "i==1"> <H2> MISSION COMPLETE!</H2><BR> <!ELSE> <!IF "i==2">
<H2> OBJECT NOT FOUND!</H2><BR> <!ELSE> <!IF "i==3"> <H2> DOMAIN ERROR!</H2><BR> <!ELSE> <!IF "i==0"> <H2>ALREADY SENT!</H2><BR> <!ELSE>
<H2>ERROR! TRY AGAIN!</H2><BR> <!/IF>
<!/IF> <!/IF> <!/IF>
<!--print the table-->
<!DO "ordbag = ord.printorder(wit_printID.convertToInteger())"> <!CATCH "JAS_default">
<!ABORT SESSION=LOGOUT URL="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/error.html">
<!/CATCH>
<!DO "ordbag = ordbag.sort(\"onum\")">
<!CATCH "JAS_default">
<!ABORT SESSION=LOGOUT URL="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/error.html"> <!/CATCH> <P> <table border = 2> <tr> <th align = left>orderNo</th> <th align = left>userID</th> <th align = left>commodityID</th> <th align = left>number</th> <th align = left>date</th> <th align = left>del date</th> <th align = left>send?</th>
</tr>
<!DO "i=1">
<!FOREACH ordbag o> <tr>
<td align = left><!REPLACE o.onum></td> <td align = left><!REPLACE o.uid></td> <td align = left><!REPLACE o.cid></td> <td align = left><!REPLACE o.num></td> <td align = left><!REPLACE o.odate></td> <td align = left><!REPLACE o.deldate></td> <td align = left><!REPLACE o.send></td> </tr>
<!/FOREACH> </table>
</P>
<A HREF="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/homepage2.html"> TO TOP PAGE <BR>
<A HREF="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/logout.html"> LOGOUT<BR>
</FONT> </BODY> </HTML> sendOrder <HTML> <HEAD>
<TITLE>Resuit of send order</TITLE> </HEAD>
<BODY BgColor="#6699FF" Link="#0070ff" Vlink="#4682B4" Alink="#88c4ff"> <FONT size="4" color="#0000ff">
<!VAR "Bag<moriiCF::Order>" "ordbag"> <!VAR "moriiCF::Order" "ord">
<!VAR "Integer" "i">
<!DO "i = ord.sendorder(wit_onum.convertToInteger())">
<!CATCH "JAS_default">
<!ABORT SESSION=LOGOUT URL="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/error.html">
<!/CATCH>
<!IF "i==1">
<H2> MISSION COMPLETE!</H2><BR> <!ELSE>
<!IF "i==2">
<H2> OBJECT NOT FOUND!</H2><BR> <!ELSE> <!IF "i==3"> <H2> DOMAIN ERROR!</H2><BR> <!ELSE> <!IF "i==0"> <H2>ALREADY SENT!</H2><BR> <!ELSE>
<H2>ERROR! TRY AGAIN!</H2><BR> <!/IF>
<!/IF> <!/IF> <!/IF>
<!--print the table-->
<!DO "ordbag = ord.printorder(wit_printID.convertToInteger())"> <!CATCH "JAS_default">
<!ABORT SESSION=LOGOUT URL="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/error.html">
<!/CATCH>
<!DO "ordbag = ordbag.sort(\"onum\")"> <!CATCH "JAS_default">
<!ABORT SESSION=LOGOUT URL="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/error.html"> <!/CATCH> <P> <table border = 2> <tr> <th align = left>orderNo</th> <th align = left>userID</th> <th align = left>commodityID</th> <th align = left>number</th> <th align = left>date</th> <th align = left>del date</th> <th align = left>send?</th> </tr>
<!DO "i=1">
<!FOREACH ordbag o> <tr>
<td align = left><!REPLACE o.onum></td> <td align = left><!REPLACE o.uid></td> <td align = left><!REPLACE o.cid></td> <td align = left><!REPLACE o.num></td>
<td align = left><!REPLACE o.odate></td> <td align = left><!REPLACE o.deldate></td> <td align = left><!REPLACE o.send></td> </tr>
<!/FOREACH> </table>
</P>
<A HREF="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/homepage2.html"> TO TOP PAGE <BR>
<A HREF="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/logout.html"> LOGOUT<BR>
</FONT> </BODY> </HTML> error.html <HTML> <HEAD> <TITLE>database error</TITLE> </HEAD>
<BODY BgColor="#6699FF" Link="#0070ff" Vlink="#4682B4" Alink="#88c4ff"> <FONT size="4" color="#0000ff">
<H2>DATABASE ERROR! </H2><BR> <A HREF="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/index.html">TRY AGAIN!<BR> </FONT> </BODY> </HTML> logout.html <HTML> <HEAD> <TITLE>logout</TITLE> </HEAD>
<BODY BgColor="#6699FF" Link="#0070ff" Vlink="#4682B4" Alink="#88c4ff"> <FONT size="4" color="#0000ff">
<CENTER>
<h1>DO YOU WANT TO LOGOUT?</h1>
<A HREF="/cgi-bin/odb-logout.exe?WIT_urlpath=http://jasmine.db.is.kyushu-u.ac.jp/tanaka/logout_message.html">YES<BR>
<A HREF="http://jasmine.db.is.kyushu-u.ac.jp/tanaka/homepage2.html">NO BACK TO TOP PAGE<BR>
</FONT> </BODY> </HTML> logout_message.html <HTML> <HEAD> <TITLE>logout</TITLE> </HEAD>
<BODY BgColor="#6699FF" Link="#0070ff" Vlink="#4682B4" Alink="#88c4ff"> <FONT size="4" color="#0000ff">
<CENTER> <h1>THANK YOU!!</h1> </CENTER> </FONT> </BODY> </HTML>