2022年度軟件設(shè)計師下午試題_第1頁
2022年度軟件設(shè)計師下午試題_第2頁
2022年度軟件設(shè)計師下午試題_第3頁
2022年度軟件設(shè)計師下午試題_第4頁
2022年度軟件設(shè)計師下午試題_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費閱讀

付費下載

下載本文檔

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

文檔簡介

精品文檔-下載后可編輯年度軟件設(shè)計師下午試題2022年度軟件設(shè)計師下午試題

1.試題一閱讀下列算法說明和流程圖1,回答問題1至問題3,將解答填入答題紙的對應(yīng)欄內(nèi)。[算法說明]某旅館共有N間客房。每間客房的房間號、房間等級、床位數(shù)以及占用狀態(tài)分別存放在數(shù)組ROOM、RANK、NBED和STATUS中。房間等級值為1、2或3。房間的狀態(tài)值為0(空閑)或l(占用)。客房是以房間(不是床位)為單位出租的。本算法根據(jù)幾個散客的要求預(yù)訂一間空房。程序的輸入為:人數(shù)M,房間等級要求R(R=0表示任意等級都可以)。程序的輸出為;所有可供選擇的房間號。流程圖1描述了該算法。[問題1]假設(shè)當(dāng)前該旅館各個房間的情況如下表:序號iROOMRANKNBEDSTATUS11013402102341320223042022415301160當(dāng)輸入M=4,R=0時,該算法的輸出是什么?[問題2]如果等級為r的房間每人每天的住宿費為RATE(r),RATE為數(shù)組。為使該算法在輸出每個候選的房間號RM(J)后,再輸出這批散客每天所需的總住宿費DAYRENT(J),流程圖1的β所指框中的最后處應(yīng)增加什么處理?[問題3]如果限制該算法最多輸出K個可供選擇的房間號,則在流程圖1的α所指的判斷框應(yīng)改成什么處理?[15分]

2.試題二閱讀下列說明,回答問題1至問題4,將解答填入答題紙的對應(yīng)欄內(nèi)。[說明]甲公司的經(jīng)營銷售業(yè)務(wù)目前是手工處理的,隨著業(yè)務(wù)量的增長,準(zhǔn)備采用關(guān)系數(shù)據(jù)庫對銷售信息進(jìn)行管理。經(jīng)銷業(yè)務(wù)的手工處理主要涉及三種表:訂單、客戶表和產(chǎn)品表。為了用計算機(jī)管理銷售信息,甲公司提出應(yīng)達(dá)到以下要求:產(chǎn)品的單價發(fā)生變化時,應(yīng)及時修改產(chǎn)品表中的單價數(shù)據(jù)。客戶購貨計價采用訂貨時的單價。訂貨后,即使單價發(fā)生變化,計算用的單價也不變。在設(shè)計數(shù)據(jù)庫時,經(jīng)銷部的王先生建立了以下數(shù)據(jù)模型:其中,方框表示實體,單向箭頭表示1對多的聯(lián)系,雙向箭頭表示多對多的聯(lián)系。由于上述模型對建立關(guān)系數(shù)據(jù)庫是不合適的,因此王先生又修改了數(shù)據(jù)模型,并設(shè)計了如下幾個關(guān)系(帶下劃線的數(shù)據(jù)項是關(guān)鍵項,最后一個關(guān)系中沒有指出關(guān)鍵項):Customer(CustomerNo(關(guān)鍵項),CustomerName,Address,Phone)Product(ProductNo(關(guān)鍵項),ProductName,UnitPrice)Order(OrderNo(關(guān)鍵項),CustomerNo,Date)OrderDetail(OrderNo,ProductNo,Quantity)[問題1]請按[說明]中的要求畫出修改后的數(shù)據(jù)模型。[問題2](1)[說明]中的幾個關(guān)系仍無法實現(xiàn)甲公司的要求,為什么?(2)需要在哪個關(guān)系中增加什么數(shù)據(jù)項才能實現(xiàn)這個要求?[問題3]寫出OrderDetail中的關(guān)鍵項。[問題4]以下SQL語句用于查詢沒有訂購產(chǎn)品代碼為“1K10”的產(chǎn)品的所有客戶名。請?zhí)钛a(bǔ)其中的空缺。SELECTCustomerNameFROMCustomer___(1)____WHERE___(2)___(SELECT*FROMOrderDetailB,OrderCWHEREB.ProductNo=C.ProductNoANDB.ProductNo='1KIO'ANDC.CustomerNo=A.CustomerNo)[15分]

