數(shù)據(jù)結構課程設計指導書專業(yè)用_第1頁
數(shù)據(jù)結構課程設計指導書專業(yè)用_第2頁
數(shù)據(jù)結構課程設計指導書專業(yè)用_第3頁
數(shù)據(jù)結構課程設計指導書專業(yè)用_第4頁
數(shù)據(jù)結構課程設計指導書專業(yè)用_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 數(shù)據(jù)結構課程設計指導書 計算機科學與控制學院 一目的通過本課程設計,使學生更加系統(tǒng)地理解和掌握數(shù)據(jù)結構的基本概念;使學生能自如地根據(jù)實際要求,設計相應的數(shù)據(jù)結構,并運用C+語言實現(xiàn)所設計的算法,編寫較大型的程序,分析和解決實際應用問題,為后續(xù)其它專業(yè)課程的學習和應用打下良好基礎.二題目根據(jù)指導教師的具體要求,從下面題目中選擇1個題目來完成 :1 二叉樹的應用哈夫曼樹(電文的編碼和譯碼)2 運動會分數(shù)統(tǒng)計3 學生成績管理系統(tǒng)4 簡易客房管理系統(tǒng)5 其他類型管理系統(tǒng)的題目人事檔案管理系統(tǒng)圖書管理系統(tǒng)進銷存貨物管理系統(tǒng)職工工資管理系統(tǒng)6. 稀疏矩陣運算器7. 表達式的求值8. 長整數(shù)的四則運算9.

2、 校園導游咨詢10停車場管理11其余題目:(必須事先得到指導老師允許 )三任務完成形式1 完整的軟件系統(tǒng) 最終必須向指導老師提交完整的程序源代碼(。c和.cpp以及。h為后綴的文件)、數(shù)據(jù)文件以及使用說明文件等.源代碼文件要特別注意編程規(guī)范、代碼風格,關鍵代碼需有合理的注釋,不含任何無用代碼;數(shù)據(jù)文件內(nèi)要求有一定數(shù)量的“真實"數(shù)據(jù)(如對于記錄文件,需要有8條以上記錄); 使用說明文件的第一行,需要給出設計者的學號、姓名,后面為其它說明。2 課程設計報告(詳細要求請參考附錄二)課程設計報告總體上主要包括以下幾個部分:1)封面2)目錄3)課程設計報告正文4)使用說明5)參考文獻四總體要求

3、1 每道題目的程序代碼總量不少于500行(其中不包括自動生成代碼),有合理注釋。2 課程設計報告正文字數(shù)不少于7000字,概念清楚、敘述正確、內(nèi)容完整、書寫規(guī)范.3 獨立完成課程設計,不得抄襲他人。4 功能正確、有一定實用性。5 盡可能大量使用各種C+語言程序設計技術,尤其在以下幾個方面:指針及其運算、結構、指針數(shù)組、數(shù)組指針、字符數(shù)組與字符串、內(nèi)存空間動態(tài)申請與釋放、文件訪問與操作、合理的常量與全局變量及函數(shù)接口變量定義、數(shù)據(jù)輸入與數(shù)據(jù)格式檢查、數(shù)據(jù)類型轉(zhuǎn)換、錯誤處理、工程設計技術(整個系統(tǒng)由一個工程文件、若干個程序文件、若干頭文件、甚至庫文件等組成)。程序界面不做較高要求,但要考慮到用戶使

4、用的方便,有較好的交互界面。6 可以使用VC編譯環(huán)境開發(fā)程序,但不允許使用現(xiàn)成的數(shù)據(jù)庫如access,SQL Server等完成上面的課程設計題目,否則成績評定為不及格.7 設計時適當考慮程序的可維護性與可擴充性.8 提倡積極交流與討論(同學間、bbs站點)、善于查閱資料、分析與借鑒他人編寫的軟件.9 認真自覺以個人為單位完成自己的任務,代碼和課設報告均嚴禁雷同,否則成績?yōu)椴患案瘛r炇諘r查看代碼,并提出若干個跟程序代碼有關的問題,并把問題回答情況計入總評成績. 五工作階段與考核方法大體上可分成五個階段: 1資料查閱準備階段(15)2分析設計階段(35)3編程調(diào)試階段(40)4課程設計報告書寫階

