免費下載軟件設計師歷年真題:http://www.xomuzic.com/zhenti/rs.html
該套題在線考試:http://www.xomuzic.com/exam/examam.aspx?t1=2&sid=810710
1、閱讀下列說明和圖,回答問題1至問題4,將解答填入答題紙的對應欄內。
【說明】
某學校欲開發(fā)圖書管理系統(tǒng),以記錄圖書館藏圖書及其借出和歸還情況,提供給借閱者借閱圖書功能,提供給圖書館管理員管理和定期更新圖書表功能。主要功能的具體描述如下:
(1)處理借閱。借閱者要借閱圖書時,系統(tǒng)必須對其身份(借閱者ID)進行檢查。通過與教務處維護的學生數(shù)據(jù)庫、人事處維護的職工數(shù)據(jù)庫中的數(shù)據(jù)進行比對,以驗證借閱者ID是否合法,若合法,則檢查借閱者在逾期未還圖書表中是否有逾期未還圖書,以及罰金表中的罰金是否超過限額。如果沒有逾期未還圖書并且罰金未超過限額,則允許借閱圖書,更新圖書表,并將借閱的圖書存入借出圖書表,借閱者歸還所借圖書時,先由圖書館管理員檢查圖書是否缺失或損壞,若是,則對借閱者處以相應罰金并存入罰金表;然后,檢查所還圖書是否逾期,若是,執(zhí)行“處理逾期”操作;最后,更新圖書表,刪除借出圖書表中的相應記錄。
(2)維護圖書。圖書館管理員查詢圖書信息;在新進圖書時錄入圖書信息,存入圖書表;在圖書丟失或損壞嚴重時,從圖書表中刪除該圖書記錄。
(3)處理逾期。系統(tǒng)在每周一統(tǒng)計逾期未還圖書,逾期未還的圖書按規(guī)則計算罰金,并記入罰金表,并給有逾期未還圖書的借閱者發(fā)送提醒消息。借閱者在借閱和歸還圖書時,若罰金超過限額,管理員收取罰金,并更新罰金表中的罰金額度。
現(xiàn)采用結構化方法對該圖書管理系統(tǒng)進行分析與設計,獲得如圖1-1所示的頂層數(shù)據(jù),流圖和圖1-2所示的0層數(shù)據(jù)流圖。
【問題1】
使用說明中的詞語,給出圖1-1中的實體E1-E4的名稱。
【問題2】
使用說明中的詞語,給出圖1-2中的數(shù)據(jù)存儲D1~D4的名稱。
【問題3】
在DFD建模時,需要對有些復雜加工(處理)進行進一步精化,繪制下層數(shù)據(jù)流圖。針對圖1-2中的加工“處理借閱”,在1層數(shù)據(jù)流圖中應分解為哪些加工?(使用說明中的術語)
【問題4】
說明【問題3】中繪制1層數(shù)據(jù)流圖時要注意的問題。
信管網參考答案:
查看解析:
www.xomuzic.com/st/38115524.html
2、
閱讀下列說明和圖,回答問題1至問題3,將解答填入答題紙的對應欄內。
【說明】
某醫(yī)院擬開發(fā)一套住院病人信息管理系統(tǒng),以方便對住院病人、醫(yī)生、護士和手術等信息進行管理。
【需求分析】
(1)系統(tǒng)登記每個病人的住院信息,包括:病案號、病人的姓名、性別、地址、身份證號、電話號碼、入院時問及病床等信息,每個病床有唯一所屬的病區(qū)及病房,如表2-1所示。其中病案號唯一標識病人本次住院的信息。
表2-1 住院登記表
病案號
|
071002286
|
姓名
|
張三
|
性別
|
男
|
省份證號
|
0102196701011234
|
入院時間
|
2011-03-03
|
病床號
|
052401
|
病房
|
0524室
|
病房類型
|
三人間
|
所屬病區(qū)
|
05II區(qū)
|
(2)在一個病人的一次住院期間,由一名醫(yī)生對該病人的病情進行診斷,并填寫一份診斷書,如表2-2所示。對于需要進行一次或多次手術的病人,系統(tǒng)記錄手術名稱、手術室、手術日期、手術時間、主刀醫(yī)生及多名協(xié)助醫(yī)生,每名醫(yī)生在手術中的責任不同,如表2-3所示,其中手術室包含手術室號、樓層、地點和類型等信息。
表2-2 診斷書
表2-3 手術安排表
(3)護士分為兩類:病床護士和手術室護士。每個病床護士負責護理一個病區(qū)內的所有病人,每個病區(qū)由多名護士負責護理。手術室護士負責手術室的護理工作。每個手術室護士負責多個手術室,每個手術室由多名護士負責,每個護士在手術室中有不同的責任,并由系統(tǒng)記錄其責任。
【概念模型設計】
根據(jù)需求階段收集的信息,設計的實體聯(lián)系圖(不完整)如圖2-1所示。
【邏輯結構設計】
根據(jù)概念模型設計階段完成的實體聯(lián)系圖,得出如下關系模式(不完整):
病床(病床號,病房,病房類型,所屬病區(qū))
護士(護士編號,姓名,類型,性別,級別)
病房護士( (1) )
手術室(手術室號,樓層,地點,類型)
手術室護士( (2) )
病人( (3),姓名,性別,地址,身份證號,電話號碼,入院時間)
醫(yī)生(醫(yī)生編號,姓名,性別,職稱,所屬科室)
診斷書( (4),診斷,診斷時間)
手術安排(病案號,手術室號,手術時間,手術名稱)
手術醫(yī)生安排( (5) ,醫(yī)生責任)
【問題1】(6分)
補充圖2-1中的聯(lián)系和聯(lián)系的類型。
【問題2】(5分)
根據(jù)圖2-1,將邏輯結構設計階段生成的關系模式中的空(1)~(5)補充完整,并用下劃線指出主鍵。
【問題3】(4分)
如果系統(tǒng)還需要記錄醫(yī)生給病人的用藥情況,即記錄醫(yī)生給病人所開處方中藥品的名稱、用量、價格、藥品的生產廠家等信息。請根據(jù)該要求,對圖2-1進行修改,畫出補充后的實體、實體間聯(lián)系和聯(lián)系的類型。
信管網參考答案:
查看解析:
www.xomuzic.com/st/3811612462.html
3、閱讀下列說明和圖,回答問題1至問題3,將解答填入答題紙的對應欄內。
【說明】
某網上購物平臺的主要功能如下:
(1)創(chuàng)建訂單。顧客( Customer)在線創(chuàng)建訂單(Order),主要操作是向訂單中添加項目、從訂單中刪除項目。訂單中應列出所訂購的商品(Product)及其數(shù)量(quantities)。
(2)提交訂單。訂單通過網絡來提交。在提交訂單時,顧客需要提供其姓名(name)、收貨地址(address)、以及付款方式(form of payment)(預付卡、信用卡或者現(xiàn)金)。為了制定送貨計劃以及安排送貨車輛,系統(tǒng)必須確定訂單量(volume)。除此之外,還必須記錄每種商品的名稱(Name)、造價(cost price)、售價(sale price)以及單件商品的包裝體積(cubic volume)。
(3)處理訂單。訂單處理人員接收來自系統(tǒng)的訂單;根據(jù)訂單內容,安排配貨,制定送貨計劃。在送貨計劃中不僅要指明發(fā)貨日期(delivery date),還要記錄每個訂單的限時發(fā)送要求(Delivery Time Window)。
(4)派單。訂單處理人員將己配好貨的訂單轉交給派送人員。
(5)送貨/收貨。派送人員將貨物送到顧客指定的收貨地址。當顧客收貨時,需要在運貨單(delivery slip)上簽收。簽收后的運貨單最終需交還給訂單處理人員。
(6)收貨確認。當訂單處理人員收到簽收過的運貨單后,會和顧客進行一次再確認。
現(xiàn)采用面向對象方法開發(fā)上述系統(tǒng),得到如圖3-1所示的用例圖和圖3-2所示的類圖。

