• 沒有找到結果。

21 應用範例程式解說

在文檔中 網路教學系統-堆疊與佇列 (頁 55-100)

第五章 系統實作

程式 3- 21 應用範例程式解說

sep_line++; /*再調整中界位置即完 ptr->front++; 成借用空間*/

} }

程式 3-21 應用範例程式解說

3-8-3 結論

本程式作法的優點特色在於堆疊與佇列兩者能動態支援對方 的儲位需求,利用累加或累減變數 sep_line,使堆疊滿時能向 佇列借用空間,佇列滿時能向堆疊借用空間,程式原理最大癥結 在環狀佇列是否有環繞至陣列前方,因此不管是堆疊滿或佇列滿 均需要檢查佇列是否已經環繞,釐清此問題後,程式便能一目了 然,容易的使用了。

第四章 系統分析及設計

一個系統在開發的過程中,如果沒有經過良好的規畫和設計,在 開發的過程中一定會遇到重重的困難。尤其是當系統中的各項不同性 質的功能,如果沒有規畫成專屬的子系統,那麼各項不同性質的功 能,可能會因為不當的功能相依性,造成系統在開發上,以及維護上 各種難以解決的問題。

因此,為了使我們的系統盡量達到功能模組化的目標,以提高系 統開發的效率,並且方便日後的維護,我們把主系統畫分為若干個子 系統。

圖 4-1 為主系統架構圖,共包含了四個子系統。

圖 4-1 主系統架構圖

4-1 主要教學內容

這是提供給一般註冊學生所使用的子系統,一共具有八個功 能。最主要的功能是 “教學內容及動畫呈現”,為最主要的教 學內容課程; “系統功能簡介” 向使用者介紹系統的目的以及 使用方式; “生活實例” 提供一些 Stack 以及 Queue 在應用上 的實例介紹; “題庫測驗”提供使用者學習評量的地方;系統 會記錄使用者的成績,供教師或管理者參考使用; “討論板”

為使用者詢問問題與意見交流的園地; “參考資料 ”提供使用 者額外的學習資訊; ”批評與指教 ”提供使用者聯繫系統管理 者以及教師的管道; ”登出系統” 則會強制清除 COOKIE 內容,

並保存使用者的使用時數等資料,以供管理系統參考使用。

圖 4–2 教學子系統架構圖

以下各小節內容針對圖 4-2 中主要的教學內容加以說明。

在使用者使用登入系統之後,進入迴轉選擇頁面,選下將 要使用的八項功能,其中一項【進入教學頁面】將給予使用 者學習有關堆疊與佇列原理相關互動式之學習網頁,其進入 教學架構如圖 4-3:

圖 4-3 進入教學之架構圖

接下來將分節個別介紹堆疊與佇列的教學流程,如下所 列。

4-1-1 堆疊(Stack)教學內容場景設計

於開頭動畫後選擇頁面中,選擇進入堆疊教學後將有一 連串以 FLASH 製作成之資料以供學習,讓使用者知道堆疊結 構、程式寫法等訊息,其內容如堆疊基本原理架構、資料加 入動作原理、資料取出動作原理、加入動作程式說明、取出 動作程式說明、…等等,並且有靜態(ARRAY 製作)、動態

(LINKED-LIST 製作)之分。

操作流程以左方鏈結列為主,鏈結列上半部以說明為主,

依照構想有動態與靜態之分,分別是以鏈結搭上框架(frame)

顯示;同理,鏈結列下半部的程式解說也是分有靜態與動態,

如圖 4-5。

接下來我們以圖 4-4 來說明堆疊教學頁面的架構:

圖 4-4 堆疊教學頁的架構圖

教學頁面的特色在網頁上能跟使用者有所互動,以分頁、分 步驟的方式來達成,若使用者對現有頁面有無法理解之原理,可 立即利用左方鏈結或該頁面之上一步來得到解說,於程式方面採 用 STEP BY STEP 的操作方式給予使用者說明(如圖 4-5),讓使 用者針對程式中細部程式碼能一覽無疑,達到看的懂、教的通的 地步,因此使用者更能在接下來使用題庫測驗自己的學習與認識 教學程度有多少。

圖 4-5 堆疊教學頁面的互動式操作(此例可按下一步進行步驟三)

4-1-2 佇列教學內容場景設計

於開頭動畫後選擇頁面中,選擇進入佇列教學後將有一 連串以 FLASH 製作成之資料以供學習,讓使用者知道佇列與 環狀佇列的結構、程式寫法等訊息,其內容如佇列基本原理

架構、資料加入動作原理、資料刪除動作原理、加入動作程 式說明、刪除動作程式說明、…等等,並且有靜態(ARRAY 製作)、動態(LINKED-LIST 製作)之分。

操作流程以左方鏈結列為主,鏈結列上半部以說明為 主,依照構想有動態與靜態之分,分別是以鏈結搭上框架

(frame)顯示;同理,鏈結列下半部的程式說明也是分有靜 態與動態,如圖 4-6 :

圖 4-6 佇列教學頁面的互動式操作

接下來我們以圖 4-7 來說明佇列教學頁面的架構:

在進入佇列教學頁後,可以選擇要作佇列教學或是程式說明。

若選擇要作佇列教學的話,在這邊,我們把教學內容分為 佇列與環狀佇列兩個部份,給使用者選擇,其中每個部份各

分為靜態(Array 製作),與動態(Linke-List 製作)。

若選擇要作程式說明的話,在這邊,我們也把內容分為佇 列與環狀佇列兩個部份,供使用者選擇其中每個部分亦分為 靜態(Array 製作)與動態(Linked-List 製作),架構如圖 4-7 所示。

