版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、1第五章第五章 詳細設(shè)計詳細設(shè)計 總體設(shè)計是實現(xiàn)模塊的劃總體設(shè)計是實現(xiàn)模塊的劃分和模塊接口的設(shè)計;分和模塊接口的設(shè)計;詳細設(shè)計也稱過程設(shè)計。詳細設(shè)計也稱過程設(shè)計。 詳細詳細設(shè)計則是對每個模塊給出詳細設(shè)計則是對每個模塊給出詳細的過程性描述。的過程性描述。 但是,這些描述是應(yīng)用但是,這些描述是應(yīng)用詳細設(shè)計的表達詳細設(shè)計的表達工具工具來表達,來表達,而不是計算機上運行的程序。而不是計算機上運行的程序。21. 詳細設(shè)計的過程和任務(wù)詳細設(shè)計的過程和任務(wù) 1、 詳細設(shè)計的任務(wù)詳細設(shè)計的任務(wù) 詳細設(shè)計的總體目標是確定怎樣具體地實現(xiàn)所詳細設(shè)計的總體目標是確定怎樣具體地實現(xiàn)所要求的系統(tǒng)。即對軟件結(jié)構(gòu)圖的每個模塊
2、所采用的要求的系統(tǒng)。即對軟件結(jié)構(gòu)圖的每個模塊所采用的邏輯關(guān)系進行分析,設(shè)計出全部必要的過程細節(jié),邏輯關(guān)系進行分析,設(shè)計出全部必要的過程細節(jié),并給出清晰的描述,從而在編碼階段可以把這個描并給出清晰的描述,從而在編碼階段可以把這個描述直接翻譯成某種程序設(shè)計語言書寫的程序述直接翻譯成某種程序設(shè)計語言書寫的程序。詳細詳細設(shè)計的結(jié)果對最終程序代碼的質(zhì)量起著決定性的作設(shè)計的結(jié)果對最終程序代碼的質(zhì)量起著決定性的作用,對軟件的測試和維護人員了解模塊的內(nèi)部結(jié)構(gòu)用,對軟件的測試和維護人員了解模塊的內(nèi)部結(jié)構(gòu)也是很重要的。也是很重要的。3 2、 詳細設(shè)計的過程詳細設(shè)計的過程(1) 算法設(shè)計:為每個模塊確定算法,并用算
3、法設(shè)計:為每個模塊確定算法,并用適當?shù)墓ぞ弑磉_算法的過程,給出詳細的描適當?shù)墓ぞ弑磉_算法的過程,給出詳細的描述。述。(2) 數(shù)據(jù)結(jié)構(gòu)設(shè)計:確定每個模塊使用的數(shù)數(shù)據(jù)結(jié)構(gòu)設(shè)計:確定每個模塊使用的數(shù)據(jù)結(jié)構(gòu)和模塊接口的細節(jié),包括內(nèi)部接口、據(jù)結(jié)構(gòu)和模塊接口的細節(jié),包括內(nèi)部接口、外部接口、模塊的輸入、輸出及局部數(shù)據(jù)。外部接口、模塊的輸入、輸出及局部數(shù)據(jù)。(3)物理設(shè)計:確定文件、數(shù)據(jù)庫等物理結(jié)構(gòu),物理設(shè)計:確定文件、數(shù)據(jù)庫等物理結(jié)構(gòu),要明確相關(guān)數(shù)據(jù)的記錄格式、存儲方法、存要明確相關(guān)數(shù)據(jù)的記錄格式、存儲方法、存儲介質(zhì)等。儲介質(zhì)等。4(4) 測試預(yù)備設(shè)計:為每個模塊設(shè)計一組測試測試預(yù)備設(shè)計:為每個模塊設(shè)計一組
4、測試用例,以便在編碼階段對模塊代碼進行預(yù)用例,以便在編碼階段對模塊代碼進行預(yù)定的測試。定的測試。(5)其他設(shè)計:完整性控制(如:用戶訪問權(quán)其他設(shè)計:完整性控制(如:用戶訪問權(quán)限設(shè)置)、輸入輸出設(shè)計(如輸入輸出數(shù)限設(shè)置)、輸入輸出設(shè)計(如輸入輸出數(shù)據(jù)的類型,長度,數(shù)量等)、人機對話設(shè)據(jù)的類型,長度,數(shù)量等)、人機對話設(shè)計(對話方式內(nèi)容格式等)、數(shù)據(jù)代碼設(shè)計(對話方式內(nèi)容格式等)、數(shù)據(jù)代碼設(shè)計。計。(6) 編寫詳細設(shè)計說明書,提交復審。編寫詳細設(shè)計說明書,提交復審。53、詳細設(shè)計原則:、詳細設(shè)計原則:采用自頂向下、逐步求精的程序設(shè)計方法。采用自頂向下、逐步求精的程序設(shè)計方法。 在詳細設(shè)計過程中,采
5、用逐步求精的方法可以在詳細設(shè)計過程中,采用逐步求精的方法可以降低待處理問題的復雜度。降低待處理問題的復雜度。 使用順序、選擇、循環(huán)三種基本結(jié)構(gòu)構(gòu)造程序,使用順序、選擇、循環(huán)三種基本結(jié)構(gòu)構(gòu)造程序,具有單入、單出的控制結(jié)構(gòu)(取消具有單入、單出的控制結(jié)構(gòu)(取消GOTO語句,語句,以限制無條件跳轉(zhuǎn))以限制無條件跳轉(zhuǎn))設(shè)計人員組織結(jié)構(gòu)采用設(shè)計人員組織結(jié)構(gòu)采用“外科醫(yī)生外科醫(yī)生助手助手”模式。模式。 在這種組織結(jié)構(gòu)中,外科醫(yī)生和助手都應(yīng)了解在這種組織結(jié)構(gòu)中,外科醫(yī)生和助手都應(yīng)了解相關(guān)設(shè)計內(nèi)容,但相關(guān)設(shè)計內(nèi)容,但外科醫(yī)生外科醫(yī)生在設(shè)計中起在設(shè)計中起主導主導作用,作用,是設(shè)計的技術(shù)負責人,是設(shè)計的技術(shù)負責人,
6、助手助手只起只起技術(shù)支持技術(shù)支持作用。作用。此種模式區(qū)別于傳統(tǒng)的此種模式區(qū)別于傳統(tǒng)的“平等組合平等組合”模式,使設(shè)模式,使設(shè)計責任集中在少數(shù)人身上,避免了因觀點不同而計責任集中在少數(shù)人身上,避免了因觀點不同而造成的設(shè)計策略和接口的差異。造成的設(shè)計策略和接口的差異。6 2. 詳細設(shè)計的工具詳細設(shè)計的工具 詳細設(shè)計階段的工具分為圖形、表格和語言三類詳細設(shè)計階段的工具分為圖形、表格和語言三類。具體包括具體包括程序流程圖、程序流程圖、N-S圖(盒圖)、圖(盒圖)、PAD圖(問題圖(問題分析圖)、判定樹、判定表分析圖)、判定樹、判定表、PDL(過程設(shè)計)語言(過程設(shè)計)語言等。等。 1、程序流程圖、程序
7、流程圖(Program Flow Chart) 也稱程序框圖,歷史悠久且使用廣泛的一種算法也稱程序框圖,歷史悠久且使用廣泛的一種算法表達工具。表達工具?;痉柤盎痉柤?種基本控制結(jié)構(gòu)為:種基本控制結(jié)構(gòu)為:789( (1) 1) 順序結(jié)構(gòu)順序結(jié)構(gòu)(2) (2) 選擇結(jié)構(gòu)選擇結(jié)構(gòu)ABPBAFT(3) (3) 先判定型循環(huán)結(jié)構(gòu)先判定型循環(huán)結(jié)構(gòu)(while-loop)(4) (4) 后判定型循環(huán)結(jié)構(gòu)后判定型循環(huán)結(jié)構(gòu)(until-loop)TPSFFSTP(5) (5) 多情況選擇多情況選擇(case)TA1FP=1TA2FP=2TAnFP=n 任何復雜的程序流程圖都應(yīng)由任何復雜的程序流程圖都應(yīng)由
8、以上五種基本結(jié)構(gòu)組合而成。以上五種基本結(jié)構(gòu)組合而成。 10例:用程序流程圖描述例:用程序流程圖描述下列計算過程:下列計算過程:1)輸入數(shù)組)輸入數(shù)組A,元素個,元素個數(shù)為數(shù)為N2)MAX=A13)從)從A2AN與與MAX比較比較4)如新元素)如新元素MAX,則則 MAX=新元素新元素5)輸出最大數(shù))輸出最大數(shù)MAX開始開始輸入數(shù)組輸入數(shù)組AMAX=A1I=2I=NMAX0 時時:兩個不相等的實根兩個不相等的實根; 0結(jié)結(jié) 束束不是二次方程不是二次方程X1,2=-b/2aaacbbX2422,1YN12例:下圖表示一個非結(jié)構(gòu)化的程序。例:下圖表示一個非結(jié)構(gòu)化的程序。顯然,第顯然,第一個程序一個程
9、序流程圖代流程圖代表一個非表一個非結(jié)構(gòu)化程結(jié)構(gòu)化程序。因為序。因為有兩個程有兩個程序出口。序出口。第二個圖第二個圖為其修改為其修改圖。圖。開開 始始Pgq結(jié)結(jié) 束束FF開開 始始P & flaggq結(jié)結(jié) 束束Flag=1繼續(xù)退出, 1, 0flagflagFFflag=0TT13例:將以下偽碼轉(zhuǎn)換為程序流程圖。例:將以下偽碼轉(zhuǎn)換為程序流程圖。 語句語句 a; do 語句語句 b; if (X1=T) 語句語句f; if (X4=T) do 語句語句i; until(X5); else 語句語句 g; 語句語句 h; else switch (X2) case 1: while (X3) 語句語
10、句 c; case 2: 語句語句 d; case 3: 語句語句 e; until (X6); 語句語句j;14 15 優(yōu)點:使用方便、繪制簡單、容易掌握,優(yōu)點:使用方便、繪制簡單、容易掌握,且歷史且歷史“悠久悠久”,使用廣泛。,使用廣泛。 缺點:缺點:本質(zhì)上不具備逐步求精的特點,本質(zhì)上不具備逐步求精的特點,對于提高大型系統(tǒng)的可理解性作用甚微;對于提高大型系統(tǒng)的可理解性作用甚微; 不易表示數(shù)據(jù)結(jié)構(gòu);不易表示數(shù)據(jù)結(jié)構(gòu); 隨意性太強,流程箭頭靈活性過隨意性太強,流程箭頭靈活性過大,轉(zhuǎn)移控制太方便。大,轉(zhuǎn)移控制太方便。 趨勢:使用逐漸減少趨勢:使用逐漸減少161、順序結(jié)構(gòu)、順序結(jié)構(gòu)塊塊1塊塊2PF
11、T塊塊1塊塊22、選擇結(jié)構(gòu)、選擇結(jié)構(gòu)PFT 塊塊當條件成立時當條件成立時循環(huán)體循環(huán)體3、While當型循環(huán)當型循環(huán)直到條件成立直到條件成立循環(huán)體循環(huán)體5、Until直到型循環(huán)直到型循環(huán)6、Case多分支多分支選擇結(jié)構(gòu)選擇結(jié)構(gòu)P=1=2=nA1A2An7、調(diào)用模塊、調(diào)用模塊塊塊2、盒圖、盒圖(Box Diagram): 1973年提出的符合結(jié)構(gòu)化呈現(xiàn)年提出的符合結(jié)構(gòu)化呈現(xiàn)設(shè)計原則的圖形描述工具,又稱為設(shè)計原則的圖形描述工具,又稱為N-S 圖。圖。 P86頁頁For I=1,N塊塊4、For循環(huán)循環(huán)17例:用例:用N-S圖描述求數(shù)組元素的最大值。圖描述求數(shù)組元素的最大值。輸入數(shù)組輸入數(shù)組AMAX=
12、A1MAXAITFMAX=AI輸出輸出MAXFOR I=2,N1819x21cDo-While x323dek :2. 工具工具也可采用如下的方式:也可采用如下的方式:x4TFDo-Until x5ighfkx1TFbDo-Until x6aj20例:任意輸入一個日期,判斷該日期的第二天是何例:任意輸入一個日期,判斷該日期的第二天是何年何月何日?用年何月何日?用N-S圖描述其算法。圖描述其算法。輸入日期輸入日期計算本月有幾天計算本月有幾天本日是月尾本日是月尾FT日日日日+1月不變月不變月月=13日日 1月月月月+1FT月月 1年年年年+1輸出年、月、日輸出年、月、日21課堂練習:閱讀下列課堂練
13、習:閱讀下列C程序,畫出程序,畫出N-S圖。圖。Main() int a11, i, j, t; printf(“Input 10 numbers:n”); for ( i =1; i=10; i+) scanf(“%d”, &ai); for (j =1; j=9; j+) for ( i =1; iai+1) t = ai; ai= ai+1; ai+1=t; printf(“The sorted numbers:n”); for ( i =1; iai+1TFaiai+1輸出數(shù)組輸出數(shù)組aFOR i=1 to N-j222. 工具工具特點:特點: 沒有箭頭,不允許隨意轉(zhuǎn)移控制;沒有箭頭,
14、不允許隨意轉(zhuǎn)移控制; 每個矩形框每個矩形框(Case中條件取值例外中條件取值例外)都是一都是一個功能域個功能域(即一個特定結(jié)構(gòu)的作用域即一個特定結(jié)構(gòu)的作用域),結(jié),結(jié)構(gòu)表示明確;構(gòu)表示明確; 局部及全程數(shù)據(jù)的作用域易見;局部及全程數(shù)據(jù)的作用域易見; 易表現(xiàn)嵌套關(guān)系以及模塊的層次結(jié)構(gòu)。易表現(xiàn)嵌套關(guān)系以及模塊的層次結(jié)構(gòu)。23AB順序 While PS Until PS循環(huán)PABTHENELSE選擇P =A1A2Case型多分支An12n語句標號def定義3、PAD問題分析圖問題分析圖:PAD圖采用二維樹型結(jié)構(gòu)表示程圖采用二維樹型結(jié)構(gòu)表示程序的控制流。序的控制流?;痉柣痉柸缦拢喝缦拢?4對應(yīng)
15、于增量型循環(huán)結(jié)構(gòu) for i := n1 to n2 step n3 do在PAD中有相應(yīng)的循環(huán)控制結(jié)構(gòu)25輸入數(shù)組輸入數(shù)組AMAX=A1I=2, N, 1輸出輸出MAXMAXai+1TFai ai+1輸出數(shù)組輸出數(shù)組aFOR i=1 to N-j開始開始 結(jié)束結(jié)束 輸入輸入a輸出輸出 a j=1, N-1,1aiai+1ai ai+1 i=1, N-j, 1292. 工具工具特點:特點:結(jié)構(gòu)清晰,層次分明,易讀、易懂、易記;結(jié)構(gòu)清晰,層次分明,易讀、易懂、易記;支持逐步求精的設(shè)計思想;支持逐步求精的設(shè)計思想;支持結(jié)構(gòu)化程序設(shè)計;支持結(jié)構(gòu)化程序設(shè)計;容易將容易將PAD自動轉(zhuǎn)換為高級語言源程序。
16、自動轉(zhuǎn)換為高級語言源程序。 PAD不如程序流程圖和不如程序流程圖和N-S圖普及。圖普及。304、PDL(過程設(shè)計語言)(過程設(shè)計語言) 是一種描述功能模塊算法設(shè)計和加工細節(jié)的語言是一種描述功能模塊算法設(shè)計和加工細節(jié)的語言,也稱為程序設(shè)計語言也稱為程序設(shè)計語言.過程設(shè)計語言是在偽碼的基礎(chǔ)過程設(shè)計語言是在偽碼的基礎(chǔ)上,增加了控制結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)的定義,以完成模上,增加了控制結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)的定義,以完成模塊、數(shù)據(jù)和輸入輸出的描述(也可稱為塊、數(shù)據(jù)和輸入輸出的描述(也可稱為“偽碼偽碼”) PDLPDL是一種是一種“類語言類語言”,是由自然語言的詞匯和某,是由自然語言的詞匯和某一種高級語言的語法結(jié)合而成。
17、一種高級語言的語法結(jié)合而成。關(guān)鍵字具有固定的語法格式,可提供結(jié)構(gòu)化控制關(guān)鍵字具有固定的語法格式,可提供結(jié)構(gòu)化控制結(jié)構(gòu)、數(shù)據(jù)和模塊說明;結(jié)構(gòu)、數(shù)據(jù)和模塊說明;說明性語言可以采用自然語言、便于理解;說明性語言可以采用自然語言、便于理解;可說明簡單數(shù)據(jù)結(jié)構(gòu)和復雜數(shù)據(jù)結(jié)構(gòu);可說明簡單數(shù)據(jù)結(jié)構(gòu)和復雜數(shù)據(jù)結(jié)構(gòu);可完成模塊定義和說明,完成各種接口的描述??赏瓿赡K定義和說明,完成各種接口的描述??勺詣由沙绦蚩勺詣由沙绦?1 5 5、判定表、判定表 & & 判定樹判定樹 P43P43 當算法中包含多重嵌套的條件選擇時,用程序流當算法中包含多重嵌套的條件選擇時,用程序流程圖、程圖、N-S圖、圖、PAD圖或圖
18、或PDL(過程設(shè)計)語言都不(過程設(shè)計)語言都不易清楚描述。易清楚描述。 判斷表能表示復雜的條件組合與應(yīng)做動作之間的判斷表能表示復雜的條件組合與應(yīng)做動作之間的對應(yīng)關(guān)系。對應(yīng)關(guān)系。 (1)判定表判定表 判定表由四部分組成,制作時用雙線分割為判定表由四部分組成,制作時用雙線分割為4個個區(qū)域:左上部列出所有條件,左下部分是所有可能區(qū)域:左上部列出所有條件,左下部分是所有可能的動作,右上部是各種條件組合的一個矩陣,右下的動作,右上部是各種條件組合的一個矩陣,右下部是和每種條件取值組合相對應(yīng)的動作。部是和每種條件取值組合相對應(yīng)的動作。動作定義動作定義條件定義條件定義條件取值的組合條件取值的組合在各種取值
19、的組合下應(yīng)執(zhí)行的動作在各種取值的組合下應(yīng)執(zhí)行的動作32 判定表的判定表的優(yōu)點優(yōu)點是能夠簡潔、無二義性地描述所是能夠簡潔、無二義性地描述所有的處理規(guī)則,但只能表示靜態(tài)邏輯,不能作為通有的處理規(guī)則,但只能表示靜態(tài)邏輯,不能作為通用的設(shè)計工具。用的設(shè)計工具??梢圆扇〉牟襟E:可以采取的步驟:(1)提取問題中的條件:性別、年齡、婚姻。)提取問題中的條件:性別、年齡、婚姻。(2)標出條件取值:為了繪制方便,可用符號代替條)標出條件取值:為了繪制方便,可用符號代替條件取值。件取值。 例:申請汽車保險時規(guī)定:若申請者年齡在例:申請汽車保險時規(guī)定:若申請者年齡在21歲以下,歲以下,要額外收費;在要額外收費;在2
20、1歲以上并歲以上并26歲以下的女性,適合歲以下的女性,適合A類保險;類保險;26歲以下的已婚男性或歲以下的已婚男性或26歲以上的男性,適歲以上的男性,適合合B類保險;類保險; 21歲以下的女性或歲以下的女性或26歲以下的單身男性,歲以下的單身男性,適合適合C類保險;其他類型的人適合類保險;其他類型的人適合A類保險。類保險。33(4)提取可能采用的動作:)提取可能采用的動作:A類、類、 B類、類、 C類保險、額外收費。類保險、額外收費。條件名條件名取取 值值符符 號號取值數(shù)取值數(shù)年齡年齡=2121年齡年齡26年年 齡齡CYLm1=3男男女女MF性性 別別m2=2未婚未婚已婚已婚婚婚 姻姻WEm3
21、=2條件取值表條件取值表12321mmmm條條件件取取值值數(shù)數(shù)n n1 1i ii im mN:NN:N組合數(shù)組合數(shù)(3)計算所有條件的(3)計算所有條件的34額外收費額外收費123456789101112年年 齡齡性性 別別婚婚 姻姻A類保險類保險B類保險類保險C類保險類保險CCCCYYYYLLLLFFFFFFMMMMMMWWWWWWEEEEEE判判 定定 表表(5)制作判斷表)制作判斷表352. 工具工具例:航空行李托運費的算法例:航空行李托運費的算法按規(guī)定:按規(guī)定:重量不超過重量不超過30公斤公斤的行李可的行李可免費托運免費托運。重量超過重量超過30公斤時,對超運部分公斤時,對超運部分,
22、頭等頭等艙艙國內(nèi)乘客國內(nèi)乘客收收4元元/公斤公斤;其它艙位其它艙位國內(nèi)國內(nèi)乘客收乘客收6元元/公斤公斤;外國乘客外國乘客收費為國內(nèi)收費為國內(nèi)乘客的乘客的2倍倍;殘疾乘客殘疾乘客的收費為的收費為正常乘正常乘客客的的1/2。 36規(guī)則規(guī)則規(guī)則號規(guī)則號 條件分類條件分類收費計算收費計算37 (2)判定樹判定樹 判定樹是判斷表的變種,也能清晰地表示復雜判定樹是判斷表的變種,也能清晰地表示復雜的條件組合與應(yīng)作的動作之間的對應(yīng)關(guān)系。它的優(yōu)的條件組合與應(yīng)作的動作之間的對應(yīng)關(guān)系。它的優(yōu)點是形式簡單、直觀,不需要任何說明;缺點是不點是形式簡單、直觀,不需要任何說明;缺點是不如判定表簡潔,如判定表簡潔,同時與判斷
23、表一樣只能表示靜態(tài)邏同時與判斷表一樣只能表示靜態(tài)邏輯,不能作為通用的設(shè)計工具。輯,不能作為通用的設(shè)計工具。行李費行李費算法算法行李重量行李重量W 30行李重量行李重量W 30免費免費國內(nèi)乘客國內(nèi)乘客外國乘客外國乘客頭等艙頭等艙其他艙其他艙殘疾乘客殘疾乘客正常乘客正常乘客(W-30) 2(W-30) 4殘疾乘客殘疾乘客正常乘客正常乘客(W-30) 3(W-30) 6頭等艙頭等艙其他艙其他艙殘疾乘客殘疾乘客正常乘客正常乘客(W-30) 4(W-30) 8殘疾乘客殘疾乘客正常乘客正常乘客(W-30) 6(W-30) 12注:判定表與判定樹并不適用于注:判定表與判定樹并不適用于作為一種通用的設(shè)計工具,
24、不能作為一種通用的設(shè)計工具,不能表示順序結(jié)構(gòu)、循環(huán)結(jié)構(gòu),通常表示順序結(jié)構(gòu)、循環(huán)結(jié)構(gòu),通常將之用于輔助測試。將之用于輔助測試。38用判定樹表示計算行李費的算法用判定樹表示計算行李費的算法注:判定表與判定樹并不適用于注:判定表與判定樹并不適用于作為一種通用的設(shè)計工具,不能作為一種通用的設(shè)計工具,不能表示順序結(jié)構(gòu)、循環(huán)結(jié)構(gòu),通常表示順序結(jié)構(gòu)、循環(huán)結(jié)構(gòu),通常將之用于輔助測試。將之用于輔助測試。汽車保險例汽車保險例2121:A A類保險類保險年齡年齡收費收費2121:C C類保險且額外類保險且額外年齡年齡女女2626:B B類保險類保險年齡年齡未婚:未婚:C C類保險類保險已婚:已婚:B B類保險類保險
25、2626年齡年齡2121收費收費已婚:已婚:B B類保險且額外類保險且額外收費收費未婚:未婚:C C類保險且額外類保險且額外2121年齡年齡男男保險類別保險類別39課堂練習:課堂練習: 某校根據(jù)專、兼職教師決定其課時標準。規(guī)定專職教師課某校根據(jù)專、兼職教師決定其課時標準。規(guī)定專職教師課時津貼:教授時津貼:教授50元,副教授元,副教授40元,講師元,講師30元,助教元,助教20元;兼職元;兼職教師中教授教師中教授60元,副教授元,副教授50元,講師元,講師40元,助教元,助教30元;試用判元;試用判定表和判定樹表示各類教師的課時津貼。定表和判定樹表示各類教師的課時津貼。條件名條件名取取 值值符符
26、 號號取值數(shù)取值數(shù)教教 授授副教授副教授講講 師師助助 教教職職 稱稱ABCDm1=4專職專職兼職兼職專兼職專兼職TFm2=2條件取值表條件取值表821mmm條條件件取取值值數(shù)數(shù)4012345678職稱職稱專兼職專兼職AABBCCDDTFTFTFTF判判 定定 表表60元元50元元40元元30元元20元元當有多個動作,且每一列規(guī)則只有一個動作時,也可采用下表:當有多個動作,且每一列規(guī)則只有一個動作時,也可采用下表:12345678職稱AABBCCDD專兼職TFTFTFTF課時津貼50604050304020304130元30元教教 助助40元40元師師 講講50元50元副教授副教授60元60元
27、 授 授教教兼職兼職20元20元教教 助助30元30元師師 講講40元40元副教授副教授50元50元 授 授教教專職專職課時津貼課時津貼423. Jackson 程序設(shè)計方法程序設(shè)計方法(JSD) 在前面我們介紹了在前面我們介紹了面向數(shù)據(jù)流的設(shè)計方法面向數(shù)據(jù)流的設(shè)計方法(SD方法),在總體設(shè)計中常用該方法。在詳細設(shè)計階方法),在總體設(shè)計中常用該方法。在詳細設(shè)計階段,采用的主要方法是面向數(shù)據(jù)結(jié)構(gòu)的方法段,采用的主要方法是面向數(shù)據(jù)結(jié)構(gòu)的方法,即即Jackson方法和方法和Warnier方法。方法。 1、基本思想、基本思想 在在20世紀世紀60年代,有專家認為,內(nèi)在數(shù)據(jù)結(jié)構(gòu)年代,有專家認為,內(nèi)在數(shù)據(jù)
28、結(jié)構(gòu)致關(guān)重要,可致關(guān)重要,可利用輸入數(shù)據(jù)結(jié)構(gòu)和輸出數(shù)據(jù)結(jié)構(gòu)來利用輸入數(shù)據(jù)結(jié)構(gòu)和輸出數(shù)據(jù)結(jié)構(gòu)來推導出程序結(jié)構(gòu)。推導出程序結(jié)構(gòu)。在許多領(lǐng)域,在許多領(lǐng)域,數(shù)據(jù)的結(jié)構(gòu)十分出數(shù)據(jù)的結(jié)構(gòu)十分出色地指示了程序的結(jié)構(gòu)色地指示了程序的結(jié)構(gòu)。面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法。面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法就是利用這些結(jié)構(gòu)來作為開發(fā)軟件的基礎(chǔ)。就是利用這些結(jié)構(gòu)來作為開發(fā)軟件的基礎(chǔ)。43 2、SD方法與方法與JSD方法的異同方法的異同 面向數(shù)據(jù)流的設(shè)計面向數(shù)據(jù)流的設(shè)計(SD方法和方法和OOD)和面向數(shù)據(jù)和面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計結(jié)構(gòu)的設(shè)計(JSD方法方法)的的相同點是:相同點是:都以數(shù)據(jù)信息驅(qū)都以數(shù)據(jù)信息驅(qū)動,都試圖將數(shù)據(jù)表示轉(zhuǎn)換為軟件表示
29、;動,都試圖將數(shù)據(jù)表示轉(zhuǎn)換為軟件表示; 不同點是:面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計不利用數(shù)據(jù)流,不同點是:面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計不利用數(shù)據(jù)流,而根據(jù)數(shù)據(jù)結(jié)構(gòu)的表示來設(shè)計。而根據(jù)數(shù)據(jù)結(jié)構(gòu)的表示來設(shè)計。JSD根據(jù)輸入、輸根據(jù)輸入、輸出的數(shù)據(jù)結(jié)構(gòu),按一定的規(guī)則映射成軟件的過程描出的數(shù)據(jù)結(jié)構(gòu),按一定的規(guī)則映射成軟件的過程描述,述,即程序結(jié)構(gòu)即程序結(jié)構(gòu);而而SD方法根據(jù)數(shù)據(jù)流圖來設(shè)計,方法根據(jù)數(shù)據(jù)流圖來設(shè)計,最終目標是建立軟件體系結(jié)構(gòu)的描述,最終目標是建立軟件體系結(jié)構(gòu)的描述,即軟件的層即軟件的層次結(jié)構(gòu)次結(jié)構(gòu)。44ABCBCA =ABoCoSA =SCBA = BAB*I3、 Jackson圖圖 (1) 順序結(jié)構(gòu):順序結(jié)構(gòu)
30、:數(shù)據(jù)由一個或多個元素組成,每個元數(shù)據(jù)由一個或多個元素組成,每個元素按確定次序出現(xiàn)一次。素按確定次序出現(xiàn)一次。(2) 選擇結(jié)構(gòu):選擇結(jié)構(gòu):數(shù)據(jù)包含兩個或多個元素,每次使用數(shù)據(jù)包含兩個或多個元素,每次使用數(shù)據(jù)時按一定條件從這些元素中選擇一個。數(shù)據(jù)時按一定條件從這些元素中選擇一個。(3) 重復結(jié)構(gòu):重復結(jié)構(gòu):數(shù)據(jù)由一個元素出現(xiàn)零次或多次構(gòu)成。數(shù)據(jù)由一個元素出現(xiàn)零次或多次構(gòu)成。45(1) 順序結(jié)構(gòu):順序結(jié)構(gòu): A seq B C A end(2) 選擇結(jié)構(gòu):選擇結(jié)構(gòu): A select代碼代碼1 B A or 代碼代碼2 C A or 代碼代碼3 D A end(3) 重復結(jié)構(gòu):重復結(jié)構(gòu): A it
31、er until(while) 代碼代碼 B A end4、JSD使用的偽碼使用的偽碼465 5、JacksonJackson方法方法 Jackson Jackson方法由下述五步組成:方法由下述五步組成:(1)(1)分析并確定分析并確定輸入、輸出數(shù)據(jù)輸入、輸出數(shù)據(jù)的邏輯結(jié)構(gòu),的邏輯結(jié)構(gòu),并用并用JacksonJackson數(shù)據(jù)結(jié)構(gòu)圖數(shù)據(jù)結(jié)構(gòu)圖描述所用的數(shù)據(jù)描述所用的數(shù)據(jù)結(jié)構(gòu)。結(jié)構(gòu)。(2)(2)找出找出輸入數(shù)據(jù)結(jié)構(gòu)與輸出數(shù)據(jù)結(jié)構(gòu)之間輸入數(shù)據(jù)結(jié)構(gòu)與輸出數(shù)據(jù)結(jié)構(gòu)之間有對應(yīng)關(guān)系的單元有對應(yīng)關(guān)系的單元。有。有對應(yīng)關(guān)系指有直接對應(yīng)關(guān)系指有直接的因果關(guān)系,程序可一起處理的數(shù)據(jù)的單的因果關(guān)系,程序可一起處理
32、的數(shù)據(jù)的單元。若是重復的數(shù)據(jù)單元,重復次序、次元。若是重復的數(shù)據(jù)單元,重復次序、次數(shù)必須相同才算對應(yīng)。數(shù)必須相同才算對應(yīng)。47(3) (3) 由數(shù)據(jù)結(jié)構(gòu)確定程序結(jié)構(gòu)。映射規(guī)則主要有以由數(shù)據(jù)結(jié)構(gòu)確定程序結(jié)構(gòu)。映射規(guī)則主要有以下三條:下三條: 為每對為每對有對應(yīng)關(guān)系的數(shù)據(jù)單元有對應(yīng)關(guān)系的數(shù)據(jù)單元,按所在數(shù)據(jù)結(jié),按所在數(shù)據(jù)結(jié)構(gòu)的層次,在程序結(jié)構(gòu)的適當位置構(gòu)的層次,在程序結(jié)構(gòu)的適當位置畫一個處理框畫一個處理框。 為為輸入數(shù)據(jù)結(jié)構(gòu)輸入數(shù)據(jù)結(jié)構(gòu)中每一中每一剩余數(shù)據(jù)單元畫一處理剩余數(shù)據(jù)單元畫一處理框???。 為為輸出數(shù)據(jù)結(jié)構(gòu)輸出數(shù)據(jù)結(jié)構(gòu)中每一中每一剩余數(shù)據(jù)單元畫一處理剩余數(shù)據(jù)單元畫一處理框???。 簡單說,每對
33、簡單說,每對有對應(yīng)關(guān)系的數(shù)據(jù)單元合畫一框,有對應(yīng)關(guān)系的數(shù)據(jù)單元合畫一框,沒有對應(yīng)關(guān)系的所有數(shù)據(jù)單元各畫一框沒有對應(yīng)關(guān)系的所有數(shù)據(jù)單元各畫一框。(4) (4) 列出和分配可執(zhí)行操作。列出和分配可執(zhí)行操作。(5) (5) 寫出與程序結(jié)構(gòu)圖對應(yīng)的偽代碼表示。寫出與程序結(jié)構(gòu)圖對應(yīng)的偽代碼表示。48 例:一個例:一個正文文件正文文件由由若干個記錄若干個記錄組成,每個組成,每個記記錄是一個字符串錄是一個字符串。要求。要求統(tǒng)計每個記錄中空格字符統(tǒng)計每個記錄中空格字符的個數(shù)的個數(shù),以及文件中空格字符的總個數(shù)。以及文件中空格字符的總個數(shù)。要求的要求的輸出一張表格,輸出一張表格,其數(shù)據(jù)格式是:每其數(shù)據(jù)格式是:每復
34、制一行輸入復制一行輸入字符串字符串之后,之后,另起一行印出這個字符串中的空格另起一行印出這個字符串中的空格數(shù)數(shù),最后最后印出文件中印出文件中空格的總個數(shù)空格的總個數(shù)。49第第1 1步:用步:用JacksonJackson圖描述圖描述 I/O I/O 的數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu)正文文件正文文件I字符串字符串*字符字符*空格空格O非空格非空格OIS輸入輸入輸出表格輸出表格表格體表格體串信息串信息*字符串字符串空格數(shù)空格數(shù)I輸出輸出空格總數(shù)空格總數(shù)第第2 2步:在兩個圖中指出有直接因果關(guān)系步:在兩個圖中指出有直接因果關(guān)系、可以同時可以同時處理的單元(重復的次序,次數(shù)均相同)處理的單元(重復的次序,次數(shù)均相
35、同)50正文文件正文文件I字符串字符串*字符字符*空格空格O非空格非空格OIS輸入輸入輸出表格輸出表格表格體表格體串信息串信息*字符串字符串空格數(shù)空格數(shù)I輸出輸出空格總數(shù)空格總數(shù)? 經(jīng)過程序處理由經(jīng)過程序處理由正文文件正文文件得到得到輸出表格輸出表格。 每處理輸入中一個每處理輸入中一個字符串字符串后就得到輸出中一個后就得到輸出中一個串信息串信息,二者重復次序和次數(shù)均相同。二者重復次序和次數(shù)均相同。 字符字符不能與多字符組成的不能與多字符組成的字符串字符串對應(yīng)。對應(yīng)。 單個單個空格空格不能決定不能決定空格數(shù)空格數(shù)。51正文文件正文文件I字符串字符串*字符字符*空格空格O非空格非空格OIS輸入輸入
36、輸出表格輸出表格表格體表格體串信息串信息*字符串字符串空格數(shù)空格數(shù)I輸出輸出空格總數(shù)空格總數(shù)統(tǒng)計空格統(tǒng)計空格處理字符串處理字符串*I程序體程序體印總數(shù)印總數(shù)印字符串印字符串印空格數(shù)印空格數(shù)分析字符分析字符*I分析字符串分析字符串處理空格處理空格o處理非空格處理非空格oS注:順序執(zhí)行的處理中不允許混有重注:順序執(zhí)行的處理中不允許混有重復執(zhí)行或選擇執(zhí)行的處理,故在復執(zhí)行或選擇執(zhí)行的處理,故在第四層增加了第四層增加了“分析字符串分析字符串”。第第3 3步:數(shù)據(jù)結(jié)構(gòu)步:數(shù)據(jù)結(jié)構(gòu) 程序結(jié)構(gòu)程序結(jié)構(gòu)把有對應(yīng)關(guān)系的單元合為一個處理框,畫把有對應(yīng)關(guān)系的單元合為一個處理框,畫在相應(yīng)的層次中(在相應(yīng)的層次中(不同
37、層以低層為準不同層以低層為準)52第第4 4步:列出所有操作條步:列出所有操作條件,并分配到上幅程序件,并分配到上幅程序結(jié)構(gòu)圖中。結(jié)構(gòu)圖中。統(tǒng)計空格統(tǒng)計空格處理字符串處理字符串*I(1)程序體程序體印總數(shù)印總數(shù)印字符串印字符串印空格數(shù)印空格數(shù)分析字符分析字符*I2分析字符串分析字符串處理空格處理空格o處理非空格處理非空格oS23145打開文件打開文件讀入字符串讀入字符串空格總數(shù)空格總數(shù) totalsum=0關(guān)閉文件關(guān)閉文件停止停止I 文件結(jié)束文件結(jié)束I (2)字符串結(jié)束字符串結(jié)束53統(tǒng)計空格 seq 打開文件 讀入字符串 total sum:=0 程序體 iter until 文件結(jié)束 處理字
38、符串 seq 印字符串seq 印出字符串 印字符串end sum:=0 pointer:=1 分析字符串 iter until 字符串結(jié)束 分析字符 select 字符是空格 處理空格 seq sum:=sum + 1 pointer:= pointer+1 處理空格 end 第第5步:用偽代碼表示程序。步:用偽代碼表示程序。統(tǒng)計空統(tǒng)計空格格處理字符處理字符串串*I(1)程序體程序體印總數(shù)印總數(shù)印字符印字符串串印空格印空格數(shù)數(shù)分析字符分析字符*I分析字符分析字符串串處理空處理空格格o處理非空處理非空格格oS2314554分析字符串 or 字符不是空格 處理非空格 seq pointer:= p
39、ointer+1 處理非空格 end 分析字符end 分析字符串 end 印空格數(shù) seq 印出空格數(shù)目 印空格數(shù) end total sum:=total sum + sum 讀入字符串 處理字符串 end 程序體 end 印總數(shù)seq 印出空格總數(shù) 印總數(shù)end 關(guān)閉文件 停止統(tǒng)計空格end跳過下個例題55 例:某倉庫存放多種零件例:某倉庫存放多種零件(如如P1,P2, ),每個零件每個零件的每次進貨、發(fā)貨都有的每次進貨、發(fā)貨都有一張卡片一張卡片作出記錄,每月根作出記錄,每月根據(jù)這樣一疊卡片打印一張月報表。在報表中每行均據(jù)這樣一疊卡片打印一張月報表。在報表中每行均要列出某種零件的名稱和本月
40、庫存量的凈變化。用要列出某種零件的名稱和本月庫存量的凈變化。用JSD方法對該問題進行設(shè)計。方法對該問題進行設(shè)計。 分析:分析: (1) 輸入數(shù)據(jù):輸入數(shù)據(jù):把同一種零件的卡片放在一起組成把同一種零件的卡片放在一起組成一組,所有的卡片組按零件名排序。輸入數(shù)據(jù)由許一組,所有的卡片組按零件名排序。輸入數(shù)據(jù)由許多零件組組成的文件,每個零件組有許多張卡片,多零件組組成的文件,每個零件組有許多張卡片,每張卡片記錄本零件進貨或發(fā)貨的信息。每張卡片記錄本零件進貨或發(fā)貨的信息。 (2)輸出數(shù)據(jù):輸出數(shù)據(jù):輸出數(shù)據(jù)是一張月報表,它由表頭和輸出數(shù)據(jù)是一張月報表,它由表頭和表體組成,表體有多行,一個零件的凈變化占一行
41、。表體組成,表體有多行,一個零件的凈變化占一行。56第第1 1步:用步:用JacksonJackson圖描述圖描述 I/O 的數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu)輸入文件輸入文件I零件組零件組*卡片卡片*進貨進貨O發(fā)貨發(fā)貨OIS輸入輸入輸出輸出表體表體行行*零件名零件名凈變化凈變化I表頭表頭月報表月報表第第2 2步:在兩個圖中指出有直接因果關(guān)系步:在兩個圖中指出有直接因果關(guān)系、可以同時可以同時處理的單元(重復的次序,次數(shù)均相同)處理的單元(重復的次序,次數(shù)均相同)月報表月報表零件名凈變化P1P2P3.+200-100+300.57輸入文件輸入文件I零件組零件組*卡片卡片*進貨進貨O發(fā)貨發(fā)貨OIS輸輸 入入表體表
42、體行行*零件名零件名凈變化凈變化I表頭表頭月報表月報表輸輸 出出經(jīng)過程序處理由經(jīng)過程序處理由輸入文件輸入文件得到得到月報表。月報表。表體的每一行數(shù)據(jù)由輸入文件的每一個表體的每一行數(shù)據(jù)由輸入文件的每一個“零件組零件組”計算而來,行數(shù)與組數(shù)相同,且行的排列次序與組計算而來,行數(shù)與組數(shù)相同,且行的排列次序與組的排列次序一致,都按零件號排序。故的排列次序一致,都按零件號排序。故“零件組零件組”與與“行行”兩個單元對應(yīng)。兩個單元對應(yīng)。58第第3 3步步:數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu) 程序結(jié)構(gòu)程序結(jié)構(gòu) 把有對應(yīng)關(guān)系的單元合為一個處理框,畫在相應(yīng)的層把有對應(yīng)關(guān)系的單元合為一個處理框,畫在相應(yīng)的層次中(不同層以低層為準)
43、次中(不同層以低層為準)輸入文件輸入文件I零件組零件組*卡片卡片*進貨進貨O發(fā)貨發(fā)貨OIS輸輸 入入表體表體行行*零件名零件名凈變化凈變化I表頭表頭月報表月報表輸輸 出出由輸入文件產(chǎn)生月報表由輸入文件產(chǎn)生月報表由零件組產(chǎn)生輸出行由零件組產(chǎn)生輸出行*I產(chǎn)生表體產(chǎn)生表體產(chǎn)生表頭產(chǎn)生表頭產(chǎn)生零件名產(chǎn)生零件名產(chǎn)生凈變化產(chǎn)生凈變化處理卡片處理卡片*I處理零件組處理零件組處理進貨處理進貨o處理發(fā)貨處理發(fā)貨oS 注:順序執(zhí)行的處理中不允許混有注:順序執(zhí)行的處理中不允許混有重復執(zhí)行或選擇執(zhí)行的處理,故重復執(zhí)行或選擇執(zhí)行的處理,故在第四層增加了在第四層增加了“處理零件組處理零件組”59第第4 4步:列出所有操作
44、條步:列出所有操作條件,并分配到程序結(jié)構(gòu)件,并分配到程序結(jié)構(gòu)圖中圖中打開文件打開文件讀一張卡讀一張卡置零件組開始標志置零件組開始標志關(guān)閉文件關(guān)閉文件停止停止(6)產(chǎn)生行結(jié)束符產(chǎn)生行結(jié)束符(7)打印字符行打印字符行(8)打印凈變化打印凈變化(9)累計進貨量累計進貨量(10)累計發(fā)貨量累計發(fā)貨量I (1)輸入條件未結(jié)束輸入條件未結(jié)束I (2)零件組未結(jié)束零件組未結(jié)束S (3)進發(fā)貨標志進發(fā)貨標志由輸入文件產(chǎn)生月報表由輸入文件產(chǎn)生月報表產(chǎn)生表頭產(chǎn)生表頭產(chǎn)生表體產(chǎn)生表體23145由零件組產(chǎn)生輸出行由零件組產(chǎn)生輸出行*I(1)產(chǎn)生零件名產(chǎn)生零件名產(chǎn)生凈變化產(chǎn)生凈變化處理卡片處理卡片*I(2)處理零件組處理零件組處理進貨處理進貨o處理發(fā)貨處理發(fā)貨oS(3)79108660第第5 5步:用偽代碼表示程序步:用偽代碼表示程序產(chǎn)生月報表產(chǎn)生月報表seq 打開文件打開文件 讀一張卡讀一張卡 置零件組開始標志置零件組開始標志 產(chǎn)生表頭產(chǎn)生表頭 產(chǎn)生表體產(chǎn)生表體iter while 輸入文件未結(jié)束輸入文件未結(jié)束 由零件組產(chǎn)生輸出行由零件組產(chǎn)生輸出行seq 產(chǎn)生零件名產(chǎn)生零件名seq 打印字符行打印字符行 產(chǎn)生零件名產(chǎn)生零件名end 處
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年滬教新版九年級歷史上冊階段測試試卷
- 2025年統(tǒng)編版九年級歷史下冊階段測試試卷含答案
- 2025年度企業(yè)內(nèi)部培訓項目合作協(xié)議合同范本4篇
- 2025年人教新起點必修1歷史下冊階段測試試卷含答案
- 2025年人教B版選修3歷史下冊月考試卷
- 二零二五版苗木養(yǎng)護管理服務(wù)合同2篇
- 二零二五版南京二手房買賣電子合同范本4篇
- 二零二五年度二零二五互聯(lián)網(wǎng)金融服務(wù)合同規(guī)范范本4篇
- 2025年度墻體改梁與建筑智能化升級合同4篇
- 二零二五年度農(nóng)藥產(chǎn)品生產(chǎn)安全培訓采購合同4篇
- 環(huán)境監(jiān)測對環(huán)境保護的意義
- 2023年數(shù)學競賽AMC8試卷(含答案)
- 神經(jīng)外科課件:神經(jīng)外科急重癥
- 2024年低壓電工證理論考試題庫及答案
- 2023年十天突破公務(wù)員面試
- 《瘋狂動物城》中英文對照(全本臺詞)
- 醫(yī)院住院醫(yī)師規(guī)范化培訓證明(樣本)
- 小學六年級語文閱讀理解100篇(及答案)
- 氣功修煉十奧妙
- 安徽省物業(yè)服務(wù)標準
- 勾股定理的歷史與證明課件
評論
0/150
提交評論