第10章 綜合應用程序設計_第1頁
第10章 綜合應用程序設計_第2頁
第10章 綜合應用程序設計_第3頁
第10章 綜合應用程序設計_第4頁
第10章 綜合應用程序設計_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、1第10章 綜合應用程序設計問題問題原由原由從從第章介紹了第章介紹了C/C+程序設計的基本內容。程序設計的基本內容。怎樣從軟件工程的角度進行綜合應用程序設計呢?怎樣從軟件工程的角度進行綜合應用程序設計呢?本章力圖通過綜合應用程序設計實例,全面了解和本章力圖通過綜合應用程序設計實例,全面了解和掌握開發(fā)應用程序的全過程。掌握開發(fā)應用程序的全過程。本章通過四本章通過四個實例個實例項目項目( (電子電子萬年歷、萬年歷、俄羅斯方塊俄羅斯方塊游戲、游戲、圖書借閱管理系統(tǒng)、學生成績管理圖書借閱管理系統(tǒng)、學生成績管理系統(tǒng)系統(tǒng)) )的的程序設計,全面概括了程序設計,全面概括了C語言的所有內容以及語言的所有內容以

2、及C+語言的初步應用,語言的初步應用,教學教學重點重點能力能力要求要求掌握掌握: : 應用程序的基本設計方法的開發(fā)步驟。應用程序的基本設計方法的開發(fā)步驟。了解:了解:通過應用成績設計,了解軟件工程概念。通過應用成績設計,了解軟件工程概念。熟悉熟悉: : 編寫程序代碼、程序調試和程序測試方法。編寫程序代碼、程序調試和程序測試方法。 2 10.1 電子萬年歷電子萬年歷 10.4 學生成績管理系統(tǒng)學生成績管理系統(tǒng) 10.3 圖書借閱管理系統(tǒng)圖書借閱管理系統(tǒng) 10.2 俄羅斯方塊游戲俄羅斯方塊游戲310.1電子萬年歷 電子萬年歷在計算機系統(tǒng)中、手機里、電子詞典中、電子萬年歷在計算機系統(tǒng)中、手機里、電子

3、詞典中、MP4播放器中、辦公桌上,甚至家庭擺設等隨處可見。播放器中、辦公桌上,甚至家庭擺設等隨處可見。 掌握語言程序設計的基本知識、基本思想和基本應用,掌握語言程序設計的基本知識、基本思想和基本應用,熟悉了解開發(fā)應用系統(tǒng)的基本方法。熟悉了解開發(fā)應用系統(tǒng)的基本方法。 標準輸入標準輸入/輸出函數的應用;輸出函數的應用; 順序結構、選擇結構、循環(huán)結構的程序設計方法;順序結構、選擇結構、循環(huán)結構的程序設計方法; 系統(tǒng)庫函數的應用方法;系統(tǒng)庫函數的應用方法; 用戶自定義函數的定義、聲明及調用方法等。用戶自定義函數的定義、聲明及調用方法等。 按功能模塊進行設計、組織、調試的基本方法。按功能模塊進行設計、組

4、織、調試的基本方法。 410.1.2系統(tǒng)需求分析 電子萬年歷用來提供查詢電子萬年歷用來提供查詢,主要實現以下三個查詢功能主要實現以下三個查詢功能: 功能功能1:要求從鍵盤輸入年份,輸出該年要求從鍵盤輸入年份,輸出該年12個月的日歷。個月的日歷。 功能功能2:要求從鍵盤輸入年份和月份,輸出該月的日歷。要求從鍵盤輸入年份和月份,輸出該月的日歷。 功能功能3:要求從鍵盤輸入年要求從鍵盤輸入年、月月、日日, 輸出該日是星期幾輸出該日是星期幾。 日歷顯示功能:日歷顯示功能:自動顯示系統(tǒng)日期所在月份的月歷,自動顯示系統(tǒng)日期所在月份的月歷,并能突出顯示當期日期。并能突出顯示當期日期。 日期查詢功能:日期查詢

5、功能:顯示查詢日期、月份、是否為閏年。顯示查詢日期、月份、是否為閏年。 支持鍵盤操作:支持鍵盤操作:通過鍵盤調整年份、月份和日期。通過鍵盤調整年份、月份和日期。 參數排錯功能:參數排錯功能:能對輸入的日期進行合法性檢查。能對輸入的日期進行合法性檢查。510.1.3系統(tǒng)總體設計根據以上需求分析,系統(tǒng)應有功能控制、打印輸出、日根據以上需求分析,系統(tǒng)應有功能控制、打印輸出、日歷顯示和鍵值獲取等歷顯示和鍵值獲取等4個功能模塊,系統(tǒng)結構如圖個功能模塊,系統(tǒng)結構如圖101所示所示。 圖圖 101 系統(tǒng)功能模塊系統(tǒng)功能模塊功功能能控控制制模模塊塊打打印印輸輸出出模模塊塊日日歷歷顯顯示示模模塊塊鍵鍵值值獲獲取

6、取模模塊塊萬年歷系統(tǒng)萬年歷系統(tǒng)610.1.3系統(tǒng)總體設計 本系統(tǒng)的結構由本系統(tǒng)的結構由4個模塊所組成,由主函數個模塊所組成,由主函數main()實行控實行控制,按照系統(tǒng)工作順序,其工作流程如圖制,按照系統(tǒng)工作順序,其工作流程如圖102所示。所示。主控函數主要對輸入參數進行檢查,以保證輸入參數正主控函數主要對輸入參數進行檢查,以保證輸入參數正確,不會對后續(xù)程序造成影響;其次,對輸入的年份和月份確,不會對后續(xù)程序造成影響;其次,對輸入的年份和月份進行處理和計算,判斷輸入年份是否為閏年。進行處理和計算,判斷輸入年份是否為閏年。圖圖 10102 2 萬年歷設計流程圖萬年歷設計流程圖顯示當日日期顯示當日

