數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計報告格式-計算機(jī)學(xué)院2015級適用_第1頁
數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計報告格式-計算機(jī)學(xué)院2015級適用_第2頁
數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計報告格式-計算機(jī)學(xué)院2015級適用_第3頁
數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計報告格式-計算機(jī)學(xué)院2015級適用_第4頁
數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計報告格式-計算機(jī)學(xué)院2015級適用_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、“數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計”報告寫作要求及示例一、報告要求:1. 各位同學(xué)要嚴(yán)格按照要求寫報告,A4 紙打印,用學(xué)校統(tǒng)一印發(fā)的課程設(shè)計報告封面封裝(報告封皮各班班長到學(xué)院辦公室領(lǐng)?。?。2. 報告中不要求附全部的程序代碼,但主要代碼在詳細(xì)設(shè)計中說明。3. 報告上的課程設(shè)計名稱和指導(dǎo)教師按照數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計計劃書中指定的填寫。4. 報告字體及字號說明:中文使用宋體,西文使用Times New Roman。一級標(biāo)題使用四號加黑,其它次級標(biāo)題使用小四加黑,正文使用小四不加黑(注:不要附代碼)。5. 刻盤說明:統(tǒng)一刻錄光盤保存文檔和源碼,每班一張(班長負(fù)責(zé)),卷標(biāo)名稱:數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(*20

2、10-*班),如:數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(軟件2015-1班)。根目錄中每個同學(xué)一個文件夾,文件夾中保存源代碼及報告電子文檔,目錄名為學(xué)號加姓名,如:2015082339-劉德華。6. 提交報告說明:課程設(shè)計報告由各班長或?qū)W習(xí)委員收齊后,交給各班的課程設(shè)計指導(dǎo)教師。報告提交時間:2017年1月9日(周一)。具體提交地點和方式,由各班指導(dǎo)教師確定。二、報告格式1問題描述題目內(nèi)容、基本要求、提高要求。2需求分析軟件的基本功能、輸入/輸出形式、測試數(shù)據(jù)要求。3概要設(shè)計抽象數(shù)據(jù)類型、主程序流程及模塊調(diào)用關(guān)系。4詳細(xì)設(shè)計實現(xiàn)概要設(shè)計的數(shù)據(jù)類型、主程序以及其它模塊的算法描述。5編碼與調(diào)試分析編碼與調(diào)試過程

3、中遇到的問題及解決的辦法,還存在哪些沒有解決的問題?6使用說明簡要說明程序運行操作步驟。7測試結(jié)果準(zhǔn)備典型的測試數(shù)據(jù)和測試方案,包括正確的輸入及輸出結(jié)果和含有錯誤的輸入及輸出結(jié)果。8自學(xué)知識自主學(xué)習(xí)了哪些新知識及主要知識點描述。9課程設(shè)計心得體會課程設(shè)計過程經(jīng)驗教訓(xùn)、心得體會。三、課程設(shè)計報告示例題目:計算表達(dá)式的值1、問題描述對于給定的一個表達(dá)式,表達(dá)式中可以包括常數(shù)、算術(shù)運行符(“+”、“-”、“*”、“/”)和括號,編寫程序計算表達(dá)式的值?;疽螅簭逆I盤輸入一個正確的中綴表達(dá)式,將中綴表達(dá)式轉(zhuǎn)換為對應(yīng)的后綴表達(dá)式,計算后綴表達(dá)式的值。提高要求:(1)對于表達(dá)式中的簡單錯誤,能夠給出提示

4、;(2)不僅提示錯誤,也能給出錯誤信息(3)表達(dá)式中可以包括單個字母表示的變量(4)能夠處理多種操作符(5)實現(xiàn)包含簡單運算的計算器(6)實現(xiàn)一個包含簡單運算和函數(shù)運算的計算器。 2需求分析軟件的基本功能:由鍵盤輸入中綴表達(dá)式,程序可以將輸入的中綴表達(dá)式轉(zhuǎn)換成對應(yīng)的后綴表達(dá)式,并計算后綴表達(dá)式的值。對于在輸入時發(fā)生的簡單錯誤,程序可以給出提示。本程序支持含負(fù)數(shù)、小數(shù)、多位數(shù)等多種操作數(shù)的處理,可以計算含加、減、乘、除、求余、求冪等多種運算符的表達(dá)式,并能判斷表達(dá)式括號是否匹配。輸入/輸出形式:用戶可以通過控制臺,根據(jù)輸入提示。輸入形式:正確的不含字母變量的中綴表達(dá)式;含有簡單錯誤的中綴表達(dá)式。

