數(shù)據(jù)結(jié)構(gòu)課設(shè)報告,電文的編碼與譯碼_第1頁
數(shù)據(jù)結(jié)構(gòu)課設(shè)報告,電文的編碼與譯碼_第2頁
數(shù)據(jù)結(jié)構(gòu)課設(shè)報告,電文的編碼與譯碼_第3頁
數(shù)據(jù)結(jié)構(gòu)課設(shè)報告,電文的編碼與譯碼_第4頁
數(shù)據(jù)結(jié)構(gòu)課設(shè)報告,電文的編碼與譯碼_第5頁
已閱讀5頁,還剩49頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、沈沈 陽陽 工工 程程 學(xué)學(xué) 院院課 程 設(shè) 計設(shè)計題目:設(shè)計題目:電文的編碼與譯碼、數(shù)值轉(zhuǎn)換電文的編碼與譯碼、數(shù)值轉(zhuǎn)換系系 別別 軟軟 件件 工工 程程 班級班級 軟件軟件 151151 學(xué)學(xué) 生生 姓姓 名名 楊紅偉楊紅偉 姜明姜明 閆旺閆旺 張曉曉張曉曉 學(xué)學(xué) 號號 1010 2323 1111 0909 指導(dǎo)教師指導(dǎo)教師 職稱職稱 起止日期:起止日期:20102010 年月日起年月日起至至 20112011 年月日止年月日止沈沈 陽陽 工工 程程 學(xué)學(xué) 院院課 程 設(shè) 計 任 務(wù) 書 課程設(shè)計題目:課程設(shè)計題目:電文的編碼與譯碼電文的編碼與譯碼系系 別別 軟軟 件件 工工 程程 班班

2、級級 軟軟 件件 151151 學(xué)生姓名學(xué)生姓名 楊紅偉楊紅偉 閆旺閆旺 學(xué)學(xué) 號號 1010 1111 指導(dǎo)教師指導(dǎo)教師 職稱職稱 課程設(shè)計進(jìn)行地點:課程設(shè)計進(jìn)行地點: 實訓(xùn)實訓(xùn) F F 座座 任任 務(wù)務(wù) 下下 達(dá)達(dá) 時時 間:間: 20102010 年月年月 日日起止日期:起止日期:20102010 年月日起年月日起至至 20112011 年月日止年月日止教教研研室室主主任任 2 20 01 10 0 年年月月日日批批準(zhǔn)準(zhǔn)一、問題描述隨著信息時代的到來,如何采用有效的壓縮技術(shù)和加密技術(shù)已越來越引起人們的關(guān)注,哈夫曼編碼正是一種應(yīng)用廣泛且能有效加密和壓縮的技術(shù)。要壓縮和加密就要做到:加密人員

3、要根據(jù)要加密的電文,統(tǒng)計出各字符出現(xiàn)的頻率,然后構(gòu)造哈夫曼樹從而構(gòu)造出哈夫曼編碼;解密人員就要根據(jù)哈夫曼編碼,還原出原來的電文。二、課程設(shè)計主要內(nèi)容及要求1.具有數(shù)據(jù)輸入功能,輸入的數(shù)據(jù)能最終保存在文件中;2.具有加密功能,在加密的時候,從文本文檔中提取要加密的電文。待加密完成之后, 不但要把密文顯示在用戶界面上,還要把密文保存在另一個文本文檔中;3.在加密的過程中,要根據(jù)電文字符的頻率,構(gòu)造出哈夫曼樹,進(jìn)而構(gòu)造出哈夫曼編 碼;4.具有解密功能,在解密的時候,在文本文檔中讀取要解密的密文,然后進(jìn)行解密, 要把解密之后的原電文通過用戶界面顯示出來;5.解密是要根據(jù)哈夫曼編碼進(jìn)行解密;6.其它功能

4、(如計算壓縮效率等)。三、對課程設(shè)計說明書撰寫內(nèi)容、格式、字?jǐn)?shù)的要求1課程設(shè)計說明書是體現(xiàn)和總結(jié)課程設(shè)計成果的載體,主要內(nèi)容包括:設(shè)計題目、設(shè)計目的、設(shè)備器材、設(shè)計原理及內(nèi)容、設(shè)計步驟、遇到的問題及解決方法、設(shè)計總結(jié)、設(shè)計小組評語、參考文獻(xiàn)等。一般不應(yīng)少于 3000 字。2在適當(dāng)位置配合相應(yīng)的實驗原理圖、數(shù)據(jù)通路圖、微程序流程圖、實驗接線圖、微指令代碼表等圖表進(jìn)行說明。應(yīng)做到文理通順,內(nèi)容正確完整,書寫工整,裝訂整齊。3設(shè)計總結(jié)部分主要寫本人完成工作簡介以及自己的設(shè)計體會,包括通過課程設(shè)計學(xué)到了什么,哪里遇到了困難,解決的辦法以及今后的目標(biāo)。設(shè)計小組評語處注明設(shè)計組編號、設(shè)計組組長、設(shè)計組成員

5、,并由設(shè)計組組長給出評語。4課程設(shè)計說明書手寫或打印均可。手寫要用學(xué)校統(tǒng)一的課程設(shè)計用紙,用黑或藍(lán)黑墨水工整書寫;打印時采用 A4 紙,頁邊距均為 20mm,正文采用宋體小四號字,行間距 18磅。文中大標(biāo)題采用黑體小三號字,一級節(jié)標(biāo)題采用黑體四號字,二級節(jié)標(biāo)題采用黑體小四號字,表題與圖題采用宋體五號字。5課程設(shè)計說明書裝訂順序為:封面、任務(wù)書、成績評定表、目錄、正文、參考文獻(xiàn)。四、設(shè)計完成后應(yīng)提交成果的種類、數(shù)量、質(zhì)量等方面的要求1完成“任務(wù)書”中指定的操作功能,運行穩(wěn)定。2課程設(shè)計說明書。 五、時間進(jìn)度安排順序階段日期計 劃 完 成 內(nèi) 容備注1第 1 天(12 月 27 日)閱讀資料2第

6、2 天(12 月 28 日12 月 30 日)系統(tǒng)分析設(shè)計3第 3 天(12 月 31 日1 月 5 日)程序編制、調(diào)試及運行4第 4 天(1 月 6 日)成績評定5第 5 天(1 月 7 日)撰寫課程設(shè)計說明書六、主要參考資料(文獻(xiàn))1嚴(yán)蔚敏 吳偉民.數(shù)據(jù)結(jié)構(gòu)(C 語言版). 北京:清華大學(xué)出版社.20072譚浩強.C 程序設(shè)計.北京:清華大學(xué)出版社.1999.123滕國文.數(shù)據(jù)結(jié)構(gòu)課程設(shè)計.北京:清華大學(xué)出版社.2010.094蘇仕華 等編著. 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計. 北京:機械工業(yè)出版社.2005.055李春葆.數(shù)據(jù)結(jié)構(gòu)(C 語言版)習(xí)題與解析.北京:清華大學(xué)出版社.2002.04沈沈 陽陽