7、日期開開 始始結結 束束顯示當月第顯示當月第1 1天是星期幾天是星期幾是否為閏年是否為閏年輸入輸入yearyear、monthmonth、dayday輸入合法嗎?輸入合法嗎?710.1.3系統(tǒng)總體設計 功能控制模塊:功能控制模塊:用來實現日期合法性檢查、閏年判斷用來實現日期合法性檢查、閏年判斷和星期計算。和星期計算。 打印輸出模塊:打印輸出模塊:用來實現輸出顯示和打印指定個數的用來實現輸出顯示和打印指定個數的空格、打印分隔線、打印用戶使用手冊、打印當前日期你對空格、打印分隔線、打印用戶使用手冊、打印當前日期你對應的星期以及打印給定的星期。應的星期以及打印給定的星期。 日歷顯示模塊:日歷顯示模塊

8、:用來實現日歷生成和顯示。用來實現日歷生成和顯示。 鍵值獲取模塊:鍵值獲取模塊:主要用于對鍵盤操作的響應,由函數主要用于對鍵盤操作的響應,由函數void getKey Value()獲取按鍵值,根據鍵值調整當前日期,獲取按鍵值,根據鍵值調整當前日期,并調用日歷顯示模塊中的并調用日歷顯示模塊中的showCalendar()函數來實現日歷生函數來實現日歷生成和輸出,其實現過程如圖成和輸出,其實現過程如圖104所示。所示。 810.1.3系統(tǒng)總體設計 本程序沒有自定義結構體,僅定義了全局變量。本程序沒有自定義結構體,僅定義了全局變量。 struct date sysTime:系統(tǒng)結構體,用于存儲系統(tǒng)

9、系統(tǒng)結構體,用于存儲系統(tǒng)日期。該結構體有日期。該結構體有3個成員,分別是個成員,分別是da_year、da_mon和和da_day,分別表示年、月和日。,分別表示年、月和日。 int currentYear:表示當前的年份。表示當前的年份。 int currentMonth:表示當前的月份。表示當前的月份。 int currentDay:表示當前的日期。表示當前的日期。 int n_currentMon:表示當前月的天數。表示當前月的天數。 int n_lastMon:表示上一個月的天數。表示上一個月的天數。910.1.4 系統(tǒng)功能實現 電子萬年歷系統(tǒng)設計項目的實現分為項目建立、項目需電子萬年

10、歷系統(tǒng)設計項目的實現分為項目建立、項目需求分析、項目算法設計、代碼編寫與調試、代碼測試、代碼求分析、項目算法設計、代碼編寫與調試、代碼測試、代碼完善等多個環(huán)節(jié)。完善等多個環(huán)節(jié)。 在進行本項目的程序設計時,建議按教材在進行本項目的程序設計時,建議按教材358頁表頁表101定義定義模塊中的函數,然后進行調試。模塊中的函數,然后進行調試。 根據模塊結構,按模塊進行編程,并在每個程序代碼前根據模塊結構,按模塊進行編程,并在每個程序代碼前寫上模塊顯示結構。寫上模塊顯示結構。 參數輸入與驗證:參數輸入與驗證:對輸入參數作驗證,若輸入參數對輸入參數作驗證,若輸入參數不合法,則重新輸入,允許輸入不合法,則重新

11、輸入,允許輸入3次,若次,若3次均不正確,則結次均不正確,則結束程序束程序 。1010.1.4 系統(tǒng)功能實現 閏年判斷:閏年判斷:判斷判斷year為閏年還是平年,為后續(xù)程序設為閏年還是平年,為后續(xù)程序設計作判斷。仿照算法設計中的公式,寫出閏年判斷函數計作判斷。仿照算法設計中的公式,寫出閏年判斷函數leapyear()。 計算是星期幾:計算是星期幾:根據根據dayNum()函數返回的結果,計函數返回的結果,計算算month中的星期值。中的星期值。 計算是第幾天:計算是第幾天:根據輸入的根據輸入的month值,計算值,計算month第第一天在該年中是第多少天。一天在該年中是第多少天。 易修改:易修

12、改:為了便于日后修改,每個函數應在入口處加為了便于日后修改,每個函數應在入口處加入較詳細的注釋。入較詳細的注釋。 易記憶:易記憶:給變量命名時,名字中盡可能多地包含必要給變量命名時,名字中盡可能多地包含必要的信息。的信息。1110.1.4 系統(tǒng)功能實現 易閱讀:易閱讀:當結構嵌套時,內層結構采用縮進形式,以當結構嵌套時,內層結構采用縮進形式,以明確結構的界限。明確結構的界限。 易理解:易理解:盡量采用容易理解的表達式。盡量采用容易理解的表達式。 易排錯:易排錯:編碼最基本的要求是語法和邏輯的正確。編碼最基本的要求是語法和邏輯的正確。 異常處理:異常處理:通過輸入錯誤數據格式驗證工程代碼對異通過

