版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 《城市鏈表》課程設(shè)計(實習(xí))報告</p><p> 題 目 城市鏈表 </p><p> 計算機(jī)與電子工程學(xué)院</p><p><b> 2011年12月</b></p><p><b> 目錄</b></p><
2、p> 1 課程設(shè)計任務(wù)與要求1</p><p> 1.2 問題分析1</p><p><b> 2系統(tǒng)總體設(shè)計1</b></p><p> 2.1 總體設(shè)計思想、設(shè)計方案的選擇1</p><p> 2.2 系統(tǒng)模塊設(shè)計1</p><p> 3 系統(tǒng)詳細(xì)設(shè)計2<
3、;/p><p> 3.1 系統(tǒng)子程序及功能設(shè)計2</p><p> 3.3 函數(shù)主要調(diào)用關(guān)系圖3</p><p> 4 系統(tǒng)詳細(xì)設(shè)計3</p><p> 4.1 數(shù)據(jù)類型定義3</p><p> 4.2 系統(tǒng)主要子程序設(shè)計3</p><p> 5 系統(tǒng)實現(xiàn)與測試6</p
4、><p> 5.1 建立城市鏈表6</p><p> 5.2 瀏覽城市鏈表6</p><p> 5.3城市鏈表的查找6</p><p> 5.4 城市鏈表的插入7</p><p> 5.6 城市鏈表的更新7</p><p> 5.7 查看給定范圍內(nèi)的城市7</p>
5、<p> 5.8文件的載入與保存8</p><p><b> 5.9系統(tǒng)設(shè)置8</b></p><p> 6軟件使用說明書8</p><p> 7 課程設(shè)計總結(jié)9</p><p><b> 參考文獻(xiàn)9</b></p><p> 1 課程設(shè)計
6、任務(wù)與要求</p><p> 1.1 課程設(shè)計任務(wù)</p><p> 將城市信息存在單鏈表里,對其實現(xiàn)常見的鏈表操作</p><p><b> 1.2 問題分析</b></p><p> 由若干個城市的信息,存入一個帶頭節(jié)點的單鏈表。節(jié)點中的城市信息包括城市名,城市坐標(biāo),城市面積,城市人口等。要求能夠利用城市
7、名和位置坐標(biāo)進(jìn)行有關(guān)的查找,插入,刪除,更新等操作。</p><p><b> 2系統(tǒng)總體設(shè)計</b></p><p> 為了實現(xiàn)上述需求可以從以下幾個方面著手進(jìn)行設(shè)計。</p><p> 2.1 總體設(shè)計思想、設(shè)計方案的選擇</p><p> 本系統(tǒng)主要采用鏈表結(jié)構(gòu)類型來存儲數(shù)據(jù),其中節(jié)點由四個部分組成:城市
8、名稱,城市坐標(biāo),城市人口和城市面積。</p><p> 2.2 系統(tǒng)模塊設(shè)計 </p><p> 本系統(tǒng)共設(shè)計了9個主要的子功能,各功能的描敘如下所述:</p><p> 建立城市鏈表,可以一次性的輸入多條城市的信息,建立城市信息表。該功能用CreateCityInfo ( )函數(shù)實現(xiàn)。</p><p> 瀏覽城市鏈表信息,可以查看
9、鏈表中所有城市的信息。該功能由PrintAll ( )函數(shù)來實現(xiàn)。</p><p> 查找城市中的信息,可以根據(jù)您的個性話需求來進(jìn)行查找,查找設(shè)計了一個子菜單,可以選擇查找方式。按名稱查找,按坐標(biāo)查找和查找的一定范圍內(nèi)的城市。菜單設(shè)計如下通過調(diào)用SearchInfo()函數(shù)實現(xiàn)。</p><p> 插入功能。每次可以插入一條城市信息,插入完后可以選擇繼續(xù)插入信息來進(jìn)行多條插入。通過調(diào)用
10、InsertInfo( ) 函數(shù)來實現(xiàn)。</p><p> 城市鏈表的刪除,可以按照提示來刪除指定的數(shù)據(jù)。能夠讓用戶選擇通過何中方式來確定要刪除的文件,提供按名稱和按坐標(biāo)兩種,刪除成功后會給出“刪除成功的提示”。通過調(diào)用DelInfo( )函數(shù)來實現(xiàn)</p><p> 城市鏈表的更新功能。能夠讓用戶選擇通過何中方式來確定要修改的文件,提供按名稱和按坐標(biāo)兩種方式,定位后用戶可以選擇修改城
11、市的各個信息。通過調(diào)用 UpInfo()函數(shù)來實現(xiàn)。</p><p> 文件的載入和保存。用戶可以保存目前建立的城市信息,也可以從以前的文件中載入信息,從而實現(xiàn)數(shù)據(jù)的長期使用。通過調(diào)用FileHandle( ) 函數(shù)來實現(xiàn)。</p><p> 設(shè)置。用戶可以通過設(shè)置來改變文字大小,文字顏色,和界面背景顏色。通過調(diào)用UserSetting( )函數(shù)來實現(xiàn)。</p><
12、;p> 返回主菜單。方便用戶隨時查看主菜單,并選擇功能。通過調(diào)用SubMainMenu ( ) 函數(shù)來實現(xiàn)。</p><p><b> 3 系統(tǒng)詳細(xì)設(shè)計</b></p><p> 3.1 系統(tǒng)子程序及功能設(shè)計</p><p> 本系統(tǒng)共設(shè)計了23個子程序,各個函數(shù)的函數(shù)名及功能說明如下。</p><p>
13、 ( 1 ) int MainMenu( int k );//主菜單選擇</p><p> ( 1.1 ) void SubMainMenu();</p><p> ( 1.2 ) void CustomColor(WORD ForeColor,WORD BackColor); </p><p> //自定義文字顯示前景,背景色</p>
14、;<p> ( 2 ) pCity CreateCityInfo(pCity Head);// 城市鏈表建立 </p><p> ( 3 ) void PrintOne (pCity );//打印一條</p><p> ( 3.1 ) void PrintAll (pCity p);// 打印所有 </p><p>
15、( 4 ) void SearchInfo(pCity Head);//查找 </p><p> ( 4.1 ) pCity SearchUseName(pCity Head); //用名字查找</p><p> ( 4.2 ) pCity SearchUseCo(pCity Head); //用坐標(biāo)查找</p><p> ( 4.3) pCity
16、 SearchInDis(pCity Head); //用距離查找</p><p> ( 5 ) void InsertInfo(pCity Head); //插入</p><p> ( 6 ) void DelInfo(pCity Head); //刪除信息</p><p> ( 6.1 ) void DelUseName(pCi
17、ty Head); //刪除按姓名</p><p> ( 6.2 ) void DelUseCo(pCity Head); //刪除按坐標(biāo)</p><p> ( 7 ) void UpInfo(pCity Head); //修改信息</p><p> ( 7.1 ) void UpUseName(pCity Head);//修改用名字<
18、;/p><p> ( 7.2 ) void UpUseCo(pCity Head);//修改用坐標(biāo)</p><p> ( 7.3 ) void UpDetail(pCity p);//修改具體每一項 </p><p> ( 8 ) void InitSetting(); //初始化用戶設(shè)置</p>
19、<p> ( 9 ) void UserSetting();//用戶設(shè)置</p><p> ( 10 ) pCity FileHandle(pCity Head);//文件處理</p><p> ( 11 ) int YNChoice();//專門執(zhí)行Y/N選擇,選是為Y,不是為N,其它無效 </p><p> ( 12
20、)int NumberChoice(int Min,int Max); //數(shù)字選擇,返回Min到Max之間的一個數(shù) </p><p> 3.3 函數(shù)主要調(diào)用關(guān)系圖</p><p><b> 4 系統(tǒng)詳細(xì)設(shè)計</b></p><p> 4.1 數(shù)據(jù)類型定義</p><p> 本系統(tǒng)采用鏈?zhǔn)酱鎯Y(jié)構(gòu)存儲城市節(jié)
21、點,節(jié)點定義如下:</p><p> struct Coord</p><p><b> {</b></p><p><b> int x;</b></p><p><b> int y;</b></p><p><b> };<
22、;/b></p><p> typedef struct City</p><p><b> {</b></p><p> char Name[20];</p><p><b> Coord Co;</b></p><p> int People;</p
23、><p><b> int Area;</b></p><p> City *Next;</p><p><b> } *pCity;</b></p><p> 4.2 系統(tǒng)主要子程序設(shè)計 </p><p> 建立鏈表函數(shù),用來建立城市鏈表</p>
24、<p> pCity CreateCityInfo(pCity Head)// 城市鏈表建立 </p><p><b> {</b></p><p> pCity DelCity,Tem;</p><p><b> if (Head)</b></p><p><b&
25、gt; {</b></p><p> printf("鏈表已近存在,確定重新建立 (Y/N) ");</p><p> if(YNChoice())</p><p><b> {</b></p><p> DelCity=Head->Next;</p><
26、;p> while (DelCity) //刪除所有</p><p><b> {</b></p><p> Tem=DelCity->Next;</p><p> free(DelCity);</p><p> DelCity=Tem;</p><
27、p><b> }</b></p><p> Head=NULL;</p><p><b> }</b></p><p><b> else</b></p><p> return Head;</p><p><b> }&
28、lt;/b></p><p> Head=(pCity)malloc(LEN);//建立頭結(jié)點</p><p> Head->Next=NULL;</p><p> char Name[20];</p><p> int Jum;//跳出輸入循環(huán)用</p><p>&l
29、t;b> COORD Co;</b></p><p> int People;</p><p><b> int Area;</b></p><p> int k=1; </p><p> int i=1;
30、 //控制while里的循環(huán)</p><p> printf("請輸入城市的名稱:");</p><p> fflush(stdin);</p><p> gets(Name);</p><p> printf("請輸入 %s 的坐標(biāo),形如(X Y):&qu
31、ot;,Name);</p><p> fflush(stdin);</p><p> scanf("%d%d",&Co.X,&Co.Y);</p><p> printf("請輸入 %s 的人口:",Name);</p><p> fflush(stdin);</p>
32、;<p> scanf("%d",&People);</p><p> printf("請輸入 %s 的面積:",Name);</p><p> fflush(stdin);</p><p> scanf("%d",&Area);</p><p>
33、;<b> Jum=1;</b></p><p> while(Jum)</p><p><b> {</b></p><p> pCity Tem=(pCity)malloc(LEN);</p><p><b> if(k!=1)</b></p>&l
34、t;p><b> {</b></p><p> printf("請輸入城市的名稱:");</p><p> fflush(stdin);</p><p> gets(Name);</p><p> printf("請輸入 %s 的坐標(biāo),形如(X Y):",Name)
35、;</p><p> fflush(stdin);</p><p> scanf("%d%d",&Co.X,&Co.Y);</p><p> printf("請輸入 %s 的人口:",Name);</p><p> fflush(stdin);</p><p&
36、gt; scanf("%d",&People);</p><p> printf("請輸入 %s 的面積:",Name);</p><p> fflush(stdin);</p><p> scanf("%d",&Area);</p><p><b>
37、; }</b></p><p> strcpy(Tem->Name,Name);</p><p> Tem->Co.X=Co.X;</p><p> Tem->Co.Y=Co.Y;</p><p> Tem->People=People;</p><p> Tem->
38、;Area=Area;</p><p> Tem->Next=Head->Next;</p><p> Head->Next=Tem;//連接了連個結(jié)點</p><p> printf("信息錄入成功,是否繼續(xù)添加:(Y/N)");</p><p> Jum=YNChoice();&l
39、t;/p><p><b> i=1;</b></p><p><b> k++;</b></p><p><b> }</b></p><p> return Head;</p><p><b> }</b></p&
40、gt;<p> 流程圖: </p><p><b> 5 系統(tǒng)實現(xiàn)與測試</b></p><p> 系統(tǒng)各運行界面如下,各子功能測試結(jié)果如下。</p><p> 5.1 建立城市鏈表</p><p> 在主菜單下(或“主菜單功能選項下”),用戶輸入1并回車,然后按照提示建立城市鏈表,分
41、別輸入每個城市的名稱,坐標(biāo),人口和面積,運行結(jié)構(gòu)如下圖:</p><p> 5.2 瀏覽城市鏈表</p><p> 在主菜單下(或“主菜單功能選項下”),用戶輸入2并回車,可以瀏覽鏈表中的全部內(nèi)容,結(jié)構(gòu)如下</p><p> 5.3城市鏈表的查找</p><p> 在主菜單下(或“主菜單功能選項下”),用戶輸入3并回車,可以進(jìn)入查找子
42、菜單,如圖:</p><p> 用戶輸入相應(yīng)選項即可進(jìn)入相應(yīng)功能。</p><p> 5.4 城市鏈表的插入</p><p> 在主菜單下(或“主菜單功能選項下”),用戶輸入4并回車,可以進(jìn)入插入功能,按照提示輸入城市信息,即可插入新的城市信息。界面如下 </p><p> 5.5 城市鏈表的刪除</p><p&g
43、t; 在主菜單下(或“主菜單功能選項下”),用戶輸入5并回車,可以進(jìn)入刪除子菜單,按照提示輸入要刪除的城市,即可刪除該城市信息。界面如下 </p><p> 5.6 城市鏈表的更新</p><p> 在主菜單下(或“主菜單功能選項下”),用戶輸入6并回車,可以進(jìn)入刪除子菜單,按照提示輸入要刪除的城市,即可刪除該城市信息。界面如下 </p><p> 5.7
44、查看給定范圍內(nèi)的城市</p><p> 在主菜單下(或“主菜單功能選項下”),用戶輸入7并回車,可以進(jìn)入查看給定范圍內(nèi)的城市的高級功能,按照提示輸入中心坐標(biāo),然后在給定一個范圍,即可查找出在該范圍內(nèi)的所有城市。界面如下:</p><p> 5.8文件的載入與保存</p><p> 在主菜單下(或“主菜單功能選項下”),用戶輸入8并回車,可以進(jìn)入文件載入與保存的
45、選擇功能,可以在其中載入文件數(shù)據(jù)到鏈表,也可以將鏈表中的數(shù)據(jù)保存到指定位置,子菜單如下</p><p><b> 5.9系統(tǒng)設(shè)置 </b></p><p> 在主菜單下(或“主菜單功能選項下”),用戶輸入9并回車,可以進(jìn)入系統(tǒng)設(shè)置功能,可以設(shè)置系統(tǒng)顯示的文字顏色和顯示背景色,還可以調(diào)整文字的大小,用戶所做的更改將會自動保存,下次使用時不必重新設(shè)置,子菜單如下:&l
46、t;/p><p><b> 6軟件使用說明書</b></p><p> ( 1 ) 本程序為“城市鏈表.exe”,該名不可更改,更改后可能會造成文件部分功能失效。.</p><p> ( 2 ) 進(jìn)入本系統(tǒng)后,一個圖標(biāo)界面后馬上顯示主菜單。用戶可以在該界面上輸</p><p> 入各子菜單前對應(yīng)的數(shù)字并回車,執(zhí)行相應(yīng)
47、的菜單命令。</p><p> ( 3 ) 本程序提供數(shù)據(jù)保存功能,請注意對重要數(shù)據(jù)進(jìn)行保存。</p><p> ( 4 ) 本程序正常配有資源文件,程序啟動圖片可以更換成你的自定義,圖片大小640*400,將你的圖片命名為“1.bmp”,然后替換“Debug”文件夾中的“1.bmp”.</p><p><b> 7 課程設(shè)計總結(jié)</b>
48、</p><p> 本程序能夠很好的實現(xiàn)城市鏈表的基本功能,而且在此基礎(chǔ)上優(yōu)化了用戶操作界面,加入了文件保存,文件提取和系統(tǒng)初始化等額外功能,其中文件保存和提取能夠很大程度上優(yōu)化用戶數(shù)據(jù)的管理。系統(tǒng)初始化能夠?qū)⑸弦淮斡脩羲械膫€性化設(shè)置加載,不必每次使用時都重新設(shè)置。</p><p> 通過此次實驗,也了解到自己的語言知識很匱乏,缺乏獨立設(shè)計程序的能力,容易產(chǎn)生思維定式。在今后,一定要
49、把語言學(xué)好,基礎(chǔ)打牢,多進(jìn)行實踐,獨立思考,取得進(jìn)步</p><p><b> 參考文獻(xiàn)</b></p><p> [1]王立柱.C/C++與數(shù)據(jù)結(jié)構(gòu).北京:清華大學(xué)出版社,2008;</p><p> [2] Esakov J, Weiss T. Data Structures:An Advanced Approach Using
50、 C.Prentice-Hall,Inc.,1989;</p><p> [3] Aho A V,Hopcroft J E,Ullman J D.Data Structures and Algorithms.Addison-Wesley Publishing Company,Inc.,1983</p><p> [4] 嚴(yán)蔚敏 吳偉民.《 數(shù)據(jù)結(jié)構(gòu)》(C語言版),清華大學(xué)出版社,201
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 城市鏈表課程設(shè)計
- 城市鏈表課程設(shè)計報告
- 課程設(shè)計鏈表的交叉合并課程設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計---城市鏈表的設(shè)計與實現(xiàn)
- 程序設(shè)計課程設(shè)計--鏈表操作
- 城市區(qū)號查詢課程設(shè)計--基于鏈表的城市區(qū)號查詢
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計---雙向鏈表
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計-鏈表操作
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計---鏈表操作
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告--鏈表
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告---鏈表操作
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告---鏈表操作
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計-- 循環(huán)單鏈表
- 數(shù)據(jù)庫課程設(shè)計-鏈表的簡單操作
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計--雙向循環(huán)鏈表的實現(xiàn)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告-雙鏈表創(chuàng)建與演示設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計---鏈表的創(chuàng)建、插入、刪除、修改
- 實現(xiàn)兩個鏈表的合并數(shù)據(jù)結(jié)構(gòu)課程設(shè)計
- 單鏈表的基本操作迷宮問題數(shù)據(jù)結(jié)構(gòu)課程設(shè)計
- 課程設(shè)計報告---鏈表的維護(hù)與文件形式的保存
評論
0/150
提交評論