中文字幕综合一区,伊人av网,欧美中日韩在线,亚洲国产香蕉视频,黄视频在线免费,天天操天天爱天天爽,狠狠躁天天躁

專業(yè)軟件設計師網站|培訓機構|服務商(加客服微信:cnitpm或QQ:800184589進軟件設計師學霸群)

軟題庫 培訓課程
當前位置:信管網 >> 軟件設計師 >> 案例分析 >> 文章內容
2006年上半年軟件設計師下午案例分析真題文字版
來源:信管網 2021年05月17日 【所有評論 分享到微信

免費下載軟件設計師歷年真題:http://www.jazzmuze.com/zhenti/rs.html
該套題在線考試:http://www.jazzmuze.com/exam/examam.aspx?t1=2&sid=535632
1、 試題一

閱讀下列說明以及數據流圖,回答問題1、問題2和問題3。
[說明]
某學校建立了一個網上作業(yè)提交與管理系統(tǒng),基本功能描述如下:
(1)賬號和密碼。任課老師用賬號和密碼登錄系統(tǒng)后,提交所有選課學生的名單。系統(tǒng)自動為每個選課學生創(chuàng)建登錄系統(tǒng)的賬號和密碼。
(2)作業(yè)提交。學生使用賬號和密碼登錄系統(tǒng)后,可以向系統(tǒng)申請所選課程的作業(yè)。系統(tǒng)首先檢查學生的當前狀態(tài),如果該學生還沒有做過作業(yè),則從數據庫服務器申請一份作業(yè)。若申請成功,則顯示需要完成的作業(yè)。學生需在線完成作業(yè),單擊“提交”按鈕上交作業(yè)。
(3)在線批閱。系統(tǒng)自動在線批改作業(yè),顯示作業(yè)成績,并將該成績記錄在作業(yè)成績統(tǒng)計文件中
[問題1]
如果將數據庫服務器(記為db.作為一個外部實體,那么在繪制該系統(tǒng)的數據流圖時,還應有哪些外部實體和數據存儲?
[問題2]
根據說明結合問題1的解答,指出在該系統(tǒng)的頂層數據流圖中應有哪些數據流。請采用說明中的詞匯給出這些數據流的起點、終點以及數據流名稱,下表給出了數據流的部分信息,請?zhí)畛淇杖碧帯?br />
3、[問題3]
根據數據流圖的設計原則,閱讀下圖所示的數據流圖,找出其中的錯誤之處。





信管網參考答案:
查看解析:www.jazzmuze.com/st/2453621253.html


2、 試題二

閱讀下列說明以及uml類圖,回答問題1、問題2和問題3。
[說明]
某客戶信息管理系統(tǒng)中保存著兩類客戶的信息。
(1)個人客戶,對于這類客戶,系統(tǒng)保存了其客戶標識(由系統(tǒng)生成)和基本信息 (包括姓名、住宅電話和e-mail)。
(2)集團客戶。集團客戶可以創(chuàng)建和管理自己的若干名聯系人。對于這類客戶,系統(tǒng)除了保存其客戶標識(由系統(tǒng)生成)之外,也保存了其聯系人的信息。聯系人的信息包括姓名、住宅電話、e-mail、辦公電話以及職位。
該系統(tǒng)除了可以保存客戶信息之外,還具有以下功能:
(1)向系統(tǒng)中添加客戶(addcustomer);
(2)根據給定的客戶標識,在系統(tǒng)中查找該客戶(getcustomer):
(3)根據給定的客戶標識,從系統(tǒng)中刪除該客戶(removecustomer):
(4)創(chuàng)建新的聯系人(addcontact):
(5)在系統(tǒng)中查找指定的聯系人(getcontact);
(6)從系統(tǒng)中刪除指定的聯系人(removecontact)。
該系統(tǒng)采用面向對象方法進行開發(fā)。在面向對象分析階段,根據上述描述,得到如下表所示的類。

描述該客戶信息管理系統(tǒng)的uml類圖如下圖所示。

[問題1]
請使用說明中的術語,給出上圖中類customer和類person的屬性。
[問題2]
識別關聯的多重度是面向對象建模過程中的一個重要步驟。根據說明中給出的描述,完成圖中的(1)~(6)。
[問題3]
根據說明中的敘述,抽象出如下表所示的方法,請指出上圖中的類customer- informationsystem和