13、輸入錯誤數據格式驗證工程代碼對異常輸入的處理能力。常輸入的處理能力。 平年平年2月驗證:月驗證:輸入輸入2011-2能驗證千年能驗證千年2月的打印輸出。月的打印輸出。 閏年其它月份驗證:閏年其它月份驗證:輸入閏年的其它月份如輸入閏年的其它月份如2012-11可以驗證輸出結果??梢则炞C輸出結果。 平年其它月份驗證:平年其它月份驗證:輸入平年其它月份如輸入平年其它月份如2011-11可可以驗證輸出結果。以驗證輸出結果。 1210.2 俄羅斯方塊游戲 本項目旨在訓練學生的基本編程能力和游戲開發(fā)技巧,本項目旨在訓練學生的基本編程能力和游戲開發(fā)技巧,熟悉熟悉C語言圖形模式下的編程。本項目中涉及語言圖形模

14、式下的編程。本項目中涉及C語言的結構語言的結構體、數組、時鐘中斷及繪圖等方面的知識。體、數組、時鐘中斷及繪圖等方面的知識。 這里介紹開發(fā)俄羅斯方塊游戲的實現方法,用這里介紹開發(fā)俄羅斯方塊游戲的實現方法,用C語言編語言編程實現俄羅斯方塊游戲涉及的主要知識點有以下幾個方面:程實現俄羅斯方塊游戲涉及的主要知識點有以下幾個方面:結構體、數組、時鐘中斷及繪圖等方面的知識。結構體、數組、時鐘中斷及繪圖等方面的知識。 應用結構體類型編程;應用結構體類型編程; 應用數組編程;應用數組編程; 時鐘中斷系統(tǒng)的應用方法;時鐘中斷系統(tǒng)的應用方法; C語言的繪圖知識等;語言的繪圖知識等;1310.2.2 系統(tǒng)需求分析

15、游戲本身是一種娛樂,因此,必須使游戲者在游戲過程游戲本身是一種娛樂,因此,必須使游戲者在游戲過程中感到有趣。與此同時,通過這種中感到有趣。與此同時,通過這種“娛樂娛樂”,應能對游戲者,應能對游戲者在智能、創(chuàng)造性等方面具有一定的啟迪、激發(fā)、引導作用。在智能、創(chuàng)造性等方面具有一定的啟迪、激發(fā)、引導作用。 要使游戲者感到該游戲格外有趣,在游戲操作過程中,要使游戲者感到該游戲格外有趣,在游戲操作過程中,游戲系統(tǒng)應具有以下功能和特點:游戲系統(tǒng)應具有以下功能和特點: 游戲操作引導:游戲操作引導:在游戲過程中,在當前游戲畫面中,在游戲過程中,在當前游戲畫面中,出現下一個游戲方塊,這樣有利于游戲者控制游戲的策

16、略。出現下一個游戲方塊,這樣有利于游戲者控制游戲的策略。 方便任意操作:方便任意操作:能實現對游戲方塊的左、右、下、能實現對游戲方塊的左、右、下、上的快速移動、下落和旋轉。上的快速移動、下落和旋轉。1410.2.2 系統(tǒng)需求分析 畫面顯示更新:畫面顯示更新:當游戲方塊左右移動、下落、旋轉時,當游戲方塊左右移動、下落、旋轉時,要清除先前的游戲方塊。要清除先前的游戲方塊。 具有成績記錄:具有成績記錄:在游戲過程中自動計算游戲分數,以在游戲過程中自動計算游戲分數,以激勵游戲者具有技能性的操作。激勵游戲者具有技能性的操作。 游戲幫助功能:游戲幫助功能:游戲者進入游戲后,系統(tǒng)具有隨時跟游戲者進入游戲后,

17、系統(tǒng)具有隨時跟蹤本游戲如何操作的友情提示。蹤本游戲如何操作的友情提示。1510.2.3 系統(tǒng)總體設計 根據以上需求分析,系統(tǒng)應有游戲方塊預覽功能、控制根據以上需求分析,系統(tǒng)應有游戲方塊預覽功能、控制功能、顯示更新功能、速度更新功能、幫助功能等,其模塊功能、顯示更新功能、速度更新功能、幫助功能等,其模塊結構如圖結構如圖105所示:所示:圖圖 105 俄羅斯方塊游戲功能描述圖俄羅斯方塊游戲功能描述圖方方塊塊預預覽覽模模塊塊方方塊塊控控制制模模塊塊顯顯示示更更新新模模塊塊分分數數更更新新模模塊塊俄羅斯方塊游戲俄羅斯方塊游戲幫幫助助功功能能模模塊塊16 方塊預覽模塊:方塊預覽模塊:在游戲過程中,當在游

18、戲底板中出在游戲過程中,當在游戲底板中出現一個游戲方塊時現一個游戲方塊時,必須在游戲方塊預覽區(qū)域中出現下一個游必須在游戲方塊預覽區(qū)域中出現下一個游戲方塊,這樣有利于游戲玩家控制游戲的策略。戲方塊,這樣有利于游戲玩家控制游戲的策略。 方塊控制模塊:方塊控制模塊:通過各種條件的判斷,實現對游戲通過各種條件的判斷,實現對游戲方塊的左移、右移、快速下移、自由下落、旋轉功能以及行方塊的左移、右移、快速下移、自由下落、旋轉功能以及行滿消除行的功能。滿消除行的功能。 顯示更新模塊:顯示更新模塊:當游戲方塊左右移動、下落、旋轉當游戲方塊左右移動、下落、旋轉時時,要清除先前的游戲方塊要清除先前的游戲方塊,用新坐

19、標重繪游戲方塊。當消除用新坐標重繪游戲方塊。當消除滿行時,要重繪游戲底板的當前狀態(tài)。滿行時,要重繪游戲底板的當前狀態(tài)。 速度更新模塊:速度更新模塊:在游戲者進行游戲過程中,需要按在游戲者進行游戲過程中,需要按照一定的游戲規(guī)則給游戲者計算游戲分數。照一定的游戲規(guī)則給游戲者計算游戲分數。 幫助功能模塊:幫助功能模塊:游戲者進入游戲后,將有對本游戲游戲者進入游戲后,將有對本游戲如何操作的溫馨提示。如何操作的溫馨提示。10.2.3 系統(tǒng)總體設計17 主控函數主控函數main( )實現對整個程序的運行控流程制以及相實現對整個程序的運行控流程制以及相關功能模塊的調用關功能模塊的調用。 整個游戲的操作是通過

