免費(fèi)下載軟件設(shè)計(jì)師歷年真題:http://m.xiexiliangjiufa.com/zhenti/rs.html
該套題在線考試:http://m.xiexiliangjiufa.com/exam/examam.aspx?t1=2&sid=535706
1、 試題一
閱讀以下說(shuō)明和圖,回答問(wèn)題1至問(wèn)題4,將解答填入對(duì)應(yīng)欄內(nèi)。
【說(shuō)明】
某高校欲開(kāi)發(fā)一個(gè)成績(jī)管理系統(tǒng),記錄并管理所有選修課程的學(xué)生的平時(shí)成績(jī)和考試成績(jī),其主要功能描述如下;
1.每門課程都有3到6個(gè)單元構(gòu)成,每個(gè)單元結(jié)束后會(huì)進(jìn)行一次測(cè)試,其成績(jī)作為這門課程的千時(shí)成績(jī)。課程結(jié)束后進(jìn)行期末考試,其成績(jī)作為這門課程的考試成績(jī)。
2.學(xué)生的平時(shí)成績(jī)和考試成績(jī)均由每門課程的主講教師上傳給成績(jī)管理系統(tǒng)。
3.在記錄學(xué)生成績(jī)之前,系統(tǒng)需要驗(yàn)證這些成績(jī)是否有效。首先,根據(jù)學(xué)生信息文件來(lái)確認(rèn)該學(xué)生是否選修這門課程,若沒(méi)有,那么這些成績(jī)是無(wú)效的:如果他的確選修了這門課程,再根據(jù)課程信息文件和課程單元信息文件來(lái)驗(yàn)證平時(shí)成績(jī)是否與這門課程所包含的單元相對(duì)應(yīng),如果是,那么這些成績(jī)足有效的,否則無(wú)效。
4.對(duì)于有效成績(jī),系統(tǒng)將其保存在課程成績(jī)文件中。對(duì)于無(wú)效成績(jī),系統(tǒng)會(huì)單獨(dú)將其保存在無(wú)效成績(jī)文件中,并將詳細(xì)情況提交給教務(wù)處。在教務(wù)處沒(méi)有給出具體處理意見(jiàn)之前,系統(tǒng)不會(huì)處理這些成績(jī)。
5.若一門課程的所有有效的平時(shí)成績(jī)和考試成績(jī)都已經(jīng)被系統(tǒng)記錄,系統(tǒng)會(huì)發(fā)送課程完成通知給教務(wù)處,告知該門課程的成績(jī)已經(jīng)齊全。教務(wù)處根據(jù)需要,請(qǐng)求系統(tǒng)生成相應(yīng)的成績(jī)列表,用來(lái)提交考試委員會(huì)審查。
6.在生成成績(jī)列表之前,系統(tǒng)會(huì)生成一份成績(jī)報(bào)告給主講教師,以便核對(duì)是否存在錯(cuò)誤。主講教師須將核對(duì)之后的成績(jī)報(bào)告返還系統(tǒng)。
7.根據(jù)主講教師核對(duì)后的成績(jī)報(bào)告,系統(tǒng)生成相應(yīng)的成績(jī)列表,遞交考試委員會(huì)進(jìn)行審查??荚囄瘑T會(huì)在審查之后,上交一份成績(jī)審查結(jié)果給系統(tǒng)。對(duì)于所有通過(guò)審查的成績(jī),系統(tǒng)將會(huì)生成最終的成績(jī)單,并通知每個(gè)選課學(xué)生。
現(xiàn)采用結(jié)構(gòu)化方法對(duì)這個(gè)系統(tǒng)進(jìn)行分析與設(shè)計(jì),得到如圖1-1所示的頂層數(shù)據(jù)流圖和圖1-2所示的0層數(shù)據(jù)流圖。
【問(wèn)題1】
使用說(shuō)明中的詞語(yǔ),給山圖l-1中的外部實(shí)體e1~e4的名稱。
【問(wèn)題2】
使用說(shuō)明中的詞語(yǔ),給出圖1-2中的數(shù)據(jù)存儲(chǔ)d1~d5的名稱。