5、段(10)5驗收階段 考核方法: 只有程序驗收通過后,才能按以下方法核定本次課程設計的總成績,因未能獨立完成設計(尤其是抄襲)或概念不清的同學,總成績將核定為不及格.總成績由以下幾個部分決定:1 考勤、紀律、實驗室衛(wèi)生2 工作量(代碼量、功能多少、難度)3 關鍵技術4 實用性、創(chuàng)新5 代碼書寫規(guī)范性6 程序界面、新技術引用7 課程設計報告(敘述、書寫規(guī)范、字數(shù))8 動手能力、分析問題解決問題能力 六任務具體要求1、二叉樹的應用哈夫曼樹(電文的編碼和譯碼)哈夫曼編碼/譯碼器 問題描述:設計一個哈夫曼編碼/譯碼系統(tǒng),對字符串進行編碼/譯碼 基本要求: (1)從鍵盤輸入字符串,以回車結束; (2)根

6、據(jù)字符串中字符出現(xiàn)的概率進行哈夫曼編碼;) (3)并輸出編碼結果和編碼表;(4)根據(jù)編碼結果和編碼表還原字符串; (5)輸出編碼過程中構造的哈夫曼樹。內(nèi)容:理解二叉樹的基本概念,并在讀懂下面詳細描述的算法的情況下,編寫一個有關二叉樹的簡單應用程序電文的編碼和譯碼.具體實驗題目和功能要求如下:(1)電文編碼:假如有一份電文中共使用5個字符:a、b、c、d、e,它們的出現(xiàn)頻率依次為4、7、5、2、9,試畫出對應的哈夫曼樹(請按左子樹根結點的權小于等于右子樹根結點的權的次序構造),并求出每個字符的哈夫曼編碼其中:得到的哈夫曼樹和哈夫曼編碼如下.圖1要求自己編程實現(xiàn)若從鍵盤輸入若干字符,同時并輸入它們

7、各自出現(xiàn)的頻率,最后能計算并在屏幕上顯示出每個字符的代碼。(2)電文譯碼:給出一段二進制代碼的電文,要求根據(jù)前面構造的huffman樹進行譯碼.在前面編碼的基礎上,鍵盤輸入一段電文,則能在屏幕上顯示出自動翻譯好的電文。比如根據(jù)圖1顯示的哈夫曼樹,鍵盤輸入電文如下:1011010,屏幕上能顯示自動翻譯的結果為bed說明事項:1。通過上面的描述本課程設計題目包括(1)電文的編碼(2)電文的譯碼,要求必須用哈夫曼樹實現(xiàn)。2. 界面要求:有合理的提示,每個功能可以設立菜單,根據(jù)提示,可以完成相關的功能要求。并要明確,只有在使用哈夫曼樹進行編碼的前提下,才有可能進行譯碼.3.考慮將此程序設計完善,比如可

8、以將編碼后的字符代碼保存到文件中,將需要翻譯的代碼保存到另一個文件中,最后把自動翻譯后的結果也保存到文本文檔中等等。在這個程序中,首先要構造一棵哈夫曼樹,然后才能根據(jù)這棵哈夫曼樹構造編碼。因此,步驟一:構造哈夫曼樹步驟二:根據(jù)哈夫曼樹為每個字符編碼步驟三:根據(jù)步驟二中構造好的哈夫曼樹進行譯碼提示:具體算法見后面的有關哈夫曼樹的基礎知識介紹部分代碼(僅供參考)如下:const int N=5;/葉子結點數(shù)目const int TREENODENUM=2*N1;/結點總數(shù)/huffman樹結點的結構typedef char dataType;typedef structfloat weight;d

9、ataType data;int lchild,rchild,parent;huffmanTreeNode;/哈夫曼編碼的結構typedef struct char bitsN;/詳細的編碼,不過是反的,要從cnt開始讀int cnt;/記錄這個字符數(shù)由幾位bit表示的dataType data;/編碼要表示的字母codeType;有關哈夫曼樹的基礎知識介紹(1)哈夫曼樹的定義哈夫曼樹:設有個權值,構造一棵有個葉子結點的二叉樹,每個葉子結點的權值為,則最小的二叉樹叫哈夫曼樹其中:為權值為結點到根到路徑長度為葉子結點數(shù)(2)構造Huffman樹的方法-Huffman算法構造Huffman樹步驟如

