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

下載本文檔

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

文檔簡(jiǎn)介

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

1.試題一(共15分)閱讀以下說明和圖,回答問題1至問題3,將解答填入答題紙的對(duì)應(yīng)欄內(nèi)。[說明]某房屋租賃公司欲建立一個(gè)房屋租賃服務(wù)系統(tǒng),統(tǒng)一管理房主和租賃者的信息,從而快速地提供租賃服務(wù)。該系統(tǒng)具有以下功能:1.登記房主信息。對(duì)于每名房主,系統(tǒng)需登記其姓名、住址和聯(lián)系電話,并將這些信息寫入房主信息文件。2.登記房屋信息。所有在系統(tǒng)中登記的房屋都有一個(gè)唯一的識(shí)別號(hào)(對(duì)于新增加的房屋,系統(tǒng)會(huì)自動(dòng)為其分配一個(gè)識(shí)別號(hào))。除此之外,還需登記該房屋的地址、房型(如平房、帶陽臺(tái)的樓房、獨(dú)立式住宅等)、最多能夠容納的房客數(shù)、租金及房屋狀態(tài)(待租賃、已出租)。這些信息都保存在房屋信息文件中。一名房主可以在系統(tǒng)中登記多個(gè)待租賃的房屋。3.登記租賃者信息。所有想通過該系統(tǒng)租賃房屋的租賃者,必須首先在系統(tǒng)中登記個(gè)人信息,包括:姓名、住址、電話號(hào)碼、出生年月和性別。這些信息都保存在租賃者信息文件中。4.租賃房屋。已經(jīng)登記在系統(tǒng)中的租賃者,可以得到一份系統(tǒng)提供的待租賃房屋列表。一旦租賃者從中找到合適的房屋,就可以提出看房請(qǐng)求。系統(tǒng)會(huì)安排租賃者與房主見面。對(duì)于每次看房,系統(tǒng)會(huì)生成一條看房記錄并將其寫入看房記錄文件中。5.收取手續(xù)費(fèi)。房主登記完房屋后,系統(tǒng)會(huì)生成一份費(fèi)用單,房主根據(jù)費(fèi)用單交納相應(yīng)的費(fèi)用。6.變更房屋狀態(tài)。當(dāng)租賃者與房主達(dá)成租房或退房協(xié)議后,房主向系統(tǒng)提交變更房屋狀態(tài)的請(qǐng)求。系統(tǒng)將根據(jù)房主的請(qǐng)求,修改房屋信息文件。數(shù)據(jù)流圖1-1和1-2分別給出了該系統(tǒng)的頂層數(shù)據(jù)流圖和0層數(shù)據(jù)流圖。[問題1](4分)使用[說明]中給出的詞匯,將數(shù)據(jù)流圖1-1中(1)~(4)處的數(shù)據(jù)流補(bǔ)充完整。[問題2](4分)使用[說明]中給出的詞匯,將數(shù)據(jù)流圖1-2中的(5)~(8)補(bǔ)充完整。[問題3](7分)數(shù)據(jù)流程圖1-2中缺失了三條數(shù)據(jù)流,請(qǐng)指出這三條數(shù)據(jù)流的起點(diǎn)、終點(diǎn)和數(shù)據(jù)流名稱。[15分]