【問(wèn)題3】
數(shù)據(jù)流圖1-2缺少了三條數(shù)據(jù)流,根據(jù)說(shuō)明及數(shù)據(jù)流圖1-1提供的信息,分別指出這三條數(shù)據(jù)流的起點(diǎn)和終點(diǎn)。
【問(wèn)題4】
數(shù)據(jù)流圖是在系統(tǒng)分析與總體設(shè)計(jì)階段宏觀地描述系統(tǒng)功能需求的重要圖形化工具,程序流程圖也是軟件開(kāi)發(fā)過(guò)程中比較常用的圖形化工具。簡(jiǎn)要說(shuō)明程序流程圖的適用場(chǎng)合與作用。
信管網(wǎng)參考答案:
查看解析:
m.xiexiliangjiufa.com/st/2455714569.html
2、 試題二
閱讀下列說(shuō)明,回答問(wèn)題1至問(wèn)題4,將解答填入對(duì)應(yīng)欄內(nèi)。
【說(shuō)明】
某汽車維修站擬開(kāi)發(fā)一套小型汽車維修管理系統(tǒng),對(duì)車輛的維修情況進(jìn)行管理。
1.對(duì)于新客戶及車輛,汽車維修管理系統(tǒng)首先登記客戶信息,包括:客戶編號(hào)、客戶名稱、客戶性質(zhì)(個(gè)人、單位)、折扣率、聯(lián)系人、聯(lián)系電話等信息;還要記錄客戶的車輛信息,包括:車牌號(hào)、車型、顏色等信息。一個(gè)客戶至少有一臺(tái)車??蛻艏败囕v信息如表2-1所示。

2.記錄維修車輛的故障信息。包括:維修類型(普通、加急)、作業(yè)分類(大、中、小修)、結(jié)算方式(自付、三包、索賠)等信息。維修廠的員工分為:維修員和業(yè)務(wù)員。車輛維修首先委托給業(yè)務(wù)員。業(yè)務(wù)員對(duì)車輛進(jìn)行檢查和故障分析后,與客戶磋商,確定故障現(xiàn)象,生成維修委托書。如表2-2所示。
3.維修車間根據(jù)維修委托書和車輛的故障現(xiàn)象,在已有的維修項(xiàng)目中選擇并確定一個(gè)或多個(gè)具體維修項(xiàng)目,安排相關(guān)的維修工及工時(shí),生成維修派工單。維修派工單如表2-3所示。
4.客戶車輛在車間修理完畢后,根據(jù)維修項(xiàng)目單價(jià)和維修派工單中的工時(shí)計(jì)算車輛此次維修的總費(fèi)用,記錄在委托書中。
根據(jù)需求階段收集的信息,設(shè)計(jì)的實(shí)體聯(lián)系圖(圖2-1)和關(guān)系模式(不完整)如下所示。圖2-1中業(yè)務(wù)員和維修工是員工的子實(shí)體。
【邏輯結(jié)構(gòu)設(shè)計(jì)】
客戶( (5) ,折扣率,聯(lián)系人,聯(lián)系電話)
車輛(車牌號(hào),客戶編號(hào),車型,顏色,車輛類別)
委托書( (6) ,維修類型,作業(yè)分類,結(jié)算方式,進(jìn)廠時(shí)間,
預(yù)計(jì)完工時(shí)間,登記日期,故障描述,總費(fèi)用)
維修項(xiàng)目(維修項(xiàng)目編號(hào),維修項(xiàng)目,單價(jià))
派工單( (7) ,工時(shí))
員工( (8) ,工種,員工類型,級(jí)別)
【問(wèn)題1】
根據(jù)問(wèn)題描述,填寫圖2-1中(1)~(4)處聯(lián)系的類型。聯(lián)系類型分為一對(duì)一、一對(duì)多和多對(duì)多三種,分別使用1:1,1:n或1:*,m:n或*:*表示。
【問(wèn)題2】
補(bǔ)充圖2-1中的聯(lián)系并指明其聯(lián)系類型。聯(lián)系名可為:聯(lián)系1,聯(lián)系2,…
【問(wèn)題3】
根據(jù)圖2-1和說(shuō)明,將邏輯結(jié)構(gòu)設(shè)計(jì)階段生成的關(guān)系模式中的空(5)~(8)補(bǔ)充完整。
【問(wèn)題4】
根據(jù)問(wèn)題描述,寫出客戶、委托書和派工單這三個(gè)關(guān)系的主鍵。
信管網(wǎng)參考答案:
查看解析:
m.xiexiliangjiufa.com/st/2455829596.html
3、 試題三
閱讀下列說(shuō)明和圖,回答問(wèn)題1至問(wèn)題4,將解答填入對(duì)應(yīng)欄內(nèi)。
【說(shuō)明】
已知某唱片播放器不僅可以播放唱片,而且可以連接電腦并把電腦中的歌曲刻錄到唱片上(同步歌曲)。連接電腦的過(guò)程中還可自動(dòng)完成充電。
關(guān)于唱片,還有以下描述信息:
1.每首歌曲的描述信息包括:歌曲的名字、譜寫這首歌曲的藝術(shù)家以及演奏這首歌曲的藝術(shù)家。只有兩首歌曲的這三部分信息完全相同時(shí),才認(rèn)為它們是同一首歌曲。藝術(shù)家可能是一名歌手或一支由2名或2名以上的歌手所組成的樂(lè)隊(duì)。一名歌手可以不屬于任何樂(lè)隊(duì),也可以屬于一個(gè)或多個(gè)樂(lè)隊(duì)。
2.每張唱片由多條音軌構(gòu)成;一條音軌中只包含一首歌曲或?yàn)榭?,一首歌曲可分布在多條音軌上;同一首歌曲在一張唱片中最多只能出現(xiàn)一次。
3.每條音軌都有一個(gè)開(kāi)始位置和持續(xù)時(shí)間。一張唱片上音軌的次序是非常重要的,因此對(duì)于任意一條音軌,播放器需要準(zhǔn)確地知道,它的下一條音軌和上——條音軌是什么 (如果存在的話)。
根據(jù)上述描述,采用面向?qū)ο蠓椒▽?duì)其進(jìn)行分析與設(shè)計(jì),得到了如表3-1所示的類列表、如圖3-1所示的初始類圖以及如圖3-2所示的描述播放器行為的uml狀態(tài)圖。