10、下:根據(jù)給定的n個權值w1,w2,wn,構造n棵只有根結點的二叉樹,令其權值為wj在森林中選取兩棵根結點權值最小的樹作左右子樹,構造一棵新的二叉樹,置新二叉樹根結點權值為其左右子樹根結點權值之和在森林中刪除這兩棵樹,同時將新得到的二叉樹加入森林中重復上述兩步,直到只含一棵樹為止,這棵樹即哈夫曼樹例如:第一步:n棵只有根結點的二叉樹,每個結點有相應代表的符號和權值第二步:從中挑出權值最小的合并生成一棵新的樹,置新生成的二叉樹的根結點第三步:不斷重復第二步,直到只有一個根結點第四步:最后完成一棵huffman樹哈夫曼樹結點的存儲結構(3)哈夫曼樹應用(哈夫曼編碼)哈夫曼樹中沒有度為1的結點,稱為嚴

11、格的二叉樹。哈夫曼編碼:數(shù)據(jù)通信用的二進制編碼思想:根據(jù)字符出現(xiàn)頻率編碼,使電文總長最短編碼:根據(jù)字符出現(xiàn)頻率構造哈夫曼樹,然后將樹中結點引向其左孩子的分支標“0”,引向其右孩子的分支標“1";每個字符的編碼即為從根到每個葉子到路徑上得到到0、1序列例如:要傳輸?shù)阶址疍C,A,S,T,;字符出現(xiàn)頻率w2,4,2,3,3得到的哈夫曼樹和哈夫曼編碼為(4)Huffman編碼算法的基本思想從葉子treei出發(fā),利用雙親地址找到雙親結點treep,再利用treep的lchild和rchild指針域判斷treei是treep的左孩子還是右孩子,然后決定分配代碼是“0”還是“1",然

12、后以treep為出發(fā)點繼續(xù)向上回溯,直到根結點為止(5)Huffman譯碼算法的基本思想從Huffman樹根開始,從待譯碼電文中逐位取碼.若編碼是“0”,則向左走;若編碼是“1”,則向右走,一旦到達葉子結點,則譯出一個字符;再重新從根出發(fā),直到電文結束2、運動會分數(shù)統(tǒng)計任務:參加運動會有n個學校,學校編號為1n.比賽分成m個男子項目,和w個女子項目。項目編號為男子1.。m,女子m+1。.。.。m+w。不同的項目取前五名或前三名積分;取前五名的積分分別為:7、5、3、2、1,前三名的積分分別為:5、3、2;哪些取前五名或前三名自己設定。(m<=20,n<=20)功能要求:1??梢暂敵?/p>

13、各個項目的前三名或前五名的成績;2。能統(tǒng)計各學??偡?;3??梢园磳W校編號、學??偡?、男女團體總分排序輸出;4??梢园磳W校編號查詢學校某個項目的情況;可以按項目編號查詢?nèi)〉们叭蚯拔迕膶W校。5.鍵盤輸入的比賽成績信息,保存在文件中,下次運行程序可以直接查詢,不需要再次輸入成績信息。實現(xiàn)提示:可以假設n不大于20,m不大于30,w不大于20,姓名長度不超過20個字符。每個項目結束時,將其編號、類型符號(區(qū)分取前5名還是前3名)輸入,并按名次順序輸入運動員姓名、校名(和成績)3、學生成績管理系統(tǒng)問題描述:該系統(tǒng)實現(xiàn)對若干個大學生的學習成績進行管理。至少包括以下信息:學號、姓名、科目、成績,學期。學

14、期取值范圍可為18。功能要求:1使用中文菜單;2. 將學生信息保存在文本文檔中,具體對學生信息進行插入刪除查詢操作時,將保存在文本文檔中的學生信息提取出來,保存在鏈表中,然后再對鏈表進行操作,所有操作完成,或者在相應的命令后,再將學生信息保存到文本文檔中。3具有數(shù)據(jù)輸入功能;4具有數(shù)據(jù)刪除功能;5具有多種查詢(如按學號查詢、按姓名查詢、按成績查詢等)及輸出功能;6其它功能(如各種統(tǒng)計)說明:功能各方面越完善越好4、簡易客房管理系統(tǒng)問題描述:該系統(tǒng)能簡單實現(xiàn)對客棧的住宿情況進行管理。至少包括以下信息:房號、房型、單價(每床)、已住人數(shù);住客姓名、性別、年齡、身份、身份證號碼,房號,床號,入住日期