【問題1】
根據(jù)說明中的描述,給出圖3-1中A1~A3所對應的參與者名稱和U1~U2處所對應的用例名稱。
【問題2】
根據(jù)說明中的描述,給出圖3-2中C1~C3所對應的類名以及(1)~(4)處所對應的多重度(類名使用說明中給出的英文詞匯)。
【問題3】
根據(jù)說明中的描述,將類C2和C3的屬性補充完整(屬性名使用說明中給出的英文詞匯)。
信管網參考答案:
查看解析:
www.xomuzic.com/st/3811715797.html
4、閱讀下列說明和C代碼,回答問題1至問題3,將解答寫在答題紙的對應欄內。
【說明】
用兩臺處理機A和B處理n個作業(yè)。設A和B處理第i個作業(yè)的時間分別為ai和bi。由于各個作業(yè)的特點和機器性能的關系,對某些作業(yè),在A上處理時間長,而對某些作業(yè)在B上處理時間長。一臺處理機在某個時刻只能處理一個作業(yè),而且作業(yè)處理是不可中斷的,每個作業(yè)只能被處理一次。現(xiàn)要找出一個最優(yōu)調度方案,使得n個作業(yè)被這兩臺處理機處理完畢的時間(所有作業(yè)被處理的時間之和)最少。
算法步驟:
(1)確定候選解上界為R短的單臺處理機處理所有作業(yè)的完成時間m,
(2)用p(x,y,k)=1表示前k個作業(yè)可以在A用時不超過x且在B用時不超過y時間 內處理完成,則p(x,y,k)=p(x-ak,y,k-1)||p(x,y-bk,k-1)(||表示邏輯或操作)。
(3)得到最短處理時問為min(max(x,y))。
【C代碼】
下面是該算法的C語言實現(xiàn)。
(1)常量和變量說明
n: 作業(yè)數(shù)
m: 候選解上界
a: 數(shù)組,長度為n,記錄n個作業(yè)在A上的處理時間,下標從0開始
b: 數(shù)組,長度為n,記錄n個作業(yè)在B上的處理時間,下標從0開始
k: 循環(huán)變量
p: 三維數(shù)組,長度為(m+1)*(m+1)*(n+1)
temp: 臨時變量
max: 最短處理時間
(2)C代碼
#include<stdio.h>
int n, m;
int a[60], b[60], p[100][100][60];
void read(){ /*輸入n、a、b,求出m,代碼略*/}
void schedule(){ /*求解過程*/
int x,y,k;
for(x=0;x<=m;x++){
for(y=0;y<m;y++){
(1)
for(k=1;k<n;k++)
p[x][y][k]=0;
}
}
for(k=1;k<n;k++){
for(x=0;x<=m;x++){
for(y=0;y<=m;y++){
if(x - a[k-1]>=0) (2) ;
if( (3) )p[x][y][k]=(p[x][y][k] ||p[x][y-b[k-1]][k-1]);
}
}
}
}
void write(){ /*確定最優(yōu)解并輸出*/
int x,y,temp,max=m;
for(x=0;x<=m;x++){
for(y=0;y<=m;y++){
if( (4) ){
temp=(5) ;
if(temp< max)max = temp;
}
}
}
printf(“\n%d\n”,max),
}
void main(){read();schedule();write();}
【問題1】 (9分)
根據(jù)以上說明和C代碼,填充C代碼中的空(1)~(5)。
【問題2】(2分)
根據(jù)以上C代碼,算法的時間復雜度為(6)(用O符號表示)。
【問題3】(4分)
考慮6個作業(yè)的實例,各個作業(yè)在兩臺處理機上的處理時間如表4-1所示。該實例的最優(yōu)解為(7),最優(yōu)解的值(即最短處理時間)為(8)。最優(yōu)解用(x1,x2,x3,x4,x5,x6)表示,其中若第i個作業(yè)在A上處理,則xi=l,否則xi=2。如(1,1,1,1,2,2)表示作業(yè)1,2,3和4在A上處理,作業(yè)5和6在B上處理
表4-1
|
作業(yè)1
|
作業(yè)2
|
作業(yè)3
|
作業(yè)4
|
作業(yè)5
|
作業(yè)6
|
處理機A
|
2
|
5
|
7
|
10
|
5
|
2
|
處理機B
|
3
|
8
|
4
|
11
|
3
|
4
|
信管網參考答案:
查看解析:
www.xomuzic.com/st/3811810850.html
5、閱讀下列說明和C++代碼,將應填入(n)處的字句寫在答題紙的對應欄內。
【說明】
某咖啡店當賣咖啡時,可以根據(jù)顧客的要求在其中加入各種配料,咖啡店會根據(jù)所加入的配料來計算費用??Х鹊晁目Х燃芭淞系姆N類和價格如下表所示。
咖啡
|
價格/杯
|
配 料
|
價格/份
|
蒸餾咖啡(Espresso)
|
25
|
摩卡(Mocha)
|
10
|
深度烘焙咖啡(DarkRoast)
|
20
|
奶泡(Whip)
|
8
|
現(xiàn)采用裝飾器(Decorator)模式來實現(xiàn)計算費用的功能,得到如圖5-1所示的類圖

