




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
軟件水平考試(中級(jí))軟件設(shè)計(jì)師下午(應(yīng)用技術(shù))試題模擬試卷3(共9套)(共121題)軟件水平考試(中級(jí))軟件設(shè)計(jì)師下午(應(yīng)用技術(shù))試題模擬試卷第1套一、必答題(本題共10題,每題1.0分,共10分。)[說明]一個(gè)新的音像商店準(zhǔn)備向比較廣泛的人群出租錄像帶和光碟。該商店的管理決定在計(jì)算機(jī)系統(tǒng)的支持下來運(yùn)作。音像商店在貨架上存放著題材廣泛的當(dāng)前流行的電影庫。由于同一個(gè)電影片名可能有于不同的導(dǎo)演而有不同的版本,因此電影用電影代碼區(qū)分,而不用電影片名;同一個(gè)版本有多份拷貝,因此音像制品用一個(gè)唯一的編號(hào)標(biāo)識(shí)。某個(gè)特定的電影可以存放在錄像帶或光碟上,錄像帶和光碟的租金不同。錄像帶要么是Beta格式要么是VHS格式;光碟為DVD格式,容量比較大,一張光碟可以存儲(chǔ)同一電影片名的不同版本。每個(gè)電影都有特定的租用期(用天表示),并帶有在租用期內(nèi)的租金。音像商店必須能夠立即回答關(guān)于某個(gè)電影的庫存和有多少供租用的帶子或光碟。音像商店的店員負(fù)責(zé)定購音像、聯(lián)系客戶、音像上架,并對(duì)客戶的詢問給出答復(fù)。該系統(tǒng)采用面向?qū)ο蠓椒ㄩ_發(fā),系統(tǒng)中的類以及類之間的關(guān)系用UML類圖表示,圖1-1是該系統(tǒng)的用例圖,圖1-2是該系統(tǒng)的類圖的一部分。[圖1-1]1、根據(jù)題意,給出“電影”類的主要屬性。標(biāo)準(zhǔn)答案:電影代碼、電影片名、導(dǎo)演知識(shí)點(diǎn)解析:暫無解析2、根據(jù)題意,指出圖1-1中缺失的用例。標(biāo)準(zhǔn)答案:(A)“定購音像”(B)“聯(lián)系客戶”知識(shí)點(diǎn)解析:暫無解析[說明]為了有效記錄交通事故情況,欲設(shè)計(jì)一個(gè)交通事故記錄系統(tǒng)。一輛汽車有一個(gè)唯一的“車牌號(hào)”,車主購買汽車時(shí)需要提供相關(guān)信息,包括身份證、姓名、年齡、性別、地址等。一個(gè)車主可以擁有多輛汽車,而一輛汽車只有一個(gè)車主。駕駛員不一定是車主,因此記錄交通事故時(shí)要記錄駕駛員身份證號(hào),同時(shí)記錄事故發(fā)生時(shí)刻。圖2-1描繪了人、汽車、交通事故三個(gè)實(shí)體類型及實(shí)體間聯(lián)系的一個(gè)E-R圖。[圖2-1]對(duì)應(yīng)的關(guān)系模式為:·人(身份證號(hào),姓名,性別,年齡,地址)·汽車(車牌號(hào),型號(hào))·事故(車牌號(hào),身份證號(hào),時(shí)刻,損失,描述)·擁有(身份證號(hào),車牌號(hào))3、指出每種關(guān)系模式的主鍵。標(biāo)準(zhǔn)答案:人:身份證汽車:車牌號(hào)事故:(車牌號(hào),身份證)擁有:車牌號(hào)知識(shí)點(diǎn)解析:暫無解析4、創(chuàng)建人表時(shí),“身份證號(hào)”使用INTEGER數(shù)據(jù)類型,并且要求此列值不能為空、值惟一,姓名列不能為空。請(qǐng)?jiān)谙铝杏糜趧?chuàng)建表人的SQL語句空缺處填入正確的內(nèi)容。CREATETABLE人(身份證號(hào)INTEGER,姓名CHAR(20)(1),性別CHAR(1),年齡INTEGER,地址CHAR(20),(2))標(biāo)準(zhǔn)答案:(1)NOTNULL(2)PRIMARYKEY(身份證號(hào))知識(shí)點(diǎn)解析:暫無解析5、請(qǐng)?jiān)谙铝蠸QL查詢語句空缺處填入正確的內(nèi)容(1)查詢身份證號(hào)為“123456”的人作為駕駛員時(shí)所有的事故記錄。SELECT*FROM事故WHERE(1)(2)查詢身份證號(hào)為“123456”的車主所擁有的汽車的事故記錄。SELECT*FROM事故WHERE車牌號(hào)(2)(SELECT車牌號(hào)FROM(3)WHERE身份證號(hào)="123456")(3)查詢車牌號(hào)為“123456”汽車在車主是駕駛員時(shí)的事故記錄。SELECT*FROM事故WHERE(4)(SELECT*FROM(5)WHERE車牌號(hào)="123456"AND(6))標(biāo)準(zhǔn)答案:(1)身份證號(hào)="123456"(2)IN(3)擁有(4)EXISTS(5)擁有(6)擁有.身份證號(hào)=事故.身份證號(hào)知識(shí)點(diǎn)解析:暫無解析6、閱讀下列函數(shù)說明、圖和C代碼,回答問題[說明]假定用一個(gè)整型數(shù)組表示一個(gè)長(zhǎng)整數(shù),數(shù)組的每個(gè)元素存儲(chǔ)長(zhǎng)整數(shù)的一位數(shù)字,則實(shí)際的長(zhǎng)整數(shù)m表示為:m=a[k]×10k-2+a[k-1]×10k-3+…+a[3]×10+a[2]其中a[1]保存該長(zhǎng)整數(shù)的位數(shù),a[0]保存該長(zhǎng)整數(shù)的符號(hào):0表示正數(shù)、1表示負(fù)數(shù)。運(yùn)算時(shí)先決定符號(hào),再進(jìn)行絕對(duì)值運(yùn)算。對(duì)于絕對(duì)值相減情況,總是絕對(duì)值較大的減去絕對(duì)值較小的,以避免出現(xiàn)不夠減情況。注意,不考慮溢出情況,即數(shù)組足夠大。[函數(shù)]intcmp(int*LA,int*LB);/*比較長(zhǎng)整數(shù)LA與LB的絕對(duì)值大小*//*若LA絕對(duì)值較大返回正值,LA較小返回負(fù)值,相等則返回0*/intADD(int*LA,int*LB,int*LC)/*計(jì)算長(zhǎng)整數(shù)LA與LB的和,結(jié)果存儲(chǔ)于LC中*//*注意:正數(shù)與負(fù)數(shù)的和相當(dāng)于正數(shù)與負(fù)數(shù)絕對(duì)值的差*//*數(shù)據(jù)有誤返回0,正常返回1*/{if(LA==NULL||LB==NULL||LC==NULL)return0;int*pA,*pB,i,N,carry,flag;flag=LA[0]+LB[0];switch(flag){/*根據(jù)參與運(yùn)算的兩個(gè)數(shù)的符號(hào)進(jìn)行不同的操作*/case0:case2:Lc[0]=LA[0];/*LA與LB同號(hào),結(jié)果符號(hào)與LA(LB)相同*/pA=LA;pB=LB;(1);break;case1:/*LA與LB異號(hào)*//*比較兩者的絕對(duì)值大小,結(jié)果符號(hào)與較大者相同*/flag=(2);if(flag>0){/*LA較大*/LC[0]=LA[0];pA=LA;pB=LB;}elseif(flag<0)(/*LB較大*/LC[0]=LB[0];pA=LB;pB=LA;}else{/*LA與LB相等*/LC[0]=0;LC[1]=0;return1;}flag=-1;break;default:return0;break;}/*switch*//*絕對(duì)值相加減*//*注意對(duì)于減法pA指向較大數(shù),pB指向較小數(shù),不可能出現(xiàn)不夠減情況*/(3);N=LA[1]>LB[1]?LA[1]:LB[1];for(i=0;i<N;i++){if(i>=pA[1]){/*LA計(jì)算完畢*/carry+=flag*pB[i+2];}elseif(i>=pB[1]){/*LB計(jì)算完畢*/carry+=pA[i+2];}else{carry+=pA[i+2]+flag*pB[i+2];}LC[i+2]=carry%10;carry/=10;if((4)){/*需要借位,針對(duì)減法*/LC[i+2]+=10;carry--;}}/*for*/if((5)){/*最高進(jìn)位,針對(duì)加法*/LC[i+2]=carry;i++;}if(LC[i+1]==0)i--;/*若最高位為零,針對(duì)減法*/LC[1]=i;return1;};/*ADD*/標(biāo)準(zhǔn)答案:flag=1cmp(LA,LB)carry=0LC[i+2]<0carry知識(shí)點(diǎn)解析:暫無解析7、閱讀下列函數(shù)說明、圖和C代碼,回答問題[說明]在進(jìn)行文法分析的時(shí)候,通常需要檢測(cè)一個(gè)單詞是否在我們的單詞列表里。為了提高查找和定位的速度,通常都要畫出與單詞列表所對(duì)應(yīng)的單詞查找樹。程序構(gòu)造一棵二叉排序樹,每個(gè)節(jié)點(diǎn)存儲(chǔ)一個(gè)單詞,按字典序列,較小的在左子樹,較大的在右子樹。函數(shù)中使用的預(yù)定義符號(hào)如下:typedefstructTreeNode{/*二叉排序樹節(jié)點(diǎn)*/char*word;structTreeNode*left,*right;}BNODE;[函數(shù)]intgetWord(FILE*fpt,char*word)/*從文件fpt中讀取單詞到word中,到達(dá)文件結(jié)束時(shí)返回0*/{charc;c=fgetc(fpt);if(c==EOF)return0;/*跳過單詞間的非字母字符*/while(!(tolower(c)>=’a’&&tolower(c)<=’z’)){c=fgetc(fpt);if(c==EOF)return0;}/*不區(qū)分大小寫*/while(tolower(c)>=’a’&&tolower(c)<=’z’){*word++=c;c=fqetc(fpt);}*word=’\0’;return1;}voidBTree(BNODE**t,char*word){BNODE*ptr,*p;intcompres;p=NITLL;(1);while(ptr){compres=strcmp(word,(2));if(!compres){return;}else{(3);ptr=compres>0?ptr->right:ptr->left;}}ptr=(BNODE*)malloc(sizeofptr);ptr->left=ptr->right=NULL;ptr->word=(char*)malloc(strlen(word)+1);strcpy(ptr->word,word);if(p==NULL){(4);}elseif(compres>0){p->right=ptr;}else{p->left=ptr;}}intmain(){FILE*fpt;charword[40];BNODE*root=NULL;if((fpt=fopen("text.in","r"))==NULL){printf("不能打開文件text.in!\n");return1;}while(getWord(fpt,word)==1){BTree(5);}fclose(fpt);return0;}標(biāo)準(zhǔn)答案:ptr=*tptr->wordp=ptr*t=ptr&root,word知識(shí)點(diǎn)解析:暫無解析8、閱讀下列函數(shù)說明和C++代碼,回答問題[說明]任何一種程序都是為了解決問題而撰寫的,解決問題時(shí)需要實(shí)現(xiàn)一些特定的運(yùn)算法則。在策略(Strategy)模式下,可以更換實(shí)現(xiàn)算法的部分而不留痕跡,切換整個(gè)算法,簡(jiǎn)化改為采用其他方法來解決同樣問題。以下是一個(gè)“剪刀石頭布”游戲。猜拳時(shí)的“策略”有2種方法:第一種是“猜贏后繼續(xù)出同樣的招式”(WinningStrategy),第二種是“從上一次出的招式中,以概率分配方式求出下一個(gè)招式的幾率”(ProbStrategy)。程序中定義了Hand類表示猜拳時(shí)的“手勢(shì)”,類內(nèi)部以0(石頭)、1(剪刀)、2(布)來表示。Hand類的實(shí)例只會(huì)產(chǎn)生3個(gè)。以下是C++語言實(shí)現(xiàn),能夠正確編譯通過。[C++代碼]classHand{private:inthandvalue;staticHand*hand0;staticHand*hand1;staticHand*hand2;(1);Hand(inthandvalue){this->handvalue=handvalue;}public:(2)Hand*getHand(inthandvalue){/*省略具體實(shí)現(xiàn)*/}};Hand*Hand::hand0=newHand(0);Hand*Hand::hand1=newHand(1);Hand*Hand::hand2=newHand(2);classStrategy{public:(3)Hand*nextHand()=0;};classWinningStrategy:publicStrategy{private:boolwon;Hand*prevHand;public:winningStrategy(){won=false;}Hand*nextHand(){if(!won){prevHand=Hand::getHand(rand()%3);}returnprevHand;}};classprobstrategy:publicStrategy{public:Hand*nextHand(){inthandvalue=0;/*省略具體實(shí)現(xiàn)*/returnHand::getHand(handvalue);}};classPlayer{private:stringname;Strategy*strategy;public:Player(stringname,(4)strategy){this->name=name;this->strategy=strategy;}Hand*nextHand()(//向戰(zhàn)略請(qǐng)示手勢(shì)return(5);}};標(biāo)準(zhǔn)答案:(1)privatestaticvirtualStrategy*strategy->nextHand()知識(shí)點(diǎn)解析:Hand類要保證只產(chǎn)生3個(gè)實(shí)例,就要求不能隨便生成Hand類,因此其構(gòu)造方法需要是private型的,故空(1)應(yīng)填private。先看空(3),由后面的“=0”易判知nexthand()函數(shù)是純虛函數(shù),故空(3)應(yīng)填virtual。再來看空(2),由對(duì)getHand()方法的調(diào)用方式Hand::getHand(rand()%3)及Hand::getHand(handvalue),可知該方法是類Hand的靜態(tài)方法,故空(2)應(yīng)填static。由語句this->strategy=strategy;可知:this->strategy與strategy是同數(shù)據(jù)類型,this表示自身指針,而this->strategy是Strategy*類型,故空(4)應(yīng)填Strategy*,注意是指針。方法nextHand()是“向戰(zhàn)略請(qǐng)示手勢(shì)”,取得手勢(shì)是通過其所采用的“策略”實(shí)現(xiàn)的,故空(5)應(yīng)填strategy->nextHand()。注意指針寫法。9、閱讀以下說明和Java代碼,回答問題[說明]任何一種程序都是為了解決問題而撰寫的,解決問題時(shí)需要實(shí)現(xiàn)一些特定的運(yùn)算法則。在策略(Strategy)模式下,可以更換實(shí)現(xiàn)算法的部分而不留痕跡,切換整個(gè)算法,簡(jiǎn)化改為采用其他方法來解決同樣問題。以下是一個(gè)“剪刀石頭布”游戲。猜拳時(shí)的“策略”有2種方法:第一種是“猜贏后繼續(xù)出同樣的招式”(WinningStrategy),第二種是“從上一次出的招式種,以概率分配方式求出下一個(gè)招式的幾率”(ProbStrategy)。程序中定義了Hand類表示猜拳時(shí)的“手勢(shì)”,類內(nèi)部以0(石頭)、1(剪刀)、2(布)來表示。Hand類的實(shí)例只會(huì)產(chǎn)生3個(gè)。以下是Java語言實(shí)現(xiàn),省略了不相關(guān)屬性及方法,方法實(shí)現(xiàn)體亦有所省略,能夠正確編譯通過。[Java代碼]//Hand.java文件publicclassHand{publicstaticfinalintHANDVALUE_GUU=0;//石頭publicstaticfinalintHANDVALUE_CHO=1;//剪刀publicstaticfinalintHANDVALUE_PAA=2;//布publicstaticfinalHand[]hand={newHand(HANDVALUE_GUU),newHand(HANDVALUE_CHO),newHand(HANDVALUE_PAA),};privateinthandvalue;(1)Hand(inthandvalue){this.handvalue=handvalue;}public(2)HandgetHand(inthandvalue)(//從值取得對(duì)象實(shí)例returnhand[handvalue];}}//Strategy.java文件publicinterfaceStrategy{public(3)HandnextHand();}//ProbStrategy.java文件importjava.util.Random;publicclassProbStrategyimplementsStrategy{publicHandnextHand(){inthandvalue=0;/*省略具體實(shí)現(xiàn)*/returnHand.getHand(handvalue);}}//WinningStrategy.java文件importjava.util.Random;publicclassWinningStrategyimplementsStrategy{/*省略了不相關(guān)屬性*/publicHandnextHand(){if(!won){prevHand=Hand.getHand(random.nextInt(3));}returnprevHand;}}//Player.java文件publicclassPlayer{privateStringname;privateStrategystrategy;publicPlayer(Stringname,(4)strategy){=name;this.strategy=strategy;}publicHandnextHand(){//向戰(zhàn)略請(qǐng)示手勢(shì)return(5);}}標(biāo)準(zhǔn)答案:privatestaticabstractStrategystrategy.nextHand()知識(shí)點(diǎn)解析:暫無解析10、閱讀以下函數(shù)說明和C代碼,回答問題[說明]任何一種程序都是為了解決問題而撰寫的,解決問題時(shí)需要實(shí)現(xiàn)一些特定的運(yùn)算法則。在策略(Strategy)模式下,可以更換實(shí)現(xiàn)算法的部分而不留痕跡,切換整個(gè)算法,簡(jiǎn)化改為采用其他方法來解決同樣問題。以下是一個(gè)“剪刀石頭布”游戲。猜拳時(shí)的“策略”有2種方法:第一種是“猜贏后繼續(xù)出同樣的招式”(WinningStrategy),第二種是“從上一次出的招式種,以概率分配方式求出下一個(gè)招式的幾率”(ProbStrategy)。程序中定義了Hand類表示猜拳時(shí)的“手勢(shì)”,類內(nèi)部以0(石頭)、1(剪刀)、2(布)來表示。Hand類的實(shí)例只會(huì)產(chǎn)生3個(gè)。以下是C語言實(shí)現(xiàn),省略了不相關(guān)屬性及方法,方法實(shí)現(xiàn)體亦有所省略,能夠正確編譯通過。[C代碼]typedef(1)(*funl)();enumHandValue{HANDVALUE_GUU=0,HANDVALUE_CHO=1,HANDVALUE_PAA=2};//手勢(shì)可取值,依次為“石頭”、“剪刀”、“布”//其大小順序是循環(huán)相克的,即:石頭贏剪刀,剪刀贏布,布贏石頭boolwon;structHand*WSprevHand;structHand{//手勢(shì)enumHandValuehandvalue;}hand[3]={HANDVALUE_GUU,HANDVALUE_CHO,HANDVALUE_PAA};intfight(structHand*h1,structHand*h2)//比較h1和h2。h1代表的手勢(shì)較大時(shí)返回1,h1較小時(shí)返回-1,相等時(shí)返回0//{if(h1->handvalue==h2->handvalue){return0;}elseif((h1->handvalue+1)%(2)==h2>handvalue){return1;}else{return-1;}}structHand*getHand(inthandvalue){//依據(jù)手勢(shì)代表的值取得手勢(shì),若handvalue不合法,返回NULLswitch(handvalue){case0:return&hand[0];break;case1:return&hand[1];bteak;case2;return&hand[2];break;}return(3);}structStrategy{//策略funlnextHand;//下一個(gè)手勢(shì)};structHand*WSnextHand(){if(!won){PSprevHand=getHand(rand()%3);}returnPSprevHand;}structPlayer{charname[20];(4)strategy;//策略intwincount;intlosecount;intgamecount;};voidmain(){StrategyWS;WS.nextHand=WSnextHand;WSpreVHand=NULL;structPlayerWSplayer;(5)(WS,"ww");WSplayer.wincount=0;WSplayer.losecount=0;WSplayer.gamecount=0;WSplayer.strategy=&WS;}標(biāo)準(zhǔn)答案:structHand*3NULLstructStrategy*strcpy知識(shí)點(diǎn)解析:條件(h1->handvalue+1)%(2)==h2->handvalue是指h1大于h2,根據(jù)手勢(shì)間大小順序:石頭(0)贏剪刀(1),剪刀(1)贏布(2),布(2)贏石頭(0)。可得應(yīng)填3。例如h1為布(2),h2為石頭(0)時(shí),h1->handvalue+1)%(2)的值應(yīng)為0。所以空(2)填3。handvalue取值為:0、1、2,由注釋“若handbalue不合法,返回NULL”可得空(3)應(yīng)填NULL。先看空(5)。結(jié)構(gòu)體WSplayer的strategy是字符數(shù)組,對(duì)字符數(shù)組的賦值需要調(diào)用strcpy庫函數(shù)。故空(5)應(yīng)填strcpy。來看空(4)。由語句“WSplayer.strategy=&WS;”及“StrategyWS;”可知,結(jié)構(gòu)體WSplayer的strategy應(yīng)該是Strategy結(jié)構(gòu)體指針。故空(4)應(yīng)填structStrategy*。最后來看空(1)。這明顯是一個(gè)函數(shù)指針,函數(shù)指針的定義:函數(shù)返回類型函數(shù)指針變量名(參數(shù)列表)。故空(1)是該函數(shù)的函數(shù)返回類型。用到該定義的是在結(jié)構(gòu)體Strategy中,“funlnextHand;//下一個(gè)手勢(shì)”,此處只是一個(gè)聲明,不能判斷其返回類型,真正應(yīng)用的是語句“WS.nextHand=WSnextHand;”,而其右端的函數(shù)原型為structHand*WSnextHand(),因此該函數(shù)指針的返回類型應(yīng)為structHand*。故空(1)應(yīng)填structHand*。軟件水平考試(中級(jí))軟件設(shè)計(jì)師下午(應(yīng)用技術(shù))試題模擬試卷第2套一、必答題(本題共16題,每題1.0分,共16分。)閱讀以下某建賬軟件的技術(shù)說明和數(shù)據(jù)流圖,根據(jù)要求回答問題1~問題6。[說明]某商業(yè)銀行已有一套基于客戶機(jī)/服務(wù)器(C/S)模式的儲(chǔ)蓄系統(tǒng)X和一套建賬軟件Y。建賬軟件Y主要用于將儲(chǔ)蓄所手工處理的原始數(shù)據(jù)轉(zhuǎn)換為系統(tǒng)X所需的數(shù)據(jù)格式。該建賬軟件具有以下功能。(1)分戶賬錄入:手工辦理業(yè)務(wù)時(shí)建立的每個(gè)分戶賬數(shù)據(jù)均由初錄員和復(fù)錄員分別錄入,以確保數(shù)據(jù)的正確性。(2)初錄/復(fù)錄比對(duì):將初錄員和復(fù)錄員錄入的數(shù)據(jù)進(jìn)行一一比較,并標(biāo)記兩套數(shù)據(jù)是否一致。(3)數(shù)據(jù)確認(rèn):當(dāng)上述兩套數(shù)據(jù)完全一致后,將其中任一套作為最終進(jìn)入系統(tǒng)X的原始數(shù)據(jù)。(4)匯總核對(duì)和打印:對(duì)經(jīng)過確認(rèn)的數(shù)據(jù)進(jìn)行匯總,并和會(huì)計(jì)賬目中的相關(guān)數(shù)據(jù)進(jìn)行核對(duì),以確保數(shù)據(jù)的整體正確性,并打印輸出經(jīng)過確認(rèn)的數(shù)據(jù),為以后核查可能的錯(cuò)誤提供依據(jù)。該建賬軟件需要打印的分戶賬清單樣式如表3-8所示。(5)數(shù)據(jù)轉(zhuǎn)換:將經(jīng)過確認(rèn)的數(shù)據(jù)轉(zhuǎn)換為儲(chǔ)蓄系統(tǒng)X需要的中間格式數(shù)據(jù)。(6)數(shù)據(jù)清除:為加快初錄和復(fù)錄的處理速度,在數(shù)據(jù)確認(rèn)之后,可以有選擇地清除初錄員和復(fù)錄員錄入的數(shù)據(jù)。該軟件的數(shù)據(jù)流圖如圖3-17~圖3-19所示,圖中部分?jǐn)?shù)據(jù)流數(shù)據(jù)文件的格式如下。初錄分戶賬=儲(chǔ)蓄所號(hào)+賬號(hào)+戶名+開戶日+開戶金額+當(dāng)前余額+性質(zhì)復(fù)錄分戶賬=儲(chǔ)蓄所號(hào)+賬號(hào)+戶名+開戶日+開戶金額+當(dāng)前余額+性質(zhì)會(huì)計(jì)賬目=儲(chǔ)蓄所號(hào)+總戶數(shù)+總余額操作結(jié)果=初錄操作結(jié)果+比對(duì)操作結(jié)果+復(fù)錄操作結(jié)果1、不考慮數(shù)據(jù)確認(rèn)處理(加工2),請(qǐng)指出圖3-17~圖3-19數(shù)據(jù)流圖中可能存在的錯(cuò)誤。標(biāo)準(zhǔn)答案:這是一道要求考生掌握分層數(shù)據(jù)流圖輸入/輸出平衡原則的分析題。本題的解答思路如下。每個(gè)加工必須既有輸入數(shù)據(jù)流,又有輸出數(shù)據(jù)流。但一個(gè)加工的輸入數(shù)據(jù)流不要與輸出數(shù)據(jù)流同名。在整套數(shù)據(jù)流圖中,每個(gè)數(shù)據(jù)存儲(chǔ)必須既有讀的數(shù)據(jù)流,也有寫的數(shù)據(jù)流。但在某張子圖中,可能只有讀沒有寫,或者是只有寫而沒有讀。在數(shù)據(jù)流圖(DFD)中,加工處理是對(duì)輸入數(shù)據(jù)進(jìn)行相關(guān)處理并生成輸出數(shù)據(jù)的過程,因此,對(duì)于DFD中的每個(gè)加工處理至少要有一個(gè)輸入數(shù)據(jù)流和一個(gè)輸出數(shù)據(jù)流。根據(jù)這一原則仔細(xì)檢查圖3-17~圖3-19可知,在建賬軟件第0層數(shù)據(jù)流圖(見圖3-18)中,數(shù)據(jù)確認(rèn)處理(加工2)和數(shù)據(jù)清除處理(加工6)只有輸出數(shù)據(jù)流而沒有輸入數(shù)據(jù),這是圖3-18中存在的錯(cuò)誤之處。由于題目中已說明“不考慮數(shù)據(jù)確認(rèn)處理(加工2)”,因此,本試題的正確答案是“在建賬軟件第0層數(shù)據(jù)流圖(圖3-18)中,數(shù)據(jù)清除處理(加工6)沒有輸入數(shù)據(jù)流”。知識(shí)點(diǎn)解析:暫無解析2、請(qǐng)使用[說明]中的詞匯,給出數(shù)據(jù)確認(rèn)處理所需的數(shù)據(jù)流,在圖3-19建賬軟件第1層數(shù)據(jù)流圖中的全部可選起點(diǎn)。標(biāo)準(zhǔn)答案:這也是一道要求考生掌握分層數(shù)據(jù)流圖輸入/輸出平衡原則的綜合分析題。本題的解答思路如下。在本試題說明中關(guān)于“數(shù)據(jù)確認(rèn)”功能的描述——“數(shù)據(jù)確認(rèn):當(dāng)上述兩套數(shù)據(jù)(即初錄員和復(fù)錄員錄入的數(shù)據(jù))完全一致后,將其中任一套作為最終進(jìn)入系統(tǒng)X的原始數(shù)據(jù)”中,“進(jìn)入系統(tǒng)X”其對(duì)應(yīng)于建賬軟件第0層數(shù)據(jù)流圖(見圖3-18)中“數(shù)據(jù)確認(rèn)”處理。由此可知,在圖3-19建賬軟件第1層數(shù)據(jù)流圖中,無論是“初錄數(shù)據(jù)”數(shù)據(jù)存儲(chǔ)還是“復(fù)錄數(shù)據(jù)”數(shù)據(jù)存儲(chǔ)都可作為“數(shù)據(jù)確認(rèn)”處理的數(shù)據(jù)源。知識(shí)點(diǎn)解析:暫無解析3、請(qǐng)使用[說明]中數(shù)據(jù)字典條目定義形式,將以下(1)和(2)空缺處的內(nèi)容填寫完整。初錄數(shù)據(jù)=(1)復(fù)錄數(shù)據(jù)=(2)標(biāo)準(zhǔn)答案:由題干中給出的關(guān)鍵信息“分戶賬錄入:手工辦理業(yè)務(wù)時(shí)建立的每個(gè)分戶賬數(shù)據(jù)均由初錄員和復(fù)錄員分別錄入……”和“初錄/復(fù)錄比對(duì):將初錄員和復(fù)錄員錄入的數(shù)據(jù)進(jìn)行一一比較,并標(biāo)記兩套數(shù)據(jù)是否一致”可知,初錄員錄入的“初錄數(shù)據(jù)”中應(yīng)包含“初錄分戶賬”和“一致性標(biāo)志”,而復(fù)錄員錄入的“復(fù)錄數(shù)據(jù)”中應(yīng)包含“復(fù)錄分戶賬”和“一致性標(biāo)志”。然后將它們表達(dá)成[說明]中數(shù)據(jù)字典條目定義形式如下。初錄數(shù)據(jù)=初錄分戶賬+一致性標(biāo)志(或初錄數(shù)據(jù)=手工分戶賬+一致性標(biāo)志)復(fù)錄數(shù)據(jù)=復(fù)錄分戶賬+一致性標(biāo)志(或復(fù)錄數(shù)據(jù)=手工分戶賬+一致性標(biāo)志)知識(shí)點(diǎn)解析:暫無解析4、請(qǐng)使用[說明]中數(shù)據(jù)字典條目定義形式,給出圖3-18中的“手工分戶賬”數(shù)據(jù)流和圖3-19中的“初錄分戶賬”和“復(fù)錄分戶賬”的關(guān)系。標(biāo)準(zhǔn)答案:這是一道要求考生掌握分層數(shù)據(jù)流圖中父圖與子圖平衡原則的綜合分析題。本題的解答思路如下。任何一個(gè)數(shù)據(jù)流子圖必須與它上一層父圖的某個(gè)加工相對(duì)應(yīng),即父圖中某加工的輸入/輸出數(shù)據(jù)流必須與它的子圖的輸入/輸出數(shù)據(jù)流在數(shù)量和名字上相同。但如果父圖中的數(shù)據(jù)流是由子圖中的幾個(gè)數(shù)據(jù)流合并而成,即子圖中組成這些數(shù)據(jù)流的數(shù)據(jù)項(xiàng)全體正好是父圖中的這一個(gè)數(shù)據(jù)流,這種情況下也認(rèn)為是平衡的。在建賬軟件第0層數(shù)據(jù)流圖(見圖3-18)中,“手工分戶賬”數(shù)據(jù)流是“1錄入比對(duì)”處理的輸入數(shù)據(jù)流,而“1錄入比對(duì)”處理包含了建賬軟件第1層數(shù)據(jù)流圖(見圖3-19)中的“1.1初錄”處理、“1.2復(fù)錄”處理和“1.3比對(duì)”處理。在圖3-19中,“1.1初錄”處理的輸入數(shù)據(jù)流是“初錄分戶賬”,“1.2復(fù)錄”處理的輸入數(shù)據(jù)流是“復(fù)錄分戶賬”,因此,“手工分戶賬”數(shù)據(jù)流包含了“初錄分戶賬”和“復(fù)錄分戶賬”,將其表達(dá)成本試題[說明]所示例的數(shù)據(jù)字典條目定義形式如下。手工分戶賬=初錄分戶賬+復(fù)錄分戶賬知識(shí)點(diǎn)解析:暫無解析5、加工1(錄入比對(duì)處理)除能夠檢查出初錄數(shù)據(jù)和復(fù)錄數(shù)據(jù)不一致之外,還應(yīng)檢測(cè)的錯(cuò)誤有(3)。A.顯示器無法顯示B.輸入的無效字符C.輸入數(shù)據(jù)的格式D.輸入數(shù)據(jù)的界限E.打印機(jī)卡紙F(tuán).重復(fù)錄入同一賬戶G.輸入的半個(gè)漢字H.匯總數(shù)據(jù)與會(huì)計(jì)賬目不符標(biāo)準(zhǔn)答案:由[問題3]要點(diǎn)解析可知,建賬軟件第0層數(shù)據(jù)流圖(見圖3-18)中“1錄入比對(duì)”處理包含了第1層數(shù)據(jù)流圖(圖3-19)中的“1.1初錄”、“1.2復(fù)錄”和“1.3比對(duì)”這3個(gè)處理。結(jié)合題干給出的關(guān)鍵信息“初錄/復(fù)錄比對(duì):將初錄員和復(fù)錄員錄入的數(shù)據(jù)進(jìn)行一一比較,并標(biāo)記兩套數(shù)據(jù)是否一致”和常識(shí)可知,加工1(錄入比對(duì)處理)除能夠檢查出初錄數(shù)據(jù)和復(fù)錄數(shù)據(jù)不一致之外,還應(yīng)檢測(cè)的錯(cuò)誤有①輸入的無效字符(如在“賬號(hào)”數(shù)據(jù)項(xiàng)中輸入了小數(shù)點(diǎn)、$和@等其他字符)、②輸入數(shù)據(jù)的格式(如“賬號(hào)”數(shù)據(jù)項(xiàng)規(guī)定每4位數(shù)字后加一位半角空格字符等)、③輸入數(shù)據(jù)的界限(例如“開戶日”的數(shù)值是否超過了當(dāng)前日期等)、④輸入的半個(gè)漢字(在某些運(yùn)行環(huán)境中(或輸入法)中可能存在這種情況)和⑤(初錄員/復(fù)錄員)重復(fù)錄入同一賬戶等。由題干給出的關(guān)鍵信息“匯總核對(duì)和打?。簩?duì)經(jīng)過確認(rèn)的數(shù)據(jù)進(jìn)行匯總,并和會(huì)計(jì)賬目中的相關(guān)數(shù)據(jù)進(jìn)行核對(duì)……”可知,檢查匯總數(shù)據(jù)和會(huì)計(jì)賬目是否相符是在圖3-18中處理“3匯總核對(duì)”所完成的功能;數(shù)據(jù)打印是在圖3-18中處理“4打印清單”所完成的功能。同時(shí)根據(jù)常識(shí)可知,“1錄入比對(duì)”處理通常未涉及檢查“顯示器無法顯示”和“打印機(jī)卡紙”等硬件故障的功能。知識(shí)點(diǎn)解析:暫無解析6、打印分戶賬清單(表3-8)時(shí),必須以“(4)”作為關(guān)鍵字進(jìn)行排序才能滿足系統(tǒng)需求。A.儲(chǔ)蓄所B.賬號(hào)C.開戶日D.戶名E.其他分戶賬數(shù)據(jù)F.總戶數(shù)和總余額標(biāo)準(zhǔn)答案:仔細(xì)閱讀分戶賬清單樣式表(見表3-8)可知,表中數(shù)據(jù)是按照“儲(chǔ)蓄所”這一數(shù)據(jù)字段進(jìn)行分組的,每一分組中均通過“共XXXX戶,總余額YYYYYYY.YY元”格式給出了儲(chǔ)蓄所的統(tǒng)計(jì)數(shù)據(jù)。這就要求在數(shù)據(jù)查詢/打印操作中,至少要按照“儲(chǔ)蓄所”這一數(shù)據(jù)字段進(jìn)行排序才能實(shí)現(xiàn)。在實(shí)際應(yīng)用中,在軟件實(shí)現(xiàn)時(shí)也可以按照“賬號(hào)”和“開戶日”等數(shù)據(jù)字段進(jìn)行排序,但從表3-8數(shù)據(jù)格式中無法確定是否需要這些排序工作。知識(shí)點(diǎn)解析:暫無解析閱讀下列說明,根據(jù)要求回答問題1~問題3。[說明]某地區(qū)舉行籃球比賽,需要開發(fā)一個(gè)比賽信息管理系統(tǒng)來記錄比賽的相關(guān)信息。[需求分析結(jié)果]1.登記參賽球隊(duì)的信息。記錄球隊(duì)的名稱、代表地區(qū)、成立時(shí)間等信息。系統(tǒng)記錄球隊(duì)的每個(gè)隊(duì)員的姓名、年齡、身高、體重等信息。每個(gè)球隊(duì)有一個(gè)教練負(fù)責(zé)管理球隊(duì),一個(gè)教練僅負(fù)責(zé)一個(gè)球隊(duì)。系統(tǒng)記錄教練的姓名、年齡等信息。2.安排球隊(duì)的訓(xùn)練信息。比賽組織者為球隊(duì)提供了若干個(gè)場(chǎng)地,供球隊(duì)進(jìn)行適應(yīng)性訓(xùn)練。系統(tǒng)記錄現(xiàn)有的場(chǎng)地信息,包括:場(chǎng)地名稱、場(chǎng)地規(guī)模、位置等信息。系統(tǒng)可為每個(gè)球隊(duì)安排不同的訓(xùn)練場(chǎng)地,如表3-9所示。系統(tǒng)記錄訓(xùn)練場(chǎng)地安排的信息。3.安排比賽。該賽事聘請(qǐng)有專職裁判,每場(chǎng)比賽只安排一個(gè)裁判。系統(tǒng)記錄裁判的姓名、年齡、級(jí)別等信息。系統(tǒng)按照一定的規(guī)則,首先分組,然后根據(jù)球隊(duì)、場(chǎng)地和裁判情況,安排比賽(每場(chǎng)比賽的對(duì)陣雙方分別稱為甲隊(duì)和乙隊(duì))。記錄參賽球隊(duì)、比賽時(shí)間、比分、場(chǎng)地名稱等信息,如表3-10所示。4.所有球員、教練和裁判可能出現(xiàn)重名情況。[概念模型設(shè)計(jì)]根據(jù)需求階段收集的信息,設(shè)計(jì)的實(shí)體聯(lián)系圖和關(guān)系模式(不完整)如下。1.實(shí)體聯(lián)系圖(圖3-20)2.關(guān)系模式教練(教練編號(hào),姓名,年齡)隊(duì)員(隊(duì)員編號(hào),姓名,年齡,身高,體重,(a)球隊(duì)(球隊(duì)名稱,代表地區(qū),成立時(shí)間,(b)場(chǎng)地(場(chǎng)地名稱,場(chǎng)地規(guī)模,位置)訓(xùn)練記錄((c))裁判(裁判編號(hào),姓名,年齡,級(jí)別)比賽記錄((d))7、根據(jù)問題描述,補(bǔ)充4個(gè)聯(lián)系,完善圖3-20的實(shí)體聯(lián)系圖。標(biāo)準(zhǔn)答案:本題考查讀者對(duì)數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計(jì)及向邏輯結(jié)構(gòu)轉(zhuǎn)換的掌握情況。此類題目要求認(rèn)真閱讀題目對(duì)現(xiàn)實(shí)問題的描述,經(jīng)過分類、聚集、概括等方法,從中確定實(shí)體及其聯(lián)系。題目已經(jīng)給出了4個(gè)實(shí)體,需要根據(jù)需求描述,給出實(shí)體間的聯(lián)系。由“每個(gè)球隊(duì)有一個(gè)教練負(fù)責(zé)管理球隊(duì),一個(gè)教練僅負(fù)責(zé)一個(gè)球隊(duì)。”知球隊(duì)與教練間為1:1聯(lián)系;球隊(duì)與隊(duì)員之間應(yīng)為1:N聯(lián)系;多個(gè)球隊(duì)使用多個(gè)訓(xùn)練場(chǎng)地,球隊(duì)與場(chǎng)地之間為M:N聯(lián)系;比賽是球隊(duì)、場(chǎng)地與裁判之間的聯(lián)系,一個(gè)球隊(duì)會(huì)與同組的其他多個(gè)隊(duì)之間比賽,有多個(gè)場(chǎng)地和裁決,一位裁判會(huì)對(duì)多場(chǎng)比賽判罰,一個(gè)場(chǎng)地會(huì)有多場(chǎng)比賽,涉及多個(gè)球隊(duì)和裁判,因此球隊(duì)、場(chǎng)地與裁判之間的比賽關(guān)系為M:N:P聯(lián)系。補(bǔ)充完整的實(shí)體聯(lián)系圖如圖3-29所示。知識(shí)點(diǎn)解析:暫無解析8、根據(jù)你的實(shí)體聯(lián)系圖,完成關(guān)系模式,并給出訓(xùn)練記錄和比賽記錄關(guān)系模式的主鍵和外鍵。標(biāo)準(zhǔn)答案:根據(jù)補(bǔ)充后的E-R圖,球隊(duì)與球員之間的1:N聯(lián)系應(yīng)通過將1端實(shí)體(球員)的主碼(球隊(duì)名稱)加入到N端實(shí)體(球員)對(duì)應(yīng)的關(guān)系中來表達(dá)。這類聯(lián)系也可通過獨(dú)立的一個(gè)關(guān)系來表達(dá),如球隊(duì)-球員(球隊(duì)名稱,隊(duì)員編號(hào)),這樣會(huì)對(duì)查詢?cè)黾佣嘤嗟倪B接操作,因此一般不采用這種方法。同樣,球隊(duì)與教練之間的1:1聯(lián)系也應(yīng)通過將一方的主碼增加到另一方實(shí)體對(duì)應(yīng)的關(guān)系中,來表達(dá)聯(lián)系。訓(xùn)練和比賽為多對(duì)多聯(lián)系,只能獨(dú)立成一個(gè)關(guān)系模式,取該聯(lián)系相關(guān)聯(lián)的各實(shí)體的碼及聯(lián)系自有的屬性構(gòu)成。如比分和分組應(yīng)該是比賽的屬性,再加上球隊(duì)、裁判、場(chǎng)地的碼,即構(gòu)成“比賽記錄”的關(guān)系模式。比賽記錄關(guān)系模式的主鍵可以是“場(chǎng)地名稱,比賽時(shí)間”,也可以是“裁判,比賽時(shí)間”,或者是“甲隊(duì),比賽時(shí)間”,再或者是“乙隊(duì),比賽時(shí)間”。其外鍵是“甲隊(duì),乙隊(duì),場(chǎng)地名稱,裁判”。同理,訓(xùn)練是球隊(duì)和場(chǎng)地的多對(duì)多聯(lián)系,訓(xùn)練開始時(shí)間和結(jié)束時(shí)間為訓(xùn)練的屬性,加上球隊(duì)的碼和場(chǎng)地的碼,構(gòu)成“訓(xùn)練記錄”關(guān)系模式。訓(xùn)練記錄關(guān)系模式的主鍵可以是“球隊(duì),開始時(shí)間”,也可以是“場(chǎng)地名稱,開始時(shí)間”,或者是“球隊(duì),結(jié)束時(shí)間”,再或者是“場(chǎng)地名稱,結(jié)束時(shí)間”。其外鍵是“球隊(duì)名稱,場(chǎng)地名稱”。知識(shí)點(diǎn)解析:暫無解析9、如果考慮記錄一些特別資深的熱心球迷的情況,每個(gè)熱心球迷可能支持多個(gè)球隊(duì)。熱心球迷的基本信息包括:姓名、住址和喜歡的俱樂部等。根據(jù)這一要求修改圖3-20的實(shí)體聯(lián)系圖,給出修改后的關(guān)系模式。標(biāo)準(zhǔn)答案:球迷與球隊(duì)之間為多對(duì)多聯(lián)系,需新增球迷實(shí)體和球迷與球隊(duì)之間的支持聯(lián)系,如圖3-30所示。新增的關(guān)系模式如下。熱心球迷(球迷編號(hào),姓名,住址,俱樂部)支持球隊(duì)(球迷編號(hào),球隊(duì))知識(shí)點(diǎn)解析:暫無解析閱讀以下技術(shù)說明,根據(jù)要求回答問題1~問題4。[說明]某汽車停車場(chǎng)欲建立一個(gè)信息系統(tǒng),已經(jīng)調(diào)查到的需求如下。1.在停車場(chǎng)的入口和出口分別安裝一個(gè)自動(dòng)欄桿、一臺(tái)停車卡打印機(jī)、一臺(tái)讀卡器和一個(gè)車輛通過傳感器等,其示意圖見如圖3-21所示。2.當(dāng)汽車到達(dá)入口時(shí),駕駛員按下停車卡打印機(jī)的按鈕獲取停車卡。當(dāng)駕駛員拿走停車卡后,系統(tǒng)命令欄桿自動(dòng)抬起;汽車通過入口后,入口處的傳感器通知系統(tǒng)發(fā)出命令,欄桿自動(dòng)放下。3.在停車場(chǎng)內(nèi)分布著若干個(gè)付款機(jī)器。駕駛員將在入口處獲取的停車卡插入付款機(jī)器,并繳納停車費(fèi)。付清停車費(fèi)之后,將獲得一張出場(chǎng)卡,用于離開停車場(chǎng)。4.當(dāng)汽車到達(dá)出口時(shí),駕駛員將出場(chǎng)卡插入出口處的讀卡器。如果這張卡是有效的,系統(tǒng)命令欄桿自動(dòng)抬起;汽車通過出口后,出口傳感器通知系統(tǒng)發(fā)出命令,欄桿自動(dòng)放下。若這張卡是無效的,系統(tǒng)不發(fā)出欄桿抬起命令而發(fā)出告警信號(hào)。5.系統(tǒng)自動(dòng)記錄停車場(chǎng)內(nèi)空閑的停車位的數(shù)量。若停車場(chǎng)當(dāng)前沒有車位,系統(tǒng)將在入口處顯示“車位已滿”信息。這時(shí),停車卡打印機(jī)將不再出卡,只允許場(chǎng)內(nèi)汽車出場(chǎng)。根據(jù)上述描述,采用面向?qū)ο蠓椒▽?duì)其進(jìn)行分析與設(shè)計(jì),得到如表3-11所示的類/用例/狀態(tài)列表,如圖3-22所示的用例圖,如圖3-23所示的初始類圖以及如圖3-24所示的描述入口自動(dòng)欄桿行為的UML狀態(tài)圖。10、根據(jù)說明中的描述,使用表3-11給出的用例名稱,給出圖3-22中U1、U2和U3所對(duì)應(yīng)的用例。標(biāo)準(zhǔn)答案:表3-11中給出了Carentry、Carexit、ReportStatistics、Carentrywhenfull等4個(gè)用例。在這4個(gè)用例中,兩個(gè)用例表示汽車進(jìn)入停車場(chǎng),一個(gè)用例表示汽車退出停車場(chǎng),另一個(gè)用例表示記錄停車場(chǎng)相關(guān)信息。經(jīng)分析得出,前3個(gè)用例的參與者都是駕駛員,因此U1、U2和U3對(duì)應(yīng)進(jìn)入和退出停車場(chǎng)。U1和U3之間存在擴(kuò)展關(guān)系,而用例之間的延伸關(guān)系用于對(duì)被用戶看作是可選系統(tǒng)行為的用例的一部分建模。通過這種方式,可以把可選行為從必需的行為中分離出來。Carentrywhenfull和Carentry之間就可以使用extend關(guān)系進(jìn)行建模。知識(shí)點(diǎn)解析:暫無解析11、根據(jù)說明中的描述,使用表3-11給出的類的名稱,給出圖3-23中的A~D所對(duì)應(yīng)的類。標(biāo)準(zhǔn)答案:在UML類圖中,類與類之間的5種關(guān)系從弱到強(qiáng)依次為:依賴(Dependency),關(guān)聯(lián)(Association),聚合(Aggregation),組合(Composition)和繼承(Inheritance)。因此依賴關(guān)系最弱,繼承表示類與類之間關(guān)系最強(qiáng)。依賴(Dependency)關(guān)系是類與類之間的連接,并且依賴總是單向的,其標(biāo)準(zhǔn)UML圖形表示為表示其相聯(lián)的兩個(gè)類之間存在關(guān)聯(lián)關(guān)系,用于描述兩個(gè)概念上位于相同級(jí)別的類的實(shí)例之間存在的某種語義上的聯(lián)系。聚合關(guān)系是關(guān)聯(lián)關(guān)系的一種特例,代表兩個(gè)類之間的整體/局部關(guān)系,其標(biāo)準(zhǔn)UML圖形表示為表示其相聯(lián)的兩個(gè)類之間存在繼承關(guān)系。子類繼承父類的行為與含義,子類還可以增加或者覆蓋父類的行為。子類可以出現(xiàn)在父類出現(xiàn)的任何位置。依題意可以判斷Barrier、EntryBarrier和ExitBarrier之間存在繼承關(guān)系,而在圖3-23類圖中所表示的繼承關(guān)系的部分只有一處,因此這3個(gè)類分別對(duì)應(yīng)于圖3-23中的類B、類C和類D,而剩下的類A只有選擇類CarPark了。知識(shí)點(diǎn)解析:暫無解析12、根據(jù)說明中的描述,使用表3-11給出的狀態(tài)名稱,給出圖3-24中S1~S4所對(duì)應(yīng)的狀態(tài)。標(biāo)準(zhǔn)答案:在圖3-24狀態(tài)圖中,Idle表示有空閑車位,Disable表示沒有空閑車位,因此在其之間存在雙向的狀態(tài)遷移,即狀態(tài)圖上的狀態(tài)S1為Idle狀態(tài)。當(dāng)停車場(chǎng)存在空閑車位時(shí),汽車請(qǐng)求進(jìn)入停車場(chǎng),根據(jù)說明描述“當(dāng)汽車到達(dá)入口時(shí),駕駛員按下停車卡打印機(jī)的按鈕獲取停車卡”,可知在該動(dòng)作正對(duì)應(yīng)于狀態(tài)圖上的S1和狀態(tài)S2之間的遷移,因此,狀態(tài)S2表示的含義應(yīng)該是按下按鈕后狀態(tài),此時(shí),駕駛員等待打印停車卡,所以狀態(tài)S2為AwaitTicketTake。同理可分析出狀態(tài)S3和狀態(tài)S4。知識(shí)點(diǎn)解析:暫無解析13、簡(jiǎn)要解釋圖3-22中用例U1和U3之間的extend關(guān)系的內(nèi)涵。標(biāo)準(zhǔn)答案:在用例的執(zhí)行過程中,可能會(huì)在不同的流程分支中選擇執(zhí)行,也可能會(huì)出現(xiàn)異常行為。此時(shí),可以將異常行為或可選分支抽象成一個(gè)單獨(dú)的擴(kuò)展用例,它與主用例之間形成“擴(kuò)展(extend)”關(guān)系。知識(shí)點(diǎn)解析:暫無解析閱讀下列算法說明和流程圖,根據(jù)要求回答問題1~問題3。[說明]某機(jī)器上需要處理n個(gè)作業(yè)job1,job2,…,jobn,其中:(1)每個(gè)作業(yè)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è)開始就不可中斷,每個(gè)作業(yè)的最后期限值為單位時(shí)間的正整數(shù)倍;(3)job1~jobn的收益值呈非遞增順序排列,即p[1]≥p[2]≥…≥p[n];(4)如果作業(yè)jobi在其期限之內(nèi)完成,則獲得收益p[i];如果在其期限之后完成,則沒有收益。為獲得較高的收益,采用貪心策略求解在期限之內(nèi)完成的作業(yè)序列。圖3-25是基于貪心策略求解該問題的流程圖。(1)整型數(shù)組J[]有n個(gè)存儲(chǔ)單元,變量k表示在期限之內(nèi)完成的作業(yè)數(shù),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ù)組J中的位置為r+1;q:循環(huán)控制變量,用于移動(dòng)數(shù)組J中的元素。14、請(qǐng)將圖3-25中的(1)~(3)空缺處的內(nèi)容填寫完整。標(biāo)準(zhǔn)答案:這是一道考查貪心算法的流程圖分析的試題。(1)空缺處表示第2個(gè)作業(yè)到第n個(gè)作業(yè)的主循環(huán)的條件判斷,由于i是循環(huán)控制變量,因此(1)空缺處所填寫的內(nèi)容是i<=h。注意到題干中給出的關(guān)鍵信息“J[1..k)存儲(chǔ)所有能夠在期限內(nèi)完成的作業(yè)編號(hào),數(shù)組J[1..k]里的作業(yè)按其最后期限非遞減排序,即”。換言之,數(shù)組J中的作業(yè)J[i](1≤i≤k)是在其期限之前完成的作業(yè),且。由圖3-25給出的算法流程圖可知,主循環(huán)內(nèi)嵌套了兩個(gè)循環(huán),第1個(gè)循環(huán)判斷當(dāng)前考慮的作業(yè)i應(yīng)該插入到J中的什么位置,用循環(huán)控制變量r表示當(dāng)前考慮的J中的作業(yè)。使用虛擬作業(yè)J[0],允許作業(yè)較方便地插入到第1個(gè)位置。為了保證J中的作業(yè)期限按升序排序,作業(yè)J[r]若比作業(yè)i的期限大,則循環(huán)控制變量r要自減,因此(2)空缺處所填寫的內(nèi)容是d[J[r]]>d[i]。d[J[r]]與r的關(guān)系只有兩種:d[J[r]]>r,表示還可能在J[1]與J[r]之間插入作業(yè)“d[J[r]]=r,表示不可以在J[1]~J[r]之間插入作業(yè)i。d[J[r]]<r的情況不會(huì)存在,因?yàn)镴中若有r個(gè)作業(yè),那么最后一個(gè)作業(yè)的期限不可能小于r。當(dāng)作業(yè)i大于等于作業(yè)J[r]的期限時(shí),此時(shí)找到了作業(yè)i插入的位置,即r+1。第2個(gè)循環(huán)的作用是將作業(yè)J[r+1]……J[k]依次往后移動(dòng),此處用插入排序算法的思想。最后把作業(yè)i插入到J[r+1]處,因此(3)空缺處所填寫的內(nèi)容是J[r+1]=i(或J[q+1]=i)。知識(shí)點(diǎn)解析:暫無解析15、假設(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)。標(biāo)準(zhǔn)答案:這是一道考查貪心算法實(shí)例應(yīng)用的分析題。6個(gè)作業(yè)job1,job2,…,job6的收益已經(jīng)按降序排列,根據(jù)圖3-25的算法流程,將作業(yè)1,2,4和5放入數(shù)組J中,并得到總收益為220,具體分析過程見表3-13。知識(shí)點(diǎn)解析:暫無解析16、對(duì)于本試題的作業(yè)處理問題,用圖3-25的貪心算法能否求得最高收益?(6)。(能或不能)用貪心算法求解任意給定問題時(shí),是否一定能得到最優(yōu)解?(7)。(能或不能)標(biāo)準(zhǔn)答案:這是一道判斷貪心算法是否能求得最優(yōu)解的應(yīng)用分析題。對(duì)于本試題的作業(yè)處理問題,用圖3-25的貪心算法策略,能求得最優(yōu)解(即能求得最高收益)。但不是所有的問題都能通過貪心策略來求得最優(yōu)解,一個(gè)典型的例子是0—1背包問題。例如,有3件物品,背包可容納50磅重的東西,每件物品的詳細(xì)信息如表3-14所示,問如何裝包使得其價(jià)值最大?如果按貪心策略求解該問題,優(yōu)先選擇單位價(jià)值最大的物品,則先選擇物品R,然后選擇物品S。由于此時(shí)背包容量還剩下50-10-20=20,不足以容納物品T,故總價(jià)值為60+100=160美元。但若選擇物品S和物品T,容量總和為20+30,小于等于總?cè)萘?0,得到總價(jià)值為100+120=220美元,會(huì)得到更優(yōu)解。此時(shí)用貪心策略不能得到最優(yōu)解。知識(shí)點(diǎn)解析:暫無解析二、選答題(本題共3題,每題1.0分,共3分。)17、閱讀以下函數(shù)說明、圖和C程序代碼,將C程序段中(1)~(6)空缺處的語句填寫完整。[說明]散列文件的存儲(chǔ)單位稱為桶(BUCKET)。假如一個(gè)桶能存放m個(gè)記錄,當(dāng)桶中已有m個(gè)同義詞(散列函數(shù)值相同)的記錄時(shí),存放第m+1個(gè)同義詞會(huì)發(fā)生“溢出”。此時(shí)需要將第m+1個(gè)同義詞存放到另一個(gè)稱為“溢出桶”的桶中。相對(duì)地,稱存放前m個(gè)同義詞的桶為“基桶”。溢出桶和基桶大小相同,用指針鏈接。查找指定元素記錄時(shí),首先在基桶中查找。若找到,則成功返回,否則沿指針到溢出桶中進(jìn)行查找。例如,設(shè)散列函數(shù)為Hash(Key)=Keymod7,記錄的關(guān)鍵字序列為15,14,21,87,96,293,35,24,149,19,63,16,103,77,5,153,145,356,51,68,705,453,建立的散列文件內(nèi)容如圖2-27所示。為簡(jiǎn)化起見,散列文件的存儲(chǔ)單位以內(nèi)存單元表示。函數(shù)InsertToHashTable(intNewElemKey)的功能是:若新元素NewElemKey正確插入散列文件中,則返回值0;否則返回值-1。采用的散列函數(shù)為Hash(NewElemKey)=NewElemKey%P,其中P設(shè)定基桶的數(shù)目。函數(shù)中使用的預(yù)定義符號(hào)如下。標(biāo)準(zhǔn)答案:這是一道要求讀者掌握如何在散列文件中插入一個(gè)新的數(shù)據(jù)元素的編程題。本題的解答思路如下。在散列文件中插入一個(gè)新的數(shù)據(jù)元素的基本思路是,首先將要插入的元素代入到散列函數(shù)中,從而計(jì)算出該元素的散列地址。然后按照散列地址,在基桶中查找空閑單元,若找到,則將元素插入,若基桶已滿,則在溢出桶中查找空閑單元。若溢出桶中也查找不到,則申請(qǐng)新的溢出桶,然后將元素存入。在散列文件中查找一個(gè)元素的基本思路是,查找指定元素記錄時(shí),首先在基桶中查找,若找到,則成功返回,否則沿指針到溢出桶中進(jìn)行查找。在本試題中,將元素存儲(chǔ)在預(yù)先設(shè)定的基桶或根據(jù)需要申請(qǐng)的溢出桶中,只要基桶中有空閑單元,就將新元素NewElemkey插入在基桶中,若基桶中無空閑單元,則看是否存在溢出桶,若存在,則在溢出桶中查找空閑單元,若不存在溢出桶或溢出桶中無空閑單元,則申請(qǐng)一個(gè)溢出桶并存入新元素。在基桶查找空閑單元時(shí),使用的桶號(hào)為Index,由此可知(1)空缺處所填寫的內(nèi)容是“Index=NewElemKey%P”,或“Index=Hash(NewElemKey)”等其他等價(jià)形式。一旦在基桶中找到空閑單元,即“Bucket[1ndex].keyData[i]==NULLKEY”(0≤i<ITEMS),則可將元素NewElemkey放入Bucket[Index].keyData[i],至此元素已經(jīng)插入散列桶中,函數(shù)可返回,因此(2)空缺處所填寫的內(nèi)容是“i<ITEMS”。反之,若在基桶中沒有找到空閑單元,則需查找溢出桶?!皌=Bucket[Index].Link”,指針t首先指向桶號(hào)Index的第一個(gè)溢出桶。以下的代碼完成在溢出桶中查找空閑單元的功能。由于每個(gè)溢出桶都可以存儲(chǔ)ITEMS個(gè)元素,因此在溢出桶中查找空閑單元與在基桶中的查找過程相同,代碼如下。若在指針t指向的溢出桶中找到空閑單元?jiǎng)t插入元素,否則,由“t=t->Link”得到下一個(gè)溢出桶的指針,因此“k<ITEMS”可作為是否在當(dāng)前溢出桶中找到空閑單元的判定條件。顯然,在桶號(hào)Index的基桶和其所有溢出桶都已滿的情況下,t的值為空指針。此時(shí)才需要申請(qǐng)新的溢出桶并建立鏈接關(guān)系,因此在上面查找溢出桶中空閑單元時(shí),進(jìn)行指針t的后移“t=t->Link’’前應(yīng)先用front記錄t的值,以便于后面建立鏈接關(guān)系。所以(3)空缺處應(yīng)給front置初值,即所填寫的內(nèi)容是“front=&Bucket[Index]”,或“front=Bucket+Index”等其他等價(jià)形式。(4)空缺處用于判斷該溢出桶是否已滿,即所填寫的內(nèi)容是“k=ITEMS(或k>=ITEMS)”。如果該溢出桶已滿,則繼續(xù)查找下一個(gè)溢出桶,直到查找到空閑單元為止。若所有溢出桶都不存在空閑單元(即t==NULL),則申請(qǐng)新的溢出桶,并將新的溢出桶的首地址保存在原有的最后一個(gè)溢出桶的Link域中(即front->Link=s)。因此(5)空缺處所填寫的內(nèi)容是“t==NULL”,(6)空缺處用于建立新申請(qǐng)溢出桶的鏈接關(guān)系——“front->Link=s”。知識(shí)點(diǎn)解析:暫無解析18、閱讀以下技術(shù)說明及C++代碼,將C++程序中(1)~(5)空缺處的語句填寫完整。[說明]在一公文處理系統(tǒng)中,開發(fā)者定義了一個(gè)公文類OfficeDoc,其中定義了公文具有的屬性和處理公文的相應(yīng)方法。當(dāng)公文件中內(nèi)容或狀態(tài)發(fā)生變化時(shí),關(guān)注此OfficeDoc類對(duì)象的相應(yīng)的DocExplorer對(duì)象都要更新其自身的狀態(tài)。一個(gè)OfficeDoc對(duì)象能夠關(guān)聯(lián)一組DocExplorer對(duì)象。當(dāng)OfficeDoc對(duì)象的內(nèi)容或狀態(tài)發(fā)生變化時(shí),所有與之相關(guān)聯(lián)的DocExplorer對(duì)象都將得到通知,這種應(yīng)用被稱為Observer(觀察者)模式。以下代碼采用C++語言實(shí)現(xiàn),能夠正確編譯通過。[C++代碼]標(biāo)準(zhǔn)答案:Observer(觀察者)模式的設(shè)計(jì)意圖是:定義對(duì)象間的一種一對(duì)多的依賴關(guān)系,以便當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí),所有依賴于它的對(duì)象都得到通知并被自動(dòng)更新。首先,DocExplorer需要知道OfficeDoc是一個(gè)類,但由于OfficeDoc定義在DocExplorer之后,因此需要在DocExplorer類的定義前加上classOfficeDoc的聲明,即(1)空缺處所填寫的內(nèi)容是:classOfficeDoc。(2)空缺處可根據(jù)程序最后的構(gòu)造函數(shù)的實(shí)現(xiàn)知道,應(yīng)該填寫OfficeDoc。在觀察者模式中,不同的觀察者更新自身的方法不同,因此(3)空缺處應(yīng)填寫virtual,而且程序最后的“=0”也表明是一個(gè)純虛擬函數(shù)。由(4)空缺處所在行的程序注釋說明可知,所有與OfficeDoc相關(guān)聯(lián)的對(duì)象更新自身狀態(tài),因此需要使用update函數(shù)。但update函數(shù)的參數(shù)是一個(gè)OfficeDoc類的對(duì)象,所以參數(shù)應(yīng)該為this。(5)空缺處所在行語句的功能是,將OfficeDoc類的對(duì)象和DocExplorer類的對(duì)象相關(guān)聯(lián),關(guān)聯(lián)的函數(shù)是OfficeDoc中的attach方法,其參數(shù)是一個(gè)DocExplorer對(duì)象,使用this能夠表示當(dāng)前的對(duì)象,因此該空缺處應(yīng)填寫attach(this)。知識(shí)點(diǎn)解析:暫無解析19、閱讀以下技術(shù)說明及Java代碼,將Java程序中(1)~(5)空缺處的語句填寫完整。[說明]在一公文處理系統(tǒng)中,開發(fā)者定義了一個(gè)公文類OfficeDoc,其中定義了公文具有的屬性和處理公文的相應(yīng)方法。當(dāng)公文件的內(nèi)容或狀態(tài)發(fā)生變化時(shí),關(guān)注此OfficeDoc類對(duì)象的相應(yīng)的DocExplorer對(duì)象都要更新其自身的狀態(tài)。一個(gè)OfficeDoc對(duì)象能夠關(guān)聯(lián)一組DocExplorer對(duì)象。當(dāng)OfficeDoc對(duì)象的內(nèi)容或狀態(tài)發(fā)生變化時(shí),所有與之相關(guān)聯(lián)的DocExplorer對(duì)象都將得到通知,這種應(yīng)用被稱為Observer(觀察者)模式。以下代碼采用Java語言實(shí)現(xiàn),能夠正確編譯通過。[Java代碼]標(biāo)準(zhǔn)答案:Observer(觀察者)模式的設(shè)計(jì)意圖是:定義對(duì)象間的一種一對(duì)多的依賴關(guān)系,以便當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí),所有依賴于它的對(duì)象都得到通知并被自動(dòng)更新。(1)空缺處觀察者對(duì)象更新自身的狀態(tài),更新的數(shù)據(jù)應(yīng)該來自被觀察者對(duì)象,所以此處應(yīng)該為一Subject,因此(1)空缺處所填寫的內(nèi)容是:Subjectsubject。同理,(5)空缺處與(1)空缺處所填寫的內(nèi)容是相同的。notifyObservers方法通知所有的觀察者對(duì)象更新自身的狀態(tài),因此(2)空缺處應(yīng)該返回所有的觀察者對(duì)象,調(diào)用方法Observers()即可獲得。(3)空缺處對(duì)每個(gè)觀察者對(duì)象更新狀態(tài),所以應(yīng)該調(diào)用update方法,update方法需要此被觀察者對(duì)象作為參數(shù),所以使用this宋獲取對(duì)象自身。DocExplorer是一個(gè)觀察者,因此需要實(shí)現(xiàn)接口Observer,即(4)空缺處所填寫的內(nèi)容是:Observer。知識(shí)點(diǎn)解析:暫無解析軟件水平考試(中級(jí))軟件設(shè)計(jì)師下午(應(yīng)用技術(shù))試題模擬試卷第3套一、必答題(本題共13題,每題1.0分,共13分。)[說明]公司IT部門決定開發(fā)一個(gè)計(jì)算機(jī)管理系統(tǒng)以記錄期刊的傳閱情況。期刊在公司內(nèi)部傳閱,員工可以要求加入傳閱隊(duì)列。圖書室登記公司收到的期刊,交給名單中的第一名員工。員工應(yīng)在三個(gè)工作日內(nèi)完成閱讀,員工閱讀完畢后通知系統(tǒng),系統(tǒng)提醒下一位閱讀者取書,下一個(gè)員工必須確認(rèn)已收到期刊。當(dāng)傳閱名單中“下一位”員工出差在外時(shí)將無法進(jìn)行傳閱,此時(shí)將期刊傳給再下一位,而將該員工作標(biāo)記,再次傳遞此書時(shí)優(yōu)先考慮該員工。最后一位員工閱讀完畢后,將期刊交還圖書室以便共用。系統(tǒng)能在員工忘記傳遞期刊時(shí)發(fā)出提醒信息。系統(tǒng)詳細(xì)記錄期刊傳閱情況,當(dāng)員工閱讀完后通知系統(tǒng),系統(tǒng)記錄該員工員工號(hào)及日期,并在備注欄注明是傳出;同樣,當(dāng)員工收到期刊后給系統(tǒng)確認(rèn),系統(tǒng)記錄該員工員工號(hào)及日期,并在備注欄注明是收到。公司的員工都有一個(gè)唯一的員工號(hào)。公司訂閱了多種期刊,為每一本期刊(有唯一期刊流水號(hào))產(chǎn)生一份傳閱名單,并詳細(xì)記錄傳閱情況。員工的出差情況存儲(chǔ)在系統(tǒng)主機(jī)中。該系統(tǒng)采用面向?qū)ο蠓椒ㄩ_發(fā),系統(tǒng)中的類以及類之間的關(guān)系用UML類圖表示,圖1-1是該系統(tǒng)的類圖的一部分,圖1-2描述了成功傳遞期刊的序列圖。[圖1-1]1、根據(jù)題意,給出類“傳閱記錄”的主要屬性。標(biāo)準(zhǔn)答案:“傳閱記錄”屬性:期刊流水號(hào)、員工號(hào)、日期、備注。知識(shí)點(diǎn)解析:暫無解析2、根據(jù)題意,將圖1-2中的(1)~(5)處補(bǔ)充完整。標(biāo)準(zhǔn)答案:讀取下一位閱讀者(3)讀取員工狀態(tài)(4)提醒取書(5)添加傳閱記錄根據(jù)期刊傳閱過程的描述,員工閱讀完畢“通知系統(tǒng)”,系統(tǒng)“添加傳閱記錄”,并從“傳閱名單”中“讀取下一位閱讀者”,然后“讀取員工狀態(tài)”,若該員工可傳,“提醒取書”,員工收到期刊后向系統(tǒng)確認(rèn),系統(tǒng)“添加傳閱記錄”。知識(shí)點(diǎn)解析:暫無解析3、同一種期刊分不同的期,所以有多本同一種期刊?!皞鏖喢麊巍敝恍杳恳环N期刊一份,還是應(yīng)該每本期刊一份,為什么?標(biāo)準(zhǔn)答案:“傳閱名單”應(yīng)該每一本期刊一份,以便當(dāng)員工出差時(shí)正確做標(biāo)記,保證正確傳遞。當(dāng)傳閱名單中“下一位”員工出差在外時(shí)將無法進(jìn)行傳閱,此時(shí)將期刊傳給再下一位,而將該員工作標(biāo)記,再次傳遞此書時(shí)優(yōu)先考慮該員工。仔細(xì)分析該句題設(shè),不難發(fā)現(xiàn),“傳閱名單”應(yīng)該每一本期刊一份,如果一種期刊一份,則沒法做標(biāo)記,當(dāng)員工出差時(shí)將無法正確傳遞。知識(shí)點(diǎn)解析:暫無解析[說明]某學(xué)校的教學(xué)系統(tǒng)描述如下:學(xué)生信息包括:學(xué)號(hào)(Sno)、姓名(Sname)、性別(Ssex)、年齡(Sage)、入學(xué)年份(Syear)、主修專業(yè)(Smajor),其中學(xué)號(hào)是入學(xué)時(shí)唯一編定的。教師信息包括:教工號(hào)(Tno)、姓名(Tname)、性別(Tsex)、年齡(Tage)、職稱(Title),其中教工號(hào)是唯一編定的。課程信息包括:課程號(hào)(Cno)、課程名稱(Cname)、學(xué)時(shí)(Cpeiiod)、學(xué)分(Ccredit),其中課程號(hào)是唯一編定的。每個(gè)專業(yè)每個(gè)年級(jí)只有一個(gè)班級(jí),這樣班級(jí)就可用入學(xué)年份標(biāo)識(shí)。每位教師只教授特定的一門的課程,每門課程可以有多個(gè)教師教授,各位老師的上課地點(diǎn)及上課時(shí)間有所不同。注意:一門課程至少有一位教師教授,否則這門課程就視為不存在。每位學(xué)生可以同時(shí)選修多門不同的課程,一門課程至少要有10位學(xué)生選修,否則就取消這門課程的開設(shè)。注意:選修課程時(shí)要指定任課教師,不能重復(fù)選修同一門課程。課程結(jié)束后,任課教師給選修該課程的學(xué)生一個(gè)成績(jī)(Grade)。注意:教師不能給沒有選修他所教授課程的學(xué)生成績(jī),即使選修了其他教師教授的同一門課也不行。圖2-1是經(jīng)分析得到的E-R圖。[圖2-1]4、根據(jù)題意,給出聯(lián)系的屬性。實(shí)體間的聯(lián)系有“一對(duì)一”、“一對(duì)多”和“多對(duì)多”,指出各聯(lián)系分別屬于哪一種。標(biāo)準(zhǔn)答案:教授:上課地點(diǎn)、上課時(shí)間,一對(duì)多選修:任課教師、成績(jī),多對(duì)多“每位教師只教授特定的一門的課程,每門課程可以有多個(gè)教師教授,各位老師的上課地點(diǎn)及上課時(shí)間有所不同”,因此聯(lián)系“教授”的屬性應(yīng)有:上課地點(diǎn),上課時(shí)間,是一對(duì)多聯(lián)系?!懊课粚W(xué)生可以同時(shí)選修多門不同的課程,一門課程至少要有10位學(xué)生選修,……,選修課程時(shí)要指定任課教師,……,任課教師給選修該課程的學(xué)生一個(gè)成績(jī)(Grade)”,因此聯(lián)系“選修”的屬性應(yīng)有:任課教師、成績(jī),是多對(duì)多聯(lián)系。知識(shí)點(diǎn)解析:暫無解析5、按照“有關(guān)模式名(屬性,屬性,…)”的格式,將此E-R圖轉(zhuǎn)換為5個(gè)關(guān)系模式,指出每個(gè)關(guān)系模式中的主碼和外碼,其中模式名根據(jù)需要取實(shí)體名或聯(lián)系名。標(biāo)準(zhǔn)答案:教師(教工號(hào),姓名,性別。年齡,職稱),主碼:教工號(hào)課程(課程號(hào),課程名稱,學(xué)時(shí),學(xué)分),主碼:課程號(hào)學(xué)生(學(xué)號(hào),姓名,性別,年齡,主修專業(yè),入學(xué)年份),主碼:學(xué)號(hào)教授(教工號(hào),課程號(hào),上課地點(diǎn),上課時(shí)間),主碼:(教工號(hào))選修(學(xué)號(hào),課程號(hào),任課教師,成績(jī)),主碼:(學(xué)號(hào),課程號(hào))或(學(xué)號(hào),任課教師)E-R模型向關(guān)系模型的轉(zhuǎn)換應(yīng)遵循如下原則:①每個(gè)實(shí)體類型轉(zhuǎn)換成一個(gè)關(guān)系模式。②一個(gè)1:1的聯(lián)系(一對(duì)一聯(lián)系)可轉(zhuǎn)換為一個(gè)關(guān)系模式,或與任意一段的關(guān)系模式合并。③一個(gè)1:n的聯(lián)系(一對(duì)多聯(lián)系)可轉(zhuǎn)換為一個(gè)關(guān)系模式,或與n段的關(guān)系模式合并。若獨(dú)立轉(zhuǎn)換為一個(gè)關(guān)系模式,那么兩端關(guān)系的碼及其聯(lián)系的屬性為該關(guān)系的屬性,而n端的碼為關(guān)系的碼。④一個(gè)n:m的聯(lián)系(多對(duì)多聯(lián)系)可轉(zhuǎn)換為一個(gè)關(guān)系模式,兩端關(guān)系的碼及其聯(lián)系的屬性為該關(guān)系的屬性,而關(guān)系的碼為兩端實(shí)體的碼的組合。⑤三個(gè)或三個(gè)以上多對(duì)多的聯(lián)系可轉(zhuǎn)換為一個(gè)關(guān)系模式,諸關(guān)系的碼及聯(lián)系的屬性為關(guān)系的屬性,而關(guān)系的碼為各實(shí)體的碼的組合。⑥具有相同碼的關(guān)系可以合并。由于“每位教師只教授特定的一門的課程,學(xué)生不能重復(fù)選修同一門課程”,因此教授聯(lián)系的主碼是“教工號(hào)”,修選聯(lián)系的主碼可以是“(學(xué)號(hào),課程號(hào))”,也可以是“(學(xué)號(hào),任課教師)”。知識(shí)點(diǎn)解析:暫無解析6、若用Student表存儲(chǔ)學(xué)生信息,Teacher表存儲(chǔ)教師信息,Course表存儲(chǔ)課程信息,Study表存儲(chǔ)學(xué)生選修課程情況。教務(wù)處想要“查詢2006年入學(xué)的計(jì)算機(jī)專業(yè)(CS)的學(xué)生中平均成績(jī)?cè)?5分以上的學(xué)生信息”。請(qǐng)將以下SQL語句補(bǔ)充完整。注:用對(duì)應(yīng)英文表示。SELECT*FROMstudentWHERESmajor="CS"ANDSyear="2006"AND(1)(SELECTSnoFROMStudyGROUPBYSnoHAVING(2))標(biāo)準(zhǔn)答案:SnoIN(2)AVG(Grade)>85SELECT[ALL|DISTINCT]<目標(biāo)列表達(dá)式>[,(目標(biāo)列表達(dá)式>]…FROM<表名或視圖名>[,<表名或視圖名>][WHERE(條件表達(dá)式>][GROUIBY<列名1>[HAVING<條件表達(dá)式>]][ORDERBY<列名2>[ASC|DESC]…]子句順序?yàn)镾ELECT、FROM、WHERE、GROUPBY、HAVING、ORDERBY,但SELECT和FROM是必須的,HAVING子句只能與GROUPBY搭配起來使用。子查詢的語意應(yīng)為“按學(xué)號(hào)分組、平均分大于85的學(xué)生的學(xué)號(hào)”,可得空(1)應(yīng)填SnoIN,空(2)應(yīng)填A(yù)VG(Grade)>85。知識(shí)點(diǎn)解析:暫無解析[說明]圖3-1描述某超市銷售數(shù)據(jù)的部分處理流程。超市中有若干臺(tái)收款機(jī)和若干名收款員。這里,我們把一個(gè)收款員開始使用一臺(tái)收款機(jī)到離開這臺(tái)收款機(jī)稱為該收款員的一次作業(yè)。作業(yè)開始時(shí),收款員先在收款機(jī)上輸入收款員號(hào)和作業(yè)前金額。作業(yè)前金額是為了銷售時(shí)的找零而在作業(yè)前預(yù)先放入錢柜的金額數(shù)。作業(yè)結(jié)束時(shí),收款員要打開錢柜,取走全部現(xiàn)金,并把這些現(xiàn)金的金額數(shù)(稱為作業(yè)后金額)輸入收款機(jī)。當(dāng)作業(yè)前金額+本次作業(yè)售貨總金額-本次作業(yè)退貨總金額≠作業(yè)后金額時(shí),表示這次作業(yè)存在金額差錯(cuò)。本流程圖已作簡(jiǎn)化,并作以下假定;該超市只有現(xiàn)金交易(不用信用卡和禮券);一個(gè)收款員因某種原因(如吃飯)在一天中可以有多個(gè)作業(yè);銷售方式只有售貨和退貨兩種。整個(gè)超市分成若干部門(如食品部、服裝部),系統(tǒng)按部門統(tǒng)計(jì)一個(gè)月中各類貨物的銷售數(shù)量和金額,最后根據(jù)月銷售計(jì)劃文件分析各部門完成銷售計(jì)劃的情況。系統(tǒng)還統(tǒng)計(jì)每個(gè)收款員的差錯(cuò)情況和退貨情況。圖中處理4和處理8每月的最后一天執(zhí)行一次(營(yíng)業(yè)結(jié)束后),其他處理每天執(zhí)行一次。圖中部分?jǐn)?shù)據(jù)、文件的記錄格式如下:日銷售數(shù)據(jù):收款機(jī)號(hào)+收款員號(hào)+作業(yè)前金額+{(售貨標(biāo)記|退貨標(biāo)記)+貨號(hào)+數(shù)量+單價(jià)+金額}+作業(yè)后金額日銷售文件記錄:(作業(yè)開始標(biāo)記+收款機(jī)號(hào)+收款員號(hào)+作業(yè)前金額)|((售貨標(biāo)記|退貨標(biāo)記)+貨號(hào)+數(shù)量+金額)|(作業(yè)結(jié)束標(biāo)記+收款機(jī)號(hào)+收款員號(hào)+作業(yè)后金額)部門目銷售文件記錄:部門號(hào)+(售貨標(biāo)記|退貨標(biāo)記)+貨號(hào)+數(shù)量+金額部門月銷售計(jì)劃文件記錄:部門號(hào)+月計(jì)劃金額收款員差錯(cuò)月報(bào):月份+收款員號(hào)+差錯(cuò)作業(yè)數(shù)+差錯(cuò)總金額收款員退貨月報(bào):月份+收款員號(hào)+退貨次數(shù)+退貨總金額其中{w}表示w重復(fù)出現(xiàn)多次;a|b表示a或b;a+b表示a與b。7、分別寫出收款員日銷售文件、商品文件、部門日銷售匯總文件至少應(yīng)包含哪些數(shù)據(jù)項(xiàng)。標(biāo)準(zhǔn)答案:收款員日銷售文件:收款員號(hào)+差錯(cuò)作業(yè)數(shù)+差錯(cuò)金額+退貨次數(shù)+退貨金額商品文件:貨號(hào)+部門號(hào)+單價(jià)部門日銷售匯總文件:部門號(hào)+貨號(hào)+銷售數(shù)量+銷售總金額知識(shí)點(diǎn)解析:暫無解析8、“處理1”能檢查出日銷售數(shù)據(jù)中的哪些錯(cuò)誤。標(biāo)準(zhǔn)答案:存在非法字符或非法數(shù)據(jù)(如金額小于0)數(shù)量×單價(jià)≠金額貨號(hào)(或單價(jià))與商品文件中的貨號(hào)(或單價(jià))不一致知識(shí)點(diǎn)解析:暫無解析9、處理4對(duì)收款員月銷售文件作何種操作。標(biāo)準(zhǔn)答案:刪除其中的所有記錄或初始化知識(shí)點(diǎn)解析:暫無解析10、閱讀下列函數(shù)說明、圖和C代碼,回答問題[說明]假定用一個(gè)整型數(shù)組表示一個(gè)長(zhǎng)整數(shù),數(shù)組的每個(gè)元素存儲(chǔ)長(zhǎng)整數(shù)的一位數(shù)字,則實(shí)際的長(zhǎng)整數(shù)m表示為:m=a[k]×10k-2+a[k-1]×10k-3+…+a[3]×10+a[2]其中a[1]保存該長(zhǎng)整數(shù)的位數(shù),a[0]保存該長(zhǎng)整數(shù)的符號(hào):0表示正數(shù)、1表示負(fù)數(shù)。運(yùn)算時(shí)先決定符號(hào),再進(jìn)行絕對(duì)值運(yùn)算。對(duì)于絕對(duì)值相減情況,總是絕對(duì)值較大的減去絕對(duì)值較小的,以避免出現(xiàn)不夠減情況。注意,不考慮溢出情況,即數(shù)組足夠大。[函數(shù)]intcmp(int*LA,int*LB);/*比較長(zhǎng)整數(shù)LA與LB的絕對(duì)值大小*//*若LA絕對(duì)值較大返回正值,LA較小返回負(fù)值,相等則返回0*/intADD(int*LA,int*LB,int*LC)/*計(jì)算長(zhǎng)整數(shù)LA與LB的和,結(jié)果存儲(chǔ)于LC中*//*注意:正數(shù)與負(fù)數(shù)的和相當(dāng)于正數(shù)與負(fù)數(shù)絕對(duì)值的差*//*數(shù)據(jù)有誤返回0,正常返回1*/{if(LA==NULL||LB==NULL||LC==NULL)return0;int*pA,*pB,i,N,carry,flag;flag=LA[0]+LB[0];switch(flag){/*根據(jù)參與運(yùn)算的兩個(gè)數(shù)的符號(hào)進(jìn)行不同的操作*/case0:case2:Lc[0]=L
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 第19課資本主義國(guó)家的新變化 教學(xué)設(shè)計(jì) -2023-2024學(xué)年高一統(tǒng)編版2019必修中外歷史綱要下冊(cè)
- 2025年廣西金融職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫審定版
- 二零二五年度桉樹木材市場(chǎng)分析與價(jià)格預(yù)測(cè)合同
- 二零二五年度房改房買賣合同登記手續(xù)辦理
- 二零二五年度文學(xué)劇本創(chuàng)作與旅游文化合作框架協(xié)議
- 2025年度針對(duì)孩子上學(xué)需求的租賃房產(chǎn)合同
- 2024-2025學(xué)年外研版九年級(jí)英語上冊(cè)教學(xué)設(shè)計(jì)
- 2025年黑龍江農(nóng)業(yè)經(jīng)濟(jì)職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫及答案一套
- 二零二五年度礦產(chǎn)資源買賣中介傭金支付合同范本
- 第五章 實(shí)驗(yàn)活動(dòng)5 不同價(jià)態(tài)含硫物質(zhì)的轉(zhuǎn)化教學(xué)設(shè)計(jì)-2023-2024學(xué)年高中化學(xué)人教版2019必修第二冊(cè)
- 鋼筋工工藝與實(shí)習(xí)(第二版)課件匯總?cè)珪娮咏贪竿暾嬲n件最全幻燈片(最新)課件電子教案幻燈片
- 煤礦從業(yè)人員考試題庫全答案(word版)
- 洞頂回填技術(shù)交底
- 最簡(jiǎn)易的帕累托圖制作方法簡(jiǎn)介PPT通用課件
- 城市軌道交通應(yīng)急處理課程標(biāo)準(zhǔn)
- 第18課 罐和壺(一)
- 初二下分式混合計(jì)算練習(xí)1(附答案)
- (完整版)振幅調(diào)制與解調(diào)習(xí)題及其解答
- 抗震支架施工安裝合同
- JJG 657-2019 呼出氣體酒精含量檢測(cè)儀 檢定規(guī)程(高清版)
- 政法書記在全縣公安工作會(huì)議上的講話
評(píng)論
0/150
提交評(píng)論