2.試題二(共15分)閱讀下列說明,回答問題1至問題3,將解答填入答題紙的對(duì)應(yīng)欄內(nèi)。[說明]某醫(yī)院的門診管理系統(tǒng)實(shí)現(xiàn)了為患者提供掛號(hào)、處方藥品收費(fèi)的功能。具體的需求及設(shè)計(jì)如下:1.醫(yī)院醫(yī)師具有編號(hào),姓名,科室,職稱,出診類型和出診費(fèi)用,其中出診類型分為專家門診和普通門診,與醫(yī)師職稱無關(guān);各個(gè)醫(yī)師可以具有不同的出診費(fèi)用,與職稱和出診類型無關(guān)。2.患者首先在門診掛號(hào)處掛號(hào),選擇科室和醫(yī)師,根據(jù)選擇的醫(yī)師繳納掛號(hào)費(fèi)(醫(yī)師出診費(fèi))。收銀員為患者生成掛號(hào)單,如表2-1所示,其中,就診類型為醫(yī)師的出診類型。3.患者在醫(yī)師處就診后,憑借掛號(hào)單和醫(yī)師手寫處方到門診藥房交費(fèi)買藥。收銀員根據(jù)就診號(hào)和醫(yī)師處方中開列的藥品信息,查詢藥品庫(如表2-2所示)并生成門診處方單(如表2-3所示)。4.由于藥品價(jià)格會(huì)發(fā)生變化,因此,門診管理系統(tǒng)必須記錄處方單上藥品的單價(jià)。根據(jù)需求階段收集的信息,設(shè)計(jì)的實(shí)體聯(lián)系圖和關(guān)系模式(不完整)如下所示:1.實(shí)體聯(lián)系圖2.關(guān)系模式掛號(hào)單(就診號(hào),病患姓名,醫(yī)師編號(hào),時(shí)間,(5))收銀員(編號(hào),姓名,級(jí)別)醫(yī)師(編號(hào),姓名,科室,職稱,出診類型,出診費(fèi)用)門診處方((6),收銀員,時(shí)間)處方明細(xì)(就診號(hào),(7))藥品庫(藥品編碼,藥品名稱,(8))[問題1](4分)根據(jù)問題描述,填寫2-1實(shí)體聯(lián)系圖中(1)(4)處聯(lián)系的類型。[問題2](4分)圖2-1中還缺少幾個(gè)聯(lián)系?請(qǐng)指出每個(gè)聯(lián)系兩端的實(shí)體名,格式如下:實(shí)體1:實(shí)體2例如,收銀員與門診處方之間存在聯(lián)系,表示為:收銀員:門診處方或門診處方:收銀員[問題3](7分)根據(jù)實(shí)體聯(lián)系圖2-1,填寫掛號(hào)單、門診處方、處方明細(xì)和藥品庫關(guān)系模式中的空(5)~(8)處,并指出掛號(hào)單、門診處方和處方明細(xì)關(guān)系模式的主鍵。[15分]

3.試題三(共15分)閱讀下列說明和圖,回答問題1至問題3,將解答填入答題紙的對(duì)應(yīng)欄內(nèi)。[說明]某圖書管理系統(tǒng)的主要功能如下:1.圖書管理系統(tǒng)的資源目錄中記錄著所有可供讀者借閱的資源,每項(xiàng)資源都有一個(gè)唯一的索引號(hào)。系統(tǒng)需登記每項(xiàng)資源的名稱、出版時(shí)間和資源狀態(tài)(可借閱或已借出)。2.資源可以分為兩類:圖書和唱片。對(duì)于圖書,系統(tǒng)還需登記和頁數(shù);對(duì)于唱片,還需登記演唱者和介質(zhì)類型(CD或者磁帶)。3.讀者信息保存在圖書管理系統(tǒng)的讀者信息數(shù)據(jù)庫中,記錄的信息包括:讀者的識(shí)別碼和讀者姓名。系統(tǒng)為每個(gè)讀者創(chuàng)建了一個(gè)借書記錄文件,用來保存讀者所借資源的相關(guān)信息?,F(xiàn)采用面向?qū)ο蠓椒ㄩ_發(fā)該圖書管理系統(tǒng)。識(shí)別類是面向?qū)ο蠓治龅牡谝徊?。比較常用的識(shí)別類的方法是尋找問題描述中的名詞,再根據(jù)相關(guān)規(guī)則從這些名詞中刪除不可能成為類的名詞,最終得到構(gòu)成該系統(tǒng)的類。表3-1給出了[說明]中出現(xiàn)的所有名詞。通過對(duì)表3-1中的名詞進(jìn)行分析,最終得到了圖3-1所示的UML類圖(類的說明如表3-2所示)。[問題1](3分)表3-2所給出的類并不完整,根據(jù)[說明]和表3-1,將圖3-1中的(a)~(c)處補(bǔ)充完整。[問題2](6分)根據(jù)[說明]中的描述,給出圖3-1中的類CatalogItem以及(b)、(c)處所對(duì)應(yīng)的類的關(guān)鍵屬性(使用表3-1中給出的詞匯),其中,CatalogItem有4個(gè)關(guān)鍵屬性;(b)、(c)處對(duì)應(yīng)的類各有2個(gè)關(guān)鍵屬性。[問題3](6分)識(shí)別關(guān)聯(lián)的多重度是面向?qū)ο蠼_^程中的一個(gè)重要步驟。根據(jù)[說明]中給出的描述,完成圖3-1中的(1)(6)。[15分]