15、、入住時間、離店日期、離店時間。這些信息應存放在兩個文件中,分別是客房信息文件、住客信息文件?!胺啃汀笨扇≈?-8,分別表示單人間、雙人間.。功能要求:1具有建立數(shù)據(jù)庫(客房信息文件、住客信息文件)功能;2具有數(shù)據(jù)輸入功能;3具有數(shù)據(jù)修改功能4具有數(shù)據(jù)刪除功能;5能查詢一些基本信息(如按房號查詢、按姓名查詢等);6具有多種統(tǒng)計功能(要求有一定的實用性)(如某客房當前有那些空床、某住客應付多少費用、某天住店總?cè)藬?shù)和總收入等)5、其他類型管理系統(tǒng)人事檔案管理系統(tǒng)圖書管理系統(tǒng)進銷存貨物管理系統(tǒng)職工工資管理系統(tǒng)基本要求:1上述類型的管理系統(tǒng)題目需要自己作相關的需求分析,設計并完成相應的功能,完成的系統(tǒng)

16、必須具有一定的實用功能。2設計良好的數(shù)據(jù)結構,代碼編寫時不允許運用現(xiàn)有的數(shù)據(jù)庫管理系統(tǒng),具體功能應通過對文件的讀寫操作實現(xiàn)。6、稀疏矩陣運算器根據(jù)以下描述編寫一個程序,使其能完成對稀疏矩陣的壓縮與還原,即給定稀疏矩陣可以壓縮存儲一個三元組,并且能根據(jù)這個三元組能還原這個稀疏矩陣。一個矩陣含有非零元素比較少,而零元素相對較多,這樣的矩陣稱為稀疏矩陣,對稀疏矩陣的存儲我們不用完全的二維數(shù)組來存儲,可以用一個三元組,即任意一個稀疏矩陣可以用一個只有三列的二維數(shù)組來存放,這樣可以大大節(jié)省存儲空間,提高計算效率,如 1 0 0 0 02 0 0 0 00 0 0 0 40 0 0 5 0Com

17、press3=3, 5 ,3 0, 0, 1 1, 0, 2 2, 4, 4 3, 3, 5 還原壓縮   其 Compress3這個稱為三元組,他是一個含有多行的只有三列的矩陣,其中第0行數(shù)據(jù)分別表示該稀疏矩陣的行數(shù),列數(shù)和非零元素個數(shù)。以后每行表示一個非零元素的行數(shù),列數(shù)和非零元素值,如:第3行中的2,4,4代表稀疏矩陣中的非零元素4在第2行,第4列,其值是4?;竟δ芤螅?1)用上述描述的三元組表示稀疏矩陣,實現(xiàn)兩個矩陣相加、相減和相乘的運算。稀疏矩陣的輸入形式采用三元組表示,而運算結果的矩陣則以通常的陣列形式列出(2)求出A的轉(zhuǎn)置矩陣D,輸出D。7、表達