3.試題三閱讀下列說明和有關(guān)的圖,回答問題1至問題4,將解答填入答題紙的對應(yīng)欄內(nèi)。[說明]某制造企業(yè)的物料出入庫管理的工作流程分別敘述如下:1.出庫工作流程①領(lǐng)料人提交領(lǐng)料單(每一種物料有一張領(lǐng)料單);②倉庫保管員根據(jù)領(lǐng)料計劃單檢驗該領(lǐng)料單是否有效;⑨若經(jīng)檢驗沒有相應(yīng)的領(lǐng)料計劃,則通知領(lǐng)料人該領(lǐng)料單無效;④若領(lǐng)料單有效,倉庫保管員根據(jù)領(lǐng)料單上的物料代碼核對是否有足夠的庫存;⑤若沒有足夠的庫存,倉庫保管員向領(lǐng)料人發(fā)缺貨單;⑥若有足夠的庫存,倉庫保管員在領(lǐng)料單上簽字,并登記出庫單,修改物料主文件中的現(xiàn)有庫存數(shù);相應(yīng)的物料出庫,物料清單交領(lǐng)料人。2.入庫工作流程①采購員提交入庫申請單(每一種物料有一張入庫申請單);②倉庫保管員根據(jù)采購計劃單驗收入庫申請單;⑧若驗收發(fā)現(xiàn)沒有相應(yīng)的采購計劃,則倉庫保管員向采購員發(fā)無效申請單:④若驗收合格,則倉庫保管員向檢驗員申請物料檢驗;檢驗員根據(jù)檢驗結(jié)果填寫物料檢驗單。⑤如果物料或供貨方不合格,則向采購員發(fā)出退貨單;⑥如果檢驗合格,則倉庫保管員登記入庫單,修改物料主文件中的現(xiàn)有庫存數(shù),相應(yīng)的物料入庫。為便于及時了解庫存情況、核查出入庫情況,該企業(yè)決定將上述人工流程由計算機(jī)來實現(xiàn)。在設(shè)計該系統(tǒng)時,采用了兩種方法:結(jié)構(gòu)化方法和面向?qū)ο蠓椒āD3.1給出了物料出入庫系統(tǒng)的數(shù)據(jù)流圖,圖中的數(shù)據(jù)流并沒有畫全,需要考生填補(bǔ)。圖3.2給出了采用面向?qū)ο蠓椒ㄋJ(rèn)定出的類。[問題1]圖3.1中缺少了那些數(shù)據(jù)流?請指明每條數(shù)據(jù)流的名稱、起點和終點。[問題2]給出“領(lǐng)料單”和“入庫申請單”這兩個類至少應(yīng)具有的屬性。[問題3]為建立功能完善的庫存管理系統(tǒng),除了查詢、統(tǒng)計、報表輸出功能外,還應(yīng)具有哪些對提高企業(yè)效益至關(guān)重要的功能?[問題4]用面向?qū)ο蠓椒ㄔO(shè)計的類中,有一些類的對象是需要持久存儲的,這樣的類一般需要映射到關(guān)系數(shù)據(jù)庫模式中。請指出圖3.2中哪些類需要做這樣的映射。[15分]

