




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
軟件水平考試(中級)軟件設(shè)計師下午(應(yīng)用技術(shù))試題模擬試卷2(共9套)(共118題)軟件水平考試(中級)軟件設(shè)計師下午(應(yīng)用技術(shù))試題模擬試卷第1套一、必答題(本題共8題,每題1.0分,共8分。)閱讀以下說明和流程圖,回答問題1和問題2,將答案寫在答卷的對應(yīng)欄內(nèi)。【說明】本流程圖實(shí)現(xiàn)從比賽成績文件生成賽車成績一覽表。某國際高等級賽車比賽使用如圖所示的成績處理流程,比賽成績記錄在成績文件F0中,其記錄格式如下:由該成績文件生成如下所示的車手成績一覽表。生成的車手成績一覽表按總名次(系統(tǒng)會根據(jù)總成績和分段成績按規(guī)定方式計算得出總名次,不會有相同名次存在)降序排列。表中第n賽段的名次是該車手相應(yīng)賽段在全部車手中的名次,成績是根據(jù)規(guī)定方式計算而得的成績,總名次是總成績在所有車手中排名的名次。流程圖中的順序文件F0是車手成績文件,F(xiàn)0文件經(jīng)處理l處理后產(chǎn)生順序文件F,然后經(jīng)處理2至處理4對文件F進(jìn)行處理和更新,在處理5中,僅僅對文件F的記錄進(jìn)行車手成績一覽表的編排輸出,不進(jìn)行排序和增加名次等處理。1、流程圖中的文件F的記錄格式設(shè)置為如下形式:其中的①、②應(yīng)定義為何種數(shù)據(jù)?標(biāo)準(zhǔn)答案:①成績②名次。知識點(diǎn)解析:暫無解析2、簡述處理2、處理3和處理4做何種處理,若有排序處理則需指明排序的鍵及序(升序或降序)。標(biāo)準(zhǔn)答案:按課程代碼(升序)、成績(降序)處理2:對文件F排序。處理3:決定分賽段名次,計算總成績,決定總名次,填入文件F的相應(yīng)字段。處理4:按總成績(降序),按課程代碼(降序)排列。知識點(diǎn)解析:文件F是文件F0經(jīng)過處理1產(chǎn)生的文件,這個文件又經(jīng)過處理2、處理3、處理4的處理和更新,而在處理5中,只是進(jìn)行了車手成績一覽表的輸出編排,不進(jìn)行排序和增加名次等處理,文件F中的數(shù)據(jù)項(xiàng)必須是由文件F0產(chǎn)生,還要經(jīng)過處理產(chǎn)生車手成績一覽表。所以,可以推導(dǎo)出文件F中①是成績,②是名次通過對給出的車手成績一覽表的觀察,可以確定對文件F的處理中要按課程代碼升序,按成績降序進(jìn)行排列。處理2、處理3、處理4要對文件進(jìn)行一系列處理,最后得到的文件F在處理5只是做了輸出編排,所以在處理4已經(jīng)完成要求的根據(jù)分賽段成績比較而獲得的分賽段名次,按總名次降序排序,按課程名排序。所以,可以推導(dǎo),處理2對文件F排序,處理3決定分賽段名次,計算總成績,決定總名次,填入文件F的相應(yīng)字段。處理4按總成績(降序),按課程代碼(降序)排列。閱讀以下說明,回答問題1至問題3,將答案寫在答卷的對應(yīng)欄內(nèi)?!菊f明】下面是某ERP系統(tǒng)中零件供應(yīng)模塊的3個關(guān)系模式。供應(yīng)商:S(SNO,SNAME,CITY,STATUS)零件:P(PNO,PNAME,WEIGHT,COLOR,CITY)供應(yīng)單:SP(SNO,PNO,PTY,SPDate)屬性說明:SNO—供應(yīng)商編號,SNAME—供應(yīng)商名稱,CITY—地址,STATUS—供應(yīng)商狀態(tài)PNO—零件編號,PNAME—零件名稱,WEIGHT—零件重量,COLOR—零件顏色,CITY—地址,PTY—數(shù)量,SPDate—訂單日期問題:用SQL語句完成以下操作。3、求供應(yīng)紅色零件北京供應(yīng)商的編號、名稱和狀態(tài)。標(biāo)準(zhǔn)答案:SELECTDISTINCTS.SNO,S.SNAME,S.STATUSFROMS,P,SPWHERES.SNO=SP.SNOANDP.PNO=SP.PNOANDP/PNO=’紅色’知識點(diǎn)解析:暫無解析4、將所有北京供應(yīng)商的狀態(tài)為2的修改為1。標(biāo)準(zhǔn)答案:UPDATESSETSTATUS=’1’WHERECITY=’北京’ANDSTATUS=’1’知識點(diǎn)解析:暫無解析5、求零件顏色不是白色和黑色的供應(yīng)商狀態(tài)為1的訂單的數(shù)量。標(biāo)準(zhǔn)答案:SELECTCOUNT(*)FROMS,P,SPWHERES.SNO=SP.SNOANDP.PNO=SP.PN0ANDP.COLOR=’紅色’ANDS.STATUS=’1’知識點(diǎn)解析:這3個語句比較簡單,只是考查考生的SQL語句基本知識。閱讀以下說明和圖,回答問題1和問題2,將答案寫在答卷的對應(yīng)欄內(nèi)?!菊f明】銀行客戶需要從ATM取100元,他向ATM的讀卡機(jī)插卡,讀卡機(jī)讀取卡號,然后ATM屏幕初始化,ATM提示輸入PIN(密碼),客戶輸入PIN(123456),ATM打開他的賬戶,密碼有效,因此ATM提示選擇事務(wù),客戶選擇取錢,ATM提示輸入金額,客戶輸入100元,ATM驗(yàn)證賬戶上有足夠的錢,就從賬上減去100元,ATM吐出100元,并退出客戶的卡。6、根據(jù)上面的描述,完成下述的時序圖。標(biāo)準(zhǔn)答案:1.插卡2.讀卡號3.提示輸入PIN4.輸入PIN5.驗(yàn)證PIN6.選擇事務(wù)(取錢)7.扣錢(100元)8.提供錢(100元)9.退卡知識點(diǎn)解析:暫無解析7、比較時序圖和協(xié)作圖,說明區(qū)別和聯(lián)系。標(biāo)準(zhǔn)答案:時序圖和協(xié)作圖都可以用來描述系統(tǒng)對象之間的交互。時序圖強(qiáng)調(diào)一組對象之間調(diào)用的時間順序,協(xié)作圖強(qiáng)調(diào)這組對象之間的關(guān)系。知識點(diǎn)解析:時序圖用來描述對象間的交互行為。它注重消息的時間順序,即消息的發(fā)送和接收的順序。時序圖的圖形組成成分為:對象、生存線、消息和對象激活期(本題中省略)。試題中要求的就是完成消息,所以要根據(jù)消息的時間順序,和消息發(fā)出與接收的對象。由于已經(jīng)給出了詳細(xì)明晰的動作過程描述,未完成的時序圖中也標(biāo)識出對象和部分消息,所以,應(yīng)該比較容易地完成其它的消息。8、閱讀下列C程序和程序說明,將應(yīng)填入(n)處的字句寫在答題紙的對應(yīng)欄內(nèi)。【說明】用克魯斯卡爾算法求解給定圖的最小生成樹。#include<stdio.h>#include<stdlib.h>#defineMAXN30typedefstruct{intv1,v2;/*一條邊依附的兩個頂點(diǎn)*/intweight;/*邊上的權(quán)值*/}EDGE;typedefstruct{intVnum;/*圖中的頂點(diǎn)數(shù)目*/EDGEe[MAXN*(MAXN-1)/2];/*圖中的邊*/}Graph;typedefstructnode{/*用鏈表存儲同一個連通分量的頂點(diǎn)*/intv;structnode*next;}Alist;voidheapadjust(EDGEdata[],ints,intm){/*將元素序列data[s..m]調(diào)整為小頂堆,堆頂元素(最小元素)為data[s]*/intj;EDGEt;t=data[s];/*備份元素data[s],為其找到適當(dāng)位置后再插入*/for(j=2*s+1;j<=m;j=j*2+1){/*沿值較小的子結(jié)點(diǎn)向下篩選*/if(j<m&&(1))++j;if(!(t.weight>data[j].weight))break;data[s]=data[j];s=j;/*用s記錄待插入元素的位置(下標(biāo))*/}/*for*/data[s]=t;/*將備份元素插入由s所指出的插入位置*/}/*heapadjust*/intcreat_graph(Graph*p)/*輸入圖中的頂點(diǎn)及邊,返回圖中邊的數(shù)目*/{intk=0;/*記錄圖中邊的數(shù)目*/intn;intv1,v2;intw;printf("vertexnumberofthegraph:");scanf("%d",&n);/*輸入圖中的頂點(diǎn)數(shù)目*/if(n<1)return0;p->Vnum=n;do{printf("edge(vertex1,vertex2,weight):");scanf("%d%d%d",&V1,&v2,&w);if(v1>=0&&v1<n&&v2>=0&&v2<n){p->e[k].v1=v1;p->e[k].v2=v2;p->e[k].weight=w;k++;}/*if*/}while(!((2)));returnk;/*返回圖中邊的數(shù)目*/}/*creat_graph*/intkruskal(GraphG,intenumber,inttree[][3]){/*用kruskal算法求無向連通圖G的最小生成樹,圖中邊所得數(shù)目為enumber,*//*數(shù)組tree[][3]中存放生成樹中邊的頂點(diǎn)和邊上的權(quán)值,函數(shù)返回生成樹的代價*/inti,k,m,c=0;intv1,v2;Alist*p,*q,*a[MAXN];for(i=0;i<G.Vnum;++i){/*將每個連通分量中的頂點(diǎn)存放在一個單鏈表中*/a[i]=(Alist*)malloc(sizeof(Alist));if(!a[i]){printf("\nmernoryallocationerror!");exit(0);}/*if*/a[i]->v=i;a[i]->next=NULL;}/*for*/for(i=enumber-1;i>=0;--i)/*按照邊上的權(quán)值建立小頂堆*/heapadjust((3));k=G.Vnum;/*k用于計算圖中的連通分量數(shù)目*/m=enumber-1;i=0;do{v1=G.e[0].v1;v2=G.e[0].v2;p=a[v1];while(p&&p->v!=v2){/*判斷當(dāng)前選擇的邊的頂點(diǎn)是否在一個連通分量中*/q=p;p=p->next;}if(!p){/*當(dāng)前邊的頂點(diǎn)不在一個連通分量中*/p=q;p->next=a[G.e[0].v2];p=a[G.e[0].v1);/*加入邊(v1,v2),將兩個連通分量合并為一個*/while(p){a[p->v]=(4);p=p->next;}k--;/*連通分量數(shù)目減少一個*/tree[i][0]=v1;/*記錄加入最小生成樹的邊*/tree[i][1]=v2;tree[i][2]=G.e[0].weight;c+=G.e[0].weight;++i;}/*if*/G.e[0]=G.e[m];m--;heapadjust((5));}while(k>1);/*當(dāng)所有頂點(diǎn)不在同一個連通時,繼續(xù)*/returnc;/*返回最小生成樹的代價*/}/*kruskal*/voidmain(void){inti,enumber;inttree[MAXN][3];intcost=0;GraphG;enumber=creat_graph(&G);cost=-kruskal(G,enumber,tree);printf("Minimum-Costspanningtree(kruskal):\n");printf("edge\tweight\t\n");for(i=0;i<G.Vnum-1;++i)printf("v%d–v%d\t%d\n",tree[i][0],tree[i][1],tree[i][2]);printf("Cost:%d\n",cost);}標(biāo)準(zhǔn)答案:(1)data[j].weight>data[j+1].weight(2)v1==-1&&v2==-1(3)G.e,i,enumber-1(4)a[G.e[0].v1](5)G.e,0,m知識點(diǎn)解析:(1)data[j].weight>data[j+1].weight沿值較小的子結(jié)點(diǎn)向下篩選,建堆,堆頂元素最?。?2)v1==-1&&v2==-1當(dāng)v1!=-1||v2!=-1時,循環(huán)讀入,直到v1==-1&&v2==-1為真。(3)G.e,i,enumber-1按照邊上的權(quán)值建立小頂堆。(4)a[G.e[0].v1]加入邊(v1,v2),將兩個連通分量合并為一個。(5)G.e,0,m找出下一條權(quán)值最小的邊。二、選答題(本題共2題,每題1.0分,共2分。)9、閱讀下列C++程序和程序說明,將應(yīng)填入(n)處的字句寫在對應(yīng)欄內(nèi)?!菊f明】[程序6說明]單源最短路徑的分支限界算法。constintMAXNUM=29999;#include<iostream>#include<vector>#include<algorithm>#include<functional>usingnamespacestd;template<classVertexType,classEdgeType>classMinNode{//程序中使用的最小化堆的結(jié)點(diǎn)說明friendclassGraph<VertexType,EdgeType>public:MinNode(intnl,EdgeTypelength1){VexNum=nl;length=length1;}booloperator>(constMinNode<VertexType,EdgeType>&p)const{return(1)>p.length;}private:intVexNum;//記錄源點(diǎn)序號,序號數(shù)組p及distance下標(biāo)相一致。源點(diǎn)為初始擴(kuò)展頂點(diǎn)EdgeTypelength;//記錄源點(diǎn)到本頂點(diǎn)的當(dāng)前最短路徑的長度,源點(diǎn)到自身的長度為0}template<classVertexType,classEdgeType>voidGraph<VertexType,EdgeType>::shortestpath(VertexTypestart){intj,k,source;//source記錄源點(diǎn)的序號。EdgeType*distance=(2);int*p=newint[MaxNumVertex];vector<MinNode<VertexType,EdgeType>>H;for(source=0;source<MaxNumVertex;source++){if(NodeList[source]==start)break;}if(source>=MaxNumVertex){cout<<”Thisiserror!”<<end1;return;}MinNode<VertexType,EdgeType>(3);for(k=0;k<MaxNumVertex;k++){distance[k]:MAXXUM;//記錄源點(diǎn)到本頂點(diǎn)k的最終的最短路徑的長度p[k]=source;//記錄最短路徑上的本頂點(diǎn)的直接前驅(qū)頂點(diǎn)的序號}distance[source]=0;p[source]=-1;//m是源點(diǎn),前一頂點(diǎn)不存在vector<MinNode<VertexType,EdgeType>>::iteratorq;while(1){for(j=0;j<MaxNumVertex;j++)if((AdjMatrix[E.VexNum*MaxNumVertex+j]<MAXNUM)&&((4)<distance[j])){distance[j]=E.length+AdjMatrix[E.VexNum*MaxNumVertex+j];p[j]=E.VexNum;//記錄頂點(diǎn)j的前一頂點(diǎn)MinNode<VertexType,EdgeType>(5);H.push_back(N);push_heap(H.begin(),H.end(),greater<MinNode<VertexType,EdgeType>>());}if(H.empty()=true)break;//若優(yōu)先隊(duì)列為空,那么算法結(jié)束else{pop_heap(H.begin(),H.end(),greater<MinNode<VertexType,EdgeType>>());q=H.end()-1;//從最小化堆中取路徑最短的頂點(diǎn)E=*q;H.pop_back();//刪除從最小化堆中“擠”出的頂點(diǎn)}}//endwhilefor(k=0;k<MaxNumVertex;k++){cout<<"Shorstestpathfromvertex"<<k<<"is"<<distance[k]<<end1;j=k;cout<<"Allverticesare:";while(j!=source){cout<<j<<"->";j=p[j];}cout<<source<<”.”<<end1;}//打印頂點(diǎn)的最短路徑長度和至源點(diǎn)的最短路徑上經(jīng)過的頂點(diǎn)序列return;}標(biāo)準(zhǔn)答案:(1)this->length或(*this).length(2)newEdgeType[MaxNumVertex](3)E(source,0)(4)E.length+AdjMatrix[E.VcxNum*MaxNumVertex+j](5)N(j,distance[j])知識點(diǎn)解析:(1)this->length或(*this).length操作符,的成員函數(shù),比較兩個對象的最短路徑的長度length,大于則返回真(1)。(2)newEdgeType[MaxNumVertex]動態(tài)申請EdgeType類的對象數(shù)組distance,長度為MaxNumVertex,存放最短路徑的長度。(3)E(source,0)定義最小化堆模板類MinNode<VertexType,EdgeType>的對象E(source,0)。(4)E.length+AdjMatrix[E.VcxNum*MaxNumVertex+j]若E.length+AdjMatrix[E.VexNum*MaxNumVertex+j]小于distance[j],則distance[j]取這個更小值。(5)N(j,distance[j])定義最小化堆模板類MinNode<VertexType,EdgeType>的對象N(j,distance[j])。10、閱讀下列Java程序和程序說明,將應(yīng)填入(n)處的字句寫在對應(yīng)欄內(nèi)?!菊f明】清點(diǎn)盒子。本程序當(dāng)用戶輸入一個整數(shù)值時,一切正常;當(dāng)輸入其他數(shù)值時,程序就出錯?,F(xiàn)在已做了改進(jìn),請?zhí)羁?。importjava.text.NumberFormat;PublicclassInventoryLoop{publicstaticvoidmain(Stringargs[]){StringnumBoxesIn;IntnumBoxes;DoubleboxPrice=3.25;BooleangotGoodInput=false;NumberFormatcurrency=NumberFormat.(1);do{System.out.print(“Howmanyboxesdowehave?”);numBoxesIn=DummiesIO.(2);try{numBoxes=Integer.parseInt((3));system.out.print("Thevalueis");system.out.println(currency,format(numBoxes*boxPrice));gotGoodInput=true;catch((4)){System.out.println();System.out.println(That’snotanumber.");}}while((5));//輸入不正確時System.out.println("That’sthat.");}}標(biāo)準(zhǔn)答案:(1)getCurrencyInstance()或getCurrencyInstance(currentLocale)(2)getString()(3)numBoxesIn(4)NegativeNumberExceptione(5)!gotGoodInput知識點(diǎn)解析:(1)getCurrencyInstance()或getCurrencyInstance(currentLocale)貨幣currency對象指向格式化數(shù)據(jù)NumberFormat類的貨幣數(shù)字格式getCurrencyInstance()。(2)getString()讀入貨幣數(shù)字的字符串到NumBoxesIn中。(3)numBoxesIn分析字符串NumBoxesIn的合法性,并轉(zhuǎn)換成整數(shù)。(4)NegativeNumberExceptione捕捉數(shù)據(jù)格式錯誤的信息NegativeNumberExceptione。(5)!gotGoodInput輸入不正確時,繼續(xù)循環(huán)輸入。軟件水平考試(中級)軟件設(shè)計師下午(應(yīng)用技術(shù))試題模擬試卷第2套一、必答題(本題共10題,每題1.0分,共10分。)閱讀以下說明和數(shù)據(jù)流圖,回答問題1~3問題。[說明]干部信息管理系統(tǒng)(CMIS)是用于對干部信息進(jìn)行管理的特定系統(tǒng)。利用該系統(tǒng),干部科可以對本單位干部信息進(jìn)行管理,根據(jù)不同命令對信息進(jìn)行增、刪、改、內(nèi)部調(diào)動,打印人事表格,進(jìn)行統(tǒng)計、檢索。干部科輸入的系統(tǒng)命令需要合法性檢查才能被接受、處理。系統(tǒng)命令可以是檢索命令、統(tǒng)計命令、打印命令、維護(hù)命令中的任何一種。干部科的輸入的干部信息數(shù)據(jù)包括輸入信息、檢索項(xiàng)、統(tǒng)計項(xiàng)、打印項(xiàng)、維護(hù)項(xiàng)等條目。一個完整的輸入信息應(yīng)包括干部的檔號、干部的姓名、干部的性別、干部的年齡、干部的級別、干部的職稱、干部的政治面貌等內(nèi)容。系統(tǒng)進(jìn)行檢索處理時可以根據(jù)干部的檔號、姓名或年齡進(jìn)行簡單檢索,也可以根據(jù)“檔號+姓名”或者“性別+年齡”進(jìn)行組合檢索。系統(tǒng)進(jìn)行統(tǒng)計處理時,可以根據(jù)干部的性別、年齡或職稱進(jìn)行簡單統(tǒng)計,也可以根據(jù)“年齡+職稱”或“性別+職稱”進(jìn)行綜合統(tǒng)計。通過系統(tǒng)授權(quán),用戶可以對系統(tǒng)進(jìn)行維護(hù)。當(dāng)用戶需要對系統(tǒng)進(jìn)行維護(hù)時,輸入維護(hù)命令,得到合法性確認(rèn)后,可以對系統(tǒng)數(shù)據(jù)庫信息進(jìn)行修改維護(hù)。維護(hù)命令包括:增加命令,根據(jù)輸入信息增加干部信息;修改命令,根據(jù)修改項(xiàng)修改干部信息;檢索命令,根據(jù)檢索項(xiàng)檢索干部信息。系統(tǒng)可以輸出統(tǒng)計信息、人事表格、檢索信息以供干部科用戶使用。干部信息管理系統(tǒng)的頂層圖如圖9-1所示;干部信息管理系統(tǒng)的第0層DFD圖如圖9-2所示,其中,加工3的細(xì)化圖如圖9-3所示。1、數(shù)據(jù)流圖9-1缺少了一條數(shù)據(jù)流(在圖9-2中也未給出該數(shù)據(jù)流),請給出此數(shù)據(jù)流的起點(diǎn)和終點(diǎn),并采用說明中的詞匯給出此數(shù)據(jù)流名。標(biāo)準(zhǔn)答案:數(shù)據(jù)流名稱:“系統(tǒng)命令”,起點(diǎn)為“干部科”,終點(diǎn)為“干部信息系統(tǒng)”(或CMIS)。知識點(diǎn)解析:暫無解析2、數(shù)據(jù)流圖9-3中缺少了與“增加干部信息3.2”加工相關(guān)的數(shù)據(jù)流,請指出此數(shù)據(jù)流的方向,并采用說明中的詞匯給出此數(shù)據(jù)流名。標(biāo)準(zhǔn)答案:數(shù)據(jù)流名稱:“維護(hù)項(xiàng)”;方向:流向“維護(hù)數(shù)據(jù)庫3”加工。知識點(diǎn)解析:暫無解析3、請補(bǔ)齊下列數(shù)據(jù)字典條目:系統(tǒng)命令=檢索命令|統(tǒng)計命令|打印命令|維護(hù)命令;干部信息=____________________________________輸入信息=____________________________________檢索項(xiàng)=______________________________________統(tǒng)計項(xiàng)=______________________________________標(biāo)準(zhǔn)答案:干部信息=輸入信息|檢索項(xiàng)|統(tǒng)計項(xiàng)|打印項(xiàng)|維護(hù)項(xiàng);輸入信息=檔號+姓名+性別+年齡+級別+職稱+政治面貌;檢索項(xiàng)=檔號|姓名|年齡|檔號+姓名|性別+年齡|;統(tǒng)計項(xiàng)=性別|年齡|職稱|年齡+職稱|性別+職稱;知識點(diǎn)解析:本題設(shè)計了干部信息管理系統(tǒng)(CMIS)。對于問題1,已知“數(shù)據(jù)流圖9-1缺少了一條數(shù)據(jù)流”,那么分析數(shù)據(jù)流圖9-1,對比[說明]文檔可知,干部科需要輸入系統(tǒng)命令,才能對系統(tǒng)進(jìn)行管理,那么數(shù)據(jù)流圖9-1缺少的數(shù)據(jù)流名稱就是“系統(tǒng)命令”,起點(diǎn)為“干部科”,終點(diǎn)為“干部信息系統(tǒng)”(或CMIS)。(圖9-2也缺少“系統(tǒng)命令”,指向“檢索命令合法性1”。)問題2。圖9-3是圖1-2中加工3“維護(hù)數(shù)據(jù)庫3”的細(xì)化,仔細(xì)對比圖9-2和圖9-3,可知缺少的數(shù)據(jù)流名稱為“維護(hù)項(xiàng)”;方向?yàn)榱飨颉熬S護(hù)數(shù)據(jù)庫3”加工。問題3。閱讀[說明]可得。閱讀以下說明和表,回答問題1~4問題。[說明]一個描述學(xué)校的部分關(guān)系模式的結(jié)果描述如下:1.一個系有若干學(xué)生,但一個學(xué)生只能在一個系;2.一個系只有一名主任;3.一個學(xué)生可以選修多門課程,每門課程有若干學(xué)生選修;4.每個學(xué)生所學(xué)的每門課程都有一個成績;5.“學(xué)生”和“課程表”及“選課表”的關(guān)系示例分別如表9-1、表9-2、表9-3所示。Student(學(xué)生表)的字段按順序?yàn)閷W(xué)號(Sno)、姓名(Sname)、性別(Ssex)、年齡(Sage)、所屬院系(Sdept)、系主任(Smaster);Course(課程表)的字段按順序?yàn)檎n程編號(Cno)、課程名(Cname)、先行課程(Cpno)、課程學(xué)分(Ccredit);SC(選課表)的字段按順序?yàn)閷W(xué)號(Sno)、課程號(Cno)、成績(Grade)。各表的記錄如下:4、試分析該關(guān)系模式中的函數(shù)依賴,并指出關(guān)系模式的候地選碼。標(biāo)準(zhǔn)答案:在該關(guān)系模式中,存在以下函數(shù)依賴:學(xué)號→姓名學(xué)號→所在系所在系→系主任(學(xué)號,課程名)→成績系主任傳遞的依賴學(xué)號;該關(guān)系模式的候選碼為(學(xué)號,課程名);姓名、所在系部分依賴候選碼。知識點(diǎn)解析:暫無解析5、如下的SQL語句是檢索“信息系(IS)和計算機(jī)科學(xué)系(CS)的學(xué)生的姓名和性別”的不完整語句,請?jiān)诳杖碧幪钊胝_的內(nèi)容。SELECT(1)FROM(2)WHERE(3)標(biāo)準(zhǔn)答案:(1)Sname,Ssex(2)Student(3)SdeptIN(’IS’,’CS’)知識點(diǎn)解析:暫無解析6、如下的SQL語句是檢索“每個學(xué)生及其選修的課程名和成績”的不完整語句,請?jiān)诳杖碧幪钊胝_的內(nèi)容。SELEC(1)FROM(2)WHERE(3)標(biāo)準(zhǔn)答案:(1)Student.Sno,Sname,Course.Cname,SC.Grade(2)Student,SC,Course(3)Student.Sno=SC.SnoandSC.Cno=Course.Cno;知識點(diǎn)解析:本題考查的是基礎(chǔ)知識,考生如果掌握對關(guān)系模式和SQL語言的相關(guān)知識可得出答案。閱讀下列說明以及圖3-1和圖3-2,回答問題1、問題2和問題3。[說明]下面是某公司開發(fā)的電梯管理系統(tǒng),系統(tǒng)功能如下:1.響應(yīng)用戶召喚指令。當(dāng)用戶需要電梯時可以通過按樓層面板召喚。2.進(jìn)入電梯后,乘客可以通過電梯面板選擇目的樓層。3.當(dāng)電梯到達(dá)調(diào)度樓層后,判斷是否響應(yīng)停止運(yùn)行,開啟電梯門,完成調(diào)度。4.當(dāng)電梯到達(dá)非調(diào)度樓層時,不作響應(yīng),繼續(xù)運(yùn)行。5.乘客在電梯中能夠知道電梯的運(yùn)動狀態(tài),如運(yùn)動方向、電梯運(yùn)行到的樓層等。6.電梯超載報警。系統(tǒng)采用面向?qū)ο蠓椒ㄟM(jìn)行開發(fā)。在開發(fā)過程中某設(shè)計室設(shè)計的電梯管理系統(tǒng)用例如表9-4所示。電梯管理系統(tǒng)用例圖如圖9-4所示。根據(jù)說明,回答下面問題:7、仔細(xì)分析系統(tǒng)的用例說明和用例圖,從功能要求角度來看,該系統(tǒng)的用例并不完善。請根據(jù)功能要求補(bǔ)充至少兩個用例,并作簡單說明。標(biāo)準(zhǔn)答案:運(yùn)行方向標(biāo)識:電梯應(yīng)該有這種機(jī)制,即讓乘客知道電梯目前的運(yùn)動方向,決定是否進(jìn)電梯。電梯位置標(biāo)識:電梯應(yīng)該讓乘客知道其的目的層是否到達(dá),決定是否離開電梯。(注:不要求文字相同,意義相近即可)知識點(diǎn)解析:暫無解析8、圖9-5為電梯管理系統(tǒng)狀態(tài)圖。以下有8個引起狀態(tài)轉(zhuǎn)移的事件。請根據(jù)說明和系統(tǒng)狀態(tài)圖將對應(yīng)的事件標(biāo)號填入相應(yīng)的(n)內(nèi)。A.召喚請求B.發(fā)生超載C.超載解除D.電梯就緒且狀態(tài)正常E.電梯就緒但狀態(tài)異常P.電梯到達(dá)非調(diào)度層G.電梯響應(yīng)目的地請求H.電梯到達(dá)調(diào)度層或遇到緊急情況標(biāo)準(zhǔn)答案:1(G)2(C)3(B)4(D)5(E)6(H)7(F)8(A)知識點(diǎn)解析:暫無解析9、根據(jù)SteveCook和JohnDanils的觀點(diǎn),類圖可以分為三個層次:概念層(Conseptual)、說明層(Specification)和實(shí)現(xiàn)層(Implementation)。如何理解著三個層的劃分?這種觀點(diǎn)在軟件開發(fā)中有什么樣指導(dǎo)作用?請簡要說明。標(biāo)準(zhǔn)答案:根據(jù)SteveCook和JohnDanils的觀點(diǎn),類圖可以分為三個層次:概念層(Conseptual)、說明層(Specification)和實(shí)現(xiàn)層(Implementation)。其中概念層的概念模型與實(shí)現(xiàn)它的軟件無關(guān),獨(dú)立于程序設(shè)計語言。說明層中主要關(guān)心的是軟件的類型(type,即軟件接口部分),而不是軟件的類(class,即實(shí)現(xiàn)部分)。只有在實(shí)現(xiàn)層才有類的概念,并說明軟件的實(shí)現(xiàn)部分。使用類圖時,要根據(jù)項(xiàng)目開發(fā)的不同階段來正確繪制類圖,如在軟件分析階段,應(yīng)該使用概念層類圖;在軟件設(shè)計階段,使用說知識點(diǎn)解析:本題為UML建模應(yīng)用題。仔細(xì)閱讀文檔說明和用例說明,結(jié)合平時的應(yīng)用習(xí)慣,不難發(fā)現(xiàn)用例設(shè)計時忽略了電梯運(yùn)行方向標(biāo)示和電梯位置標(biāo)示。當(dāng)然,考生如果還有更好的想法,只要合理就可認(rèn)為正確,設(shè)計此題的目的在于考查考生運(yùn)用UML建模的能力。問題1答案,并不惟一,合理就可得分。問題2。根據(jù)說明文檔和用例說明,可以得出狀態(tài)之間的轉(zhuǎn)移邏輯關(guān)系。例如,從“空閑”狀態(tài)轉(zhuǎn)移到“忙”狀態(tài)的條件是“電梯響應(yīng)目的地請求”,即(1)選G。用同樣的方法分析可得其他答案。問題3。考查的是基本概念。10、閱讀以下說明和C程序,填入(n)外。[說明]以下C程序?qū)崿F(xiàn)了將字符串轉(zhuǎn)化為浮點(diǎn)數(shù)的功能。例如字符串“1234567”轉(zhuǎn)化為浮點(diǎn)數(shù)1234567;字符串“100.02035”轉(zhuǎn)化為浮點(diǎn)數(shù)100.02035;字符串“-100.02035”轉(zhuǎn)化為浮點(diǎn)數(shù)-100.02035。程序中的部分變量的含義如表9-5。[C程序]doubleStrToDouble(char*s){charhexch[]="0123456789";inti,j,psign=1;DWORDn,k,intpart=0;doubledoublepart=0,kdouble,resoult;charch;if(*s==’.’{(1);(2);}char*s1=s,*temp=NULL;temp=strrchr(s1,’.’);if(!temp){k=1;intpart=0;for(i=strlen(s);i>0;i--){ch=s[i-1];if(ch>0x3f)ch&=0xDF;n=0;for(j=0;j<10;j++)if(ch==hexch[j])n=j;intpart+=(n*k);k*=10;}}else{s1=temp+1;kdouble=0.1;doublepart=0;for((3)){ch=s1[i-1];if(ch>0x3f)ch&=0xDF;n=0;for(j=0;j<10;j++)if(ch==hexch[j])n=j;doublepart+=(n*kdouble);(4);}*temp=NULL;k=1;intpart=0;for((5);){ch=s[i-1];if(ch>0x3f)ch&=0xDF;n=0;for(j=0;j<10;j++)if(ch==hexch[j])n=j;intpart+=(n*k);k*=10;}//endelse}(6);returnresoult;}標(biāo)準(zhǔn)答案:(1)psign=-1(2)s=(s+1)(3)i=1;i<=strlen(s1);i++(4)kdouble*=0.1;(5)i=strlen(s);i>0;i-(6)resoult=(intpart+doublepart)*psign知識點(diǎn)解析:本題實(shí)現(xiàn)了數(shù)字字符串轉(zhuǎn)換成浮點(diǎn)數(shù)的程序設(shè)計。程序中含空的語句功能分別是:(1)記錄符號。如“-0.01”。(2)將字符串中的“-”號剔除;(3)轉(zhuǎn)換所有小數(shù)部分;(4)記錄小數(shù)點(diǎn)階數(shù);(5)轉(zhuǎn)換所有整數(shù)部分;(6)整合小數(shù)和整數(shù)部分。二、選答題(本題共3題,每題1.0分,共3分。)11、閱讀下列程序說明和C程序,將應(yīng)填入程序中(n)處的字句,寫在對應(yīng)欄內(nèi)?!境绦蛘f明】本程序先從文件讀人各考生的準(zhǔn)考證號(設(shè)為整型數(shù))及成績,并將其存放在一棵檢索二叉樹上,二叉樹結(jié)點(diǎn)的健值是成績,每個結(jié)點(diǎn)帶一鏈表,鏈表結(jié)點(diǎn)存放取得該成績的考生的準(zhǔn)考證號。然后,程序按中序遍歷檢索二叉樹,從高分到低分輸出結(jié)果,使每行輸出成績及其取得成績的考生的準(zhǔn)考證號?!境绦颉?include<stdio.h>typedefstruetidnode{intid;structidnode*next;}ldNode;typedefstructmarknodeIintmark;ldNode*head;structmarknode*left,*right;}MarkNode;charfname[]="sp07.dat";main(){intid,mark;MarkNode*root=null;FILE*fp=fopen(fname,"r");if(!fp){printf("file%sopenerror,\n",fname);exit(0);}while(!feop(fp)){fscanf(fp,"%d%d",&id,&mark);btree(&root,id,mark);}fclose(fp);print(root);}btree(MarkNod**mpptr,intid,intmark){ldNode*ip;MarkNode*mp=*mpptr;if(1){if(mark==p->mark)addldNODE((2),id);elseif(mark>mp->mark)btree(&top->left,id,mark);elsebtree(&mp->right,id,mark);}elseImp=(marknode*)malloc(sizeo(marknode));mp->mark=mark;mp->left=mp->right=NULL;(3)addldNode(&mp->head,id);(4);}}addldNode(ldNode**ipp,intid){ldNode*ip=*ipp;if((5))addldNode((6)),id;else{ip=(ldNode*)malloc(sizeof(ldNode));sp->id=id;ip->next=NULL;(7)}}print(MarkNode*rap){ldNode*ip,*ip0;if(mp){print(mp->left);printf("%6d:\t",mp->mark);ip=mp->head;while(ip){printf("%6d",ip->id);ip0=ip;ip=ip->next;free(ip0);}printf("\n");printf(mp->right);free(mp);}}標(biāo)準(zhǔn)答案:(1)mp或mp!=NULL(2)mp->head或&(mp->head)(3)&mp->head=NULL(4)*mpptr=mp(5)ip或ip!=NULL(6)&ip->next或&(ip->next)(7)*ipp=ip知識點(diǎn)解析:暫無解析12、閱讀以下說明和C++代碼,將應(yīng)填(n)處的字句寫在對應(yīng)欄內(nèi)。【說明】本題將有向網(wǎng)(帶權(quán)有向圖)定義為類AdjacencyWDigraph。類中的數(shù)據(jù)成員n表示有向網(wǎng)中的頂點(diǎn)數(shù);a為帶權(quán)鄰接矩陣,用于存儲有向網(wǎng)中每一對頂點(diǎn)間弧上的權(quán)值;c為二維數(shù)組,存儲有向網(wǎng)中每一對頂點(diǎn)間的最短路徑長度;kay為二維數(shù)組,存儲最短路徑,kay[i][j]=k表示頂點(diǎn)i到達(dá)頂點(diǎn)j的最短路徑必須經(jīng)過頂點(diǎn)k。類中的主要成員函數(shù)有:Input():輸入有向網(wǎng)的頂點(diǎn)數(shù)、各條弧及權(quán)值,建立帶權(quán)領(lǐng)接矩陣a。若頂點(diǎn)i到頂點(diǎn)j有弧,則a[i][j]取弧上的權(quán)值,否則a[i][j]的值取NoEdge。AllPairs();用弗洛伊德(Floyd)算法求有向網(wǎng)中每一對頂點(diǎn)間的最短路徑長度。OutShortestPath(inti,intj:計算頂點(diǎn)i到頂點(diǎn)j的最短路徑。outputPath(inti,intj):輸出頂點(diǎn)i到頂點(diǎn)j的最短路徑上的頂點(diǎn)。Floyd算法的基本思想是遞推地產(chǎn)生一個矩陣序列C0,C1,C2,…,Cn,其中C0是已知的帶權(quán)鄰接矩陣,a,Ck(i,j(0≤i,j<)表示從頂點(diǎn)i到頂點(diǎn)j的中間頂點(diǎn)序號不大于k的最短路徑長度。如果i到j(luò)的路徑?jīng)]有中間頂點(diǎn),則對于0≤k<n,有Ck(i,j)=C0(i,j)=a[i][j]。遞推地產(chǎn)生C1,C2,…,Cn的過程就是逐步將可能是最短路徑上的頂點(diǎn)作為路徑上的中間頂點(diǎn)進(jìn)行試探,直到為全部路徑都找遍了所有可能成為最短路徑上的中間頂點(diǎn),所有的最短路徑也就全部求出,算法就此結(jié)束?!綜++代碼】#include<iostream.h>#defineNoEdge10000//當(dāng)兩個頂點(diǎn)之間沒有邊相連時,在鄰接矩陣中用NoEdge表示voidMake2DArray(int**&x,introws,intcols);classAdjacencyWDigraph{privateintn;//有向網(wǎng)中的頂點(diǎn)數(shù)目int**a;//存儲頂點(diǎn)間弧上的權(quán)值int**c;//存儲計算出的最短路徑長度int**kay;//存儲求出的最短路徑pubic:intVertices()constjreturnn;}voidAllPairs();voidInput();//輸入有向網(wǎng)的頂點(diǎn)數(shù)、各條弧及權(quán)值,建立鄰接矩陣avoidOutShortestPath(inti,intj);//計算頂點(diǎn)i到j(luò)的最短路徑(試卷中未列出)~AdjacencyWDigraph();//析構(gòu)函數(shù)(試卷中未列出)private:voidoutputPath(inti,intj);};voidAdjacencyWDigraph::AllPairs()inti,j,k,t1,t2,t3;for(i=1;i<=n;k++)for(j=1;j<=n;++j){c[i][j]=(1);kay[i][j]=0;}for(k=1;k<=n;k++)for(i=1;i<=n;i++){if(i==k)continue;t1=c[i][k];for(j=1;j<=n;j++){if(j==k||j==i)continue;t2=c[k][j];t3=c[i][j];if(t1!=NoEdge&&t2!=NoEdge&&(t3==NoEdge||t1+t2<t3)){c[i][j]=(2);kay[i][j]=(3);}}//for}//forvoidAdjacencyWDigraph::outputPath(inti,intj){//輸出頂點(diǎn)i到j(luò)的最短路徑上的頂點(diǎn)if(i==j)return;if(kay[i][j]==0)cout<<j<<";else{outputPath(i,(4));outputPath((5));}}voidAdjacencyWDigraph::lnput(){inti,j,u,v,w,E;cout<<"輸入網(wǎng)中頂點(diǎn)個數(shù):";cin>>n;cout<<"輸入網(wǎng)中弧的個數(shù):";cin>>E;Make2DArray(a,n+1,n+1);for(i=1;i<=n;i++)for(j=1;j<=n;j++)a[i][j]=NoEdge;for(i=1;i<=n;i++)a[i][i]=0;Make2DArray(c,n+1,n+1);Make2DArray(kay,n+1,n+1)for(i=1;i<=E;i++){cout<<"輸入弧的信息(起點(diǎn)終點(diǎn)權(quán)值);";cin>>u>>v>>w;a[u][v]=w;}}voidMake2DArray(int**&x,introws,intcols){inti,j;x=newint*[rows+1];for(i=0;i<rows+1;i++)x[i]=newint[cols+1];for(i=1;i<=rows;i++)for(j=1;j<=cols;j++)x[i][j]=0;標(biāo)準(zhǔn)答案:(1)a[i][j](2)t1+t2,其中t1可以寫成c[i][k],t2可以寫成c[k][j](3)k(4)kay[i][j](5)kay[i][j],j知識點(diǎn)解析:(1)此處的雙層循環(huán)的作用是給數(shù)組c賦初值。即把最初的i號結(jié)點(diǎn)到j(luò)號結(jié)點(diǎn)的路徑長度存入c。由題目中已經(jīng)有說明:“Input();輸入有向圖的頂點(diǎn)數(shù)、各條弧及權(quán)值,建立帶權(quán)鄰近矩陣a。若頂點(diǎn)i到頂點(diǎn)j有弧,則a[i][j]取弧上的權(quán)值,否則a[i][j]的值取NoEdge?!彼詰?yīng)填a[i][j]。(2)首先應(yīng)該說明的是此處的三層循環(huán)所完成的功能是用遞推的方式,在i號結(jié)點(diǎn)和j號結(jié)點(diǎn)中插入一個k號結(jié)點(diǎn),然后比較c[i][j]與c[i][k]+c[k][j],如果c[i][k]+c[k][j]小于c[i][j],則用c[i][k]+c[k]代替c[i][i]。這里用到的原則就是:c[i][k],c[k][j]分別是i到k,k到j(luò)的最短路徑,若i到j(luò)要經(jīng)過k,則c[i][k]+c[k]就是i到j(luò)過結(jié)點(diǎn)k的最短路徑。(3)由于題目中提到“kay為二維數(shù)組,存儲最短路徑,kay[i][j]=k表示頂點(diǎn)i到達(dá)頂點(diǎn)j的最短路徑必須經(jīng)過頂點(diǎn)k。”所以,應(yīng)填k。(5)此處用到了程序的遞歸,其實(shí)這個過程很好理解,也就是判斷當(dāng)中間結(jié)點(diǎn)為0,表示i,j直接為最短路徑,則直接打印即可。如果有中間結(jié)點(diǎn)k,則先打印從i到k的路徑,再打印從k到j(luò)的路徑。此處的中間結(jié)點(diǎn)存在kay[i][j]里,所以(4)填kay[i][j]。13、【說明】下面是一個Applet程序,其功能是通過一個按鈕控制一個窗口的創(chuàng)建,顯示與隱藏,并且以按鈕文字作為提示,可以隨著窗口的狀態(tài)改變,即如果窗口出現(xiàn),則按鈕文字為"HidemyFrm",提示用戶點(diǎn)擊按鈕,則隱藏窗口,反之亦然。請將橫線處語句補(bǔ)充完整。程序運(yùn)行結(jié)果如圖5所示:importjava.awt.*;importjava.applet.*;<appletcode="ex8_7.class"width=800height=400></applet>*/publicclassex8_7extendsApplet{privateFramefrm;privateButtonshowBtn;publicvoidinit(){showBtn=newButton("ShowFrame");(1);}publicbooleanaction(Evente,Objecto){if(e.target==showBtn){if((2)){(3);frm.dispose()(4)showBtn,setLabel("ShowmyFrm");}else{frm=newFrame("myFrm");frm.resize(200,150);frm.setBackground(Color.gray);(5);showBtn,setLabel("HidemyFrm");}}returntrue;}}ex8_7,html<HTML><HEAD><TITLE>ex8_7</TITLE></HEAD><BODY><appletcode="ex8_7,class"width=800height=400></applet></BODY></HTML>標(biāo)準(zhǔn)答案:(1)add(showBtn)(2)fml!=null(3)frm.show()(4)frm=null(5)frm.hide()知識點(diǎn)解析:本題主要考查Applet窗口及Applet程序的執(zhí)行過程,和圖形用戶界面程序的設(shè)計。解題關(guān)鍵是熟悉Applet窗口程序設(shè)計及其執(zhí)行過程,這里要求加入一個Button構(gòu)件;同時需要熟悉圖形用戶界面的設(shè)計,這里要求通過Applet中的Button構(gòu)件控制一個Frame窗口的顯示與隱藏,要熟悉如何建立一個新窗口,如何設(shè)置窗口的標(biāo)題,如何利用Component類的方法將窗口關(guān)閉。本題中,要正確解答,需要明確程序的控制流程:首先判斷用戶是否按下按鈕,其次判斷當(dāng)前窗口對象是否存在,如果窗u不存在則定義一個窗口,反之將窗u隱藏,并同時修改按鈕文字作為提示,要明白提示作用是如果存在則提示關(guān)掉,如果不存在則提示顯示。判斷當(dāng)前窗口對象是否存在的語句,存在的情況下才應(yīng)該隱藏;用來隱藏窗口的語句,是frm.hide();用來顯示的語句是frm.show()。軟件水平考試(中級)軟件設(shè)計師下午(應(yīng)用技術(shù))試題模擬試卷第3套一、必答題(本題共9題,每題1.0分,共9分。)閱讀以下說明和流程圖,回答問題1和問題2,將解答寫在對應(yīng)欄內(nèi)?!菊f明】存在某鮮花批發(fā)系統(tǒng),系統(tǒng)中處理的信息單元有鮮花和客戶,對鮮花使用編號進(jìn)行唯一標(biāo)識,鮮花的具體信息包括:名稱、顏色、等級??蛻舭r花種植商,鮮花經(jīng)銷商,客戶不使用編號,只需要名稱和地址。系統(tǒng)功能如下所述。(1)當(dāng)系統(tǒng)統(tǒng)計銷存清單時發(fā)現(xiàn)某種鮮花當(dāng)前庫存數(shù)量少于指定最低庫存量時,向鮮花種植商發(fā)出采購單,訂單中要記錄所需鮮花的信息、數(shù)量、供應(yīng)商名稱和地址。(2)收到鮮花種植商的鮮花后,向系統(tǒng)錄入歸檔送貨單,要記錄交易對應(yīng)的采購單和實(shí)際金額。(3)當(dāng)某種鮮花庫存數(shù)量大于或等于訂購數(shù)量時,接受鮮花經(jīng)銷商的訂貨單,并更新銷存清單,系統(tǒng)要求訂單中標(biāo)明鮮花的信息和經(jīng)銷商的信息。(4)鮮花經(jīng)銷商訂購的鮮花到達(dá)批發(fā)環(huán)節(jié)后,系統(tǒng)生成提貨單,包括鮮花信息和經(jīng)銷商信息,然后將提貨單發(fā)給經(jīng)銷商,等待提貨。(5)系統(tǒng)還要隨時可以接受管理人員對于銷售和庫存的查詢,并生成銷售與庫存情況表,提供給管理人員,包括鮮花信息、本周銷售數(shù)量、庫存數(shù)量?,F(xiàn)在假定頂層圖是正確的,客戶信息文件已經(jīng)存在并可使用。1、完成下述文件格式:標(biāo)準(zhǔn)答案:訂貨單=鮮花編號+名稱+顏色+等級+數(shù)量+經(jīng)銷商名稱+地址銷存清單=鮮花編號+名稱+顏色+等級+本周銷售數(shù)量+當(dāng)前庫存數(shù)量+指定最低庫存數(shù)量知識點(diǎn)解析:暫無解析2、指出哪張圖中的哪些文件不必畫出。標(biāo)準(zhǔn)答案:0層圖中的“提貨單”和“采購訂單”不必畫出。知識點(diǎn)解析:暫無解析3、指出在哪些圖中遺漏了哪些數(shù)據(jù)流?;卮饡r請用如下形式之一:XX圖中遺漏了XX加工(或文件)流向XX加工(或文件)的XX數(shù)據(jù)流。XX加工XX遺漏了輸入(或輸出)數(shù)據(jù)流XX。標(biāo)準(zhǔn)答案:加工1子圖中遺漏了“銷存清單”到1.2加工的數(shù)據(jù)流。加工1子圖中1.2加工遺漏了“采購請求”輸出數(shù)據(jù)流。知識點(diǎn)解析:數(shù)據(jù)流圖是下午考試的必考題,描述說明和圖示內(nèi)容多,而且復(fù)雜,需要考生有充分的理論掌握和分析能力。但可以發(fā)現(xiàn),這類題的出題點(diǎn)和解答思路及方法還是比較固定的,只要考生經(jīng)過一定的練習(xí),解答這類題會比較順利。對于數(shù)據(jù)流圖的基本知識,這里不再詳細(xì)講述,考生可參照相關(guān)書籍。這里只介紹出題點(diǎn),解答思路和方法。數(shù)據(jù)流圖基本出題點(diǎn)有:(1)找出缺少哪些輸入輸出數(shù)據(jù)流。(2)找出哪張圖中的哪個文件不必畫出。(3)文件格式。解答的總體原則是:(1)父圖與子圖的平衡。(2)輸入輸出數(shù)據(jù)流的平衡。(3)文件的隱蔽原則。具體解釋如下所述。(1)數(shù)據(jù)流圖的思想就是逐層細(xì)化,層層分解,父圖描述整體的信息,子圖描述特定的信息。所以,子圖應(yīng)該是父圖中某個加工的分解,子圖應(yīng)該能夠完整合并成父圖,即不能缺少父圖概括性表示的實(shí)際的完整信息。(2)打個比方,父圖是汽車,汽車有4個輪胎,現(xiàn)在將父圖中的一個加工——底盤,生成子圖,這4個輪胎作為底盤與整車的連接,一個不能多,也一個不能少。所以,要嚴(yán)格遵守輸入輸出數(shù)據(jù)流的平衡,仔細(xì)對照,找出缺少或錯誤的數(shù)據(jù)流。(3)如果,一個數(shù)據(jù)文件只是某個加工單獨(dú)使用的,那么這個數(shù)據(jù)文件就不應(yīng)該出現(xiàn)在父圖中,而應(yīng)該只出現(xiàn)于專門描述這個加工的子圖中,當(dāng)然,前提是這個數(shù)據(jù)文件的確對父圖沒有整體的實(shí)質(zhì)性影響。運(yùn)用以上3個原則,加上仔細(xì)和耐心,是可以順利解答數(shù)據(jù)流圖的試題的。上述說明同樣適用于本套模擬題其他同類試題,在其他解析中不再復(fù)述,請考生注意。現(xiàn)在分析本試題,問題1要求補(bǔ)充文件格式,這些文件是數(shù)據(jù)流圖中某個或某幾個加工使用的,一般在說明中都會直接給出文件名稱和結(jié)構(gòu)描述,只要對應(yīng)進(jìn)行填寫即可。訂貨單是鮮花經(jīng)銷商向批發(fā)系統(tǒng)提交的,說明中已經(jīng)指出要包括:鮮花信息、數(shù)量、客戶信息。鮮花信息包括:鮮花編號、名稱、顏色、等級,客戶信息包括客戶姓名、地址。同理,可以得出銷存清單的文件格式,注意,它包括本周銷售數(shù)量、現(xiàn)在庫存數(shù)量、指定最低庫存數(shù)量。問題2要指出哪張圖中的哪些文件不必畫出。使用上面講述的原則,注意要從頂層開始,按照加工的分解,逐層細(xì)化。由于已知頂層圖假定正確,所以首先看0層圖,發(fā)現(xiàn)0層圖中的提貨單和采購訂單是單個加工單獨(dú)使用的,是局部數(shù)據(jù)文件,根據(jù)數(shù)據(jù)隱蔽原則,這兩個數(shù)據(jù)文件不必在0層圖中畫出,只需要在對應(yīng)加工子圖中出現(xiàn)。繼續(xù)查看加工1子圖,發(fā)現(xiàn)出現(xiàn)的文件都是共用文件,沒有局部數(shù)據(jù)文件。問題3是關(guān)于數(shù)據(jù)流的問題,應(yīng)該使用平衡原則。一是按照父圖與子圖的輸入輸出逐條對應(yīng),第二是在子圖中確定子加工之間、子加工與文件之間是否需要數(shù)據(jù)流,是否遺漏,以及方向。首先,可以比較容易地確認(rèn)0層圖中沒有遺漏的數(shù)據(jù)流。結(jié)合0層圖和加工1子圖,發(fā)現(xiàn)缺少流向加工2的“采購請求”輸出數(shù)據(jù)流,在給出的一系列子加工中,按照處理流程逐個分析,可以得出系統(tǒng)應(yīng)該在子加工1.2“確定客戶訂單”后生成采購請求。同理,子加工1.2“確認(rèn)客戶訂單”要使用到銷存清單,以確認(rèn)合格訂貨單是否可以滿足,如果可以滿足,要生成提貨單,不能滿足要生成采購單。所以遺漏了“銷存清單”到加工1.2的輸出數(shù)據(jù)流。閱讀以下說明,回答問題1至問題3,將解答寫在對應(yīng)欄內(nèi)?!菊f明】下面是某醫(yī)院信息管理系統(tǒng)中需要的信息??剖遥嚎泼⒖频刂?、科電話、醫(yī)生姓名。病房:病房號、床位號、所屬科室名。醫(yī)生:姓名、職稱、所屬科室名、年齡、工作證號。病人:病歷號、姓名、性別、診斷、主管醫(yī)生、病房。其中,一個科室有多個病房,多個醫(yī)生,一個病房只能屬于一個科室,一個醫(yī)生只屬于一個科室,但可以負(fù)責(zé)多個病人的診治,一個病人的主管醫(yī)生只有一個。4、畫出上述信息涉及的E—R圖。標(biāo)準(zhǔn)答案:E-R模型如下:知識點(diǎn)解析:暫無解析5、將該E-R圖轉(zhuǎn)換為關(guān)系模型。標(biāo)準(zhǔn)答案:科室(科名,科地址,科電話):病房(病房號,床位號,科室名);醫(yī)生(工作證號,姓名,職稱,科室名,年齡);病人(病歷號,姓名,性別,診治,主管醫(yī)生,病房號);知識點(diǎn)解析:暫無解析6、指出每個關(guān)系模式的候選碼。標(biāo)準(zhǔn)答案:科室的候選碼是科名;病房的候選碼是病房名+床位號:醫(yī)生的候選碼是工作證號;病人的候選碼是病歷號。知識點(diǎn)解析:本題考查的是數(shù)據(jù)庫方面的知識。問題1解析根據(jù)題意,可以得出以下結(jié)論。有4個實(shí)體:科室、醫(yī)生、病房、病人。4個聯(lián)系:組成(科室與病房)、從屬(科室與醫(yī)生)、入住(病房與病人)、診治(醫(yī)生與病人)。實(shí)體之間的聯(lián)系類型具體是:科室與病房的聯(lián)系是“一對多”;科室和醫(yī)生的聯(lián)系是“一對多”;病房和病人的聯(lián)系是“一對多”;醫(yī)生和病人的聯(lián)系是“一對多”。根據(jù)以上分析,可以畫出E-R模型。問題2解析根據(jù)上面的E-R圖和說明,可以得到4個關(guān)系模型結(jié)構(gòu),如下:科室(科名,科地址,科電話);病房(病房號,床位號,科室名):醫(yī)生(工作證號,姓名,職稱,科室名,年齡);病人(病歷號,姓名,性別,診治,主管醫(yī)生,病房號):問題3解析由科名就可以直接確認(rèn)科室,沒有兩個科室共用一個科名;兩個醫(yī)生可能同名,但工作證號是唯一的,所以醫(yī)生的候選碼是工作證號,同理,病人的候選碼是病歷號。病房里有多張床,這里病房是指一個實(shí)體,并不只是一個外觀上的屋子,所以需要由“病房號,床位號”才能唯一確認(rèn)一個病房實(shí)體。閱讀以下說明,回答問題1和問題2,將解答寫在對應(yīng)欄內(nèi)?!菊f明】一個野生動物園,有如下動物:老虎、豹、狼、丹頂鶴、鸚鵡、天鵝、金魚、熱帶魚、鱷魚等等。7、依據(jù)說明,完成下面的類圖,要求第1層和第2層填寫標(biāo)識、主要屬性和操作,第3層填寫標(biāo)識即可。標(biāo)準(zhǔn)答案:(1)類1.名稱:動物.屬性:名稱,體重,壽命.操作:呼吸,進(jìn)食,運(yùn)動(2)類2.名稱:哺乳類動物.屬性:四肢,哺乳期.操作:哺乳,胎生,用肺呼吸(3)類6.名稱:老虎類7省略(4)類3.名稱:爬行類動物.屬性和操作:爬行類的屬性、操作特殊,難以表述,所以在該類中沒有特殊屬性和操作,繼承使用父類的屬性和操作。(5)類8.名稱:鱷魚(6)類4.名稱:鳥類知識點(diǎn)解析:暫無解析8、UML規(guī)定類圖中類之間的關(guān)系有關(guān)聯(lián)、聚集、繼承,請說明它們的含義和之間的區(qū)別。標(biāo)準(zhǔn)答案:關(guān)聯(lián)是類之間的語義聯(lián)系,代表類的實(shí)例(對象)之間的一組連接。聚集是一種特殊的二元關(guān)聯(lián),它指出類間的“整體—部分”關(guān)系,是關(guān)聯(lián)的特例。例如汽車是整體,輪胎是部分。繼承指出類間的“一般—特殊”關(guān)系。例如,電視是特殊類,家用電器是一般類。知識點(diǎn)解析:面向?qū)ο蟮幕舅枷刖褪菍ο笥^念,如抽象與繼承。從一些對象中總結(jié)出共同的屬性和操作,作為父類,具體對象作為子類繼承父類,在內(nèi)部繼承并實(shí)現(xiàn)共同的操作,并增加自己特殊的屬性和方法。試題給出的類圖已經(jīng)給出了一些提示,第3層應(yīng)該是提到的具體動物,它們被分了類,第2層應(yīng)該是這種分類的表示。那么,第1層的基類又是這種分類的總結(jié)。具體分析過程這里不詳細(xì)描述,考生結(jié)合面向?qū)ο蟮臅胬斫狻?、閱讀下列C程序和程序說明,將應(yīng)填入(n)處的字句寫在對應(yīng)欄內(nèi)。【說明】應(yīng)用Prim算法求解連通網(wǎng)絡(luò)的最小生成樹問題。請閱讀程序后填空。constintMaxInt=INTMAX;//INTMAX的值在<limits.h>中constintn=6;//圖的頂點(diǎn)數(shù),應(yīng)由用戶定義typedefintAdjMatrix[n][n];//用二維數(shù)組作為鄰接矩陣表示typedefstruct{//生成樹的邊結(jié)點(diǎn)intfromVex,toVex;//邊的起點(diǎn)與終點(diǎn)intweight;//邊上的權(quán)值}TreeEdSenode;typedefTreeEdgeNodeMST[n-1];//最小生成樹定義voidPrimMST(AdjMatrixG,MSTT,intrt){//從頂點(diǎn)rt出發(fā)構(gòu)造圖G的最小生成樹T,rt成為樹的根結(jié)點(diǎn)TreeEdgeNodee;inti,k=0,min,minpos,v;for(i=0;i<n;i++)//初始化最小生成樹Tif(i!=rt){T[k].fromVex=rt;(1);T[k++].weight=G[rt][i];}for(k=0;k<n-1;k++){//依次求MST的候選邊(2);for(i=k;i<n-1;i++)八遍歷當(dāng)前候選邊集合if(T[i].weight<min)//選具有最小權(quán)值的候選邊{min=T[i].weight;(3);}if(min==MaxInt)//圖不連通,出錯處理{cerr<<“Graphisdisconnected!”<<endl;exit(1);}e=T[minpos];T[minpos]=T[k];(4);v=T[k].toVex;for(i=k+1;i<n-1;i++)//修改候選邊集合if(G[v][T[i].toVex]<T[i].weight){T[i].weight=G[v][T[i].toVex];(5);}}}標(biāo)準(zhǔn)答案:(1)T[k].toVex=I(2)min=MaxInt(3)minpos=i(4)T[k]=e;(5)T[i].fromVex=v知識點(diǎn)解析:(1)T[k].toVex=i樹n邊的入度點(diǎn)。(2)min=MaxInt最小值變量初始化。(3)minpos=i最小值結(jié)點(diǎn)的位置。(4)T[k]=e;T[minpos]與T[k]交換。(5)T[i].fromVex=v候選邊的出度點(diǎn)。二、選答題(本題共2題,每題1.0分,共2分。)10、閱讀以下函數(shù)說明和Java代碼,將應(yīng)填入(n)處的字句寫在對應(yīng)欄內(nèi)。【說明】以下程序?qū)崿F(xiàn)數(shù)據(jù)的排序,將n個整數(shù)分別按照升序和降序進(jìn)行排序,類SortInt_1實(shí)現(xiàn)升序排序,類SortInt_2實(shí)現(xiàn)降序排序?!綣ava代碼】classSortInt_1{inti,i,k,temp;voidSortInt(inta1,inta2[]){//升序排序for(i=0;i<a1-1;i++){k=i;for(j=i+1;j<a1;j++){if((1))k=j;if(k!=i){temp=a2[i];a2[i]=a2[k];a2[k]=temp;}}}}}classSortInt_2(2){inti,j,k,temp;voidSortInt(inta1,inta2[]){//降序排序for(i=0;i<a1-1;i++){k=i;for(j=i+1;j<a1;j++){if((3))k=j;}if(k!=i){temp=a2[i];a2[i]=a2[k];a2[k]=temp;}}}}publicclasstest{publicstaticvoidmain(Stringargs[]){inta[]={10,55,100,35,87,90,100,16};SortInt_1NewInt=(4);NewInt.SortInt(a.lenvh,a);//調(diào)用SortInt_1類的方法System.out.println("升序排列的數(shù)據(jù):");for(inti=0;i<a.length;i++){System.out.print(a[i]+"");}System.out.println();NewInt=newSortInt_2();//創(chuàng)建類SortInt_2的對象(5);//調(diào)用相應(yīng)方法進(jìn)行降序排序System.out.println("降序排列的數(shù)據(jù):");for(inti=0;i<a.length;i++){System.out.print(a[i]+"");}}}標(biāo)準(zhǔn)答案:(1)a2[k]>a2[j](2)extendsSortInt_1(3)a2[k]<a2[j](4)newSortInt_1()(5)NewInt.SortInt(a.length,a)知識點(diǎn)解析:本題所采用的排序方法是簡單選擇排序,即:對n個記錄進(jìn)行選擇排序?;舅枷肴缦拢ㄟ^n-i次關(guān)鍵字的比較,從n-i+1個記錄中選出關(guān)鍵字最小的記錄,并和第i個記錄進(jìn)行交換,當(dāng)i等于n時所有記錄有序排列。據(jù)此,類SortInt_1中的SortInt方法實(shí)現(xiàn)升序排序,則每次應(yīng)該選擇尚未排序記錄中關(guān)鍵字最小的記錄,因此空(1)應(yīng)填a2[j]<a2[k]。同理,類SortInt_2中的SortInt方法實(shí)現(xiàn)降序排序,則每次應(yīng)該選擇尚未排序記錄中關(guān)鍵字最大的記錄,故空(3)應(yīng)填a2[j]>a2[k]。根據(jù)說明,緊跟空(4)的語句NewInt.SortInt(a.length,a)是調(diào)用SortInt_1類的方法,意味著此時NewInt是一個SortInt_1類實(shí)例,故空(4)應(yīng)填newSortInt_1()。接著,有語句“NewInt=newSortInt_2()”創(chuàng)建類SortInt_2的對象并將其賦值給NewInt變量,根據(jù)賦值兼容規(guī)則,這意味著SortInt_2對象是一個Sortlnt_1對象,亦即SortInt_2是SortInt_1的子類,故空(2)應(yīng)填extendsSortInt_1???5)比較簡單,對照上述的調(diào)用,可得空(5)應(yīng)填NewInt.SortInt(a.length,a)。11、閱讀以下說明和c++代碼,將應(yīng)填入(n)處的字句寫在對應(yīng)欄內(nèi)?!菊f明】本程序?qū)蓚€從小到大的有序鏈表合成一個新的從小到大的有序鏈表。鏈表的每一項(xiàng)由類Node描述,而鏈表由List描述,類List的成員函數(shù)有以下幾個:creatList():創(chuàng)建從小到大的有序鏈表。multiplyList(ListL1,LlstL2):將鏈表L1和鏈表L2合并。print():打印鏈表?!綜++代碼】#include<iostream>usingnamespacestd;classList;classNode{friendclassList;public:Node(intdata){(1);}private:intdata;Node*next;};classList{public:List(){list=NULL;}voidmultiplyList(ListL1,ListL2);voidcreatList();voidprint();private:Node*list;};voidList::creatList(){Node*p,*u,*pre;intdara;list=NULL;wbile(1){cout<<"輸入鏈表的一項(xiàng):(小于零,結(jié)束鏈表)"<<endl;cin>>data;if(dara<0)break;//小于零,結(jié)束輸入p=list;while(p!=NULL&&dara>p->data){//查找插入點(diǎn)pre=p;p=p->next;}u=(2);if(p==list)list=u;elsepre->next=u;(3);}}voidList::multiplyList(ListL1,ListL2){Node*pL1,*pL2,*pL,*u;list=NULL;pL1=L1.list;pL2=L2.11st;while(pL1!=NULL&&pL2!=NULL){if(pL1->data<pL2->data){u=newNode(pL1->data);pL1=pL1->next;}else{u=newNode(pL2->data);pL2=p
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 餐廳禮儀類考試題及答案
- 新疆維吾爾自治區(qū)喀什地區(qū)莎車縣2024-2025學(xué)年高一上學(xué)期1月期末考試物理試題(含答案)
- 【假期提升】五升六語文暑假作業(yè)(六)-人教部編版(含答案含解析)
- 琴行培訓(xùn)考試題及答案
- 2025年消防設(shè)施操作員之消防設(shè)備高級技能基礎(chǔ)試題庫和答案要點(diǎn)
- 籌建類面試題思路及答案
- 2023年遼寧省中考生物試卷(含答案)
- 2024廣東省中考英語真題含答案
- 采購與售后分包合同(2篇)
- 行政崗干貨知識培訓(xùn)課件
- 無人機(jī)在物流配送的優(yōu)化方案
- 智慧物流方案設(shè)計與實(shí)施賽題答案
- 培訓(xùn)學(xué)習(xí)心得-讀《教育的問題與挑戰(zhàn)-思想的回應(yīng)》有感
- 全面深化改革體會研討發(fā)言
- 畢業(yè)設(shè)計(論文)-CK6140數(shù)控車床主傳動系統(tǒng)設(shè)計
- 物理降溫法操作評分標(biāo)準(zhǔn)
- 220kv變電站工程投標(biāo)文件模板
- 初中物理作圖題集萃附答案
- 釣魚郵件專項(xiàng)安全意識隨堂測試
- 2023年池州職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫及答案解析
- GB/T 6031-1998硫化橡膠或熱塑性橡膠硬度的測定(10~100IRHD)
評論
0/150
提交評論