第四章 系統組織與架構
5.8 出價程式功能
5.8.2 checkout-check.jsp
這個程式是讓想要買東西的使用者確認這個物品的出價 價格訊息並讓使用者輸入帳號和密碼的頁面,然後會連到 BuyDeal.jsp去檢查使用者輸入的帳號密碼是否正確,如果使 用者忘記密碼時,則會連到SendPswd.jsp去讓系統用E-mail 送正確的密碼給使用者。[圖 5.24]為checkout-check.jsp程 式流程圖。
開 始
取 得 來 自 ch e ck o u t-m a in -p ag e.jsp
的 資 料
顯 示 出 物 品 種 類 ,名 稱 ,目 前 價 格 ,以 及 最
高 出 價 金 額
使 用 者 輸 入 帳 號 及 密 碼
導 入 到 B u y D e al.jsp
忘 記 密 碼
導 入 到 S en d P sw d .jsp
[圖 5.24 checkout-check.jsp 程式流程圖]
5.8.3 BuyDeal.jsp
這個程式是從 checkout-check.jsp 抓取使用者輸入的帳 號和密碼,並檢查其正確性,檢查方式是先抓出 Table[會員固 定資料]的結果集物件,然後再一筆一筆的比對有無此使用者, 並設定一個 check 變數,當 check=1 時代表帳號和密碼都正 確,check=2 時代表只有密碼錯誤,check=0 時代表帳號錯誤, 當帳號和密碼都是正確的時候就將網頁導入到 flag.jsp 中, 錯誤時就回到 checkout-check.jsp 中。[圖 5.25]為
BuyDeal.jsp 程式流程圖。 開 始
取 得 來 自 checkout.check.jsp的 帳
號 和 密 碼
會 員 固 定 資 料 讀 取 帳 號 密 碼
檢 查 帳 號 密 碼
正 確 錯 誤
將 網 頁 導 入 到 checkout-check.jsp中 將 網 頁 導 入 到 flag.jsp
中
[圖 5.25 BuyDeal.jsp 程式流程圖]
5.8.4 flag.jsp
這個程式是讓使用者確認完帳號密碼後,因為不可以同 時有兩個以上的人在更動資料庫,所以會利用此flag.jsp來 防止此事發生。
我 們 在 資 料 Table[ 賣 方 物 品 資 料 ] 中 新 増 三 個 欄 位 Flag1,Flag2,Flag3,當使用者要更動資料庫時,先去看 Flag1 是否有被改成 1,若沒有,則將 Flag1 改成 1,此時這個 user 就 搶到了 Flag1,接著再去搶 Flag2…以此類推。
當遇到有旗子已經被改成 1(代表已經被搶走)時,先把之 前已經改成 1 的 Flag 欄位改回 0,然後 flag.jsp 就連到 flag-failed.jsp 去 顯 示 出 資 料 庫 忙 碌 中 , 然 後 再 從 flag-failed.jsp 回到賣方物品主頁面 GoodsShow.jsp 中。
當三個旗子都搶到了後,代表現在沒有人在更動資料庫, 則此時就連到 checkout-success1.jsp 中去將出價紀錄存到 資料庫中。
以下是搶旗標流程演算法:
<1> 1.1 如果 Flag1 的值為 0:
=>將資料庫中 Flag1 的值改為 1
1.2 如果 Flag1 的值不為 0:
=>將網頁導向 flag-failed.jsp
<2> 2.1 如果 Flag2 的值為 0:
=>將資料庫中 Flag2 的值改為 1 2.2 如果 Flag2 的值不為 0:
=>1:將資料庫中的 Flag1 改回 0 =>2:將網頁導向 flag-failed.jsp
<3> 3.1 如果 Flag3 的值為 0:
=>將資料庫中 Flag3 的值改為 1,搶旗標成功!!!
=> 將 網 頁 導 向 checkout-success1.jsp, 並 在 checkout-success1.jsp 網頁完成資料庫的存入後, 將資料庫中的 Flag1,Flag2,Flag3 改回 0。
3.2 如果 Flag3 的值不為 0:
=> 1:將資料庫中的 Flag1,Flag2 改回 0 => 2:將網頁導向 flag-failed.jsp [圖 5.26]為 flag.jsp 程式流程圖。
開始
判斷Flag2值 值為1 值為0
將Flag1,Flag2 值為1 值改為0
將網頁導入 到checkout-success1.jsp
[圖 5.26 flag.jsp 程式流程圖]
5.8.5 flag-failed.jsp
這個程式主要是回應 flag.jsp 程式,當搶旗子動作失敗 時 ,flag-failed.jsp 就 顯 示 出 資 料 庫 忙 碌 中 , 然 後 再 從 flag-failed.jsp 回到賣方物品主頁面 GoodsShow.jsp 中讓 使用者再重新出價。[圖 5.27]為 flag-failed.jsp 程式流程 圖。
開 始
取 得 f l a g . j s p 的 物 品 種 類 和 物 品 編 號 變
數
顯 示 出 資 料 庫 忙 碌 中
將 網 頁 導 入 到 G o o d s S h o w . j s p 中
[圖 5.27 flag-failed.jsp 程式流程圖]
5.8.6 checkout-success1.jsp
這個程式主要是回應 flag.jsp 程式,當搶旗子動作成功 時,checkout-success1.jsp 就會將這次的交易紀錄更新到資
料庫中,被更動到的 Table 包括有[賣方物品資料]和[出價紀 錄]兩個 Table , 每次一有使用者出價時, checkout-
success1.jsp 就會比對現在出價的人的最高出價金額和資料 庫中這個物品的目前最高出價金額,會得到以下三種情形。
<1>現在出價的 user 的最高出價金額若比資料庫中的最高價 錢多時:
<1.1>則最新的物品目前價格此時又分兩種情形:
1: (user 出的最高價錢減掉資料庫中的最高價錢) >= (出 價增額)時:
則最新的物品目前價格等於資料庫中的最高價格加上出 價增額。
2: (user 出的最高價錢減掉資料庫中的最高價錢) < (出 價增額)時:
則最新的物品目前價格等於此 user 的最高出價。
<1.2>儲存[出價紀錄]。
<1.3>更新[賣方物品資料]。
<2>現在出價的 user 的最高出價金額若等於資料庫中的最高 價錢時:
<2.1>先出價者先贏,然後告訴他已有人出此價格。
<2.2>儲存[出價紀錄]。
<2.3>更新[賣方物品資料]。
<3>現在出價的 user 的最高出價金額若比資料庫中的最高價 錢少時:
<3.1>則最新的物品目前價格此時又分兩種情形:
1: (資料庫中的最高價錢減掉 user 出的最高價錢) >= (出 價增額)時:
則最新的物品目前價格等於 user 出的最高價錢加上出價 增額。
2: (資料庫中的最高價錢減掉 user 出的最高價錢) < (出 價增額)時:
則最新的物品目前價格等於資料庫中的最高價錢。
<3.2>儲存[出價紀錄]。
<3.3>更新[賣方物品資料]。
[圖 5.28]為 checkout-success1.jsp 程式流程圖。
開始
[圖 5.28 checkout-success1.jsp 程式流程圖]
5.8.7 checkout-success2.jsp
這個程式主要是回應 checkout-success1.jsp 更新完資 料庫後的後續動作,會告訴使用者出價已經完成,以及物品出 價過後的詳細訊息,包括有物品分類,物品名稱,上次價格,出 價增額,您的最高出價金額,您這次的出價價格等等的訊息。
[圖 5.29]為 checkout-success2.jsp 程式流程圖。
開 始
取 得 來 自 c h e c k o u t-s u c c e t-s t-s 2 .jt-s p
的 資 料
顯 示 出 價 已 經 完 成 的 訊 息 以 及 物 品 詳 細 資
訊
返 回 到 G o o d s S h o w .js p
[圖 5.29 checkout-success2.jsp 程式流程圖]
5.8.8 buynow.jsp
當使用者在 checkout-main-page.jsp 中按下立刻買的的 按鈕時便會連到這一面,這一面會顯示出該物品的基本訊息 如名稱、數量、立刻買價錢。並會要求使用者輸入帳號與密 碼以作確認,使用者所輸入的帳號與密碼將連到
LoginDeal.jsp 程式作資料庫的比對。[圖 5.30]為 buynow.jsp 程式流程圖。
開 始
連 到 logindeal.jsp
顯 示 帳 號 密 碼
錯 誤 錯 誤
否
[圖 5.30 buynow.jsp 程式流程圖]
5.8.9 LoginDeal.jsp
此程式的主要功能是判斷 BuyNow.jsp 頁面使用者所輸入 的帳號密碼是否正確,以及錯誤時所對應的動作訊息。
當程式接收到使用者的帳號密碼後會先比對帳號部分,
如果帳號部分並不存在該使用者,則會顯示:並無此使用者 帳號,且將頁面導回至 BuyNow.jsp,如果帳號正確則會再一 步比對密碼部分,同樣的密碼若錯誤則會顯示:密碼不正確,
而導回至 BuyNow.jsp,而當帳號密碼皆正確時程式便會偵測 此帳號是否已經通過認證,若未通過則導回 BuyNow.jsp 並顯 示錯誤訊息,程式之所以要將帳號密碼的錯誤訊息分別顯示 是為了方便使用者知道其所填寫的資料錯誤為何,這樣可提 高 使 用 者 下 一 次 輸 入 時 的 正 確 性 。 [ 圖 5.31] 為 LoginDeal.jsp 程式流程圖。
開始
抓取BuyNow傳來的帳 號密碼與欲傳至 BuyNowDeal的資料
判斷
將帳號密碼與 BuyNowDeal需要值 傳至SendBuyNow.jsp
帳號密碼符合
帳號密碼錯誤
連結至 BuyNow
結束 會員固
定資料
[圖 5.31 LoginDeal.jsp 程式流程圖]
5.8.10 SendBuyNow.jsp
此程式的主要功能是處理會員利用立刻買功能所買下的 拍賣物品,並寄送雙方資訊以提供買賣雙方進行交易行為。
當程式被呼叫後會將此筆資料從資料庫 Table[賣方物品
資料]中轉移至[完成交易紀錄],程式會寄送郵件至買賣雙方 會員的信箱,其中各包含對方的基本資料及連絡電話讓雙方 能夠進一步連絡並進行金錢與物品交易,然後程式會將此拍 賣物品資料從資料庫 Table[賣方物品資料]轉移至[完成交易 紀錄],並且在資料庫 Table[評價判斷表]中寫入雙方的資 料,此動作則是讓買賣雙方能夠再市場的評價功能中為雙方 進行此次交易的評價。[圖 5.32]為 SendBuyNow.jsp 程式流 程圖。
開 始
[圖 5.32 SendBuyNow.jsp 程式流程圖]
5.8.11 buynowdeal.jsp
使用者在經過立刻買的處理過程結束後,系統會在這一 程式中顯示出使用者已經成功完成立刻買的訊息,使用者在 閱讀完之後便可以連結到 main.jsp 的頁面。[圖 5.33]為 buynowdeal.jsp 的程式流程圖。
開始
結束
顯示使用者已經成 功完成立刻買交易
[圖 5.33 buynowdeal.jsp 的程式流程圖]
5.9 結標程式功能
在這一部分的子系統中分為 2 個程式,每一項程式的說 明及程式流程如下:
5.9.1 EndDeal.jsp
此程式的作用是讓管理員設定固定時段執行結標動作,
並再結標動作開始時將所有拍賣中的物品期限減少一天。
管理員必須先行決定每日結標時間,當程式啟動之後便會以 24 小時為週期不段重複的執行結標動作,而當設定時間到達 之後,程式會抓取資料庫 Table[賣方物品資料]中每一筆資料 的拍賣期限出來並減少一天,然後呼叫 EndSend.jsp 處理結
標程序。[圖 5.34]為 EndDeal.jsp 程式流程圖。
開始
將所有賣方物品資 料的拍賣期限日期
-1
賣方物 品資料
連結至 EndSend.jsp
結束
[圖 5.34 EndDeal.jsp 程式流程圖]
5.9.2 EndSend.jsp
此程式的主要功能是處理拍賣期限已到達的拍賣物品,
並且判斷這些拍賣物品是否已達成交易,再根據情況寄送不 同的郵件至買賣雙方。
當程式被 EndDeal.jsp 呼叫後便會逐一的去搜尋資料庫 Table[賣方物品資料]中所有的件數,然後抓出其中[拍賣期 限]為 0 者,此表示該樣拍賣物品已經超過拍賣者訂定的拍賣 期限,待找出該樣物品後程式會先偵測該物品的最高出價是
否有超過賣方所訂立的底價,若未超過底價則表示該項物品 雖然有人競標,但是最高競標者所出的價位卻未超過賣方所 訂立的底價,則該項物品便不算達成交易,此時程式會傳送 一封郵件至賣方會員的信箱,並告知賣方會員其所拍賣物品 的詳細情況,同時程式會將此筆資料從資料庫 Table[賣方物 品資料]中轉移至[完成交易紀錄],若最高出價高於底價則表 示此物品已經成功賣出,此時程式將會郵件至買賣雙方會員 的信箱,其中各包含對方的基本資料及連絡電話讓雙方能夠 進一步連絡並進行金錢與物品交易,然後程式會將此拍賣物 品資料從資料庫 Table[賣方物品資料]轉移至[完成交易紀 錄],並且在資料庫 Table[評價判斷表]中寫入雙方的資料,
此動作則是讓買賣雙方能夠再市場的評價功能中為雙方進行 此次交易的評價。[圖 5.35]為 EndSend.jsp 程式流程圖。
開始
設定javamail bean
設定javamail
bean
5.10 我的拍賣程式功能
5.10.1 MySell.jsp
在這一部分的子系統中分為 1 個程式,每一項程式的說 明及程式流程如下:
我的拍賣為列出使用者現在正在拍賣的物品,可以讓 使用者快速的瀏覽物品的狀況及出價等等詳細的紀錄,不用 每次都用搜尋功能來尋找自己所帶的物品。當使用者每次登 入時伺服器會給每個使用者一個唯一的 session,在登入時就 把登入者的帳號存進 session 中,所以系統便讀取此值,再 比對資料庫中每個賣方物品資料的欄位,列出物品的賣方為 此 session 中的帳號的值,已完成此功能。[圖 5.36]為 MySell.jsp 程式流程圖。
開 始
[圖 5.36 MySell.jsp 程式流程圖]
5.11 發言程式功能
在這一部分的子系統中有 5 個程式,說明及程式流程如 下:
5.11.1 GoodsShow.jsp
為展示物品詳細資料的的頁面,包含物品的各個詳細資 料有賣方帳號、物品名稱、物品數量、物品分類、賣方希望
為展示物品詳細資料的的頁面,包含物品的各個詳細資 料有賣方帳號、物品名稱、物品數量、物品分類、賣方希望