【C++代碼】
#include <iostream>
#include <string>
using namespace std;
const int ESPRESSO_PRICE = 25;
const int DRAKROAST_PRICE = 20;
const int MOCHA_PRICE = 10;
const int WHIP_PRICE = 8;
class Beverage { //飲料
(1) :string description;
public:
(2) ( ){ return description; }
(3) ;
};
class CondimentDecorator : public Beverage { //配料
protected:
(4) ;
};
class Espresso : public Beverage { //蒸餾咖啡
public:
Espresso ( ) {description="Espresso"; }
int cost ( ){return ESPRESSO_PRICE; }
};
class DarkRoast : public Beverage { //深度烘焙咖啡
public:
DarkRoast( ){ description = "DardRoast"; }
int cost( ){ return DRAKROAST_PRICE; }
};
class Mocha : public CondimentDecorator { //摩卡
public:
Mocha(Beverage*beverage){ this->beverage=beverage; }
string getDescription( ){ return beverage->getDescription( )+",Mocha"; }
int cost( ){ return MOCHA_PRICE+beverage->cost( ); }
};
class Whip :public CondimentDecorator { //奶泡
public:
Whip(Beverage*beverage) { this->beverage=beverage; }
string getDescription( ) {return beverage->getDescription( )+",Whip"; }
int cost( ) { return WHIP_PRICE+beverage->cost( ); }
};
int main() {
Beverage* beverage = new DarkRoast( );
beverage=new Mocha( (5) );
beverage=new Whip( (6) );
cout<<beverage->getDescription ( )<<"¥"<<beverage->cost( ) endl;
return 0;
}
編譯運行上述程序,其輸出結果為:
DarkRoast, Mocha, Whip ¥38
信管網參考答案:
查看解析:
www.xomuzic.com/st/3811911754.html
6、閱讀下列說明和Java代碼,將應填入(n)處的字句寫在答題紙的對應欄內。
【說明】
某咖啡店當賣咖啡時,可以根據(jù)顧客的要求在其中加入各種配料,咖啡店會根據(jù)所加入的配料來計算費用??Х鹊晁目Х燃芭淞系姆N類和價格如下表所示。
咖啡
|
價格/杯
|
配 料
|
價格/份
|
蒸餾咖啡(Espresso)
|
25
|
摩卡(Mocha)
|
10
|
深度烘焙咖啡(DarkRoast)
|
20
|
奶泡(Whip)
|
8
|
現(xiàn)采用裝飾器(Decorator)模式來實現(xiàn)計算費用的功能,得到如圖6-1所示的類圖