20、以下整個游戲的操作是通過以下5個功能模塊來實現的。個功能模塊來實現的。 方塊預覽模塊:方塊預覽模塊:游戲方塊將在如圖游戲方塊將在如圖107所示的所示的44的正方形小方塊中預覽。的正方形小方塊中預覽。 方塊控制模塊:方塊控制模塊:這是該游戲開發(fā)的重點和難點部分。這是該游戲開發(fā)的重點和難點部分。 左移的實現過程。左移的實現過程。 右移的實現過程右移的實現過程 下移的實現過程下移的實現過程 旋轉的實現過程旋轉的實現過程10.2.3 系統(tǒng)總體設計圖圖10107 7 游戲方塊預覽游戲方塊預覽18 顯示更新模塊:顯示更新模塊:清除游戲方塊的過程是先畫輪廓再填清除游戲方塊的過程是先畫輪廓再填充的方式,使用背

21、景色填充小方塊,然后使用前景色畫一個充的方式,使用背景色填充小方塊,然后使用前景色畫一個游戲底板中的小方塊。游戲底板中的小方塊。 分數更新模塊:分數更新模塊:當判斷出一行滿時當判斷出一行滿時,score變量加一固變量加一固定值定值(如如10),可以把等級,可以把等級level看作是速度看作是速度speed 游戲底板游戲底板BOARD結構體結構體 游戲方塊游戲方塊SHAPE結構體結構體 SHAPE結構數組結構數組10.2.3 系統(tǒng)總體設計1910.2.4 系統(tǒng)功能實現 在進行本項目的程序設計時,建議按教材在進行本項目的程序設計時,建議按教材367頁表頁表102定義模塊中的函數,然后進行調試。定義

22、模塊中的函數,然后進行調試。 俄羅斯方塊程序按模塊化編程,分為俄羅斯方塊程序按模塊化編程,分為4個功能模塊個功能模塊 。 主函數主函數main():實現對整個程序的運行控制。實現對整個程序的運行控制。 時鐘中斷處理:時鐘中斷處理:速度越快,時間中斷的間隔也就越短。速度越快,時間中斷的間隔也就越短。 成績、速度及幫助的顯示:成績、速度及幫助的顯示:為了幫助游戲者操作,必為了幫助游戲者操作,必須提供幫助,為了鼓勵游戲者,必須顯示游戲成績與速度。須提供幫助,為了鼓勵游戲者,必須顯示游戲成績與速度。 滿行處理:滿行處理:當游戲方塊不能滿足相關操作條件時,可當游戲方塊不能滿足相關操作條件時,可以調用以下

23、函數來處理。以調用以下函數來處理。2010.3 圖書借閱管理系統(tǒng) 設計一個圖書借閱管理系統(tǒng),需要使用函數、數組、指設計一個圖書借閱管理系統(tǒng),需要使用函數、數組、指針、結構體、鏈表和文件等,基本上涵蓋了針、結構體、鏈表和文件等,基本上涵蓋了C語言程序設計語言程序設計的所有基礎階段的知識。的所有基礎階段的知識。 函數的定義與調用;函數的定義與調用; 指針變量做為函數參數;指針變量做為函數參數; 結構體數組的應用;結構體數組的應用; 字符串函數的應用;字符串函數的應用; 文件的打開、關閉及讀文件的打開、關閉及讀/寫操作等。寫操作等。2110.3.2 系統(tǒng)需求分析 圖書借閱管理系統(tǒng)中的實體主要有圖書和

24、用戶。對一般圖書借閱管理系統(tǒng)中的實體主要有圖書和用戶。對一般用戶來說,主要功能有查找圖書、瀏覽圖書、借書、還書等;用戶來說,主要功能有查找圖書、瀏覽圖書、借書、還書等;對管理員來說,除了一般用戶的權限外,還具備有管理功能,對管理員來說,除了一般用戶的權限外,還具備有管理功能,即注冊圖書、注冊用戶、注銷圖書、注銷用戶等維護管理功即注冊圖書、注冊用戶、注銷圖書、注銷用戶等維護管理功能。能。 一個功能比較完善、具有實用價值的圖書借閱管理系統(tǒng),一個功能比較完善、具有實用價值的圖書借閱管理系統(tǒng),從業(yè)務流程來講,要求能實現用戶的注冊、注銷、查找、瀏從業(yè)務流程來講,要求能實現用戶的注冊、注銷、查找、瀏覽、借

25、書、還書,圖書的注冊、注銷、查找、瀏覽、外借和覽、借書、還書,圖書的注冊、注銷、查找、瀏覽、外借和歸還等。因此,應具有以下歸還等。因此,應具有以下6項基本功能。項基本功能。 用戶登錄:用戶登錄:系統(tǒng)用戶分為管理員和學生。系統(tǒng)用戶分為管理員和學生。 2210.3.2 系統(tǒng)需求分析 圖書信息管理:圖書信息管理:包括;書號、書名、作者、圖書分類、包括;書號、書名、作者、圖書分類、出版社、出版時間、單價、總量和庫存量。出版社、出版時間、單價、總量和庫存量。 學生信息管理。學生信息管理。包括:輸入學生信息、保存學生信息、包括:輸入學生信息、保存學生信息、修改學生信息、添加學生信息、刪除和輸出學生信息。修

