試題四
閱讀下列說明以及圖3-1 和圖3-2,回答問題1、問題2 和問題3,將解答填入答題紙的
對(duì)應(yīng)欄內(nèi)。
[說明]
某電話公司決定開發(fā)一個(gè)管理所有客戶信息的交互式網(wǎng)絡(luò)系統(tǒng)。系統(tǒng)的功能如下:
1.瀏覽客戶信息:任何使用Internet 的網(wǎng)絡(luò)用戶都可以瀏覽電話公司所有的客戶信息(包
括姓名、住址、電話號(hào)碼等)。
2.登錄:電話公司授予每個(gè)客戶一個(gè)帳號(hào)。擁有授權(quán)帳號(hào)的客戶,可以使用系統(tǒng)提供
的頁面設(shè)置個(gè)人密碼,并使用該帳號(hào)和密碼向系統(tǒng)注冊(cè)。
3.修改個(gè).人信息:客戶向系統(tǒng)注冊(cè)后,可以發(fā)送電子郵件或者使用系統(tǒng)提供的頁面,
對(duì)個(gè)人信息進(jìn)行修改。
4.刪除客戶信息:只有公司的管理人員才能刪除不再接受公司服務(wù)的客戶的信息。
系統(tǒng)采用面向?qū)ο蠓椒ㄟM(jìn)行開發(fā),在開發(fā)過程中認(rèn)定出的類如下表所示:
編號(hào) 類名 描述
1 InternetClient 網(wǎng)絡(luò)用戶
2 CustomerList 客戶信息表,記錄公司所有客戶的信息
3 Customer 客戶信息,記錄單個(gè)客戶的信息
4 CompanyCustomer 公司客戶
5 InternalClient 公司的管理人員
[圖3-1]
[問題1]
在需求分析階段,采用UML 的用例圖(use case diagram)描述系統(tǒng)功能需求,如圖3-1
所示。請(qǐng)指出圖中的A、B、C 和D 分別是哪個(gè)用例?
[問題2]
在 UML 中,重復(fù)度(Multiplicity)定義了某個(gè)類的一個(gè)實(shí)例可以與另一個(gè)類的多少個(gè)
實(shí)例相關(guān)聯(lián)。通常把它寫成一個(gè)表示取值范圍的表達(dá)式或者一個(gè)具體的值。例如圖 3-2 中
的類 InternetClient 和CustomerList,InternetClient 端的“0..*”表示:一個(gè) Custo~erList 的實(shí)
例可以與 0 個(gè)或多個(gè) InternetClient 的實(shí)例相關(guān)聯(lián);CustomerList 端的“1”表示:一個(gè)
InternetClient 的實(shí)例只能與一個(gè)CustomerList 的實(shí)例相關(guān)。
請(qǐng)指出圖3-2 中(1)到(4)處的重復(fù)度分別為多少?
[問題3]
類通常不會(huì)單獨(dú)存在,因此當(dāng)對(duì)系統(tǒng)建模時(shí),不僅要識(shí)別出類,還必須對(duì)類之間的相
互關(guān)系建模。在面向?qū)ο蠼V?,提供了四種關(guān)系:依賴(dependency)、概括(generalization)、
關(guān)聯(lián)(aassociation)和聚集(aggregation)。請(qǐng)分別說明這四種關(guān)系的含義,并說明關(guān)聯(lián)和聚集之
間的主要區(qū)別。
試題五
閱讀下列程序說明和 C 代碼,將應(yīng)填人 __(n)__ 處的字句寫在答卷的對(duì)應(yīng)欄內(nèi)。
[程序 6 說明]
設(shè)某城市有 n 個(gè)車站,并有 m 條公交線路連接這些車站,設(shè)這些公交車都是單向
的,這 n 個(gè)車站被順序編號(hào)為 0 至 n-1 。本程序,輸入該城市的公交線路數(shù)、車站個(gè)
數(shù),以及各公交線路上的各站編號(hào),求得從站 0 出發(fā)乘公交車至站 n-1 的最少換車次數(shù)。
程序利用輸入信息構(gòu)建一張有向圖 G (用鄰接矩陣 g 表示),有向圖的頂點(diǎn)是車站,
若有某條公交線路經(jīng) i 站能到達(dá) j 站,就在頂點(diǎn) i 到頂點(diǎn) j 之間設(shè)置一條權(quán)為 1 的有向
邊。如是這樣,從站點(diǎn) x 至站點(diǎn) y 的最少上車次數(shù)便對(duì)應(yīng)圖 G 中從點(diǎn) x 至點(diǎn) y 的
最短路徑長度。而程序要求的換車次數(shù)就是上車次數(shù)減 1 。
[程序6]
#include
#define M 20
#define N 50
int a[N+l]; /*用于存放一條線路上的各站編號(hào)*/
int g[N][N]; /*存儲(chǔ)對(duì)應(yīng)的鄰接矩陣*/
int dist[N]; /*存儲(chǔ)站 0 到各站的最短路徑*/
int m, n;
void buildG( )
{ int i, j, k, sc, dd;
printf ("輸入公交線路數(shù),公交站數(shù)\n");
scanf ("%d%d", &m, &n);
for( i = O; i < n; i++) /* 鄰接矩陣清0 */
for(j = O; j < n; j++) g[i][j] = O;
for( i = O; i < m; i++) {
printf (" 沿第 %d 條公交車線路前進(jìn)方向的各站編號(hào)
( O <= 編號(hào) <= %d, -1 結(jié)束):\n", i+l, n-1 );
sc = O; /* 當(dāng)前線路站計(jì)數(shù)器 */
while (1) {
scanf ("%d", &dd);
if (dd == -1) break;
if (ad >= 0 && dd < n) ___(1)___
}
a[sc] = -1;
for(k = 1; a[k] >= O; k++) /* 處理第 i+l 條公交線路 */
for (j = 0; j < k; j++)
g __(2)__ = 1;
}}
int minLen( )
{ int j, k;
for(j = O; j < n; j++) dist[j] = g[O][j];
dist[O] = 1;
do {
for(k = -1, j = 0 ; j < n; j++) /* 找下一個(gè)最少上車次數(shù)的站*/
if (dist[j] > 0 && (k == -1 || dist[j] < dist[k])) k = j;
if (k < 0 || k == n-l) break;
dist[k] = -dist[k]; /* 設(shè)置 k 站已求得上車次數(shù)的標(biāo)記 */
for(j = 1; j < n; j++) /* 調(diào)整經(jīng)過 k 站能到達(dá)的其余各站的上車次數(shù) */
if ( __(3)__ && (dist[j] == 0 || -dist[k] + 1 < dist[j] ) )
dist[j] = __(4)__ ;
} while (1);
j = dist [n-l];
return __(5)__ ;
}
void main ( )
{ int t;
buildG ( );
if ((t = minLen()) < O) printf ("無解 ! \n"),
else printf ("從 0 號(hào)站到 %d 站需換車 %d 次\n , n-i, t);
}
2010年軟件設(shè)計(jì)師模擬試題(三)
答案部分
【上午試題】
1)B 2)C 3)B 4)B 5)D 6)C 7)C 8)D 9)A 10)A 11)B
12)B 13)B 14)C 15)B 16)D 17)C 18)A 19)C 20)C 21)D
22)A 23)D 24)D 25)D 26)A 27)D 28)B 29)B 30)C 31)C
32)B 33)A 34)A 35)C 36)B 37)C 38)D 39)A 40)A 41)A
42)D 43)C 44)A 45)C 46)B 47)D 48)A 49)B 50)A 51)A
52)A 53)D 54)B 55)B 56)C 57)B 58)B 59)C 60)A 61)D
62)C 63)C 64)B 65)A 66)A 67)C 68)B 69)B 70)D 71)B
72)C 73)A 74)B 75)D
【下午試題】
試題一
(1) 檢查發(fā)貨單中非法銷售代號(hào)、非法商品代號(hào)、數(shù)量*單價(jià)≠金額等錯(cuò)誤。
答“檢查發(fā)貨單的合法性”得 2 分
(2) “刪除發(fā)貨文件中已做收款標(biāo)記的所有記錄”
或“將未收到款的記錄重新組成新發(fā)貨文件”。
(3) “刪除收款文件中的所有記錄”
或“刪除已收到款的記錄”
或“對(duì)收款文件初始化”。
(4) 從收款文件到處理 7 的連線改成從日收款分類文件到處理 7 的連線。
試題二:
[問題1]
N+1→N ② L-I+1→J ③ L N/10,J」 ④ L→LS ⑤ (I-LS-N1*M) ⑥ L N/10↑J」×10
[問題2]
流程圖b 的處理效率比流程圖a 高;流程圖b 的算法比流程圖a 復(fù)雜。
試題三
[問題1]
Customers(cid,cname,adderss,cardnum),主碼:cid
orders(Ordernum,Orderdate,cid) 主碼:Ordernum ;外碼:cid
Books
0rderlist(bid,ordernum,qty,ship_date) 其中bid 和ordernum 是主碼也是外碼
注:以上四個(gè)關(guān)系模式和每個(gè)模式中的屬性可按任意次序書寫。
[問題2]
(1)PRIMARY KEY(cid)
(2)UNIQUE(cardnum)
注;(1)和(2)的次序可以顛倒。
[問題3]
(3)not in
(5)C.ordernum
試題四
[問題1]
A:瀏覽客戶信息 B:修改個(gè)人信息 C:登錄 D:刪除客戶信息
[問題2]
(1)1 (2)0..* (3)0..1 (4)0..1
[問題3]
(1)4 種關(guān)系的含義:
依賴表示類之間的使用關(guān)系。
概括表示一般類和特殊類之間的關(guān)系。
關(guān)聯(lián)和聚集都表示實(shí)例之間的結(jié)構(gòu)關(guān)系。
(2)關(guān)聯(lián)和聚集的區(qū)別:
關(guān)聯(lián)指明一個(gè)類的對(duì)象與另一類的對(duì)象間的聯(lián)系:兩個(gè)類之間的關(guān)聯(lián)表示了兩個(gè)同等地
位類之間的結(jié)構(gòu)關(guān)系,這兩個(gè)類在概念上是同級(jí)別的。
聚集是一種特殊的關(guān)聯(lián),它表示整體/部分關(guān)系。
試題五:
(1) a[sc++] = dd
(2) a[[j]] [a[k]]
(3) dist[j] >= 0 && g[k][j] == 1
(4) -dist [k] + 1
(5) k < 0 ? -1 : j - 1