免費下載軟件設(shè)計師歷年真題:http://m.xiexiliangjiufa.com/zhenti/rs.html
該套題在線考試:http://m.xiexiliangjiufa.com/exam/examam.aspx?t1=2&sid=810670
1、閱讀下列說明和圖,回答問題1至問題4,將解答填入答題紙的對應欄內(nèi)。
【說明】
某大型企業(yè)的數(shù)據(jù)中心為了集中管理、控制用戶對數(shù)據(jù)的訪問并支持大量的連接需求,欲構(gòu)建數(shù)據(jù)管理中間件,其主要功能如下:
(1)數(shù)據(jù)管理員可通過中間件進行用戶管理、操作管理和權(quán)限管理。用戶管理維護用戶信息,用戶信息(用戶名、密碼)存儲在用戶表中;操作管理維護數(shù)據(jù)實體的標準操作及其所屬的后端數(shù)據(jù)庫信息,標準操作和后端數(shù)據(jù)庫信息存放在操作表中;權(quán)限管理維護權(quán)限表,該表存儲用戶可執(zhí)行的操作信息。
(2)中間件驗證前端應用提供的用戶信息。若驗證不通過,返回非法用戶信息;若驗證通過,中間件將等待前端應用提交操作請求。
(3)前端應用提交操作請求后,中間件先對請求進行格式檢查。如果格式不正確,返回格式錯誤信息;如果格式正確,則進行權(quán)限驗證(驗證用戶是否有權(quán)執(zhí)行請求的操作), 若用戶無權(quán)執(zhí)行該操作,則返回權(quán)限不足信息,否則進行連接管理。
(4)連接管理連接相應的后臺數(shù)據(jù)庫并提交操作。連接管理先檢查是否存在空閑的數(shù)據(jù)庫連接,如果不存在,新建連接;如果存在,則重用連接。
(5)后端數(shù)據(jù)庫執(zhí)行操作并將結(jié)果傳給中間件,中間件對收到的操作結(jié)果進行處理后,將其返回給前端應用。
現(xiàn)采用結(jié)構(gòu)化方法對系統(tǒng)進行分析與設(shè)計,獲得如圖1-1所示的頂層數(shù)據(jù)流圖和圖1-2所示的0層數(shù)據(jù)流圖。
【問題 1】(3分)
使用說明中的詞語,給出圖1-1中的實體e1~e3的名稱。
【問題 2】(3分)
使用說明中的詞語,給出圖1-2中的數(shù)據(jù)存儲d1~d3的名稱。

【問題3】(6分)
給出圖1-2中加工p的名稱及其輸入、輸出流。

除加工p的輸入與輸出流外,圖1-2還缺失了兩條數(shù)據(jù)流,請給出這兩條數(shù)據(jù)流的起點和終點。

注:名稱使用說明中的詞匯,起點和終點均使用圖1-2中的符號或詞匯。
【問題4】(3分)
在繪制數(shù)據(jù)流圖時,需要注意加工的繪制。請給出三種在繪制加工的輸入、輸出時可能出現(xiàn)的錯誤。
信管網(wǎng)參考答案:
查看解析:
m.xiexiliangjiufa.com/st/380915668.html
2、閱讀下列說明和圖,回答問題1至問題3,將解答填入答題紙的對應欄內(nèi)。
【說明】
某學校擬開發(fā)一套實驗管理系統(tǒng),對各課程的實驗安排情況進行管理。
【需求分析】
一個實驗室可進行多種類型不同的實驗。由于實驗室和實驗員資源有限,需根據(jù)學生人數(shù)分批次安排實驗室和實驗員。一門課程可以為多個班級開設(shè),每個班級每學期可以開設(shè)多門課程。一門課程的一種實驗可以根據(jù)人數(shù)、實驗室的可容納人數(shù)和實驗類型,分批次開設(shè)在多個實驗室的不同時間段。一個實驗室的一次實驗可以分配多個實驗員負責輔導實驗,實驗員給出學生的每次實驗成績。
(1)課程信息包括:課程編號、課程名稱、實驗學時、授課學期和開課的班級等信息;實驗信息記錄該課程的實驗進度信息,包括:實驗名、實驗類型、學時、安排周次等信息,如表2-1所示。

(2)以課程為單位制定實驗安排計劃信息,包括:實驗地點,實驗時間、實驗員等信息,實驗計劃如表2-2所示。

(3)由實驗員給出每個學生每次實驗的成績,包括:實驗名、學號、姓名、班級、實驗成績等信息,實驗成績?nèi)绫?-3所示。