26、改學生信息、添加學生信息、刪除和輸出學生信息。 圖書查詢功能:圖書查詢功能:圖書查詢分為:按書名查詢、按作者圖書查詢分為:按書名查詢、按作者查詢查詢、按圖書分類查詢按圖書分類查詢、按出版社查詢和按出版時間查詢。按出版社查詢和按出版時間查詢。 借書功能:借書功能:借書時,先判斷學生是否有空閑的借書卡,借書時,先判斷學生是否有空閑的借書卡,若有空閑的借書卡,則要求學生輸入所借圖書的書號。若有空閑的借書卡,則要求學生輸入所借圖書的書號。 還書功能:還書功能:還書時,先檢查學生的借書卡,然后要求還書時,先檢查學生的借書卡,然后要求學生輸入所還圖書的書號,將對應借書卡上的記錄清零,并學生輸入所還圖書的書

27、號,將對應借書卡上的記錄清零,并修改該書的庫存量。修改該書的庫存量。2310.3.3 系統(tǒng)總體設計 根據上述需求分析,圖書借閱管理系統(tǒng)應具有用戶登錄根據上述需求分析,圖書借閱管理系統(tǒng)應具有用戶登錄管理模塊、圖書信息管理模塊、學生信息管理模塊、圖書查管理模塊、圖書信息管理模塊、學生信息管理模塊、圖書查詢管理模塊、圖書借閱管理模塊,其結構如圖詢管理模塊、圖書借閱管理模塊,其結構如圖109所示。所示。 用戶登錄管理模塊:用戶登錄管理模塊:用于實現管理員和學生登錄管用于實現管理員和學生登錄管理。理。 圖書信息管理模塊:圖書信息管理模塊:用于實現圖書信息的輸入、保用于實現圖書信息的輸入、保存、修改、添加

28、、刪除、輸出等。存、修改、添加、刪除、輸出等。 學生信息管理模塊:學生信息管理模塊:用于實現學生信息的輸入、保用于實現學生信息的輸入、保存、修改、添加、刪除、輸出等。存、修改、添加、刪除、輸出等。 圖書查詢管理模塊:圖書查詢管理模塊:用于實現按不同條件對圖書信用于實現按不同條件對圖書信息進行查詢。息進行查詢。 圖書借閱管理模塊:圖書借閱管理模塊:用于實現圖書的借閱和歸還管用于實現圖書的借閱和歸還管理。理。24 圖書借閱管理系統(tǒng)由圖書借閱管理系統(tǒng)由5個模塊組成,所有模塊都位于主個模塊組成,所有模塊都位于主函數函數main()之下,用戶通過主函數中提供的菜單選擇相應的之下,用戶通過主函數中提供的菜

29、單選擇相應的模塊,執(zhí)行具體的功能操作,因此,主函數的設計是極為重模塊,執(zhí)行具體的功能操作,因此,主函數的設計是極為重要的要的。 用戶登錄管理模塊:用戶登錄管理模塊:是進入圖書借閱管理系統(tǒng)的必備是進入圖書借閱管理系統(tǒng)的必備模塊,主要實現兩項功能,一是用來完成管理員登錄工作模塊,主要實現兩項功能,一是用來完成管理員登錄工作 ;二是用來完成學生登錄工作二是用來完成學生登錄工作 。 圖書信息管理模塊:圖書信息管理模塊:用于實現圖書信息的輸入、保存、用于實現圖書信息的輸入、保存、修改、添加、刪除、輸出等修改、添加、刪除、輸出等6個方面的操作。個方面的操作。 學生信息管理模塊:學生信息管理模塊:其功能與圖

30、書信息管理模塊相似,其功能與圖書信息管理模塊相似,它用于實現學生信息的輸入、保存、修改、添加、刪除、輸它用于實現學生信息的輸入、保存、修改、添加、刪除、輸出等出等6個方面的操作。個方面的操作。 10.3.3 系統(tǒng)總體設計25 圖書信息查詢模塊:圖書信息查詢模塊:用于實現按不同條件對圖書信息用于實現按不同條件對圖書信息進行查詢。進行查詢。 圖書借閱管理模塊:圖書借閱管理模塊:主要是對圖書借閱卡的信息管理,主要是對圖書借閱卡的信息管理,包括圖書借閱管理和圖書歸還管理。包括圖書借閱管理和圖書歸還管理。 該系統(tǒng)可以定義四種結構體類型,包括日期類型、借書該系統(tǒng)可以定義四種結構體類型,包括日期類型、借書卡

31、類型、圖書類型和學生類型,其中在圖書類型中要使用日卡類型、圖書類型和學生類型,其中在圖書類型中要使用日期類型,而在學生類型中要使用日期和借書卡類型。期類型,而在學生類型中要使用日期和借書卡類型。10.3.3 系統(tǒng)總體設計2610.3.4 系統(tǒng)功能實現 為便于設計出圖書借閱管理系統(tǒng),這里給出圖書借閱管為便于設計出圖書借閱管理系統(tǒng),這里給出圖書借閱管理系統(tǒng)的函數功能描述以及模塊化編程,供設計時參考。理系統(tǒng)的函數功能描述以及模塊化編程,供設計時參考。 在進行本項目程序設計時,建議按教材在進行本項目程序設計時,建議按教材372頁表頁表103定定義模塊中的函數,然后進行調試。義模塊中的函數,然后進行調試