18、式的求值   問題描述:表達式計算是實現(xiàn)程序設計語言的基本問題之一,也是棧的應用的一個典型例子。設計一個程序,演示用算符優(yōu)先法對算術表達式求值的過程基本要求:以字符序列的形式從終端輸入語法正確的,不含變量的整數(shù)表達式。利用算符優(yōu)先關系,實現(xiàn)對算術四則混合運算表達式的求值,并演示在求值中運算符棧、運算數(shù)棧、輸入字符和主要操作的變化過程。測試數(shù)據(jù):3*(7-1); 1+2+3+4; 881*5; 1024/4*8; (20+2)*(6/2) 33-3; 8/(9-9); 2(6+2(3+6*(6+6); ((6+6)*6+3)*2+6)2實現(xiàn)提示:(1)設置運算符棧和運算數(shù)棧輔助分析算符

19、優(yōu)先關系(2)在讀入表達式的字符序列的同時,完成運算符和運算數(shù)(整數(shù))的識別處理,以及相應的運算(3)在識別出運算數(shù)的同時,要將棋字符序列形式轉(zhuǎn)換為整數(shù)形式(4)在程序的適當位置輸出運算符棧、運算數(shù)棧、輸入字符和主要操作的內(nèi)容。算法基本思想:為了實現(xiàn)算符優(yōu)先算法,可以使用兩個工作棧.一個稱做OPTR,用以寄存運算符;另一個稱做OPND,用以寄存操作數(shù)或運算結果。算法的基本思想是:(1)首先置操作數(shù)棧為空棧,表達式起始符“”作為運算符棧的棧底元素(2)依次讀入表達式的每個字符,若是操作數(shù)則進入OPND棧,若是運算符,則和OPTR棧的棧頂運算符比較優(yōu)先權后做相應操作(棧頂元素優(yōu)先權低則壓棧,棧頂元

20、素優(yōu)先權高或者相等(比如5*6/9)則退棧并將運算結果入棧,“”優(yōu)先級最低),直至整個表達式求值完畢(即OPTR棧的棧頂元素和當前讀入的字符均為“#”) 8、長整數(shù)的四則運算 問題描述:設計一個實現(xiàn)任意長的整數(shù)進行加法運算的演示程序基本要求:利用雙向循環(huán)鏈表實現(xiàn)長整數(shù)的存儲,每個結點含一個整型變量。任何整型變量的范圍是(2151)(2151)。輸入輸出形式:按照中國對于長整數(shù)的表示習慣,每四位是一組,組間用逗號隔開測試數(shù)據(jù):(1)0;0;應輸出“0”(2)2345,6789;7654,3211;應輸出“1,0000,0000”(3)9999,9999;1,0000,0000,0000;應輸出“

21、9999,0000,0001”(4)1,0001,0001;1,0001,0001;應輸出“0"(5)1,0001,0001;1,0001,0000;應輸出“1”(6)9999,9999,9999;9999,9999,9999;應輸出“1,9999,9999,9998”(7)1,0000,9999,9999;1;應輸出“1,0001,0000,0000"實現(xiàn)提示:(1)每個結點中可以存放的最大整數(shù)為215132767,才能保證兩數(shù)相加不會溢出。但若這樣存,即相當于按32768進制數(shù)存,在十進制數(shù)與32768進制數(shù)之間的轉(zhuǎn)換十分不方便。故可以在每個結點中僅存十進制數(shù)的4位,即

22、不超過9999的非負整數(shù)。整個鏈表是為萬進制數(shù).(2)可以利用頭結點數(shù)據(jù)域的符號代表長整數(shù)的符號。用其絕對值表示元素結點數(shù)目。相加過程中不要破壞兩個操作數(shù)鏈表.兩操作數(shù)的頭指針存于指針數(shù)組中是簡化程序結構的一種方法。不能給長整數(shù)位數(shù)規(guī)定上限。9校園導游咨詢 問題描述:設計校園導游程序,為來訪的客人提供服務。 基本要求: (1)假設有一所校園的平面圖,所含景點不小于10個。以圖中頂點表示校內(nèi)各景點,存放景點名稱、代號、簡介等信息;以邊表示路徑,存放路徑長度等相關信息(2)為來訪的客人提供圖中任意景點相關信息的查詢; (3)為來訪的客人提供圖中任意景點的問路查詢,即查詢?nèi)我鈨蓚€景點之間的一條最短的

23、簡單路徑; (4)必須具有校園平面圖的修改和擴充功能(即某些景點坐標的修改和景點個數(shù)的增加).10 停車場管理附錄一:編程規(guī)范隨著軟件產(chǎn)品的功能增加和版本的提高,代碼越來越復雜,源文件也越來越多,對于軟件開發(fā)人員來說,除了保證程序運行的正確性和提高代碼的運行效率之外,規(guī)范風格的編碼會對軟件的升級、修改、維護帶來極大的方便性,也保證程序員不會陷入“代碼泥潭”中無法自拔。開發(fā)一個成熟的軟件產(chǎn)品,除了有詳細豐富的開發(fā)文檔之外,必須在編寫代碼的時候就有條不紊,細致嚴謹。 以下的編碼規(guī)范包含了程序排版、注釋、命名、可讀性、變量、程序效率、質(zhì)量保證、代碼編譯、代碼測試和版本控制等注意事項。 一、排版: 1

24、。關鍵詞和操作符之間加適當?shù)目崭瘛?2。相對獨立的程序塊與塊之間加空行 3.較長的語句、表達式等要分成多行書寫. 4。劃分出的新行要進行適應的縮進,使排版整齊,語句可讀. 5。長表達式要在低優(yōu)先級操作符處劃分新行,操作符放在新行之首。 6。循環(huán)、判斷等語句中若有較長的表達式或語句,則要進行適應的劃分。 7。若函數(shù)或過程中的參數(shù)較長,則要進行適當?shù)膭澐? 8。不允許把多個短語句寫在一行中,即一行只寫一條語句. 9.函數(shù)或過程的開始、結構的定義及循環(huán)、判斷等語句中的代碼都要采用縮進風格。 10。C/C+語言是用大括號'和'界定一段程序塊的,編寫程序塊時和各獨占一行并且位于同一列,同