(4)學生的實驗課程總成績根據(jù)每次實驗的成績以及每次實驗的難度來計算。
【概念模型設(shè)計】
根據(jù)需求階段收集的信息,設(shè)計的實體聯(lián)系圖(不完整)如圖2-1所示。

【邏輯結(jié)構(gòu)設(shè)計】
根據(jù)概念模型設(shè)計階段完成的實體聯(lián)系圖,得出如下關(guān)系模式(不完整):
課程(課程編號,課程名稱,授課院系,實驗學時)
班級(班級號,專業(yè),所屬系)
開課情況( (1) ,授課學期)
實驗( (2) ,實驗類型,難度,學時,安排周次)
實驗計劃( (3) ,實驗時間,人數(shù))
實驗員( (4) ,級別)
實驗室(實驗室編號,地點,開放時間,可容納人數(shù),實驗類型)
學生( (5) ,姓名,年齡,性別)
實驗成績( (6) ,實驗成績,評分實驗員)
【問題1】(6分)
補充圖2-1中的聯(lián)系和聯(lián)系的類型。
【問題2】(6分)
根據(jù)圖2-1,將邏輯結(jié)構(gòu)設(shè)計階段生成的關(guān)系模式中的空(1)~(6)補充完整并用下劃線指出這六個關(guān)系模式的主鍵。
【問題3】(3分)
如果需要記錄課程的授課教師,新增加“授課教師”實體。請對圖2-1進行修改,畫出修改后的實體間聯(lián)系和聯(lián)系的類型。
信管網(wǎng)參考答案:
查看解析:
m.xiexiliangjiufa.com/st/380925985.html
3、閱讀下列說明和圖,回答問題1至問題3,將解答填入答題紙的對應欄內(nèi)。
【說明】
某運輸公司決定為新的售票機開發(fā)車票銷售的控制軟件。圖3-1給出了售票機的面板示意圖以及相關(guān)的控制部件。

售票機相關(guān)部件的作用如下所述:
(1)目的地鍵盤用來輸入行程目的地的代碼(例如,200表示總站)。
(2)乘客可以通過車票鍵盤選擇車票種類(單程票、多次往返票和座席種類)。
(3)繼續(xù)/取消鍵盤上的取消按鈕用于取消購票過程,繼續(xù)按鈕允許乘客連續(xù)購買多張票。
(4)顯示屏顯示所有的系統(tǒng)輸出和用戶提示信息。
(5)插卡口接受mcard(現(xiàn)金卡),硬幣口和紙幣槽接受現(xiàn)金。
(6)打印機用于輸出車票。
假設(shè)乘客總是支付恰好需要的金額而無需找零,售票機的維護工作(取回現(xiàn)金、放入空白車票等)由服務(wù)技術(shù)人員完成。
系統(tǒng)采用面向?qū)ο蠓椒ㄩ_發(fā),使用uml進行建模。系統(tǒng)的頂層用例圖和類圖分別如圖3-2和圖3-3所示。

【問題1】(5分)
根據(jù)說明中的描述,給出圖3-2中a1和a2所對應的參與者,u1所對應的用例,以及(1)、(2)處所對應的關(guān)系。
【問題2】(7分)
根據(jù)說明中的描述,給出圖3-3中缺少的c1~c4所對應的類名以及(3)~(6)處所對應的多重度。
【問題3】(3分)
圖3-3中的類圖設(shè)計采用了中介者(mediator)設(shè)計模式,請說明該模式的內(nèi)涵。
信管網(wǎng)參考答案:
查看解析:
m.xiexiliangjiufa.com/st/380935084.html
4、閱讀下列說明和c代碼,回答問題1至問題3,將解答寫在答題紙的對應欄內(nèi)。
【說明】
對有向圖進行拓撲排序的方法是:
(1)初始時拓撲序列為空;
(2)任意選擇一個入度為0的頂點,將其放入拓撲序列中,同時從圖中刪除該頂點以及從該頂點出發(fā)的?。?br />
(3)重復(2),直到不存在入度為0的頂點為止(若所有頂點都進入拓撲序列則完成拓撲排序,否則由于有向圖中存在回路無法完成拓撲排序)。
函數(shù)int* topsort(linkeddigraph g)的功能是對有向圖g中的頂點進行拓撲排序,返回拓撲序列中的頂點編號序列,若不能完成拓撲排序,則返回空指針。其中,圖g中的頂點從1開始依次編號,頂點序列為v1,v2,…,vn,圖g采用鄰接表示,其數(shù)據(jù)類型定義如下:
#define maxvnum 50 /*最大頂點數(shù)*/
typedef struct arcnode{ /*表結(jié)點類型*/
int adjvex; /*鄰接頂點編號*/
struct arcnode *nextarc; /*指示下一個鄰接頂點*/
}arcnode;
typedef struct adjlist{ /*頭結(jié)點類型*/
char vdata; /*頂點的數(shù)據(jù)信息*/
arcnode *firstarc; /*指向鄰接表的第一個表結(jié)點*/
}adjlist;
typedef struct linkeddigraph{ /*圖的類型*/
int n; /*圖中頂點個數(shù)*/
adjlist vhead[maxvnum]; /*所有頂點的頭結(jié)點數(shù)組*/
}linkeddigraph;
例如,某有向圖g如圖4-1所示,其鄰接表如圖4-2所示。