圖 4-7 佇列教學頁的架構圖

4-1-3 題庫測驗規畫

題庫測驗是用來評量使用者學習效率最好的工具。但是傳統 的題庫測驗都有一個缺點,那就是題目內容、出題順序以及答案 的選擇項目都是固定不變的。因此使用者在經過多次測驗之後,

所得到的成績,就變得很不客觀了。因此,我們改變傳統的設計 方式,將題庫測驗的架構設計如下:

1. 題目依難易度來區分,總共分為 Lv1、Lv2 以及 Lv3 三個等級,

使用者在做答前,可以選擇題目的難度。但是在第一次接受題 庫測驗的時候,只能進行 Lv1 難度的測驗。

2. 每次由題庫中隨機選出不重複的十個題目,供使用者回答,並 且每個題目的答案選項順序為隨機出現,每次都有變化。

3. 使用者在答完十題以後,由系統來統計使用者的答題正確率。

依照使用者的答題正確率以及題目的難度等級,使用者可以獲 得固定的累積分數。同時,系統會判斷使用者該等級的累積分 數是否達到一定的標準以判定使用者的升級與否。如果升級,

那麼以後就可以進行難度更高一級的測驗。

4. 使用者每次的測驗結果,均會由系統存入資料庫中保存。以提 供使用者學習成效評估系統之用。

5. 為了提高使用者的參與感,並且增加測驗的趣味性,每個題目 在出題之後,均會開始進行倒數計時。時間一到,如果使用者 還沒作答,那麼該題算答錯,並且接著進行下一題。

表 4-1 為每個等級測驗的答對題數以及所得到的績分分配。

每個等級的題目每 10 題一定要答對 8 題以上,才能獲得積分。

Lv1 的題目比較容易,所以每次獲得的績分比較少,全對得 3 分,對 9 題 2 分,對 8 題 1 分,對 8 題以下就沒有積分。其它等級的配分情 形依此類推。

表 4-1 成績與累績分數分配表

測驗等級 答對題數 得到績分

10 題 3 分

9 題 2 分

Lv 1 8 題 1 分

10 題 5 分

9 題 3 分

Lv 2 8 題 1 分

10 題 5 分

9 題 3 分

Lv3 8 題 1 分

測驗的流程如圖 4-8。

一開始由系統向使用者說明測驗規則,接下來由使用者選擇題目的 等級。然後,由系統提示使用者準備開始接受測驗。此時,系統會準備 好要讓始用者回答的題目,接著一一將題目交給使用者回答,並且計算 使用者的答題率。最後再把使用者的答題結果輸出到使用者的螢幕上,

並同時將資料寫入資料庫中保存,以供下次測驗累計之用。

圖 4-8 題庫測驗流程圖

4-1-4 討論區

討論區是提供使用者討論問題和提供建議最方便的管道。由於這 個部份的系統資源使用率並不會很大,因此為了降低資料庫系統的負 擔,討論區的部份,我們使用功能較簡便的 CGI board 來進行修改,

使它的風格和介面能夠和我們的主系統一致,然後再進行整合。

4-2 訪客子系統

訪客子系統為教學子系統的功能簡化模組,主要的功能為:

提供未註冊使用者參考系統功能之用,並且讓訪客了解註冊成為 正式學員所能得到的服務為何。

圖 4-9 為訪客子系統架構圖。

圖 4-9 訪客子系統架構圖

4-3 註冊認證子系統

在我們的系統中,使用者依權限來 區分,一共分為四種不同 的等級;分別為 Guest、General User、Manager 和 Supervisor。

Guest 不須登入,但是只能參觀,不能使用大部份的教學資源。

圖 4-10 註冊認證子系統流程圖

4-4 管理者子系統

管理者子系統提供教師以及系統管理員使用,管理學生使用 者的註冊資料功能。除此之外,還可以參考系統根據資料庫中的 記錄所繪製的 ”學生個人學習成效條狀圖“ 來作為學習效率 的評估。

管理者子系統所提供的管理介面,對資庫料中的資料直接進 行管理因此不須要進入資料庫系統中進行一些繁雜的管理工 作。這對系統管理者以及教師來說,是一項相當方便的功能。

圖 4-11 為管理者子系統流程圖。

系統在判定使用者具有管理者權限以後,將開放管理系統供 登入的使用者使用。在管理系統中,管理者可以進行各項註冊使 用者資料的管理功能,以及使用者學習效率評估。

圖 4-11 管理者子系統流程圖

4-5 資料庫設計 mobile_phone_no varchar(10) //手機號碼

pwd_req_question varchar(1) //遺失密碼時,所要回答的問 題代號

pwd_req_ans varchar(20) //遺失密碼時,問題的解答 position varchar(1) //階級權限 1:Supervisor

// 2:Manager 3:General User visit_count(3) //登入次數

visit_time(6) //登入總時數

lv1_exam_count(3) //接受一級測驗次數

lv2_exam_count(3) //接受二級測驗次數 lv3_exam_count(3) //接受三級測驗次數 lv1_exam_grade(3) //一級測驗成績 lv2_exam_grade(3) //二級測驗成績 lv3_exam_grade(3) //三級測驗成績

主鍵(Primary Key) 為 user_id

為了增進資料庫的運作效能,必須將上面的資料表做正規化。

正規化的目的,在消除資料庫中,資料欄位的重複性和資料更動 時的不一致性。並且把資料分成多個邏輯上相關聯的群組。經過正規

正規化的目的,在消除資料庫中,資料欄位的重複性和資料更動 時的不一致性。並且把資料分成多個邏輯上相關聯的群組。經過正規

在文檔中 網路教學系統-堆疊與佇列 (頁 55-100)

相關文件