注意 : 請務必填寫姓名 : 1. 以下題目應全部作答 應考編號 : 2. 科目總分為 100 分 3. 作答時不須抄題目, 但請標明題號, 並請用藍 ( 黑 ) 色原子筆橫向書寫 題目 : 一 軟體發展方法已逐漸從傳統的瀑布模型 (waterfall model) 或結構化發展轉向物件導向 (object oriented) 分析設計以及敏捷式開發方法, 請簡要回答以下有關技術與特性 ( 每題 5 分, 共 10 分 ): {abstract Publisher -subscriberlist +addsubscriber(subscriber) +delsubscriber(subscriber) +notifysubscribers() +String getdata() <<interface>> Subscriber +update() StockAgent -news +String getdata() Stock -name -news +String getdata() Investor -name +update() 圖 1. 物件導向模型 ( 一 ) 圖 1 是物件導向分析設計常用的塑模工具 (modeling tool), 請問其名稱為何? 目的為何? ( 二 ) 圖中 Publisher 和 Stock 之間三角形實線的意義為何? Subscriber 和 Investor 之間的三角形虛線意義為何?Publisher 和 StockAgent 之間的箭頭虛線的意義為何? 第 1 頁, 共 6 頁
二 網頁程式設計 (JavaScript)(1~7 各 4 分,8 為 2 分, 共 30 分 ): 填寫以下 html 網頁和 JavaScript 程式碼空格處 (1) ~ (8), 完成下面功 能 ( 一 ) 圖 2-1, 為一個 html 網頁, 第一行有兩個元件 : 第一個是標籤 (label), 顯示為 "Account:", 第二個是文字區 (text field), 可以讓使用者填入文 字 第二行有兩個元件 : 第一個是標籤 (label), 顯示為 "Balance:", 第 二個是文字區 (text field), 可以讓使用者填入文字, 但填入文字會被隱 藏如圖 2-1 第三行有五個元件 : 第一個是檢查按鈕 (check button), 第 二個是標籤 (label), 顯示為 "VIP", 第三個是檢查按鈕 (check button), 第四個是標籤 (label), 顯示為 "Enterprise" 第五個是按鈕 (button), 上 面顯示的文字是 "Ok" 圖 2-1. Html 網頁 圖 2-2. 錯誤訊息一 圖 2-3. 錯誤訊息二 第 2 頁, 共 6 頁 圖 2-4. 提示訊息
( 二 ) Account 欄位的輸入, 若沒有以 'a' 或 'b' 值開頭, 則按下 "Ok" 會跳出 Invalid Account 視窗訊息, 如圖 2-2 Balance 欄位的輸入, 值的長度小於 3, 則 按下 "Ok" 會跳出 Invalid Balance 視窗訊息, 如圖 2-3 Balance 欄位的輸 入, 若為數字, 則會跳出 "10* 輸入數字 " 的值, 如圖 2-4 <html><head> <title>exam</title> <script language=javascript> function checkstring(s1,s2) { if ( (1) ) { alert(" (2) "); return false; if ( (3) ) { alert("invalid Balance"); return false; if ( (4) (s2)) { alert(10*eval(s2)); return false; </script></head> <BODY TEXT=#FFFFFF BGCOLOR=#000000> <form action = Login method=post name=form1> Account: <input type = (5) name = name><br> Balance: <input type = (6) name = passwd><br> <input (7) name="c1" value="on" checked>vip <input (8) name="c2" value="on">enterprise <input type = submit onclick="return checkstring(form1.name.value, FORM1.passwd.value);" style=width:60 value =Ok> </form></body></html> 第 3 頁, 共 6 頁
三 網頁程式設計 (C#)(1~5 各 4 分,6~8 各 5 分, 共 35 分 ): 填寫以下 C# 程式碼空格處 (1) ~ (8), 使執行結果為 : 4 1621 1 3 5 7 9 其中 transform10x 功能為將 based 進位制的數值 x, 轉成 10 進位制 namespace ConsoleApplication3 { abstract public class Number { public int count(int x, int y) { if (x _(1)_ y) return 0; else return count(x - 1, y) + 1; _(2)_ public void dispatch() { System.Console.WriteLine("Based"); _(3)_ public int transform10x(int based, int x); public class Transfer { public int transform10x(int based, int x) { int index = 1, ans = 0; while (x > _(4) _) { ans = ans + index *(x% based); x = x / _(5) _; index = index * 10; return ans; public class DecimailNumber: Number { private Transfer tr; _(6) _ DecimailNumber() { tr = new Transfer(); public _(7) _ int transform10x(int based, int x) { return tr.transform10x(based, x); private void compute(int a, int[] b) { 第 4 頁, 共 6 頁
for (int i=a; i>=0; i--) { b[i] = 1 + 2*i; private void output(int [] r, int n) { for (int i=0; i<n; i++) { System.Console.Write(r[i]+" "); public override _(8) _ dispatch() { int [] data ={5, 4, 3, 2, 1; int [] r={0, 1, 2, 3, 4; compute(data[r[0]+r[1]], r); output(r, 5); class Program { static void Main(string[] args) { Number d = new DecimailNumber(); System.Console.WriteLine(d.count(7,3)); System.Console.WriteLine(d.transform10X(9, 1234)); d.dispatch(); 第 5 頁, 共 6 頁
四 SQL 語言與資料庫應用 ( 共 25 分 ): 某公司專案管理系統中, 公司有許多專案 (Project) 與部門 (Department) 每一個部門有許多員工 (Employee) 每一個專案有一位專案經理 (Manager), 專案成員是由各部門調派組成 部門有部門編號 (id) 部門名稱 (name) 專案有專案編號 (id) 專案名稱 (name) 專案經理的員工編號 (manager_id) 員工有員工編號 (id) 姓名 (name) 所參與專案編號 (project_id) 所參與專案的角色 (job_title) 部門編號 (department_id) 年齡 (age) 其資料庫設計如下 : Department (id char(10), name char(12)) Project (id char(10), name char(12), manager_id char(10)) Employee (id char(10), name char(12), project_id char(10), job_title char(12), department_id char(10), age Integer) ( 一 ) 請說明何謂資料庫第一正規化 (1NF), 以上設計是否符合 1NF (5 分 ) ( 二 ) 請針對以下問題撰寫 SQL 指令 (20 分 ) (1) 造出一個資料表 Employee (2) 刪除部門為 Sale 的所有員工資料 (3) 加入一筆新的員工資料進入資料庫 ('0006', 'Kevin', '002', 'Programmer', '003', 36); (4) 更新所有員工在專案中擔任 programmer 角色, 改為 developer 第 6 頁, 共 6 頁