信管網參考答案:
查看解析:www.jazzmuze.com/st/2453726703.html


3、 試題三

閱讀下列說明,回答問題1、問題2和問題3。
[說明]
某單位資料室需要建立一個圖書管理系統(tǒng),初步的需求分析結果如下:
(1)資料室有圖書管理員若干名,他們負責己購入圖書的編目和借還工作,每名圖書管理員的信息包括工號和姓名;
(2)讀者可在閱覽室讀書,也可通過圖書流通室借還圖書,讀者信息包括讀者d、姓名、電話和e-mail,系統(tǒng)為不同讀者生成不同的讀者id;
(3)每部書在系統(tǒng)中對應唯一的一條圖書在版編目數據(cip,以下簡稱書目),書目的基本信息包括isbn號、書名、作者、出版商、出版年月,以及本資料室擁有該書的冊數(以下簡稱冊數),不同書目的isbn號不相同:
(4)資料室對于同一書目的圖書可擁有多冊(本),圖書信息包括圖書id、isbn號、存放位置、當前狀態(tài),每一本書在系統(tǒng)中被賦予唯一的圖書id:
(5)一名讀者最多只能借閱十本圖書,且每本圖書最多只能借兩個月,讀者借書時需由圖書管理員登記讀者①、所借圖書d、借閱時間和應還時間,讀者還書時圖書管
理員在對應的借書信息中記錄歸還時間;
(6)當某書目的可借出圖書的數量為零時,讀者可以對其進行預約登記,即記錄讀者id、需要借閱的圖書的isbn號、預約時間。
某書目的信息,以及與該書目對應的圖書信息,如下表所示。

系統(tǒng)的主要業(yè)務處理如下。
(1)入庫管理:圖書購進入庫時,管理員查詢本資料室的書目信息,若該書的書目尚未建立,則由管理員編寫該書的書月信息并輸入系統(tǒng),然后編寫并輸入圖書信息;否則,修改該書目的冊數,然后編寫并輸入圖書信息,對于進入流通室的書,其初始狀態(tài)為“未借出”,而送入閱覽室的書的狀態(tài)始終為“不外借”。
(2)借書管理:讀者借書時,若有,則由管理員為該讀者辦理借書手續(xù),并記錄該讀者的借書信息,同時將借出圖書的狀態(tài)修改為“已借出”。
(3)預約管理:若圖書流通室沒有讀者要借的書,則可為該讀者建立預約登記,需要記錄讀者id、書的isbn號、預約時間和預約期限(最長為10天)。一旦其他讀者歸還這種書,就自動通知該預約讀者。系統(tǒng)將自動清除超出預約期限的預約記錄并修改相關信息。
(4)還書管理:讀者還書時,則記錄相應借還信息中的“歸還時間”,對于超期歸還者,系統(tǒng)自動計算罰金(具體的計算過程此處省略)。系統(tǒng)同時自動查詢預約登記表,若存在其他讀者預約該書的記錄,則將該圖書的狀態(tài)修改為“已預約”,并將該圖書id寫入相應的預約記錄中(系統(tǒng)在清除超出預約期限的記錄時解除該圖書的“已預約”狀態(tài));否則,將該圖書的狀態(tài)修改為“未借出”。
(5)通知處理:對于己到期且未歸還的圖書,系統(tǒng)通過e-mail自動通知讀者:若讀者預約的書已到,系統(tǒng)則自動通過e-mail通知該讀者來辦理借書手續(xù)。
[問題1]
根據以上說明設計的實體聯系圖如下圖所示,請指出讀者與圖書、書目與讀者、書目與圖書之間的聯系類型。

