摘要:學習時的痛苦是暫時的,未學到的痛苦是終生的。所以請大家堅信:在備考軟件設計師的道路上你收獲的都將是你日后的寶藏。下面是關于2011上半年軟件設計師下午真題匯總。
>>>2017年軟件設計師網絡課堂課
>>>軟件設計師歷年真題題庫
>>>2017年軟件設計師考試指南
學習時的痛苦是暫時的,未學到的痛苦是終生的。所以請大家堅信:在備考軟件設計師的道路上你收獲的都將是你日后的寶藏。下面是關于2011上半年軟件設計師下午真題匯總。
【1】● 閱讀下列說明和圖,回答問題1至問題4,將解答填入答題紙的對應欄內。
【說明】
某醫院欲開發病人監控系統。該系統通過各種設備監控病人的生命體征,并在生命體征異常時向醫生和護理人員報警。該系統的主要功能如下:
(1)本地監控:定期獲取病人的生命體征,如體溫、血壓、心率等數據。
(2)格式化生命體征:對病人的各項重要生命體征數據進行格式化,然后存入日志文件并檢查生命體征。
(3)檢查生命體征:將格式化后的生命體征與生命體征范圍文件中預設的正常范圍進行比較。如果超出了預設范圍,系統就發送一條警告信息給醫生和護理人員。
(4)維護生命體征范圍:醫生在必要時(如,新的研究結果出現時)添加或更新生命體征值的正常范圍。
(5)提取報告:在醫生或護理人員請求病人生命體征報告時,從日志文件中獲取病人生命體征生成體征報告,并返回給請求者。
(6)生成病歷:根據日志文件中的生命體征,醫生對病人的病情進行描述,形成病歷存入病歷文件。
(7)查詢病歷:根據醫生的病歷查詢請求,查詢病歷文件,給醫生返回病歷報告。
(8)生成治療意見:根據日志文件中的生命體征和病歷,醫生給出治療意見,如處方等,并存入治療意見文件。
(9)查詢治療意見:醫生和護理人員查詢治療意見,據此對病人進行治療。
現采用結構化方法對病人監控系統進行分析與設計,獲得如圖1-1所示的頂層數據流圖和圖1-2所示的0層數據流圖。
【問題1】(3分)
使用說明中的詞語,給出圖1-1中的實體E1~E3的名稱。
【問題2】(4分)
使用說明中的詞語,給出圖1.2中的數據存儲D1~D4的名稱。
【問題3】 (6分)
圖1-2中缺失了4條數據流,使用說明、圖1-1和圖1-2中的術語,給出數據流的名稱及其起點和終點。
【問題4】(2分)
說明實體El和E3之間可否有數據流,并解釋其原因。
【2】● 閱讀下列說明,回答問題l至問題3,將解答填入答題紙的對應欄內。
【說明】
某服裝銷售公司擬開發一套服裝采購管理系統,以便對服裝采購和庫存進行管理。
【需求分析】
(1)采購系統需要維護服裝信息及服裝在倉庫中的存放情況。服裝信息主要包括:服裝編碼、服裝描述、服裝類型、銷售價格、尺碼和面料,其中,服裝類型為銷售分類,服裝按銷售分類編碼。倉庫信息包括:倉庫編碼、倉庫位置、倉庫容量和庫管員。系統記錄庫管員的庫管員編碼、姓名和級別。一個庫管員可以管理多個倉庫,每個倉庫有一名庫管員。一個倉庫中可以存放多類服裝,一類服裝可能存放在多個倉庫中。
(2)當庫管員發現有一類或者多類服裝缺貨時,需要生成采購訂單。一個采購訂單可以包含多類服裝。每類服裝可由多個不同的供應商供應,但具有相同的服裝編碼。采購訂單主要記錄訂單編碼、訂貨日期和應到貨日期,并詳細記錄所采購的每類服裝的數量、采購價格和對應的多個供應商。
(3)系統需記錄每類服裝的各個供應商信息和供應情況。供應商信息包括:供應商編碼、供應商名稱、地址、企業法人和聯系電話。供應情況記錄供應商所供應服裝的服裝類型和服裝質量等級。一個供應商可以供應多類服裝,一類服裝可由多個供應商供應。庫管員根據入庫時的服裝質量情況,設定或修改每個供應商所供應的每類服裝的服裝質量等級,作為后續采購服裝時,選擇供應商的參考標準。
【概念模型設計】
根據需求階段收集的信息,設計的實體聯系圖(不完整)如圖2-1所示。
【邏輯結構設計】
根據概念模型設計階段完成的實體聯系圖,得出如下關系模式(不完整):
庫管員(庫管員編碼,姓名,級別)
倉庫信息( (1) ,倉庫位置,倉庫容量)
服裝(服裝編碼,服裝描述,服裝類型,尺碼,面料,銷售價格)
供應商(供應商編碼,供應商名稱,地址,聯系電話,企業法人)
供應情況( (2) ,服裝質量等級)
采購訂單( (3) )
采購訂單明細(____(4) )
【問題1】(6分)
根據需求分析的描述,補充圖2.1中的聯系和聯系的類型。
【問題2】(6分)
根據補充完整的圖2-1,將邏輯結構設計階段生成的關系模式中的空(1)~(4)補充完整,并給出其主鍵(用下劃線指出)。
【問題3】(3分)
如果庫管員定期需要輪流對所有倉庫中的服裝質量進行抽查,對每個倉庫中的每一類被抽查服裝需要記錄一條抽查結果,并且需要記錄抽查的時間和負責抽查的庫管員。請根據該要求,對圖2-1進行修改,畫出修改后的實體間聯系和聯系的類型。
【3】● 閱讀下列說明和圖,回答問題l至問題3,將解答填入答題紙的對應欄內。
【說明】
一個簡單的圖形編輯器提供給用戶的基本操作包括:創建圖形、創建元素、選擇元素以及刪除圖形。圖形編輯器的組成及其基本功能描述如下:
(1)圖形由文本元素和圖元元素構成,圖元元素包括線條、矩形和橢圓。
(2)顯示在工作空間中,一次只能顯示一張圖形(即當前圖形,current)。
(3)提供了兩種操作圖形的工具:選擇工具和創建工具。對圖形進行操作時,一次只能使用一種工具(即當前活動工具,active)
① 創建工具用于創建文本元素和圖元元素。
② 于顯示在工作空間中的圖形,使用選擇工具能夠選定其中所包含的元素,可以選擇一個元素,也可以同時選擇多個元素。被選擇的元素稱為當前選中元素( selected)。
③ 種元素都具有對應的控制點。拖拽選定元素的控制點,可以移動元素或者調整元素的大小。
現采用面向對象方法開發該圖形編輯器,使用UML進行建模。構建出的用例圖和類圖分別如圖3-1和3-2所示。
【問題1】 (4分)
根據說明中的描述,給出圖3-1中U1和U2所對應的用例,以及(1)和(2)處所對應的關系。
【問題2】(8分)
根據說明中的描述,給出圖3.2中缺少的C1~C8所對應的類名以及(3)~(6)處所對應的多重度。
【問題3】(3分)
圖3-2中的類圖設計采用了橋接(Bridge)設計模式,請說明該模式的內涵。
【4】● 閱讀下列說明和C代碼,回答問題1至問題3,將解答寫在答題紙的對應欄內。
【說明】
某應用中需要對100000個整數元素進行排序,每個元素的取值在0~5之間。排序算法的基本思想是:對每一個元素x,確定小于等于x的元素個數(記為m),將x放在輸出元素序列的第m個位置。對于元素值重復的情況,依次放入第m-l、m-2、…個位置。例如,如果元素值小于等于4的元素個數有10個,其中元素值等于4的元素個數有3個,則4應該在輸出元素序列的第10個位置、第9個位置和第8個位置上。算法具體的步驟為:
步驟1:統計每個元素值的個數。
步驟2:統計小于等于每個元素值的個數。
步驟3:將輸入元素序列中的每個元素放入有序的輸出元素序列。
【C代碼】
下面是該排序算法的C語言實現。
(1)常量和變量說明
R: 常量,定義元素取值范圍中的取值個數,如上述應用中R值應取6
i:循環變量
n:待排序元素個數
a:輸入數組,長度為n
b:輸出數組,長度為n
c:輔助數組,長度為R,其中每個元素表示小于等于下標所對應的元素值的個數。
(2)函數sort
1 void sort(int n,int a[],int b[]){
2 int c[R],i;
3 for (i=0;i< (1) :i++){
4 c[i]=0;
5 }
6 for(i=0;i
7 c[a[i]] = (2) ;
8 }
9 for(i=1;i
10 c[i]= (3)
11 }
12 for(i=0;i
13 b[c[a[i]]-1]= (4) ;
14 c[a[i]]=c[a[i]]-1;
15 }
16 }
【問題1】(8分)
根據說明和C代碼,填充C代碼中的空缺(1)~(4)。
【問題2】(4分)
根據C代碼,函數的時間復雜度和空間復雜度分別為 (5) 和 (6) (用O符號表示)。
【問題3】(3分)
根據以上C代碼,分析該排序算法是否穩定。若穩定,請簡要說明(不超過100字);若不穩定,請修改其中代碼使其穩定(給出要修改的行號和修改后的代碼)。
【5】● 閱讀下列說明和C++代碼,將應填入空(n)處的字句寫在答題紙的對應欄內。
【說明】
某飯店在不同的時段提供多種不同的餐飲,其菜單的結構圖如下圖所示。
現在采用組合(Composition)模式來構造該飯店的菜單,使得飯店可以方便地在其中增加新的餐飲形式,得到如下圖所示的類圖。其中MenuComponent為抽象類,定義了添加(add)新菜單和打印飯店所有菜單信息(print)的方法接口。類Menu表示飯店提供的每種餐飲形式的菜單,如煎餅屋菜單、咖啡屋菜單等。每種菜單中都可以添加子菜單,例如圖中的甜點菜單。類MenuItem表示菜單中的菜式。
()
【C++代碼】
#include
#include
#include
using namespace std;
class MenuComponent{
protected: string name;
public:
MenuComponent(string name){ this->name= name;)
string getName(){ return name;)
(1) ; //添加新菜單
virtual void print()=0;//打印菜單信息
};
class Menultem: public MenuComponent{
private:double price;
public:
Menultem(string name, double price):MenuComponent(name){ this->price= price;
double getPrice(){ return price;)
void add(MenuComponent* menuComponent){ retum;}//添加新菜單
void print(){ cout<<" " <
};
class Menu:public MenuComponent{
private: list< (2) > menuComponents;
public:
Menu(string name): MenuComponent(name){}
void add(MenuComponent* menuComponent) //添加新菜單
{ (3) ; }
void print(){
cout<<"\n"<
std::list::iterator iter,
for(iter= menuComponents.begin0; iter!=menuComponents.end0; iter++)
(4) ->print();
}
};
void main0{
MenuComponent* alIMenus= new Menu("ALL MENUS");
MenuComponent* dinerMenu= new Menu("DINER MENU");
……//創建更多的Menu對象,此處代碼省略
alIMenus->add(dinerMenu); //將dinerMenu添加到餐廳菜單中
……//為餐廳增加更多的菜單,此處代碼省略
(5) ->printO; //打印飯店所有菜單的信息
【6】● 閱讀下列說明和Java代碼,將應填入(n)處的字句寫在答題紙的對應欄內。
【說明】
某飯店在不同的時段提供多種不同的餐飲,其菜單的結構圖如下圖所示。
現在采用組合( Composition)模式來構造該飯店的菜單,使得飯店可以方便地在其中增加新的餐飲形式,得到如下圖所示的類圖。其中MenuComponent為抽象類,定義了添加(add)新菜單和打印飯店所有菜單信息(print)的方法接口。類Menu表示飯店提供的每種餐飲形式的菜單,如煎餅屋菜單、咖啡屋菜單等。每種菜單中都可以添加子菜單,例如圖中的甜點菜單。類Menultem表示菜單中的菜式。
【Java代碼】
import jav
(6)A.util.*;
(1) MenuComponent{
protected String name;
(2) ;//添加新菜單
public abstract void print(); //打印菜單信息
public String getName(){ return name;}
}
class Menultem extends MenuComponent{
private double price;
public MenuItem(String name, double price){
this.name= name; this.price= price;
}
public double getPrice(){return price;)
public void add(MenuComponent menuComponent){ return;)//添加新菜單
public void print(){
System.out.print(" "+ getName());
System.out.println(","+ getPrice());
}
}
class Menu extends MenuComponent{
private List menuComponents= new ArrayList();
public Menu(String name){ this.name= name;)
public void add(MenuComponent menuComponent){//添加新菜單
menuComponents. (3);
}
public void print(){
System.out.print("\n"+ getName());
System.out.println(","+"---------------");
Iterator iterator = menuComponents.iterator();
while(iterator.hasNext()){
MenuComponent menuComponent= (MenuComponent)iterator.next();
(4) ;
}
}
}
class MenuTestDrive{
public static void main(String args[]){
MenuComponent aIIMenus= new Menu("ALL MENUS");
MenuComponent dinerMenu = new Menu("DINER MENU”);
……//創建更多的Menu對象,此處代碼省略
allMenus.add(dinerMenu); //將dinerMenu添加到餐廳菜單中
……//為餐廳增加更多的菜單,此處代碼省略
(5); //打印飯店所有菜單的信息
}
}
軟考備考資料免費領取
去領取