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