[問題2]
該圖書管理系統(tǒng)的主要關系模式如下,請補充“借還記錄”和“預約登記”關系中的空缺。
管理員(工號,姓名)
讀者(讀者id,姓名,電話,e-mail)
書目(isbn號,書名,作者,出版商,出版年月,冊數,經辦人)
圖書(圖書id,isbn號,存放位置,狀態(tài),經辦人)
借還記錄(  (a)  ,借出時間,應還時間,歸還時間)
預約登記(   (b)  ,預約時間,預約期限,圖書id.
注:時間格式為“年.月.日 時:分:秒”。
[問題3]
請指出問題2中給出的讀者、書目關系模式的主鍵,以及圖書、借還記錄和預約登記關系模式的主鍵和外鍵。
信管網參考答案:
查看解析:www.jazzmuze.com/st/245388453.html


4、 試題四

閱讀以下說明,回答問題1、問題2和問題3。
[說明]
某單位正在使用一套c/s模式的應用軟件系統(tǒng),現在需要升級為b/s應用模式,但需要保持業(yè)務的連續(xù)性。開發(fā)人員提出用web service作為中間層的接口進行開發(fā)。
[問題1]
請用120字以內文字,從業(yè)務的繼承性、升級成本(時間、工作量)和擴展性三個方面簡要說明開發(fā)人員所提方案的優(yōu)點。
[問題2]
web service的三個基本技術是wsdl、soap、uddi,它們都是以xml為基礎定義的。請用120字以內文字,簡要說明wsdl、soap和uddi的作用。
[問題3]
服務注冊中心、服務提供者和服務請求者之間的交互和操作構成了web service的體系結構,如下圖所示。請用180字以內文字,說明這三者的主要功能及其交互過程。

信管網參考答案:
查看解析:www.jazzmuze.com/st/2453915560.html


5、 試題五

閱讀下列說明、圖和c代碼。
[說明5-1]
b樹是一種多叉平衡查找樹。一棵m階的b樹,或為空樹,或為滿足下列特性的m叉樹:
①樹中每個結點最多有m棵子樹;
②若根結點不是葉子結點,則它至少有兩棵子樹;
⑧除根之外的所有非葉子結點至少有[m/2]棵子樹;
④所有的非葉子結點中包含下列數據信息:
(n,a0,k1,a1,k2,a2,  …,kn,an)其中:ki(i=1,2,…,n)為關鍵字,且ki<ki+1(i=1,2,…,n-1);ai(i=0,1,…,n)為指向子樹根結點的指針,且指針ai-1,所指子樹中所有結點的關鍵字均小于ki,ai+1,所指子樹中所有結點的關鍵字均大于ki,n為結點中關鍵字的數目。
⑤所有的葉子結點都出現在同一層次上,并且不帶信息(可以看作是外部結點或查找失敗的結點,實際上這些結點不存在,指向這些結點的指針為空)。
例如,一棵4階b樹如下圖所示(結點中關鍵字的數目省略)。

b樹的階m、bool類型、關鍵字類型及b樹結點的定義如下:
#define  m  4                                    /*b樹的階*/
typedef enum {false=0,true=1}bool;
typedef int elemkeytype;
typedef struct btreenode {
int numkeys;                                 /*結點中關鍵字的數日*/
struct btreenode*parent;                    /*指向父結點的指針,樹根的父結點指針為空*/
struct btreenode *a[m];                    /*指向子樹結點的指針數組*/
elemkeytype  k[m];                          /*存儲關鍵字的數組,k[0]閑置不用*/
}btreenode;
函數searchbtree(btreenode*root,elemkcytypeakey,btreenode:*pb)的功能是:在給定的一棵m階b樹中查找關鍵字akey所在結點,若找到則返回true,否則返回 false。其中,root是指向該m階b樹根結點的指針,參數ptr返回akey所在結點的指針,若akey不在該b樹中,則ptr返回查找失敗時空指針所在結點的指針。例如,在上圖所示的4階b樹中查找關鍵字25時,ptr返回指向結點e的指針。
注;在結點中查找關鍵字akey時采用二分法。
[函數5-1]
bool searchbtree(btreenode* root, elemkeytype akey, btreenode **ptr)
{
int  lw, hi, mid;
btreenode*p = root;
*ptr = null;
while ( p ) {
1w = 1;   hi=   (1)  ;
while (1w <= hi) {
mid = (1w + hi)/2;
if (p -> k[mid] == akey) {
*ptr = p;
return true;
}
else
if (  (2)  )
hi=mid - 1;
else
1w = mid + 1;
}
*ptr = p;
p =   (3)  ;
}
return false;
}
[說明5-2]
在m階b樹中插入一個關鍵字時,首先在最接近外部結點的某個非葉子結點中增加一個關鍵字,若該結點中關鍵字的個數不超過m-1,則完成插入;否則,要進行結點的“分裂”處理。所謂“分裂”,就是把結點中處于中間位置上的關鍵字取出來并插入其父結點中,然后以該關鍵字為分界線,把原結點分成兩個結點?!胺至选边^程可能會一直持續(xù)到樹根,若樹根結點也需要分裂,則整棵樹的高度增加1。
例如,在上圖所示的b樹中插入關鍵字25時,需將其插入結點e中。由于e中已經有3個關鍵字,因此將關鍵字24插入結點e的父結點b,并以24為分界線將結點e分裂為e1和e2兩個結點,結果如下圖所示。

函數isgrowing(btreenode*root,elemkeytypeakey)的功能是:判斷在給定的m階b樹中插入關鍵字akey后,該b樹的高度是否增加,若增加則返回true,否則返回false。其中,root是指向該m階b樹根結點的指針。
在函數isgrwing中,首先調用函數searchbtree(即函數5-1)查找關鍵字akey是否在給定的m階b樹中,若在,則返回false(表明無需插入關鍵字akey,樹的高度不會增加);否則,通過判斷結點中關鍵字的數目考查插入關鍵字akey后該b樹的高度是否增加。
[函數5-2]
bool isgrowing(btreenode* root, elernkeytype akey)
{   btreenode *t, *f;
if( !searchbtree(   (4)   ) ) {
t=f;
while (  (5)  ) {
t=t -> parent;
}
if( !t )
return true;
}
return false;
}
信管網參考答案:
查看解析:www.jazzmuze.com/st/245408738.html


6、 試題六

閱讀下列說明、圖和c++代碼。
[說明]
某訂單管理系統(tǒng)的部分uml類圖如下圖所示。

上圖中,product表示產品,productlist表示產品目錄,order表示產品訂單,orderitem表示產品訂單中的一個條目,orderlist表示訂單列表,salessystem提供訂單管理系統(tǒng)的操作接口。
請完善類order的成員函數getorderedamount()和類salessystem的stafistic()方法,各個類的屬性及部分方法定義參見下面的c++代碼。
[c++代碼]
class product {                                        //產品
private:
string pid;                                       //產品識別碼
string description;                              //產品描述
double price;                                   ///產品單價
public:
void setproductprice(double price);            //設置產品單價
string getproduetld();                         //獲取產品識別碼
string getproduetdescriprion 0;              //獲取產品描述
double getproductprice0;                    //獲得產品單價
//其他成員省略
};
class productlist {                             //產品列表類
private:
vector <product> products;
public:
productlist();
product getproductbylndex(int i);          //獲得產品列表中的第i件產品
void addproduct(product t);                //在產品列表中加入一件產品
product * getproductbyid(string pid);      //獲得識別碼為pid的產品指針
unsigned iht getproductamount();           //獲得產品列表中的產品婁量
};
class orderitem {                               //訂單條目類
private:
product *productptr;                      //指向被訂購產品的指針
int quantity;                             //訂購數量
public:
orderitem (product *,iht);
product * getproductptr o;                //獲得指向被訂購產品的指針
int getquantity ();                       //獲取被訂剛強產品數量
};
class order {                                  //訂單類
private:
unsigned int orderid;                    //訂單識別號
vector<orderltem> items;               //訂單內容(訂單項)
public:
order(unsigned int orderid);              //獲得識別碼為fid的產品在當前訂單中被訂購的數量
int getorderedamount(string fid);
void additem(product *productptr,unsigned int n);    //在訂單中增加一個訂單項
};
class orderlist {                                        //訂單列表類
private:
vector<order> orders;
public:
orderlist();
//begin()返回指向訂單列表第一個元素的迭代器(指針)
virtual vector<order>::iterator orderlist::begin();
//end()返回指向訂單列表最后一個元素之后的迭代器(指向一個不存在的元素)
virtual vector<order>::iterator orderlist::end();
void addorder(order t);             //在訂單列表中加入一份訂單
//其他成員省略
};
class salessystem{
private:
productlist catalog;                 //產品目錄
orderlist sales;                    //訂單列表
public:
salessystem();
void statistic();                  //統(tǒng)計所有產品的訂購情況
//其他成員省略
};
//在訂單中查找識別碼為tid的產品的訂購數量,若該產品沒有被訂購,則返回0
int order::getorderedamount(string tid)
{   for (int k=0; k < items.size(); k++) {
if(  (1)  ==tid)
return   (2)  ;
}
return 0;
}
//方法statistic()依次統(tǒng)計產品目錄中每個產品的訂購總量,并打印輸出
//每個產品的識別碼、描述、訂購總量和訂購金額
void salessystem::statistic()
{   unsigned int k, t, ordered_qty = 0;
vector<order>::iterator it;   product p;
cout<<''產品識別碼\t描述\t\t訂購數量\t金額''<<endl;
for (k = 0; k < catalog.gctproductamount(); k++){//遍歷產品列表
p =  (3)  ;            //從產品列表取得一件產品信息存入變量p
ordered_qty = 0;
//通過迭代器變量it遍歷訂單列表中的每一份訂單
for (it = sales. begin();   (4)   : it++) {
//根據產品識別碼獲得產品p在當前訂單中被訂購的數量
t =  (5)  (p.getproductld());
ordered_qty +=t;
}
cout << p.getproducfld() << "\t\t"<< p.gntproductdescription() << "\t\t";
cout <<ordered_qty << "\t\t" << p.getproductprice() * ordered_qty << endl;
}
}
信管網參考答案:
查看解析:www.jazzmuze.com/st/2454117374.html


7、 試題七

閱讀下列說明、圖以及java程序。
[說明]
某訂單管理系統(tǒng)的部分uml類圖如下圖所示。



上圖中,product表示產品,productlist表示所銷售產品的列表,order表示產品訂單,orderltem表示產品訂單中的一個條目,orderlist表示訂單列表,salessystem提供訂單管理系統(tǒng)的操作接口。各個類的部分屬性和方法說明如下表所示。

可以使用類java.util.arraylist<e>米實現對象的聚集關系,如上圖中orderlist與 order之間的聚集關系。
for-each循環(huán)提供了一種遍歷對象集合的簡單方法。在for-each循環(huán)中,可以指定需要遍歷的對象集合以及用來接收集合中每個元素的變量,其語法如下:
for(用來接收集合中元素的變量:需要遍歷的對象集合)
如果要使用for-each循環(huán)來遍歷對象集合,那么包含該對象集合的類必須實現接口 java.util.iterable<t>。
java程序7-1和java程序7-2分別給出了類orderlist和方法statistic的java代碼
[java程序7-1]
import java.util.*;
public class orderlist  (1)   {
private arraylist<order> orders;
public orderlist0 {
this.orders = new arraylist<order>();
}
public void addorder(order orde0
this.orders.add(order);
}
public iterator<order> iterator() {
return  (2)  ;
}
public iht getnumberoforders0 {
return this.orders.size();
}
}
[java程序7-21]
import java.u61.*;
public class salessystem {
private productlist catalog;
private orderlist sales;
private static printwriter  stdout = new  printwriter(system.out, true);
public void statistic() {
for (product product:   (3)  ) {
iht number = 0;
for (order order:   (4)  ) {
for (   (5)  : order) {
if (produet.equals(item.getproduct()))
number += item. getquantity();
}
}
stdout.println(product .getcode() +"  "
+ product.getdescription() +"  "
+ number +"  "+ number * product.getprice());
}
}
//其余的方法末列出
}
信管網參考答案:
查看解析:www.jazzmuze.com/st/245421009.html
掃碼關注公眾號

溫馨提示:因考試政策、內容不斷變化與調整,信管網網站提供的以上信息僅供參考,如有異議,請以權威部門公布的內容為準!

信管網致力于為廣大信管從業(yè)人員、愛好者、大學生提供專業(yè)、高質量的課程和服務,解決其考試證書、技能提升和就業(yè)的需求。

信管網軟考課程由信管網依托10年專業(yè)軟考教研傾力打造,官方教材參編作者和資深講師坐鎮(zhèn),通過深研歷年考試出題規(guī)律與考試大綱,深挖核心知識與高頻考點,為學員考試保駕護航。面授、直播&錄播,多種班型靈活學習,滿足不同學員考證需求,降低課程學習難度,使學習效果事半功倍。

相關內容

發(fā)表評論  查看完整評論  

推薦文章