7、 工工 程程 學(xué)學(xué) 院院課 程 設(shè) 計 任 務(wù) 書設(shè)計題目:設(shè)計題目: 數(shù)值轉(zhuǎn)換數(shù)值轉(zhuǎn)換 系系 別別 軟件工程軟件工程 班級班級 軟件軟件 151151 學(xué)生姓名學(xué)生姓名 姜明姜明 張曉曉張曉曉 學(xué)號學(xué)號 2323 0909 指導(dǎo)教師指導(dǎo)教師 職稱職稱 起止日期:起止日期:20102010 年月日起年月日起至至 20112011 年月日止年月日止一、課程設(shè)計的原始資料及依據(jù)編制一個能演示執(zhí)行數(shù)值轉(zhuǎn)換的程序。二、課程設(shè)計主要內(nèi)容及要求1. 錄入兩個集合的元素并輸出集合。2. 統(tǒng)計兩集合的交集、并集、差集,并再次輸出該數(shù)據(jù)。三、對課程設(shè)計說明書撰寫內(nèi)容、格式、字?jǐn)?shù)的要求1課程設(shè)計說明書是體現(xiàn)和總結(jié)

8、課程設(shè)計成果的載體,主要內(nèi)容包括:設(shè)計題目、設(shè)計目的、設(shè)備器材、設(shè)計原理及內(nèi)容、設(shè)計步驟、遇到的問題及解決方法、設(shè)計總結(jié)、設(shè)計小組評語、參考文獻(xiàn)等。一般不應(yīng)少于 3000 字。2在適當(dāng)位置配合相應(yīng)的實驗原理圖、數(shù)據(jù)通路圖、微程序流程圖、實驗接線圖、微指令代碼表等圖表進(jìn)行說明。應(yīng)做到文理通順,內(nèi)容正確完整,書寫工整,裝訂整齊。3設(shè)計總結(jié)部分主要寫本人完成工作簡介以及自己的設(shè)計體會,包括通過課程設(shè)計學(xué)到了什么,哪里遇到了困難,解決的辦法以及今后的目標(biāo)。設(shè)計小組評語處注明設(shè)計組編號、設(shè)計組組長、設(shè)計組成員,并由設(shè)計組組長給出評語。4課程設(shè)計說明書手寫或打印均可。手寫要用學(xué)校統(tǒng)一的課程設(shè)計用紙,用黑或

9、藍(lán)黑墨水工整書寫;打印時采用 A4 紙,頁邊距均為 20mm,正文采用宋體小四號字,行間距 18 磅。文中大標(biāo)題采用黑體小三號字,一級節(jié)標(biāo)題采用黑體四號字,二級節(jié)標(biāo)題采用黑體小四號字,表題與圖題采用宋體五號字。5課程設(shè)計說明書裝訂順序為:封面、任務(wù)書、成績評定表、目錄、正文、參考文獻(xiàn)。四、設(shè)計完成后應(yīng)提交成果的種類、數(shù)量、質(zhì)量等方面的要求1完成“任務(wù)書”中指定的操作功能,運行穩(wěn)定。2課程設(shè)計說明書。五、時間進(jìn)度安排順序階段日期計 劃 完 成 內(nèi) 容備注1第 1 天(月日)閱讀資料2第 2 天(月日月日)系統(tǒng)分析設(shè)計3第 3 天(月日月日)程序編制、調(diào)試及運行4第 4 天(月日)成績評定5第 5

10、 天(月日)撰寫課程設(shè)計說明書六、主要參考資料(文獻(xiàn))1嚴(yán)蔚敏 吳偉民.數(shù)據(jù)結(jié)構(gòu)(C 語言版). 北京:清華大學(xué)出版社.20072譚浩強.C 程序設(shè)計.北京:清華大學(xué)出版社.1999.123滕國文.數(shù)據(jù)結(jié)構(gòu)課程設(shè)計.北京:清華大學(xué)出版社.2010.094蘇仕華 等編著. 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計. 北京:機械工業(yè)出版社.2005.055李春葆.數(shù)據(jù)結(jié)構(gòu)(C 語言版)習(xí)題與解析.北京:清華大學(xué)出版社.2002.04沈沈 陽陽 工工 程程 學(xué)學(xué) 院院數(shù)據(jù)結(jié)構(gòu)課程設(shè)計成績評定表數(shù)據(jù)結(jié)構(gòu)課程設(shè)計成績評定表系(部):系(部): 信息學(xué)院信息學(xué)院 班級:班級: 軟件軟件151151 學(xué)生姓名:學(xué)生姓名: 楊紅偉楊

