軟件水平考試(中級)軟件設(shè)計師下午(應(yīng)用技術(shù))試題模擬試卷5(共114題)_第1頁
軟件水平考試(中級)軟件設(shè)計師下午(應(yīng)用技術(shù))試題模擬試卷5(共114題)_第2頁
軟件水平考試(中級)軟件設(shè)計師下午(應(yīng)用技術(shù))試題模擬試卷5(共114題)_第3頁
軟件水平考試(中級)軟件設(shè)計師下午(應(yīng)用技術(shù))試題模擬試卷5(共114題)_第4頁
軟件水平考試(中級)軟件設(shè)計師下午(應(yīng)用技術(shù))試題模擬試卷5(共114題)_第5頁
已閱讀5頁,還剩122頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

軟件水平考試(中級)軟件設(shè)計師下午(應(yīng)用技術(shù))試題模擬試卷5(共9套)(共114題)軟件水平考試(中級)軟件設(shè)計師下午(應(yīng)用技術(shù))試題模擬試卷第1套一、必答題(本題共7題,每題1.0分,共7分。)閱讀下列說明、圖1和圖2,回答問題1、問題2和問題3?!菊f明】下面是某租車信息管理系統(tǒng)的介紹:該車庫中備有若干車輛,每輛車有車號、車牌、車名、價格等屬性。車庫不定期地購買并注冊新車供用戶借用,也可將報廢的舊車注銷以停止租用。車庫可為眾多用戶提供服務(wù)。每個用戶在借車之前需注冊姓名、地址等內(nèi)容。每個用戶最多可同時借3輛車。每輛車借期7天;若有一輛車超期,則不可再借其他車。一輛車超期一天罰款250元。若一輛車超期3周不歸還,則發(fā)布通告。若用戶借的車丟失,在罰款處理之前不能借車,每輛報失的車罰款該車目前市價(包括折舊)的1.2倍。注冊新用戶不受限制;而注銷用戶之前,該用戶必須歸還所有借的車,或者報失并接受罰款。1、分析車輛的狀態(tài)和事件,指出圖1中的(1)、(2)、(3)、(4)分別是什么?標(biāo)準(zhǔn)答案:(1)cancelregister(注銷舊車的注冊)(2)register(車輛注冊)(3)return(歸還)(4)lostreport(遺失報告)知識點解析:暫無解析2、分析用戶的狀態(tài)和事件,指出圖2中的(5)、(6)、(7)、(8)分別是什么?(注意,用戶與車輛在狀態(tài)圖中的關(guān)系)。標(biāo)準(zhǔn)答案:(5)cancelregister(注銷用戶的注冊)(6)borrow/n+1(借車/擁有車的數(shù)量+1)(7)penaltyandn=0(罰款并且擁有車的數(shù)量為0)(8)3知識點解析:暫無解析3、指出UML中活動圖的含義,并說明活動圖和狀態(tài)圖的區(qū)別與聯(lián)系。標(biāo)準(zhǔn)答案:活動圖(activitydiagram)顯示動作及其結(jié)果?;顒訄D著重描述操作(方法)實現(xiàn)中所完成的工作以及用例實例或?qū)ο笾械幕顒印;顒訄D是狀態(tài)圖的一個變種,與狀態(tài)圖的目的有一些小的差別,活動圖的主要目的是描述動作(執(zhí)行的工作和活動)及對象狀態(tài)改變的結(jié)果。當(dāng)狀態(tài)中的動作被執(zhí)行(不像正常的狀態(tài)圖,它不需指定任何事件)時,活動圖中的狀態(tài)(稱為動作狀態(tài))直接轉(zhuǎn)移到下一個階段。活動圖和狀態(tài)圖的另一個區(qū)別是活動圖中的動作可以放在泳道中。泳道聚合一組活動,并指定負(fù)責(zé)人和所屬組織?;顒訄D是另一種描述交互的方式,描述采取知識點解析:根據(jù)題意可以分析出車輛的狀態(tài)和事件,例如根據(jù)“車庫不定期地購買并注冊新車供用戶借用,也可將報廢的舊車注銷以停止租用”,可以得出(1)、(2)空分別是注銷舊車的注冊和車輛注冊。(3)空可以從在庫狀態(tài)和在借狀態(tài)的合理推斷,得出從在借狀態(tài)到在庫狀態(tài)只有一種事件——“歸還”。從在借狀態(tài)到終結(jié)狀態(tài),也只有一種可能性,那就是遺失。根據(jù)題意“注銷用戶之前,該用戶必須歸還所有借的車,或者報失并接受罰款”,得出從“NoCar”到終結(jié)狀態(tài)的事件(5)空是cancelresister(注銷用戶的注冊)。根據(jù)從“NoCar”到“HasCar”的事件(6)空是borrow(借車),同時已知用戶可以借多輛車,當(dāng)前擁有車n輛,所以需要n+1。根據(jù)“若用戶借的車丟失,在罰款處理之前不能借車”可知(7)空是penalty(罰款),同時狀態(tài)從“HasCar”到達(dá)“NoCar”說明n=0。根據(jù)“每個用戶最多可同時借3輛車”,可以得出(8)空為3。所有的系統(tǒng)均有靜態(tài)結(jié)構(gòu)和動態(tài)行為。結(jié)構(gòu)可以用靜態(tài)模型元素來描述,如類、關(guān)系、節(jié)點和構(gòu)件。行為描述結(jié)構(gòu)內(nèi)的元素如何交互。通常情況下,這些交互是確定的且可以建立模型。抽象系統(tǒng)的動態(tài)行為也稱為動態(tài)建模,UML支持動態(tài)建模。在UML中有4類圖,每一類用于不同的目的:狀態(tài)、序列、協(xié)作和活動。狀態(tài)圖被用來描述類(也可以用于子系統(tǒng)或整個系統(tǒng))中的行為和內(nèi)部狀態(tài)。它著眼于描述隨著時間的改變,對象如何改變其狀態(tài)。狀態(tài)的改變起決于出現(xiàn)的事件,狀態(tài)中執(zhí)行的行為和動作,狀態(tài)轉(zhuǎn)移等。事件可能是條件成真,接收一個信號或一個操作調(diào)用或經(jīng)過指定時間。序列圖主要用來描述在指定情節(jié)中一組對象是如何交互的。它著眼于消息序列,也就是說,在對象間如何發(fā)送和接收消息。序列圖有兩個坐標(biāo)軸:縱坐標(biāo)軸顯示時間,橫坐標(biāo)軸顯示有關(guān)的對象。序列圖中最基本的東西是時間。協(xié)作圖主要用來描述對象在空間中的交互,即除了動態(tài)交互,它也直接描述對象是如何鏈接在一起的。在協(xié)作圖中沒有時間軸,因而將消息按序編號。閱讀以下說明和流程圖(如圖3所示),回答問題1和問題2?!菊f明】本流程圖實現(xiàn)從成績文件生成學(xué)生成績一覽表。某中學(xué)某年級的學(xué)生成績數(shù)據(jù)(分?jǐn)?shù))登錄在成績文件10中,其記錄格式見表2:由該成績文件生成見表3的學(xué)生成績一覽表。生成的學(xué)生成績一覽表按學(xué)號升序排列。表中的名次是指該生相應(yīng)課程在年級中的名次。流程圖中的順序文件F0是學(xué)生成績文件,F(xiàn)0文件經(jīng)處理1處理后產(chǎn)生順序文件F,然后經(jīng)過處理2至處理4對文件F進行處理和更新。在處理5中,僅對文件F的紀(jì)錄進行學(xué)生成績一覽表的編排輸出,不進行排序和增加名次等處理。4、流程圖中文件F的紀(jì)錄格式設(shè)定為見表4形式:其中的①、②應(yīng)定義為何種數(shù)據(jù)項?標(biāo)準(zhǔn)答案:①成績②名次知識點解析:暫無解析5、簡述處理2、處理3和處理4作何種處理,若有排序處理則需指明排序的鍵及序(升序或降序)。標(biāo)準(zhǔn)答案:課程代碼按升序排列、成績按降序排列知識點解析:處理2對每個文件F進行排序。處理3對每個課程代碼,確定學(xué)生名次,寫入文件F的相應(yīng)字段。處理4按學(xué)號(升序)、課程代碼(升序)對文件F排序。6、根據(jù)題意回答以下問題:設(shè)某商業(yè)集團數(shù)據(jù)庫中有3個實體集:一是“商店”實體集,屬性有商店編號,商店名,地址等;二是“商品”實體集,屬性有商品號,商品名,規(guī)格,單價等;三是“職工”實體集,屬性有職工編號,姓名,性別,業(yè)績等。商店與商品間存在“銷售”聯(lián)系,每個商店可以銷售多種商品,每種商品也可以在多個商店和職工間存在“聘用”聯(lián)系,每個商店有許多職工,每個職工只能在一個商店工作,商店聘用職工有聘期和月薪。問題:1.請根據(jù)題意完善下面ER圖。2.將ER圖轉(zhuǎn)換成關(guān)系模型,并注明主鍵和外鍵。3.請寫出要查出員工“小李”在三月份的銷售業(yè)績的關(guān)系代數(shù)式。標(biāo)準(zhǔn)答案:如圖5所示。2.商店(商店編號,商店名,地址)職工(職工編號,姓名,性別,業(yè)績,商店編號,聘期,月薪)商品(商品號,商品名,規(guī)格,單價)銷售(商店編號,商品號,月銷售量)3.select業(yè)績from職工where商品.商品號=“商品A”and銷售.商品號=商品.商品號and商店.商店編號=銷售.商店編號and商店.商店編號=聘用.商品編號and職工.職工編號=聘用.職工編號and職工.職工號=“小李”知識點解析:暫無解析7、下列給定程序中,函數(shù)fun()的功能是:對N名學(xué)生的學(xué)習(xí)成績,按從高到低的順序找出前m(m≤10)名學(xué)生來,并將這些學(xué)生數(shù)據(jù)存放在一個動態(tài)分配的連續(xù)存儲區(qū)中,此存儲區(qū)的首地址作為函數(shù)值返回。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的橫線上填入所編寫的若干表達(dá)式或語句。試題程序:#include<stdio.h>#include<malloc.h>#include<string.h>#include<conio.h>#defineN10typedefstructss{charnum[10];intorder;}STU;STU*fun(STUa[],intm){STUb[N],*tt;inti,j,k;(1);for(i=0;i<N;i++)b[i]=a[i];for(k=0;k<m;k++){for(i=j=0;i<N;i++)if((2))j=i;tt[k]=b[j];b[j].order=0;}return(3);}outresult(STUa[],F(xiàn)ILE*pf){inti;for(i=0;i<N;i++)fprintf(pf,"No=%sMark=%d\n",a[i].num,a[i].order);fprintf(pf,"\n\n");}main(){STU[N]={{"A01",80},{"A02",79},{"A03",66},{"A04",82},{"A05",87},{"A06",93},{"A07",78},{"A08",60},{"A09",85},{"A10",73}};STU*p_order;inti,m;clrscr();printf("***TheOrigialdata***\n");outresult(a,stdout);printf("\nGivethenumeberofthestudentswhohavebetterscore:");scanf("%d",&m);while(m>10){printf("\nGivethenumberofthestudetswhohavebetterscore:");scanf("%d",&m);}p_order=fun(a,m);printf("***THERESULT***\n");printf("***Thetopstudents***\n");for(i=0;i<m;i++)printf("%s%d\n",p_order[i].num,p_order[i].order);free(p_order);}標(biāo)準(zhǔn)答案:(1)n=(STU*)malloc(sizeof(STU)*m)(2)b[i].order>b[j].order(3)tt知識點解析:填空1:tt是結(jié)構(gòu)體STU型指針,聲明時并沒有進行初始化,所以,需要使用malloc()函數(shù)動態(tài)申請存儲空間。動態(tài)申請存儲空間的大小取決于函數(shù)的形參m。填空2:按成績高低找出前m名學(xué)生的方法是,先假設(shè)第一名學(xué)生成績最高,依次與其他學(xué)生的成績進行比較,如果出現(xiàn)成績更高者,則認(rèn)為這名學(xué)生成績最高,全部比較完后找到成績第一名的學(xué)生,存入指針tt所指的結(jié)構(gòu)體空間中,同時將這名同學(xué)的成績置0,這樣在其他同學(xué)中找第一名就相當(dāng)于找到所有同學(xué)中的第二名,依此類推,進行m次循環(huán),找到前m名學(xué)生。填空3:題目要求函數(shù)值返回動態(tài)分配的存儲區(qū)的首地址,所以返回指針tt。二、選答題(本題共2題,每題1.0分,共2分。)8、【說明】①定義類Table的私有數(shù)據(jù)成員x和y,分別用于表示九九表中的兩個乘數(shù)(x*y),它們都是int型的數(shù)據(jù)。②完成類Table的成員函數(shù)print()的定義,該函數(shù)以“x*y=z”的格式打印出九九表中的一個乘法算式,請使用格式化輸出函數(shù)printf實現(xiàn)。③完成類Table9的成員函數(shù)print()的定義,該函數(shù)調(diào)用基類Table的print()函數(shù),將九九表輸出到屏幕。④補充主函數(shù),在屏幕上輸出九九表,以便測試所定義的類的正確性。源程序文件test8_3.cpp清單如下:#include<iostream,h>#include<stdio,h>classTable}(1)intz;public:voidprint(intx,inty,intz);};voidTable::print(intx,inty,intz){(2)}ClassTable9:publicTable{public:voidprint();};voidTable9::print(){(3)intx,y,z;for(i=1;i<10;i++){for(j=1;j<i+1;j++){x=i;y=j;z=i*j;Table::print(y,x,z);}printf("\n");}}main(){//**4**return0;}標(biāo)準(zhǔn)答案:(1)intx;inty;(2)printf("%d*%d=%d",x,y,z);if(z<10)printf("");(3)inti,j;(4)Table9t_9;t_9.print();知識點解析:主要考查考生將具體問題抽象為類,將類的定義補充完整,并進行類定義測試的能力。注意(2)中格式化輸出函數(shù)printf的使用格式,%d代表輸出的為整型。9、【說明】下面是一個Applet程序,其功能是建立2個文本區(qū)域,一個為編輯區(qū),一個為只讀區(qū);建立2個按鈕,一個實現(xiàn)將編輯區(qū)中被鼠標(biāo)選定的文本內(nèi)容拷貝到只讀區(qū)中,一個實現(xiàn)將只讀區(qū)的全部文本內(nèi)容清空。程序運行結(jié)果如圖3所示。importjava.awt.*;importjava.applet.*;/*<appletcode="ex3_6.class"width=800height=400></applet>*/publicclassex3_6extendsApplet{privateButtonokBtn,clearBtn;privateStringstrMessage;privateTextAreatArea1,tArea2;publicvoidinit(){strMessage="Hello!Welcometothetest!\n"+"Wishyougoodluck!";tArea1=newTextArea(10,25);(1);tArea2=newTextArea(10,25);(2);OkBtn;newButton("Copy");dearBtn=(3);add(tArea1);add(tArea2);add(okBtn);add(clearBtn);}publicbooleanaction(Evente,Objecto){if(e.target==okBtn)tArea2,setText((4));elseif(e.target==clearBtn)(5);returntrue;}}ex3_6.htm|<HTML><HEAD><TITLE>ex3_6</TITLE></HEAD><BODY><appletcode="ex3_6.class"Width=800height=400></applet></BODY></HTML>標(biāo)準(zhǔn)答案:(1)tAreal.setText(strMessage)(2)tArea2.setEditable(false)(3)newButton("Clear")(4)tAreal.getSelectedText()(5)tArea2.setText("")知識點解析:本題主要考查Applet窗口、其事件處理機制以及對文本區(qū)域的相關(guān)操作。解題關(guān)鍵是熟悉TextArea的基本方法,如setEditable()方法就是用來確定不用的編輯模式的一個重要的方法,并且需要明確題目要求的2個文本區(qū)域的區(qū)別和聯(lián)系,根據(jù)不同的事件,來對這兩個文本區(qū)域進行操作。本題中,第1個空,將第2個文本區(qū)域tArea2的編輯模式設(shè)定為只讀,注意參數(shù)為false,因為默認(rèn)的編輯模式設(shè)定為可編輯的,用true表示,所以參數(shù)應(yīng)該是false;第2個空,響應(yīng)點擊Copy按鈕事件的語句應(yīng)該將第1個文本區(qū)tAreal的被選擇的文本內(nèi)容取出放入第二個文本區(qū)tArea2中;第3個空,響應(yīng)點擊Clear按鈕事件的語句應(yīng)該將第2個文本區(qū)tArea2中的所有文本內(nèi)容清空。軟件水平考試(中級)軟件設(shè)計師下午(應(yīng)用技術(shù))試題模擬試卷第2套一、必答題(本題共10題,每題1.0分,共10分。)閱讀下列說明、圖1和圖2,回答問題1、問題2和問題3?!菊f明】下面是某租車信息管理系統(tǒng)的介紹:該車庫中備有若干車輛,每輛車有車號、車牌、車名、價格等屬性。車庫不定期地購買并注冊新車供用戶借用,也可將報廢的舊車注銷以停止租用。車庫可為眾多用戶提供服務(wù)。每個用戶在借車之前需注冊姓名、地址等內(nèi)容。每個用戶最多可同時借3輛車。每輛車借期7天;若有一輛車超期,則不可再借其他車。一輛車超期一天罰款250元。若一輛車超期3周不歸還,則發(fā)布通告。若用戶借的車丟失,在罰款處理之前不能借車,每輛報失的車罰款該車目前市價(包括折舊)的1.2倍。注冊新用戶不受限制;而注銷用戶之前,該用戶必須歸還所有借的車,或者報失并接受罰款。1、分析車輛的狀態(tài)和事件,指出圖1中的(1)、(2)、(3)、(4)分別是什么?標(biāo)準(zhǔn)答案:(1)cancelregister(注銷舊車的注冊)(2)register(車輛注冊)(3)return(歸還)(4)lostreport(遺失報告)知識點解析:暫無解析2、分析用戶的狀態(tài)和事件,指出圖2中的(5)、(6)、(7)、(8)分別是什么?(注意,用戶與車輛在狀態(tài)圖中的關(guān)系)。標(biāo)準(zhǔn)答案:(5)cancelregister(注銷用戶的注冊)(6)borrow/n+1(借車/擁有車的數(shù)量+1)(7)penaltyandn=0(罰款并且擁有車的數(shù)量為0)(8)3知識點解析:暫無解析3、指出UML中活動圖的含義,并說明活動圖和狀態(tài)圖的區(qū)別與聯(lián)系。標(biāo)準(zhǔn)答案:活動圖(activitydiagram)顯示動作及其結(jié)果?;顒訄D著重描述操作(方法)實現(xiàn)中所完成的工作以及用例實例或?qū)ο笾械幕顒?。活動圖是狀態(tài)圖的一個變種,與狀態(tài)圖的目的有一些小的差別,活動圖的主要目的是描述動作(執(zhí)行的工作和活動)及對象狀態(tài)改變的結(jié)果。當(dāng)狀態(tài)中的動作被執(zhí)行(不像正常的狀態(tài)圖,它不需指定任何事件)時,活動圖中的狀態(tài)(稱為動作狀態(tài))直接轉(zhuǎn)移到下一個階段。活動圖和狀態(tài)圖的另一個區(qū)別是活動圖中的動作可以放在泳道中。泳道聚合一組活動,并指定負(fù)責(zé)人和所屬組織?;顒訄D是另一種描述交互的方式,描述采取知識點解析:根據(jù)題意可以分析出車輛的狀態(tài)和事件,例如根據(jù)“車庫不定期地購買并注冊新車供用戶借用,也可將報廢的舊車注銷以停止租用”,可以得出(1)、(2)空分別是注銷舊車的注冊和車輛注冊。(3)空可以從在庫狀態(tài)和在借狀態(tài)的合理推斷,得出從在借狀態(tài)到在庫狀態(tài)只有一種事件——“歸還”。從在借狀態(tài)到終結(jié)狀態(tài),也只有一種可能性,那就是遺失。根據(jù)題意“注銷用戶之前,該用戶必須歸還所有借的車,或者報失并接受罰款”,得出從“NoCar”到終結(jié)狀態(tài)的事件(5)空是cancelresister(注銷用戶的注冊)。根據(jù)從“NoCar”到“HasCar”的事件(6)空是borrow(借車),同時已知用戶可以借多輛車,當(dāng)前擁有車n輛,所以需要n+1。根據(jù)“若用戶借的車丟失,在罰款處理之前不能借車”可知(7)空是penalty(罰款),同時狀態(tài)從“HasCar”到達(dá)“NoCar”說明n=0。根據(jù)“每個用戶最多可同時借3輛車”,可以得出(8)空為3。所有的系統(tǒng)均有靜態(tài)結(jié)構(gòu)和動態(tài)行為。結(jié)構(gòu)可以用靜態(tài)模型元素來描述,如類、關(guān)系、節(jié)點和構(gòu)件。行為描述結(jié)構(gòu)內(nèi)的元素如何交互。通常情況下,這些交互是確定的且可以建立模型。抽象系統(tǒng)的動態(tài)行為也稱為動態(tài)建模,UML支持動態(tài)建模。在UML中有4類圖,每一類用于不同的目的:狀態(tài)、序列、協(xié)作和活動。狀態(tài)圖被用來描述類(也可以用于子系統(tǒng)或整個系統(tǒng))中的行為和內(nèi)部狀態(tài)。它著眼于描述隨著時間的改變,對象如何改變其狀態(tài)。狀態(tài)的改變起決于出現(xiàn)的事件,狀態(tài)中執(zhí)行的行為和動作,狀態(tài)轉(zhuǎn)移等。事件可能是條件成真,接收一個信號或一個操作調(diào)用或經(jīng)過指定時間。序列圖主要用來描述在指定情節(jié)中一組對象是如何交互的。它著眼于消息序列,也就是說,在對象間如何發(fā)送和接收消息。序列圖有兩個坐標(biāo)軸:縱坐標(biāo)軸顯示時間,橫坐標(biāo)軸顯示有關(guān)的對象。序列圖中最基本的東西是時間。協(xié)作圖主要用來描述對象在空間中的交互,即除了動態(tài)交互,它也直接描述對象是如何鏈接在一起的。在協(xié)作圖中沒有時間軸,因而將消息按序編號。【說明】下面是某租車信息管理系統(tǒng)的介紹:該車庫中備有若干車輛,每輛車有車號、車牌、車名、價格等屬性。車庫不定期地購買并注冊新車供用戶借用,也可將報廢的舊車注銷以停止租用。車庫可為眾多用戶提供服務(wù)。每個用戶在借車之前需注冊姓名、地址等內(nèi)容。每個用戶最多可同時借3輛車。每輛車借期7天:若有一輛車超期,則不可再借其他車。一輛車超期一天罰款250元。若一輛車超期3周不歸還,則發(fā)布通告。若用戶借的車丟失,在罰款處理之前不能借車,每輛報失的車罰款該車目前市價(包括折舊)的1.2倍。注冊新用戶不受限制;而注銷用戶之前,該用戶必須歸還所有借的車,或者報失并接受罰款。4、分析車輛的狀態(tài)和事件,指出圖2-1中的(1)、(2)、(3)、(4)分別是什么?標(biāo)準(zhǔn)答案:(1)cancelregister(注銷舊車的注冊)(2)register(車輛注冊)(3)return(歸還)(4)lostreport(遺失報告)知識點解析:根據(jù)題意可以分析出車輛的狀態(tài)和事件,例如根據(jù)“車庫不定期地購買并注冊新車供用戶借用,也可將報廢的舊車注銷以停止租用”,可以得出(1)、(2)空分別是注銷舊車的注冊和車輛注冊。(3)空可以從在庫狀態(tài)和在借狀態(tài)的合理推斷,得出從在借狀態(tài)到在庫狀態(tài)只有一種事件——“歸還”。從在借狀態(tài)到終結(jié)狀態(tài),也只有一種可能性,那就是遺失。5、分析用戶的狀態(tài)和事件,指出圖2-2中的(5)、(6)、(7)、(8)分別是什么?(注意,用戶與車輛在狀態(tài)圖中的關(guān)系)。標(biāo)準(zhǔn)答案:(5)cancelregister(注銷用戶的注冊)(6)borrow/n+1(借車/擁有車的數(shù)量+1)(7)penaltyandn=0(罰款并且擁有車的數(shù)量為0)(8)3知識點解析:根據(jù)題意“注銷用戶之前,該用戶必須歸還所有借的車,或者報失并接受罰款”,得出從“NoCar’’到終結(jié)狀態(tài)的事件(5)空是cancelregister(注銷用戶的注冊)。根據(jù)從“NoCar”到“HasCar”的事件(6)空是borrow(借車),同時已知用戶可以借多輛車,當(dāng)前擁有車n輛,所以需要n+1。根據(jù)“若用戶借的車丟失,在罰款處理之前不能借車”可知(7)空是penalty(罰款),同時狀態(tài)從“HasCar”到達(dá)“NoCar”說明n=0。根據(jù)“每個用戶最多可同時借3輛車”,可以得出(8)空為3。6、指出UML中活動圖的含義,并說明活動圖和狀態(tài)圖的區(qū)別與聯(lián)系。標(biāo)準(zhǔn)答案:活動圖(activitydiagram)顯示動作及其結(jié)果。活動圖著重描述操作(方法)實現(xiàn)中所完成的工作以及用例實例或?qū)ο笾械幕顒?。活動圖是狀態(tài)圖的一個變種,與狀態(tài)圖的目的有一些小的差別,活動圖的主要目的是描述動作(執(zhí)行的工作和活動)及對象狀態(tài)改變的結(jié)果。當(dāng)狀態(tài)中的動作被執(zhí)行(不像正常的狀態(tài)圖,它不需指定任何事件)時,活動圖中的狀態(tài)(稱為動作狀態(tài))直接轉(zhuǎn)移到下一個階段。活動圖和狀態(tài)圖的另一個區(qū)別是活動圖中的動作可以放在泳道中。泳道聚合一組活動,并指定負(fù)責(zé)人和所屬組織?;顒訄D是另一種描述交互的方式,描述采取知識點解析:所有的系統(tǒng)均有靜態(tài)結(jié)構(gòu)和動態(tài)行為。結(jié)構(gòu)可以用靜態(tài)模型元素來描述,如類、關(guān)系、節(jié)點和構(gòu)件。行為描述結(jié)構(gòu)內(nèi)的元素如何交互。通常情況下,這些交互是確定的且可以建立模型。抽象系統(tǒng)的動態(tài)行為也稱為動態(tài)建模,UML支持動態(tài)建模。在UML中有4類圖,每一類用于不同的目的:狀態(tài)、序列、協(xié)作和活動。狀態(tài)圖被用來描述類(也可以用于子系統(tǒng)或整個系統(tǒng))中的行為和內(nèi)部狀態(tài)。它著眼于描述隨著時間的改變,對象如何改變其狀態(tài)。狀態(tài)的改變起決于出現(xiàn)的事件,狀態(tài)中執(zhí)行的行為和動作,狀態(tài)轉(zhuǎn)移等。事件可能是條件成真,接收一個信號或一個操作調(diào)用或經(jīng)過指定時間。序列圖主要用來描述在指定情節(jié)中一組對象是如何交互的。它著眼于消息序列,也就是說,在對象間如何發(fā)送和接收消息。序列圖有兩個坐標(biāo)軸:縱坐標(biāo)軸顯示時間,橫坐標(biāo)軸顯示有關(guān)的對象。序列圖中最基本的東西是時間。協(xié)作圖主要用來描述對象在空間中的交互,即除了動態(tài)交互,它也直接描述對象是如何鏈接在一起的。在協(xié)作圖中沒有時間軸,因而將消息按序編號。閱讀以下說明和流程圖,回答問題1至問題3,將解答寫在對應(yīng)欄內(nèi)?!菊f明】(1)流程圖描述某大型商店商品銷售的數(shù)據(jù)處理流程。(2)商店設(shè)有若干柜臺,同一種商品可能在幾個柜臺上銷售,各柜臺每天提供一組日銷售數(shù)據(jù),其格式如下:日期、柜臺號、商品代碼、銷售數(shù)量、商品代碼、銷售數(shù)量……(3)數(shù)據(jù)處理系統(tǒng)每日產(chǎn)生一份反映各柜臺當(dāng)日銷售金額和商店日銷售金額的“日銷售金額報告”,必要時還產(chǎn)生一份“商品請購報告”,給出那些低于最低庫存量的商品代碼、商品名稱、最低庫存量和實際庫存量。處理過程中產(chǎn)生存檔的“日銷售文件”和臨時工作文件“日銷售量文件”和“舊銷售金額文件”。(4)系統(tǒng)中所用到的數(shù)據(jù)均來自數(shù)據(jù)文件。(5)流程圖中的商品庫存文件的記錄已按關(guān)鍵字“商品代碼”排序。7、①指出商品庫存文件的記錄中必須包括哪些數(shù)據(jù)項?②分別指出在日銷售文件,日銷售量文件和日銷售金額文件的記錄中至少應(yīng)包括哪些數(shù)據(jù)項,同時不產(chǎn)生數(shù)據(jù)冗余?③錯誤清單可能指出哪些錯誤?標(biāo)準(zhǔn)答案:①商品代碼、商品名稱、單價、最低庫存數(shù)量、實際庫存數(shù)量。②日銷售文件:柜臺號、商品代碼、銷售數(shù)量。日銷售量文件:商品代碼、銷售數(shù)量。日銷售金額文件:柜臺號、銷售金額。③非法日期、非法商品代碼、銷售量為負(fù)數(shù)、銷售量大于實際庫存量;知識點解析:暫無解析8、簡要敘述處理6的主要內(nèi)容。標(biāo)準(zhǔn)答案:①更新商品庫存文件中的實際庫存量。②當(dāng)實際庫存量小于最低庫存量時產(chǎn)生商品請購清單。知識點解析:暫無解析9、如果刪除流程圖中的虛框部分,日銷售文件的記錄中應(yīng)增加什么數(shù)據(jù)項?標(biāo)準(zhǔn)答案:在日銷售文件中增加“單價”或“金額”。知識點解析:本題描述的是商品銷售的數(shù)據(jù)處理流程。首先要對說明和流程圖進行快速掃讀,然后結(jié)合問題,在說明和圖中找到有關(guān)的范圍,進行分析。問題1中的第一個小問題是指出商品庫存文件的記錄中必須包括哪些數(shù)據(jù)項,首先,應(yīng)該馬上注意到說明中的第5項,應(yīng)該包括“商品代碼”。同時,注意第4項,所用到的數(shù)據(jù)均來自數(shù)據(jù)文件,這個條件將會直接影響后面的分析。圖中顯示,商品庫存文件在處理1、處理3、處理6使用到。流程圖中很明顯地顯示出在處理1產(chǎn)生日銷售文件后分為兩個分支,即左邊的分支處理日銷售量和商品請購事務(wù)和右邊的分支處理銷售金額事務(wù)。處理6生成商品請購清單,說明3中提到商品請購清單給出低于庫存量的商品代碼、商品名稱、最低庫存量和實際庫存量。其所在分支只在處理1中使用到除庫存文件之外的日銷售數(shù)據(jù),日銷售數(shù)據(jù)和商品庫存文件經(jīng)過處理1生成日銷售文件,所以,商品庫存文件必須還包括;商品名稱、最低庫存量、實際庫存量。處理1生成的日銷售文件還被右邊分支使用,它和商品庫存文件又被處理3使用生成日銷售金額文件,銷售金額:單價x銷售量,銷售數(shù)量由日銷售數(shù)據(jù)提供,所以,商品單價應(yīng)該由商品庫存清單提供。由此,得出商品庫存清單必須包括的數(shù)據(jù)項。問題1中的問題②在分析①時已經(jīng)得到了一些線索,在進一步分析中得出,在同時要保證不能有數(shù)據(jù)項冗余的情況下,可以得出日銷售金額必須包括柜臺號、商品代碼、銷售數(shù)量;日銷售量文件必須包括商品代碼、銷售數(shù)量;日銷售金額必須包括柜臺號、銷售金額。問題1的③,錯誤清單產(chǎn)生于處理1,這時還沒有用到商品庫存文件中的商品單價,所以不可能有關(guān)于金額的錯誤??赡苡械腻e誤是非法的商品代碼、非法日期、銷售數(shù)量為負(fù)、銷售數(shù)量大于庫存數(shù)量。處理6根據(jù)日銷售量文件和商品庫存文件來更新商品庫存文件,并在實際庫存量小于最低庫存量時產(chǎn)生商品請購清單。刪除虛框部分,就是在處理3處不使用商品庫存文件,那么商品庫存文件提供的數(shù)據(jù)項就要在日銷售文件中提供,所以日銷售文件中要提供“單價”,也可以提供“金額”,這樣就免去計算處理。10、閱讀下列說明和相關(guān)的類圖,回答問題?!菊f明】在一棟m層樓的大廈里,用電梯內(nèi)和每個樓層的按鈕來控制n部電梯的運作。當(dāng)按下電梯內(nèi)按鈕請求電梯在指定樓層停下時,按鈕指示燈亮,當(dāng)電梯到達(dá)指定樓層時,指示燈熄滅。除了大廈的最底層和最高層之外,每層樓都有兩個按鈕分別指示電梯上行和下行,當(dāng)這兩個按鈕之一被按下時相應(yīng)的指示燈亮,當(dāng)電梯到達(dá)此樓層時燈熄滅,電梯向要求的方向移動。當(dāng)電梯無升降運動時,關(guān)門并停止在當(dāng)前樓層。軟件設(shè)計師火云龍采用面向?qū)ο蠓治龅姆椒?,?jīng)過三次逐步求精設(shè)計之后,得到如圖13-19所示的類圖?!締栴}1】按鈕類有一個重要的屬性,請將該屬性填入圖13-19中的(a)處?!締栴}2】識別關(guān)聯(lián)的多重性是面向?qū)ο蠼V匾囊徊剑埜鶕?jù)題目說明填空(1)~(6)?!締栴}3】軟件設(shè)計師火云龍在初步設(shè)計類時,將門(的狀態(tài))作為電梯的屬性,后經(jīng)思考,將電梯門設(shè)計成一個獨立的類,這么做的好處是什么?軟件設(shè)計師火云龍在初步設(shè)計類時,并沒有設(shè)計“請求”類,后來又加入了該類,這么做的原因是什么?標(biāo)準(zhǔn)答案:[問題1](a)指示燈[問題2](1)mn(2)mn(3)2m-2(4)2m-2(5)n(6)n[問題3]一旦將電梯門作為一個獨立的類,則打開或關(guān)閉電梯門的唯一辦法就是向“電梯門”類對象發(fā)送消息。如果電梯門類封裝得好,就能保證不會在錯誤的時間關(guān)閉或打開電梯門,從而有效杜絕嚴(yán)重意外事故的發(fā)生。出于安全考慮,在未經(jīng)授權(quán)時不能隨意修改“請求”,因此將“請求”設(shè)計成獨立的類,如果“請求”類封裝得好就能有效保證電梯安全運行。知識點解析:從圖13-19可知,電梯按鈕類和樓層按鈕類都是按鈕類的子類,電梯按鈕和樓層按鈕的共同點就是用指示燈跟乘客進行交互,所以,按鈕類必定有個重要的屬性“指示燈”。識別關(guān)聯(lián)的多重性是面向?qū)ο蠼V匾囊徊?。題目的說明中提到“在一棟m層樓的大廈里,用電梯內(nèi)和每個樓層的按鈕來控制n部電梯的運作”、“除了大廈的最底層和最高層之外,每層樓都有兩個按鈕分別指示電梯上行和下行”,所以這棟大廈中一共有mn個電梯按鈕,共有2m-2個樓層按鈕,電梯控制器類控制著所有的電梯按鈕、樓層按鈕和電梯,所以第(1)~(6)空應(yīng)分別填:mn、mn、2m-2、2m-2、n、n。注意,不可以用*號代替,*號表示多個,具體多少是未知,而題目已經(jīng)給定具體數(shù)目,所以應(yīng)該用m、n來表示。識別類是面向?qū)ο蠓治龅牡谝徊?,常用的方法是名詞分析法。題目的說明其實就是電梯系統(tǒng)的需求說明,出現(xiàn)了如下主要名詞:大廈、電梯、樓層、按鈕、運動、指示燈、請求、最底層、最高層、方向和門。這些名詞所代表的事物可作為類的初步候選者。其中,大廈、最底層、最高層和樓層處于問題范疇之外,因此不必考慮。運動、方向、指示燈和門可作為其它類的屬性,例如,指示燈(的狀態(tài))可作為按鈕類的屬性,方向和門(的狀態(tài))可作為電梯類的屬性。經(jīng)過上述初步篩選只剩下兩個基本的候選類,即電梯類和按鈕類。在題目的說明中實際指定了兩種按鈕,因此,應(yīng)該為按鈕類定義兩個子類,即電梯按鈕和樓層按鈕。綜合上述分析結(jié)果,可得出系統(tǒng)的類圖,如圖13-50所示。這個模型是非常初步的模型,需要進一步充實、精化和完善。分析上述模型會發(fā)現(xiàn)它存在比較明顯的不足:在實際的電梯系統(tǒng)中,按鈕并不直接與電梯通信;為了決定分派哪一部電梯去響應(yīng)一個特定的請求,必須有某種類型的電梯控制器。然而在題目說明中并未提到控制器,因此它未被列入候選類中。由此可見,名詞分析法只為尋找候選類提供了初步線索,不能指望依靠這種方法找出全部候選類。系統(tǒng)分析員必須根據(jù)領(lǐng)域知識、常識和經(jīng)驗做進一步分析,才能找出問題域中所有的類。補充了電梯控制器類之后,其類圖如圖13-51所示。這個模型也并非十分完善。電梯類的主要功能應(yīng)是執(zhí)行電梯控制器發(fā)出的移動或等待命令,如果將門(的狀態(tài))作為電梯的一個屬性,則電梯還要執(zhí)行關(guān)門或開門的命令,這樣電梯類的功能就不單一了。于是將電梯門劃分出來成為一個獨立的類,一旦將其作為一個獨立的類,則打開或關(guān)閉電梯門的唯一辦法就是向“電梯門”類對象發(fā)送消息。如果電梯門類封裝得好,就能保證不會在錯誤的時間關(guān)閉或打開電梯門,從而有效杜絕嚴(yán)重意外事故的發(fā)生。同樣,出于安全考慮,在未經(jīng)授權(quán)時不能修改“請求”,因此將“請求”設(shè)計成獨立的類。經(jīng)過再次完善之后的類圖如圖13-19所示。二、選答題(本題共7題,每題1.0分,共7分。)11、從下列的3道式題(試題五至試題七)中任選1道解答。如果解答的試題數(shù)超過1道,則題號小的1道解答有效。閱讀以下說明和C++碼,將應(yīng)填入(n)處的字名寫在的對應(yīng)欄內(nèi)。[說明]利用c++的各種控制語句編寫一個萬年歷程序,要求:顯示任何年份的日歷,日歷以月份順序排列,每月以星期順序排列,類似于一般掛歷上的格式。本程序包含如下兩個函數(shù):Leap()用于判定指定的年份是閏年,Week()用于計算year年份的1月1日是星期幾,其判定規(guī)則為:(1)如果year年份為1994年,則為星期六。(2)如果year年份大于1994年,則星期值weekno按下列公式計算:differ=(year-1994)*(365%6)+(year-1993)/4-(year-2001)/100+(year-2001)/400date=6+differ%7weekno=(date6)?date-7:date(3)如果year年份小于1994年,則星期值weekno按下列公式計算:differ=(1994-year)*(365%7)+(1996-year)/4-(2001-year)/100+(2000-year)/400weekno=6-dder%7#include"iostream.h"#include"iomanip.h"intleap(intn){if((1))return0elsereturn1;}intweek(intyear){inta1,differ,date,weekno;if(year==1994)a1=0;elseif(year>1994)a1=1;elsea1=-1;switch(a1){case0:return6;break;case1:{(2)date=6+differ%7;weekno=(date>6)?date-7date;}returnweekno;break;case-1:{differ=(1994-year)*(365%7)+(1996-year)/4-(2001-year)/100+(2000-year)/400;weekno=6-differ%7;}returnweekno;break;}}voidmain()}inti,year,m2,n,j;cout<<“Pleaseinput某年數(shù):”;cin>>year;if(!leap(year))(3);elsem2=28;intmonth[12]:{31,m2,31,30,31,30,31,31,30,31,30,31};(4)for(i=0;i<12;i++){cout<<<<end1<<setw(4*n)<<";for(j=1;j<=month[i];j++){cout<<setw(4)<<j;n++;if(n>=7){(5)cout<<end1;}}}}標(biāo)準(zhǔn)答案:(n%100==0)||(n%400==0)differ=(year-1994)*(365%6)+(year-1993)/4-(year-2001)/100+(year-2001)/400;m2=29n=week(year);n=0;知識點解析:暫無解析12、閱讀下列Java程序和程序說明,將應(yīng)填入(n)處的字句寫在對應(yīng)欄內(nèi)。【說明】本程序ExceptionTester實現(xiàn)功能:讀入兩個整數(shù),第1個數(shù)除以第2個數(shù),之后輸出。若第2個數(shù)為0,則自動進行異常處理。程序如下:(1);publicclassExceptionTester{publicstaticvoidmain(Stringargs[]){intresult;intnumber[]=newint[2];booleanvalid;for(inti=0;i<2;i++){valid=(2);while(!valid){try{System.out.println("Enternumber"+(i+1));number[i]=Integer.valueOf(Keyboard.getString()).intValue();valid=true;}catch(NumberFormatExceptione){System.out.println("Invalidintegerentered.Pleasetryagain.");}}}by{result=number[0]/number[1];System.out.print(number[0]+"/"+number[1]+"="+result);}catch((3)){System.out.println("Secondnumberis0,cannotdodivision!");}}}其中,Keyboard類的聲明為:imponjava.io.*;publicclassKeyboard{staticBufferedReaderinputStream=new(4)(newInputStreamReader(System.in));publicstaticintgetInteger(){try{return(Integer,valueOf(inputStream.readLlne().trim()).intValue());}catch(Exceptione){e.printStackTrace();return0;}}public(5){by{return(inputStream.readLine());}catch(IOExceptione){return"0";}}}標(biāo)準(zhǔn)答案:(1)importjava.io.*(2)false(3)ArithmeticExceptione(4)BufferedReader(5)staticStringgetString()知識點解析:(1)importjava.io.*Java程序的頭部。(2)false開關(guān)變量valid初值應(yīng)該為false。(3)ArithmeticExceptione捕捉算術(shù)計算異常信息。(4)BufferedReader動態(tài)生成一個BufferedReader對象用于輸入。(5)staticStringgetString()讀字符串成員函數(shù)的函數(shù)頭部。閱讀以下說明和Java代碼,將應(yīng)填入(n)處的字句寫在對應(yīng)欄內(nèi)。[說明]在一些大型系統(tǒng)中,大多數(shù)的功能在初始化時要花費很多時間,如果在啟動的時候,所有功能(連不用的功能)都要全面初始化的話,會連帶影響到應(yīng)用軟件要花很多時間才能啟動。因此常將程序設(shè)計成到了實際要使用某種功能的階段才初始化該功能。以下示例展示了Proxy(代理)模式,PrinterProxy類執(zhí)行一些比較“輕”的方法——設(shè)置名稱和取得名稱,需要真正執(zhí)行“重”的方法——真正打印——時才初始Print類。圖6-1顯示了各個類間的關(guān)系。[圖6-1][Java代碼]//Printable.JavapubliC(1)Printable{publicabstractvoidsetPrinterName(Stringname);publicabstractStringgetprinterName();publicabstractvoidprint(Stringstring);}//Printer.JavapublicclassPrinterimplementsPrintable{privateStringname;publicPrinter(){System.out.println("正在產(chǎn)生Printer的對象實例");}publicPrinter(Stringname){=name;heavyJob("正在產(chǎn)生Printer的對象實例("+name+")");publicvoidsetPrinterName(Stringname){=name;publicStringgetPrinterName(){returnname;publicvoidprint(Stringstring){System.out.println("==="+name+"====");System.out.println(string);}}//PrinterProxy.JavapublicclassPrinterProxy(2)Printable{privateStringname;privatePrinterreal;publicPrinterProxy(){}publicPrinterProxy(Stringname){=name;}publicgynchronizedvoidsetPrinterName(Stringname){if((3)){real.setPrinterName(name);}=name;}publicStringgetprinterName(){returnname;}publicvoidprint(Stringstring){(4);real.print(string);}privatesynchronizedvoidrealize(){//產(chǎn)生真正的Printer對象if(real==null){real=(5);}}}13、(1)標(biāo)準(zhǔn)答案:interface知識點解析:暫無解析14、(2)標(biāo)準(zhǔn)答案:implements知識點解析:暫無解析15、(3)標(biāo)準(zhǔn)答案:real!=null知識點解析:暫無解析16、(4)標(biāo)準(zhǔn)答案:realize()知識點解析:暫無解析17、(5)標(biāo)準(zhǔn)答案:newPrinter(name)知識點解析:在Java中,interface和abstractclass均能包含抽象方法,“類是用來繼承的(extends),接口是用來實現(xiàn)的(implements)?!庇深怭rinter的聲明可判知Printable應(yīng)為接口,故空(1)應(yīng)填interface。因Printable是一個接口,故空(2)應(yīng)填implements。該空比較簡單。real是一個引用,調(diào)用之前當(dāng)然得先判斷real是否為空,只有不是空才能進行調(diào)用,否則將出現(xiàn)不可預(yù)期的結(jié)果,因此空(3)應(yīng)填real!-NULL。在執(zhí)行打印時,需要保證已經(jīng)正確生成了real對象,否則打印將無法完成,這也正是Proxy的核心所在,到真正需要打印時,才生產(chǎn)real對象,因此空(4)應(yīng)填realize()。real是Printer對象引用,空(5)是生成一個Printer對象,注意Printer類的構(gòu)造函數(shù)是Printer(stringname),故應(yīng)填newPrinter(name)。順便說一下,生成real對象時,進行Treal是否為空的判斷,并將方法realize()聲明為synchronized,這是為了避免生成多個real對象,有一個即可。軟件水平考試(中級)軟件設(shè)計師下午(應(yīng)用技術(shù))試題模擬試卷第3套一、必答題(本題共7題,每題1.0分,共7分。)閱讀以下說明,回答問題1~2,將解答填入對應(yīng)的解答欄內(nèi)。[說明]某程序的功能是輸入三個正整數(shù)作為邊長,判斷三條邊構(gòu)成的三角形是否等邊、等腰或是一般三角形。1、通過該程序的算法用等價類設(shè)計測試用例,檢查邏輯覆蓋標(biāo)準(zhǔn)。標(biāo)準(zhǔn)答案:(1)劃分等價類并編號,見下表:(2)為合理設(shè)計等價類測試用例,對于表中對應(yīng)的四個合理等價類,用三個測試用例覆蓋,見下表:(3)為每—個不合理等價類設(shè)計一個側(cè)試用例,見下表:知識點解析:暫無解析2、用邊界值分析法設(shè)計測試用例,檢查邏輯覆蓋標(biāo)準(zhǔn)。標(biāo)準(zhǔn)答案:用邊界值法設(shè)計測試用例,見下表:知識點解析:本題屬于軟件測試中測試用例的設(shè)計,分為白盒技術(shù)和黑盒技術(shù)。等價類劃分是將輸人數(shù)據(jù)域按有效的或無效的劃分成若干個等價類,測試每個等價類的代表值就等于對該類其他值的測試。步驟如下;1)按程序的功能說明,找出一個個輸入條件,將每個輸入條件劃分成兩個或多個等價類,將其列表。2)確定測試用例。根據(jù)已劃分的等價類,按以下步驟設(shè)計測試用例:Ⅰ.為每一個等價類編號Ⅱ.沒計一個測試用例,使其盡可能多地覆蓋尚未被覆蓋過的合理等價類,重復(fù)此步,直到所有合理等價類被測試用例覆蓋。Ⅲ.設(shè)計一個測試用例,使其只覆蓋一個不合理等價類。重復(fù)這一步,直到所有不合理等價類被測試用例覆蓋。邊界值分析不是從一個等價類中任選一個例子作為代表,而是將測試邊界情況作為重點目標(biāo),選取正好等于,剛剛大于或剛剛小于邊界值的測試數(shù)據(jù)。因為實踐經(jīng)驗表明,程序往往在處理邊界情況時發(fā)生錯誤。其基本思想是列出程序中可能發(fā)生錯誤的情況,根據(jù)這些情況選擇測試用例。邏輯覆蓋是白盒技術(shù),它追求程序內(nèi)部的邏輯覆蓋程度,要設(shè)計使覆蓋程度較高的或覆蓋最優(yōu)代表性的路徑的測試用例。閱讀以下說明,回答問題1~4,將解答填入對應(yīng)的解答欄內(nèi)。[說明]設(shè)T1,T2,T3為如下所述的三個事務(wù)。T1:A:=A+1。T2:A:=A*2。T3:A:=在屏幕上輸出A,并將A置為1;其中A為數(shù)據(jù)庫中的某個數(shù)據(jù)項。設(shè)A的初值為0。3、若這三個事務(wù)允許并行執(zhí)行,則請列舉出有多少可能的正確結(jié)果。標(biāo)準(zhǔn)答案:有6種可能的正確結(jié)果,相應(yīng)的6個串行調(diào)度是:T1-T2-T3:A=1T1-T3-T2:A=2T2-T1-T3:A=1T2-T3-T1:A=2T3-T1-T2:A=4T3-T2-T1:A=3知識點解析:暫無解析4、各個事務(wù)的內(nèi)部結(jié)構(gòu)如下所示。若事務(wù)不施加任何鎖,則有多少可能的調(diào)度。T1:R1(GetAintot1;t1:=t1+1);U1(UpdateAfromt1);T2:R2(GetAintot2;t2:=t2*2);U2(UpdateAfromt2);T3:1t3(GetAintot3;displayt3);U3(UpdateAfrom1);標(biāo)準(zhǔn)答案:總共有90種可能的調(diào)度。知識點解析:暫無解析5、能否產(chǎn)生“正確”結(jié)果但不可串行化的調(diào)度?標(biāo)準(zhǔn)答案:能夠產(chǎn)生。知識點解析:暫無解析6、若這三個事務(wù)都遵守兩段鎖協(xié)議,那么是否存在事實上可串行化但又不能形成的調(diào)度?標(biāo)準(zhǔn)答案:存在。知識點解析:在并行系統(tǒng)環(huán)境下,事務(wù)并發(fā)操作的調(diào)度的可串行性的標(biāo)準(zhǔn)如下:調(diào)度結(jié)果的正確:保持?jǐn)?shù)據(jù)庫的一致狀態(tài)。幾個事務(wù)的并行執(zhí)行是正確的,當(dāng)且僅當(dāng)其結(jié)果與按某一次序串行的執(zhí)行它們時的結(jié)果相同??纱行允遣⑿惺聞?wù)正確性的唯一準(zhǔn)則。因此,若有3個事務(wù)并行執(zhí)行時,可能的正確結(jié)果與3個事務(wù)串行執(zhí)行的結(jié)果應(yīng)該相同。由于3個事務(wù)串行執(zhí)行有6種可執(zhí)行方案,因此有6種可能的正確結(jié)果。若事務(wù)不施加任何鎖,數(shù)據(jù)項則可以同時被讀寫。假設(shè)Ri,Rj,Rk分別表示三種檢索操作R1,R2,R3,順序無關(guān)緊要;類似地,Up,Uq,Ur分別表示更新操作U1,U2,U3,順序也無關(guān)緊要。但事務(wù)內(nèi)部操作順序是固定的。因此,可能的調(diào)度是:Ri-Rj-Rk-Up-Uq-Ur:3*2*1*3*2*1=36Ri-Rj-Up-Rk-Uq-Ur:3*2*2*1*2*1=24Ri-Rj-Up-Uq-Rk-Ur:3*2*2*1*1*1=12Ri-Up-Rj-Rk-Uq-Ur:3*1*2*1*2*1=12Ri-Up-Rj-Uq-Rk-Ur:3*1*2*1*1*1=6由此可見,總共有90種可能的調(diào)度。本例能夠產(chǎn)生“正確”結(jié)構(gòu)但不可串行化的調(diào)度。例如:調(diào)度R1-R2-R3-U3-U2-U1得到的結(jié)果與6個可能的串行調(diào)度中的兩個相同。這樣,對于給定的初始值。恰好是“正確的”。但必須清楚這個正確只是巧合,完全是因為初始值恰好為。才得到的,對其他的初始值則未必如此。例如,考慮初始值為10而非0的情況,上面給出的調(diào)度R1-R2-R3-U3-U2-U1就不能得到正確的結(jié)果。因此,該調(diào)度是不可串行的。調(diào)度R1-R3-U1-U3-R2-U2是可串行的(等價于串行調(diào)度T1-T3-T2),但在T1,T2和T3都遵守兩段鎖協(xié)議時不能出現(xiàn)。因為在這一協(xié)議下,操作R3會代表事務(wù)T3.在A上獲得s鎖;這樣事務(wù)T1中的操作U1就無法在該鎖釋放前進行,且直到T3結(jié)束時才會發(fā)生。事實上,事務(wù)T3和T1在操作U3到達(dá)時將發(fā)生死鎖。7、閱讀以下說明,回答問題1~4,將解答填入對應(yīng)的解答欄內(nèi)。[說明]假設(shè)二叉樹采用連接存儲結(jié)構(gòu)進行存儲,root指向根接點,p所指結(jié)點為任一給定的結(jié)點,編寫一個求從根結(jié)點到p所指結(jié)點之間路徑的函數(shù)。voidpath(root,p)btree*root,*p;{Btree*stack[m0],*s;inttag[m0],top=0,i,find=0;s=root;do{while(s!=NULL){stack[top]=s;tag[top]=0;((1))}if(top>0){((2))if(tag[top]==1){if((3)){for(i=1;i<=top;i++printf("%d",stack[i]->data);find=1;}elsetop--;}if((4)){p=p->right;((5))}}}while(find||(s!=NULL&&top!=0));}標(biāo)準(zhǔn)答案:(1)s=s->left;(2)s=stack[top];(3)(s==p)(4)(top>0&&!find)(5)tag[top]=1知識點解析:本題采用非遞歸后序遍歷數(shù)root,當(dāng)后序遍歷訪問到p所指結(jié)點時,此時stack中所有的結(jié)點均為P所指結(jié)點的祖先,由這些祖先便構(gòu)成了一條從根結(jié)點到p所指結(jié)點之間的路徑。8、閱讀以下說明,回答問題,將解答填入對應(yīng)的解答欄內(nèi)。[說明]計算下列源代碼的McCabe環(huán)數(shù),畫出控制流程圖并用羅馬數(shù)字標(biāo)出區(qū)域。readx,y,z;type=“scalene”;if(x==yorx==zory==z)type=“isosceles”;if(x==yandx==z)type=“equilateral”;if(x>=y+zOry>=x+20rz>=x+y)type=“notatriangle”;if(x<=0ory<=0orz<=0)type=“badinputs”;printtype;標(biāo)準(zhǔn)答案:知識點解析:McCabe的環(huán)數(shù)是軟件開發(fā)中繼代碼行之后最常使用的度量。它基于圖論的環(huán)數(shù)。McCabe試圖度量程序的復(fù)雜性。前提是該復(fù)雜性與程序的控制流相關(guān)。圖論使用公式C=e-n+1來計算環(huán)數(shù)。McCabe稍加修改后的公式為:C=e-n+2p其中:e=邊的數(shù)目n=結(jié)點的數(shù)目p=強連通組建的數(shù)目(通常為1)控制流程圖如下:區(qū)域的數(shù)目為5,所以環(huán)數(shù)也為5。也可以用判斷來數(shù)出環(huán)數(shù)。離開結(jié)點a、c、e、g的路徑各有一個判斷,因此,共有4個判斷。環(huán)數(shù)為判斷數(shù)加1,所以環(huán)數(shù)為5。也可以利用公式e-n+2來計算環(huán)數(shù)。這里,e=12,n=9,e-n+2=5二、選答題(本題共3題,每題1.0分,共3分。)9、閱讀以下說明和c++碼,將應(yīng)填入(n)處的字名寫在的對應(yīng)欄內(nèi)。[說明]以下函數(shù)完成求表達(dá)式的值,請?zhí)羁帐怪瓿纱斯δ堋loatsum(floatx){floats=0.0;intsign=1;(1);for(inti=1;(2);i++){t=t*x;s=s+(3);sign=-sign;(4);}標(biāo)準(zhǔn)答案:floatt=1.0;i<=100-sign*i/(t+sign*i)returns知識點解析:暫無解析10、閱讀以下說明和Java碼,將應(yīng)填入(n)處的字名寫在的對應(yīng)欄內(nèi)。[說明]編寫一個學(xué)生類Student,要求:(1)學(xué)生類Student屬性有:id:long型,代表學(xué)號name:String類對象,代表姓名age:int型,代表年齡sex:boolen型,代表性別(其中:true表示男,false表示女)phone:String類對象,代表聯(lián)系電話(2)學(xué)生類Student的方法有:Student(longi,Stringn,inta,booleans,Stringp):有參構(gòu)造函數(shù),形參表中的參數(shù)分別初始化學(xué)號、姓名、年齡、性別和聯(lián)系電話。intgetAge():獲取年齡作為方法的返回值。booleangetSex():獲取性別作為方法的返回值。StringgetPhone():獲取聯(lián)系電話作為方法的返回值。publicStringtoString():以姓名:性別:學(xué)號:聯(lián)系電話的形式作為方法的返importjava.applet.Applet;importjava.awt.*;publicclassStudentextendsApplet{longid;Stringname,phone;intage;booleansex;Student(longi,Stringn,inta,booleans,Stringp){id=i;name=n;age=a;sex=s;phone=p;{publicvoidpaint(Graphicsg){Studentx=newStudent(5000,"xiaoliu",89,true,"8989898");(1);(2)g.drawstring(x.getPhone(),140,140);}intgetAge(){returnage;}booleangetsex(){returnsex;}StringgetPhone(){returnphone;}StringToString(){(3)}}標(biāo)準(zhǔn)答案:g.drawString(x.ToString(),20,100)g.drawString(x,getAge(),80,120);retum(“姓名”+name+“學(xué)號:”+id+“聯(lián)系電話:”"+phone);知識點解析:暫無解析11、閱讀以下說明和VisualBasic碼,將應(yīng)填入(n)處的字名寫在的對應(yīng)欄內(nèi)[說明]在窗體上畫一個列表框、一個命令按鈕和一個標(biāo)簽,其名稱分別為List1、Command1和Label1,通過屬性窗口把列表框中的項目設(shè)置為:“第一個項目”、“第二個項目”、“第三個項目”、“第四個項目”。程序運行后,在列表框中選擇一個項目,然后單擊命令按鈕,即可將所選擇的項目刪除,并在標(biāo)簽中顯示列表框當(dāng)前的項目數(shù),運行情況如圖所示(選擇“第三個項目”的情況)。下面是實現(xiàn)上述功能的程序,請?zhí)羁铡?.PrivateSubCommand1_Click()IfList1.ListIndex>=(1)ThenList1.RemoveItem(2)Label1.Caption=(3)ElseMsgBox“請選擇要刪除的項目”EndIfEndSub標(biāo)準(zhǔn)答案:0List1.ListIndexList1.ListCount知識點解析:暫無解析軟件水平考試(中級)軟件設(shè)計師下午(應(yīng)用技術(shù))試題模擬試卷第4套一、必答題(本題共15題,每題1.0分,共15分。)閱讀以下關(guān)于住宅安全系統(tǒng)的技術(shù)說明,根據(jù)要求回答問題1~問題4。[說明]基于某嵌入式系統(tǒng)的住宅安全系統(tǒng)可使用傳感器(如紅外探頭、攝像頭等)來檢測各種意外情況,如非法進入、火警和水災(zāi)等。房主可以在安裝該系統(tǒng)時配置安全監(jiān)控設(shè)備(如傳感器、顯示器、報警器等),也可以在系統(tǒng)運行時修改配置,通過錄像機和電視機監(jiān)控與系統(tǒng)連接的所有傳感器,并通過控制面板上的鍵盤與系統(tǒng)進行信息交互。在安裝過程中,系統(tǒng)給每個傳感器賦予一個ID編號和類型,并設(shè)置房主密碼以啟動和關(guān)閉系統(tǒng),設(shè)置傳感器事件發(fā)生時應(yīng)自動撥出的電話號碼。當(dāng)系統(tǒng)檢測到一個傳感器事件時,就激活警報,撥出預(yù)置的電話號碼,并報告關(guān)于位置和檢測到的事件的性質(zhì)等信息。住宅安全系統(tǒng)的頂層數(shù)據(jù)流圖如圖6-13所示,圖6-14是住宅安全系統(tǒng)的第0層數(shù)據(jù)流圖,圖6-15是對住宅安全系統(tǒng)的第0層數(shù)據(jù)流圖中加工4的細(xì)化圖。1、需求分析是一個包括創(chuàng)建和維持系統(tǒng)需求文檔所必需的一切活動的過程。一個通用的需求分析過程模型如圖6-16所示,請從以下供選擇的答案中選擇合適的內(nèi)容填寫到圖6-16中相應(yīng)的位置中。[供選擇的答案]A.用戶需求和功能需求B.需求描述C.需求導(dǎo)出和分析D.需求有效性驗證標(biāo)準(zhǔn)答案:這是一道要求讀者掌握需求分析過程模型的理解識記題。本題所涉及的知識點如下。需求分析是一個包括創(chuàng)建和維持系統(tǒng)需求文檔所必需的一切活動的過程。它通常包括5個通用的活動:系統(tǒng)可行性研究、需求導(dǎo)出和分析、需求描述和文檔編寫、需求有效性驗證及需求管理。每個通用的活動的相關(guān)說明見表6-15。本試題完整的需求分析過程模型如圖6-24所示,圖中說明了這些活動之間的關(guān)系,也說明了在需求分析過程的每個階段將產(chǎn)生哪些文檔。知識點解析:暫無解析2、請將住宅安全系統(tǒng)的頂層數(shù)據(jù)流圖(見圖6-13)中(A)~(D)空缺處,以及第0層數(shù)據(jù)流圖(見圖6-14)中(E)空缺處的內(nèi)容填寫完整。標(biāo)準(zhǔn)答案:這是一道要求讀者掌握分層數(shù)據(jù)流圖中數(shù)據(jù)流的平衡原則的綜合分析題。本題的解答思路如下。①為了表達(dá)復(fù)雜問題的處理過程,用一個數(shù)據(jù)流圖往往不夠。一般是按問題的層次結(jié)構(gòu)進行逐步分解,并以分層的數(shù)據(jù)流圖來反映這種結(jié)構(gòu)關(guān)系。通常根據(jù)層次關(guān)系,將數(shù)據(jù)流圖分為頂層數(shù)據(jù)流圖、中間層數(shù)據(jù)流圖和底層數(shù)據(jù)流圖。把整個軟件系統(tǒng)看成是一個大的加工,然后根據(jù)系統(tǒng)從哪些外部實體接收數(shù)據(jù)流,以及系統(tǒng)發(fā)送數(shù)據(jù)流到哪些外部實體,就可以畫出系統(tǒng)的輸入偷出圖,即頂層數(shù)據(jù)流圖。中間層數(shù)據(jù)流圖是將父層數(shù)據(jù)流圖中的某個加工進行細(xì)化,而它的某些加工還可以進一步細(xì)化,這樣就形成了一層層的子加工。除頂層圖外,其余分層數(shù)據(jù)流圖從0開始編號,例如,0層圖的加工號可以是“1,2,3,…”,其子圖號可能是“1.1,1.2,1.3,…”,再下一層的子圖可能是“1.1.1,1.1.2,,1.1.3,…”,依次類推。本題的圖6-13并不是完整的頂層數(shù)據(jù)流圖,解答時需通過題干的說明信息及第0層數(shù)據(jù)流圖來分析頂層圖并解答問題。②題干中提及的關(guān)鍵信息“房主可以在安裝該系統(tǒng)時配置安全監(jiān)控設(shè)備(如傳感器、顯示器、報警器等)”,在頂層數(shù)據(jù)流圖(圖6-13)中這3個名詞并沒有完整地出現(xiàn),僅出現(xiàn)了“報警器”一詞。在圖6-13中“電視機”實際上起題干中關(guān)鍵信息“顯示器”的作用。結(jié)合圖6-13中“傳感器狀態(tài)”這一輸出數(shù)據(jù)流信息可判斷出,(D)空缺處應(yīng)填入“傳感器”這一外部實體。③由于子層數(shù)據(jù)流圖是其父數(shù)據(jù)流圖中某一部分內(nèi)部的細(xì)節(jié)圖(或加工圖),因此子層數(shù)據(jù)流圖的輸入/輸出數(shù)據(jù)流應(yīng)該保持一致,即在上一級數(shù)據(jù)流圖中有幾條數(shù)據(jù)流,其子圖也一定有同樣的數(shù)據(jù)流,而且它們的輸送方向是一致的。④在住宅安全系統(tǒng)第0層數(shù)據(jù)流圖(見圖6-14)中,加工5(信息及狀態(tài)顯示)的輸出數(shù)據(jù)流為“TV信號”,其中“TV”是日常生活中電視機的英文縮寫。在圖6-13頂層數(shù)據(jù)流圖中有一外部實體——“錄像機、電視機”,因此可推理出圖6-13中(B)空缺處的數(shù)據(jù)流就是“TV信號”。⑤根據(jù)數(shù)據(jù)流的方向可知,在圖6-13頂層數(shù)據(jù)流圖中(C)空缺處的數(shù)據(jù)流屬于輸出數(shù)據(jù)流。在第0層數(shù)據(jù)流圖(見圖6-14)中,共有“TV信號”、“電話撥號”、“告警類型”和“顯示信息”4個輸出數(shù)據(jù)流。在圖6-13頂層數(shù)據(jù)流圖中現(xiàn)已存在“TV信號”、“電話撥號”和“顯示信息”3個輸出數(shù)據(jù)流,因此可推理出圖6-13中流向“報警器”外部實體的數(shù)據(jù)流是“告警類型”,即(C)空缺處填寫的數(shù)據(jù)流應(yīng)是“告警類型”。⑥根據(jù)數(shù)據(jù)流的方向可知,在圖6-14所示的第0層數(shù)據(jù)流圖中(E)空缺處的數(shù)據(jù)流屬于輸入數(shù)據(jù)流,且與“傳感器監(jiān)控”這一加工處理相關(guān)。在圖6-13頂層數(shù)據(jù)流圖中,外部實體“傳感器”流入“住宅安全系統(tǒng)”的輸入數(shù)據(jù)流是“傳感器狀態(tài)”,由此可推理出圖6-13中(E)空缺處的數(shù)據(jù)流就是“傳感器狀態(tài)”。⑦同理,根據(jù)數(shù)據(jù)流的方向可知,在圖6-13所示的頂層數(shù)據(jù)流圖中(A)空缺處的數(shù)據(jù)流屬于輸入數(shù)據(jù)流。在第0層數(shù)據(jù)流圖(見圖6-14)中流入“住宅安全系統(tǒng)”加工的輸入數(shù)據(jù)流共有4個,分別是“用戶配置請求”、“開始/停止”、“用戶密碼”和“傳感器狀態(tài)”。在圖6-13所示的頂層數(shù)據(jù)流圖中現(xiàn)已存在“開始/停止”、“用戶密碼”和“傳感器狀態(tài)”3個輸出數(shù)據(jù)流,因此可推理出圖6-13中由“控制面板”外部實體流出的數(shù)據(jù)流是“用戶配置請求”,即(A)空缺處填寫的數(shù)據(jù)流應(yīng)是“用戶配置請求”。⑧將以上分析結(jié)果歸納整理,完整的住宅安全系統(tǒng)頂層數(shù)據(jù)流圖如圖6-25所示。知識點解析:暫無解析3、將圖6-15所示的加工4的細(xì)化數(shù)據(jù)流圖中的數(shù)據(jù)流補充完整,請按以下答題格式示例的要求回答問題。[答題格式示例][數(shù)據(jù)流的起點]→(數(shù)據(jù)流名稱)→[數(shù)據(jù)流名稱終點]或[數(shù)據(jù)流的起點]→(數(shù)據(jù)流名稱)標(biāo)準(zhǔn)答案:本試題的解答思路也是根據(jù)數(shù)據(jù)流圖的數(shù)據(jù)流平衡原則進行分析的,詳細(xì)的解答步驟如下。①由于子圖是其父圖中某一部分內(nèi)部的細(xì)節(jié)圖(加工圖),所以子圖的輸入/輸出數(shù)據(jù)流應(yīng)該保持一致。其含義是:在上一級中有幾條數(shù)據(jù)流,其子圖也一定有同樣的數(shù)據(jù)流,而且它們的輸送方向是一致的。②在第0層數(shù)據(jù)流圖(見圖6-14)中,“4傳感器監(jiān)控”加工模塊有1條輸入數(shù)據(jù)流——“傳感器狀態(tài)”和3條輸出數(shù)據(jù)流——“電話撥號”、“傳感器數(shù)據(jù)”和“告警類型”。③在圖6-15所示的加工4的細(xì)化數(shù)據(jù)流圖中,只有輸出數(shù)據(jù)流“告警類型”,因此,該加工圖缺少了“傳感器狀態(tài)”、“電話撥號”和“傳感器數(shù)據(jù)”這3條數(shù)據(jù)流。④由于加工4的細(xì)化數(shù)據(jù)流圖(見圖6-15)的內(nèi)部結(jié)構(gòu)、數(shù)據(jù)流向已清晰地給出,因此只需將“傳感器狀態(tài)”、“電話撥號”和“傳感器數(shù)據(jù)”這3條數(shù)據(jù)流進行對號入座。⑤根據(jù)常識可知,“電話撥號”是加工處理“4.5撥號”的輸出數(shù)據(jù)流;“傳感器狀態(tài)”是“4.4讀傳感器”處理的輸入數(shù)據(jù)流。⑥“傳感器數(shù)據(jù)”應(yīng)該是經(jīng)“4.1格式顯示”處理過的數(shù)據(jù)流,所以作為“4.1格式顯示”的輸出數(shù)據(jù)流。其中,“格式顯示”處理是指將準(zhǔn)備輸出顯示的傳感器數(shù)據(jù)處理成第0層數(shù)據(jù)流圖(見圖6-14)中“5信息與狀態(tài)顯示”能夠接受的傳感器數(shù)據(jù)格式。⑦按照試題中答題格式示例的要求,將以上分析結(jié)果整理如下:[4.5撥號]→(電話撥號)(傳感器狀態(tài))→[4.4讀傳感器][4.1格式顯示]→(傳感器數(shù)據(jù))⑧另外,將以上分析結(jié)果歸納整理,完整的加工4的細(xì)化數(shù)據(jù)流圖如圖6-26所示。知識點解析:暫無解析4、修改在住宅安全系統(tǒng)第0層數(shù)據(jù)流圖(見圖6-14)中的數(shù)據(jù)存儲“配置信息”,將會影響第0層數(shù)據(jù)流圖中的哪些加工?標(biāo)準(zhǔn)答案:這是一道要求讀者掌握數(shù)據(jù)流圖(DFD圖)中數(shù)據(jù)存儲作用的綜合分析題。本題的解答思

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論