32、。 圖書借閱管理系統(tǒng)是按圖書借閱管理系統(tǒng)是按5個模塊進行設計的,各模塊由多個模塊進行設計的,各模塊由多個自定義函數或系統(tǒng)函數組成。個自定義函數或系統(tǒng)函數組成。 用戶登錄管理模塊:用戶登錄管理模塊:是進入圖書借閱管理系統(tǒng)的模塊,是進入圖書借閱管理系統(tǒng)的模塊,用來完成管理員登錄工作和完成學生登錄工作,分別由函數用來完成管理員登錄工作和完成學生登錄工作,分別由函數ManagerLogin()和和StudentLogin()來實現,并由來實現,并由main函數調函數調用。用。2710.3.4 系統(tǒng)功能實現 圖書信息管理模塊:圖書信息管理模塊:實行圖書信息的輸入、保存、修實行圖書信息的輸入、保存、修改、

33、添加、刪除、輸出等改、添加、刪除、輸出等6個方面的操作。個方面的操作。 學生信息管理模塊:學生信息管理模塊:實行學生信息的輸入、保存、修實行學生信息的輸入、保存、修改、添加、刪除、輸出等改、添加、刪除、輸出等6個方面的操作。個方面的操作。 圖書信息查詢模塊:圖書信息查詢模塊:實行按不同條件對圖書信息進行實行按不同條件對圖書信息進行查詢。查詢。 圖書借閱管理模塊:圖書借閱管理模塊:實行圖書借閱管理和圖書歸還管實行圖書借閱管理和圖書歸還管理。理。在實行模塊化編程的過程中,首先考慮的是主控函數在實行模塊化編程的過程中,首先考慮的是主控函數main()的編程,系統(tǒng)操作界面、各功能選項(菜單)、用戶密碼

34、設的編程,系統(tǒng)操作界面、各功能選項(菜單)、用戶密碼設置,都應安排在主控函數置,都應安排在主控函數main()中,重要功能模塊和共用功中,重要功能模塊和共用功能模塊都應直接由主控函數能模塊都應直接由主控函數main()控制,然后分層調用,這控制,然后分層調用,這樣有利于系統(tǒng)的拓展、更新和維護。樣有利于系統(tǒng)的拓展、更新和維護。 2810.4 學生成績管理系統(tǒng) 學生成績管理系統(tǒng)是數據庫管理系統(tǒng)的又一個典型應用學生成績管理系統(tǒng)是數據庫管理系統(tǒng)的又一個典型應用實例。開發(fā)出高效實用的學生成績管理系統(tǒng),對學生成績進實例。開發(fā)出高效實用的學生成績管理系統(tǒng),對學生成績進行統(tǒng)一管理,實現學生成績信息管理工作流程

35、的系統(tǒng)化、規(guī)行統(tǒng)一管理,實現學生成績信息管理工作流程的系統(tǒng)化、規(guī)范化和自動化有著極為重要的作用和意義。范化和自動化有著極為重要的作用和意義。 本程序旨在訓練讀者的基本編程能力,了解管理信息系本程序旨在訓練讀者的基本編程能力,了解管理信息系統(tǒng)的開發(fā)流程,熟悉統(tǒng)的開發(fā)流程,熟悉C+的文件和單鏈表的各種基本操作。的文件和單鏈表的各種基本操作。具體為:具體為: 了解程序設計的過程和方法。了解程序設計的過程和方法。 掌握學生成績管鋰系統(tǒng)的設計思想和方法。掌握學生成績管鋰系統(tǒng)的設計思想和方法。 熟悉學生成績管理系統(tǒng)的源代碼。熟悉學生成績管理系統(tǒng)的源代碼。 通過學習提高程序設計的能力。通過學習提高程序設計的

36、能力。2910.4.1 系統(tǒng)設計目標 用用C+語言開發(fā)學生成績管理系統(tǒng),涉及的主要知識點語言開發(fā)學生成績管理系統(tǒng),涉及的主要知識點有以下幾個方面:有以下幾個方面: 選擇結構與循環(huán)結構;選擇結構與循環(huán)結構; 函數的建立;函數的建立; 數組的應用;數組的應用; 指針的應用;指針的應用; 數據的統(tǒng)計、查詢、排序;數據的統(tǒng)計、查詢、排序; 結構體類型、類和對象的使用;結構體類型、類和對象的使用; 鏈表的使用(利用鏈表,實現數據記錄的插入、修改、鏈表的使用(利用鏈表,實現數據記錄的插入、修改、刪除、排序等操作);刪除、排序等操作); 數據文件的建立、打開、讀數據文件的建立、打開、讀/寫、關閉。寫、關閉。

37、3010.4.2 系統(tǒng)需求分析 為了開發(fā)一個方便、適用的學生成績管理系統(tǒng),在設計為了開發(fā)一個方便、適用的學生成績管理系統(tǒng),在設計前必須對該系統(tǒng)的信息進行認真的調查研究。對系統(tǒng)的具體前必須對該系統(tǒng)的信息進行認真的調查研究。對系統(tǒng)的具體要求如下:要求如下: 成績錄入:成績錄入:輸入學生的各項信息,并計算課程的平均輸入學生的各項信息,并計算課程的平均成績。成績。 成績查詢:成績查詢:根據學號查詢某學生各項成績或全班學生根據學號查詢某學生各項成績或全班學生的成績,輸出各項查詢結果。的成績,輸出各項查詢結果。 成績處理:成績處理:修改原有成績、添加新生的成績、刪除不修改原有成績、添加新生的成績、刪除不需

