一.c項目開發總體分如下圖所示
二.對每一步的解析
1.需求文檔分析,本例以電子詞典作為例子
列出每一個需求以及每一個需求的每一個特點,將其歸納 為一張表。
2.設計數據結構
設計數據結構,也就是確定抽象數據類型,數據存放的方式,先想出多個方案,然后比較各個方案的優劣
1 /* 2 方案1 3 使用三維數組,110000為單詞個數,2位每個單詞對應2行,100表示每一行可存儲的字符數, 4 由於棧空間最大1M,所以這種方式不行,而且很消耗cpu資源 5 word[i][2][100]代表一個單詞和解釋 6 */ 7 char word[110000][2][100];// 8 /* 9 方案2 10 使用一個結構代表一個單詞,key存儲單詞,trans存儲 11 所有單詞存儲在malloc分配的動態數組中,由於每個單詞長度不一樣,每個單詞的解釋也不一樣, 12 所以key的長度太小不能滿足需求,太大又造成存儲空間的浪費 13 */ 14 struct WORD{ 15 char key[100];//單詞 16 char trans[100];//單詞對應的解釋 17 }; 18 /* 19 方案三 20 使用結構體,但是成員為指針,根據單詞和解釋的實際大小分配內存,內存占用小 21 缺點:解釋不夠詳細,因為一個單詞對應多個解釋 22 */ 23 struct WORD{ 24 char *key;//單詞指針,指向一個malloc分配的內存 25 char *trans;//解釋指針 26 }; 27 /* 28 方案四 29 使用結構體 30 */ 31 struct WORD{ 32 char *key;//單詞指針,指向一個malloc分配的內存 33 int count_trans;//每個單詞對應的解釋數量 34 char **trans;//存放解釋的字符指針數組 35 };
3.根據需求繪制程序整體運行流程圖
4.分析數據類型的存儲結構,如下圖
5.定義常用變量
1 /*********定義常用全局變量*****************/ 2 /* 3 給結構體類型起一個新名字:WORD 4 */ 5 typedef struct WORD SWORD; 6 /*********結構體指針,指向詞庫結構體數組******/ 7 SWORD * DICT; 8 /***********文本詞庫文件名*********************/ 9 char *dicttxtname = "dict.txt"; 10 /***********二進制詞庫文件名*********************/ 11 char *dictbitname = "dict.dat"; 12 /************詞庫數量,結構體數組長度***************/ 13 int length;
6.由於時間關系和隨筆大小有限,剩下的五步驟見后期隨筆