軟件設計師(下午題)數據流圖真題解析

必備知識點

數據流圖

圖解相關

又稱DFD或分層數據流圖,需要與E-R圖(實體屬性圖)分開,這裏給出圖元及對應含義。

上述需要注意的是,

需填寫數據流的名稱,一般都在題中(給出的數據流圖或題幹文字)

需填寫數據流的起點終點,一般都在題中(給出的數據流圖或題幹文字)

數據字典相關

數據流圖平衡原則(解題核心)

父圖和子圖之間的平衡

子圖內平衡

注意:數據流圖中操作流程信息的方向。同時應該保證既有輸入也有輸出。

只有輸入沒有輸出稱爲黑洞。

只有輸出沒有輸入稱爲奇蹟。

 

以上爲基礎知識回顧,以下爲實例解讀。

實例解讀1

 

閱讀下列說明和有關的圖表,回答問題1至問題3,將解答填入答題紙的對應欄內。

【說明】

A公司決定爲該市車站開發自動售票系統,系統的要求如下:

1.乘客能按以下三步操作購票:選定目的地;投入錢幣;獲得一張票;

2.當且僅當乘客選定目的地後,系統才接收投錢,每次投入的錢只購買一張票;

3.只要投入的錢不少於所需的票價,且票庫中有所要求的票,則應儘快出票;

4.如需找錢,則在出票的同時應退還多餘的錢;

5.如果乘客投入的錢不夠票價,或者票庫中沒有所要求的票時,系統將全額退錢,並允許乘客另選目的地,繼續購票;

6.出票前乘客可以按"取消"按鈕取消購票,系統將全額退出該乘客投入的錢,並允許乘客另選目的地,繼續購票;

7.出票結束(包括退還多餘的錢)後,系統應保存銷售記錄,並等待乘客購票。

該系統還要求快速響應和操作同步,所以它應是一個實時系統。爲此,A公司在該系統的數據流程圖中附加了過程控制部分,形成轉換圖。在該圖中,控制流(事件流)用虛線表示,數據流用實線表示。圖中的數據流並沒有畫全,需要考生填補。轉換圖如圖1所示。

圖1轉換圖

程進行的控制可以用系統內部各個狀態之間的遷移來描述,從而形成狀態遷移圖。在狀態遷移圖中,用雙線框表示狀態,用有向邊表示狀態的遷移。引起狀態遷移的事件以及由該事件引起的動作,在有向邊旁用"事件   動作"形式註明。狀態遷移圖如圖2所示。

圖2狀態遷移圖

該公司還製作了一個過程啓動表,用以表明狀態遷移圖中的4個動作與轉換圖中的4個過程之間的"啓動"關係,即說明哪個動作將啓動哪個過程。用1表示啓動,用0表示不啓動。啓動的過程將根據獲得的輸入數據產生輸出數據,未啓動的過程則不會產生輸出數據。該表中沒有列出的過程,其執行與否與事件無關。過程啓動表見表1:

【問題1】

轉換圖中缺少哪三條數據流?請指明每條數據流的名稱、起點和終點。

【問題2】

在狀態遷移圖中,a,b,c分別表示什麼事件?請用轉換圖中給出的事件名解答。

【問題3】

在過程啓動表中,d,e處應填什麼?請分別用4位二進制碼錶示。

 

問題1

問的是缺少的數據流和起點終點,這裏我們需要把數據流圖分離出來,即虛線不要,看我們的數據流圖相關圖示即明白,不再詳敘

這裏有一個極大的干擾項,我第一次就做錯了,上面給了一個售票控制,我把它當做加工了,導致數據流全錯,其實不應該出錯的,首先圖示和其他的加工還是有區別的,我近視700+,我的鍋,然後根據題意,這個售票控制應該是轉換圖的一部分,且沒有任何實現的出和入,都是虛線的操作。

如果你沒有出現這個問題,那麼恭喜你,這題很簡單了。

只提出數據流圖,很容易發現

接受目的地後到出票,按照系統說明及日常認知,肯定要進行目的地核查

接受的錢肯定需要進行覈查,然後進行出票和退錢

返回驗證,檢查後是有出票操作的。

所以缺少的數據流爲  

 

  • 數據流名:目的地; 起點:"接收目的地";終點:"覈查"。
  • 數據流名:投入的錢;起點"接收錢";終點:"覈查"。
  • 數據流名:剩餘的錢;起點"覈查";終點:"退還錢"。

問題2

首先這個遷徙圖,我們沒見過,不過有相關的說明,我們需要獲得的信息是啥?

引起狀態遷移的事件以及由該事件引起的動作,在有向邊旁用"事件   動作"形式註明

我們的問題就能轉化爲

1.在接受投錢的時候,什麼事件發生可以退錢,並等待重新選擇目的地

2.在接受投錢的時候,什麼事件發生可以出票

3.在正在出票的時候,什麼事件發生可以接收新目的地

結合題意

a - "取消"操作

b - 覈查正確

c - 出票結束。

 

問題3

哪個動作將啓動哪個過程

這個我們可以理解爲 哪個過程會包含相關動作(接收錢,出票,退錢,接收新目的地)

這樣理解就好填多了

首先

接收目的地的過程,可能接受新目的地,剛出票結束或取消,可能退錢,票價不夠或沒有票

收錢的過程不會有接受目的地和退錢的動作

出票的過程中也不會有接受目的地和退錢的動作