38、保存的成績。需保存的成績。 成績統(tǒng)計:成績統(tǒng)計:統(tǒng)計每門課程各個分數段的人數、每門課統(tǒng)計每門課程各個分數段的人數、每門課程平均分數、不及格人數等。程平均分數、不及格人數等。3110.4.2 系統(tǒng)需求分析 成績排許:成績排許:對選定課程成績、平均成績、總分等進對選定課程成績、平均成績、總分等進行排序。行排序。 建立文本界面進行輸入和選擇。建立文本界面進行輸入和選擇。 數據以文件形式存儲。數據以文件形式存儲。 通過對學生成績管理工作內容的分析,設計的學生成績通過對學生成績管理工作內容的分析,設計的學生成績管理系統(tǒng)應包含以下功能。管理系統(tǒng)應包含以下功能。 成績輸入功能:成績輸入功能:輸入學生的成績信

39、息,包括班級、學輸入學生的成績信息,包括班級、學號、姓名及課程的成績。數據可以從鍵盤輸入,也可以從文號、姓名及課程的成績。數據可以從鍵盤輸入,也可以從文件中讀取。件中讀取。3210.4.2 系統(tǒng)需求分析 成績輸出功能:成績輸出功能:輸出班級所有學生的成績記錄。成績輸出班級所有學生的成績記錄。成績記錄可以直接輸出在屏幕上或保存到磁盤文件中。記錄可以直接輸出在屏幕上或保存到磁盤文件中。 成績查詢功能:成績查詢功能:查詢指定學號學生的成績及相關信息。查詢指定學號學生的成績及相關信息。 成績處理功能:成績處理功能:修改或刪除指定學號學生的成績記錄,修改或刪除指定學號學生的成績記錄,或增加學生的成績記錄

40、,或對學生成績進行排序。或增加學生的成績記錄,或對學生成績進行排序。 成績統(tǒng)計功能:成績統(tǒng)計功能:計算每門課程的平均分,統(tǒng)計每門課計算每門課程的平均分,統(tǒng)計每門課程不及格人數,以及相關信息。程不及格人數,以及相關信息。 通過需求分析,全面了解對應問題及其環(huán)境,為問題涉通過需求分析,全面了解對應問題及其環(huán)境,為問題涉及的信息、功能及系統(tǒng)行為建立模型,將用戶需求精確化、及的信息、功能及系統(tǒng)行為建立模型,將用戶需求精確化、完全化,最終形成設計方案及其規(guī)格說明。完全化,最終形成設計方案及其規(guī)格說明。 3310.4.3 系統(tǒng)結構設計 通過對學生成績管理系統(tǒng)功能要求的分析,該系統(tǒng)的結通過對學生成績管理系統(tǒng)

41、功能要求的分析,該系統(tǒng)的結構設計如圖構設計如圖1011所示。所示。圖圖 101011 11 學生成績管理系統(tǒng)功能模塊結構圖學生成績管理系統(tǒng)功能模塊結構圖從從鍵鍵盤盤輸輸入入從從文文件件讀讀入入修修改改成成績績記記錄錄刪刪除除成成績績記記錄錄插插入入成成績績記記錄錄排排序序成成績績記記錄錄按按姓姓名名查查詢詢按按學學號號查查詢詢輸輸出出至至屏屏幕幕輸輸出出至至文文件件不不及及格格的的人人數數各各課課程程平平均均分分輸入記錄輸入記錄管理模塊管理模塊處理記錄處理記錄管理模塊管理模塊查詢記錄查詢記錄管理模塊管理模塊輸出記錄輸出記錄管理模塊管理模塊學生成績管理系統(tǒng)學生成績管理系統(tǒng)統(tǒng)計記錄統(tǒng)計記錄管理模塊

42、管理模塊3410.4.3 系統(tǒng)結構設計 學生成績管理系統(tǒng)是在主控函數的管理下進行的。主控學生成績管理系統(tǒng)是在主控函數的管理下進行的。主控模塊由模塊由main()函數和函數和menu()函數組成,實現控制系統(tǒng)流程控函數組成,實現控制系統(tǒng)流程控制和顯示菜單制和顯示菜單。(本系統(tǒng)執(zhí)行的主控流程圖省略)。(本系統(tǒng)執(zhí)行的主控流程圖省略) main()函數:函數:控制整個系統(tǒng)的運行流程控制整個系統(tǒng)的運行流程,各功能模塊各功能模塊的函數均由主函數控制調用。在主函數中,通過循環(huán)執(zhí)行一的函數均由主函數控制調用。在主函數中,通過循環(huán)執(zhí)行一個個swibh開關語句來運行系統(tǒng)。在循環(huán)體中,根據用戶輸入開關語句來運行系統(tǒng)

43、。在循環(huán)體中,根據用戶輸入的數字調用相應函數完成相應功能。的數字調用相應函數完成相應功能。 menu()函數:函數:主要實現顯示系統(tǒng)的菜單界面。在主要實現顯示系統(tǒng)的菜單界面。在main函數的循環(huán)體內只需調用該函數函數的循環(huán)體內只需調用該函數, 即可達到循環(huán)顯示菜即可達到循環(huán)顯示菜單的功能,方便用戶選擇。按鍵時有效的輸入為單的功能,方便用戶選擇。按鍵時有效的輸入為09之間任之間任意數值。意數值。 3510.4.4 使用結構體設計 學生成績信息由班級、學號、姓名、各門課程成績、總學生成績信息由班級、學號、姓名、各門課程成績、總分和名次等數據構成。盡管學生成績信息包含的數據是相同分和名次等數據構成。

