第二章 系統分析與設計
2.1 系統分析的方法
2.1.5 選擇使用.NET Framework
NET Framework 是 .NET 平台的程式設計模型,用來建置、部署 與執行 Web 應用程式、智慧型用戶端應用程式,以及 XML Web Service。它負責多項配置作業,讓開發人員可以著眼於撰寫應用程 式的商業邏輯程式碼。.NET Framework 包含 Common Language Runtime 與類別程式庫。.NET Framework 提供了.NET 提案技術的基 礎。廣泛來講,Framework 是由型別、類別、服務、工具…等所組成 的新的.NET 平台。
從開發者的角度來看,.NET Framework 即是.NET。然而,這只是 部分事實。微軟在.NET 提案中所提供的願景是由企業目標、XML Web 服務、HailStorm 與延伸微軟現有的.NET 伺服器的功能、新一代的互 通性軟體…等所組成的。從這個角度來看,.NET Framework 只提供 了核心技術與開發平台,讓.NET 可以達到這些企業目標。
․Common Language Runtime 會執行各項 Run-time 服務,例如語言 整合、安全性強制,以及記憶體、處理序與執行緒管理。另外,Common Language Runtime 在開發時間也扮演了重要的角色。例如,當部 份功能 (如保留期管理、強式類型命名、跨語言例外處理、動態繫 結等等) 減少開發人員必須撰寫的程式碼數量的時候 (以便將商 業邏輯轉為可重複使用元件)。
圖 2-1 .NET Framework 架構圖
類別程式庫
基底類別提供標準的功能,例如輸入/輸出、字串操作、安全性管理、
網路通訊、執行緒管理、文字管理、使用者介面設計功能與其他功能。
Microsoft ADO.NET 資料類別支援永續性資料管理,並且包含經由標 準 SQL 介面操作永續性資料存放區的 SQL 類別。XML 類別啟用 XML 資料操作與 XML 搜尋與轉譯。Microsoft ASP.NET 類別支援 Web 應 用程式開發與 XML Web Service。Windows Forms 類別支援以 Windows 為基礎的智慧型用戶端應用程式的開發。這些類別程式庫提 供了通用而一致的開發介面,且這個介面適用於所有 .NET
Framework 支援的語言。
快速開發
․.NET Framework 的多語言功能讓開發人員可以使用最適合用於指 定工作的程式設計語言,並且在單一應用程式中組合語言。另外,
有超過 20 種商用與學術用的程式設計語言宣告了支援 .NET Framework。
․以元件為基礎的、不需配置的 .NET Framework 設計使開發人員可 以撰寫較少的程式碼。範例 .NET Pet Shop (Sun 的 .NET 版最佳 實務練習範例應用程式,也就是 Java Pet Store) 與 Java 2 Enterprise Edition (J2EE) 版本提供相同的功能,但是只用了 J2EE 版本三分之一的程式碼。
圖 2-2 .NET 效能圖 圖 2-3 .NET VS J2EE
精進的運算作業
․在 .NET Pet Shop (Sun 的 .NET 版 Java Pet Store 實作) 之 中,速度超過 J2EE 版本 28 倍,而可以同時服務 6 倍的使用者,
但是只需要六分之一的 CPU 使用量。
․比起前一個 Active Server Pages (ASP) 技術,.NET Framework 提 供顯著的效能與可擴充性的的益處。 所有的結果都以 Windows 2000 Advanced Server 為基礎。Microsoft ASP 與 Microsoft ASP.NET 在 SQL Server 2000 資料庫上執行。
為何使用.NET,而不是 J2EE?
.NET 提供了許多比 J2EE 好的優點,這些優點從我們的角度來看,讓它 成為比較理想的開發企業應用程式的平台。
․.NET 提供了多種語言可以作用在相同的類別架構上,J2EE 只提供單 一語言﹣JAVA。也許最終許多.NET 開發者會發現只有特定的.NET 語 言﹣如 C#,才能提供最好的程式設計的優點,但他們可以有選擇性,
讓不同語言背景的開發者可以開始在.NET 中進行程式設計。
․.NET 朝向“開放的程式碼"(Open Source)邁進了一大步,這是 J2EE/JAVA 原件長久的做法。顧名思義,J2EE 與 JAVA 是建立在開放 的標準之上的,因此,可以嘉惠更廣大的開發者,.NET 是建立在、並 緊密地與諸如:XML、HTTP、SOAP…等整合在一起。J2EE 並沒有實作 SOAP、而.NET 有。這讓 J2EE 所謂的“開放標準"(Open Standard)
哲學有點諷刺,因為 SOAP 是一個已經很確定的標準。
․.NET 元件有內建 XML 諸如訊息、介面輸出…等工作的支援,J2EE 元 件(Enterprise Java Beans)則沒有。
․因為.NET 使用 XML 與 SOAP,所以比 J2EE 保有更多關於互通性的承若。
2.3 系統概觀
2.3.3 系統架構圖 1-2A:管理系統
圖 2-6 系統架構圖 1-2A 2.3.4 ADO.NET 架構
圖 2-7 資料庫架構圖
[查詢]系統
學生[課表]查詢 學生[選課]查詢 學生[人數]查詢
瀏覽器(Client 端)
DataTable(DateGrid) Response.Write
記憶體
DataSet DataReader
DataAdapter
Command
Connection
資料庫
2.4 系統開發環境 系統平台
我們 E-learning 系統是以 ASP.NET 平台所開發,APS.NET 具有下列 優點:
(1) 功能完善的核心:
.NET Framework 提供了完整的物件導向核心,可使用數種程式語言 開發應用程式,並且有功能強大的執行環境,提供了跨語言的執行平
Visual Studio.net 為微軟新一代用來開發.NET 平台上程式的開發 工具。自動化和視覺化的設計工具,使得程式設計師能專心地撰寫程
2.SQL Server 2000 在中小型資料庫上的表現卓越。基於以上幾點,
所以我們決定採用 SQL Server 2000 做為我們的資料庫管理系統。
系統硬體:
CPU:AMD XP2400+(2GHz) 記憶體:DDR333 512MB 系統軟體:
OS:Windows XP sp1 英文版
Database Server:SQL server 2000 Developer Edition 系統開發軟體:Microsoft Visual Studio .NET 2003
2.5 子系統需求與架構 2.5.1 登入子系統 需求定義:
1.要具有登入介面,能夠檢查使用者的帳號密碼。
2.使用者登入後,要能透過 Session 保留登入資訊。
3.要能夠維護權限種類、系統資料、使用者與群組資訊…。
4.要能有紀錄(Log)功能。
5.能夠將這個設計好的物件 LoginObject,給所有要整合的子系統用。
登入子系統流程圖:
圖 2-8 登入子系統流程圖 學生資料表 :
欄位名稱 型態 說明
學號 String PK
姓名 String 學生姓名
科別 String 學生所在科系
身分證字號 String
性別 String 男/女
聯絡電話 String 手機,家中電話
表 2-1 學生資料表
開始
輸入學號 與密碼
是否 正確
進入系統
結束
否
是
2.5.2 課表查詢子系統 資料庫結構
針對課表查詢的資料結構如下,我們要在 SQL server 中設計兩個資 料表,分別是:
欄位名稱 型態 說明
Uid Int32 PK
科目編號 String 識別科目
科目名稱 String
學分 Int32
必選修 String
星期與節次 String
表 2-2 課表查詢子系統資料表 1
選課資料表:
欄位名稱 型態 說明
選課序號 Int32 PK
學號 String
科目編號 String
表 2-3 課表查詢子系統資料表 2 課程連結表 :
欄位名稱 型態 說明
科目名稱 String PK
科目連結 String
表 2-4 課表查詢子系統資料表 3 功能需求:
1. 將個人課表讀出放入表格顯示 2. 顯示該課程的連結
2.5.2.1 課程連結
退選作業流程圖 :
For .. .next 利用迴圈清點連線到此系統的使用者 Tmp+onlineuser 將紀錄連線使用者資訊指派給 onlineuser 存放至
apllication 物 Applition(totalusers") 比較 num 跟 applition(“totaluser")不同表
示有人離線
下拉式清單線上人數表 For..next 來新增線上名單讀取 application(“onlineuser")(i)
<meta>標籤 設定自動更新時間為 refreshtime Dropdownlist 用來顯示線上人數跟名單
表 2-5 顯示線上名單資料表 線上傳訊部份
Method or Property 功能 備註
Application(usermsg) 存放傳送給某線上使用者的訊息
Openchat() 用來傳送用戶端指令碼至瀏覽
器,使用 javascript 的 window.open()來開啟 Application(“showmsg") 呼叫<showmsg.aspx>將
application(“showmsg")的值 顯示出來同時顯示[關閉視窗]及 [回覆訊息]兩個按鈕
讀取使用者輸入名稱加上 msg
For..next 利用迴圈清點所有連線至此系統
的使用者
Idletime 清點 onlineuse 中使用者最近一 次的存取時間,如果超過
idletime 表示已經離線,則清除 其存取時間及
application(usermsg)的值否則 就放入 tmp 同時線上人數 num+1 Application(totaluser) 比較 num 與
application(totaluser)如果不
Openchat() 此程序先將 session(receiver) 設定為下拉式清單中選擇的收訊 者名稱,利用<calling.aspx>判 斷該傳訊給誰,然後傳送用戶端 指令碼至瀏覽器,用戶端指令碼 使用 javascript 的
windows.open()來開啟
<calling.aspx>
表 2-16 線上傳訊資料表
2.5.7 聊天室子系統
程式中會使用的共用類別物件和幾個 Application 變數、幾個 Session 變數分別如下:
變數名稱 意義 Ex:
Session(“UserName") 紀錄使用者名稱 Rocky Application(“Rocky") 紀錄使用者性別 男生 Application(使用者名稱
&"_LastTalkTime"
紀錄使用者圳后發言時 間
2003/10/27 下午 05:10
表 2-7 聊天室子系統類別物件表 1
聊天室核心程式都寫在 ChatObject 這個類別物件中,下列是物件的 每一個 Method:
Method or Property 功能 備註
Message() as String 聊天室內容文字 全域變數
Users as String 使用者清單 全域變數
GetUserID(ByVal WebForm As UI.Page)As String
取得使用者 ID 以下為 Method
SetUserSex(ByVal Sex As String,ByVal As UI.Page As String)
紀錄使用者性別
GetUserSex(ByVal UserName As String,ByVal WebForm As UI.Page) As String
取回使用者性別
GetHowManyUsers() As Integer 取得目前共有多少使用者 GetAllUsers() As String 取得現行所有成員
AddUser(ByVal UserName As String) 新增一個聊天是使用者 Login(BuVal UserName As
String,ByRef WebForm As UI.Page)
登入一個使用者
Logout(ByRef WebForm As UI.Page) 登出現行使用者 Logout(ByVal UserName As
String,ByRef WebForm As UI.Page)
登初特定使用者
CheckUserExist(ByVal UserName As String)As Boolean
檢查同名使用者是否已經存在
AddMessage(ByVal msg As
StringmByVal WebForm As UI.Page)
新增一個訊息
ShowMessage(ByRef As UI.Page) 顯示訊息用
表 2-8 聊天室子系統類別物件表 2
2.5.9 手機簡訊發送子系統
資料庫結構:
在 SQL server 中設計三個資料表如下:
資料表名稱 功能
討論區_文章 儲存每一篇文章
討論區_版面 儲存系統內的版面
討論區_附加檔案 儲存文章的附加檔案
表 2-10 討論區子系統資料表 1
下列是各個資料表欄位結構說明 討論區_版面資料表:
欄位名稱 型態 說明
Uid Int32 PK
BoardName String 版面名稱
BoardMemo String 版面備註
CreateDateTime DataTime 版面建立時間
表 2-11 討論區子系統資料表 2 討論區_附加檔案資料表:
欄位名稱 型態 說明
Uid Int32 PK
FileName String 檔案名稱
FildBody Byte[] 檔案內容
IdentificationNumb er
Single 識別碼
SaveDateTime DateTime 儲存時間 LastUseDateTime DateTime 最後讀取時間 HolderUserName String 檔案所有人
FileSize Decimal 檔案大小
表 2-12 討論區子系統資料表 3
討論區_文章資料表:
欄位名稱 型態 說明
Uid Int32 PK
Subject String 主題
Body String 內容
PostDateTime DateTime 張貼時間 LastReadDateTime DateTime 最後讀取時間 PostUserName String 上傳使用者名稱 AttachFilesNO String 附加檔案編號 ReadUsersNO String 讀取過的使用者編號 BelongBoardID Int32 屬於哪一個版面 BelongMsgID Int32 屬於哪一篇文章 Security_Level Int32 安全等級
表 2-13 討論區子系統資料表 4
2.5.13 E-R Module
根據我們所設計的資料庫,來將各實體(Entity)的關聯性一一 用圖表畫出來,總共有十個 Entity,主要是從學生這部分開始,學 生跟選課系統有加退選的關聯,選課系統跟課程有選課課程資訊的關 聯,課程跟課程連結有提供資訊的關聯,學生可經由加退選來完成修 課上的加退選,並可查詢課程資訊。當學生進行課表查詢時,從各個
課程又可以和多個 Entity 產生關聯,共六個:聊天室、檔案上傳、