公交线路查询
公交線路查詢
- 1. 設(shè)計(jì)內(nèi)容與要求
- 2. 實(shí)驗(yàn)環(huán)境
- 3. 系統(tǒng)分析與設(shè)計(jì)
- 4. 運(yùn)行結(jié)果
- 5.課程設(shè)計(jì)支撐的畢業(yè)要求指標(biāo)點(diǎn)
- 6. 心得
源碼地址:https://gitee.com/starking614/bus-system
1. 設(shè)計(jì)內(nèi)容與要求
公交新線路的創(chuàng)建(站點(diǎn)的錄入)、刪除、修改、查詢(顯示該線路的全部站點(diǎn));
公交站點(diǎn)的添加、刪除、修改、查詢(顯示該站點(diǎn)的全部線路);
兩個(gè)公交站點(diǎn)之間線路查詢(顯示經(jīng)過的全部站點(diǎn),包含轉(zhuǎn)車站點(diǎn)的提示)。
以上功能中應(yīng)該包含一個(gè)線路雙向線路站點(diǎn)不同或僅單向運(yùn)行的的情況。
以西安市公交為例,公交線路參照微信公眾號(hào):西安交通大發(fā)布,至少錄入10條以上的線路并涵蓋03、04的情況。
2. 實(shí)驗(yàn)環(huán)境
3. 系統(tǒng)分析與設(shè)計(jì)
? 該系統(tǒng)主要涉及到公交線路的操作,通過以下分析采用線性表的數(shù)據(jù)結(jié)構(gòu),對線性表進(jìn)行增刪查改,圍繞線性表擴(kuò)展其它功能。一條鏈存儲(chǔ)一條線路,線路號(hào)存入鏈表所對應(yīng)的線路號(hào)數(shù)組。事先將公交線路數(shù)據(jù)存入文件,鏈表更改后保存進(jìn)文件。
? 在文件中每一條公交線路最后添加此條公交線路停止讀取標(biāo)志"停",在文件最后添加停止讀取文件信息"結(jié)束",每申請一個(gè)鏈表新結(jié)點(diǎn),就從文件中讀取一個(gè)站點(diǎn)名字,將值賦予此鏈表結(jié)點(diǎn)的數(shù)據(jù)域,遇到"停"標(biāo)志則進(jìn)行下一條公交線路的讀取,直到碰到"結(jié)束"標(biāo)志,停止讀取文件。
? 查詢每一條鏈表,若該鏈表頭結(jié)點(diǎn)的指針域不為空,則該鏈表有信息,需要將其輸入文件,將鏈表結(jié)點(diǎn)指針域值轉(zhuǎn)換成中文輸出到文件中,直到鏈表最后再輸出一個(gè)結(jié)束標(biāo)志"停",所有鏈表信息輸入完成后,在文件后面添加一個(gè)"結(jié)束"標(biāo)志,方便文件下一次的讀取。
? 根據(jù)string函數(shù)庫內(nèi)容,編寫字符串包含函數(shù)。然后應(yīng)用該函數(shù)得到相關(guān)數(shù)組,最后對相關(guān)數(shù)組進(jìn)行操作。
? 作為交通系統(tǒng),首先應(yīng)當(dāng)讓用戶使用查詢功能,但不可對線路和站點(diǎn)進(jìn)行修改等操作,因此需要設(shè)置管理員系統(tǒng),只有相關(guān)人員才可對公交系統(tǒng)進(jìn)行操作。因此,建立管理員系統(tǒng),并設(shè)置密碼,若輸入三次以上,則不可進(jìn)入管理員系統(tǒng)。
? 設(shè)置好初始密碼,利用邏輯關(guān)系,及循環(huán)語句建立主菜單。
? 查詢線路時(shí)并不一定會(huì)輸入完整數(shù)據(jù),所以應(yīng)該支持模糊查找。查詢某條線路,得到結(jié)果應(yīng)為該條線路所有站點(diǎn)的有序序列。通過模糊查找得到線路名,然后遍歷所有線路鏈表得到被查找鏈打印屏幕。
公交站點(diǎn)的查詢
? 同線路查詢支持模糊搜索,通過輸入站點(diǎn)能得到所有通過該站點(diǎn)的線路。遍歷所有線路鏈表,遇到被查詢站點(diǎn),屏幕輸出該條鏈即可。
站點(diǎn)的增加刪除修改
? 站點(diǎn)的增加刪除修改,對象是已經(jīng)存在的線路。采用鏈表可以更方便的進(jìn)行站點(diǎn)的增加刪除修改,對應(yīng)鏈表增刪改。理論上如果硬件允許一條線路可以一直增加站點(diǎn)。修改時(shí)直接替換鏈表中某一結(jié)點(diǎn)數(shù)據(jù)即可。
? 線路的增加,由于程序采用的是鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),故增加線路時(shí)只需要new一條新鏈表,然后依次向鏈表中輸入站點(diǎn)信息即可完成線路的添加。刪除線路時(shí)只需要?jiǎng)h除改線路所在的鏈表即可完成對線路的刪除操作。如需修改線路名稱,只需修改對應(yīng)的線路數(shù)組的數(shù)據(jù)即可。
? 零次換乘即不換乘。即一條線路中搜索起點(diǎn)與終點(diǎn)給出中間所經(jīng)過的站點(diǎn)。在所有鏈表中找到同時(shí)存有被查詢的起點(diǎn)與終點(diǎn)的線路,然后將其打印屏幕即可。
? 理念:一次換乘調(diào)用直達(dá)函數(shù),多次換乘調(diào)用一次換乘,形成遞歸(暫未實(shí)現(xiàn))。
? A. 一次換乘操作:尋找含有起始站點(diǎn)的所有線路-----線路1,尋找含有結(jié)束站點(diǎn)的所有線路----線路2。最后找到可以連通線路1和線路2上的站點(diǎn)的新線路,實(shí)現(xiàn)起始站點(diǎn)和終止站點(diǎn)的連通,以實(shí)現(xiàn)一次換乘。
? B. 流程圖
4. 運(yùn)行結(jié)果
? [外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-H4ABD4Mh-1616241152784)(C:\Users\Star_King\AppData\Roaming\Typora\typora-user-images\image-20210313125736235.png)]
5.課程設(shè)計(jì)支撐的畢業(yè)要求指標(biāo)點(diǎn)
? 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)支撐以下四項(xiàng)畢業(yè)要求指標(biāo)點(diǎn):
? 指標(biāo)點(diǎn)2-4:能夠從工程科學(xué)的角度,結(jié)合文獻(xiàn)查閱及研究,對計(jì)算機(jī)領(lǐng)域復(fù)雜工程問題進(jìn)行系統(tǒng)分析,并獲得有效結(jié)論。
? 指標(biāo)點(diǎn)7-1:知曉和理解環(huán)境保護(hù)和可持續(xù)發(fā)展的理念和內(nèi)涵,正確認(rèn)識(shí)計(jì)算機(jī)科學(xué)技術(shù)的發(fā)展與環(huán)境和可持續(xù)發(fā)展的關(guān)系。
? 指標(biāo)點(diǎn)9-3:能夠理解個(gè)人在團(tuán)隊(duì)中的角色劃分,且勝任相應(yīng)的角色職責(zé)。
? 指標(biāo)點(diǎn)12-1:能在社會(huì)發(fā)展的大背景下,理解終身學(xué)習(xí)的必要性,具有自主學(xué)習(xí)和終身學(xué)習(xí)的意識(shí)。
6. 心得
? 2-4 設(shè)計(jì)公交線路系統(tǒng)參考了百度地圖等相關(guān)地圖的線路查詢功能,其換乘算法的實(shí)現(xiàn)。了解到自己實(shí)力遠(yuǎn)遠(yuǎn)不及這些大公司,結(jié)合學(xué)習(xí)科目數(shù)據(jù)結(jié)構(gòu),進(jìn)行了符合自己能力的功能設(shè)計(jì)。
? 7-1 本設(shè)計(jì)中采取鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)相對于順序存儲(chǔ)更加節(jié)省內(nèi)存空間。在數(shù)據(jù)的錄入上,是一些單調(diào)的重復(fù)輸入,通過程序?qū)崿F(xiàn)節(jié)省了人力,若以后出現(xiàn)線路更改仍可寫入文件持續(xù)使用。在公交換乘上,不需要自己去算,程序自動(dòng)規(guī)劃簡化了出行的流程。
? 9-3 團(tuán)隊(duì)找到了一些各有所長的人,大家互相幫助。在任務(wù)的分配上,先一起分析了功能,然后將程序模塊化,分配任務(wù),互相協(xié)作完成程序。個(gè)人需要聽從于團(tuán)隊(duì)的指揮而又不能盲目的跟從團(tuán)隊(duì),遇到問題應(yīng)多思考,討論并提出更好的設(shè)計(jì)模式。
? 12-1設(shè)計(jì)中的換乘問題并不直接能從教材中得來,人不可能什么都會(huì),通過搜索資料,認(rèn)真理解才得到了算法的主要思想。并且遇到不會(huì)內(nèi)容應(yīng)主動(dòng)查找相關(guān)內(nèi)容,與他人交流也是較為不錯(cuò)的自學(xué)方式。
總結(jié)
- 上一篇: 百度飞桨携手精诺数据打造智慧熔炼,AI让
- 下一篇: 简单却巧妙,工程师创意太牛了!