【Java代碼】
import java.util.*;
(1) class Beverage { //飲料
String description = "Unknown Beverage";
public (2) (){return description;}
public (3) ;
}
abstract class CondimentDecorator extends Beverage { //配料
(4) ;
}
class Espresso extends Beverage { //蒸餾咖啡
private final int ESPRESSO_PRICE = 25;
public Espresso() { description="Espresso"; }
public int cost() { return ESPRESSO_PRICE; }
}
class DarkRoast extends Beverage { //深度烘焙咖啡
private finalint DARKROAST_PRICE = 20;
public DarkRoast0 { description = "DarkRoast"; }
public int cost(){ rcturn DARKROAST PRICE; }
}
class Mocha extends CondimentDecorator { //摩卡
private final int MOCHA_PRICE = 10;
public Mocha(Beverage beverage) {
this.beverage = beverage;
}
public String getDescription() {
return beverage.getDescription0 + ", Mocha";
}
public int cost() {
return MOCHA_PRICE + beverage.cost();
}
}
class Whip extends CondimentDecorator { //奶泡
private finalint WHIP_PRICE = 8;
public Whip(Beverage beverage) { this.beverage = beverage; }
public String getDescription() {
return beverage.getDescription()+", Whip";
}
public int cost() { return WHIP_PRICE + beverage.cost(); }
}
public class Coffee {
public static void main(String args[]) {
Beverage beverage = new DarkRoast();
beverage=new Mocha( (5) );
beverage=new Whip ( (6) ) ;
System.out.println(beverage.getDescription0 +"¥" +beverage.cost());
}
}
編譯運行上述程序,其輸出結果為:
DarkRoast, Mocha, Whip ¥38
信管網參考答案:
查看解析:
www.xomuzic.com/st/381209990.html