5、輸出形式:對于正確的中綴表達(dá)式,可以輸出其轉(zhuǎn)化后的后綴表達(dá)式及表達(dá)式的計算結(jié)果;對于含有簡單錯誤的中綴表達(dá)式,程序?qū)⒆詣虞敵鲥e誤提示,并給出錯誤信息。測試數(shù)據(jù)要求:用戶可以輸入一個符合要求的中綴表達(dá)式,也可以輸入一個包含簡單錯誤的表達(dá)式。表達(dá)式中可以包括各種類型的常數(shù)以及負(fù)數(shù)等,操作符包括(+、-、*、/、%、)等,同時表達(dá)式還可以包括各種括號。3概要設(shè)計(1)抽象數(shù)據(jù)類型:根據(jù)題目的要求,考慮用棧類型比較適合。ADT SeqStackData棧中元素具有相同類型及后進(jìn)先出特性,相鄰元素具有前驅(qū)和后繼關(guān)系Operation SeqStack前置條件:棧不存在 輸入:無 功能:棧的初始化 輸出:

6、無后置條件:構(gòu)造一個空棧 SeqStack 前置條件:棧已存在 輸入:無功能:銷毀棧輸出:無后置條件:釋放棧所占用的存儲空間 Push 前置條件:棧已存在 輸入:元素值x 功能:在棧頂插入一個元素x 輸出:如果插入不成功,拋出異常 后置條件:如果插入成功,棧頂增加了一個元素 Pop 前置條件:棧已存在 輸入:無 功能:刪除棧頂元素 輸出:如果刪除成功,返回被刪元素值,否則,拋出異常 后置條件:如果刪除成功,棧頂減少了一個元素 GetTop 前置條件:棧已存在 輸入:無 功能:讀取當(dāng)前的棧頂元素輸出:若棧不空,返回當(dāng)前的棧頂元素值后置條件:棧不變 Empty 前置條件:棧已存在 輸入:無 功能:

7、判斷棧是否為空 輸出:如果棧為空,返回1;否則,返回0 后置條件:棧不變End ADT(2)主程序流程:圖1:主程序流程圖(3)模塊調(diào)用關(guān)系:本程序中函數(shù)包括:main函數(shù),棧操作相關(guān)函數(shù),Translate函數(shù),Value函數(shù),Calculate函數(shù),OpPriority函數(shù),Match函數(shù)等(這里要求對每個函數(shù)的功能做簡單介紹)。函數(shù)調(diào)用關(guān)系如下:圖2:函數(shù)調(diào)用關(guān)系4詳細(xì)設(shè)計(1)實現(xiàn)概要設(shè)計的數(shù)據(jù)類型:采用順序棧const int StackSize = 50;template /定義模板類SeqStackclass SeqStackpublic: SeqStack(); /構(gòu)造函數(shù),棧

8、的初始化 SeqStack(); /析構(gòu)函數(shù) void Push(T x); /將元素x入棧 T Pop(); /將棧頂元素彈出 T GetTop(); /取棧頂元素(并不刪除) bool Empty(); /判斷棧是否為空private: T dataStackSize; /存放棧元素的數(shù)組 int top; /棧頂元素;(2)主程序以及其它模塊的算法描述:主函數(shù)具體代碼:int main () char op; Mune(); /調(diào)用菜單函數(shù) cin op; /輸入選擇字符 getchar(); / 吃掉回車,不然getline輸入會有錯,甚至導(dǎo)致系統(tǒng)崩潰。 cout op;getchar

9、();cout endl; return 0;這個函數(shù)主要調(diào)用了實現(xiàn)功能的各個函數(shù)。其步驟為:在用戶沒有選擇退出時,先調(diào)用輸入函數(shù),輸入中綴表達(dá)式;然后調(diào)用判斷表達(dá)式,如果中綴表達(dá)式錯誤,則根據(jù)返回的值來輸出錯誤提示,不再往下運算;如果中綴表達(dá)式正確,則將中綴表達(dá)式轉(zhuǎn)換為后綴表達(dá)式,然后輸出中綴表達(dá)式和轉(zhuǎn)換后的后綴表達(dá)式;接著,再調(diào)用計算函數(shù),計算后綴表達(dá)式的結(jié)果輸出。最后是清屏函數(shù)。直至用戶選擇退出。(3)其它模塊的算法描述 表達(dá)式轉(zhuǎn)換函數(shù)功能:將中綴表達(dá)式轉(zhuǎn)換為后綴表達(dá)式,其中infix是輸入的中綴表達(dá)式, postfix是轉(zhuǎn)換后的后綴表達(dá)式。輸入中綴表達(dá)式返回后綴表達(dá)式。template