25、時與引用它們的語句左對齊。在函數(shù)體的開始、類的定義、結構的定義、枚舉的定義以及if、for、do、while、switch、case語句中的程序都要采用如上的縮進方式。 二、注釋 1.注釋要簡單明了。 2。邊寫代碼邊注釋,修改代碼同時修改相應的注釋,以保證注釋與代碼的一致性。 3.在必要的地方注釋,注釋量要適中。注釋的內(nèi)容要清楚、明了,含義準確,防止注釋二義性。保持注釋與其描述的代碼相鄰,即注釋的就近原則。 4.對代碼的注釋應放在其上方相鄰位置,不可放在下面。 5.對數(shù)據(jù)結構的注釋應放在其上方相鄰位置,不可放在下面;對結構中的每個域的注釋應放在此域的右方;同一結構中不同域的注釋要對齊。 6.變

26、量、常量的注釋應放在其上方相鄰位置或右方。 7。全局變量要有較詳細的注釋,包括對其功能、取值范圍、哪些函數(shù)或過程存取它以及存取時注意事項等的說明。 8。在每個源文件的頭部要有必要的注釋信息,包括:文件名;版本號;作者;生成日期;模塊功能描述(如功能、主要算法、內(nèi)部各部分之間的關系、該文件與其它文件關系等);主要函數(shù)或過程清單及本文件歷史修改記錄等。 9。在每個函數(shù)或過程的前面要有必要的注釋信息,包括:函數(shù)或過程名稱;功能描述;輸入、輸出及返回值說明;調(diào)用關系及被調(diào)用關系說明等。 三、命名 1.較短的單詞可通過去掉“元音”形成縮寫; 2。較長的單詞可取單詞的頭幾發(fā)符的優(yōu)先級,并用括號明確表達式的

27、操作順序,避免使用默認優(yōu)先級。 3.使用匈牙利表示法 四、可讀性 1.避免使用不易理解的數(shù)字,用有意義的標識來替代。 2。不要使用難懂的技巧性很高的語句。 3。源程序中關系較為緊密的代碼應盡可能相鄰。 五、變量 1。去掉沒必要的公共變量。 2.構造僅有一個模塊或函數(shù)可以修改、創(chuàng)建,而其余有關模塊或函數(shù)只訪問的公共變量,防止多個不同模塊或函數(shù)都可以修改、創(chuàng)建同一公共變量的現(xiàn)象。 3.仔細定義并明確公共變量的含義、作用、取值范圍及公共變量間的關系。 4.明確公共變量與操作此公共變量的函數(shù)或過程的關系,如訪問、修改及創(chuàng)建等. 5。當向公共變量傳遞數(shù)據(jù)時,要十分小心,防止賦與不合理的值或越界等現(xiàn)象發(fā)生

28、. 6.防止局部變量與公共變量同名。 7。仔細設計結構中元素的布局與排列順序,使結構容易理解、節(jié)省占用空間,并減少引起誤用現(xiàn)象。 8.結構的設計要盡量考慮向前兼容和以后的版本升級,并為某些未來可能的應用保留余地(如預留一些空間等)。 9.留心具體語言及編譯器處理不同數(shù)據(jù)類型的原則及有關細節(jié). 10.嚴禁使用未經(jīng)初始化的變量。聲明變量的同時對變量進行初始化。 11。編程時,要注意數(shù)據(jù)類型的強制轉(zhuǎn)換。 六、函數(shù)、過程 1.函數(shù)的規(guī)模盡量限制在200行以內(nèi)。 2。一個函數(shù)最好僅完成一件功能. 3.為簡單功能編寫函數(shù). 4.函數(shù)的功能應該是可以預測的,也就是只要輸入數(shù)據(jù)相同就應產(chǎn)生同樣的輸出。 5.盡

