第一篇:道路客運售票聯網系統建設示范工程實施方案_10.25
道路客運售票聯網系統建設示范工程實施方案
中國交通通信信息中心
在2011年全國交通運輸工作會議上,李盛霖部長提出了“強化運輸保障能力建設,不斷提高運輸服務水平,將完善公路、水路客運信息服務體系,組織實施道路、水路客運聯網售票系統建設示范工程作為2011年交通運輸工作的主要任務之一。”
與此同時,交通運輸“十二五”發展規劃明確提出:以信息共享、互聯互通為重點,大力推進國家電子政務網絡建設,整合提升政府公共服務和管理能力,深化完善省域公路交通出行信息服務系統,實施省域、跨省域客運售票聯網和電子客票系統建設。公路水路交通運輸信息化“十二五”發展規劃提出引導開展省域、跨省域客運售票聯網和電子客票系統建設,以網上購票和電話購票等多種形式,方便出行者購票,并為長途客運乘客提供相關信息服務。《道路運輸業“十二五”發展規劃綱要》中提出加快全國道路客運聯網售票系統建設,提升道路客運綜合服務能力。
根據以上文件指導精神,經研究決定開展道路客運售票聯網系統示范工程建設工作,特制訂本方案。
一、指導思想
以科學發展觀為指導,以發展現代交通運輸業、轉變道路運輸發展方式、提升公共服務能力為宗旨,加強政府引導和政策扶持,充分發揮道路客運管理部門和客運企業的主體作用,通過示范推動跨省域道路客運售票聯網系統建設,逐步擴大道路客運售票聯網系統建設范 圍,力爭“十二五”期間道路客運市場監管和售票聯網系統服務能力顯著提高,跨省域售票聯網成熟應用并得到廣泛推廣,帶動客運行業信息化建設快速發展,為發展現代客運、實現服務型政府做出積極貢獻,更好地滿足經濟社會發展和人民群眾生活的需要。
二、建設原則
(一)政府引導、市場運作
加強政府引導,完善相關法規標準和配套扶持政策,著力構建有利于售票聯網示范工程建設的政策與市場環境,在政策和資金上對示范工程予以重點支持,適當引入市場機制,鼓勵道路客運企業參與到示范工程建設中來,探索適合大范圍推廣的建設和營運管理模式。
(二)明確目標,分步實施
道路客運售票聯網系統示范工程是一項系統工程,涉及行業管理部門、客運企業、客運站、乘客和普通公眾等。業務上,需要面對幾大類、幾十種道路客運相關業務應用和客運信息資源。同時要理清交通管理職能設置上的縱橫向關系、相關業務間數據的往來關系、隸屬關系。在技術上,要考慮運行在各種不同軟、硬件平臺上,用不同技術開發的應用系統,做到對異構系統的統一訪問。加上各省現狀不一,這決不是短時間內能夠完成的一項工作。因此,需明確近期目標和長遠目標,分步實施。
(三)統一規范,標準先行
道路客運售票聯網系統示范工程規范是綱,沒有全面完整的業務技術規范作指導,信息系統的建設將會陷入無目標、無標準、無組織、無約束的混亂狀態。要充分借鑒道路客運聯網售票系統建設已有的成果,制定完整、翔實的業務、技術規范策略,理清項目管理的規范策略和信息資源整合的數據組織規范標準,建立完善的標準規范體系框架。
(四)立足現狀,兼顧長遠
道路客運售票聯網系統是客運行業一個非常基礎的數據平臺,涉及面廣、面向對象眾多,是客運信息采集的源頭。構造這樣一個基礎性的數據平臺,要立足現狀,注重系統的基本功能,在業務數據對象的抽取、數據采集交換與組織模式、數據總線技術的設計、數據資源分析等支撐技術方面,都要盡可能地滿足當前要求,并增加與外部系統的接口標準性,充分考慮系統未來的可擴充性。
(五)摸清需求,頂層設計
不同客運企業、客運站現有售票系統開發跨度很大,運行平臺各異,在工程建設中,要充分了解和分析用戶需求,考慮系統架構、技術選擇,利用面向對象的設計原理,做好頂層設計工作。對客運管理和服務中的業務流程、數據實體以及關聯性進行深入分析,構造出內聚的、層次化的、松耦合的抽象系統模型。同時,在數據交換平臺的設計中強調基于標準的數據通訊總線的設計理念,減少聯網售票系統與客運站售票系統、站務系統間的數據耦合復雜性。
(六)嚴格管理,措施到位
客運售票聯網涉及多個關聯的業務部門,包括省廳、運管局、運輸企業、客運站以及代售票、聯網售票中心等單位。從工程的啟動動 員、需求調研、數據采集,到業務、技術方案論證、數據交換平臺搭建、應用系統建設、示范應用乃至最后的長效運行等,都需要周密安排和協調,切實采用有效措施,確保項目順利開展。
三、建設目標
系統建設目標是以符合示范條件省份已建或在建的客運聯網售票系統為基礎,整合現有聯網售票資源,建立區域性道路售票聯網與客運統計信息平臺,建設成熟穩定、功能完善、最終形成全國一體的客運聯網售票系統,以滿足領導決策、行業管理、企業經營和公眾服務等不同層次應用要求。具體目標如下:
(一)政務目標
——提高客運市場監管能力,規范客運市場行為
通過道路客運售票聯網系統,將客運站售票系統聯網,拒絕非法站票點接入,支持代理點、電話、互聯網等購票方式,使得出行人員購票方式多樣化,有利于打破客運經營壁壘。另外結合運政系統、營運車輛聯網聯控等系統,可以提高客運信息透明度,促使更多旅客到站乘車,強化“車進站、人歸點”的執行力度,減少站外組客、兜客攬客等現象,為執法管理提供科學依據,提高道路客運依法監管能力,規范客運經營行為,形成公平公正的市場環境。——提高和改善公共服務能力,服務公眾便捷出行
通過建設道路客運售票聯網系統,將打破以往地市之間、省域之間客運信息不能共享的現狀,為廣大公眾提供更人性化、集約化的出行服務。公眾可以在任一個聯網車站、代理機構或互聯網上查詢、預 定和購買到所有聯網客運站的任意方向的長途(省、市、縣際)客票,及時獲取客運班次、班線、發車時刻、余票、沿途路況等動態客運和綜合性交通信息,滿足公眾安全便捷出行需求,提高道路運輸公共服務能力,樹立行業服務社會良好形象。
——加強道路客運總體規劃,提升科學決策水平和政務效能 通過道路客運售票聯網系統,將各省道路客運信息在部級層面匯聚,同時滿足省際間客運信息交換共享需要,為行業管理者提供動態客運信息,全面了解客運流量、流向、實載率、企業經營狀況等,從而合理的組織運力,制定相應的旅客運輸方案。同時,通過數據分析和信息挖掘手段,發現道路客運行業中的問題和規律,為經濟運行分析和運力投放、運輸組織等決策制訂提供科學依據。
——轉變發展方式,提高道路客運信息化發展水平,提升客運企業市場競爭力
通過建設道路客運售票聯網系統,可以改變傳統的“站內售票”經營方式,用信息化手段協助各省(區、市)解決線路布局、運力投放、旅客運輸過程中的薄弱環節,提升運輸組織效率,提高道路客運企業規模化、集約化程度,改善道路運輸服務質量,實現節能減排和低碳運輸,推動傳統道路運輸業向現代道路運輸業的轉型,提升道路客運在綜合客運市場的競爭能力。
(二)業務目標
通過道路客運售票聯網系統示范工程建設,實現示范區域內聯網車站實現售票系統互聯互通,車站、代售點、網上、自助終端等不同 售票方式同步售票;在部分條件成熟的車站試點電子客票業務;建成道路客運數據中心,實現示范省份間、省聯網售票中心與區域客運數據中心間數據的實時交換;建立客運信息統計與分析系統,實現客運數據的事實上報與分析;建立道路客運公眾服務系統,提供包括在線訂票、公共信息查詢、客運信息查詢、客運公告、咨詢投訴等服務;建立完善的結算制度,協調解決票樣統一和利益分成等問題。
四、建設內容
道路客運售票聯網系統示范工程建設主要包括以下內容:
(一)健全標準規范體系
制修訂道路客運信息采集、交換、共享和服務相關的標準規范,包括系統標準、接口標準、終端標準以及管理、維護、結算、信息服務規范等,形成一套標準體系,用于支撐全國道路客運聯網售票系統建設和應用。著重研究以下關鍵標準規范:
——道路客運售票聯網元數據規范; ——道路客運售票聯網數據交換格式規范; ——道路客運售票聯網系統接口規范; ——道路客運售票聯網公眾服務接口規范; ——道路客運售票聯網票務結算規范。
(二)建立區域道路客運數據共享與服務交換平臺,形成區域道路客運數據中心
整合參與示范省(區、市)道路客運聯網售票系統資源,建立跨省域道路客運數據共享與服務平臺,促進示范區域內道路客運信息交 換與共享,提高跨省域客運信息采集、傳輸和使用效率,為道路客運決策規劃、管理調度提供實時精確的數據支持,為滿足與民航、鐵路等綜合客運體系的無縫對接奠定基礎。
——區域道路客運數據交換平臺。主要負責定義參與示范建設省份的交換存儲策略、基礎數據標準;調度、監控所有跨省業務管理的信息流轉,根據需要為各省客運業務系統之間提供數據共享與交換;從各級業務系統中抽取整合數據,建成道路客運基礎性、戰略性數據資源庫,為部級應用系統提供數據支持,同時實現重點道路客運信息資源的集中管理;向網內各級數據中心或業務系統發布各類數據綜合分析結果,為初步形成全國道路客運數據中心奠定基礎。
——區域道路客運數據中心。通過區域道路客運數據交換平臺,將各省道路客運信息在部級層面匯聚,同時滿足省際間客運信息交換共享需要,數據中心是各類客運信息資源的存儲地,同時也是提供數據管理、分析和信息服務的地方。數據中心主要為各類交通業務單位提供電子政務平臺和業務應用平臺。能夠最大限度的發揮各系統、各部門數據管理功能,并在此基礎上實現不同業務之間的數據信息共享和數據信息交換、融合,實現數據信息交換、共享和挖掘,在客運全過程中提供所需的信息,為優化運輸布局、合理配置運輸資源、銜接各種運輸方式提供行業管理、分析、決策的所需的數據基礎。
(三)建立道路客運售票聯網系統
開發跨省域道路客運售票聯網系統。系統主要包括道路客運聯網售票管理系統、道路客運售票統計分析系統、票務結算系統、公眾客 運信息服務系統等子系統,以實現客運信息統計分析、信息查詢、監控管理、聯網售票、票務結算、公眾信息服務等功能。通過示范系統建設真正實現示范省份間售票聯網常態化,票務結算高效化,公眾服務透明化,實現票務信息互聯互通,提高市場監管能力,建成面相行業管理部門、客運企業、社會公眾提供綜合應用服務。
(四)開展多元化售票和電子客票探索
基于區域道路客運售票聯網系統,拓展跨省域的電話訂票、網上訂票、手機訂票、終端自助售票等多元化的售票方式。對電子客票系統的建設進行探索,充分利用電子信息技術,與電子商務應用相結合,借鑒鐵路和民航電子客票應用模式,探索電子客票身份驗證、票樣防偽、自動識別等解決辦法。滿足旅客的便捷出行和個性化需求,促進電子客票在道路客運行業的快速推廣。
(五)建立長效運維與管理體系
分析跨省域道路客運聯網售票系統中不同層次角色需求及利益關系,對比系統建設運營模式和維護方式,形成一整套保障道路客運售票聯網系統可持續發展的制度。從建設管理層面,協調各示范省份按相關標準統一票樣,建立高效、合理的結算體系。從技術層面上重點攻克系統建設涉及的異構異質客運信息系統整合、復雜網絡條件下數據交換、海量數據處理、數據質量控制等關鍵技術,解決系統建設的技術瓶頸。
五、示范條件及范圍
道路客運售票聯網示范工程以相鄰的區域省份為主,首先選擇一 批基礎條件好、已建或正在建設省域道路客運聯網售票系統(或售票聯網)的省(區、市),構建區域道路客運售票聯網系統。通過調研,北京、江蘇、吉林等11個省(區、市)已建和正在建設全省道路客運聯網售票服務系統(有些省份也稱客運信息服務平臺或客運信息管理系統等;13個省(區、市)將全省(區、市)道路客運聯網售票服務系統建設納入本省“十二五”發展規劃。東北三省、長三角、京津冀等區域客運聯網售票系統建設較為完善,基本具備建設跨區域道路客運售票聯網示范工程的條件。
其中,東三省在政治、經濟等多方面內部聯系緊密,區域一體化發展狀況良好,道路客運行業也有緊密的聯系。吉林全省范圍內二級以上客運站已實現聯網售票;黑龍江省的哈爾濱、齊齊哈爾、佳木斯、大慶等部分地市部分客運站實現聯網,全省聯網售票正在建設;遼寧省的沈陽虎躍等部分運輸企業自身聯網,全省聯網售票建設已列入規劃,已于2011年進入實施階段。經充分的調研和綜合分析,東三省作為跨省域道路客運售票聯網示范工程建設的試點條件成熟,因而推薦東三省作為首批示范工程建設區域。
六、示范工程保障措施
(一)對道路客運售票聯網系統示范工程建設給予資金補助。主要包括制訂相關政策、標準和規范;建立跨省域道路客運數據交換平臺、形成客運數據中心;建立跨省域道路客運售票聯網系統;提供部分引導資金幫助參與示范省份建設省域聯網售票系統(或售票聯網工程),或改造完善其現有聯網售票系統,以配合示范工程整合要求。
(二)交通運輸部和各省(區、市)交通運輸管理部門應給予示范工程建設相關政策支持。交通運輸部應根據示范工程建設具體情況,給予參與示范建設的省份以政策支持,鼓勵參建省份根據自身特點創新發展模式。省(區、市)交通運輸管理部門根據實際情況對參與示范工程建設的地市交通運輸部門予以政策支持。
(三)對參與道路客運聯網售票系統建設的企事業單位給予相關政策與資金扶持。參建省(區、市)交通運輸管理部門應給予省內各參與單位相關政策扶持,鼓勵客運站、客運企業等相關部門積極參與到售票聯網系統建設中來,鼓勵引導聯網售票有序良性發展。凡享受政府投資補助的道路客運聯網售票系統參建部門,應積極向社會宣傳聯網售票和提供相應的聯網售票服務,并接受行業主管部門的監督管理。
七、時間安排
道路客運售票聯網系統建設示范工程采用分階段建設方式,主要分四個階段:
(一)需求調研、前期準備、研究開發階段 項目啟動前期-2012年4月。
通過對東三省示范區售票聯網系統現狀和客運市場的深入調研,對現行標準與政策進行研究,編制完善標準規范體系,研究示范工程體系框架,搭建示范工程各子系統原型,研究示范系統建設相關關鍵技術,開展電子客票及多元化售票模式研究,明確項目建設需要的相關配套政策,編制目錄體系表,對比分析不同運營模式,提出票樣、結算等關鍵問題解決方式,研究系統長效運維機制,編制《道路客運售票聯網系統建設指導意見》。
(二)示范工程建設階段 2012年5月-2012年12月。針對東三省區域內已建或在建設省域道路客運聯網售票系統的省(區、市),制訂統一接口標準和技術規范,配合各省按照接口標準改造現有系統,按照接口標準實現道路客運信息的交換;建立道路客運數據交換平臺和數據中心;開發道路客運售票聯網系統,建立公眾客運信息服務系統,建立相應的電子客票等多元化售票模式示范。
(三)項目驗收與評估階段 2013年1月-2013年6月。針對示范省份應用情況,從建設主體、投資規模、建設內容、配套政策、標準規范、運營模式、結算方式、維護機制等方面進行總結歸納,召開經驗交流會,分析示范應用的成績和不足,在此基礎上,加以修改完善,為推廣應用奠定基礎。
(四)推廣應用階段 2013年7月-2013年12月。
根據示范評估內容,將成功經驗,成熟系統和接口標準、規范等內容,在其它示范省份進行推廣應用,逐步開展24個省(區、市)售票聯網系統應用示范,實現覆蓋全國70%以上的省(區、市)二級以上客運站的客運信息共享。
八、工作要求
(一)提高思想認識,加強對示范工程的重視與支持。大力發展道路客運聯網售票是加快轉變道路客運行業發展方式、方便群眾出行、提高客車實載率、增加客運企業市場競爭力、實現節能減排和低 碳運輸、提高行業監管與服務水平的重要舉措。各示范地區省級交通運輸部門要充分認識示范工程的重要意義,對示范工程予以高度重視與大力支持。要建立道路客運售票聯網系統建設示范工程協調機制,健全相關工作制度,加強對本地區示范工作的組織協調和監督指導。要在工程建設前期調研、現有系統改造、跨省域系統整合等方面給予示范單位必要的資金和政策扶持。要建立與示范單位的聯系機制,及時掌握示范工程進展情況,積極協調解決示范工程過程中遇到的問題。遇重大問題,及時向交通運輸部反映,爭取政策支持。
(二)嚴格按照標準和要求選定示范省份。各省級交通運輸部門要按照本方案要求,在自愿申請的基礎上,經交通運輸部組織專家評估,確定是否符合示范工程基礎條件,在此基礎上,擇優選擇示范省份。評估內容包括:納入示范的聯網售票系統概況、參與示范建設的客運站與客運企業概況、現有設施設備條件、示范內容與預期目標、資金投入、管理措施、預期效益等。
(四)引導企業積極探索運輸組織與運營管理新模式。示范省份要按照批準的示范方案,認真組織實施。要加強省內已聯網客運站的管理工作,優化網絡布局,完善省級聯網售票系統構架,建設省級道路客運數據中心,完善場站設施功能,拓展多元化售票方式,積極探索道路客運聯網售票組織與運營管理的新模式。要針對示范中出現的新問題,及時調整優化運營模式,不斷完善組織措施。要定期上報示范工作進展情況和運行分析報告。
(五)加強國家補助資金的監督管理。示范省(直轄市、自治區)交通運輸部門要加強補助資金的使用監管,嚴格各項管理制度。
(六)及時總結示范經驗,不斷完善有關政策。行業主管部門、示范省份、企業和技術支持單位要密切關注示范過程中出現的新情況、新問題,積極研究解決方法。各有關部門要切實加強對示范工作的跟蹤、指導,及時總結經驗,完善配套政策,確保示范工作穩步推進。
九、其他
(一)交通運輸部將根據首批示范工作進展情況,適時研究部署后續示范或示范、推廣工作,加快形成促進售票聯網系統建設長期穩定政策和長效運維機制。
(二)各省(區、市)道路客運管理部門和道路客運企業可參照本方案,結合本地實際情況,組織開展道路客運售票聯網示范工作。
第二篇:道路聯網工程建設實施方案
中共xx鎮委員會
xx鎮人民政府
關于道路建設的實施方案
為貫徹落實科學發展觀,加快新農村道路建設的步伐,在村村通道路建設的基礎上,完善路網改造,推動我鎮經濟社會全面發展,經鎮黨委、政府研究,決定在今冬明春開展以道路建設為主要內容的互聯互通、道路聯網大行動,具體實施方案如下:
一、指導思想
以科學發展觀為指導,以統籌農村經濟社會發展、區域協調發展為總體目標,著力在開展新農村道路建設,落實改善民生,完善公共設施上下功夫,構筑“便捷、暢通、安全、和諧”的農村公路交通體系,優化路網結構,實現公路聯網升級改造,積極穩妥地為新農村和廣大農民群眾提供良好的交通條件,促進我鎮各項事業又好又快發展。
二、目的意義
當前,我鎮經濟社會發展較快,糧食產量連續多年穩產高產,成為全市重要的商品糧生產基地,尤其是幾大農業特色專業基地的建設,帶動了傳統農業的升級改造,形成了規模效益,木材制品產業和水泥產業也迎來發展新機遇。然而,隨著經濟的快速發展,我鎮農村道路建設滯后的問題與經濟的快速發展、人民群眾生產生活對交通的新要求間的矛盾日-1-
益凸顯,加之沿線規模企業及重要特色基地建設的新需求給道路聯網升級改造工作提出了更高的要求,下大力氣改善我鎮農村道路建設的聯網升級改造工作非常重要,事關我鎮各項工作的主線,意義非常重大,勢在必行。
三、建設原則
我鎮道路聯網升級改造工作總的原則是“政府主導、統籌規劃、分步實施、分級負責、村村聯動、全民參與”。今年陽歷年前完成聯網路段的路基改造工作,并鋪墊基礎路面,軋實后鋪撒黃沙,達到連接點路段互聯互通。明年下半年完成二灰碎石及油面的鋪設。在具體工作中,本著以提升老路路基為主,減少新占耕地,最大限度降低成本造價的原則,在聯網中重點向五個地方傾斜:一是向解決人口居住集中、出行難的村道傾斜;二是向有重點建設項目和產業基地比較集中的地方傾斜;三是重點向解決村主干道硬化傾斜;四是向與國、省道主干道線“村村通”路網聯通的地方傾斜;五是向條件成熟、工作到位、群眾積極性高的地方傾斜。通過沿線干群的共同努力,把我鎮村村通道路在縱橫成網的基礎上,修通連接線,提升風景線,達到以鎮政府駐地為中心的道路內環、外環環環相連,以更好地適應我鎮經濟快速發展的道路建設需求。
四、要求及標準
按照《山東省農村公路條例》的要求,遵循充分利用舊
路資源,“因地制宜、量力而行、節約土地、保護環境”的原則,加強道路建設和養護管理的力度,以確保公路建成后的使用質量,做到工程建設質量、投資和效益的統一。
具體標準:
(一)、路基上土標準
1、做好上土前的準備工作,清理路面及邊溝內垃圾。
2、無路溝的挖路溝,實現邊溝、排水溝無淤塞,排水暢通設施完好,路溝深度不低于1米。
3、保證路基堅實穩定,路肩平整,邊坡堅固、平順,坡度符合規定。
4、路基上土后整平,中間起拱不低于15厘米,路溝邊沿必須達到順直。
(二)、路基表面層鋪撒黃沙或碎石,不低于3厘米。
(三)、路基達到驗收標準后,于明年對路面基層鋪設二灰碎石,不低于20厘米。鋪油,瀝青油面不低于3.5厘米。
五、階段劃分
(一)宣傳動員階段(11月9日——11月19日)
各總支、村要通過召開動員會、座談會的形式,深入細致地宣傳、發動,營造濃厚的活動氛圍,組織群眾籌工籌勞,積極參與到道路建設中來,為工程建設順利開展創造良好的條件。
(二)組織實施階段(11月20日——12月26日)
各指揮分部、黨總支、村按照道路建設指揮部和實施方案的要求,迅速行動,采取有效措施,圓滿完成聯網路段上土整平和提升工作。
(三)驗收考評階段(12月26日——12月31日)
鎮道路建設指揮部負責對整個道路建設情況的督促指導和考核驗收工作,黨委、政府決定,對在道路建設活動中表現突出的單位和個人實行以獎代補,嚴格兌現;對行動遲緩、消極應付的單位和個人予以通報批評,并督促其限期整改完成。
六、組織領導 為確保農村公路建設順利實施,鎮政府決定成立道路聯網工程建設指揮部,由黨委副書記、鎮長xx同志任總指揮,黨委副書記xx同志,黨委委員、安監隊長xx同志任副總指揮,八個黨總支以及財政所、國土資源所、規劃建房辦、城管環衛辦、環保所和地材站等相關部門負責人為成員。指揮部下設五個指揮分部,分別是xx路道路建設指揮部、xx道路建設指揮部、xx道路建設指揮部、xx道路建設指揮部和xx道路建設指揮部,具體負責各重點路段、重點區域道路建設情況的督導和調度工作。各黨總支是本轄區道路聯網建設的責任主體,總支書記是本轄區第一責任人,村支部書記為本村第一責任人,一級抓一級,層層抓落實。
按照“人民群眾鋪底子、主管部門鋪面子”的建設機制,由各村負責動員村民籌工籌勞,備砂備料,整修、軋實路基,增設涵洞、擋墻,培路肩,挖邊溝。基層工程完成后,由鎮政府組織人員對所轄路段現場勘察驗收,鋪設瀝青,進行硬化處理。
道路聯網工程是事關我鎮經濟發展的重大民生工程,是黨委、政府堅持以人為本,落實幸福xx戰略的具體體現。各單位、黨總支和村要牢固樹立“權為民所用、情為民所系、利為民所謀”的意識,堅持道路建設為了群眾,道路建設依靠群眾,道路建設成果由群眾共享的原則,認真貫徹落實黨委、政府的要求,把今冬明春道路建設活動作為一項利民、惠民、取信于民的重要工作任務,務必抓實抓好,抓出成效,為我鎮人民的生活幸福、經濟發展做出我們應有的貢獻。
附件一:xx鎮道路建設指揮部成員名單
附件二:xx鎮道路建設規劃項目一覽表
第三篇:鐵路客運售票模擬系統
學生實習報告
課程名稱_ 數據結構與數據處理應用訓練 題目名稱 學生學院 專業班級
學 號
學生姓名
指導教師
2014 年 2 月
日
[單擊此處添加課程設計題目]
XXX
計算分院 計算1103
【摘要】
模擬鐵路客運售票系統,采用鏈表結構儲存數據,有訂票、退票、查詢、修改、讀取文件等功能模塊,整體系統運行為一個無限循環,根據輸入指令進行不同操作,主要知識有結構的定義,鏈表的操作,循環的應用。
【關鍵詞】
鐵路客運售票模擬系統,查詢車次,車票預訂,辦理退票 內容與要求
鐵路客運售票模擬系統 【問題描述】
鐵路客運售票系統的業務活動包括:查詢車次、車票預訂和辦理退票。試設計一個鐵路客運售票模擬系統,使上述業務可以借助計算機來完成。【具體要求】
鐵路客運售票處的計算機系統可以為客戶提供下列各項服務:
1. 查詢車次:根據旅客提供的出發站、到達站、出發日輸出下列信息:
車次號、出發站、到達站、出發時間、到達時間、各類車票的余票額(包括軟臥、硬臥、軟座、硬座、無座)等。還可根據客戶要求,輸出某車次從起點站到終點站的各站點的名稱及出發時間和到達時間。
2.承辦訂票業務:根據客戶提出的要求(日期、車次號、座位類別、訂票數額)查詢該車次該座位類別票額情況,若尚有余額,則為客戶辦理訂票手續,并輸出座位號(座位號信息的輸出可作為選做部分);若無票或余票額少于訂票額,則需要重新詢問客戶要求。若客戶需要,可預約登記排隊等候。
3.承辦退票業務:根據客戶提供的情況(日期、車次號、座位類別、退票數額),為客戶辦理退票手續,然后查詢該車次該座位類別是否有人預約登記,首先詢問排在第一的客戶,若退票數能滿足他的要求,則為他辦理訂票手續,否則依次詢問其他排隊預約的客戶。為簡化問題,可以規定同一個座位只能售出一次票,即不考慮同一個座位分不同路段出售多次。還可規定只能查詢或預訂未來3天之內的車票,即每個車次只需分別保存3個班次的售票情況。【實現提示】
每個車次應包含的信息有:車次號、出發日、起點站名、各中途站名、終點站名、各站點的到達時間與出發時間、各類座位車票定額、各類座位余票額、各座位是否已售出信息(選做內容,可用一張表記錄每個座位是否已售出)、各類座位已訂票的客戶名單(包括姓名、出發站、到達站、訂票額、座位號(選做))和各類座位預約登記的客戶名單(包括姓名、出發站、到達站、所需票額)。這最后兩項顯然可以分別用線性表和隊列實現(每一類別的座位需有各自的線性表和隊列)。為查找方便,已訂票客戶的線性表應按客戶姓名有序,并且,為插入和刪除方便,應以鏈表作存儲結構;由于預約人數無法預料,隊列也應以鏈表作存儲結構。整個系統需匯總各車次的情況記錄在一張線性表上,由于車次基本不變,可采用順序存儲結構,并按車次有序,因為每個車次需保存未來3天的售票情況,可考慮每個車次的每一班次是這張表上的一個記錄,也可以每個車次是一個記錄,里面分別包含3趟班次的售票情況。每個記錄需定義成一個結構類型。【測試數據】
自己設計,報告上要求寫出多批數據測試結果。【實現說明】
每個同學可以根據自己的實際情況對該鐵路客運售票模擬系統的功能進行增減。有能力的同學在完成上述功能的基礎上,可以充分發揮自己的想象力,增加該系統的功能和其它服務項目,如可以按照實用性來完善上述模擬系統,考慮輸出座位號信息、同一個座位允許分不同路段出售多次等;能力較弱的同學則可以簡化上述系統,如不考慮預約登記排隊等候車票、不考慮各種座位類別(即每個車次只有一種座位)、還可以不考慮中途站點(即每個車次只設置起點站與終點站,中間不停)等。總體設計
開始判斷操作指令繼續下一輪指令1.訂票先根據出發站和到達站查詢列車班次,然后訂票2.退票根據姓名,時間,車次,座位類別進行退票3.查詢輸出所有路線信息與乘客信息5.讀取文件讀取存檔文件中的路線信息和乘客信息1.增加路線輸入增加路線信息4.修改路線判斷操作指令2.刪除路線輸入刪除路線日期與車次6.退出退出程序3.修改密碼3 詳細設計
路線信息
typedef struct trainline //路線 { char date[9];//日期
char train_num[8];//車次號 struct station *sta;//途經站
char begin_time[6];//出發時間
char end_time[6];//到達時間
int RW;//軟臥余量
int YW;//硬臥余量
int RZ;//軟座余量
int YZ;//硬座余量
int WZ;//無座余量 struct trainline *next;//下一個節點 }trainline;
停靠站點信息
typedef struct station//停靠站 { char stop[9];//停靠站名
char stop_time;//停靠時間
struct station *next;//下一個節點 }station;
乘客訂票信息
typedef struct customer //乘客 { char name[9];//顧客名
char date[9];//日期
char train_num[9];//車次號 int seat_level;//座位類別
int seat_num;//座位數量
struct customer *next;//下一個節點 }customer;
找到路線鏈表中的末尾節點
status increase_train(trainline *l,char *date,char *train_num,station *stat,char *begin_time,char *end_time,int RW,int YW,int RZ,int YZ,int WZ)//增加路線 將需要插入的路線信息插入到鏈表中指定節點之后
status insert_trainline(trainline **p,char *date,char *train_num,station *stat,char *begin_time,char *end_time,int RW,int YW,int RZ,int YZ,int WZ)//trainline鏈表插入操作
將需要插入的乘客訂票信息插入到鏈表中
status insert_customer(customer **p,char *name,char *date,char *train_num,int seat,int seat_num)//customer鏈表插入操作
刪除某條路線,首先搜索到該路線,然后在鏈表中跳過該節點
status delete_trainline(trainline *h,char *date,char *train_num)//刪除路線
刪除某條乘客訂票記錄,首先搜索到該記錄,然后在鏈表中跳過該節點
status delete_customer(customer *h,char *date,char *train_num)//刪除顧客 修改路線座位余量,首先搜索到該路線,然后刪除對應的座位類別的余量
trainline *modefy_trainline(trainline *l,char *date,char *train_num,int seat_level,int num)//修改trainline鏈表中的數據 退票,首先搜索到該訂票記錄,然后確定退票數量,如果大于訂票數量,則減去退票數量;如果等于退票數量,則刪除此訂票記錄;如果小于,則輸出數量不足,退票失敗。如果退票成功,則路線中相應座位余量增加。
status delete_cus(customer *h,trainline *l,char *name,char *date,char *train_num,int level,int num)//乘客退票
以下兩個函數是為了方便操作所賦予的初始化數據
status creat_trainline(trainline **l)//創建trainline單鏈表 status creat_customer(customer **l)////創建customer單鏈表
訂票查詢,根據提供站點,查找路線,判斷同意路線中是否有這兩個站點,并且順序正確 void book_search(trainline *l,char *begin_place,char *end_place)//訂票查詢函數 訂票,首先找到該車次,然后判斷余量是否夠,如果夠,則訂票;反之,訂票失敗。訂票成功,則增加乘客訂票記錄,兵減少相應車次的座位余量。
status book(trainline *l,char *date,char *train_num,customer *c,char *name,int seat_level,int num)//訂票函數
根據路線鏈表和乘客鏈表逐個輸出信息
status print_trainline(trainline *l)//打印路線信息 status print_customer(customer *l)//打印乘客信息
根據路線鏈表和乘客鏈表,逐個在 C盤 trainline.dat 和 customer.dat 文件中輸出信息 status save_trainline(trainline *l)//保存trainline.dat status save_customer(customer *l)//保存乘客信息 customer.dat
從 C盤 trainline.dat 和 customer.dat 文件中讀取記錄,并用訂票和增加路線函數逐條添加到系統中
status load_trainline(trainline *l)//導入路線信息,必須為5個站 status load_customer(customer *l)//導入乘客信息 程序測試 查詢路線、乘客信息
status print_trainline(trainline *l)//打印路線信息 status print_customer(customer *l)//打印顧客信息 訂票 首先查詢 出發站-終點站
void book_search(trainline *l,char *begin_place,char *end_place)//訂票查詢函數
然后根據查詢結果購買自己需要車次 status book(trainline *l,char *date,char *train_num,customer *c,char *name,int seat_level,int num)//訂票函數
訂票后的查詢結果 退票(可以全部退完,也可以退一部分)status delete_cus(customer *h,trainline *l,char *name,char *date,char *train_num,int level,int num)//乘客退票
退票后查詢結果 修改路線 默認密碼12345678 代碼:pass[9]=“12345678” 增加路線 status increase_train(trainline *l,char *date,char *train_num, station *stat,char *begin_time,char *end_time, int RW,int YW,int RZ,int YZ,int WZ)//增加路線
注意時間“:”為英文字符,輸入中文字符會報錯
增加路線后查詢結果 刪除路線
刪除路線后查詢結果 讀入文件
status load_trainline(trainline *l)//導入路線信息,必須為5個站 status load_customer(customer *l)//導入乘客信息
隱藏密碼函數
status inputpassword(char cc[9])//隱藏密碼為*號的函數
系統存檔 status save_trainline(trainline *l)//保存trainline.dat status save_customer(customer *l)//保存顧客信息 customer.dat
每完成一輪操作 系統自動存檔一次,如果需要繼續上一回的存檔,請打開后直接選5讀入存檔總結
[單擊此處添加正文]
參考文獻
1.徐孝凱.數據結構實用教程.清華大學出版社.2006.9
附錄
Slove.h #define OK 1 #define TRUE 1 #define FALSE 0 #define ERROR 0 #define OVERFLOW-2 #define PR printf #define RUANW 1 #define YINGW 2 #define RUANZ 3 #define YINGZ 4 #define WUZ 5
typedef int status;typedef struct trainline //路線 { char date[9];//日期
char train_num[8];//車次號 //char begin_place[9];//出發地
//char end_place[9];//目的地
struct station *sta;//途經站
char begin_time[6];//出發時間
char end_time[6];//到達時間 // int total;//座位總數 // int left;int RW;//軟臥余量 int YW;//硬臥余量
int RZ;//軟座余量
int YZ;//硬座余量
int WZ;//無座余量
struct trainline *next;//下一個節點 }trainline;
typedef struct station//停靠站 { char stop[9];//停靠站名
char stop_time;//停靠時間
struct station *next;//下一個節點 }station;
typedef struct customer //乘客 { char name[9];//顧客名
char date[9];//日期
char train_num[9];//車次號
int seat_level;//座位類別
int seat_num;//座位數量
struct customer *next;//下一個節點 }customer;
station *init_station()//初始化途經站 { station *l;l=(station*)malloc(sizeof(station));
if(l==NULL)exit(0);
l->next=NULL;return l;}
trainline *init_trainline()//初始化路線鏈表 { trainline *l;
l=(trainline*)malloc(sizeof(trainline));
if(l==NULL)exit(0);
l->next=NULL;return l;}
customer * init_customer()//初始化乘客鏈表 { customer *l;l=(customer*)malloc(sizeof(customer));
if(l==NULL)exit(0);
l->next=NULL;return l;}
status insert_trainline(trainline **p,char *date,char *train_num,//char *begin_place,char *end_place,station *stat,char *begin_time,char *end_time,int RW,int YW,int RZ,int YZ,int WZ)//trainline鏈表插入操作 { trainline *q;q=(trainline*)malloc(sizeof(trainline));
strcpy(q->date , date);strcpy(q->train_num , train_num);//strcpy(q->begin_place , begin_place);//strcpy(q->end_place , end_place);q->sta=stat;strcpy(q->begin_time , begin_time);strcpy(q->end_time , end_time);q->RW =RW;q->YW =YW;q->RZ =RZ;q->YZ =YZ;q->WZ =WZ;q->next=NULL;(*p)->next=q;(*p)=(*p)->next;//PR(“insert %d ,%dis succssed!n”,e,bl);return OK;}
status insert_customer(customer **p,char *name,char *date,char *train_num,int seat,int seat_num)//customer鏈表插入操作 { customer *q;q=(customer*)malloc(sizeof(customer));
/* { PR(“內存分配失敗n”);return OVERFLOW;}*/ strcpy(q->name , name);strcpy(q->date , date);strcpy(q->train_num , train_num);q->seat_level =seat;q->seat_num =seat_num;q->next=NULL;(*p)->next=q;(*p)=(*p)->next;//PR(“insert %d ,%dis succssed!n”,e,bl);return OK;}
status delete_trainline(trainline *h,char *date,char *train_num)//刪除路線 { trainline *p,*pr;pr=h;p=pr->next;while(p!=NULL){
if(strcmp(date,p->date)==0 && strcmp(train_num,p->train_num)==0)
{
pr->next =p->next;
PR(“刪除 %s 車次n”,p->date);
return OK;
}
pr=pr->next;
p=pr->next;} PR(“無此車次,無法刪除!n”);return ERROR;}
status delete_customer(customer *h,char *date,char *train_num)//刪除顧客 { customer *p,*pr;pr=h;p=pr->next;while(p!=NULL){
if(strcmp(date,p->date)==0 && strcmp(train_num,p->train_num)==0)
{
pr->next =p->next;
}
pr=pr->next;
p=pr->next;} return OK;}
trainline *modefy_trainline(trainline *l,char *date,char *train_num,int seat_level,int num)//修改trainline鏈表中的數據 { trainline *p;p=l->next;for(;p!=NULL;p=p->next){
if(strcmp(date,p->date)==0 && strcmp(train_num,p->train_num)==0)
{
if(seat_level == RUANW)p->RW += num;
else if(seat_level == YINGW)p->YW += num;
else if(seat_level == RUANZ)p->RZ += num;
else if(seat_level == YINGZ)p->YZ += num;
else if(seat_level == WUZ)p->WZ += num;
// PR(“modefy %sn”,p->line_num);
return l;
} } PR(“沒有這個路線,無法完成修改任務!n”);return 0;}
status delete_cus(customer *h,trainline *l,char *name,char *date,char *train_num,int level,int num)//乘客退票 { customer *p,*pr;int seat_num;// qr=h;pr=h;p=pr->next;// PR(“開始刪除n”);while(p!=NULL){
if(strcmp(name,p->name)==0 && strcmp(date,p->date strcmp(train_num,p->train_num)==0 && level==p->seat_level)
{
seat_num=p->seat_num;
l=modefy_trainline(l,date,train_num,level,num);
if(num == seat_num){
pr->next =p->next;
PR(“乘客 %s 退票成功!n”,p->name);
}
else if(num < seat_num){
p->seat_num-= num;
PR(“乘客 %s 退票成功!n”,p->name);
}
else
PR(“數量不足,退票失敗!n”,p->name);
return OK;
}
pr=pr->next;
p=pr->next;} PR(“無此顧客,無法退票!n”);return ERROR;}
status creat_trainline(trainline **l)//創建trainline單鏈表 { trainline *p=*l;int i=0;char *date[3]={“20140224”,“20140226”,“20140225”};char *train_num[3]={“T01”,“D02”,“G03”};char place[3][5][9]={“北京”,“杭州”,“上海”,“南昌”,“廣州”,“廣州”,“上海”,“金山”,“北京”,“敦煌”,“嘉興”,“北京”,“上海”,“山西”,“深圳”};station *stat[3];for(i=0;i<3;i++){
stat[i]=init_station();
for(int j=0;j<5;j++){
station *st;
st=(station*)malloc(sizeof(station));
strcpy(st->stop,place[i][j]);
//可以在這里加停靠時間
st->next=stat[i];
stat[i]=st;)==0 &&
}
//stat[i]->next=NULL;} char *begin_time[3]={“12:02”,“22:42”,“05:09”};char *end_time[3]={“17:15”,“06:07”,“10:54”};int RW[3]={100,100,100};int YW[3]={100,100,100};int RZ[3]={100,100,100};int YZ[3]={100,100,100};int WZ[3]={100,100,100};for(i=0;i<3;i++)
insert_trainline(&p,date[i],train_num[i],stat[i],//begin_place[i],end_place[i],begin_time[i],end_time[i],RW[i],YW[i],RZ[i],YZ[i],WZ[i]);
return OK;}
status creat_customer(customer **l)////創建customer單鏈表 { customer *p=*l;int i=0;char *name[3]={“yangj”,“yunhl”,“fangs”};char *date[3]={“20140224”,“20140225”,“20140226”};char *train_num[3]={“T01”,“G03”,“D02”};int seat_level[3]={RUANW,YINGZ,WUZ};int seat_num[3]={2,3,4};for(i=0;i<3;i++)
insert_customer(&p,name[i],date[i],train_num[i],seat_level[i],seat_num[i]);
return OK;}
status increase_train(trainline *l,char *date,char *train_num,station *stat,char *begin_time,char *end_time,int RW,int YW,int RZ,int YZ,int WZ)//增加路線 { trainline *p=l->next;for(;p->next!=NULL;p=p->next){} insert_trainline(&p,date,train_num,stat,//begin_place,end_place,begin_time,end_time,RW,YW,RZ,YZ,WZ);PR(“增加車次 %s %s 成功!n”,date,train_num);return OK;}
status book(trainline *l,char *date,char *train_num,customer *c,char *name,int seat_level,int num)//訂票函數 { trainline *p=l;customer *q=c->next;p=l->next;for(;q->next!=NULL;q=q->next){} // PR(“%sn”,q->name);for(;p!=NULL;p=p->next){
if(strcmp(date,p->date)==0)
{
if(seat_level == RUANW && p->RW >0)
{
PR(“恭喜您!訂票成功!n”);
insert_customer(&q,name,date,train_num,seat_level,num);
p->RW-=num;
return OK;
}
else if(seat_level == YINGW && p->YW >0)
{
PR(“恭喜您!訂票成功!n”);
insert_customer(&q,name,date,train_num,seat_level,num);
p->YW-=num;
return OK;
}
else if(seat_level == RUANZ && p->RZ >0)
{
PR(“恭喜您!訂票成功!n”);
insert_customer(&q,name,date,train_num,seat_level,num);
p->RZ-=num;
return OK;
}
else if(seat_level == YINGZ && p->YZ >0)
{
PR(“恭喜您!訂票成功!n”);
insert_customer(&q,name,date,train_num,seat_level,num);
p->YZ-=num;
return OK;
}
else if(seat_level == WUZ && p->WZ >0)
{
PR(“恭喜您!訂票成功!n”);
insert_customer(&q,name,date,train_num,seat_level,num);
p->WZ-=num;
return OK;
}
else PR(“對不起,余量不足!n”);
return 0;
} } PR(“對不起,沒有這個路線號!n”);return ERROR;}
void book_search(trainline *l,char *begin_place,char *end_place)//訂票查詢函數 { trainline *p=l;//customer *q=c->next;p=l->next;//for(;q->next!=NULL;q=q->next){} // PR(“%sn”,q->name);for(;p!=NULL;p=p->next){
station *st=p->sta;
int stop_begin=0,stop_end=0,flag=1;
for(;st->next!=NULL;st=st->next){
if(strcmp(begin_place,st->stop)==0)
stop_begin=flag++;
if(strcmp(end_place,st->stop)==0)
stop_end=flag++;
if(stop_begin==1 && stop_end==2){
PR(“%15s%5s%12s%c%5s%10d%5d%5d%5d%5dn”,p->date ,p->train_num ,//p->begin_place ,'-',p->end_place ,p->begin_time ,'-',p->end_time ,p->RW ,p->YW,p->RZ ,p->YZ ,p->WZ);
station *st=p->sta;
PR(“途經: ”);
for(;st->next!=NULL;st=st->next){
PR(“%s ”,st->stop);
}
PR(“n”);
break;
}
} } }
status print_trainline(trainline *l)//打印路線信息 { trainline *p=l->next;for(;p!=NULL;p=p->next){
PR(“%15s%5s%12s%c%5s%10d%5d%5d%5d%5dn”,p->date ,p->train_num ,//p->begin_place ,'-',p->end_place ,p->begin_time ,'-',p->end_time ,p->RW ,p->YW,p->RZ ,p->YZ ,p->WZ);
station *st=p->sta;
PR(“途經: ”);
for(;st->next!=NULL;st=st->next){
PR(“%s ”,st->stop);
}
PR(“n”);}
return OK;}
status print_customer(customer *l)//打印顧客信息 { customer *p=l->next;for(;p!=NULL;p=p->next)
PR(“%5s %9s %5s %6d %6dn”,p->name ,p->date ,p->train_num ,p->seat_level ,p->seat_num);
return OK;}
status save_trainline(trainline *l)//保存trainline.dat { FILE *fp_trainline;trainline *p=l->next;char filename[]=“c: rainline.dat”;if((fp_trainline=fopen(filename,“wb”))==NULL){
printf(“can not open file to write:%sn”,filename);
return ERROR;} for(;p!=NULL;p=p->next){
fprintf(fp_trainline,“%s,%s,%s,%s,%d,%d,%d,%d,%d,”,p->date ,p->train_num ,//p->begin_place ,p->end_place ,p->begin_time ,p->end_time ,p->RW ,p->YW ,p->RZ ,p->YZ ,p->WZ);
station *st=p->sta;
for(;st->next!=NULL;st=st->next){
fprintf(fp_trainline,“%s,”,st->stop);
}
fprintf(fp_trainline,“#”);} fclose(fp_trainline);return OK;}
status save_customer(customer *l)//保存顧客信息 customer.dat { FILE *fp_customer;customer *p=l->next;char filename[]=“c:customer.dat”;if((fp_customer=fopen(filename,“wb”))==NULL){
printf(“can not open file to write:%sn”,filename);
return ERROR;} for(;p!=NULL;p=p->next){
// PR(“%s,%s,%dn”,p->name ,p->line_num ,p->seat_num);
fprintf(fp_customer,“%s,%s,%s,%d,%d,#”,p->name ,p->date ,p->train_num ,p->seat_level ,p->seat_num);} fclose(fp_customer);return OK;}
int changStrInt(char *ch)//把字符串轉化為整型 { int a=1,b=0,c=0,i;for(i=strlen(ch)-1;i>=0;i--){
if(ch[i]<58&&ch[i]>47)
{
b=a*(ch[i]-48);
a=a*10;
c=c+b;
}
else
{
PR(“%c 不合法,無法將此字符串轉化為整形!n”,ch[i]);
return 0;
}
// printf(“the c is %dn”,c);} return c;}
status load_trainline(trainline *l)//導入路線信息,必須為5個站 { FILE *fp_trainline;int flag=0,i=0;char ch;char date[9];//日期
char train_num[9];//車次號
char begin_time[6],end_time[6];//時間
char RW_str[5],YW_str[5],RZ_str[5],YZ_str[5],WZ_str[5];//座位余量字符串
int RW,YW,RZ,YZ,WZ;//座位余量 char place[9];//站名
station *sta=init_station();//途經站
// trainline *p=l;char filename[]=“c: rainline.dat”;if((fp_trainline=fopen(filename,“rb”))==NULL){
printf(“can not open file to load:%sn”,filename);
return ERROR;} while(!feof(fp_trainline)){
ch=fgetc(fp_trainline);
if(ch!='#')
{
if(flag==0&&ch!=','){ date[i]=ch;i++;} else if(flag==1&&ch!=','){ train_num[i]=ch;i++;} else if(flag==2&&ch!=','){ begin_time[i]=ch;i++;} else if(flag==3&&ch!=','){ end_time[i]=ch;i++;} else if(flag==4&&ch!=','){ RW_str[i]=ch;i++;} else if(flag==5&&ch!=','){ YW_str[i]=ch;i++;} else if(flag==6&&ch!=','){ RZ_str[i]=ch;i++;} else if(flag==7&&ch!=','){ YZ_str[i]=ch;i++;} else if(flag==8&&ch!=','){ WZ_str[i]=ch;i++;
} else if(flag>=9&&flag<=13&&ch!=','){
place[i]=ch;
i++;} else if(ch==','){
if(flag==0)date[i]=0;
else if(flag==1)train_num[i]=0;
else if(flag==2)begin_time[i]=0;
else if(flag==3)end_time[i]=0;
else if(flag==4)RW_str[i]=0;
else if(flag==5)YW_str[i]=0;
else if(flag==6)RZ_str[i]=0;
else if(flag==7)YZ_str[i]=0;
else if(flag==8)WZ_str[i]=0;
else if(flag>=9&&flag<=13){
place[i]=0;
station *st;
st=(station*)malloc(sizeof(station));
strcpy(st->stop,place);
//可以在這里加停靠時間
st->next=sta;
sta=st;
}
flag++;
i=0;} else {
PR(“錯誤n”);
return ERROR;} } else { flag=0;i=0;RW=changStrInt(RW_str);YW=changStrInt(YW_str);RZ=changStrInt(RZ_str);YZ=changStrInt(YZ_str);WZ=changStrInt(WZ_str);
PR(“%15s%5s%6s%c%5s%5d%5d%5d%5d%5dn”,date ,train_num ,begin_time ,'-',end_time ,RW ,YW,RZ ,YZ ,WZ);
PR(“途經: ”);
station *st=sta;
for(;st->next!=NULL;st=st->next){
PR(“%s ”,st->stop);
}
PR(“n”);
//increase_train(l,date,train_num,sta,//
begin_time,end_time,RW,YW,RZ,YZ,WZ);
insert_trainline(&l,date,train_num,sta,begin_time,end_time,RW,YW,RZ,YZ,WZ);
station *ss=init_station();
sta=ss;
} } fclose(fp_trainline);return OK;}
status load_customer(customer *l)//導入乘客信息 { FILE *fp_customer;int flag=0,i=0;char ch;char name[9];char date[9];//日期
char train_num[9];//車次號
char seat_level_str[5],num_str[5];int seat_level,num;//座位類別,數量 // customer *p=*l;char filename[50]=“c:customer.dat”;if((fp_customer=fopen(filename,“rb”))==NULL){
printf(“can not open file to load:%sn”,filename);
return ERROR;}
while(!feof(fp_customer)){ ch=fgetc(fp_customer);//printf(“%cn”,ch);if(ch!='#'){
if(flag==0&&ch!=',')
{
name[i]=ch;
i++;
}
else if(flag==1&&ch!=',')
{
date[i]=ch;
i++;
}
else if(flag==2&&ch!=',')
{
train_num[i]=ch;
i++;
}
else if(flag==3&&ch!=',')
{
seat_level_str[i]=ch;
i++;
}
else if(flag==4&&ch!=',')
{
num_str[i]=ch;
i++;
}
else if(ch==',')
{
if(flag==0)name[i]=0;
else if(flag==1)date[i]=0;
else if(flag==2)train_num[i]=0;
else if(flag==3)seat_level_str[i]=0;
else if(flag==4)num_str[i]=0;
flag++;
i=0;
}
else
{
PR(“錯誤n”);
return ERROR;
}
}
else
{
flag=0;
seat_level=changStrInt(seat_level_str);
num=changStrInt(num_str);
PR(“%10s %10s %5d %5dn”,name ,date ,train_num ,seat_level ,num);
insert_customer(&l,name,date,train_num,seat_level,num);
// p=p->next;
} } fclose(fp_customer);return OK;}
status inputpassword(char cc[9])//隱藏密碼為*號的函數 { char c;int i;for(i=0;c=getch();i++){
if(c==13)break;/*13='n'*/
else
{
cc[i]=c;
printf(“*”);
} } cc[i]=' 主站蜘蛛池模板: 电影 国产 偷窥 亚洲 欧美| 国产成人女人毛片视频在线| 最新亚洲人成网站在线影院| 久久理伦片琪琪电影院| 高潮喷水的毛片| 免费精品国偷自产在线在线| 夜夜夜躁高潮天天爽| 2022色婷婷综合久久久| 国产人妻人伦精品欧美| 国内精品久久久久久久久齐齐| 国产精品99久久99久久久不卡| 67194成在线观看免费| 国产草莓精品国产av片国产| 无码午夜精品一区二区三区视频| 东方aⅴ免费观看久久av| 亚洲一区二区三区影院| 亚洲日韩中文字幕在线不卡最新| 黑人巨茎大战俄罗斯美女| 无码A片| 亚洲高清国产拍精品网络战| 成年av动漫网站久久| 国产美女精品一区二区三区| 大肉大捧一进一出好爽视频mba| 国产手机在线αⅴ片无码观看| 人人澡超碰碰97碰碰碰| 精品亚洲aⅴ在线观看| 不卡无在线一区二区三区观| 久久r999热精品国产首页| 性色av无码免费一区二区三区| 无人区码一码二码w358cc| 亚洲爆乳少妇无码激情| 色偷偷中文字幕综合久久| 国产后入清纯学生妹| 国产午夜精品一区二区三区| 性色欲网站人妻丰满中文久久不卡| 久久精品国产一区二区三区肥胖| 国产麻豆乱子伦午夜视频观看| 亚洲最大av网站在线观看| 熟女无套高潮内谢吼叫免费| 国产 高清 无码 在线播放| 狂猛欧美激情性xxxx大豆行情|