4.試題四(共15分)閱讀以下說明和圖,填補(bǔ)流程圖中的空缺,將解答填入答題紙的對(duì)應(yīng)欄內(nèi)。[說明]在一條農(nóng)村公路的一邊稀疏地分布著房子,其分布如圖4-1所示。某電信公司需要在某些位置放置蜂窩電話基站,由于基站的覆蓋范圍是6公里,因此必須使得每棟房子到某個(gè)基站的直線距離不超過6公里。為簡(jiǎn)化問題,假設(shè)所有房子在同一直線上,并且基站沿該直線放置。現(xiàn)采用貪心策略實(shí)現(xiàn)用盡可能少的基站覆蓋所有的房子。實(shí)現(xiàn)貪心算法的流程如圖4-2所示,請(qǐng)?zhí)畛淦渲锌瞻撞⒂?jì)算該算法的時(shí)間復(fù)雜度,其中:1.d[i](1≤i≤N)表示第i個(gè)房子到公路A端的距離,N表示房子的總數(shù),房子的編號(hào)按照房子到公路A端的距離從小到大進(jìn)行編號(hào)。2.s[k]表示第k(k≥1)個(gè)基站到公路A端的距離,算法結(jié)束后k的值為基站的總數(shù)。該算法的時(shí)間復(fù)雜度為(5)。[15分]