【問(wèn)題1】
根據(jù)說(shuō)明中的描述,使用表3-1給出的類的名稱,給出圖3-1中的a~f所對(duì)應(yīng)的類。
【問(wèn)題2】
根據(jù)說(shuō)明中的描述,給山圖3-1中(1)~(6)處的多重度。
【問(wèn)題3】
圖3-1中缺少了一條關(guān)聯(lián),請(qǐng)指出這條關(guān)聯(lián)兩端所對(duì)應(yīng)的類以及每一端的多重度。
【問(wèn)題4】
根據(jù)圖3-2所示的播放器行為uml狀態(tài)圖,給出從“關(guān)閉”狀態(tài)到“播放”狀態(tài)所經(jīng)過(guò)的最短事件序列(假設(shè)電池一開(kāi)始就是有電的)。
信管網(wǎng)參考答案:
查看解析:
m.xiexiliangjiufa.com/st/245592589.html
4、 試題四
閱讀下列說(shuō)明和圖,回答問(wèn)題1至問(wèn)題3,將解答填入對(duì)應(yīng)欄內(nèi)。
【說(shuō)明】
某機(jī)器上需要處理n個(gè)作業(yè).job1,job2,…,jobn,其中:
(1)每個(gè)作jobi(1≤i≤n)的編號(hào)為i,jobi有一個(gè)收益值p[i]和最后期限值d[i]小
(2)機(jī)器在一個(gè)時(shí)刻只能處理一個(gè)作業(yè),而且每個(gè)作業(yè)需要一個(gè)單位時(shí)間進(jìn)行處理,一旦作業(yè)開(kāi)始就不可中斷,每個(gè)作業(yè)的最后期限值為單位時(shí)間的正整數(shù)倍;
(3)job1~jobn的收益值呈非遞增順序排列,即p[1)≥p[2]≥…[n):
(4)如果作業(yè)jobi在其期限之內(nèi)完成,則獲得收益9[i];如果在其期限之后完成,則沒(méi)有收益。
為獲得較高的收益,采用貪心策略求解在期限之內(nèi)完成的作業(yè)序列。圖4*1是基于貪心策略求解該問(wèn)題的流程圖。
(1)整型數(shù)組j[]有n個(gè)存儲(chǔ)單元,變量k眾表示在期限之內(nèi)完成的作業(yè)j[1..k]存儲(chǔ)所有能夠在期限內(nèi)完成的作業(yè)編號(hào),數(shù)組j[1..k]里的作業(yè)按其最后期限非遞減排序,即d[j[1]]≤…≤d[j[k]]。
(2)為了便于在數(shù)組j中加入作業(yè),增加一個(gè)虛擬作業(yè)job0,并令d[0]=0,j[0]=0。
(3)算法大致思想:先將作業(yè).job1的編號(hào)1放入j[1],然后,依次對(duì)每個(gè)作業(yè).jobi (2≤i≤n)進(jìn)行判定,看其能否插入到數(shù)組j中。若能,則將其編號(hào)插入到數(shù)組j的適當(dāng)位置,并保證j中作業(yè)按其最后期限非遞減排列;否則不插入。
jobi能插入數(shù)組j的充要條件是:jobi和數(shù)組j中已有作業(yè)均能在其期限之內(nèi)完成。
(4)流程圖中的主要變量院明如下。
i:循環(huán)控制變量,表示作業(yè)的編號(hào);
k:表示在期限內(nèi)完成的作業(yè)數(shù):
r:若.jobi能插入數(shù)組j,則其在數(shù)組了中的位置為r+1:
q:循環(huán)控制變量,用于移動(dòng)數(shù)組j中的元素。
【問(wèn)題1】
請(qǐng)?zhí)畛鋱D4-1中的空缺(1)、(2)和(3)處。
【問(wèn)題2】
假設(shè)有6個(gè)作業(yè)job1,job2,…,job6;
完成作業(yè)的收益數(shù)組p=(p[1],p[2],p[3],p[4],p[5],p[6])=(90,80,50,30,20,10):
每個(gè)作業(yè)的處理期限數(shù)組d=(d[1],d[2],d[3],d[4],d[5],d[6])=(1,2,1,3,4,3)。
請(qǐng)應(yīng)用試題中描述的貪心策略算法,給出在期限之內(nèi)處理的作業(yè)編號(hào)序列 (4) (按作業(yè)處理的順序給出),得到的總收益為 (5) 。
【問(wèn)題3】
對(duì)于本題的作業(yè)處理問(wèn)題,用圖4-1的貪心算法策略,能否求得最高收益? (6) 。用貪心算法求解任意給定問(wèn)題時(shí),是否一定能得到最優(yōu)解? (7) 。

