摘要:下面是關于2012下半年軟件設計師下午真題匯總,面對即將到來的軟件設計師考試我們應該心懷這樣的信念:.生命就是奇跡,永遠都不要放棄希望,哪怕希望渺小如豆,我們都要堅持舉著它,即使燭火灼傷了皮膚,我們也不能放棄,否則我們將永遠還在黑暗中。
下面是關于2012下半年軟件設計師下午真題匯總,面對即將到來的軟件設計師考試我們應該心懷這樣的信念:.生命就是奇跡,永遠都不要放棄希望,哪怕希望渺小如豆,我們都要堅持舉著它,即使燭火灼傷了皮膚,我們也不能放棄,否則我們將永遠還在黑暗中。
2012下半年軟件設計師下午真題匯總
【1】● 閱讀下列說明和圖,回答問題1至問題4,將解答填入答題紙的對應欄內。
【說明】
某電子商務系統采用以數據庫為中心的集成方式改進購物車的功能,詳細需求如下:
(1)加入購物車。顧客瀏覽商品,點擊加入購物車,根據商品標識從商品表中讀取商品信息,并更新購物車表。
(2)瀏覽購物車。顧客提交瀏覽購物車請求后,顯示出購物車表中的商品信息。
(3)提交訂單。顧客點擊提交訂單請求,后臺計算購物車表中商品的總價(包括運費)加入訂單表,將購物車表中的商品狀態改為待付款,顯示訂單詳情。若商家改變價格,則刷新后可看到更改后的價格。
(4)改變價格。商家查看訂購自家商品的訂單信息,根據特殊優惠條件修改價格,更新訂單表中的商品價格。
(5)付款。顧客點擊付款后,系統先根據顧客表中關聯的支付賬戶,將轉賬請求(驗證碼、價格等)提交給支付系統(如信用卡系統)進行轉賬;然后根據轉賬結果返回支付狀態并更改購物車表中商品的狀態。
(6)物流跟蹤。商家發貨后,需按訂單標識添加物流標識(物流公司、運單號);然后可根據顧客或商家的標識以及訂單標識,查詢訂單表中的物流標識,并從相應物流系統查詢物流信息。
(7)生成報表。根據管理員和商家設置的報表選項,從訂單表、商品表以及商品分類表中讀取數據,調用第三方服務Crystal Reports生成相關報表。
(8)維護信息。管理員維護(增、刪、改、查)顧客表、商品分類表和商品表中的信息。
現采用結構化方法實現上述需求,在系統分析階段得到如圖1-1所示的頂層數據流圖和圖1-2所示的O層數據流圖。
圖1-1 頂層數據流圖
【問題1】 (4分)
使用說明中的詞語,給出圖1-1中的實體E1~E4的名稱。
【問題2】 (4分)
使用說明中的詞語,給出圖1-2中的數據存儲D1~D4的名稱。
【問題】 (4分)
圖1-2中缺失了數據流,請用說明或圖1-2中的詞語,給出其起點和終點。
【問題4】(3分)
根據說明,給出數據流“轉賬請求”、“顧客訂單物流查詢請求”和“商家訂單物流查詢請求”的各組成數據項。
【2】● 閱讀下列說明和圖,回答問題1至問題3。
【說明】
某會議策劃公司為了方便客戶,便于開展和管理各項業務活動,需要構建一個基于網絡的會議預定系統。
【需求分析】
1.會議策劃公司設有受理部、策劃部和其他部門。部門信息包括部門號、部門名稱、部門主管、電話和郵箱號。每個部門有多名員工處理部門的日常事務,每名員工只能在一個部門工作。每個部門有一名主管負責管理本部門的事務和人員。
2.員工信息包括員工號、姓名、部門號、職位、聯系方式和工資;其中,職位包括主管、業務員、策劃員等。業務員負責受理會議申請。若申請符合公司規定,則置受理標志并填寫業務員的員工號。策劃部主管為已受理的會議申請制定策劃任務,包括策劃內容、參與人數、要求完成時間等。一個已受理的會議申請對應一個策劃任務,一個策劃任務只對應一個已受理的會議申請,但—個策劃任務可由多名策劃員參與執行,且一名策劃員可以參與多項策劃任務。
3.客戶信息包括客戶號、單位名稱、通信地址、所屬省份、聯系人、聯系電話、銀行賬號。其中,一個客戶號標識一個客戶。一個客戶可以提交多個會議申請,但一個會議申請對應一個客戶號,
4.會議申請信息包括申請號、開會日期、會議地點、持續天數、會議人數、預算費用、會議類型、酒店要求、會議室要求、客房類型、客房數、聯系人、聯系方式、受理標志和業務員的員工號等。客房類型有豪華套房、普通套房、標準間、三人間等,且申請號和客房類型決定客房數。
【概念模型設計】
根據需求階段收集的信息,設計的實體聯系圖和關系模式(不完整)如下:
【關系模式設計】
部門(部門號,部門名稱,主管,電話,郵箱號)
員工(員工號,姓名, (a) ,聯系方式,工資)
客戶(客戶號,單位名稱,通信地址,所屬省份,聯系人,聯系電話,銀行賬號)
會議申請( (b) ,開會日期,會議地點,持續天數,會議人數,預算費用,會議類型,酒店要求,會議室要求,客房數,聯系人,聯系方式,受理標志,員工號)
策劃任務( (c) ,策劃內容,參與人數,要求完成時間)
執行策劃( (d) ,實際完成時間)
【問題1】(5分)
根據問題描述,補充五個聯系、聯系的類型,完善圖2-1的實體聯系圖。
【問題2】(7分)
根據實體聯系圖,將關系模式中的空(a)~(d)補充完整(1個空缺處可能有多個數據項)。對會議申請、策劃任務和執行策劃關系模式,用下劃線和#分別指出各關系模式的主鍵和外鍵。
【問題3】(3分)
請說明關系模式“會議申請”存在的問題及解決方案。
【3】● 閱讀下列說明和圖,回答問題1至問題3,將解答填入答題紙的對應欄內。
【說明】
某城市的各公園周邊建造了許多供游客租用的小木屋和營地,為此,該城市設置了一個中心售票處和若干個區域售票處。游客若想租用小木屋或營地,必須前往中心售票處進行預定并用現金支付全額費用。所有的預定操作全部由售票處的工作人員手工完成。現欲開發一信息系統,實現小木屋和營地的預定及管理功能,以取代手工操作。該系統的
主要功能描述如下:
1.管理預定申請。游客可以前往任何一個售票處提出預定申請。系統對來自各個售票處的預定申請進行統一管理。
2.預定。預定操作包含登記游客預定信息、計算租賃費用、付費等步驟。
3.支付管理。游客付費時可以選擇現金和信用卡付款兩種方式。使用信用卡支付可以享受3%的折扣,現金支付沒有折扣。
4.游客取消預定。預定成功之后,游客可以在任何時間取消預定,但需支付賠償金,剩余部分則退還給游客。賠償金的計算規則是,在預定入住時間之前的48小時內取消,支付租賃費用10%的賠償金;在預定入住時間之后取消,則支付租賃費用50%的賠償金。
5.自動取消預定。如果遇到惡劣天氣(如暴雨、山洪等),系統會自動取消所有的預定,發布取消預定消息,全額退款。
6.信息查詢。售票處工作人員查詢小木屋和營地的預定情況和使用情況,以判斷是否能夠批準游客的預定申請。
現采用面向對象方法開發上述系統,得到如表3-1所示的用例列表和表3-2所示的類列表。對應的用例圖和類圖分別如圖3-1和3-2所示。
【問題1】(6分)
根據說明中的描述與表3-1,給出圖3-1中UC1~UC6處所對應的用例名稱。
【問題2】 (7分)
根據說明中的描述與表3-2,給出圖3-2中C1~C7處所對應的類名。
【問題3】(2分)
對于某些需求量非常大的小木屋或營地,說明中功能4的賠償金計算規則,不足以彌補取消預定所帶來的損失。如果要根據預定的時段以及所預定場地的需求量,設計不同層次的賠償金計算規則,需要對圖3-2進行怎樣的修改?(請用文字說明)
【4】● 閱讀下列說明和C代碼,回答問題1至問題3,將解答寫在答題紙的對應欄內。
【說明】
設有n個貨物要裝入若干個容量為C的集裝箱以便運輸,這n個貨物的體積分別為{S1,S2,...,Sn},且有si≤C(1≤i≤ n)。為節省運輸成本,用盡可能少的集裝箱來裝運這n個貨物。
下面分別采用最先適宜策略和最優適宜策略來求解該問題。
最先適宜策略( firstfit)首先將所有的集裝箱初始化為空,對于所有貨物,按照所給的次序,每次將一個貨物裝入第一個能容納它的集裝箱中。
最優適宜策略( bestfit)與最先適宜策略類似,不同的是,總是把貨物裝到能容納它且目前剩余容量最小的集裝箱,使得該箱子裝入貨物后閑置空間最小。
【C代碼】
下面是這兩個算法的C語言核心代碼。
(1)變量說明
n:貨物數
C:集裝箱容量
s:數組,長度為n,其中每個元素表示貨物的體積,下標從0開始
b:數組,長度為n,b[i]表示第i+1個集裝箱當前已經裝入貨物的體積,下標從0開始
i,j:循環變量
k:所需的集裝箱數
min:當前所用的各集裝箱裝入了第i個貨物后的最小剩余容量
m:當前所需要的集裝箱數
temp:臨時變量
(2)函數firstfit
int firstfit__(4)__{
inti,j;
k=0:
for(i=0;i
b[i]=0;
}
for(i=0;i
(1);
while(C-b[j]
j++;
}
(2);
k=k>(j+1)?k:(j+1);
}
returnk;
}
(3)函數bestfit
int bestfit__(5)__ {
int i,j,min,m,temp;
k=0;
for(i=0;i
b[i]=0;
}
for (i=0;i
min=C;
m=k+l;
for(j=0;j< k+l;j++){
temp=C- b[j] - s[i];
if(temp>0&&temp< min){
(3) ;
m=j,
}
}
(4);
k=k>(m+1)?k:(m+1);
}
return k;
}
【問題1】(8分)
根據【說明】和【C代碼】,填充C代碼中的空(1)~(4)。
【問題2】(4分)
根據【說明】和【C代碼】,該問題在最先適宜和最優適宜策略下分別采用了(5) 和(6)算法設計策略,時間復雜度分別為 (7) 和 (8)(用O符號表示)。
【問題3】(3分)
考慮實例n= 10,C= 10,各個貨物的體積為{4,2,7,3,5,4,2,3,6,2}。該實例在最先適宜和最優適宜策略下所需的集裝箱數分別為(9)和(10)。考慮一般的情況,這兩種求解策略能否確保得到最優解?(11) (能或否)
【5】● 閱讀下列說明和C++代碼,將應填入(n)處的字句寫在答題紙的對應欄內。
【說明】
現欲開發一個軟件系統,要求能夠同時支持多種不同的數據庫,為此采用抽象工廠模式設計該系統。以SQL Server和Access兩種數據庫以及系統中的數據庫表Department為例,其類圖如圖5-1所示。
圖5-1 類圖
【C++代碼】
#include
using namespace std;
class Department{/*代碼省略*/};
class IDepartment{
public:
(1) =0;
(2) =0;
};
class SqlserverDepartment:(3){
public:
void Insert(Department* department){
cout <<"Insert a record into Department in SQL Server!\n";
∥其余代碼省略
}
Department GetDepartment(int id){
/*代碼省略*/
}
};
class AccessDepartment: (4) {
public:
void Insert(Department* department){
cout <<"Insert a record into Department in ACCESS!\n";
∥其余代碼省略
}
Department GetDepartment(int id){
/*代碼省略*/
}
};
(5){
public:
(6)=0;
};
class SqlServerFactory:public IFactory{
public:
IDepartment*CreateDepartment(){ return new SqlserverDepartment(); }
∥其余代碼省略
};
class AccessFactory:public IFactory{
public:
IDepartment* CreateDepartment(){ return new AccessDepartment();}
∥其余代碼省略
};
【6】● 閱讀下列說明和Java代碼,將應填入(n)處的字句寫在答題紙的對應欄內。
【說明】
現欲開發一個軟件系統,要求能夠同時支持多種不同的數據庫,為此采用抽象工廠模式設計該系統。以SQL Server和Access兩種數據庫以及系統中的數據庫表Department為例,其類圖如圖6-1所示。
圖6-1 類圖
【Java代碼】
import jav
(6)A.util.*;
class Department{/*代碼省略*/}
interface IDepartment{
(1) ;
(2) ;
}
class SqlserverDepartment (3) {
public voidInsert(Department department){
System.out.println(”Insert a record into Department in SQL Server!");
∥其余代碼省略
}
public Department GetDepartment(int id){
/*代碼省略*/
}
}
classAccessDepartment(4) {
public void Insert(Department department){
System.out.println("Insert a record into Department in ACCESS!”);
∥其余代碼省略
}
public Department GetDepartment(int id){
/*代碼省略*/
}
}
(5) {
(6) ;
}
class SqlServerFactory implements IFactory{
public IDepartment CreateDepartment(){
retum new SqlserverDepartment();
}
∥其余代碼省略
}
class AccessFactory implements IFactory{
public IDepartment CreateDepartment(){
return new AccessDepartment();
}
∥其余代碼省略
}
軟考備考資料免費領取
去領取