函數(shù)topsort中用到了隊列結(jié)構(gòu)(queue的定義省略),實現(xiàn)隊列基本操作的函數(shù)原型如下表所示:
函 數(shù) 原 型
|
說 明
|
void initqueue(queue*q)
|
初始化隊列(構(gòu)造一個空隊列)
|
bool isempty(queue q)
|
判斷隊列是否為空,若是則返回true,否則返回false
|
void enqueue(queue*q,int e)
|
元素入隊列
|
void dequeue(queue*q,int*p)
|
元素出隊列
|
【c代碼】
int *topsort(linkeddigraph g) {
arcnode *p; /*臨時指針,指示表結(jié)點*/
queue q; /*臨時隊列,保存入度為0的頂點編號*/
int k = 0; /*臨時變量,用作數(shù)組元素的下標*/
int j = 0, w = 0; /*臨時變量,用作頂點編號*/
int *toporder, *indegree;
toporder = (int *)malloc((g.n+1) * sizeof(int)); /*存儲拓撲序列中的頂點編號*/
indegree = (int *)malloc((g.n+1) * sizeof(int)); /*存儲圖g中各頂點的入度*/
if (!indegree || !toporder) return null;
(1) ; /*構(gòu)造一個空隊列*/
for ( j = 1; j <= g.n; j++ ) { /*初始化*/
toporder[j] = 0; indegree[j] = 0;
}
for (j = 1; j <= g.n; j++) /*求圖g中各頂點的入度*/
for( p = g.vhead[j].firstarc; p; p = p->nextarc )
indegree[p-> adjvex] += 1;
for (j = 1; j <= g.n; j++) /*將圖g中入度為0的頂點保存在隊列中*/
if ( 0 == indegree[j] ) enqueue(&q,j);
while (!isempty(q)) {
(2) ; /*隊頭頂點出隊列并用w保存該頂點的編號*/
toporder[k++] = w;
/*將頂點w的所有鄰接頂點的入度減1(模擬刪除頂點w及從該頂點出發(fā)的弧的操作)*/
for(p = g.vhead[w].firstarc; p; p = p->nextarc) {
(3)-= 1;
if (0 ==(4)) enqueue(&q, p->adjvex);
}/* for */
}/* while */
free(indegree);
if ( (5) )
return null;
return toporder;
} /*topsort*/
【問題1】(9分)
根據(jù)以上說明和c代碼,填充c代碼中的空(1)~(5)。
【問題2】(2分)
對于圖4-1所示的有向圖g,寫出函數(shù)topsort執(zhí)行后得到的拓撲序列。若將函數(shù)topsort中的隊列改為棧,寫出函數(shù)topsort執(zhí)行后得到的拓撲序列。
【問題3】(4分)
設(shè)某有向無環(huán)圖的頂點個數(shù)為n、弧數(shù)為e,那么用鄰接表存儲該圖時,實現(xiàn)上述拓撲排序算法的函數(shù)topsort的時間復雜度是(6)。
若有向圖采用鄰接矩陣表示(例如,圖4-1所示有向圖的鄰接矩陣如圖4-3所示),且將函數(shù)topsort中有關(guān)鄰接表的操作修改為針對鄰接矩陣的操作,那么對于有n個頂點、e條弧的有向無環(huán)圖,實現(xiàn)上述拓撲排序算法的時間復雜度是(7)。