信管網(wǎng)參考答案:
查看解析:
m.xiexiliangjiufa.com/st/245608949.html
5、 試題五
閱讀以下說(shuō)明和c代碼,將應(yīng)填入 (n) 處的字句寫在的對(duì)應(yīng)欄內(nèi)。
【說(shuō)明】
在一個(gè)簡(jiǎn)化的繪圖程序中,支持的圖形種類有點(diǎn)(point)和圓(circle),在設(shè)計(jì)過(guò)程中采用面向?qū)ο笏枷?,認(rèn)為所有的點(diǎn)和圓都是一種圖形(shape),并定義了類型shape t、 point t和circle t分別表示基本圖形、點(diǎn)和圓,并且點(diǎn)和圓具有基本圖形的所有特征。
【c代碼】
typedef enum { point,circle } shape type; /* 程序中的兩種圖形:點(diǎn)和圓 */
typedef struct { /* 基本的圖形類型 */
shape_type type; /* 圖形中類標(biāo)識(shí):點(diǎn)或者圓*/
void (*destroy) (); /* 銷毀圖形操作的函數(shù)指針*/
void (*draw) (); /* 繪制圖形操作的函數(shù)指針*/
} shape_t;
typedef struct { shape_t common; int x; iht y; } point_t; /* 定義點(diǎn)類
型, x, y為點(diǎn)坐標(biāo)*/
void destroypoint (point_t* this) { free (this); printf ("point destoryed!
\n"); } ) /* 銷毀點(diǎn)對(duì)象*/
void drawpoint(point_t* this) { printf("p(%d,%d)", this->x, this->y); }
/* 繪制點(diǎn)對(duì)象*/
shape_t* createpoint (va_list* ap) (/* 創(chuàng)建點(diǎn)對(duì)象,并設(shè)置其屬性*/
point_t* p_point;
if ( (p_point= (point_t*)malloc (sizeof (point_t)) ) ==null) returnnull;
p_point->common, type = point; p_point->common, destroy = destroypoint;
p_point->common.draw = drawpoint;
p_point->x = va_arg(*ap, int); /* 設(shè)置點(diǎn)的橫坐標(biāo)*/
p_point->y = va_arg(*ap, int); /* 設(shè)置點(diǎn)的縱坐標(biāo)*/
return (shape_t*)p_ooint; /*返回點(diǎn)對(duì)象指針*/
}
typedef struct { /*定義圓類型*/
shape_t common;
point_t 4center; /*圓心點(diǎn)*/
int radius; /*圓半徑*/
} circle_t;
void destroycircle(circle_t* this){
free( (1) ); free(this); printf("circle destoryed!\n");
}
void drawcircle(circle_t* this) {
print f ("c (");
(2) .draw(this->center); /*繪制圓心*/
printf(",%d) ", this->radius);
}
shape_t* createcircle(va_list4 ap) { /*創(chuàng)建一個(gè)圓,并設(shè)置其屬性*/
circle_t4 p circle;
if ((p_circle = (circle_t4)malloc (sizeof (circle_t)) ) ==null ) return null;
p_circle->common.type = circle; p_circle->common.destroy = destroy
circle;
p_circle->common.draw = drawcircle;
(3) = createpoint(ap); /* 設(shè)置圓心*/
p_circle->radius = va_arg(*ap, int); /* 設(shè)置圓半徑*/
return p_circle;
}
shape_t* createshape(shape_type st, "') { /* 創(chuàng)建某一種具體的圖形*/
va_list ap; /*可變參數(shù)列表*/
shape_t4 p_shape = null;
(4) (ap, st);
if( st == point ) p shape = createpoint(&ap); /* 創(chuàng)建點(diǎn)對(duì)象*/
if( st == circle ) p shape = createcircle(&ap); /*創(chuàng)建圓對(duì)象*/
va_end (ap);
return p_shape;
}
int main( ) {
int i; /* 循環(huán)控制變量,用于循環(huán)計(jì)數(shù)*/
shape_t* shapes[2]; /* 圖形指針數(shù)組,存儲(chǔ)圖形的地址*/
shapes[0] = createshape( point, 2, 3); /* 橫坐標(biāo)為2,比值坐標(biāo)為3*/
shapes[ii = createshape( circle, 20, 40, 10); /* 圓心坐標(biāo)(20,40),
半徑為 10*/
for(i=0 i<2; i++) { shapes[i]->draw(shapes[i]); printf("\n"); } /*
縱制數(shù)組中圖形*/
for( i = 1; i >= 0; i-- ) shapes[i]->destroy(shapes[i]); /* 銷毀
數(shù)組中圖形*/
return 0;
}
【運(yùn)行結(jié)果】
p(2,3)
(5)
circle destoryed !
point destoryed !
信管網(wǎng)參考答案:
查看解析:
m.xiexiliangjiufa.com/st/2456118617.html
6、 試題六
閱讀下列說(shuō)明和c++代碼,將應(yīng)填入 (n) 處的字句寫在對(duì)應(yīng)欄內(nèi)。
【說(shuō)明】
已知某企業(yè)的采購(gòu)審批是分級(jí)進(jìn)行的,即根據(jù)采購(gòu)金額的不同由不同層次的主管人員來(lái)審批,主任可以審批5萬(wàn)元以下(不包括5萬(wàn)元)的采購(gòu)單,副董事長(zhǎng)可以審批5萬(wàn)元至10萬(wàn)元(不包括10萬(wàn)元)的采購(gòu)單,董事長(zhǎng)可以審批10萬(wàn)元至50萬(wàn)元(不包括50萬(wàn)元)的采購(gòu)單,50萬(wàn)元及以上的采購(gòu)單就需要開(kāi)會(huì)討論決定。
采用責(zé)任鏈設(shè)計(jì)模式(chain of responsibility)對(duì)上述過(guò)程進(jìn)行設(shè)計(jì)后得到的類圖如圖6-1所示。

【c++代碼】
#include <string>
#include <iostream>
using namespace std;
class purchaserequest {
public:
double amount; /*一個(gè)采購(gòu)的金額*/
int number; /*采購(gòu)單編號(hào)*/
string purpose; /*采購(gòu)目的*/
};
class approver { /*審批者類*/
public:
approver() { successor = null; }
virtual void processrequest(purchaserequest arequest){
if (successor != null){ successor-> (1) ; }
}
void setsuccessor(approver *asuccesssor) { successor = asuccesssor; } private:
(2) successor; };
class congress : public approver {
public:
void processrequest(purchaserequest arequest) {
if(arequest.amount >= 500000){ /*決定是否審批的代碼少略*/ }
else (3) processrequest(arequest);
}
class director : public approver {
public:
void processrequest(purchaserequest arequest){ /*此處代碼省略*/
}
};
class president : public approver {
public:
void processrequest(purchaserequest arequest) /*此處代碼省略*/ }
};
class vicepresident : public approver {
public:
void processrequest(purchaserequest arequest) /*此處代碼省略*/ }
};
void main(){
congress meeting; vicepresident sam; director larry ; president
tammy;
meeting. setsuccessor(null); sam. setsuccessor( (4) );
tammy. setsuccessor( (5) ); larry. setsuccessor( (6) );
purchaserequest arequest; /*構(gòu)造一采購(gòu)審批請(qǐng)求*/
cin >> arequest.amount; /*輸入采購(gòu)請(qǐng)求的金額*/
(7) .processrequest(arequest); /*開(kāi)始審批*/
return ;
}
信管網(wǎng)參考答案:
查看解析:
m.xiexiliangjiufa.com/st/2456210781.html
7、 試題七
閱讀下列說(shuō)明和java代碼,將應(yīng)填入 (n) 處的字句寫在對(duì)應(yīng)欄內(nèi)。
【說(shuō)明】
已知某企業(yè)的采購(gòu)審批是分級(jí)進(jìn)行的,即根據(jù)采購(gòu)金額的不同由不同層次的主管人員來(lái)審批,主任可以審批5萬(wàn)元以下(不包括5萬(wàn)元)的采購(gòu)單,副董事長(zhǎng)可以審批5萬(wàn)元至10萬(wàn)元(不包括10萬(wàn)元)的采購(gòu)單,董事長(zhǎng)可以審批10萬(wàn)元至50萬(wàn)元(不包括50萬(wàn)元)的采購(gòu)單,50萬(wàn)元及以上的采購(gòu)單就需要開(kāi)會(huì)討論決定。
采用責(zé)任鏈設(shè)計(jì)模式(chain of responsibility)對(duì)上述過(guò)程進(jìn)行設(shè)計(jì)后得到的類圖如圖7-1所示。

【java 代碼】
class purchaserequest {
public double amount; // 一個(gè)采購(gòu)的金額
public int number; // 采購(gòu)單編號(hào)
public string purpose; // 采購(gòu)目的
};
class approver { // 審批者類
public approver() { successor = null; }
public void processrequest(purchaserequest arequest){
if (successor != null){ successor. (1) ; }
}
public void setsuccesser(approver asuccesssor){ successor = asuccesssor; }
private (2) successor;
};
class congress extends approver {
public void processrequest(purchaserequest arequest) {
if(arequest,amount >= 500000){ // 決定是否審批的代碼省略}
else (3) .processrequest(arequest);
}
};
class director extends approver {
public void processrequest(purchaserequest arequest){ // 此處代碼省略 }
};
class president extends approver {
public void processrequest(purchaserequest arequest) { // 此處代碼省略 }
};
class vicepresident extends approver {
public void processrequest(purchaserequest arequest) { // 此處代碼省略 }
};
public class rs {
public static void main(string[] args) throws ioexception {
congress meeting = new congress();
vicepresident sam = new vicepresident();
director larry = new director();
president tammy = new president();
// 構(gòu)造責(zé)任鏈
meeting. setsuccessor(null); sam. setsuccessor( (4) );
tammy. setsuccessor( (5) ); larry. setsuccessor( (6) );
//構(gòu)造一采購(gòu)審批請(qǐng)求
purchaserequest arequest = new purchaserequest();
bufferedreader br =
new bufferedreader(new inputstreamreader(system.in));
arequest.amount = double.parsedouble(br.readline());
(7) .processrequest(arequest); // 開(kāi)始審批
return ;
}
}
信管網(wǎng)參考答案:
查看解析:
m.xiexiliangjiufa.com/st/2456318344.html