10、 char *SeqStack:Translate(char infix,char postfix)SeqStack cstk;(這里不寫代碼,但要把代碼的核心算法描述清楚) 計算后綴表達(dá)式的值功能:由后綴表達(dá)式計算表達(dá)式的值,返回計算結(jié)果template void SeqStack:Value(char postfix) SeqStack dstk; dstk.Push(#); /將#壓棧判斷表達(dá)式結(jié)束 int j = 0;double a, b, result = 0; /左右操作數(shù)和計算結(jié)果(這里不寫代碼,但要把代碼的核心算法描述清楚).其它函數(shù)的詳細(xì)描述, 算法的效率與特點也在此描述5

11、、編碼與調(diào)試分析編碼與調(diào)試過程中遇到的問題及解決辦法:【問題一】程序無法計算負(fù)數(shù)。解決辦法:分析得知,出現(xiàn)負(fù)數(shù)有兩種情況:一是在表達(dá)式首端直接出現(xiàn)負(fù)數(shù),則將全部字符后移一位,在字符數(shù)組首插入-;二是在表達(dá)式中(后面跟著負(fù)數(shù),則將(后出現(xiàn)的字符都向后移動一位,在(后插入一個0,再進(jìn)行計算。解決此問題的核心代碼:int n1 = strlen(infix);if(infix0 = -) /處理首字符是-的情況,在-前添加一個0for(i = n1; i = 0; i-) infixi+1 = infixi;infix0 = 0; for(j = 0; j j; i-) infixi+1 = inf

12、ixi;infixj+1 = 0;【問題二】程序在判斷表達(dá)式輸入形式有誤時,考慮情況不周全。解決辦法:盡可能多的將表達(dá)式有誤的情況考慮在內(nèi)。以下為現(xiàn)已考慮到并解決的問題:表達(dá)式中出現(xiàn)非數(shù)字或非運算符的其他字符; 表達(dá)式中括號不匹配。【問題三】給變量賦值時出現(xiàn)重定義問題。解決辦法:在定義暫存棧頂元素的變量t時,應(yīng)該在函數(shù)外面定義,在函數(shù)里面給變量賦值時不能定義。【問題四】無法處理多位數(shù)和小數(shù)。解決辦法:在連續(xù)的操作數(shù)結(jié)束之后插入空格到后綴表達(dá)式中,以分隔操作數(shù)。解決此問題的核心代碼:if(op = 0 & op = 0 & op = 9)|(op = .) postfixj = op; j+;

13、op = infix+i; postfixj = ; /插入空格為了以后好分隔操作數(shù) j+;2.待解決問題:由于使用了類模板,所以在VC編譯器中不能把類和實現(xiàn)函數(shù)分開;表達(dá)式中出現(xiàn)多個運算符同時連續(xù)出現(xiàn)的情況;不能計算含單個字母表示變量的表達(dá)式。 6、使用說明進(jìn)入菜單,根據(jù)提示進(jìn)行選擇:(a).若要輸入中綴表達(dá)式并求值,選擇1;(b).若要退出程序,選擇2;(c).若輸入出現(xiàn)錯誤,則返回主菜單,重新輸入。7、測試結(jié)果(1)含小數(shù)、多位數(shù)、負(fù)數(shù)及括號的表達(dá)式顯示結(jié)果:(2)含求余、求冪的表達(dá)式的顯示結(jié)果:(3)除法、求余時對于除數(shù)為零的錯誤提示: (4)括號不匹配時的錯誤提示: (5)輸入錯誤選

14、擇時的錯誤提示: 8、自學(xué)知識在課程設(shè)計過程中,特別是在代碼編寫和調(diào)試的過程中,自學(xué)了很多新的知識。例如atof()函數(shù),包含于表頭文件 #include 。 其功能是: 把字符串轉(zhuǎn)換成浮點數(shù)。具體的函數(shù)說明是: atof()會掃描參數(shù)nptr字符串,跳過前面的空格字符,直到遇上數(shù)字或正負(fù)符號才開始做轉(zhuǎn)換,而再遇到非數(shù)字或字符串結(jié)束時(0)才結(jié)束轉(zhuǎn)換,并將結(jié)果返回。參數(shù)字符串可包含正負(fù)號、小數(shù)點或E(e)來表示指數(shù)部分。返回值是轉(zhuǎn)換后的浮點型數(shù)。還有一個知識點是清屏函數(shù),它也是包含于頭文件中的, 使用形式為system(CLS)。主要功能就是清空屏幕。9、課程設(shè)計心得體會通過這次課程設(shè)計,增強(qiáng)了我的自信心。因為在這次課程設(shè)計中,我遇到了一些問題,但是都逐個得解決了,雖然有些問題請教了同學(xué),但是從中學(xué)了很多東西,也學(xué)到了一些處理問題的方法。在能力上得到了一些提升。同時也養(yǎng)成了獨立思考問題,以及和同學(xué)一起探索問題的良好習(xí)慣。當(dāng)然,在課程設(shè)計過程中,有些細(xì)節(jié)的處理還是不夠完美,需要完善的地方還有很多,還需要繼續(xù)努力,盡量將程序完善。 在編寫程序過程中,得到了部分同學(xué)的幫助,如:數(shù)據(jù)間的分隔問題,得到了*同學(xué)的幫助(這里列出你的哪問題,得到了誰的幫助),將中綴表達(dá)式轉(zhuǎn)換為后綴表達(dá)式的算法思想?yún)⒖剂藬?shù)據(jù)結(jié)構(gòu)課程設(shè)計

溫馨提示

  • 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

提交評論