2017年下半年(下午)《軟件設(shè)計(jì)師》真題
《2017年下半年(下午)《軟件設(shè)計(jì)師》真題》由會(huì)員分享,可在線閱讀,更多相關(guān)《2017年下半年(下午)《軟件設(shè)計(jì)師》真題(7頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、2017年下半年(下午)《軟件設(shè)計(jì)師》真題 注意:圖片可根據(jù)實(shí)際需要調(diào)整大小 卷面總分:6分 答題時(shí)間:240分鐘 試卷題量:6題 練習(xí)次數(shù):0次 問(wèn)答題 (共6題,共6分) 1.某大學(xué)擬開(kāi)發(fā)一個(gè)用于管理學(xué)術(shù)出版物(Publication)的數(shù)字圖書(shū)館系統(tǒng),用戶可以從該系統(tǒng)查詢或下載已發(fā)表的學(xué)術(shù)出版物。系統(tǒng)的主要功能如下: 1.登錄系統(tǒng)。系統(tǒng)的用戶(User)僅限于該大學(xué)的學(xué)生(Student)、教師(Faculty)和其他工作人員(Staff)。在訪問(wèn)系統(tǒng)之前,用戶必須使用其校園賬戶和密碼登錄系統(tǒng)。
2、 2.查詢某位作者(Author)的所有出版物。系統(tǒng)中保存了會(huì)議文章(Conf Paper)、期刊文章(JournalArticle)和校內(nèi)技術(shù)報(bào)告(TechReport)等學(xué)術(shù)出版物的信息,如題目、作者以及出版年份等。除此之外,系統(tǒng)還存儲(chǔ)了不同類(lèi)型出版物的一些特有信息: (1)對(duì)于會(huì)議文章,系統(tǒng)還記錄了會(huì)議名稱(chēng)、召開(kāi)時(shí)間以及召開(kāi)地點(diǎn); (2)對(duì)于期刊文章,系統(tǒng)還記錄了期刊名稱(chēng)、出版月份、期號(hào)以及主辦單位; (3)對(duì)于校內(nèi)技術(shù)報(bào)告,系統(tǒng)記錄了由學(xué)校分配的唯一ID。 3.查詢指定會(huì)議集(Proceedings)或某個(gè)期刊特定期(Edition)的所有文章。會(huì)議集包含了發(fā)表在該會(huì)議(在某個(gè)
3、特定時(shí)間段、特定地點(diǎn)召開(kāi))上的所有文章。期刊的每一期在特定時(shí)間發(fā)行,其中包含若干篇文章。 4.下載出版物。系統(tǒng)記錄每個(gè)出版物被下載的次數(shù)。 5.查詢引用了某篇出版物的所有出版物。在學(xué)術(shù)出版物中引用他人或早期的文獻(xiàn)作為相關(guān)工作或背景資料是很常見(jiàn)的現(xiàn)象。用戶也可以在系統(tǒng)中為某篇出版物注冊(cè)引用通知,若有新的出版物引用了該出版物,系統(tǒng)將發(fā)送電子郵件通知該用戶。 現(xiàn)在采用面向?qū)ο蠓椒▽?duì)該系統(tǒng)進(jìn)行開(kāi)發(fā),得到系統(tǒng)的初始設(shè)計(jì)類(lèi)圖如圖3-1所示。 圖3-1初始設(shè)計(jì)類(lèi)圖 【問(wèn)題1】(9分) 根據(jù)說(shuō)明中的描述,給出圖3-1中C1~C9所對(duì)應(yīng)的類(lèi)名。 【問(wèn)題2】(4分) 根據(jù)說(shuō)明中的描述,給出圖3
4、-1中類(lèi)C6~C9的屬性。 【問(wèn)題3】(2分) 圖3-1中包含了哪種設(shè)計(jì)模式?實(shí)現(xiàn)的是該系統(tǒng)的哪個(gè)功能? 正確答案: 本題解析: 【問(wèn)題1】 C1:Person C2:User C3:Student C4:Faculty C5:Staff C6:Publication C7:ConfPaper C8:JournalArticle C9:TechReport 注:C3/C4/C5可互換。 【問(wèn)題2】 C6:題目,作者,出版年份 C7:會(huì)議名稱(chēng),召開(kāi)時(shí)間,召開(kāi)地點(diǎn) C8:期刊
5、名稱(chēng),出版月份,期號(hào),主辦單位 C9:ID 【問(wèn)題3】 觀察者模式,實(shí)現(xiàn):引用他人學(xué)術(shù)出版物發(fā)送電子郵件通知該用戶。 試題解析: 此題,應(yīng)當(dāng)屬于最簡(jiǎn)單的類(lèi)圖題了。只是出題者,有一個(gè)小小的疏忽,少了個(gè)類(lèi)名,根據(jù)下面的子類(lèi)抽象,可以填寫(xiě)Person或人。 此題,應(yīng)當(dāng)屬于最簡(jiǎn)單的類(lèi)圖題了。只是出題者,有一個(gè)小小的疏忽,少了個(gè)類(lèi)名,根據(jù)下面的子類(lèi)抽象,可以填寫(xiě)Person或人。 【問(wèn)題1】 問(wèn)題1找類(lèi)名:直接從類(lèi)圖看,C2有三個(gè)子類(lèi),而C6也同樣有三個(gè)子類(lèi)。這個(gè)明顯的破綻,為我們解題提供了捷徑。閱讀題干找出有三個(gè)從屬關(guān)系的事物來(lái):系統(tǒng)的用戶(User)僅限于該大學(xué)的學(xué)生(Student
6、)、教師(Faculty)和其他工作人員(Staff);查詢某位作者(Author)的所有出版物。系統(tǒng)中保存了會(huì)議文章(ConfPaper)、期刊文章(JournalArticle)和校內(nèi)技術(shù)報(bào)告(TechReport)等學(xué)術(shù)出版物的信息。 這個(gè)關(guān)系找到了,然后結(jié)合類(lèi)圖來(lái)看。用戶(User),出版物(Publication)要判別出是C2和C6。其他后面的空就容易了。 C2和Author(作者)有共同的父類(lèi)。說(shuō)明只有用戶(User)可以與其在同一個(gè)級(jí)別上。而Author(作者)和C6之間有一個(gè)written by 1對(duì)多的關(guān)系,說(shuō)明C6就是出版物(Publication),因?yàn)樽髡呖梢杂卸?/p>
7、個(gè)出版物。所以可以確定C2為User,C6為Publication。 然后要填寫(xiě)C3,C4,C5就是學(xué)生(Student)、教師(Faculty)和其他工作人員(Staff),這個(gè)次序可以隨意。 填寫(xiě)C7,C8,C9就是會(huì)議文章(ConfPaper)、期刊文章(JournalArticle)和校內(nèi)技術(shù)報(bào)告(TechReport)這個(gè)次序也可隨意。只是這個(gè)位置的次序決定了問(wèn)題2的內(nèi)容排列次序。填英文。 唯一的遺憾是從題干中找不出作者(Author)和用戶(User)的父類(lèi)是什么,是人(Person)?只能讓人想像了。 【問(wèn)題2】 問(wèn)題2的答案,全在題干第2點(diǎn)的陳述中。 此處不作解析。
8、 【問(wèn)題3】 題干第5查詢引用了某篇出版物的所有出版物。在學(xué)術(shù)出版物中引用他人或早期的文獻(xiàn)作為相關(guān)工作或背景資料是很常見(jiàn)的現(xiàn)象。用戶也可以在系統(tǒng)中為某篇出版物注冊(cè)引用通知,若有新的出版物引用了該出版物,系統(tǒng)將發(fā)送電子郵件通知該用戶。這個(gè)說(shuō)明加上類(lèi)圖中有一個(gè)類(lèi)名為Observer。可以斷定為觀察者模式,實(shí)現(xiàn)的功能即是第5點(diǎn)的陳述。 2.某圖像預(yù)覽程序要求能夠查看BMP、JPEG和GIF三種格式的文件,且能夠在Windows和Linux兩種操作系統(tǒng)上運(yùn)行。程序需具有較好的擴(kuò)展性以支持新的文件格式和操作系統(tǒng)。為滿足上述需求并減少所需生成的子類(lèi)數(shù)目,現(xiàn)采用橋接(Br
9、idge)模式進(jìn)行設(shè)計(jì),得到如圖5-1所示的類(lèi)圖。 圖5-1 【C++代碼】 #include<iostream> #include<string> using namespace std; class Matrix{//各種格式的文件最終都被轉(zhuǎn)化為像素矩陣 //此處代碼省略 }; class Implementor{ public: (1);//顯示像素矩陣m }; class WinImp:public Implementor{ public: void doPaint(Matrix m){/*調(diào)用Windows系統(tǒng)的繪制函數(shù)繪制像素矩陣*/} };
10、class LinuxImp:public Implementor{ public: void doPaint(Matrix m){/*調(diào)用Linux系統(tǒng)的繪制函數(shù)繪制像素矩陣*/} }; class Image{ public: void setImp(Implementor*imp){this->imp=imp;} virtual viod parseFile(string fileName)=0; protected: Implementor*imp; }; class BMPImage:public Image{ //此處省略代碼 }; class GIFI
11、mage:public Image{ public: void parseFile(string fileName){ //此處解析GIF文件并獲得一個(gè)像素矩陣對(duì)象m (2);顯示像素矩陣m } }; class JPEGImage:public Image{ //此處代碼省略 }; int main( ?。﹞ //在Linux操作系統(tǒng)上查看demo.gif圖像文件 Image*image=(3); Implementor*imageImp=(4); (5); image->parseFile("demo.gif"); return 0; }
12、 正確答案: 本題解析: (1)virtual void doPaint(Matrix m)=0 (2)imp->doPaint(m) (3)new GIFImage() (4)new LinuxImp() (5)image->setImp(imageImp) 第一空是顯示像素矩陣m 從類(lèi)圖來(lái)看Implementor是WinImp和LinuxImp兩子類(lèi)的父類(lèi)。那就需要從子類(lèi)中去找共同的方法,然后把它們抽象出來(lái)。 共同的方法為:void doPaint(Matrix m);抽象就成了virtual void
13、 doPaint(Matrix m)=0。 第二空是顯示像素矩陣m 在Image的類(lèi)和其子類(lèi)中,要顯示像素矩陣,可以使用調(diào)用Implementor類(lèi)的方法doPaint,而Image類(lèi)中定義了對(duì)象imp。 即調(diào)用的方法為:imp->doPaint(m) 第三空是構(gòu)造出Gif圖像的對(duì)象new GIFImage() 第四空是要在Linux操作系統(tǒng)上查看,需要一個(gè)LinuxImp的對(duì)象,new LinuxImp() 第五空是把imageImp對(duì)象傳遞,以便能夠查看Gif圖像文件,image->setImp(imageImp) 3.某公司擬開(kāi)發(fā)一個(gè)共享單車(chē)系
14、統(tǒng),采用北斗定位系統(tǒng)進(jìn)行單車(chē)定位,提供針對(duì)用戶的APP以及微信小程序、基于Web的管理與監(jiān)控系統(tǒng)。該共享單車(chē)系統(tǒng)的主要功能如下。 1)用戶注冊(cè)登錄。用戶在APP端輸入手機(jī)號(hào)并獲取驗(yàn)證碼后進(jìn)行注冊(cè),將用戶信息進(jìn)行存儲(chǔ)。用戶登錄后顯示用戶所在位置周?chē)膯诬?chē)。 2)使用單車(chē)。 ①掃碼/手動(dòng)開(kāi)鎖。通過(guò)掃描二維碼或手動(dòng)輸入編碼獲取開(kāi)鎖密碼,系統(tǒng)發(fā)送開(kāi)鎖指令進(jìn)行開(kāi)鎖,系統(tǒng)修改單車(chē)狀態(tài),新建單車(chē)行程。 ②騎行單車(chē)。單車(chē)定時(shí)上傳位置,更新行程。 ③鎖車(chē)結(jié)賬。用戶停止使用或手動(dòng)鎖車(chē)并結(jié)束行程后,系統(tǒng)根據(jù)已設(shè)置好的計(jì)費(fèi)規(guī)則及使用時(shí)間自動(dòng)結(jié)算,更新本次騎行的費(fèi)用并顯示給用戶,用戶確認(rèn)支付后,記錄行程的支付
15、狀態(tài)。系統(tǒng)還將重置單車(chē)的開(kāi)鎖密碼和單車(chē)狀態(tài)。 3)輔助管理。 ①查詢。用戶可以查看行程列表和行程詳細(xì)信息。 ②報(bào)修。用戶上報(bào)所在位置或單車(chē)位置以及單車(chē)故障信息并進(jìn)行記錄。 4)管理與監(jiān)控。 ①單車(chē)管理及計(jì)費(fèi)規(guī)則設(shè)置。商家對(duì)單車(chē)基礎(chǔ)信息、狀態(tài)等進(jìn)行管理,對(duì)計(jì)費(fèi)規(guī)則進(jìn)行設(shè)置并存儲(chǔ)。 ②單車(chē)監(jiān)控。對(duì)單車(chē)、故障、行程等進(jìn)行查詢統(tǒng)計(jì)。 ③用戶管理。管理用戶信用與狀態(tài)信息,對(duì)用戶進(jìn)行查詢統(tǒng)計(jì)。 現(xiàn)采用結(jié)構(gòu)化方法對(duì)共享單車(chē)系統(tǒng)進(jìn)行分析與設(shè)計(jì),獲得如圖1-1所示的上下文數(shù)據(jù)流圖和圖1-2所示的0層數(shù)據(jù)流圖。 圖1-1上下文數(shù)據(jù)流圖 圖1-2 0層數(shù)據(jù)流圖 【問(wèn)題1】(3分) 使
16、用說(shuō)明中的詞語(yǔ),給出圖1-1中的實(shí)體E1~E3的名稱(chēng)。 【問(wèn)題2】(5分) 使用說(shuō)明中的詞語(yǔ),給出圖1-2中的數(shù)據(jù)存儲(chǔ)D1~D5的名稱(chēng)。 【問(wèn)題3】(5分) 根據(jù)說(shuō)明和圖中術(shù)語(yǔ)及符號(hào),補(bǔ)充圖1-2中缺失的數(shù)據(jù)流及其起點(diǎn)和終點(diǎn). 【問(wèn)題4】(2分) 根據(jù)說(shuō)明中術(shù)語(yǔ),說(shuō)明“使用單車(chē)”可以分解為哪些子加工? 正確答案: 本題解析: 【問(wèn)題1】 E1:用戶 E2:商家 E3:?jiǎn)诬?chē) 【問(wèn)題2】 D1:用戶信息存儲(chǔ) D2:?jiǎn)诬?chē)信息表 D3:?jiǎn)诬?chē)行程信息表 D4:計(jì)費(fèi)規(guī)則存儲(chǔ) D5:?jiǎn)诬?chē)
17、故障信息記錄 【問(wèn)題3】 1.起點(diǎn):p3終點(diǎn):E1數(shù)據(jù)流名稱(chēng):開(kāi)鎖密碼 2.起點(diǎn):p3終點(diǎn):E1數(shù)據(jù)流名稱(chēng):費(fèi)用 3.起點(diǎn):p3終點(diǎn):E3數(shù)據(jù)流名稱(chēng):開(kāi)鎖指令 4.起點(diǎn):D3終點(diǎn):p7數(shù)據(jù)流名稱(chēng):行程 5.起點(diǎn):p3終點(diǎn):D2數(shù)據(jù)流名稱(chēng):?jiǎn)诬?chē)狀態(tài) 或(起點(diǎn):P3終點(diǎn):D3數(shù)據(jù)流名稱(chēng):支付狀態(tài)) (起點(diǎn):D4,終點(diǎn):P3,計(jì)費(fèi)規(guī)則) 【問(wèn)題4】 掃碼/手動(dòng)開(kāi)鎖,更新行程,鎖車(chē)結(jié)賬 (或掃碼/手動(dòng)開(kāi)鎖,更新行程,鎖車(chē),計(jì)算費(fèi)用,重置開(kāi)鎖密碼,用戶確認(rèn)支付) 【問(wèn)題1】 問(wèn)題1要求找圖1-1所示的上下文數(shù)據(jù)流圖中的實(shí)體名稱(chēng): 結(jié)合題干,和數(shù)據(jù)流名稱(chēng)找出對(duì)應(yīng)的實(shí)體名稱(chēng)。
18、E1與共享單車(chē)系統(tǒng),有著個(gè)人信息,等數(shù)據(jù)流名稱(chēng),其中明顯有一個(gè)用戶位置,和確認(rèn)支付的數(shù)據(jù)流,從第2點(diǎn)使用單車(chē),鎖車(chē)結(jié)賬一條中,明顯提到用戶的操作。 E2的實(shí)體名稱(chēng),是由其與共享單車(chē)系統(tǒng)有數(shù)據(jù)流名稱(chēng)為計(jì)價(jià)規(guī)則,由第4點(diǎn)管理與監(jiān)控,題干直接說(shuō)明“商家對(duì)單車(chē)基礎(chǔ)信息、狀態(tài)等進(jìn)行管理,對(duì)計(jì)費(fèi)規(guī)則進(jìn)行設(shè)置并存”。 E3的實(shí)體名稱(chēng),從第2點(diǎn)使用單車(chē)上,能查找出所有的數(shù)據(jù)流名稱(chēng)。 然后驗(yàn)證所有的數(shù)據(jù)流,是否都是從對(duì)應(yīng)的實(shí)體之間的關(guān)系,確保答案的正確。 所以E1為用戶,E2為商家,E3為單車(chē) 【問(wèn)題2】 問(wèn)題2要求找出存儲(chǔ)名稱(chēng),這個(gè)應(yīng)該不用作解析,就是找出可以存儲(chǔ)的記錄、表、文件等,只是考生可能糾
19、結(jié)的地方是寫(xiě)這個(gè)名稱(chēng)的時(shí)候,到底要寫(xiě)什么,才最符合標(biāo)準(zhǔn)答案的問(wèn)題。一個(gè)原則,名稱(chēng)從題干查找,盡量不要自己命名,題干說(shuō)明是用戶信息,那就是用戶信息,頂多寫(xiě)成,用戶信息記錄,或用戶信息表。 【問(wèn)題3】 查找缺失的數(shù)據(jù)流,有兩條原則經(jīng)常使用到,父圖和子圖平衡原則,數(shù)據(jù)守恒原則。另外一個(gè)要緊靠題干。需要耐心和細(xì)心。 參考答案中1,2,3是從父圖和子圖平衡原則中找出來(lái)的,父圖中有的數(shù)據(jù)流,在子圖中卻沒(méi)有,就是缺失。4,5是數(shù)據(jù)守恒結(jié)合題干查找出來(lái)的。 【問(wèn)題4】 問(wèn)題4是要求分解加工。 在第4點(diǎn)題干描述中,明顯的有三個(gè)加工,即掃碼/手動(dòng)開(kāi)鎖,更新行程,鎖車(chē)結(jié)賬。
20、 4.M公司為了便于開(kāi)展和管理各項(xiàng)業(yè)務(wù)活動(dòng),提高公司的知名度和影響力,擬構(gòu)建一個(gè)基于網(wǎng)絡(luò)的會(huì)議策劃系統(tǒng)。 【需求分析結(jié)果】 該系統(tǒng)的部分功能及初步需求分析的結(jié)果如下: (1)M公司旗下有業(yè)務(wù)部、策劃部和其他部門(mén)。部門(mén)信息包括部門(mén)號(hào)、部門(mén)名、主管、聯(lián)系電話和郵箱號(hào);每個(gè)部門(mén)只有一名主管,只負(fù)責(zé)管理本部門(mén)的工作,且主管參照員工關(guān)系的員工號(hào);一個(gè)部門(mén)有多名員工,每名員工屬于且僅屬于一個(gè)部門(mén)。 (2)員工信息包括員工號(hào)、姓名、職位、聯(lián)系方式和薪資。職位包括主管、業(yè)務(wù)員、策劃員等。業(yè)務(wù)員負(fù)責(zé)受理用戶申請(qǐng),設(shè)置受理標(biāo)志。一名業(yè)務(wù)員可以受理多個(gè)用戶申請(qǐng),但一個(gè)用戶申請(qǐng)只能由一名業(yè)務(wù)員受理。 (3
21、)用戶信息包括用戶號(hào)、用戶名、銀行賬號(hào)、電話、聯(lián)系地址。用戶號(hào)唯一標(biāo)識(shí)用戶信息中的每一個(gè)元組。 (4)用戶申請(qǐng)信息包括申請(qǐng)?zhí)?、用戶?hào)、會(huì)議日期、天數(shù)、參會(huì)人數(shù)、地點(diǎn)、預(yù)算和受理標(biāo)志。申請(qǐng)?zhí)栁ㄒ粯?biāo)識(shí)用戶申請(qǐng)信息中的每一個(gè)元組,且一個(gè)用戶可以提交多個(gè)申請(qǐng),但一個(gè)用戶申請(qǐng)只對(duì)應(yīng)一個(gè)用戶號(hào)。 (5)策劃部主管為已受理的用戶申請(qǐng)制定會(huì)議策劃任務(wù)。策劃任務(wù)包括申請(qǐng)?zhí)枴⑷蝿?wù)明細(xì)和要求完成時(shí)間。申請(qǐng)?zhí)栁ㄒ粯?biāo)識(shí)策劃任務(wù)的每一個(gè)元組。一個(gè)策劃任務(wù)只對(duì)應(yīng)一個(gè)己受理的用戶申請(qǐng),但一個(gè)策劃任務(wù)可由多名策劃員參與執(zhí)行,且一名策劃員可以參與執(zhí)行多項(xiàng)策劃任務(wù)。 【概念模型設(shè)計(jì)】 根據(jù)需求階段收集的信息,設(shè)計(jì)的實(shí)體聯(lián)系
22、圖(不完整)如圖2-1所示。 圖2-1 【關(guān)系模型設(shè)計(jì)】 部門(mén)(部門(mén)號(hào),部門(mén)名,部門(mén)主管,聯(lián)系電話,郵箱號(hào)) 員工(員工號(hào),姓名,(a),聯(lián)系方式,薪資) 用戶(用戶名,(b),電話,聯(lián)系地址) 用戶申請(qǐng)(申請(qǐng)?zhí)?,用戶?hào),會(huì)議日期,天數(shù),參會(huì)人數(shù),地點(diǎn),受理標(biāo)志,(c)) 策劃任務(wù)(申請(qǐng)?zhí)?,任?wù)明細(xì),(d)) 執(zhí)行(申請(qǐng)?zhí)枺邉潌T,實(shí)際完成時(shí)間,用戶評(píng)價(jià)) 【問(wèn)題1】(5分) 根據(jù)問(wèn)題描述,補(bǔ)充五個(gè)聯(lián)系,完善圖2-1的實(shí)體聯(lián)系圖。聯(lián)系名可用聯(lián)系1、聯(lián)系2、聯(lián)系3、聯(lián)系4和聯(lián)系5,聯(lián)系的類(lèi)型為1:1、1:n和m:n(或1:1、1:*和*:*)。 【問(wèn)題2】(4分) 根
23、據(jù)題意,將關(guān)系模式中的空(a)~(d)補(bǔ)充完整,并填入答題紙對(duì)應(yīng)的位置上。 【問(wèn)題3】(4分) 給出“用戶申請(qǐng)”和“策劃任務(wù)”關(guān)系模式的主鍵和外鍵。 【問(wèn)題4】(2分) 請(qǐng)問(wèn)“執(zhí)行”關(guān)系模式的主鍵為全碼的說(shuō)法正確嗎?為什么? 正確答案: 本題解析: 【問(wèn)題1】 1.聯(lián)系1:部門(mén)和員工,1:n 2.聯(lián)系2:業(yè)務(wù)員和用戶申請(qǐng),1:n 3.聯(lián)系3:用戶和用戶申請(qǐng),1:n 4.聯(lián)系4:策劃員和策劃任務(wù),n:m 5.聯(lián)系5:策劃任務(wù)和用戶申請(qǐng),1:1 或(聯(lián)系5:部門(mén)和主管,1:1) 【問(wèn)題
24、2】 a.職位,部門(mén)號(hào) b.用戶號(hào),銀行賬號(hào) c.預(yù)算費(fèi)用,業(yè)務(wù)員(員工號(hào)) d.要求完成時(shí)間,主管號(hào) 【問(wèn)題3】 用戶申請(qǐng):主鍵:申請(qǐng)?zhí)柾怄I:用戶號(hào),業(yè)務(wù)員 策劃任務(wù):主鍵:申請(qǐng)?zhí)柾怄I:申請(qǐng)?zhí)枺鞴芴?hào) 【問(wèn)題4】 不正確 All-key關(guān)系模型的所有屬性組成該關(guān)系模式的候選碼,稱(chēng)為全碼。即所有屬性當(dāng)作一個(gè)碼。若關(guān)系中只有一個(gè)候選碼,且這個(gè)候選碼中包含全部屬性,則該候選碼為全碼。 實(shí)際完成時(shí)間和用戶評(píng)價(jià)為非主屬性。 【問(wèn)題1】 問(wèn)題1需要找出5個(gè)聯(lián)系: 部門(mén)與員工之間:一個(gè)部門(mén)有多名員工,每名員工屬于且僅屬于一個(gè)部門(mén)。是1對(duì)多的聯(lián)系。 業(yè)務(wù)員和用戶申請(qǐng)之間:一名業(yè)
25、務(wù)員可以受理多個(gè)用戶申請(qǐng),但一個(gè)用戶申請(qǐng)只能由一名業(yè)務(wù)員受理。是1對(duì)多的聯(lián)系。 用戶和用戶申請(qǐng)之間:申請(qǐng)?zhí)栁ㄒ粯?biāo)識(shí)用戶申請(qǐng)信息中的每一個(gè)元組,且一個(gè)用戶可以提交多個(gè)申請(qǐng),但一個(gè)用戶申請(qǐng)只對(duì)應(yīng)一個(gè)用戶號(hào)。是1對(duì)多的聯(lián)系。 策劃員和策劃任務(wù)之間:一個(gè)策劃任務(wù)可由多名策劃員參與執(zhí)行,且一名策劃員可以參與執(zhí)行多項(xiàng)策劃任務(wù)。是多對(duì)多的聯(lián)系。 策劃任務(wù)和用戶申請(qǐng)之間:一個(gè)策劃任務(wù)只對(duì)應(yīng)一個(gè)已受理的用戶申請(qǐng)。是1對(duì)1的聯(lián)系。 【問(wèn)題2】 找出關(guān)系模式中的屬性。 明顯的題干中有的,這里不作分析。 著重分析一下,1對(duì)多的聯(lián)系,聯(lián)系是可以合并到多的一端。多對(duì)多的聯(lián)系,此時(shí)聯(lián)系必須單獨(dú)成一個(gè)關(guān)系模式來(lái)
26、描述它們之間的聯(lián)系。此時(shí)填空的時(shí)間,就不要把關(guān)系給丟失了。 【問(wèn)題3】 問(wèn)題3要求找關(guān)系模式的主鍵和外鍵。主鍵是指一個(gè)或多個(gè)屬性的組合,能夠唯一標(biāo)識(shí)元組的。即記錄。此題中關(guān)系都比較簡(jiǎn)單,一個(gè)屬性即可以唯一標(biāo)識(shí)。 外鍵是指另一個(gè)表的主鍵,是用來(lái)與其他表建立聯(lián)系的屬性。所以用戶申請(qǐng)模式中外鍵有兩個(gè)。 用戶申請(qǐng):主鍵:申請(qǐng)?zhí)柾怄I:用戶號(hào),業(yè)務(wù)員 策劃任務(wù):主鍵:申請(qǐng)?zhí)柾怄I:申請(qǐng)?zhí)枺鞴芴?hào) 【問(wèn)題4】 說(shuō)明見(jiàn)參考答案。 5.某圖像預(yù)覽程序要求能夠查看BMP、JPEG和GIF三種格式的文件,且能夠在Windows和Linux兩種操作系統(tǒng)上運(yùn)行。程序需具有較好
27、的擴(kuò)展性以支持新的文件格式和操作系統(tǒng)。為滿足上述需求并減少所需生成的子類(lèi)數(shù)目,現(xiàn)采用橋接(Bridge)模式進(jìn)行設(shè)計(jì),得到如圖6-1所示的類(lèi)圖。 圖6-1 【Java代碼】 import java.util.*; class Matrix{//各種格式的文件最終都被轉(zhuǎn)化為像素矩陣 //此處代碼省略 }; abstract class Implementor{ public(1);//顯示像素矩陣m }; class WinImp extends Implementor{ public void doPaint(Matrix m){//調(diào)用Windows系統(tǒng)的繪制函數(shù)繪
28、制像素矩陣 } }; class LinuxImp extends Implementor{ public void doPaint(Matrix m){//調(diào)用Linux系統(tǒng)的繪制函數(shù)繪制像素矩陣 } }; abstract class Image{ public void setImp(Implementor imp){this.imp=imp;} public abstract void parseFile(String fileName); protected Implementor imp; }; class BMPImage extends Image{
29、//此處代碼省略 }; class GIFImage extends Image{ public void parseFile(String fileName){ //此處解析BMP文件并獲得一個(gè)像素矩陣對(duì)象m (2);//顯示像素矩陣m } }; class JPEGImage extends Image{ //此處代碼省略 }; class Main{ public static void main(String[]args){ //在Linux操作系統(tǒng)上查看demo.gif圖像文件 Image image=(3); Implementor imageImp=
30、(4); (5); Image.parseFile("demo.gif"); } } 正確答案: 本題解析: 1.abstract void doPaint(Matrix m) 2.imp.doPaint(m) 3.new GIFImage() 4.new LinuxImp() 5.image.setImp(imageImp) 第一空是顯示像素矩陣m 從類(lèi)圖來(lái)看Implementor是WinImp和LinuxImp兩子類(lèi)的父類(lèi)。那就需要從子類(lèi)中去找共同的方法,然后把它們抽象出來(lái)。
31、共同的方法為:void doPaint(Matrix m);抽象就成了abstract void doPaint(Matrix m);此處別忘了abstract關(guān)鍵字。是抽象方法。 第二空是顯示像素矩陣m 在Image的類(lèi)和其子類(lèi)中,要顯示像素矩陣,可以使用調(diào)用Implementor類(lèi)的方法doPaint,而Image類(lèi)中定義了對(duì)象imp。 即調(diào)用的方法為:imp.doPaint(m) 第三空是構(gòu)造出Gif圖像的對(duì)象new GIFImage() 第四空是要在Linux操作系統(tǒng)上查看,需要一個(gè)LinuxImp的對(duì)象.new LinuxImp() 第五空是把imageImp對(duì)象傳遞,以
32、便能夠查看Gif圖像文件,image.setImp(imageImp) 6.一個(gè)無(wú)向連通圖G點(diǎn)上的哈密爾頓(Hamilton)回路是指從圖G上的某個(gè)頂點(diǎn)出發(fā),經(jīng)過(guò)圖上所有其他頂點(diǎn)一次且僅一次,最后回到該頂點(diǎn)的路徑。一種求解無(wú)向圖上哈密爾頓回路算法的基本思想如下: 假設(shè)圖G存在一個(gè)從頂點(diǎn)V0出發(fā)的哈密爾頓回路V0——V1——V2——V3——...——Vn-1——V0。算法從頂點(diǎn)V0出發(fā),訪問(wèn)該頂點(diǎn)的一個(gè)未被訪問(wèn)的鄰接頂點(diǎn)V1,接著從頂點(diǎn)V1出發(fā),訪問(wèn)V1一個(gè)未被訪問(wèn)的鄰接頂點(diǎn)V2,…;對(duì)頂點(diǎn)Vi,重復(fù)進(jìn)行以下操作:訪問(wèn)Vi的一個(gè)未被訪問(wèn)的鄰接接點(diǎn)Vi+1;若Vi
33、的所有鄰接頂點(diǎn)均已被訪問(wèn),則返回到頂點(diǎn)Vi-1,考慮Vi-1的下一個(gè)未被訪問(wèn)的鄰接頂點(diǎn),仍記為Vi;直到找到一條哈密爾頓回路或者找不到哈密爾頓回路,算法結(jié)束。 【C代碼】 下面是算法的C語(yǔ)言實(shí)現(xiàn)。 (1)常量和變量說(shuō)明 n:圖G中的頂點(diǎn)數(shù) c[][]:圖G的鄰接矩陣 k:統(tǒng)計(jì)變量,當(dāng)期已經(jīng)訪問(wèn)的定點(diǎn)數(shù)為k+1 x[k]:第k個(gè)訪問(wèn)的頂點(diǎn)編號(hào),從0開(kāi)始 visited[x[k]]:第k個(gè)頂點(diǎn)的訪問(wèn)標(biāo)志,0表示未訪問(wèn),1表示已訪問(wèn) (2)C程序 #include<stido.h> #include<stidb.h> #define MAX 100 void Hamilto
34、n(int n,int x[MAX],int c[MAX][MAX]){ int i; int visited[MAX]; int k; /*初始化x數(shù)組和visited數(shù)組*/ for(i=0:i<n;i++){ x[i]=0; visited[i]=0; } /*訪問(wèn)起始頂點(diǎn)*/ k=0 (1); x[0]=0; k=k+1; /*訪問(wèn)其他頂點(diǎn)*/ while(k>=0){ x[k]=x[k]+1; while(x[k]<n){ if((2)&&c[x[k-1]][x[k]]==1){/*鄰接頂點(diǎn)x[k]未被訪問(wèn)過(guò)*/ break; }else{
35、x[k]=x[k]+1 } } if(x[k]<n&&k==n-1&&(3)){/*找到一條哈密爾頓回路*/ for(k=0;k<n;k++){ printf(〝%d--〝,x[k]);/*輸出哈密爾頓回路*/ } printf(〝%d\n〝,x[0]); return; }else if(x[k]<n&&k<n-1){/*設(shè)置當(dāng)前頂點(diǎn)的訪問(wèn)標(biāo)志,繼續(xù)下一個(gè)頂點(diǎn)*/ (4) k=k+1; }else{/*沒(méi)有未被訪問(wèn)過(guò)的鄰接頂點(diǎn),回退到上一個(gè)頂點(diǎn)*/ x[k]=0; visited[x[k]]=0; (5); } } } 【問(wèn)題1】(10分) 根據(jù)題干說(shuō)
36、明。填充C代碼中的空(1)~(5)。 【問(wèn)題2】(5分) 根據(jù)題干說(shuō)明和C代碼,算法采用的設(shè)計(jì)策略為(6),該方法在遍歷圖的頂點(diǎn)時(shí),采用的是(7)方法(深度優(yōu)先或廣度優(yōu)先)。 正確答案: 本題解析: 【問(wèn)題1】 1、visited[0]=1 2、visited[x[k]]==0 3、c[x[k]][0]==1 4、visited[x[k]]=1 5、k=k-1 【問(wèn)題2】 6、回溯法 7、深度優(yōu)先 哈密頓圖是一個(gè)無(wú)向圖,由天文學(xué)家哈密頓提出,由指定的起點(diǎn)前往指定的終點(diǎn),途中經(jīng)過(guò)所有
37、其他節(jié)點(diǎn)且只經(jīng)過(guò)一次。在圖論中是指含有哈密頓回路的圖,閉合的哈密頓路徑稱(chēng)作哈密頓回路,含有圖中所有頂點(diǎn)的路徑稱(chēng)作哈密頓路徑。 回溯法是一種選優(yōu)搜索法,又稱(chēng)為試探法,按選優(yōu)條件向前搜索,以達(dá)到目標(biāo)。但當(dāng)探索到某一步時(shí),發(fā)現(xiàn)原先選擇并不優(yōu)或達(dá)不到目標(biāo),就退回一步重新選擇,這種走不通就退回再走的技術(shù)為回溯法,而滿足回溯條件的某個(gè)狀態(tài)的點(diǎn)稱(chēng)為“回溯點(diǎn)”。在包含問(wèn)題的所有解的解空間樹(shù)中,按照深度優(yōu)先搜索的策略,從根結(jié)點(diǎn)出發(fā)深度探索解空間樹(shù)。當(dāng)探索到某一結(jié)點(diǎn)時(shí),要先判斷該結(jié)點(diǎn)是否包含問(wèn)題的解,如果包含,就從該結(jié)點(diǎn)出發(fā)繼續(xù)探索下去,如果該結(jié)點(diǎn)不包含問(wèn)題的解,則逐層向其祖先結(jié)點(diǎn)回溯(其實(shí)回溯法就是對(duì)隱式圖的深度優(yōu)先搜索算法)。若用回溯法求問(wèn)題的所有解時(shí),要回溯到根,且根結(jié)點(diǎn)的所有可行的子樹(shù)都要已被搜索遍才結(jié)束。而若使用回溯法求任一個(gè)解時(shí),只要搜索到問(wèn)題的一個(gè)解就可以結(jié)束。 算法題歷來(lái)都被認(rèn)為是比較難的題,一個(gè)程序開(kāi)發(fā)人員都不喜歡看別人的代碼。但是要得分也不是太難。 問(wèn)題2比較容易得分,而且第二空就是個(gè)二選一的填空。只要了解到回溯法的相關(guān)原理,基本可以得滿分。對(duì)于問(wèn)題1就需要花一些心思,去讀懂題干和代碼,但是這里的第1空和第5空也是比較容易發(fā)挖出來(lái)的空。第一空是初始化第一個(gè)結(jié)點(diǎn),第五空是此路不通,得回走,所以得退回。
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 24香港璀璨的明珠
- 第02講 第一章 綜合布線基礎(chǔ)知識(shí)
- 預(yù)防傳染病課件
- 【創(chuàng)新設(shè)計(jì)】2011屆高考生物一輪復(fù)習(xí) 第5章單元綜合提升 細(xì)胞增殖、分化、衰老和凋亡課件 蘇教版必修1
- 512防震減災(zāi)安全教育班會(huì)課件
- 2022年浙教初中數(shù)學(xué)八下《反證法》課件10
- 1山中訪友課后作業(yè)(A組-基礎(chǔ)篇)
- 產(chǎn)后出血完整版
- 質(zhì)量培訓(xùn)教材(2)
- 部編版一年級(jí)下冊(cè)語(yǔ)文課件第三單元語(yǔ)文園地三(完美版)
- 我最好老師課件
- 面向?qū)ο蟾呒?jí)應(yīng)用及C-sharp-語(yǔ)法新特性課件
- 堿金屬元素課件
- 部編人教版六年級(jí)語(yǔ)文下冊(cè)14《文言文二則-》學(xué)-弈課件
- 部編版六年級(jí)上冊(cè)語(yǔ)文課件--宇宙生命之謎