5.試題五(共15分)閱讀以下說明和C語言函數(shù),將應(yīng)填入(n)處的字句寫在答題紙的對(duì)應(yīng)欄內(nèi)。[說明]在一個(gè)分布網(wǎng)絡(luò)中,資源(石油、天然氣、電力等)可從生產(chǎn)地送往其他地方。在傳輸過程中,資源會(huì)有損耗。例如,天然氣的氣壓會(huì)減少,電壓會(huì)降低。我們將需要輸送的資源信息稱為信號(hào)。在信號(hào)從信源地送往消耗地的過程中,僅能容忍一定范圍的信號(hào)衰減,稱為容忍值。分布網(wǎng)絡(luò)可表示為一個(gè)樹型結(jié)構(gòu),如圖5-1所示。信號(hào)源是樹根,樹中的每個(gè)節(jié)點(diǎn)(除了根)表示一個(gè)可以放置放大器的子節(jié)點(diǎn),其中某些節(jié)點(diǎn)同時(shí)也是信號(hào)消耗點(diǎn),信號(hào)從一個(gè)節(jié)點(diǎn)流向其子節(jié)點(diǎn)。每個(gè)節(jié)點(diǎn)有一個(gè)d值,表示從其父節(jié)點(diǎn)到該節(jié)點(diǎn)的信號(hào)衰減量。例如,在圖5-1中,節(jié)點(diǎn)w、p、q的d值分別為2、1、3,樹根節(jié)點(diǎn)表示信號(hào)源,其d值為0。每個(gè)節(jié)點(diǎn)有一個(gè)M值,表示從該節(jié)點(diǎn)出發(fā)到其所有葉子的信號(hào)衰減量的最大值。顯然,葉子節(jié)點(diǎn)的M值為0。對(duì)于非葉子節(jié)點(diǎn)j,M(j)=max{M(k)+d(k)|k是j的孩子節(jié)點(diǎn)}。在此公式中,要計(jì)算節(jié)點(diǎn)的M值,必須先算出其所有子節(jié)點(diǎn)的M值。在計(jì)算M值的過程中,對(duì)于某個(gè)節(jié)點(diǎn)i,其有一個(gè)子節(jié)點(diǎn)k滿足d(k)+M(k)大于容忍值,則應(yīng)在k處放置放大器,否則,從節(jié)點(diǎn)i到某葉子節(jié)點(diǎn)的信號(hào)衰減量會(huì)超過容忍值,使得到達(dá)該葉子節(jié)點(diǎn)時(shí)信號(hào)不可用,而在節(jié)點(diǎn)i處放置放大器并不能解決到達(dá)葉子節(jié)點(diǎn)的信號(hào)衰減問題。例如,在圖5-1中,從節(jié)點(diǎn)p到其所有葉子節(jié)點(diǎn)的最大衰減值為4。若容忍值為3,則必須在s處放置信號(hào)放大器,這樣可使得節(jié)點(diǎn)p的M值為2。同樣,需要在節(jié)點(diǎn)q、v處放置信號(hào)放大器,如圖5-2陰影節(jié)點(diǎn)所示。若在某節(jié)點(diǎn)放置了信號(hào)放大器,則從該節(jié)點(diǎn)輸出的信號(hào)與信號(hào)源輸出的信號(hào)等價(jià)。函數(shù)placeBoosters(TreeNode*root)的功能是:對(duì)于給定樹型分布網(wǎng)絡(luò)中各個(gè)節(jié)點(diǎn),計(jì)算其信號(hào)衰減量的最大值,并確定應(yīng)在樹中的哪些節(jié)點(diǎn)放置信號(hào)放大器。全局變量Tolerance保存信號(hào)衰減容忍值。樹的節(jié)點(diǎn)類型定義如下:typedefstructTreeNode{intid;/*當(dāng)前節(jié)點(diǎn)的識(shí)別號(hào)*/intChildNum;/*當(dāng)前節(jié)點(diǎn)的子節(jié)點(diǎn)數(shù)目*/intd;/*父節(jié)點(diǎn)到當(dāng)前節(jié)點(diǎn)的信號(hào)衰減值*/structTreeNode**childptr;/*向量,存放當(dāng)前節(jié)點(diǎn)到其所有子節(jié)點(diǎn)的指針*/intM;/*當(dāng)前節(jié)點(diǎn)到其所有子節(jié)點(diǎn)的信號(hào)衰減值中的最大值*/boolboost;/*是否在當(dāng)前節(jié)點(diǎn)放置信號(hào)放大器的標(biāo)志*/}TreeNode;[C語言函數(shù)]voidplaceBoosters(TreeNode*root){/*計(jì)算root所指節(jié)點(diǎn)處的衰減量,如果衰減量超出了容忍值,則放置放大器*/TreeNode*p;inti,degradation;if((1)){degradation=0;root—M=0;i=0;if(I=root—ChildNum)return;p=(2);for(;iroot—ChildNump;i++,p=(3)){p—M=0;(4);if(p—d+p—MTolerance){/*在p所指節(jié)點(diǎn)中放置信號(hào)放大器*/p—boost=true;p—M=0;}if(p—d+p—Mdegradation)degradation=p—d+p—M;}root—M=(5);}}[15分]