44、盡管學生成績信息包含的數據是相同的,但三種方法在數據類型的定義格式上是不一樣的。的,但三種方法在數據類型的定義格式上是不一樣的。 成績輸入模塊用來完成從數據文件中讀入學生成績,也成績輸入模塊用來完成從數據文件中讀入學生成績,也可以從鍵盤逐個輸入學生成績。成績輸入通過可以從鍵盤逐個輸入學生成績。成績輸入通過Input(Stu_Score s )函數、函數、Read(Stu Score s )函數實現成函數實現成績輸入??冚斎?。 Input(Stu_Score s )函數:函數:用來通過鍵盤將學生成用來通過鍵盤將學生成績信息輸入到結構體數組中。績信息輸入到結構體數組中。 Read(Stu Scor

45、e s )函數:函數:用來從已有磁盤文件中用來從已有磁盤文件中讀取成績信息到結構體數組中。讀取成績信息到結構體數組中。 3610.4.4 使用結構體設計 成績查詢模塊用來完成按學號和姓名查找學生,然后查成績查詢模塊用來完成按學號和姓名查找學生,然后查找該學生的成績信息。成績查詢通過找該學生的成績信息。成績查詢通過Search函數、函數、Search_Name函數和函數和Search_Score函數實現。函數實現。 Search Num(Stu_Scores ,char stu_num15)函數:函數:用用來查找指定學號學生是否存在,若存在,則返回該學生所在來查找指定學號學生是否存在,若存在,則

46、返回該學生所在的位置。的位置。 Search_Name(Stu_Score s ,char stu_name10)函數:函數:用來查找指定姓名學生是否存在,若存在,則返回該學生所用來查找指定姓名學生是否存在,若存在,則返回該學生所在的位置。在的位置。 Search_Score(Stu_Score s )函數:函數:用來查找指用來查找指定學生的成績信息,若存在該學生,則將其成績顯示在屏幕定學生的成績信息,若存在該學生,則將其成績顯示在屏幕上。上。 3710.4.4 使用結構體設計 成績處理通過成績處理通過Modify函數、函數、Delete函數、函數、Insert函數、函數、Soft_Sum函數

47、和函數和Sort_Num函數來實現。函數來實現。 Modify(Stu_Score s )函數:函數:用來修改指定學號學用來修改指定學號學生的成績信息。生的成績信息。 Delete(Stu_Score s )函數:函數:用來刪除指定學號學用來刪除指定學號學生的成績信息。生的成績信息。 Insert(Stu_Scores )函數:函數:用來增加一個學生的成用來增加一個學生的成績信息。績信息。 Soft_Sum(Stu_Score s )函數:函數:用來按總分降序對用來按總分降序對所有學生進行排序,并給出名次。所有學生進行排序,并給出名次。 3810.4.4 使用結構體設計 Sort_Num(St

48、u_Score s )函數:函數:用來對所有學生按用來對所有學生按學號從小到大進行排序。學號從小到大進行排序。 成績統(tǒng)計模塊用來統(tǒng)計每門課的平均分和統(tǒng)計每門課程成績統(tǒng)計模塊用來統(tǒng)計每門課的平均分和統(tǒng)計每門課程不及格的人數,并顯示在屏幕上。成績統(tǒng)計通過不及格的人數,并顯示在屏幕上。成績統(tǒng)計通過Course_Ave函數和函數和Statistic_Course函數來實現。函數來實現。 Course_Ave(Stu_Score s )函數:函數:用來統(tǒng)計每門課用來統(tǒng)計每門課的平均分。的平均分。 Statistic_Course(Stu_Score s )函數:函數:用來統(tǒng)計用來統(tǒng)計每門課程不及格的人數

49、。每門課程不及格的人數。 3910.4.4 使用結構體設計 成績輸出模塊主要完成兩項任務:一是通過成績輸出模塊主要完成兩項任務:一是通過Output函數函數將所有學生的成績信息顯示在屏幕上;二是通過將所有學生的成績信息顯示在屏幕上;二是通過Save函數將函數將成績信息保存至磁盤文件中。成績信息保存至磁盤文件中。 Output(Stu Scores s )函數:函數:用來將所有學生的成用來將所有學生的成績信息顯示在屏幕上。績信息顯示在屏幕上。 Save(Stu_Score s )函數:函數:用來將成績信息保存至用來將成績信息保存至磁盤文件中。磁盤文件中。 4010.4.5 使用鏈表設計 使用鏈表

50、設計本系統(tǒng)時,只需關心指針有沒有指到鏈表使用鏈表設計本系統(tǒng)時,只需關心指針有沒有指到鏈表尾,而不必知道班級學生人數,故不需要實時記錄人數。尾,而不必知道班級學生人數,故不需要實時記錄人數。 成績輸入模塊通過成績輸入模塊通過Input(node *head) )函數和函數和Read(node *head)函數來實現信息輸入。函數來實現信息輸入。 Input(node *head)函數:函數:用來通過鍵盤將若干名學用來通過鍵盤將若干名學生的成績信息輸入到鏈表中,生成一條有序鏈表。生的成績信息輸入到鏈表中,生成一條有序鏈表。 Read(node *head)函數:函數:用來直接從文件中讀取成用來直接

51、從文件中讀取成績信息到鏈表中,生成一條有序鏈表??冃畔⒌芥湵碇?,生成一條有序鏈表。 成績查詢模塊通過成績查詢模塊通過Search_Num(node *head,char stu_num15)函函數、數、Search Name(node *head,char stu_name15函數、函數、Search_Score(node *head)實現實現3種查詢。種查詢。4110.4.5 使用鏈表設計 Search_Num(node *head,char stu_num15)函數函數: 用來在鏈表中查找指定學號學生是否存在,若存在,則用來在鏈表中查找指定學號學生是否存在,若存在,則返回指向該學生所在結點的指針。返回指向該學生所在結點的指針。 Search Name(node *head,char stu_name15)函

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論