29、量不要編寫依賴于其他函數(shù)內(nèi)部實現(xiàn)的函數(shù)。 6.避免設計多參數(shù)函數(shù),不使用的參數(shù)從接口中去掉。 7.用注釋詳細說明每個參數(shù)的作用、取值范圍及參數(shù)間的關系. 8。檢查函數(shù)所有參數(shù)輸入的有效性。 9。檢查函數(shù)所有非參數(shù)輸入的有效性,如數(shù)據(jù)文件、公共變量等。 10。函數(shù)名應準確描述函數(shù)的功能。 11.避免使用無意義或含義不清的動詞為函數(shù)命名 12.函數(shù)的返回值要清楚、明了,讓使用者不容易忽視錯誤情況。 13.明確函數(shù)功能,精確(而不是近似)地實現(xiàn)函數(shù)設計. 14。減少函數(shù)本身或函數(shù)間的遞歸調(diào)用。 15.編寫可重入函數(shù)時,若使用全局變量,則應通過關中斷、信號量(即P、V操作)等手段對其加以保護。 七、可

30、測性 1。在編寫代碼之前,應預先設計好程序調(diào)試與測試的方法和手段,并設計好各種調(diào)測開關及相應測試代碼如打印函數(shù)等. 2。在進行集成測試/系統(tǒng)聯(lián)調(diào)之前,要構造好測試環(huán)境、測試項目及測試用例,同時仔細分析并優(yōu)化測試用例,以提高測試效率。 八、程序效率 1。編程時要經(jīng)常注意代碼的效率。 2。在保證軟件系統(tǒng)的正確性、穩(wěn)定性、可讀性及可測性的前提下,提高代碼效率。 3。不能一味地追求代碼效率,而對軟件的正確性、穩(wěn)定性、可讀性及可測性造成影響。 4.編程時,要隨時留心代碼效率;優(yōu)化代碼時,要考慮周全。 5。要仔細地構造或直接用匯編編寫調(diào)用頻繁或性能要求極高的函數(shù)。 6。通過對系統(tǒng)數(shù)據(jù)結構劃分與組織的改進,

31、以及對程序算法的優(yōu)化來提高空間效率。 7。在多重循環(huán)中,應將最忙的循環(huán)放在最內(nèi)層。 8。盡量減少循環(huán)嵌套層次。 9.避免循環(huán)體內(nèi)含判斷語句,應將循環(huán)語句置于判斷語句的代碼塊之中。 10.盡量用乘法或其它方法代替除法,特別是浮點運算中的除法。 九、質(zhì)量保證 1。在軟件設計過程中構筑軟件質(zhì)量。 代碼質(zhì)量保證優(yōu)先原則 (1)正確性,指程序要實現(xiàn)設計要求的功能。 (2)穩(wěn)定性、安全性,指程序穩(wěn)定、可靠、安全。 (3)可測試性,指程序要具有良好的可測試性。 (4)規(guī)范/可讀性,指程序書寫風格、命名規(guī)則等要符合規(guī)范。 (5)全局效率,指軟件系統(tǒng)的整體效率。 (6)局部效率,指某個模塊/子模塊/函數(shù)的本身效

32、率. (7)個人表達方式/個人方便性,指個人編程習慣. 2。只引用屬于自己的存貯空間。 3.防止引用已經(jīng)釋放的內(nèi)存空間。 4。過程/函數(shù)中分配的內(nèi)存,在過程/函數(shù)退出之前要釋放。 5。過程/函數(shù)中申請的(為打開文件而使用的)文件句柄,在過程/函數(shù)退出前要關閉。 6.防止內(nèi)存操作越界. 7.時刻注意表達式是否會上溢、下溢. 8.認真處理程序所能遇到的各種出錯情況。 9。系統(tǒng)運行之初,要初始化有關變量及運行環(huán)境,防止未經(jīng)初始化的變量被引用。 10。系統(tǒng)運行之初,要對加載到系統(tǒng)中的數(shù)據(jù)進行一致性檢查。 11.嚴禁隨意更改其它模塊或系統(tǒng)的有關設置和配置。 12.不能隨意改變與其它模塊的接口。 13。充