4.試題四在COMET型計算機(jī)上可以使用試卷上所附的CASL匯編語言,閱讀程序說明和CASL程序,把應(yīng)填入___(n)___處的字句寫在答卷的對應(yīng)欄內(nèi)。[程序4說明]本程序統(tǒng)計出考試成績在80分以上(含80分)、60分到79分、低于60分的學(xué)生人數(shù),并將統(tǒng)計結(jié)果存放在以CHJG為首地址的連續(xù)三個內(nèi)存單元中。學(xué)生的成績數(shù)據(jù)連續(xù)存放在以XSCH為首地址的內(nèi)存空間中,以數(shù)據(jù)-1作為結(jié)束標(biāo)志。[程序4]STARTBEGINXSCHDC90;……;此處的數(shù)據(jù)未完全列出;……DC-1CHJBDC80DC60CHJGDC0DC0DC0ONEDC1BEGIN___(1)___LEAGR1,0;給GR1賦初值0NEXTLDGR2,XSCH,GR1;把一個學(xué)生成績讀入GR2LEAGR0,0,GR2;把GR2的內(nèi)容讀入GR0JMIEXIT如果GR2中的數(shù)小于0,LEAGR2,0;給GR2賦初值0CPAGR0,CHJB;比較GR0與CHJB的大小,由于CHJB=80,所以此處所做的工作是看成績是否大于等于80分JPZGOON;如果成績大于等于80分則跳到GOON繼續(xù)執(zhí)行____(2)____LEAGR2,1,GR2;GR2+1-GR2,____(3)____CPAGR0,CHJB,GR2;當(dāng)成績小于80分時,再看成績是不是大于等于60分JPZGOON;如果成績大于等于60分則跳到GOON繼續(xù)執(zhí)行LEAGR2,1,GR2;GR2+1-GR2GOON___(4)____LDGR0,CHJG,GR2;把當(dāng)前成績對應(yīng)的統(tǒng)計結(jié)果取出。(CHJG+0)存的是80分以上的人數(shù),(CHJG+1)存的是60分以上的人數(shù),(CHJG+,2)存的是60分以下的人數(shù)。___(5)____ADDGR0,ONE;把取出的統(tǒng)計人數(shù)加1,即把當(dāng)前成績統(tǒng)計進(jìn)去。STGR0,CHJG,GR2;把新統(tǒng)計結(jié)果存入。LEAGR1,1,GR1;GR1+1-GR1;指針下移一條記錄,即使得(LDGR2,XSCH,GR1)取下一個成績。JMPNEXT;無條件轉(zhuǎn)移至NEXTEXITEXITEND[15分]

5.試題五閱讀以下預(yù)備知識、函數(shù)說明和C代碼,將應(yīng)填入__(n)__處的字句寫在答題紙的對應(yīng)欄內(nèi)。[預(yù)備知識]①對給定的字符集合及相應(yīng)的權(quán)值,采用哈夫曼算法構(gòu)造最優(yōu)二叉樹,并用結(jié)構(gòu)數(shù)組存儲最優(yōu)二叉樹。例如,給定字符集合結(jié)構(gòu)數(shù)組Ht的類型定義如下:#defineMAXLEAFNUM20structnode{charch;/*掃當(dāng)前結(jié)點表示的字符,對于非葉子結(jié)點,此域不用*/intweight;/*當(dāng)前結(jié)點的權(quán)值*/intparent;/*當(dāng)前結(jié)點的父結(jié)點的下標(biāo),為0時表示無父結(jié)點*/intlchild,rchild;/*當(dāng)前結(jié)點的左、右孩子結(jié)點的下標(biāo),為0時表示無對應(yīng)的孩子結(jié)點*/}Ht[2*MAXLEAFNUM];②用'0'或'1'標(biāo)識最優(yōu)二叉樹中分支的規(guī)則是:從一個結(jié)點進(jìn)入其左(右)孩子結(jié)點,就用'0'('1')標(biāo)識該分支(示例見上圖)。③若用上述規(guī)則標(biāo)識最優(yōu)二叉樹的每條分支后,從根結(jié)點開始到葉子結(jié)點為止,按經(jīng)過分支的次序,將相應(yīng)標(biāo)識依次排列,可得到由‘0’、‘1’組成的一個序列,稱此序列為該葉子結(jié)點的前綴編碼。例如上圖所示的葉子結(jié)點a、b、c、d的前綴編碼分別是110、0、111、10。[函數(shù)5.1說明]函數(shù)voidLeafCode(introot,intn)的功能是:采用非遞歸方法,遍歷最優(yōu)二叉樹的全部葉子結(jié)點,為所有的葉子結(jié)點構(gòu)造前綴編碼。其中形參root為最優(yōu)二叉樹的根結(jié)點下標(biāo);形參n為葉子結(jié)點個數(shù)。在構(gòu)造過程中,將Ht[p].weight域用作被遍歷結(jié)點的遍歷狀態(tài)標(biāo)志。[函數(shù)5.1]char**HC;voidLeafCode(introot,intn){/*為最優(yōu)二叉樹中的n個葉子結(jié)點構(gòu)造前綴編碼,root是樹的根結(jié)點下標(biāo)*/inti,p=root,cdlen=0;charcode[20];Hc=(char**)malloc((n+1)*sizeof(char*));/*申請字符指針數(shù)組*/for(i=1;i=p;++i)Ht[i].weight=0;/*遍歷最優(yōu)二叉樹時用作被遍歷結(jié)點的狀態(tài)標(biāo)志*/while(p){/*以非遞歸方法遍歷最優(yōu)二叉樹,求樹中每個葉子結(jié)點的編碼*/if(Ht[p].weight==0){/*向左*/Ht[p].weight=1;if(Ht[p].lchild!=0){p=Ht[p].lchild;code[cdlen++]='0';}elseif(Ht[p].rchild==0){/*若是葉子結(jié)點,則保存其前綴編碼*/Hc[p]=(char*)malloc((cdlen+1)*sizeof(char));___(1)___;strcpy(Hc[p],code);}}elseif(Ht[p].weight==1){/*向右*/Ht[p].weight=2;if(Ht[p].rchild!=0){p=Ht[p].rchild;code[cdlen++]='1';}}else{/*Ht[p].weight==2,回退*/Ht[p].weight=0;p=__(2)__;___(3)___;/*退回父結(jié)點*/}}/*while結(jié)束*/}[函數(shù)5.2說明]函數(shù)voidDecode(char*buff,introot)的功能是:將前綴編碼序列翻譯成葉子結(jié)點的字符序列,并輸出。其中形參root為最優(yōu)二叉樹的根結(jié)點下標(biāo);形參buff指向前綴編碼序列。[函數(shù)5.2]voidDecode(char*buff,introot){intpre=root,p;while(*buff!='\0'){p=root;while(p!=0){/*存在下標(biāo)為p的結(jié)點*/pre=p;if(__(4)___)p=Ht[p].lchild;/*進(jìn)入左子樹*/elsep=Ht[p].rchild:/*進(jìn)入右子樹*/buff++;/*指向前綴編碼序列的下一個字符*/}___(5)___;printf("%c",Ht[pre].ch);}}[15分]

