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