退還錢的過程中肯定會退錢,沒有接受新目的地的動作,只有等退錢結束後才能接受新目的地

最後答案

d - 1001

e – 1000

實例解讀2

閱讀下列說明和數據流圖,回答問題1~問題3。

【說明】

某考務處理系統主要功能是考生管理和成績管理:

1.對考生送來的報名表進行檢查。

2.對合格的報名表編好准考證號碼後將准考證送給考生,將彙總後的考生名單送給閱卷站。

3.對閱卷站送來的成績表進行檢查,並根據考試中心指定的合格標準審定合格者。

4.填寫考生通知單(內容包含該考生的准考證號、姓名、各課程成績及最終合格/不合格標誌),送給考生。

5.根據考生信息及考試成績,按地區、年齡、文化程度和職業進行成績分類統計及試題難度分析,產生統計分析表。

考務處理系統的頂層圖如圖1所示,第0層圖如圖2所示,加工2子圖如圖3所示。

【數據流圖】

圖1頂層圖

圖2  0層圖

圖3加工2子圖

【問題1】

指出哪張圖的哪些文件可以不必畫出。

【問題2】

數據流圖1-3中缺少3條數據流,請直接在圖中添加。

【問題3】

根據系統功能和數據流圖填充下列數據字典條目中的  (1)    (2) 

試題得分表=准考證號+{課程名+成績}

考生名冊=報名號+准考證號+姓名+通信地址+出生年份+文化程度+職業

考生通知單=  (1) 

報名表=  (2) 

問題1

哪張圖的哪些文件,可以解讀爲圖示的雙橫線內(文件),即這題的答案就是圖2或者圖3的試卷得分表和考生名冊

即四選一的問題,我們直接開始分析,

圖2的考生名冊連接圖中的1登記報名表,2統計成績,顯然不能去掉,雖然從圖3可以看出考生名冊是輸入,但考生名冊的輸入成謎,且根據題意,顯然不是最好的答案

圖2的試卷得分表,結合圖3的加工子圖,可以直接去掉,此時圖2的試卷得分表的輸入輸出都是針對2統計成績,在圖2中顯得多餘,所以這應該是最好答案

圖3,的兩種表,都是加工的細節,顯然不能去掉,即並不多餘

上述比較囉嗦,這種問題碰到,我們肯定優先選擇帶文件的0層圖,原因之一,細節暴露在加工內肯定比在0層圖好,原因之二,針對加工的數據流表文件既有輸出也有輸入,可以省略,可以當做知識點記住,基礎知識內有理論說明。

0層圖中的"試卷得分表"是局部文件,可不必畫出。

問題2

比較簡單,沒有第一個例題噁心人,我們直接數 輸入和輸出

很容易發現

缺少合格標準的輸入

錯誤成績表的輸出

第三個可能麻煩點,不過仔細閱讀根據考生信息及考試成績,按地區、年齡、文化程度和職業進行成績分類統計及試題難度分析,產生統計分析表這句話,即可明白 分類統計表的輸出需要 考生名冊的輸入

然後就是數據流的起點和終點,第三個已經說出來了,第二個也比較簡單,即與正確的成績表進行分開就好,第一個也很好理解,直接指到審定合格者

(1)分類統計成績中需要讀入考生成績,缺少從"考生名冊"到"2.4分類統計成績"的數據流。

(2)"2.1檢查成績表"缺少輸出數據流"錯誤成績表"。

(3)"2.2審定合格者"缺少輸入數據流"合格標準"。

問題3

這題應該是這三個中最簡單的

4.填寫考生通知單(內容包含該考生的准考證號、姓名、各課程成績及最終合格/不合格標誌),送給考生。

已經給出了,需要注意的是數據字典的寫法

 (1)准考證號+姓名+{課程名+成績}+合格/不合格標誌

(2)報名號+姓名+通信地址+出生年份+文化程度+職業

留給你們看的

閱讀下列說明和數據流圖,回答問題1~問題3。

【說明】

某醫院收費系統的主要功能是收取病人門診的各項費用。系統的收費功能分爲3個方面:病歷收費、掛號收費和根據處方單內容收取檢查或藥物費用。

1.病人初次來該醫院看病,首先購買病歷,記錄病人基本情況。

2.病人看病前要掛號。根據病人的病歷和門診部門(內科、外科等),系統提供相應的掛號單和處方單,並收取費用。

3.病人根據處方單進行進一步檢查或取藥前需交納各項費用。系統首先根據病人基本情況檢查處方單中病歷號是否正確,記錄合格的處方單,並提供收據。

4.所有收費都必須依據定價表中的定價來計算,且所有收費都必須寫入收費記錄中。

醫院收費系統的頂層圖如圖2所示;醫院收費系統的第O層DFD圖如圖3所示。其中,加工1的細化圖如圖4所示,加工2的細化圖如圖5所示。

假定頂層圖是正確的,"定價表"文件已由其他系統生成。

【數據流圖】

圖2醫院收費系統的頂層圖

圖3醫院收費系統的0層圖

圖4醫院收費系統的加工1子圖

圖5醫院收費系統的加工2子圖

【問題1】

指出哪張圖的哪些文件可以不必畫出。

【問題2】

數據流圖4中缺少2條數據流,請直接在圖中添加。

【問題3】

數據流圖5中缺少4條數據流,請直接在圖中添加。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章