第二章 系統概述
2.6 工作分配與時程
1. 工作分配
(1).邱敏豪:負責書籍目錄,簡介與資料收集與程式撰寫。
(2).林昆賢:負責留言板、會員和管理員系統與程式撰寫。
(3).林逸書:負責購物車、倉儲管理與程式撰寫。
(4).鄭智維:負責線上租借、工讀生和管理員系統與程式撰寫。
2. 工作時程
第三章 系統分析與設計
3.1 系統分析的方法
1. 結構化分析 ( Structured Analysis )
結構化分析是一種傳統的系統開發科技,他經的起時間考 驗並且是一種容易了解的方法。結構化分析分成一系列的階 段,計畫、分析、設計、建置、實施與評估,這些階段被稱為 系統開發生命週期。結構化分析使用一套程序模組來圖型化的 形容一個系統。因為它專注於程序是如何資料轉變為有用的資 訊,所以結構化分析又被稱為是程序中心的科技。
(1)優點
a. 化整為零,把複雜的東西切割成細項。
b. 容易學習。
(2)缺點
a. 合成時會發生無法預期的狀況。
b. 系統建構於系統功能之上,功能一旦有變更,修改必 須要負出很大的成本。
c. 分析與設計間存在一條鴻溝。
d. 實體關係圖(ERD)轉換成資料庫模型時,會產生「語意
的喪失」。
e. 面對大系統時會大幅增加工作的複雜度。
System Requirements
Document Phase 3
Systems Design
System Design Specification
Phase 4 Systems Implementation
Complete functioning Information System
Phase 5 Systems Operation
and Support
Operational Information system Stop Project
Development
Stop Project Development
Stop Project Development
Stop Project Development Systems Request
2. 物件導向分析 ( Object-Oriented Analysis )
物件導向分析結合資料和對資料轉變為事物起作用的程 序,又被稱為物件。一個物件是一個類別的成員,類別是一個 相似物件的集合。物件將會繼承從類別或它所有的程序的特 性。在物件導向分析設計中,建立程序被稱為方法,能改變一 個物件的特性。一個訊息會從其他的物件要求特定的行為或資 訊。
(1)優點
a. 分析與設計使用相同的模型。
b. 開發時間較短。
c. 容易維護。
d. 降低成本。
e. 擴充性佳。
f. 概念簡單。
g. 軟體再用(Reusability) 。 (2)缺點
a. 物件程式執行較慢。
b. 技術人員缺乏。
圖 3.2 SDLC 物件導向分析流程圖
Operation and Support
Implementation Design
Analysis
Planning
3. 聯合應用開發 ( Joint Application Development )
一種聯合使用者(user)和開發人員(IT)的分析方法。使用者將 會全程參與整個開發過程。於開發階段,IT 人員將會詢問使用 者的需求,意見,以確定立新系統的需求和建構。
(1)優點
明確的目標,可減少開發過成上的錯誤,以提昇系統品質。
(2)缺點
開發成本過高,對於過大的開發過程只是個麻煩。
4. 快速應用開發 ( Rapid Application Development )
是一完整的方法,其包含四個階段的週期,著重在使用者 的需求(user input),標準化(prototype is modified),直到使用者滿 意與完成系統開發。
(1)優點
減少開發時間和成本。
(2)缺點
強調系統本身的技術層面(stress the mechanics of the system
itself),並不強調在商業需求(not emphasize the company
strategic business need),不利於整體性和長期性的目標。
3.2 採用 RAD 方法(Rapid Application Development)
由於我們的時間為一年半,為中短期計畫,加上系統是從無到有,
因此為了減少時間成本及成功建置網站,採用 RAD 方法,相較於 JAD,可更有機會完成目標,也是目前廣泛使用的系統分析方法。
RAD 包含需求規劃,使用者設計,建構,切換。
等四個階段。
1. 需求規劃(Requirements planning)
結合系統計畫的要素及系統生命週期的流程,使用者、管理者、
以及 IT 人員一起討論和同意商業的需求、企劃的範圍以及系統的需 求,需求規劃最後在關鍵的議題能獲得經營者的批准得以繼續而結 束。
2. 使用者設計(User design)
使用者和系統分析人員一起討論整個雛形,並且概要的描繪出整 個系統的流程、輸出、輸入。
3. 建構(Construction)
此階段著重在程式以及應用發展的工作上,在這裡使用者繼續的
參與且可以建議、改進系統的發展。
4. 切換(Cutover)
這是最後的一個階段,進行舊系統更換至新系統的動作,包括資 料轉換、測試、切換到新系統,直到整個系統可以開始運作。
圖 3.3 快速應用開發圖
Task:
‧ User,managers,and IT staff agree upon business needs,project scope,and system requirements
‧ Obtain approval to
‧ Unit,integration and system testing Task:
‧ Interact with users
‧ Build models and prototype
‧ Conduction
Design Construction
Cutover
0
3.4 圖 0
3.5 會員子系統 1.會員子系統功能圖
圖 3.6 會員子系統之功能分解圖
2.會員子系統流程圖 (1)註冊會員
註冊會員.php
Procedure1.1
顯示註冊結果 訊息.php
會員資料表.dbf
圖 3.7 註冊會員之系統流程圖
(2)登入
會員登入 介面.php
Procedure1.2.1
顯示登入結果 訊息.php 會員資料表.dbf
圖 3.8 登入之系統流程圖
(3)登出
圖 3.9 登出之系統流程圖
(4) 資料修改
圖 3.10 資料修改之系統流程圖
(5)查詢租借/消費紀錄
圖 3.11 查詢租借/消費紀錄之系統流程圖
(6)忘記密碼
圖 3.12 忘記密碼之系統流程圖 (7)點數儲值
點數卡儲值 介面.php
Procedure1.6
顯示儲值結果 訊息.php
會員資料表.dbf
點數卡 資料表.dbf
訊息資料表.dbf
圖 3.13 點數卡儲值之系統流程圖 (8)點選流
點選流介 面.php
Procedure1.7
會員資料表.dbf 會員資料表.dbf
3.6 書籍子目錄系統 1.書籍目錄子系統功能圖
圖 3.15 書籍目錄子系統之功能分解圖
2.書籍目錄子系統流程圖 (1)新書專區
進入新書 專區介面.php
Procedure 2.1
顯示新書專區 內容.php 書籍資料表.dbf
圖 3.16 新書專區之系統流程圖
(2)館藏圖書
圖 3.17 館藏圖書之系統流程圖
(3)熱門書籍
圖 3.18 熱門書籍之系統流程圖
(4)搜尋
進入搜尋介 面.php
Procedure 2.4
顯示 搜尋結果.php 書籍資料表.dbf
圖 3.19 搜尋之系統流程圖
(5)各種類別
進入各種類 別介面.php
Procedure 2.5
顯示 類別書籍.php 書籍資料表.dbf
圖 3.20 各種類別之子系統流程圖
(6)詳細書籍資料
進入書籍資 料介面.php
Procedure 2.6
顯示 書籍資料.php 書籍資料表.dbf
圖 3.21 詳細書籍資料之子系統流程圖
3.7 線上租借子系統 1. 線上租借系統功能圖
3.1 新增/刪除
預約書籍
3.2 續借書籍
3 線上租借
子系統
圖
3.22線上租借子系統之功能分解圖
2.
線上租借子系統流程圖
(1)
新增預約
(2)
刪除預約
刪除預約 介面.php
Procedure3.1.2
顯示刪除結果 訊息.php
租借資料表.dbf 租借資料表.dbf
圖 3.24 刪除預約之系統流程圖
(3)
續借書籍
圖 3.25 續借書籍之系統流程圖
3.8 購物車子系統 1. 購物車系統功能圖
圖 3.26 購物車系統之功能分解圖
2. 購物車子流程圖 (1)推薦購買
Procedure 4.1
顯示推薦購買 畫面.php 書籍資料表.dbf
圖 3.27 推薦購買之系統流程圖
(2)產品介紹
圖 3.28 產品介紹之系統流程圖
(3)加入購物車
圖 3.29 加入購物車之系統流程圖
(4)檢視購物車
3.30 檢視購物車之系統流程圖
(5)檢視購買紀錄
圖 3.31 檢視購買紀錄之系統流程圖
3.9
留言版子系統
1.留言板功能圖
圖
3.32留言板子系統之功能分解圖
圖
3.33新增留言之系統流程圖
(2)
查詢留言
(3)
統計留言
圖
3.35統計留言之系統流程圖
3.10 工讀生子系統 1.
工讀生子系統功能圖
6.2 修改
工讀生資料
6.4 線上請假 6.1
登入 登出
6 工讀生 子系統
6.3 觀看 排班表
圖
3.36工讀生子系統之功能分解圖
2.
工讀生子系統流程圖
(1)登入
圖
3.37登入之系統流程圖
(2)
登出
系統登出.php
Procedure6.1.2
顯示登出結果 訊息.php
圖
3.38登出之系統流程圖
(3)
修改工讀生資料
修改工讀生 資料界面.php
Procedure 6.2
顯示修改結果 訊息.php
工讀生 資料表.dbf 工讀生
資料表.dbf
圖
3.39修改工讀生資料之系統流程圖
(4)
觀看排班表
圖
3.40工讀生排班表之系統流程圖
3.11 管理員子系統 1.
管理員子系統功能圖
圖
3.41管理員子系統之功能分解圖
2.
管理員子系統流程圖
(1)登入
圖
3.42登入之系統流程圖
(2)
登出
系統登出.php
Procedure7.1.2
顯示登出結果 訊息.php
圖
3.43登出之系統流程圖
(3)
註冊新工讀生
註冊 新工讀生
.php
Procedure 7.2
顯示註冊結 果訊息.php
工讀生 資料表.dbf
圖
3.44註冊新工讀生之系統流程圖
(4)
線上排班
線上排班 界面.php
Procedure 7.3
顯示修改結果 訊息.php
工讀生排班 資料表.dbf 工讀生排班
資料表.dbf
圖
3.45線上排班之系統流程圖
(5)
預約控管
預約控管 界面.php
Procedure 7.4
顯示修改結果 訊息.php
租借資料表.dbf
租借資料表.dbf
書籍 資料表.dbf
圖
3.46預約控管之系統流程圖
(6)
租借記錄流程圖
圖
3.47租借記錄流程圖
(7)
點數卡控管
圖
3.48點數卡控管之系統流程圖
(8)採購預測
採購預測 介面.php
Procedure 7.7
顯示採購預測 結果.php 進貨資料表.dbf
圖
3.49採購預測之系統流程圖
(9)收支管理
收支管理 介面.php
Procedure 7.8
顯示收支管理 結果.php 租借資料表.dbf
購物車 資料表.dbf
進貨資料表.dbf
3.12 倉儲子目錄系統 1.倉儲子系統功能圖
圖 3.51 倉儲子系統之功能分解圖
2. 倉儲子系統流程圖 (1)書籍清單
圖 3.52 書籍清單之系統流程圖
(2)書籍庫存資料
Procedure 8.2
顯示書籍庫存 資料頁面.php 書籍資料表.dbf
進入書籍清單 頁面.php
圖 3.53 書籍庫存資料之系統流程圖 (3)編輯書籍
Procedure 8.3
顯示編輯書籍 訊息頁面.php 書籍資料表.dbf
進入編輯書籍 介面.php
書籍資料表.dbf
圖 3.54 編輯書籍之系統流程圖
(4)新增書籍
Procedure 8.4
顯示新增書籍 訊息頁面.php
書籍資料表.dbf 書籍資料表.dbf
進入新增書籍 介面.php
圖 3.55 新增書籍之系統流程圖
(5)進貨清單
'
圖 3.56 進貨清單之系統流程圖
第四章 系統建置
4.1 會員子系統
會員在註冊後享有會員的權力與服務,分為以下幾個子功能:
1.註冊會員 2.登入登出 3.資料修改
4.查詢消費/購物紀錄 5.忘記密碼
6.點數儲值 7.點選流
8.會員訊息功能
1.
註冊會員
(1)
輸入介面
圖
4.1.1a進入註冊介面
點選註冊會進入註冊資料填寫介面
register.php填寫基本資料。
(2)
演算法
if ( empty($ID) || empty($Password) || empty($Password2) || empty($SSN) ||
empty($Name) || empty($y) || empty($Phone1) || empty($Phone2) ||
empty($Email) || empty($Address)) { ShowMessage("星號欄位不可留白!");
$error=1; } //將狀態改為錯誤 // 2.檢查 ID 已有他人佔用
include("db.func");//設定連結到資料庫的帳號密碼和副程式
$sql = "Select * From member Where ID='$ID'";
$rows = GetRows( "soq", $sql );
$num = mysql_num_rows($rows);//找出符合的資料筆數 if ( $num <> 0 ) {
ShowMessage("此一「帳號」已被使用,請重新輸入!");
$error=1; }//將狀態改為錯誤 // 3.檢查 Email 是否已申請帳號
$sql = "Select * From member Where Email='$Email'";
$rows = GetRows( "soq", $sql );
$num = mysql_num_rows($rows); //找出符合的資料筆數 if ( $num <> 0 ) {
ShowMessage("此「Email」已申請帳號,請重新輸入!");
$error=1;} //將狀態改為錯誤 //4.檢查 Email 格式
if(!eregi("[_.0-9a-z-]+@([0-9a-z-]+.)+[a-z]{2,3}$",$Email)){
$error=1;} //將狀態改為錯誤 //5.檢查身分證字號是否已申請帳號
$sql = "Select * From member Where SSN='$SSN'";
$rows = GetRows( "soq", $sql );
$num = mysql_num_rows($rows);
if ( $num <> 0 ) {
ShowMessage("此「身分證字號」已申請帳號,請重新輸入!");
$error=1;} //將狀態改為錯誤 //6.檢查帳號是否過短
if (strlen($ID)<=7){ShowMessage("帳號太短");
$error=1;} //將狀態改為錯誤 //7.檢查密碼是否過短
if (strlen($Password)<=5){ShowMessage("密碼太短");
$error=1;} //將狀態改為錯誤 //8.檢查兩次輸入的密碼是否一致 if ( $Password <> $Password2 ) {
ShowMessage("兩次輸入的密碼不一致!");
$error=1;} //將狀態改為錯誤 //9.檢查身分證字號長度是否正確
if ((strlen($SSN)<=9) || ($SSN[1]<>"1" && $SSN[1]<>"2")){
ShowMessage("身分證字號錯誤");
$error=1;} //將狀態改為錯誤 //10 檢查生日格式是否正確
$yr=date("Y");//先取現在的年份
$yy=$yr-120;//取 120 年前
if ($y<$yy || $y>date("Y")){//生日限定在 120 歲之間 ShowMessage("年份錯誤,年介於 $yy 到 $yr 之間");
$error=1;} //將狀態改為錯誤
if($m==00){//預設$m=00,若$m==00 則代表沒填月份資料 ShowMessage("請填寫月份資料");
$error=1;} //將狀態改為錯誤
if($d==00){ //預設$d=00,若$d==00 則代表沒填日期資料 ShowMessage("請填寫日期資料");
if (($m==02 && ($d==31 || $d==30)) || ($m==04 && $d==31) || ($m==06
if(($m==02 && $d==29) && (($yo<>0) || ($yx==0)) ){
ShowMessage("日期錯誤 $y 年,$m 月沒有 $d 這天喔,請確實填寫!");
if (($CreditID<>null) && (strlen($CreditID)<=15)){
ShowMessage("信用卡卡號長度錯誤");
$error=1;} //將狀態改為錯誤
if($error=="0"){//如果$error 都沒被改成 1 就代表符合規格
$sql = "Insert Into member( ID, Password, SSN, Name, Sex, Birthday, Phone, Cellphone, Email, Address, Startdate, CreditID) Values ( '$ID',
'".md5($Password)."', '$SSN', '$Name', '$Sex', '$Birthday', '$Phone', '$Cellphone', '$Email', '$Address', '$Startdate', '$CreditID')";
mysql_query($sql);// 同時對密碼做加密資料寫入會員資料庫
ShowMessage("恭喜您註冊成功了!!!!!資料已經 E-mail 至您的電子信箱");
mail("$Email","SOQ 註冊通知","
SOQ 數位租書館:
訊息為系統發出...請勿回覆此信箱!","From: SOQ 數位租書");
}
(3)
輸出介面
若註冊失敗則顯示註冊失敗的原因訊息
圖
4.1.1c註冊失敗訊息
若全部條件都符合則顯示註冊成功訊息,並
Email至註冊信箱。
圖
4.1.1e註冊成功信件
2.登入登出
(1)
輸入介面
圖
4.1.2a登入介面
輸入帳號密碼後點選登入會把變數交給
login2.php去作判斷。
(2)
演算法
帳號 $ID
密碼 $Password
setcookie(UserID,$ID,time()+86400);//設定 cookie 有效為一天
$enPassword=md5($Password);//對密碼做加密動作
setcookie(UserPWD,$enPassword,time()+86400); //設定 cookie 為一天
include("db.func");//設定連結到資料庫的帳號密碼和副程式
$sql = "Select * From member Where ID='$ID' &&
Password='".md5($Password)."'";//直接比對密碼加密後是否相等
if ( $num <> 0 ) {
$sql = "Select Logintime From member Where ID='$ID' &&
Password='".md5($Password)."'";
$db = GetRows( "soq", $sql );
$value = mysql_fetch_row($db);
//從紀錄登入時間的欄位抓取上次登入的時間資料 ShowMessage("會員 $ID 歡迎您! <br>
您上次的登入時間是 $value[0] <br>
系統將在 10 秒後自動回到選單頁面");
}
else{//員工和會員用同一個登入介面,所以同時也判斷是不是員工登入
$sql = "Select * From employees Where eID='$ID' &&
ePassword='".md5($Password)."'";
$rows = GetRows( "soq", $sql );
$num = mysql_num_rows($rows);
if ( $num <> 0 ) {
ShowMessage("登入成功!!!!! $ID 歡迎您!<br>
系統將在 10 秒後自動回到選單頁面");
若登入資料成功則顯示成功訊息,並顯示上次登入的時間。
圖
4.1.2c登入成功訊息 點選返回首頁或等待
10秒後自動跳回首頁。
圖
4.1.2d登入後的首頁
(4)
輸入介面
圖
4.1.2e登出介面
點選登出按鈕後系統執行登出動作。
(5)
演算法
setcookie("UserID");
setcookie("UserPWD");
//清除 COOKIE
(3)
輸出介面
3.
資料修改
(1)
輸入介面
圖
4.1.3a進入資料修改介面
點選會員功能的資料修改會進入修改基本資料介面
emend.php。
圖
4.1.3b資料修改介面
(2)
演算法
include("db.func");//先判斷是否已經登入,必須登入才能修改資料
$sql = "Select * From member Where (ID='$UserID' && Password='$UserPWD')
|| (ID='$UserID' && SSN='$UserSSN' && Email='$UserEmail')";
$rows = GetRows( "soq", $sql );
exit;
if ( empty($Password) || empty($Password2) || empty($Name) || empty($Phone) ||
empty($Email) || empty($Address)) { ShowMessage("星號欄位不可留白!");
$error=1;}
// 檢查密碼是否過短 if (strlen($Password)<=5){
ShowMessage("密碼太短");
$error=1;}
// 檢查兩次輸入的密碼是否一致 if ( $Password <> $Password2 ) {
ShowMessage("兩次輸入的密碼不一致!");
$error=1;}
// 檢查信用卡長度是否錯誤
if (($CreditID<>null) && (strlen($CreditID)<=15)){
ShowMessage("信用卡卡號長度錯誤");
$error=1;}
//寫入更新資料 if($error=="0"){
include("db.func");
$sql = "Select * From member Where ID='$UserID'";
$rows = GetRows( "soq", $sql );
mysql_query("set names big5");
$sql = "UPDATE member SET Password='".md5($Password)."', Name='$Name', Phone='$Phone', Cellphone='$Cellphone', Email='$Email', Address='$Address', CreditID='$CreditID' Where ID='$UserID'";
mysql_query($sql);
(3)
輸出介面
若修改失敗則顯示失敗的原因訊息。
圖
4.1.3c資料修改失敗訊息
若修改成功則顯示成功訊息並將資料庫更新。
圖
4.1.3d資料修改成功訊息
4.
查詢租借
/購物紀錄
$sql = "Select * From member Where ID='$UserID' &&
Password='$UserPWD'";
$result = GetRows( "soq", $sql );
mysql_query("set names big5");
$num = mysql_num_rows($result);
if ( $num <>0 ){
$sql = "Select * From borrow where ID='$UserID'";
$result = GetRows( "soq", $sql );
$num = mysql_num_rows($result);
//印出租借資料
<?
while($num > 0){
$value = mysql_fetch_array($result, MYSQL_BOTH);
?>
<tr><td align='center'><?=$value["Bookname"]?></td>
<td align='center'><?=$value["Borrowday"]?></td>
<td align='center'><?if($value["Deadline"] ==
'0000-00-00'){echo$value["Freezingday"];}else{echo$value["Deadline"];}?
></td>
<td align='center'><?=$value["Renewal"]?></td>
<td align='center'><?if($value["Recede"]){echo"已歸還
";}elseif($value["Freezingday"] == '0000-00-00'){echo"租借中";}else{echo"預 約中";}?></td></tr>
(3)
輸出介面
圖
4.1.4b租借紀錄介面
(4)
輸入介面
圖
4.1.4c進入購物紀錄介面
點選購物紀錄查看資料。
(5)
演算法
//先判斷是否已經登入,未登入為會員無法查詢紀錄 include("conn.func");
$link = db_connect();
$query = "select * from member where ID='$UserID' &&
Password='$UserPWD'";
mysql_query("set names big5");
$result = mysql_query($query,$link);
$row = mysql_fetch_row($result);
$num_results = mysql_num_rows($result);
if ($num_results <> 0 ){
$number = $row[0];
}
else{
ShowMessage("尚未登入或帳號密碼錯誤!!!!!");
exit;
}
echo '<table width = \"100%\" border = 0><tr>';
//印出個人購物資料 if($num_results == 0){
ShowMessage("你沒有購買任何書籍的紀錄!");
exit;
} else{
for ($i=0;$i<$num_results ;$i++){
echo '<td>';
echo '</tr></table>';
mysql_free_result($result);
mysql_close($link);
(6)
輸出介面
圖
4.1.4d購物紀錄介面
5.
忘記密碼
(1)
輸入介面
圖
4.1.5a進入忘記密碼介面
點選忘記密碼會進入忘記密碼系統填寫確認單介面。
圖
4.1.5b忘記密碼介面
(2)
演算法
會員帳號
$ID
身份證字號
$SSN// 檢查必要欄位是否空白
if ( empty($ID) || empty($SSN) || empty($Email)) {
$rows = GetRows( "soq", $sql );
$row = mysql_fetch_row($rows);
$num = mysql_num_rows($rows);
if ( $num <> 0 ) {
ShowMessage("已確認您的身份...請至資料修改頁面修改個人資料密碼");
} else{
ShowMessage("輸入資料錯誤!!!!!");
exit;
}
(3)
輸出介面
若資料輸入錯誤或欄位空白則會顯示失敗訊息。
圖
4.1.5c忘記密碼錯誤訊息
若資料輸入正確則會顯示正確訊息並給予修改密碼的權限。
圖
4.1.5d忘記密碼成功訊息
6.
點數儲值
$sql = "Select * From member Where (ID='$UserID' && Password='$UserPWD')
|| (ID='$UserID' && SSN='$UserSSN' && Email='$UserEmail')";
$rows = GetRows( "soq", $sql );
mysql_query("set names big5");
$num = mysql_num_rows($rows);
if ( $num <> 0 ) {
$sql = "Select point From member Where (ID='$UserID' &&
Password='$UserPWD') || (ID='$UserID' && SSN='$UserSSN' &&
//判斷點數是否以被使用或錯誤
$sql = "Select * From point Where PointID='$PointID' && exist='1'";
$rows = GetRows( "soq", $sql );
$num = mysql_num_rows($rows);
if ( $num <> 0 ) {
//有找到符合的序號且尚未被使用 ShowMessage("儲值成功!!");
//顯示儲值金額
$sql = "Select Value From point Where PointID='$PointID'";
$rows = GetRows( "soq", $sql );
$pointvalue = mysql_fetch_row($rows);
echo("您儲值了 $pointvalue[0] 元<br>");
//對會員點數作加總
$sql = "Select point From member Where (ID='$UserID' &&
Password='$UserPWD') || (ID='$UserID' && SSN='$UserSSN' &&
Email='$UserEmail')";
$rows = GetRows( "soq", $sql );
$value = mysql_fetch_row($rows);
$allvalue = $value[0]+$pointvalue[0];
//更新會員點數資料
$sql = "UPDATE member SET point='$allvalue' Where (ID='$UserID' &&
Password='$UserPWD') || (ID='$UserID' && SSN='$UserSSN' &&
Email='$UserEmail')";
mysql_query($sql);
echo("您的點數卡餘額為 $allvalue 元");
}
儲值序號正確儲值成功顯示成功訊息。
圖
4.1.6d點數儲值成功訊息
7.
點選流
(1)
輸入介面
圖
4.1.7a進入點選流介面
點選任何一本書籍或者任何一種類的書籍分類都會累計點選流。
setcookie(cook8,$cook7,time()+86400);
$sql = "select * from book where ISBN='$isbn'";
mysql_query("set names big5");
$result = mysql_query($sql,$link);
$row = mysql_fetch_array($result, MYSQL_BOTH);
//點進書籍會根據這本書是哪個種類的書籍對該種類的點閱次數做加總 if (($row[2]=="職場漫畫"&& $row[3]=="A") || ($row[2]=="武俠小說"&&
$row[3]=="B") || ($row[2]=="時尚雜誌"&& $row[3]=="C")) $k=1;
if (($row[2]=="愛情文藝"&& $row[3]=="A") || ($row[2]=="文藝小說"&&
$row[3]=="B") || ($row[2]=="財經雜誌"&& $row[3]=="C")) $k=2;
if (($row[2]=="運動遊戲"&& $row[3]=="A") || ($row[2]=="科幻小說"&&
$row[3]=="B") || ($row[2]=="汽車雜誌"&& $row[3]=="C")) $k=3;
if (($row[2]=="武俠類別"&& $row[3]=="A") || ($row[2]=="輕小說"&&
$row[3]=="B") || ($row[2]=="科技雜誌"&& $row[3]=="C")) $k=4;
if (($row[2]=="恐怖靈異"&& $row[3]=="A") || ($row[2]=="網路小說"&&
$row[3]=="B"))$k=5;
if (($row[2]=="科幻魔法"&& $row[3]=="A") || ($row[2]=="恐怖小說"&&
$row[3]=="B")) $k=6;
if (($row[2]=="輕鬆爆笑"&& $row[3]=="A") || ($row[2]=="推理小說"&&
$row[3]=="B")) $k=7;
if (($row[2]=="動作冒險"&& $row[3]=="A") || ($row[2]=="社會小說"&&
$row[3]=="B")) $k=8;
if (($row[2]=="成人漫畫"&& $row[3]=="A") || ($row[2]=="其他類型"&&
$row[3]=="B")) $k=9;
if ($row[2]=="歷史漫畫" && $row[3]=="A" )$k=10;
if ($row[2]=="溫馨勵志" && $row[3]=="A" )$k=11;
if ($row[2]=="其他類型" && $row[3]=="A" )$k=12;
$com="$row[3]$k";//類別加屬性合併存到欄位 ex:A6 為科幻魔法類漫畫
$sle = "Select * From member Where (ID='$UserID' && Password='$UserPWD')
|| (ID='$UserID' && SSN='$UserSSN' && Email='$UserEmail')";
$result2= mysql_query($sle,$link);
$value = mysql_fetch_array($result2, MYSQL_BOTH);
$add=$value[$com]+1;
$soq2 = "UPDATE member SET $com='$add' Where ID='$UserID'";
(3)
輸出介面
圖
4.1.7b點選流介面
8.
會員訊息
(1)
輸入介面
圖
4.1.8a進入會員訊息介面
(2)
演算法
if($rowt[mesonoff]=="1"){//先判斷使用者是否開啟接收訊息的功能
$datetime=date("Y-m-d H:i:s",time()+28800);
$sql = "Insert Into message( ID, title, memo, date) Values ( '$UserID', '標題', '訊 息內容', '$datetime')";
mysql_query($sql);
}
//關閉訊息接收功能
//刪除訊息
$sql = "UPDATE message SET exist='0' Where date='$date' && ID='$UserID'";
mysql_query($sql);
//只是把欄位狀態從 1 改成 0…並不是真的把這筆訊息砍掉
(3)
輸出介面
圖
4.1.8b會員訊息介面
4.2 書籍目錄子系統
1.
新書專區介面
(1)輸入介面圖 4.2.1a
進入新書專區介面
(2)演算法//判斷新書
$j=0;
for($i=0;$i<mysql_num_rows($result);$i++){
$nowday=date("Y-m-d");
$comeday = mysql_result($result,$i,10);
$y=($nowday[0]-$comeday[0])*1000+($nowday[2]-$comeday[2])*10+$nowday [3]-$comeday[3];
$m=($nowday[5]-$comeday[5])*10+$nowday[6]-$comeday[6];
$d=($nowday[8]-$comeday[8])*10+$nowday[9]-$comeday[9];
if($y == 0 && $m == 0 && $d <= 30){
$counter[$j]=$i;
$j=$j+1;
} }
(3)輸出介面
圖
4 .2.1b顯示新書
(4)功能說明:藉由現在時間減掉進貨日期,判斷其是否再 30 天之內進貨的,如果 是則為新書。
2.
館藏圖書介面
(1)輸入介面圖 4 .2.2a
進入館藏圖書介面
(2)演算法$j=0;
for($i=0;$i<mysql_num_rows($result);$i++){
$nowday=date("Y-m-d");
$comeday = mysql_result($result,$i,10);
$y=($nowday[0]-$comeday[0])*1000+($nowday[2]-$comeday[2])*10+$nowday[3]-$
comeday[3];
if($nowday[6]>=$comeday[6]){
$m=($nowday[5]-$comeday[5])*10+$nowday[6]-$comeday[6];
} else{
$m=($nowday[5]-$comeday[5])*10+$comeday[6]-$nowday[6];
}}
else{
if($nowday[6]>=$comeday[6]){
$m=($comeday[5]-$nowday[5])*10+$nowday[6]-$comeday[6];
} else{
$m=($comeday[5]-$nowday[5])*10+$comeday[6]-$nowday[6];
}}
$d=($nowday[8]-$comeday[8])*10+$nowday[9]-$comeday[9];
if($y > 0 || ($y == 0 && $m > 1) || ($y == 0 && $m == 1 && $d > 0)){
$counter[$j]=$i;
$j=$j+1;
}}
(3)輸出介面
圖 4 .2.2b
顯示館藏圖書
(4)功能說明: 藉由現在時間減掉進貨日期,判斷其是否已經進貨超過 30 天,如
3.
熱門書籍介面
echo $count[$i];?><br><?
}
(3)輸出介面
圖 4 .2.3b
顯示熱門書籍
(4)功能說明:透過租借紀錄以及購買紀錄,找出借閱以及購買最多的前五本書為 熱門書籍。
4.
搜尋書籍
(1)輸入介面 a. 普通搜尋
圖 4 .2.4a
普通搜索介面
b. 進階搜尋
圖
4 .2.4b進階搜索介面
(2)演算法
//判別搜尋的條件 if($D1 == 1){//書籍名稱
@ $query = "select * from book where Bookname like '%$bdata%' && useable = 'A' GROUP BY `bookname`";
}
if($D1 == 2){//作者
@ $query = "select * from book where Amorist like '%$bdata%' && useable = 'A' GROUP BY `bookname` ";
}
if($D1 == 3){//ISBN
@ $query = "select * from book where ISBN like '%$bdata%' && useable = 'A' GROUP BY `bookname`";
}
if($D1 == 4){//出版社
@ $query = "select * from book where Press like '%$bdata%' && useable = 'A'
(3)輸出介面
圖 4 .2.4c
顯示搜索結果
(4)功能說明:透過選擇,D1 隨著選擇條件而改變其值,並用以判斷選擇何種條 件,以此條件 select 資料庫符合條件之內容。
5.
各種類別介面
(1)輸入介面圖 4 .2.5a
各種類別介面
圖 4 .2.5b
點選類別
(2)演算法
<p class="style3"><span class="style4">漫畫<br>
<a href="show.php?type=職場漫畫" target="mainFrame">1.職場漫畫</a><br>
<a href="show.php?type=愛情文藝" target="mainFrame">2.愛情文藝</a><br>
<a href="show.php?type=運動遊戲" target="mainFrame">3.運動遊戲</a><br>
<a href="show.php?type=武俠類別" target="mainFrame">4.武俠類別</a><br>
<a href="show.php?type=恐怖靈異" target="mainFrame">5.恐怖靈異</a><br>
<a href="show.php?type=科幻魔法" target="mainFrame">6.科幻魔法</a><br>
<a href="show.php?type=輕鬆爆笑" target="mainFrame">7.輕鬆爆笑</a><br>
<a href="show.php?type=動作冒險" target="mainFrame">8.動作冒險</a><br>
<a href="show.php?type=成人漫畫" target="mainFrame">9.成人漫畫</a><br>
<a href="show.php?type=歷史漫畫" target="mainFrame">10.歷史漫畫
</a><br>
<a href="show.php?type=溫馨勵志" target="mainFrame">11.溫馨勵志
</a><br>
<a href="show.php?type=其他類型" target="mainFrame">12.其他類型
</a><br>
小說 <br>
<a href="show.php?type=武俠小說" target="mainFrame">1.武俠小說</a><br>
<a href="show.php?type=文藝小說" target="mainFrame">2.文藝小說</a><br>
<a href="show.php?type=科幻小說" target="mainFrame">3.科幻小說</a><br>
<a href="show.php?type=輕小說" target="mainFrame">4.輕小說</a><br>
<a href="show.php?type=網路小說" target="mainFrame">5.網路小說</a><br>
<a href="show.php?type=恐怖小說" target="mainFrame">6.恐怖小說</a><br>
<a href="show.php?type=推理小說" target="mainFrame">7.推理小說</a><br>
<a href="show.php?type=社會小說" target="mainFrame">8.社會小說</a><br>
<a href="show.php?type=其他小說" target="mainFrame">9.其他小說</a><br>
<a href="show.php?type=其他小說" target="mainFrame">9.其他小說</a><br>