從下列的2道試題(試題五和試題六)中任選1道解答。如果解答的試題數(shù)超過1道,則題號小的1道解答有效。
信管網(wǎng)參考答案:
查看解析:
m.xiexiliangjiufa.com/st/3809416600.html
5、閱讀下列說明和c++代碼,將應填入 (n) 處的字句寫在答題紙的對應欄內(nèi)。
【說明】
某軟件公司現(xiàn)欲開發(fā)一款飛機飛行模擬系統(tǒng),該系統(tǒng)主要模擬不同種類飛機的飛行特征與起飛特征。需要模擬的飛機種類及其特征如表5-1所示。
表5-1
飛機種類
|
起飛特征
|
飛行特征
|
直升機(helicopter)
|
垂直起飛(verticaltakeoff)
|
亞音速飛行
(subsonicfly)
|
客機(airplane)
|
長距離起飛
(longdistancetakeoff)
|
亞音速飛行
(subsonicfly)
|
殲擊機(fighter)
|
長距離起飛
(longdistancetakeoff)
|
超音速飛行
(supersonicfly)
|
鷂式戰(zhàn)斗機(harrier)
|
垂直起飛(verticaltakeoff)
|
超音速飛行
(supersonicfly)
|
為支持將來模擬更多種類的飛機,采用策略設(shè)計模式(strategy)設(shè)計的類圖如圖5-1所示。

圖5-1中,aircraft為抽象類,描述了抽象的飛機,而類helicopter、airplane、fighter和harrier分別描述具體的飛機種類,方法fly()和takeoff()分別表示不同飛機都具有飛行特征和起飛特征;類flybehavior與takeoffbehavior為抽象類,分別用于表示抽象的飛行為與起飛行為;類subsonicfly與supersonicfly分別描述亞音速飛行和超音速飛行的行為;類verticaltakeoff與longdistancetakeoff分別描述垂直起飛與長距離起飛的行為。
【c++ 代碼】
#include<iostream>
using namespace std;
class flybehavior {
public : virtual void fly() = 0;
};
class subsonicfly:public flybehavior{
public: void fly(){ cout << "亞音速飛行!" << endl; }
};
class supersonicfly:public flybehavior{
public: void fly(){ cout << "超音速飛行!" << endl; }
};
class takeoffbehavior {
public: virtual void takeoff() = 0;
};
class verticaltakeoff:public takeoffbehavior{
public: void takeoff(){ cout << "垂直起飛!" << endl; }
};
class longdistancetakeoff:public takeoffbehavior {
public: void takeoff (){ cout << "長距離起飛!" << endl; }
};
class aircraft{
protected:
(1) ;
(2) ;
public:
void fly(){(3); }
void takeoff() {(4); };
};
class helicopter: public aircraft {
public:
helicopter (){
flybehavior = new(5);
takeoffbehavior = new(6);
}
(7){
if(!flybehavior) delete flybehavior;
if(!takeoffbehavior) delete takeoffbehavior;
}
};
//其它代碼省略
信管網(wǎng)參考答案:
查看解析:
m.xiexiliangjiufa.com/st/3809511481.html
6、閱讀下列說明和java代碼,將應填入 (n) 處的字句寫在答題紙的對應欄內(nèi)。
【說明】
某軟件公司現(xiàn)欲開發(fā)一款飛機飛行模擬系統(tǒng),該系統(tǒng)主要模擬不同種類飛機的飛行特征與起飛特征。需要模擬的飛機種類及其特征如表6-1所示。

為支持將來模擬更多種類的飛機,采用策略設(shè)計模式(strategy)設(shè)計的類圖如圖6-1所示。

圖6-1中,aircraft為抽象類,描述了抽象的飛機,而類helicopter、airplane、fighter和harrier分別描述具體的飛機種類,方法fly()和takeoff()分別表示不同飛機都具有飛行特征和起飛特征類flybehavior與takeoffbehavior為抽象類,分別用于表示抽象的飛行為與起飛行為;類subsonicfly與supersonicfly分別描述亞音速飛行和超音速飛行的行為;類verticaltakeoff與longdistancetakeoff分別描述垂直起飛與長距離起飛的行為。
【java 代碼】
interface flybehavior {
public void fly();
};
class subsonicfly implements flybehavior{
public void fly(){ system.out.println("亞音速飛行!"); }
};
class supersonicfly implements flybehavior{
public void fly(){ system.out.println("超音速飛行!" ); }
};
interface takeoffbehavior {
public void takeoff();
};
class verticaltakeoff implements takeoffbehavior {
public void takeoff (){ system.out.println("垂直起飛!" ); }
};
class longdistancetakeoff implements takeoffbehavior {
public void takeoff(){ system.out.println("長距離起飛!"); }
};
abstract class aircraft {
protected (1) ;
protected (2) ;
public void fly(){ (3) ; }
public void takeoff() { (4) ; };
};
class helicopter(5)aircraft{
public helicopter (){
flybehavior = new (6) ;
takeoffbehavior = new (7) ;
}
};
//其它代碼省略
信管網(wǎng)參考答案:
查看解析:
m.xiexiliangjiufa.com/st/3809612356.html