33、分了解系統(tǒng)的接口之后,再使用系統(tǒng)提供的功能。 14。要時刻注意易混淆的操作符。當編完程序后,應從頭至尾檢查一遍這些操作符。 15.不使用與硬件或操作系統(tǒng)關系很大的語句,而使用建議的標準語句. 16.建議:使用第三方提供的軟件開發(fā)工具包或控件時,要注意以下幾點: (1)充分了解應用接口、使用環(huán)境及使用時注意事項。 (2)不能過分相信其正確性. (3)除非必要,不要使用不熟悉的第三方工具包與控件。 十、代碼編譯 1.編寫代碼時要注意隨時保存,并定期備份,防止由于斷電、硬盤損壞等原因造成代碼丟失。 2。同一項目組內(nèi),最好使用相同的編輯器,并使用相同的設置選項。 3.合理地設計軟件系統(tǒng)目錄,方便開發(fā)人

34、員使用. 4。打開編譯器的所有告警開關對程序進行編譯。 5。在同一項目組或產(chǎn)品組中,要統(tǒng)一編譯開關選項。 6。使用工具軟件(如Visual SourceSafe)對代碼版本進行維護。 十一、代碼測試、維護 1.單元測試要求至少達到語句覆蓋。 2.單元測試開始要跟蹤每一條語句,并觀察數(shù)據(jù)流及變量的變化。 3.清理、整理或優(yōu)化后的代碼要經(jīng)過審查及測試。 4。代碼版本升級要經(jīng)過嚴格測試。附錄二:課程設計說明書格式要求課程設計說明書的重要性課程設計說明書主要是用于說明自己的設計思想、設計方法以及設計過程等,是對自己所作工作的總結,并使得他人了解自己的工作。它反映出設計者的設計能力,也是學習態(tài)度的一個重

35、要體現(xiàn).在今后的學習和工作中,大家也會經(jīng)常需要撰寫各種設計或說明文檔,這也是表達能力和問題處理能力的一種重要體現(xiàn)。指導教師通過設計說明文檔,對學生完成課程設計的情況會有進一步的詳細了解,在給予課程設計成績時,課程設計說明書也會起到很重要的作用,占到相當大的比重。根據(jù)歷來的實驗報告、課程設計說明書、各級各類學科或?qū)I(yè)競賽過程中的論文部分以及畢業(yè)設計論文等的情況來看,許多同學的設計文檔的撰寫能力極其欠缺,格式混亂、病句連篇、詳略不當、敷衍塞責等各類問題比比皆是,從形式到內(nèi)容上都一塌糊涂,這已經(jīng)成為同學們當中的一種普遍情況。作為工科學生,這種表述能力的欠缺,其實是個人能力的一種重大缺失和不足。因此務

36、必請同學們認真對待這項工作,不僅努力獲得這一項成績,更從中得到鍛煉,提升這方面的能力。課程設計說明書的具體格式規(guī)定一、紙張和頁面要求A4紙打?。ㄊ謱懙挠脤W院標準課程設計說明書用紙);頁邊距要求如下:左邊距為2.5厘米,上、下、右邊距各為2厘米;行間距取固定值(設置值為18磅);字符間距為默認值(縮放100,間距:標準)。二、裝訂頁碼順序(1)封面,(2) 目錄(注明頁碼),(3) 正文,(4) 參考文獻。 裝訂線要求在頁面左邊.三、章節(jié)序號按照正式出版物的慣例,章節(jié)序號的級序規(guī)定如下:1、1.1、1。1。1、(1)、四、封面采用統(tǒng)一規(guī)格,請參考所提供的模板文檔中所給出的封面格式.五、目錄三號、黑體、居中、目錄兩字空四格、與目錄的正文空一行。六、正文正文的頁數(shù)不少于10頁(不包括封面、目錄、參考文獻等),正文字數(shù)不少于5000。正文的章節(jié)目序號按照正式出版物的

溫馨提示

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

最新文檔

評論

0/150

提交評論