
臺北捷運公司 105 年 11 月 27 日新進助理工程員(資訊類)
甄試試題-程式設計
第 1 頁,共 6 頁
注意: 請務必填寫姓名:
1.以下題目應全部作答。 應考編號:
2.科目總分為 100 分。
3.作答時不須抄題目,但請標明題號,並請用藍(黑)色原子筆橫向書寫。
題目:
一、軟體發展方法已逐漸從傳統的瀑布模型(waterfall model)或結構化
發展轉向物件導向(object oriented)分析設計以及敏捷式開發方
法,請簡要回答以下有關技術與特性(每題 5 分,共 10 分):
圖1. 物件導向模型
(一) 圖1是物件導向分析設計常用的塑模工具(modeling tool),
請問其名稱為何?目的為何?
(二)圖中 Publisher 和Stock 之間三角形實線的意義為何?
Subscriber 和Investor 之間的三角形虛線意義為何?Publisher
和StockAgent 之間的箭頭虛線的意義為何?
{abstract}
Publisher
-subscriberList
+addSubscriber(Subscriber)
+delSubscriber(Subscriber)
+notifySubscribers()
+String getData()
<>
Subscriber
+update()
Investor
-name
+u
date
StockAgent
-news
+String getData()
Stock
-name
-news
+String getData()

臺北捷運公司 105 年 11 月 27 日新進助理工程員(資訊類)
甄試試題-程式設計
第 2 頁,共 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-4. 提示訊息

臺北捷運公司 105 年 11 月 27 日新進助理工程員(資訊類)
甄試試題-程式設計
第 3 頁,共 6 頁
(二) Account欄位的輸入,若沒有以'a'或'b'值開頭,則按下"Ok"會跳出Invalid
Account視窗訊息,如圖2-2。Balance欄位的輸入,值的長度小於3,則
按下"Ok"會跳出Invalid Balance視窗訊息,如圖2-3。Balance欄位的輸
入,若為數字,則會跳出"10*輸入數字"的值,如圖2-4。
Exam
Account: (5) name = name>
Balance: type = (6) name = passwd>
(7) name="C1" value="ON" checked>VIP
(8) name="C2" value="ON">Enterprise
checkString(FORM1.name.value, FORM1.passwd.value);"
style=width:60 value =Ok>

臺北捷運公司 105 年 11 月 27 日新進助理工程員(資訊類)
甄試試題-程式設計
第 4 頁,共 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 transform 10X(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) {

臺北捷運公司 105 年 11 月 27 日新進助理工程員(資訊類)
甄試試題-程式設計
第 5 頁,共 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();
}
}
}

臺北捷運公司 105 年 11 月 27 日新進助理工程員(資訊類)
甄試試題-程式設計
第 6 頁,共 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。