6.試題六閱讀以下說明和C++代碼,將應(yīng)填入__(n)__處的字句寫在答題紙的對應(yīng)欄內(nèi)。[說明]本題將有向網(wǎng)(帶權(quán)有向圖)定義為類AdjacencyWDigraph。類中的數(shù)據(jù)成員n表示有向網(wǎng)中的頂點數(shù);a為帶權(quán)鄰接矩陣,用于存儲有向網(wǎng)中每一對頂點間弧上的權(quán)值;c為二維數(shù)組,存儲有向網(wǎng)中每一對頂點間的最短路徑長度;kay為二維數(shù)組,存儲最短路徑,kay[i][j]=k表示頂點i到達(dá)頂點j的最短路徑必須經(jīng)過頂點k.類中的主要成員函數(shù)有:Input():輸入有向網(wǎng)的頂點數(shù)、各條弧及權(quán)值,建立帶權(quán)鄰接矩陣a。若頂點i到頂點j有弧,則a[i][j]取弧上的權(quán)值,否則a[i][j]的值取NoEdge。AllPairs():用弗洛伊德(Floyd)算法求有向網(wǎng)中每一對頂點間的最短路徑長度。OutShortestPath(inti,intj):計算頂點i到頂點j的最短路徑。outputPath(inti,intj):輸出頂點i到頂點j的最短路徑上的頂點。Floyd算法的基本思想是遞推地產(chǎn)生一個矩陣序列C0,C1,C2...,Cn,其中C0是已知的帶權(quán)鄰接矩陣a,Ck(i,j)(0≤ij#defineNoEdge10000//當(dāng)兩個頂點之間沒有邊相連時,在鄰接矩陣中用NoEdge表示voidMake2DArray(int**x,introws,intcols);classAdjacencyWDigraph{private:intn;//有向網(wǎng)中的頂點數(shù)目int**a;//存儲頂點間弧上的權(quán)值int**c;//存儲計算出的最短路徑長度int**kay;//存儲求出的最短路徑public:intVertices()const{returnn;}voidAllPairs();voidInput();//輸入有向網(wǎng)的頂點數(shù)、各條弧及權(quán)值,建立鄰接矩陣avoidOutShortestPath(inti,intj);//計算頂點i到j(luò)的最短路徑(試卷中未列出)~AdjacencyWDigraph();//析構(gòu)函數(shù)(試卷中未列出)private:voidoutputPath(inti,intj);};voidAdjacencyWDigraph::AllPairs(){inti,j,k,t1,t2,t3;for(i=1;i=n;i++)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!=NoEdget2!=NoEdge(t3==NoEdge||t1+t2t3)){c[i][j]=___(2)___;kay[i][j]=___(3)___;}}//for}//f

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論