版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 課程設(shè)計說明書</b></p><p><b> 課程設(shè)計任務(wù)書</b></p><p> 課程名稱:軟件工程課程設(shè)計</p><p> 設(shè)計題目:城市公交查詢軟件</p><p> 已知技術(shù)參數(shù)和設(shè)計要求:</p><p><b&
2、gt; 需求說明及要求</b></p><p> 題目一:銀行管理系統(tǒng)及ATM前端的模擬設(shè)計</p><p> 銀行管理系統(tǒng)業(yè)務(wù)描述如下:</p><p> 銀行ATM存取款系統(tǒng)能為用戶提供存款、取款、查詢、轉(zhuǎn)賬和修改密碼的功能。為了模擬真實的ATM業(yè)務(wù)環(huán)境,本系統(tǒng)必須實現(xiàn)存款、取款、查詢、轉(zhuǎn)賬、修改密碼以及開戶的功能。用戶通過開戶業(yè)務(wù)在本系統(tǒng)開
3、立銀行賬戶,之后可以通過該銀行賬戶登陸ATM系統(tǒng),在系統(tǒng)中實現(xiàn)存款、取款、查詢賬戶信息、修改密碼的操作。本系統(tǒng)各個業(yè)務(wù)有如下注意點:</p><p><b> 登陸系統(tǒng)</b></p><p> 用戶登陸之前,必須在登陸界面輸入其銀行賬戶,通過其正確輸入的銀行賬戶登陸系統(tǒng)。</p><p><b> 開戶業(yè)務(wù)</b>
4、</p><p> 要使用本系統(tǒng)必須首先執(zhí)行開戶業(yè)務(wù)開立新的銀行賬戶,并且將此新開的銀行存儲于文件當(dāng)中。同時,系統(tǒng)以身份證號碼作為開戶的充分條件,即一個身份證號碼只能開立一次銀行賬戶。</p><p><b> 存款業(yè)務(wù)</b></p><p> 客戶登陸系統(tǒng)后,選擇存款業(yè)務(wù),即可以將輸入的存款金額存入相應(yīng)的賬戶。</p>
5、<p><b> 取款業(yè)務(wù)</b></p><p> 客戶登陸系統(tǒng)后,選擇取款業(yè)務(wù),即可以將輸入的取款金額從相應(yīng)的銀行賬戶取出,但是取款金額必須大于目前的賬戶余額。</p><p><b> 查詢業(yè)務(wù)</b></p><p> 客戶登陸系統(tǒng)后,可以選擇查詢業(yè)務(wù),查詢賬戶余額。</p><
6、;p><b> 轉(zhuǎn)賬業(yè)務(wù)</b></p><p> 客戶登陸系統(tǒng)后,可以選擇轉(zhuǎn)賬業(yè)務(wù),進(jìn)行轉(zhuǎn)賬。注意的是轉(zhuǎn)賬的目的賬戶必須是本系統(tǒng)已經(jīng)存在的銀行賬戶。</p><p><b> 修改密碼</b></p><p> 客戶登陸系統(tǒng)后,可以選擇修改密碼業(yè)務(wù),進(jìn)行密碼修改。</p><p>
7、 題目二:個人通信錄系統(tǒng)模擬設(shè)計</p><p> 個人通信錄系統(tǒng)模擬設(shè)計業(yè)務(wù)描述如下: </p><p> 個人通信錄必須為用戶提供好友管理、系統(tǒng)管理和幫助三個部分。好友管理包括好友信息錄入、好友信息修改、好友信息刪除和好友信息查詢查詢的功能,在此基礎(chǔ)上可以設(shè)置好友分組;系統(tǒng)管理包括密碼修改、分組配置;幫助需要為用戶提供系統(tǒng)的操作幫助。本系統(tǒng)各個業(yè)務(wù)有如下注意點:</p>
8、<p><b> ?。?)登陸系統(tǒng)</b></p><p> 用戶在登陸界面輸入用戶名和密碼,校驗正確后可以登陸系統(tǒng)。</p><p><b> ?。?)好友管理業(yè)務(wù)</b></p><p> 新增的好友信息保存至文件,之后對好友信息的管理都是對文件中的好友信息進(jìn)行處理,并且可以將好友信息進(jìn)行分組。<
9、;/p><p><b> (3)系統(tǒng)管理</b></p><p> 可以在密碼修改中修改本用戶的密碼;可以在此功能中配置系統(tǒng)需要的分組名,并且將分組名保存到文件中。</p><p><b> (4)幫助</b></p><p> 幫助業(yè)務(wù)需要為用戶提供系統(tǒng)的操作幫助。</p>&l
10、t;p><b> 各階段具體要求:</b></p><p><b> 1、需求分析階段</b></p><p> 熟悉系統(tǒng)業(yè)務(wù),從業(yè)務(wù)中抽取出系統(tǒng)的需求,形成完善的需求說明書。</p><p><b> 2、系統(tǒng)設(shè)計階段</b></p><p> 根據(jù)需求,進(jìn)行
11、程序設(shè)計,包括定義系統(tǒng)的界面、定義系統(tǒng)數(shù)據(jù)的存儲方式等,形成完善的設(shè)計說明書。</p><p><b> 3、編碼實現(xiàn)階段</b></p><p> (1)完成代碼編寫 </p><p> ?。?)要求代碼編寫規(guī)范</p><p><b> 4、系統(tǒng)測試階段</b></p>&l
12、t;p><b> ?。?)完成功能調(diào)試</b></p><p> ?。?)要求完成必要的測試工作</p><p><b> 5、交付實施階段</b></p><p> ?。?)提交可正常執(zhí)行的系統(tǒng)</p><p> ?。?)提交系統(tǒng)需求說明書、設(shè)計說明書、程序代碼</p>&l
13、t;p> ?。?)撰寫課程設(shè)計報告書</p><p> ?。?)要求規(guī)范地書寫文檔</p><p><b> 設(shè)計工作量:</b></p><p> ?。?)軟件設(shè)計:完成問題陳述中所提到的所有需求功能。</p><p> ?。?)論文:要求撰寫不少于3000個文字的文檔,詳細(xì)說明各階段具體要求。</p&g
14、t;<p><b> 工作計劃:</b></p><p> 理論課結(jié)束后兩周進(jìn)行課程設(shè)計,軟件開發(fā)如下,一周完成。其中,兩教學(xué)課時用于題目分析與介紹。其他教學(xué)可是用于程序設(shè)計。1)選定題目</p><p><b> 2)需求分析</b></p><p><b> 3)系統(tǒng)設(shè)計</
15、b></p><p><b> 4)編碼實現(xiàn)</b></p><p><b> 5)系統(tǒng)測試</b></p><p><b> 6)交付實施</b></p><p> ?。ㄒ驗榘嗉壿^多,各班開始和結(jié)束時間根據(jù)試驗室安排情況靈活確定,以正式課表為準(zhǔn))</p
16、><p><b> 注意事項</b></p><p><b> 提交文檔</b></p><p> 長沙學(xué)院課程設(shè)計任務(wù)書(每學(xué)生1份)</p><p> 長沙學(xué)院課程設(shè)計論文(每學(xué)生1份)</p><p> 長沙學(xué)院課程設(shè)計鑒定表(每學(xué)生1份)</p&g
17、t;<p> 指導(dǎo)教師簽名: 日期: </p><p> 教研室主任簽名: 日期: </p><p> 系主任簽名: 日期: </p><p> 長沙學(xué)院課程設(shè)計鑒定表</p><p><b> 摘
18、要</b></p><p> 隨著我國城市公交系統(tǒng)發(fā)展和逐漸完善,市民的出行得到了極大的方便,但同時巨大的公交線路網(wǎng)讓人們的選擇也困難起來,本城市公交系統(tǒng)就是在此背景下進(jìn)行設(shè)計的。本系統(tǒng)以用戶為中心,界面簡潔,結(jié)構(gòu)簡單,功能較為完善,可以滿足市民出行的正常需要。系統(tǒng)分為兩個部分,一是內(nèi)部人員使用的管理員部分,這個部分的用來進(jìn)行管理,包括站點管理,線路管理,城市管理和功能測試。二是一般用戶使用的查詢部
19、分,這個部分的用來進(jìn)行查詢,包括站點查詢,線路查詢,站站查詢,切換城市,修改密碼。 </p><p> 關(guān)鍵詞: 城市公交查詢系統(tǒng)</p><p><b> 目 錄</b></p><p><b> 摘 要I</b></p><p> 第1章 設(shè)計內(nèi)容與要求1</p>
20、<p><b> 1.1課程名稱1</b></p><p><b> 1.2設(shè)計要求1</b></p><p> 第2章 需求分析4</p><p><b> 2.1功能模塊4</b></p><p><b> 2.2設(shè)計環(huán)境6<
21、;/b></p><p> 第3章 概要設(shè)計8</p><p><b> 3.1功能結(jié)構(gòu)8</b></p><p> 3.2系統(tǒng)流程圖11</p><p> 第4章 詳細(xì)設(shè)計20</p><p> 4.1登陸注冊模塊20</p><p> 4
22、.2 站點管理模塊22</p><p> 4.3 線路管理模塊24</p><p> 4.4城市管理模塊32</p><p> 4.5 公交查詢模塊34</p><p> 第5章 測試49</p><p> 5.1 登陸注冊模塊測試49</p><p> 5.2 站點管
23、理模塊測試50</p><p> 5.3 線路管理模塊測試52</p><p> 5.4 城市管理模塊測試53</p><p> 5.5 公交查詢模塊測試55</p><p><b> 總 結(jié)58</b></p><p><b> 參考文獻(xiàn)58</b>
24、</p><p> 附 錄 源代碼58</p><p> 第1章 設(shè)計內(nèi)容與要求</p><p> 1.1課程名稱:軟件工程基礎(chǔ)實訓(xùn)II</p><p> 設(shè)計題目:城市公交查詢軟件</p><p><b> 1.2設(shè)計要求 </b></p><p><
25、b> 各階段具體要求:</b></p><p><b> 1、需求分析階段</b></p><p> (1)寫出需求分析(做什么) </p><p> ?。?)要求問題分析和功能定義準(zhǔn)確</p><p><b> 2、系統(tǒng)設(shè)計階段</b></p><p&
26、gt; ?。?)根據(jù)問題描述,設(shè)計系統(tǒng)的結(jié)構(gòu)</p><p> ?。?)完成數(shù)據(jù)結(jié)構(gòu)中各個函數(shù)的定義</p><p> ?。?)用戶界面的設(shè)計</p><p> (5)要求數(shù)據(jù)結(jié)構(gòu)定義合理,類層次結(jié)構(gòu)清晰</p><p><b> 3、編碼實現(xiàn)階段</b></p><p> (1)完成代碼編
27、寫 </p><p> (2)要求代碼編寫規(guī)范</p><p><b> 4、系統(tǒng)測試階段</b></p><p><b> ?。?)完成功能調(diào)試</b></p><p> (2)要求完成必要的測試工作</p><p><b> 5、交付實施階段</b
28、></p><p> ?。?)提交可正常執(zhí)行的系統(tǒng)</p><p> ?。?)提交系統(tǒng)需求說明書、設(shè)計說明書、程序代碼</p><p> ?。?)撰寫實訓(xùn)報告書</p><p> (4)要求規(guī)范地書寫文檔</p><p><b> 第2章 需求分析</b></p><
29、;p><b> 2.1功能模塊</b></p><p><b> 1.主要功能模塊:</b></p><p><b> ?。?)用戶管理</b></p><p> 用戶管理模塊為用戶提供用戶信息管理的功能,包括用戶注冊、用戶登陸、用戶信息修改、用戶密碼修改、用戶注銷等功能。</p&g
30、t;<p> 用戶注冊:用戶可以利用此功能完成注冊,用戶在界面輸入注冊信息,回車后,軟件將注冊信息保存到用戶信息數(shù)據(jù)文件中。</p><p> 用戶登陸:用戶可以利用此功能完成登陸,用戶在界面輸入登陸信息,回車后,軟件驗證登錄信息,登陸成功后,軟件進(jìn)入主功能選擇界面。</p><p> 用戶信息修改:用戶可以利用此功能完成用戶信息修改。</p><p
31、> 用戶密碼修改:用戶可以利用此功能完成密碼修改。</p><p> 用戶注銷:用戶可以利用此功能完成用戶信息注銷,某用戶注銷后,便不能再次登錄。</p><p><b> ?。?)線路管理</b></p><p> 線路管理模塊為用戶提供公交線路數(shù)據(jù)的管理和維護(hù),包括線路添加、線路修改、線路刪除等功能。</p>&l
32、t;p> 線路添加:用戶可以利用此功能增加一條線路。</p><p> 線路修改:用戶可以利用此功能修改一條線路。</p><p> 線路刪除:用戶可以利用此功能刪除一條線路。</p><p><b> ?。?)站點管理</b></p><p> 站點管理模塊為用戶提供公交站點數(shù)據(jù)的管理和維護(hù),包括站點添加
33、、站點修改、站點刪除等功能。</p><p> 站點添加:用戶可以利用此功能增加一個站點。</p><p> 站點修改:用戶可以利用此功能修改一個站點。</p><p> 站點刪除:用戶可以利用此功能刪除一個站點。</p><p><b> ?。?)公交查詢</b></p><p> 公交
34、查詢模塊為用戶提供公交信息查詢的功能,包括站點查詢、線路查詢、站站查詢、最短距離查詢、最少換乘查詢等功能。</p><p> 站點查詢:用戶可以利用此功能查看某個站點所??康墓痪€路。</p><p> 線路查詢:用戶可以利用此功能查看某條線路所路經(jīng)的公交站點。</p><p> 站站查詢:用戶可以利用此功能查詢出發(fā)地和目的地之間的所有公交乘車方案。</
35、p><p> 最短距離查詢:用戶可以利用此功能查詢出發(fā)地和目的地之間最短距離的公交乘車方案。</p><p> 最少換乘查詢:用戶可以利用此功能查詢出發(fā)地和目的地之間最少換乘的公交乘車方案。</p><p><b> 2.2設(shè)計環(huán)境</b></p><p> IDE:Dev C++ 5.11</p>&
36、lt;p> 編譯器:G++ 4.9.2</p><p> 操作系統(tǒng): windows 7 (64位)</p><p><b> 第3章 概要設(shè)計</b></p><p><b> 3.1功能結(jié)構(gòu)</b></p><p><b> 3.2系統(tǒng)流程圖</b><
37、;/p><p><b> 第4章 詳細(xì)設(shè)計</b></p><p> 4.1 登錄注冊模塊</p><p><b> 圖4.1-1 注冊</b></p><p> 4.2 站點管理模塊</p><p> 圖4.2-1 增加站點</p><p>
38、 圖4.2-2 刪除站點</p><p> 圖4.2-3 修改站點</p><p> 4.3 線路管理模塊</p><p> 圖4.3-1 增加路線</p><p> 圖4.3-2 刪除線路</p><p> 圖4.3-3 修改線路</p><p> 4.4 公交查詢模塊<
39、/p><p> 圖4.5-1 站點查詢</p><p> 圖4.5-2線路查詢</p><p> 圖4.5-3線路選擇</p><p><b> 第5章 測試</b></p><p> 5.1 登錄注冊模塊測試</p><p> 5.2 站點管理模塊測試</
40、p><p> 5.3 線路管理模塊測試</p><p> 5.4 城市管理模塊測試</p><p> 5.5 公交查詢模塊測試</p><p><b> 總 結(jié)</b></p><p> 本次課程設(shè)計對編程能力的要求很高,需要很多的軟件工程的思想,在寫的過程中也卡住過,但經(jīng)過老師的指導(dǎo)都得到
41、了很好的解決。在這次的實訓(xùn)中,我的編程能力有的飛躍性的提升。代碼的本身也出現(xiàn)了一些BUG但經(jīng)過測試大部分都背找出并修復(fù)。在整個代碼編寫過程也學(xué)會了很多編程技巧,一是數(shù)據(jù)表的設(shè)計,我的系統(tǒng)之所以能夠?qū)懙妮^為順利很大的原因就是數(shù)據(jù)表的設(shè)計,將公交站點,公交線路,站點和線路的關(guān)系分別存放在三個文件中,這種設(shè)計能是整個程序的數(shù)據(jù)和邏輯更加清晰,設(shè)計好的數(shù)據(jù)表能節(jié)省很多的時間并使算法也變得簡單。二是設(shè)計模式,不管功能多繁雜,結(jié)構(gòu)多復(fù)雜,只要有良好
42、的函數(shù)封裝,用到合適的設(shè)計模式,都能迎刃而解。通過本次實訓(xùn),我的系統(tǒng)架構(gòu)能力也有了一定的提升。同時要感謝老師的指導(dǎo)和解惑。</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 嚴(yán)蔚敏 吳偉民著.數(shù)據(jù)結(jié)構(gòu)(C語言版). 北京:清華大學(xué)出版社,2015.</p><p> [2] 杜紅燕 劉華富著.C語言程序設(shè)計教程.復(fù)旦大
43、學(xué)出版社,2014.</p><p><b> 附 錄 源代碼</b></p><p> /*----------------------城市公交查詢系統(tǒng)--------------------------</p><p><b> *作者:胡輝衡 </b></p><p><b&
44、gt; *學(xué)校:長沙學(xué)院 </b></p><p> *功能:實現(xiàn)城市公交查詢的基本功能 </p><p> *實現(xiàn)技術(shù):C語言及數(shù)據(jù)結(jié)構(gòu) </p><p><b> *指導(dǎo)老師:鐘旭 </b></p><p> *完成時間 :2015年12月21日 </p><p> -
45、-----------------------------------------------------------------*/ </p><p> #include<stdio.h> </p><p> #include<iostream></p><p> #include<stdlib.h> </p>
46、<p> #include<string.h></p><p> #include<conio.h></p><p> struct user//記錄賬號信息 </p><p><b> {</b></p><p> int identity;
47、//用戶身份,值等于false時為普通用戶,否則為管理員</p><p> int userId;//用戶編號</p><p> char loginName[40];//用戶登錄名</p><p> char loginPassword[20];//登錄密碼 </p><p> st
48、ruct user *next;//指向下一個用戶信息的指針,便于建立鏈表 </p><p><b> };</b></p><p> struct city{//記錄城市信息 </p><p> int cityId;//城市編號 </p><p> char
49、cityName[20];//城市名 </p><p> struct city *next;//指向下一個城市信息的指針,便于建立鏈表 </p><p><b> };</b></p><p> struct station //記錄車站信息 </p><p><
50、;b> {</b></p><p> int stationId;//車站編號</p><p> char stationName[20];//車站名稱</p><p> int cityId;//所屬城市編號 </p><p> struct station *
51、next;//指向下一個站點信息的指針,便于建立鏈表 </p><p><b> };</b></p><p> struct road //記錄公交線路信息 </p><p><b> {</b></p><p> int roadId;//
52、公交線路編號</p><p> char roadName[20];//公交線路名稱</p><p> int cityId;//所屬城市編號</p><p> struct road *next;//指向下一個公交線路信息的指針,便于建立鏈表 </p><p><b>
53、};</b></p><p> struct relation{//記錄車站與公交線路之間的關(guān)系和站與站之間的信息 </p><p> int stationId;//車站編號 </p><p> int roadId;//公交線路編號</p><p> int sep;
54、//車站在此公交線路的序號</p><p> int distance;//在此公交線路下這個車站到下一站的距離(單位:km) </p><p> int time; //在此公交線路下這個車站到下一站所需要的時間(單位:min)</p><p> int cityId;//所屬城市編號<
55、;/p><p> struct relation *next;//指向下一個站點與線路映射信息的指針,便于建立鏈表 </p><p><b> };</b></p><p> int g_cityId = 0;//記錄當(dāng)前城市編號的全局變量 </p><p> int MainInterf
56、ace();//主界面 </p><p> struct user *Login();//登錄函數(shù) </p><p> struct user *Register();//注冊函數(shù) </p><p> struct user*FindPassword();//找回密碼 </p><p>
57、; void initialize();//初始化 </p><p> int UserInterface(struct user* p);//用戶界面</p><p> int AdminInterface(struct user* p);//管理員界面 </p><p> struct user*Logout(struct
58、 user* p);//注銷函數(shù) </p><p> void LineManage();//線路管理函數(shù) </p><p> void SiteManage();//站點管理函數(shù) </p><p> void LineQuery();//線路查詢函數(shù) </p><p> voi
59、d SiteQuery();//站點查詢函數(shù) </p><p> void SiteToSiteQuery();//站站查詢函數(shù) </p><p> struct user*ChangePassword(struct user* p);//修改密碼函數(shù) </p><p> void Inputpw(char *password
60、,int len); //密碼掩蓋函數(shù) </p><p> void ChangeCity();//切換城市 </p><p> void AddCity();//增加城市 </p><p> void SiteAdd();//站點增加函數(shù) </p><p> void Si
61、teChange();//站點修改函數(shù)</p><p> void SiteDelete();//站點刪除函數(shù)</p><p> void SiteDeleteDeal(int stationId); //站點刪除處理函數(shù)</p><p> void LineAdd();//線路增加函數(shù) </p&g
62、t;<p> void LineChange();//線路修改函數(shù)</p><p> void LineDelete();//線路刪除函數(shù)</p><p> void LineInsertSite(int roadId);//插入站點形成公交線路 </p><p> void LineDeleteSite
63、(int roadId);//刪除公交線路上所有的站點 </p><p> void LineShow(int roadId);//顯示公交線路上所有的公交站點 </p><p> void SiteShow(int stationId);//顯示經(jīng)過公交站點所有的公交線路 </p><p> void ShowAllWay(in
64、t start,int end);//顯示從起點到終點兩次換乘及以下的所有乘車方式 </p><p> void graphFound();//將當(dāng)前城市所有的公交線路和站點構(gòu)成一張圖</p><p> void showRoadName(int roadId);//根據(jù)線路編號顯示公交線路名 </p><p> void
65、showStationName(int stationId);//根據(jù)站點編號顯示公交站點名 </p><p> int main(){</p><p> struct user *p;</p><p> int option;</p><p> initialize();</p><p><b&g
66、t; while(1){</b></p><p> system("cls");</p><p> option = MainInterface();</p><p> switch(option){</p><p> case 49:p = Login();break;</p>&l
67、t;p> case 50:p = Register();break;</p><p> case 51:p = FindPassword();break;</p><p> default:exit(-1);</p><p><b> }</b></p><p> //printf("a&quo
68、t;);</p><p> if(p == NULL){</p><p><b> continue;</b></p><p><b> }else{</b></p><p> //printf("\t\t你的身份:");</p><p> if
69、(p->identity){</p><p> while(p){//避免函數(shù)調(diào)用函數(shù)導(dǎo)致內(nèi)存爆炸 </p><p> b:option = AdminInterface(p);</p><p> switch(option){</p><p> case 49:LineManage();break;</p&
70、gt;<p> case 50:SiteManage();break;</p><p> case 51:ChangeCity();break;</p><p> case 52:AddCity();break;</p><p> case 53:goto a;/*UserInterface(p)*/;break;</p><
71、;p> case 54:p = Logout(p);break;</p><p> default:exit(-1);</p><p><b> }</b></p><p><b> }</b></p><p><b> }else{</b></p>
72、<p> while(p){//避免函數(shù)調(diào)用函數(shù)導(dǎo)致內(nèi)存爆炸</p><p> a:option = UserInterface(p);</p><p> switch(option){</p><p> case 49:LineQuery();break;</p><p> case 50:SiteQu
73、ery();break;</p><p> case 51:SiteToSiteQuery();break;</p><p> case 52:ChangeCity();break;</p><p> case 53:p = ChangePassword(p);break;</p><p><b> case 54:<
74、/b></p><p> if(p->identity){</p><p><b> goto b;</b></p><p><b> }else{</b></p><p> p = Logout(p);break;</p><p><b>
75、 }</b></p><p> default:exit(-1);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }<
76、/b></p><p> //system("pause");</p><p><b> }</b></p><p><b> return 0;</b></p><p><b> }</b></p><p> voi
77、d SiteAdd(){</p><p> system("cls");</p><p> printf("--------------------------站點增加界面-------------------------");</p><p><b> FILE *fp;</b></p>
78、;<p> int i = 1;</p><p> bool mark = false;</p><p> int stationId,cityId;</p><p> int stationIdMark = 0;//記錄新建公交站點的編號(應(yīng)大于所有已有的公交站點) </p><p> char stationN
79、ame[20];</p><p> struct station *head,*p,*q;</p><p> head = (struct station*)malloc(sizeof(struct station));</p><p> head->next = NULL;</p><p> fp = fopen("
80、station.txt","r");</p><p><b> if(fp){</b></p><p> while(!feof(fp)){</p><p><b> //產(chǎn)生鏈表 </b></p><p> p = (struct station*)mallo
81、c(sizeof(struct station));</p><p> p->next = NULL;</p><p> fscanf(fp," %d %s %d",&p->stationId,p->stationName,&p->cityId);</p><p> if(p->stationI
82、d > stationIdMark){</p><p> stationIdMark = p->stationId;</p><p><b> }</b></p><p> p->next = head->next;</p><p> head->next = p;</p&g
83、t;<p> //printf(" %d %s %d",stationId,stationName,cityId);</p><p> /*if(cityId == g_cityId){</p><p> p->cityId = cityId;</p><p> p->stationId = stationId;
84、</p><p> strcpy(p->stationName,stationName);</p><p> p->next = head->next;</p><p> head->next = p;</p><p><b> }*/</b></p><p>&
85、lt;b> }</b></p><p> p = head->next;</p><p> printf("\n\n本城市已有的公交站點:\n");</p><p> //將本城市已有的公交站點全部顯示出來 </p><p> while(p != NULL){</p>&l
86、t;p> //printf("a");</p><p> if(p->cityId == g_cityId){</p><p> printf("%s\t",p->stationName);</p><p> if(i%5 == 0){</p><p> printf(&q
87、uot;\n");</p><p><b> }</b></p><p><b> i++; </b></p><p><b> }</b></p><p> p = p->next; </p><p><b> }&
88、lt;/b></p><p> /*if(p == NULL){</p><p> printf("\n\n本城市暫時還沒有添加任何公交站點!\n");</p><p><b> }else{</b></p><p> printf("\n\n本城市已有的公交站點:\n&quo
89、t;);</p><p> while(p != NULL){</p><p> //printf("a");</p><p> printf("\t%s",p->stationName);</p><p> if(i%5 == 0){</p><p> prin
90、tf("\n");</p><p><b> i++;</b></p><p><b> }</b></p><p> p = p->next; </p><p><b> }</b></p><p><b>
91、; } */</b></p><p> printf("\n\n\n請輸入你想要增加的公交站點名(輸入0表示返回):");</p><p> //對輸入的公交站名做正確性驗證 </p><p><b> while(1){</b></p><p> fflush(stdin);&
92、lt;/p><p> gets(stationName);</p><p> if(!strcmp(stationName,"0")){//把輸入0作為模塊出口 </p><p><b> break;</b></p><p><b> }</b><
93、/p><p> p = head->next;</p><p> mark = false;</p><p> while(p != NULL){</p><p> if(!strcmp(p->stationName,stationName) && p->cityId == g_cityId){</
94、p><p> mark = true;//表示公交站點已存在,不需要再添加 </p><p><b> break;</b></p><p><b> }</b></p><p> p = p->next;</p><p><b>
95、 }</b></p><p><b> if(mark){</b></p><p> printf("此公交站點已存在!請重新輸入公交站點名(輸入0表示返回):");</p><p> }else if(strlen(stationName) > 20 || strlen(stationName) &
96、lt; 4){</p><p> printf("公交站點名長度不符合要求!請重新輸入公交站點名(輸入0表示返回):");</p><p><b> }else{</b></p><p><b> break;</b></p><p><b> } </b
97、></p><p><b> }</b></p><p> //將新建的公交站點結(jié)點插入到鏈表中 </p><p> if(strcmp(stationName,"0")){</p><p> p = (struct station*)malloc(sizeof(struct stati
98、on));</p><p> p->next = NULL;</p><p> stationIdMark++; </p><p> p->stationId = stationIdMark;</p><p> p->cityId = g_cityId;</p><p> strcpy(p-
99、>stationName,stationName);</p><p> p->next = head->next;</p><p> head->next = p;</p><p><b> }</b></p><p> fclose(fp);</p><p>
100、fp = fopen("station.txt","w");</p><p><b> if(fp){</b></p><p> p = head->next;</p><p> while(p != NULL){//更新公交站點文件信息 </p><
101、p> //printf("b");</p><p> fprintf(fp," %d %s %d",p->stationId,p->stationName,p->cityId);</p><p> head->next = head->next->next;</p><p>
102、free(p);//釋放鏈表結(jié)點,節(jié)省內(nèi)存 </p><p> p = head->next;</p><p><b> }</b></p><p> free(head);</p><p> fclose(fp);</p><p><b> }else{&l
103、t;/b></p><p> printf("文件'city'打開失敗!");</p><p> system("pause");</p><p><b> return;</b></p><p><b> }</b></p
104、><p><b> }else{</b></p><p> printf("\n\n\n\n\n\t\t文件'station.txt'打開失?。n\n\n");</p><p> system("pause");</p><p><b> retur
105、n;</b></p><p><b> }</b></p><p> //system("pause");</p><p><b> } </b></p><p> void SiteChange(){</p><p> system
106、("cls");</p><p> printf("--------------------------站點修改界面-------------------------");</p><p><b> FILE *fp;</b></p><p> int i = 1;</p><p
107、> bool mark = false;</p><p> int stationId,cityId;</p><p> char stationName[20];</p><p> struct station *head,*p,*q;</p><p> head = (struct station*)malloc(size
108、of(struct station));</p><p> head->next = NULL;</p><p> fp = fopen("station.txt","r");</p><p><b> if(fp){</b></p><p> while(!feof
109、(fp)){</p><p><b> //產(chǎn)生鏈表 </b></p><p> p = (struct station*)malloc(sizeof(struct station));</p><p> p->next = NULL;</p><p> fscanf(fp," %d %s %d&
110、quot;,&p->stationId,p->stationName,&p->cityId);</p><p> p->next = head->next;</p><p> head->next = p;</p><p><b> }</b></p><p>
111、 p = head->next;</p><p> printf("\n\n本城市已有的公交站點:\n");</p><p> //將本城市已有的公交站點全部顯示出來 </p><p> while(p != NULL){</p><p> //printf("a");</p>
112、;<p> if(p->cityId == g_cityId){</p><p> printf("%s\t",p->stationName);</p><p> if(i%5 == 0){</p><p> printf("\n");</p><p><b&g
113、t; }</b></p><p><b> i++; </b></p><p><b> }</b></p><p> p = p->next; </p><p><b> }</b></p><p> printf(&qu
114、ot;\n\n\n請輸入你想要修改的公交站點名(輸入0表示返回):");</p><p> //對輸入的公交站名做正確性驗證 </p><p><b> while(1){</b></p><p> fflush(stdin);</p><p> gets(stationName);</p>
115、<p> if(!strcmp(stationName,"0")){//把輸入0作為模塊出口 </p><p><b> break;</b></p><p><b> }</b></p><p> p = head->next;</p>&
116、lt;p> mark = false;</p><p> while(p != NULL){</p><p> if(!strcmp(p->stationName,stationName) && p->cityId == g_cityId){</p><p> mark = true;//表示公交站點已
117、存在,可以修改 </p><p><b> break;</b></p><p><b> }</b></p><p> p = p->next;</p><p><b> }</b></p><p><b> if(mark)
118、{</b></p><p><b> break; </b></p><p> }else if(strlen(stationName) > 20 || strlen(stationName) < 4){</p><p> printf("公交站點名長度不符合要求!請重新輸入公交站點名(輸入0表示返回):
119、");</p><p><b> }else{</b></p><p> printf("此公交站點不存在!請重新輸入公交站點名(輸入0表示返回):");</p><p><b> } </b></p><p><b> }</b><
120、/p><p> if(strcmp(stationName,"0")){</p><p> printf("請輸入新的公交站點名:");</p><p><b> while(1){</b></p><p> fflush(stdin);</p><p>
121、; gets(stationName);</p><p> if(strlen(stationName) > 20 || strlen(stationName) < 4){</p><p> printf("公交站點名長度不符合要求!請重新輸入新的公交站點名:");</p><p><b> }else{</
122、b></p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p> strcpy(p->stationName,stationName);</p><p>
123、;<b> }</b></p><p> fclose(fp);</p><p> fp = fopen("station.txt","w");</p><p><b> if(fp){</b></p><p> p = head->next;
124、</p><p> while(p != NULL){//更新公交站點文件信息 </p><p> //printf("b");</p><p> fprintf(fp," %d %s %d",p->stationId,p->stationName,p->cityId);</
125、p><p> head->next = head->next->next;</p><p> free(p);//釋放鏈表結(jié)點,節(jié)省內(nèi)存 </p><p> p = head->next;</p><p><b> }</b></p><p> free(
126、head);</p><p> fclose(fp);</p><p><b> }else{</b></p><p> printf("文件'city'打開失敗!");</p><p> system("pause");</p><p&
127、gt;<b> return;</b></p><p><b> }</b></p><p><b> }else{</b></p><p> printf("\n\n\n\n\n\t\t文件'station.txt'打開失??!\n\n\n");</p
128、><p> system("pause");</p><p><b> return;</b></p><p><b> }</b></p><p> //system("pause");</p><p><b> }&
129、lt;/b></p><p> void SiteDeleteDeal(int stationId){ //站點刪除處理函數(shù)</p><p> //printf("\n所有經(jīng)過該站點的公交線路都將跳過該站點!\n");</p><p> //printf("%d\n",stationId);</p>
130、<p> FILE *fp,*fp2;</p><p><b> int sep;</b></p><p> struct relation *head,*p,*q;</p><p> struct road *head2,*p2,*q2;</p><p> fp = fopen("re
131、lation.txt","r");</p><p><b> if(fp){</b></p><p> head = (struct relation*)malloc(sizeof(struct relation));</p><p> head->next = NULL;</p><
132、;p> head2 = (struct road*)malloc(sizeof(struct road));</p><p> head2->next = NULL;</p><p> while(!feof(fp)){</p><p> p = (struct relation*)malloc(sizeof(struct relation));
133、</p><p> p->next = NULL;</p><p> fscanf(fp," %d %d %d %d %d %d",&p->stationId,&p->roadId,&p->sep,&p->distance,&p->time,&p->cityId);</p
134、><p> if(p->stationId == stationId){</p><p> p2 = (struct road*)malloc(sizeof(struct road));</p><p> p2->next = NULL;</p><p> p2->roadId = p->roadId;</p
135、><p> printf(" %d ",p->roadId);</p><p> strcpy(p2->roadName,"");</p><p> p2->next = head2->next;</p><p> head2->next = p2;</p>
136、<p><b> }</b></p><p> p->next = head->next;</p><p> head->next = p;</p><p><b> }</b></p><p> fclose(fp);</p><p&
137、gt; p2 = head2->next;</p><p> while(p2 != NULL){</p><p> p = head->next;</p><p> while(p != NULL){</p><p> if(p->roadId == p2->roadId && p->
138、stationId == stationId){</p><p> sep = p->sep;</p><p> //printf(" %d \n",sep);</p><p><b> break;</b></p><p><b> }</b></p>
139、<p> p = p->next;</p><p><b> }</b></p><p> p = head->next;</p><p> while(p != NULL){</p><p> if(p->roadId == p2->roadId && p
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公交查詢系統(tǒng)用戶管理課程設(shè)計說明書
- java實現(xiàn)的公交查詢系統(tǒng)(課程設(shè)計)
- 城市公交查詢系統(tǒng).doc
- 公交查詢系統(tǒng)—數(shù)據(jù)庫課程設(shè)計報告
- 城市公交查詢系統(tǒng).doc
- 城市公交查詢系統(tǒng).doc
- jsp城市公交查詢系統(tǒng)
- 公交查詢系統(tǒng)設(shè)計
- 城市公交查詢系統(tǒng)畢業(yè)設(shè)計
- 公交查詢系統(tǒng)設(shè)計
- 學(xué)生信息查詢系統(tǒng)課程設(shè)計說明書
- 學(xué)生信息查詢系統(tǒng)課程設(shè)計說明書
- 畢業(yè)論文-城市公交查詢系統(tǒng)設(shè)計
- 城市公交查詢系統(tǒng)的設(shè)計與實現(xiàn).pdf
- 基于java的城市公交查詢系統(tǒng)
- 畢業(yè)設(shè)計--公交查詢系統(tǒng)
- vb087ac城市公交查詢系統(tǒng)
- 基于.net的城市公交查詢系統(tǒng)設(shè)計與實現(xiàn)
- [vb畢設(shè)]ac城市公交查詢系統(tǒng)
- vb087ac城市公交查詢系統(tǒng)
評論
0/150
提交評論