




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第12章模塊化程序設(shè)計實戰(zhàn)12.1模塊化程序設(shè)計基礎(chǔ)12.2模塊化程序設(shè)計示例本章小結(jié)
12.1模塊化程序設(shè)計基礎(chǔ)
C語言是結(jié)構(gòu)化程序設(shè)計語言,它的程序設(shè)計特點就是以函數(shù)為主要模塊的模塊化程序設(shè)計。
1.函數(shù)和模塊
在使用C語言進行模塊化程序設(shè)計時,一般把邏輯功能完全獨立或相對獨立的程序部分設(shè)計成函數(shù),也叫子程序,這是一段可重復使用的代碼。每個函數(shù)只完成一個功能,作為程序的一個功能模塊。函數(shù)的使用既符合只有一個入口和出口的結(jié)構(gòu)化程序設(shè)計原則,又特別適合開發(fā)多功能大型程序。
2.文件
C程序文件按后綴分為“.c”和“.h”的兩類文件。“.c”文件為包含實際程序代碼的基本程序文件。“.h”文件稱為頭文件,一般包含類、子程序、變量和其他標識符的前置聲明。
頭文件內(nèi)容的安排可遵循如下原則:
(1)頭文件應該只包含所需的內(nèi)容,例如宏定義、結(jié)構(gòu)類型聲明、函數(shù)聲明等,而不包含具體實現(xiàn)。
(2)頭文件可以包括各種公用的類型定義。
(3)頭文件可以包括各種公用的宏定義,必要的時候可添加一些注釋以解釋頭文件的作用、包含的內(nèi)容、使用方法等。
(4)只用文件包含命令(#include)包含“.h”頭文件,不用它包含“.c”程序文件。
頭文件編寫的注意事項如下:
(1)把所有公用的類型定義、公用的結(jié)構(gòu)、聯(lián)合和枚舉聲明、公用的宏定義放在適當?shù)念^文件中,提供給各個文件參考。
(2)如果只有一個文件需要某個標準頭文件,則不要將它放在公用的頭文件中,應讓這個源程序文件直接包含它,以提高編譯效率。
(3)避免頭文件之間的循環(huán)依賴,因為頭文件之間的循環(huán)依賴可能導致編譯錯誤或者難以排查的問題。
(4)不要對頭文件重復編譯。
一個實用的系統(tǒng)一般都會由多個文件組成,文件的組織可遵循如下原則:
首先根據(jù)程序的規(guī)模和功能將程序劃分為多個子模塊,并建立一個或多個“.c”文件容納這些子模塊。這些文件可以包含一個或多個函數(shù)模塊,如果函數(shù)模塊較為復雜,則可將其單獨置于一個文件中。例如,主函數(shù)通常放在一個單獨的文件中,用來控制程序的流程;與輸入和輸出有關(guān)的功能可以放在一個文件中;同類型的功能可以放在一個文件中,如下節(jié)例12-1中的增、刪、改查這類操作。
然后根據(jù)源程序的文件數(shù)量和功能,設(shè)計相應的頭文件。
12.2模塊化程序設(shè)計示例
例12-1編寫一個小型學生成績管理系統(tǒng),該系統(tǒng)主要實現(xiàn)如下功能:
(1)存儲功能:用結(jié)構(gòu)類型數(shù)組存儲記錄。每一條記錄包括一個學生的學號、姓名、課程成績等。
(2)輸入功能:可以一次完成若干條記錄的輸入。
(3)顯示功能:顯示全部學生記錄。
(4)查找功能:按學號查找學生記錄并顯示。
(5)排序功能:按總分排序或按學號排序。
(6)插入功能:指定位置插入一條學生記錄。
(7)刪除功能:能刪除指定記錄。
(8)導入功能:能將學生數(shù)據(jù)保存到文件中,能將文件中的數(shù)據(jù)導入。
本例中要實現(xiàn)的功能即對程序的“需求”。在確定好需求之后,就可以開始對系統(tǒng)進行整體架構(gòu)設(shè)計。要實現(xiàn)題目要求的所有功能,必須編寫多個功能函數(shù)模塊。系統(tǒng)功能模塊圖如圖12-1所示。
圖12-1系統(tǒng)功能模塊圖
1.菜單設(shè)計
2.數(shù)據(jù)存儲方式及定義
學生的成績等信息用結(jié)構(gòu)類型數(shù)組進行存儲。建立學生信息數(shù)據(jù)結(jié)構(gòu)structstudent,該結(jié)構(gòu)包括學號、姓名、成績、總分、平均分、名次。
3.函數(shù)設(shè)計
在進行以函數(shù)為主要模塊的程序設(shè)計時,需要注意以下幾點:
(1)將程序按功能劃分成多個模塊,每個模塊負責一個具體的功能。要確保模塊之間的功能具有獨立性和內(nèi)聚性,減少模塊間的耦合度。
(2)在實現(xiàn)模塊時,遵循一致的編碼風格和規(guī)范,提高代碼的可讀性和可維護性。函數(shù)模塊的命名應該清晰,做到看見函數(shù)名即可了解大概功能。
(3)盡量避免使用全局變量,減少模塊間的依賴關(guān)系。
(4)應做到“邊寫邊測試”,在實現(xiàn)一個功能后,及時測試是否存在漏洞,避免在整合模塊后出錯卻無跡可尋。
1)輸入函數(shù)
輸入函數(shù)原型如下
intinput(STUDENT*stud,intn);
輸入函數(shù)的流程圖如圖12-2所示。
圖12-2輸入函數(shù)的流程圖
2)顯示函數(shù)
顯示函數(shù)原型如下:
voidprint(STUDENT*stud,intn);
該函數(shù)的功能是將stud指向的n條學生記錄顯示出來。
3)排序函數(shù)
排序函數(shù)原型如下:
voidsort(STUDENT*stud,intn);
該函數(shù)的功能是將stud指向的n條學生記錄按照學號或者總分進行排序。
排序函數(shù)的流程圖如圖12-3所示。
圖12-3排序函數(shù)的流程圖
4)查找函數(shù)
查找函數(shù)原型如下:
voidsearch(STUDENT*stud,intn);
該函數(shù)的功能是在stud指向的n條學生記錄中查找指定學號的學生記錄。
5)插入函數(shù)
插入函數(shù)原型如下:
intinsert(STUDENT*stud,intn);
該函數(shù)的功能是在stud指向的n條學生記錄中插入一條新記錄,根據(jù)學號大小將新記錄排于適當位置。
插入函數(shù)的流程圖如圖12-4所示。
圖12-4插入函數(shù)的流程圖
6)刪除函數(shù)
刪除函數(shù)原型如下:
intDelete(STUDENT*stud,intn);
該函數(shù)的功能是在stud指向的n條學生記錄中刪除指定學號的學生記錄。
刪除函數(shù)的流程圖如圖12-5所示。
圖12-5刪除函數(shù)的流程圖
7)保存數(shù)據(jù)到文件函數(shù)
保存數(shù)據(jù)到文件函數(shù)原型如下:
voidfileWrite(STUDENT*stud,intn);
該函數(shù)的功能是將stud指向的n條學生記錄存入指定的文件。
保存數(shù)據(jù)到文件函數(shù)的流程圖如圖12-6所示。
圖12-6保存數(shù)據(jù)到文件函數(shù)的流程圖
8)從文件導入數(shù)據(jù)
從文件導入數(shù)據(jù)函數(shù)原型如下:
intfileRead(STUDENT*stud);
該函數(shù)的功能是將文件中的數(shù)據(jù)導入stud指向的結(jié)構(gòu)類型數(shù)組中,并返回讀取記錄的條數(shù)。
從文件導入數(shù)據(jù)函數(shù)的流程圖如圖12-7所示。
圖12-7從文件導入數(shù)據(jù)函數(shù)的流程圖
4.文件設(shè)計
表12-1給出了程序的文件及函數(shù)組成。
1)頭文件sms_struct.h
2)主函數(shù)文件sms_main.c
3)輸入/輸出記錄文件sms_IOfunc.c
4)排序文件sms_sort.c
5)增、刪、改、查記錄文件sms_CRUD.c
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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-2030年中國鉛白市場發(fā)展現(xiàn)狀及前景趨勢分析報告
- 2025-2030年中國鎢鐵行業(yè)發(fā)展現(xiàn)狀及前景趨勢分析報告
- 2025-2030年中國轎車懸架彈簧轎行業(yè)發(fā)展狀況及前景趨勢分析報告
- 2025-2030年中國葡萄糖酸鈣市場競爭狀況及投資趨勢分析報告
- 2025-2030年中國色選機市場競爭格局及發(fā)展趨勢分析報告
- 2025-2030年中國紡織品直噴墨水行業(yè)發(fā)展趨勢與十三五規(guī)劃研究報告
- 2025-2030年中國立磨市場運行態(tài)勢及投資戰(zhàn)略研究報告
- 2025-2030年中國硫磺回收市場運行狀況及發(fā)展趨勢預測報告
- 2025-2030年中國石蠟行業(yè)市場運行狀況及發(fā)展策略分析報告
- 初中物理競賽及自主招生講義:第7講 密度、壓強與浮力(共5節(jié))含解析
- 2024-2025學年重慶市渝中區(qū)四年級(上)期末數(shù)學試卷
- 2025年人教版中考英語一輪復習:七年級下冊考點測試卷(含答案)
- 三年級體育下冊全冊教案
- 2024年八年級語文下冊《經(jīng)典常談》第一章《說文解字》練習題卷附答案
- (研究生)商業(yè)倫理與會計職業(yè)道德ppt教學課件(完整版)
- 三年級數(shù)學下冊單元計劃【9個單元全】
- 火力發(fā)電廠水汽化學監(jiān)督導則
- 二年級科學上冊期末考試質(zhì)量分析
- 相聲《治病》
- 行動學習-組織能力提升新境界培訓課件.ppt
評論
0/150
提交評論