11、紅偉 指指 導(dǎo)導(dǎo) 教教 師師 評評 審審 意意 見見評價內(nèi)容具 體 要 求權(quán)重評 分加權(quán)分調(diào)研論證能獨立查閱文獻(xiàn),收集資料;能制定課程設(shè)計方案和日程安排。0.15 54 43 32 2工作能力態(tài)度工作態(tài)度認(rèn)真,遵守紀(jì)律,出勤情況是否良好,能夠獨立完成設(shè)計工作, 0.25 54 43 32 2工作量按期圓滿完成規(guī)定的設(shè)計任務(wù),工作量飽滿,難度適宜。0.25 54 43 32 2說明書的質(zhì)量說明書立論正確,論述充分,結(jié)論嚴(yán)謹(jǐn)合理,文字通順,技術(shù)用語準(zhǔn)確,符號統(tǒng)一,編號齊全,圖表完備,書寫工整規(guī)范。0.55 54 43 32 2指導(dǎo)教師評審成績指導(dǎo)教師評審成績(加權(quán)分合計乘以(加權(quán)分合計乘以 8 8

12、) 分分加權(quán)分合計加權(quán)分合計指指 導(dǎo)導(dǎo) 教教 師師 簽簽 名:名: 年年 月月 日日評評 閱閱 教教 師師 評評 審審 意意 見見評價內(nèi)容具 體 要 求權(quán)重評 分加權(quán)分查閱文獻(xiàn)查閱文獻(xiàn)有一定廣泛性;有綜合歸納資料的能力0.25 54 43 32 2工作量工作量飽滿,難度適中。0.55 54 43 32 2說明書的質(zhì)量說明書立論正確,論述充分,結(jié)論嚴(yán)謹(jǐn)合理,文字通順,技術(shù)用語準(zhǔn)確,符號統(tǒng)一,編號齊全,圖表完備,書寫工整規(guī)范。0.35 54 43 32 2評閱教師評審成績評閱教師評審成績(加權(quán)分合計乘以(加權(quán)分合計乘以 4 4)分分加權(quán)分合計加權(quán)分合計評評 閱閱 教教 師師 簽簽 名:名: 年年

13、月月 日日答答 辯辯 小小 組組 評評 審審 意意 見見評價內(nèi)容具 體 要 求權(quán)重評 分加權(quán)分學(xué)生匯報匯報準(zhǔn)備充分,思路清晰;語言表達(dá)準(zhǔn)確,概念清楚,論點正確,有層次,有重點,基本上反映了所完成任務(wù)的全部內(nèi)容;時間符合要求。0.55 54 43 32 2答 辯思路清晰;回答問題有理論依據(jù),基本概念清楚;主要問題回答準(zhǔn)確,深入,有說服力。0.55 54 43 32 2答辯小組評審成績答辯小組評審成績(加權(quán)分合計乘以(加權(quán)分合計乘以 8 8)分分加權(quán)分合計加權(quán)分合計答辯小組教師簽名:答辯小組教師簽名: 年年 月月 日日課課 程程 設(shè)設(shè) 計計 總總 評評 成成 績績分分沈沈 陽陽 工工 程程 學(xué)學(xué)

14、院院程序設(shè)計基礎(chǔ)課程設(shè)計成績評定表程序設(shè)計基礎(chǔ)課程設(shè)計成績評定表系(部):系(部): 信息學(xué)院信息學(xué)院 班級:班級: 軟件軟件151151 學(xué)生姓名:學(xué)生姓名: 閆旺閆旺 指指 導(dǎo)導(dǎo) 教教 師師 評評 審審 意意 見見評價內(nèi)容具 體 要 求權(quán)重評 分加權(quán)分調(diào)研論證能獨立查閱文獻(xiàn),收集資料;能制定課程設(shè)計方案和日程安排。0.15 54 43 32 2工作能力態(tài)度工作態(tài)度認(rèn)真,遵守紀(jì)律,出勤情況是否良好,能夠獨立完成設(shè)計工作, 0.25 54 43 32 2工作量按期圓滿完成規(guī)定的設(shè)計任務(wù),工作量飽滿,難度適宜。0.25 54 43 32 2說明書的質(zhì)量說明書立論正確,論述充分,結(jié)論嚴(yán)謹(jǐn)合理,文字

15、通順,技術(shù)用語準(zhǔn)確,符號統(tǒng)一,編號齊全,圖表完備,書寫工整規(guī)范。0.55 54 43 32 2指導(dǎo)教師評審成績指導(dǎo)教師評審成績(加權(quán)分合計乘以(加權(quán)分合計乘以 8 8) 分分加權(quán)分合計加權(quán)分合計指指 導(dǎo)導(dǎo) 教教 師師 簽簽 名:名: 年年 月月 日日評評 閱閱 教教 師師 評評 審審 意意 見見評價內(nèi)容具 體 要 求權(quán)重評 分加權(quán)分查閱文獻(xiàn)查閱文獻(xiàn)有一定廣泛性;有綜合歸納資料的能力0.25 54 43 32 2工作量工作量飽滿,難度適中。0.55 54 43 32 2說明書的質(zhì)量說明書立論正確,論述充分,結(jié)論嚴(yán)謹(jǐn)合理,文字通順,技術(shù)用語準(zhǔn)確,符號統(tǒng)一,編號齊全,圖表完備,書寫工整規(guī)范。0.35

16、 54 43 32 2評閱教師評審成績評閱教師評審成績(加權(quán)分合計乘以(加權(quán)分合計乘以 4 4)分分加權(quán)分合計加權(quán)分合計評評 閱閱 教教 師師 簽簽 名:名: 年年 月月 日日答答 辯辯 小小 組組 評評 審審 意意 見見評價內(nèi)容具 體 要 求權(quán)重評 分加權(quán)分學(xué)生匯報匯報準(zhǔn)備充分,思路清晰;語言表達(dá)準(zhǔn)確,概念清楚,論點正確,有層次,有重點,基本上反映了所完成任務(wù)的全部內(nèi)容;時間符合要求。0.55 54 43 32 2答 辯思路清晰;回答問題有理論依據(jù),基本概念清楚;主要問題回答準(zhǔn)確,深入,有說服力。0.55 54 43 32 2答辯小組評審成績答辯小組評審成績(加權(quán)分合計乘以(加權(quán)分合計乘以

17、8 8)分分加權(quán)分合計加權(quán)分合計答辯小組教師簽名:答辯小組教師簽名: 年年 月月 日日課課 程程 設(shè)設(shè) 計計 總總 評評 成成 績績分分沈沈 陽陽 工工 程程 學(xué)學(xué) 院院程序設(shè)計基礎(chǔ)課程設(shè)計成績評定表程序設(shè)計基礎(chǔ)課程設(shè)計成績評定表系(部):系(部): 信息學(xué)院信息學(xué)院 班級:班級: 軟件軟件151151 學(xué)生姓名:學(xué)生姓名: 姜明姜明 指指 導(dǎo)導(dǎo) 教教 師師 評評 審審 意意 見見評價內(nèi)容具 體 要 求權(quán)重評 分加權(quán)分調(diào)研論證能獨立查閱文獻(xiàn),收集資料;能制定課程設(shè)計方案和日程安排。0.15 54 43 32 2工作能力態(tài)度工作態(tài)度認(rèn)真,遵守紀(jì)律,出勤情況是否良好,能夠獨立完成設(shè)計工作, 0.2

18、5 54 43 32 2工作量按期圓滿完成規(guī)定的設(shè)計任務(wù),工作量飽滿,難度適宜。0.25 54 43 32 2說明書的質(zhì)量說明書立論正確,論述充分,結(jié)論嚴(yán)謹(jǐn)合理,文字通順,技術(shù)用語準(zhǔn)確,符號統(tǒng)一,編號齊全,圖表完備,書寫工整規(guī)范。0.55 54 43 32 2指導(dǎo)教師評審成績指導(dǎo)教師評審成績(加權(quán)分合計乘以(加權(quán)分合計乘以 8 8) 分分加權(quán)分合計加權(quán)分合計指指 導(dǎo)導(dǎo) 教教 師師 簽簽 名:名: 年年 月月 日日評評 閱閱 教教 師師 評評 審審 意意 見見評價內(nèi)容具 體 要 求權(quán)重評 分加權(quán)分查閱文獻(xiàn)查閱文獻(xiàn)有一定廣泛性;有綜合歸納資料的能力0.25 54 43 32 2工作量工作量飽滿,難

19、度適中。0.55 54 43 32 2說明書的質(zhì)量說明書立論正確,論述充分,結(jié)論嚴(yán)謹(jǐn)合理,文字通順,技術(shù)用語準(zhǔn)確,符號統(tǒng)一,編號齊全,圖表完備,書寫工整規(guī)范。0.35 54 43 32 2評閱教師評審成績評閱教師評審成績(加權(quán)分合計乘以(加權(quán)分合計乘以 4 4)分分加權(quán)分合計加權(quán)分合計評評 閱閱 教教 師師 簽簽 名:名: 年年 月月 日日答答 辯辯 小小 組組 評評 審審 意意 見見評價內(nèi)容具 體 要 求權(quán)重評 分加權(quán)分學(xué)生匯報匯報準(zhǔn)備充分,思路清晰;語言表達(dá)準(zhǔn)確,概念清楚,論點正確,有層次,有重點,基本上反映了所完成任務(wù)的全部內(nèi)容;時間符合要求。0.55 54 43 32 2答 辯思路清晰

20、;回答問題有理論依據(jù),基本概念清楚;主要問題回答準(zhǔn)確,深入,有說服力。0.55 54 43 32 2答辯小組評審成績答辯小組評審成績(加權(quán)分合計乘以(加權(quán)分合計乘以 8 8)分分加權(quán)分合計加權(quán)分合計答辯小組教師簽名:答辯小組教師簽名: 年年 月月 日日課課 程程 設(shè)設(shè) 計計 總總 評評 成成 績績分分沈沈 陽陽 工工 程程 學(xué)學(xué) 院院程序設(shè)計基礎(chǔ)課程設(shè)計成績評定表程序設(shè)計基礎(chǔ)課程設(shè)計成績評定表系(部):系(部): 信息學(xué)院信息學(xué)院 班級:班級: 軟件軟件151151 學(xué)生姓名:學(xué)生姓名: 張曉曉張曉曉 指指 導(dǎo)導(dǎo) 教教 師師 評評 審審 意意 見見評價內(nèi)容具 體 要 求權(quán)重評 分加權(quán)分調(diào)研論證

21、能獨立查閱文獻(xiàn),收集資料;能制定課程設(shè)計方案和日程安排。0.15 54 43 32 2工作能力態(tài)度工作態(tài)度認(rèn)真,遵守紀(jì)律,出勤情況是否良好,能夠獨立完成設(shè)計工作, 0.25 54 43 32 2工作量按期圓滿完成規(guī)定的設(shè)計任務(wù),工作量飽滿,難度適宜。0.25 54 43 32 2說明書的質(zhì)量說明書立論正確,論述充分,結(jié)論嚴(yán)謹(jǐn)合理,文字通順,技術(shù)用語準(zhǔn)確,符號統(tǒng)一,編號齊全,圖表完備,書寫工整規(guī)范。0.55 54 43 32 2指導(dǎo)教師評審成績指導(dǎo)教師評審成績(加權(quán)分合計乘以(加權(quán)分合計乘以 8 8) 分分加權(quán)分合計加權(quán)分合計指指 導(dǎo)導(dǎo) 教教 師師 簽簽 名:名: 年年 月月 日日評評 閱閱 教

22、教 師師 評評 審審 意意 見見評價內(nèi)容具 體 要 求權(quán)重評 分加權(quán)分查閱文獻(xiàn)查閱文獻(xiàn)有一定廣泛性;有綜合歸納資料的能力0.25 54 43 32 2工作量工作量飽滿,難度適中。0.55 54 43 32 2說明書的質(zhì)量說明書立論正確,論述充分,結(jié)論嚴(yán)謹(jǐn)合理,文字通順,技術(shù)用語準(zhǔn)確,符號統(tǒng)一,編號齊全,圖表完備,書寫工整規(guī)范。0.35 54 43 32 2評閱教師評審成績評閱教師評審成績(加權(quán)分合計乘以(加權(quán)分合計乘以 4 4)分分加權(quán)分合計加權(quán)分合計評評 閱閱 教教 師師 簽簽 名:名: 年年 月月 日日答答 辯辯 小小 組組 評評 審審 意意 見見評價內(nèi)容具 體 要 求權(quán)重評 分加權(quán)分學(xué)生

23、匯報匯報準(zhǔn)備充分,思路清晰;語言表達(dá)準(zhǔn)確,概念清楚,論點正確,有層次,有重點,基本上反映了所完成任務(wù)的全部內(nèi)容;時間符合要求。0.55 54 43 32 2答 辯思路清晰;回答問題有理論依據(jù),基本概念清楚;主要問題回答準(zhǔn)確,深入,有說服力。0.55 54 43 32 2答辯小組評審成績答辯小組評審成績(加權(quán)分合計乘以(加權(quán)分合計乘以 8 8)分分加權(quán)分合計加權(quán)分合計答辯小組教師簽名:答辯小組教師簽名: 年年 月月 日日課課 程程 設(shè)設(shè) 計計 總總 評評 成成 績績分分沈陽工程學(xué)院課程設(shè)計報告 摘要摘摘 要要數(shù)據(jù)結(jié)構(gòu)與算法在計算機學(xué)科中的地位十分重要,是設(shè)計系統(tǒng)程序和大型應(yīng)用程序的重要基礎(chǔ)。我們

24、進(jìn)行課程設(shè)計的目的是要掌握設(shè)計程序的思路,學(xué)習(xí)會用計算機語言編寫程序,以實現(xiàn)所需要處理的任務(wù)。算法的實現(xiàn)是課程設(shè)計的靈魂,也就是我們學(xué)習(xí)設(shè)計的重中之重。算法的設(shè)計靠的不是語法規(guī)則,而是解題的思路。所以在開始設(shè)計前,我們要掌握好課本的基本內(nèi)容,并且查閱一系列的課外資料,鍛煉我們設(shè)計算法的思路。本次數(shù)據(jù)結(jié)構(gòu)課程設(shè)計電文的編碼與譯碼這個題目,其主要思想是哈夫曼樹的建立,利用哈夫曼編碼的優(yōu)點,使得在通信的過程中對電文進(jìn)行編碼,從而達(dá)到加密方對電文進(jìn)行加密且壓縮,解密方對電文進(jìn)行解密的過程。在存儲方式上是運用了二叉樹的存儲方式,同時在編寫程序中使用的基本操作有字符的統(tǒng)計、哈夫曼樹的建立、哈夫曼編碼的實現(xiàn)

25、以及對哈夫曼編碼的翻譯。在編寫程序的過程中遇到了許多問題,例如:如何統(tǒng)計字符出現(xiàn)的次數(shù)、如何正確的構(gòu)造哈夫曼樹等。 數(shù)值轉(zhuǎn)換這個題目,其主要的思想是棧的基本操作,利用棧先進(jìn)先出的優(yōu)點,對于給定的十進(jìn)制數(shù)對其進(jìn)行除權(quán)取余運算,把得到的余數(shù)逐個壓入棧中,然后輸出棧,就是想要得到的十進(jìn)制數(shù)轉(zhuǎn)換后的二進(jìn)制數(shù)、八進(jìn)制數(shù)以及十六進(jìn)制數(shù)。使用順序棧來存儲計算后的結(jié)果,主要實現(xiàn)的功能有:對于給定的十進(jìn)制數(shù)字轉(zhuǎn)換成對應(yīng)的二進(jìn)制數(shù)、八進(jìn)制樹、十六進(jìn)制數(shù)以及相反的運算。在編寫程序的過程中遇到的問題有:如何把十進(jìn)制數(shù)轉(zhuǎn)換為其他的進(jìn)制數(shù)以及棧的建立等。關(guān)鍵詞關(guān)鍵詞 哈夫曼樹、二叉樹、順序棧。沈陽工程學(xué)院課程設(shè)計報告 目

26、錄目錄摘摘 要要.I第一章第一章 問題分析問題分析.11.1 引言.11.3 分析.11.3.1 學(xué)生成績信息管理系統(tǒng).11.3.2 集合的交并運算系統(tǒng).2第二章第二章 原理與運行環(huán)境原理與運行環(huán)境.32.1 數(shù)據(jù)結(jié)構(gòu)理論.32.1.1 學(xué)生成績管理系統(tǒng)數(shù)據(jù)結(jié)構(gòu)理論.32.1.2 集合交并運算系統(tǒng)數(shù)據(jù)結(jié)構(gòu)理論.32.2 運行環(huán)境.42.2.1 打開方法.42.2.2 打開 CodeBlocks 中的 C 環(huán)境 .42.2.3 源程序的建立與編輯、連接.5第三章第三章 系統(tǒng)分析與設(shè)計系統(tǒng)分析與設(shè)計.73.1 學(xué)生成績管理分析與設(shè)計.73.1.1 系統(tǒng)的功能.73.1.2 系統(tǒng)模塊分析及其流程圖.

27、73.2 集合交并運算系統(tǒng)分析與設(shè)計.103.2.1 集合交并運算系統(tǒng)的功能.103.2.2 系統(tǒng)模塊分析及其流程圖.10第四章第四章 系統(tǒng)功能實現(xiàn)系統(tǒng)功能實現(xiàn).144.1 學(xué)生成績管理系統(tǒng)功能實現(xiàn).144.1.1 定義主函數(shù).144.1.2 定義存儲結(jié)構(gòu).164.1.3 構(gòu)建鏈表.164.1.4 調(diào)用學(xué)生排序函數(shù).184.1.5 調(diào)用查詢學(xué)生數(shù)據(jù)函數(shù).204.1.6 調(diào)用學(xué)生插入函數(shù).234.1.7 調(diào)用顯示學(xué)生數(shù)據(jù)函數(shù).244.1.8 調(diào)用修改學(xué)生數(shù)據(jù)函數(shù).254.1.9 調(diào)用刪除學(xué)生數(shù)據(jù)函數(shù).274.2 集合交并運算系統(tǒng)功能實現(xiàn).284.2.1 定義主函數(shù).284.2.2 定義存儲結(jié)構(gòu).

28、304.2.3 創(chuàng)建集合功能.304.2.4 計算集合交集功能.324.2.5 計算集合并集功能.334.2.6 計算集合差集功能.35結(jié)論結(jié)論.37沈陽工程學(xué)院課程設(shè)計報告 目錄致謝致謝.38參考文獻(xiàn)參考文獻(xiàn).39沈陽工程學(xué)院課程設(shè)計報告 第一章 問題分析0第一章 問題分析1.1 引言數(shù)據(jù)結(jié)構(gòu)的教學(xué)要求是:學(xué)會分析研究計算機加工的數(shù)據(jù)結(jié)構(gòu)的特征,以便為應(yīng)用涉及的數(shù)據(jù)選擇適當(dāng)?shù)倪壿嫿Y(jié)構(gòu)、存儲結(jié)構(gòu)及其相應(yīng)的算法,并初步掌握算法的時間分析和空間分析的技術(shù)。另一方面,本課程的學(xué)習(xí)過程也是復(fù)雜程序設(shè)計的訓(xùn)練過程,要求學(xué)生編寫的程序結(jié)構(gòu)清楚和正確易讀,符合軟件工程的規(guī)范。在學(xué)習(xí)中,先要學(xué)習(xí)程序設(shè)計課程的

29、目的掌握設(shè)計程序的思路,學(xué)習(xí)會用計算機語言編寫程序,以實現(xiàn)所需要處理的任務(wù)。要正確處理算法與語法的關(guān)系,算法是程序的核心、是靈魂,語法是外殼、是工具。不應(yīng)把學(xué)習(xí)重點放在語法規(guī)則上,語法是重要的,不掌握語法規(guī)則就無法編寫出正確的程序。一定要把重點放在解題的思路上,通過思考,和大量的閱讀,來構(gòu)造一個完整的程序。請記?。褐匾氖菍W(xué)會編程,而不是背語法。程序設(shè)計是為了鍛煉我們的實際動手能力,在一定程度上,又增加了我們的各方面的知識,特別是一些聯(lián)系實際的課程設(shè)計,它的完成需要自己平時積累的大量知識、并且需要勤于思考的能力和無限的激情。本次課程設(shè)計主要是學(xué)習(xí)程序設(shè)計的方法,進(jìn)行程序設(shè)計的基本訓(xùn)練,大多數(shù)的

30、學(xué)生應(yīng)該把精力放在最基本,最常用的內(nèi)容上,學(xué)好基本功。通過本次課程設(shè)計,相信我們一定能加強對數(shù)據(jù)結(jié)構(gòu)這門課程的學(xué)習(xí),尤其在動手實踐上會有很大的進(jìn)步。1.2 背景21 世紀(jì),科學(xué)技術(shù)突飛猛進(jìn),特別是信息技術(shù)和網(wǎng)絡(luò)技術(shù)的迅速發(fā)展,各個學(xué)校的規(guī)模也隨之不斷增大,有關(guān)學(xué)生成績管理工作所涉及的數(shù)據(jù)量越來越大,如若進(jìn)行的仍是手工的學(xué)生成績管理,學(xué)校就不得不靠增加人力、物力來進(jìn)行學(xué)生成績管理。即使如此,手工管理仍具有效率低、管理復(fù)雜和易出錯等諸多問題。所以在學(xué)校這樣一個具有超大數(shù)據(jù)量的機構(gòu)中,通過應(yīng)用信息技術(shù)和網(wǎng)絡(luò)技術(shù)對學(xué)生成績信息進(jìn)行系統(tǒng)化的管理是必須的。將計算機這一信息處理器應(yīng)用于學(xué)生的個人信息管理已是

31、勢必所然,而且這也將為學(xué)生信息管理帶來前所未有的改變。采用計算機對學(xué)生的信息管理是信息科學(xué)化和現(xiàn)代的重要標(biāo)志,它也給各大高校帶來了明顯的社會效益。主要體現(xiàn)在:極大地提高了管理工作人員的工作效率,大大地減少了以往的資料室所存在的各種弊端,同時也加強和規(guī)范學(xué)習(xí)對于學(xué)生信息的管理。1.3 分析1.3.1 學(xué)生成績信息管理系統(tǒng)學(xué)生成績管理系統(tǒng)的主要功能是實現(xiàn)學(xué)生成績和基本信息的管理。如若還沒有建立文件可以在運行界面新建文件,在重新運行程序即可進(jìn)入系統(tǒng)。學(xué)生成績信息有學(xué)號、姓名、數(shù)沈陽工程學(xué)院課程設(shè)計報告 第一章 問題分析1學(xué)成績、英語成績、計算機和總分的顯示。學(xué)生成績管理包括對學(xué)生各科成績的輸入、輸出

32、、刪除、修改、按總分排序、查找和保存等多種功能。查找又分為按學(xué)號和姓名進(jìn)行查找,然后輸出查找學(xué)生的全部信息;刪除可以通過學(xué)生的序號進(jìn)行查找再進(jìn)行刪除,再對記錄進(jìn)行調(diào)整;排序有按學(xué)號排序,單科(數(shù)學(xué)、英語、計算機)成績由高到低排序,按總分由高到低排序等。1.3.2 集合的交并運算系統(tǒng)集合的交并運算系統(tǒng)運用的數(shù)據(jù)結(jié)構(gòu)是線性表中的順序表。順序表是多個數(shù)據(jù)元素的連續(xù)存儲,至于每個數(shù)據(jù)元素的具體含義,在不同的情況下各不相同,它可以是一個數(shù)或是一個符號等等。集合的交并運算適合用順序表,其方便隨時進(jìn)行對相應(yīng)的整數(shù)進(jìn)行查找統(tǒng)計,實現(xiàn)動態(tài)管理。該數(shù)組類型為結(jié)構(gòu)體,結(jié)構(gòu)體中的域表示整數(shù)的相應(yīng)屬性。集合的交并運算系

33、統(tǒng)包括有三個函數(shù),分別為統(tǒng)計集合的交集、并集、差集。在函數(shù)的開始階段,系統(tǒng)會執(zhí)行創(chuàng)建集合函數(shù)。在這個過程中,需要用戶進(jìn)行錄入操作,即輸入要進(jìn)行運算的集合元素。當(dāng)完成錄入工作后,集合的交并運算系統(tǒng)會繼續(xù)調(diào)用輸出集合元素函數(shù)對所輸入的信息進(jìn)行輸出。之后,此系統(tǒng)將提示用戶調(diào)用集合的交集函數(shù)來計算所輸入元素的交集;繼續(xù)提示用戶調(diào)用集合的并集函數(shù)來計算所輸入元素的并集;繼續(xù)提示用戶調(diào)用集合的差集函數(shù)來計算所輸入元素的差集。計算集合的交集功能,首先調(diào)用集合的交集函數(shù),在此函數(shù)里判斷是否有相等的元素,如果有輸出即可,如果沒有輸出集合沒有交集。計算集合的并集功能,首先調(diào)用集合的并集函數(shù),先輸出里面集合元素個數(shù)

34、較多的集合,然后找出在集合元素個數(shù)較少的集合中存在的元素但在集合元素個數(shù)較多的集合中沒有的元素輸出它們即可。計算集合的差集功能,首先調(diào)用集合的差集函數(shù),因為兩個集合有兩個差集,找出在第一個集合里存在的元素但在第二個集合里不存在的元素輸出即可;再找出在第二個集合里存在的元素但在第一個集合里不存在的元素輸出即可。 沈陽工程學(xué)院課程設(shè)計報告 第二章 原理與運行環(huán)境2第二章第二章 原理與運行環(huán)境原理與運行環(huán)境2.1 數(shù)據(jù)結(jié)構(gòu)理論2.1.1 學(xué)生成績管理系統(tǒng)數(shù)據(jù)結(jié)構(gòu)理論鏈表是一種物理存儲單元上非連續(xù)、非順序的存儲結(jié)構(gòu),數(shù)據(jù)元素的邏輯順序是通過鏈表中的指針鏈接次序?qū)崿F(xiàn)的。鏈表由一系列結(jié)點(鏈表中每一個元素

35、稱為結(jié)點)組成,結(jié)點可以在運行時動態(tài)生成。每個結(jié)點包括兩個部分:一個是存儲數(shù)據(jù)元素的數(shù)據(jù)域,另一個是存儲下一個結(jié)點地址的指針域。 相比于線性表順序結(jié)構(gòu),操作復(fù)雜。使用鏈表結(jié)構(gòu)可以克服數(shù)組鏈表需要預(yù)先知道數(shù)據(jù)大小的缺點,鏈表結(jié)構(gòu)可以充分利用計算機內(nèi)存空間,實現(xiàn)靈活的內(nèi)存動態(tài)管理。但是鏈表失去了數(shù)組隨機讀取的優(yōu)點,同時鏈表由于增加了結(jié)點的指針域,空間開銷比較大。在本系統(tǒng)中我們使用的是鏈表的存儲結(jié)構(gòu)以及其相關(guān)的應(yīng)用。學(xué)生成績管理系統(tǒng)應(yīng)用的是鏈表的存儲結(jié)構(gòu),線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)的特點:用一組任意的存儲單元存儲線性表的數(shù)據(jù)元素(這組存儲單元可以是連續(xù)的,也可以是不連續(xù)的)。因此,為了表示每個數(shù)據(jù)元素與其

36、直接后繼數(shù)據(jù)元素 之間的邏輯關(guān)系,對數(shù)據(jù)元素 來說,除了存儲其本身的信息之外,還需存儲一個指示其直接后繼的信息(即直接后繼的存儲位置)。我們將任務(wù)分成多個最簡化的模塊,增強了可讀性和簡單性,同時為日后的編寫,調(diào)試,維護(hù)提供了極大地方便。在學(xué)生成績管理系統(tǒng)中,鏈表的數(shù)據(jù)結(jié)構(gòu)中有保存學(xué)生數(shù)據(jù)的數(shù)據(jù)域,還有保存存儲下一個結(jié)點地址的指針域。輸入功能:輸入是將學(xué)生數(shù)據(jù)信息存儲到鏈表中。查找功能:對于給定一個學(xué)生的學(xué)號(或?qū)W生的姓名)利用查找算法找到學(xué)生的信息并輸出。排序功能:可以按學(xué)號排序,單科成績排序,總分排序。刪除功能:按照學(xué)生的序號進(jìn)行刪除。修改功能:按照學(xué)生的學(xué)號查找到然后在進(jìn)行修改。插入功能:

37、直接插入之后處理即可。2.1.2 集合交并運算系統(tǒng)數(shù)據(jù)結(jié)構(gòu)理論線性表采用順序存儲的方式存儲就稱之為順序表。順序表是將表中的結(jié)點依次存放在計算機內(nèi)存中一組地址連續(xù)的存儲單元中。順序表是在計算機內(nèi)存中以數(shù)組的形式保存的線性表,是指用一組地址連續(xù)的存儲單元依次存儲數(shù)據(jù)元素的線性結(jié)構(gòu)。順序表存儲位置是相鄰連續(xù)的,可以隨即訪問的一種數(shù)據(jù)結(jié)構(gòu),一個順序表在使用前必須指定起長度,一旦分配內(nèi)存,則在使用中不可以動態(tài)的更改。他的優(yōu)點是訪問數(shù)據(jù)是比較方便,可以隨即的訪問表中的任何一個數(shù)據(jù)。集合交并運算系統(tǒng)應(yīng)用的是線性表順序存儲結(jié)構(gòu),線性表的順序儲結(jié)構(gòu)的特點:只要確沈陽工程學(xué)院課程設(shè)計報告 第二章 原理與運行環(huán)境3

38、定了起始位置,表中任一元素的地址都通過下列公式得到:LOC(ai)=LOC(a1)+(i-1)*L 1in 其中,L 是元素占用存儲單元的長度。順序表可隨機存取。我們將任務(wù)分成多個最簡化的模塊,增強了可讀性和簡單性,同時為日后的編寫,調(diào)試,維護(hù)提供了極大地方便。在集合交并運算系統(tǒng)中,適合用順序表。該數(shù)組類型為結(jié)構(gòu)體,結(jié)構(gòu)體中的域表示整數(shù)數(shù)據(jù)的相應(yīng)屬性。其中,數(shù)據(jù)的形式和范圍輸入整型的數(shù)據(jù)。輸入功能:分別輸入集合 A 和集合 B 的元素,并輸出它們。計算集合交集功能:找出兩個集合不相同的元素并輸出它們。計算集合并集功能:首先調(diào)用集合的并集函數(shù),先輸出里面集合元素個數(shù)較多的集合,然后找出在集合元素

39、個數(shù)較少的集合中存在的元素但在集合元素個數(shù)較多的集合中沒有的元素輸出它們即可。計算集合差集功能:首先調(diào)用集合的差集函數(shù),因為兩個集合有兩個差集,找出在 A集合里存在的元素但在 B 集合里不存在的元素輸出即可;再找出在第 B 集合里存在的元素但在 A 集合里不存在的元素輸出即可。 2.2 運行環(huán)境在數(shù)據(jù)結(jié)構(gòu)程序的運行環(huán)境為 CodeBlocks 中的 Console application 的 C 環(huán)境。2.2.1 打開方法開始所有程序CodeBlocks 如圖 2-1 所示。圖 2-1 打開CodeBlocks的方法2.2.2 打開 CodeBlocks 中的 C 環(huán)境其工作環(huán)境如圖 2-2

40、所示。沈陽工程學(xué)院課程設(shè)計報告 第二章 原理與運行環(huán)境4 圖 2-2 C CodeBlocks 中的 Console application 的 C 環(huán)境 CodeBlocks 中的 Console application 的 C 環(huán)境的材料如下:CodeBlocks 中的 Console application 的 C 環(huán)境可以劃分為三塊區(qū)域。最左邊的區(qū)域是工作區(qū),最下面的區(qū)域是輸出區(qū),最右邊的區(qū)域是編輯區(qū)。編輯區(qū)用來對原文件進(jìn)行編輯,現(xiàn)在的編輯區(qū)是天藍(lán)色的,表示等待源文件進(jìn)行編輯。輸出區(qū)的作用是對程序進(jìn)行編譯和鏈接后,如果程序有錯誤或警告,則顯示在輸出區(qū)。工作區(qū)的作用是用來管理各種源程序文

41、件,在它的管理下,可以有條不紊的進(jìn)行各種源文件的編輯。 總體來講,CodeBlocks 中的 Console application 的 C 環(huán)境運行環(huán)境方便快捷。2.2.3 源程序的建立與編輯、連接建立 C 語言源程序文件。建立方法:選擇“CodeBlocks” “Console application” “C” “Project title” “Finish”。程序的編輯與編譯。編輯完成后,選擇菜單欄中的“build”即可對程序進(jìn)行編譯。當(dāng)輸出區(qū)顯示“0 errors, 0 warnings ”時表示沒有錯誤和警告,反之,則會按序號列出錯誤和警告。雙擊錯誤或警告,編輯標(biāo)志會出現(xiàn)在源文件可能

42、出錯的位置,當(dāng)然有時提示位置不一定很準(zhǔn)確。程序的執(zhí)行。單擊工具欄上的“深藍(lán)色三角號”按鈕,即可執(zhí)行剛編寫的程序,如圖2-3 所示。沈陽工程學(xué)院課程設(shè)計報告 第二章 原理與運行環(huán)境5圖 2-3 對源程序進(jìn)行編寫沈陽工程學(xué)院課程設(shè)計報告 第三章系統(tǒng)分析與設(shè)計6第三章 系統(tǒng)分析與設(shè)計3.1 學(xué)生成績管理分析與設(shè)計3.1.1 系統(tǒng)的功能本次任務(wù)要求實現(xiàn)學(xué)生成績管理系統(tǒng),根據(jù)需要可以進(jìn)行如下操作:構(gòu)建鏈表、調(diào)用各個函數(shù)并輸出結(jié)果。其功能模塊圖如圖 3-1 所示圖 3-1 學(xué)生成績管理功能模塊圖3.1.2 系統(tǒng)模塊分析及其流程圖主函數(shù)先對鏈表進(jìn)行初始化,再調(diào)用。主函數(shù)流程圖,如圖 3-2 所示。 學(xué)生成績

43、管理系統(tǒng)學(xué) 生 數(shù) 據(jù) 輸 入學(xué) 生 數(shù) 據(jù) 排 序?qū)W 生 數(shù) 據(jù) 的 插 入學(xué) 生 數(shù) 據(jù) 修 改學(xué) 生 數(shù) 據(jù) 輸 出學(xué) 生 數(shù) 據(jù) 查 詢學(xué) 生 數(shù) 據(jù) 刪 除按 學(xué) 號 排 序單 科 最 高 分 及 均 分按 總 分 排 序按 單 科 成 績 排 序按 學(xué) 號 查 詢按 姓 名 查 詢沈陽工程學(xué)院課程設(shè)計報告 第三章系統(tǒng)分析與設(shè)計7圖 3-2 主函數(shù)流程圖構(gòu)建鏈表根據(jù)學(xué)生數(shù)據(jù)信息初始化鏈表。在存儲完成后,再進(jìn)行操作。其構(gòu)建鏈表如圖 3-3 所示。圖 3-3 學(xué)生數(shù)據(jù)信息初始化流程圖利用冒泡排序算法對學(xué)生數(shù)據(jù)進(jìn)行排序:將被排序的記錄數(shù)組 R1.n垂直排列,每個記錄 Ri看作是重量為 Ri

44、.key 的氣泡。根據(jù)輕氣泡不能在重氣泡之下的原則,從下往上掃描數(shù)組 R:凡掃描到違反本原則的輕氣泡,就使其向上飄浮。如此反復(fù)進(jìn)行,直到最后任何兩個氣泡都是輕者在上,重者在下為止。(1)初始 R1.n為無序區(qū)。(2)第一趟掃描賦權(quán)值結(jié)束開始輸入學(xué)生數(shù)據(jù)信息形成鏈表調(diào)用各個函數(shù)進(jìn)行處理輸出結(jié)果結(jié)束圖 3-3 構(gòu)建有向網(wǎng)流程圖開始輸入學(xué)生數(shù)據(jù)初始化學(xué)生鏈表輸出鏈表結(jié)束沈陽工程學(xué)院課程設(shè)計報告 第三章系統(tǒng)分析與設(shè)計8 從無序區(qū)底部向上依次比較相鄰的兩個氣泡的重量,若發(fā)現(xiàn)輕者在下、重者在上,則交換二者的位置。即依次比較(Rn,Rn-1),(Rn-1,Rn-2),(R2,R1);對于每對氣泡(Rj+1,

45、Rj),若 Rj+1.keyB 元素個數(shù)?找出在 A 中有 B 中無的元素找出在 B 中有 A 中無的元素輸出這些元素和 B 集合結(jié)束是否1輸出這些元素和 A 集合沈陽工程學(xué)院課程設(shè)計報告 第三章系統(tǒng)分析與設(shè)計123 計算集合差集功能計算集合差集功能:首先調(diào)用集合的差集函數(shù),因為兩個集合有兩個差集,找出在 A集合里存在的元素但在 B 集合里不存在的元素輸出即可;再找出在第 B 集合里存在的元素但在 A 集合里不存在的元素輸出即可。其功能流程圖如圖 3-9 所示。 圖 3-9 計算集合差集功能流程圖開始輸入想要操作函數(shù)的序號 找出在 A 中有 B 中無的元素組成新集合找出在 B 中有 A 中無的

46、元素組成新集合 分別輸出這兩個新集合結(jié)束沈陽工程學(xué)院課程設(shè)計報告 第四章系統(tǒng)功能實現(xiàn)13第四章第四章 系統(tǒng)功能實現(xiàn)系統(tǒng)功能實現(xiàn)4.1 學(xué)生成績管理系統(tǒng)功能實現(xiàn)4.1.1 定義主函數(shù)主函數(shù)是程序的入口,采用模塊化設(shè)計,首先聲明一些必要的變量,然后調(diào)用 cin 函數(shù)創(chuàng)建鏈表,再調(diào)用各個函數(shù)進(jìn)行操作,輸出所要求的結(jié)果,退出系統(tǒng)。源代碼如下:int main()/主函數(shù)Student *head;int choose,i;head=(Student *)malloc(LEN);head-next=NULL;for(;) printf( *n); printf( * 學(xué)生成績管理系統(tǒng) *n); prin

47、tf( *n); printf( * 1.學(xué)生數(shù)據(jù)錄入 *n); printf( * 2.學(xué)生數(shù)據(jù)統(tǒng)計排序 *n); printf( * 3.查詢學(xué)生數(shù)據(jù) *n); printf( * 4.插入學(xué)生數(shù)據(jù) *n); printf( * 5.顯示當(dāng)前成績表 *n); printf( * 6.修改學(xué)生的數(shù)據(jù) *n); printf( * 7.刪除學(xué)生的數(shù)據(jù) *n); printf( * 0.退出成績管理系統(tǒng) *n); printf( *n); printf(n 請輸入你所選擇的操作(0-7):); scanf(%d,&choose); while(getchar()!=n); switch(

48、choose) case 1:printf(nn *注意*); printf(nn 這將會建立新的學(xué)生數(shù)據(jù) ,原來的數(shù)據(jù)將不再存在,你確定要刪除原來的數(shù)據(jù)并建立新的數(shù)據(jù)系統(tǒng)么?nn); printf(1、建立新的數(shù)據(jù)系統(tǒng). 0、放棄建立新的數(shù)據(jù)系統(tǒng).nn);沈陽工程學(xué)院課程設(shè)計報告 第四章系統(tǒng)功能實現(xiàn)14 printf(請選擇:); scanf(%d,&i); if (i=1) head=cin();print(head);break; else if (i=0) printf(n 你選擇了放棄建立新的數(shù)據(jù)系統(tǒng)!n); break; else printf(n 你做出別的選擇,當(dāng)作放棄

49、建立!n); break; case 2:head=sort_all(head);break; case 3:find(head);break; case 4:head=add_new(head); case 5:print(head);break; case 6:xg(head);break; case 7:sc(head);break; case 0:system(pause);return 0; default: printf(nn 您的輸入有誤!請重新輸入:nn);break; 功能實現(xiàn)圖如圖 4-1 所示。沈陽工程學(xué)院課程設(shè)計報告 第四章系統(tǒng)功能實現(xiàn)15圖 4-1 初始化界面4.1.

50、2 定義存儲結(jié)構(gòu)首先需要定義一個全局變量結(jié)構(gòu)體,學(xué)生的學(xué)號、成績、總分是整型,學(xué)生的姓名是字符型的。具體代碼如下:#include #include #include #include #define LEN sizeof(Student)int n; /定義一個全局變量 nStudent *cin(void);Student *sort_1(Student *head,int);void sort_2(Student *head);void print(Student *head);Student *sort_all(Student *head);void find(Student *hea

51、d);Student *add_new(Student *head); /函數(shù)的聲明typedef struct student /定義結(jié)構(gòu)體int num;char name20;int score4;int sum; /定義數(shù)據(jù)域struct student *next; /定義指針域Student;4.1.3 構(gòu)建鏈表初始化,管理員需要自己輸入學(xué)生數(shù)據(jù)信息。具體代碼如下:Student *cin()/學(xué)生數(shù)據(jù)初始化函數(shù)int flag;Student *head,*p1,*p2;n=0;head=(Student *)malloc(LEN);/動態(tài)開辟內(nèi)存p2=head;printf(n

52、 請輸入第%d 名學(xué)生的學(xué)號(學(xué)號為 0 表示結(jié)束輸入):,n+1);scanf(%d,&flag);沈陽工程學(xué)院課程設(shè)計報告 第四章系統(tǒng)功能實現(xiàn)16while(getchar()!=n);for(;flag;) n+; p1=(Student *)malloc(LEN); p1-num=flag; printf(請輸入第%d 名學(xué)生的姓名:,n); scanf(%s,p1-name); printf(請輸入第%d 名學(xué)生的語文成績:,n); scanf(%d,&p1-score0); printf(請輸入第%d 名學(xué)生的數(shù)學(xué)成績:,n); scanf(%d,&p1-s

53、core1); printf(請輸入第%d 名學(xué)生的英語成績:,n); scanf(%d,&p1-score2); printf(請輸入第%d 名學(xué)生的計算機成績:,n); scanf(%d,&p1-score3); p1-sum=p1-score0+p1-score1+p1-score2+p1-score3; p2-next=p1; p2=p1; printf(n 請輸入第%d 名學(xué)生的學(xué)號,沒有此學(xué)生則輸入 0 表示結(jié)束:,n+1); scanf(%d,&flag); p2-next=NULL;printf(nn);return head;/返回頭指針 功能實現(xiàn)圖如

54、圖 4-2 所示。圖 4-2 鏈表初始化沈陽工程學(xué)院課程設(shè)計報告 第四章系統(tǒng)功能實現(xiàn)174.1.4 調(diào)用學(xué)生排序函數(shù)利用學(xué)生排序函數(shù)對學(xué)生數(shù)據(jù)的管理。具體代碼如下:Student *sort_all(Student *head)/學(xué)生數(shù)據(jù)統(tǒng)計排序函數(shù)int choose;for(;) printf( #n); printf( # 學(xué)生成績統(tǒng)計排序 #n); printf( #n); printf( # 1.按學(xué)生學(xué)號排序 #n); printf( # 2.按學(xué)生總分排序 #n); printf( # 3.按學(xué)生語文成績排序 #n); printf( # 4.按學(xué)生數(shù)學(xué)成績排序 #n); pri

55、ntf( # 5.按學(xué)生英語成績排序 #n); printf( # 6.按學(xué)生計算機成績排序 #n); printf( # 7.單科最高分及均分 #n); printf( # 8.顯示當(dāng)前學(xué)生成績 #n); printf( # 0.返回上一級菜單 #n); printf( #nn); printf(請輸入你所選擇的操作(0-8):); scanf(%d,&choose); while(getchar()!=n); switch(choose) case 1: case 2: case 3: case 4: case 5: case 6:head=sort_1(head,choose);

56、break; case 7:print(head);sort_2(head);break; case 8:print(head);break; case 0:return head; default: printf(nn 您的輸入有誤!請重新輸入:nn);break; 沈陽工程學(xué)院課程設(shè)計報告 第四章系統(tǒng)功能實現(xiàn)18Student *sort_1(Student *head,int choose)/學(xué)生數(shù)據(jù)排序函數(shù)Student *p1,*p2=head-next,*pm,*px;Student mid;if (!p2) return head;/如果是空的直接返回頭指針for(p1=p2;p

57、1-next!=NULL;p1=p1-next) pm=p1; for(p2=p1-next;p2!=NULL;p2=p2-next) switch(choose)/判斷想要執(zhí)行哪一步排序 case 1:if (pm-nump2-num) pm=p2;break;/按學(xué)生學(xué)號排序 case 2:if (pm-sumsum) pm=p2;break;/按學(xué)生總分排序 case 3:if (pm-score0score0) pm=p2;break;/按學(xué)生語文成績排序 case 4:if (pm-score1score1) pm=p2;break;/按學(xué)生數(shù)學(xué)成績排序 case 5:if (pm-

58、score2score2) pm=p2;break;/按學(xué)生英語成績排序 case 6:if (pm-score3score3) pm=p2;break;/按學(xué)生計算機成績排序 if (pm!=p1) mid=*pm; *pm=*p1; *p1=mid; px=pm-next; pm-next=p1-next; p1-next=px; printf(n 排序后的成績表為:n);print(head);/調(diào)用輸出函數(shù)return head;功能實現(xiàn)圖如圖 4-3 所示。沈陽工程學(xué)院課程設(shè)計報告 第四章系統(tǒng)功能實現(xiàn)19圖 4-3 學(xué)生排序功能實現(xiàn)4.1.5 調(diào)用查詢學(xué)生數(shù)據(jù)函數(shù)利用學(xué)生查詢函數(shù)對學(xué)

59、生數(shù)據(jù)進(jìn)行查詢。具體代碼如下:void find(Student *head)/查找函數(shù)Student *p;int choose,fnum;char tem20;if (n=0) printf(n 當(dāng)前系統(tǒng)沒有任何學(xué)生數(shù)據(jù)n );return;for(;) printf(n 請輸入您要查詢學(xué)生的方式:nn); printf(1、按學(xué)號查詢;2、按姓名查詢;0、我不查詢了。nn); printf(請選擇:); scanf(%d,&choose); while(getchar()!=n); if (choose=1) /判斷你想要按什么查詢,如果是按學(xué)號查,進(jìn)入循環(huán)直到找到你想要查找的學(xué)

60、生數(shù)據(jù) /否則找不到你要查詢的學(xué)號。按姓名查詢和按學(xué)號查詢一樣。 printf(n 請輸入你要查詢的學(xué)生的學(xué)號,輸入 0 退出學(xué)號查詢:);沈陽工程學(xué)院課程設(shè)計報告 第四章系統(tǒng)功能實現(xiàn)20 scanf(%d,&fnum); for(;fnum;) for(p=head-next;p!=NULL&p-num!=fnum;p=p-next); if (!p) printf(nn 找不到你要查詢的學(xué)號,請重新輸入,輸入 0 表示結(jié)束:); scanf(%d,&fnum); else if (p-num=fnum) printf(n 學(xué)號為%d 學(xué)生的數(shù)據(jù)為:n,p-num); printf(學(xué)號 姓名 語文成績 數(shù)學(xué)成績 英語成績 計算機成績 總分n); printf(%d %s %d %d %d %d %dn,p-num,

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論