6.試題六(共15分)閱讀下列說明和C++代碼,將應(yīng)填入(n)處的字句寫在答題紙的對(duì)應(yīng)欄內(nèi)。[說明]某游戲公司現(xiàn)欲開發(fā)一款面向兒童的模擬游戲,該游戲主要模擬現(xiàn)實(shí)世界中各種鴨子的發(fā)聲特征、飛行特征和外觀特征。游戲需要模擬的鴨子種類及其特征如表6-1所示:表6-1為支持將來能夠模擬更多種類鴨子的特征,采用策略設(shè)計(jì)模式(Strategy)設(shè)計(jì)的類圖如圖6-1所示:分別描述發(fā)出“嘎嘎”聲的行為、發(fā)出橡皮與空氣摩擦聲的行為與不發(fā)聲的行為。請(qǐng)?zhí)钛a(bǔ)以下代碼中的空缺。[C++代碼]#includeiostreamusingnamespace(1);classFlyBehavior{public:(2)fly()=0;};classQuackBehavior{public:(3)quack()=0;};classFlyWithWings:publicFlyBehavior{public:voidfly(){cout〈〈“使用翅膀飛行!”〉〉endl;}};classFlyNoWay:publicFlyBehavior{public:voidfly(){cout“不能飛行!”endl;}};classQuack:publicQuackBehavior{public:voidquack(){“cout發(fā)出\'嘎嘎\'聲!”endl;}};classSqueak:publicQuackBehavior{public:voidquack(){cout〈〈“發(fā)出空氣與橡皮摩擦聲!”〉〉endl;}};classQuackNoWay:publicQuackBehavior{public:voidquack(){cout〈〈“不能發(fā)聲!”〉〉endl;}};classDuck{protected:FlyBehavior*(4);QuackBehavior*(5);public:voidfly(){(6);}voidquack(){(7);};virtualvoiddisplay()=0;};classRubberDuck:publicDuck{public:RubberDuck(){flyBehavior=new(8);quackBehavior=new(9);}RubberDuck(){if(!flyBehavior)deleteflyBehavior;if(!quackBehavior)deletequackBehavior;}voiddisplay(){/*此處省略顯示橡皮鴨的代碼*/}};//其它代碼省略[15分]

7.試題七(共15分)閱讀下列說明和Java代碼,將應(yīng)填入(n)處的字句寫在答題紙的對(duì)應(yīng)欄內(nèi)。[說明]某游戲公司現(xiàn)欲開發(fā)一款面向兒童的模游戲,該游戲主要模擬現(xiàn)實(shí)世界中各種鴨子的發(fā)聲特征、飛行特征和外觀特征。游戲需要模擬的鴨子類及其特征如表7-1所示:表7-1其中,Duck為抽象類,描述了抽象的鴨子,而類RubberDuck、MallardDuck、CottonDuck和RedHeadDuck分別描述具體的鴨子種類,方法fly()、quack()和display()分別表示不同種類的鴨子都具有飛行特征、發(fā)聲特征和外觀特征;類FlyBehavior與QuackBehavior為抽象類,分別用于表示抽象的飛行行為與發(fā)聲行為;類FlyNoWay與FlyWithWings分別描述不能飛行的行為和用翅膀飛行的行為;類Quack、Squeak與QuackNoWay為支持將來能夠模擬更多種類鴨子的特征,采用策略設(shè)計(jì)模式(Strategy)設(shè)計(jì)的類圖如圖7-1所示:其中,Duck為抽象類,描述了抽象的鴨子,而類RubberDuck、MallardDuck、CottonDuck和RedHeadDuck分別描述具體的鴨子種類,方法fly()、quack()和display()分別表示不同種類的鴨子都具有飛行特征、發(fā)聲特征和外觀特征;接口FlyBehavior與QuackBehavior分別用于表示抽象的飛行行為與發(fā)聲行為;類FlyNoWay與FlyWithWings分別描述不能飛行的行為和用翅膀飛行的行為;類Quack、Squeak與QuackNoWay分別描述發(fā)出“嘎嘎”聲的行為、發(fā)出橡皮與空氣摩擦聲的行與不發(fā)聲的行為。請(qǐng)?zhí)钛a(bǔ)以下代碼中的空缺。[Java代碼](1)FlyBehavior{publicvoidfly();};(2)QuackBehavior{publicvoidquack();};classFlyWithWingsimplementsFlyBehavior{publicvoidfly(){System.out.println(“使用

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論