數據結構課設_第1頁
數據結構課設_第2頁
數據結構課設_第3頁
數據結構課設_第4頁
數據結構課設_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、30沈沈 陽陽 工工 程程 學學 院院課 程 設 計設計題目:設計題目: 火車票售票管理火車票售票管理系系 別別 信息學院信息學院 班級班級 物聯網物聯網 131131 學生姓名學生姓名 向泉流、石雨、陳思思向泉流、石雨、陳思思 學號學號 2525、0606、1414 指導教師指導教師 崔妍崔妍 、代欽、代欽 職稱職稱 講師、講師講師、講師 起止日期:起止日期:20142014 年年 6 6 月月 2222 日起日起至至 20142014 年年 7 7 月月 4 4 日止日止沈 陽 工 程 學 院課程設計任務書課程設計題目:課程設計題目:火車售票系統(tǒng)火車售票系統(tǒng) 系系 別別 信息學院信息學院

2、班級班級 數媒數媒 131131 學生姓名學生姓名 徐培偉徐培偉 金曲文金曲文 學號學號 2929 3434 指導教師指導教師 姜柳姜柳 職稱職稱 講師、講師講師、講師 課程設計進行地點:課程設計進行地點: 實訓實訓 F608F608 任任 務務 下下 達達 時時 間:間: 20152015 年年 1 1 月月 1717 日日起止日期:起止日期:20152015 年年 1 1 月月 1919 日起日起至至 20152015 年年 1 1 月月 2323 日止日止教教研研室室主主任任 張欣張欣 2 20 01 15 5 年年 1 1 月月 1 17 7 日日批批準準30一、課程設計的原始資料及依

3、據在現代社會,火車以其安全,舒適以及其服務的周到使愈來愈多的人選擇了火車為長距離出行的交通工具,這就使火車公司以及車站的工作量愈來愈大,若仍然使用文件或者人工來管理公司、車站、火車、列班、路線、客戶以及售票的信息,那無疑在效率上會大打折扣。 21 世紀的今天,信息社會占著主流地位,計算機在各行各業(yè)中的運用已經得到普及,自動化、信息化的管理越來越廣泛應用于各個領域。利用計算機來儲存和管理公司、車站、火車、列班、車線、客戶以及售票的信息成為了首選,在這種情況下,火車訂票系統(tǒng)就顯得非常重要了。兩個客戶名單可分別由線性表和隊列實現。為查找方便,已訂票客戶的線性表應按客戶姓名有序,并且,為插入和刪除方便

4、,應以鏈表作存儲結構。由于預約人數無法預計,隊列也應以鏈表作存儲結構。整個系統(tǒng)需匯總各條路線的情況登錄在一張線性表上,由于路線基本不變,可采用順序存儲結構,并按車次有序或按終點站名有序。每條路線是這張表上的一個記錄,包含上述 8 個域,其中乘員名單域為指向乘員名單鏈表的頭指針,等候替補的客戶名單域為分別指向隊頭和隊尾的指針。隊列(Queue)是只允許在一端進行插入,而在另一端進行刪除的運算受限的線性表。用隊列來進行客戶信息的存儲。編輯用戶使用菜單,內容包括:輸入列班信息,保存列班信息,讀取列班信息,查找列班信息,刪除列班信息,訂票信息,退票信息以及修改信息。二、課程設計主要內容及要求1. 列車

5、基本信息管理:輸入所有列班信息。每條路線所涉及的信息有:終點站名、車次號、車廂號、開車周日(星期幾) 、乘員定額、余票量、已訂票的客戶名單(包括姓名、訂票量、座位等級 1,2 或 3)以及等候替補的客戶名單(包括姓名、所需的票量) 。2列車基本信息查詢:按車次號查找,按抵達站查找,按路線查找三種查找方式進行查找。3. 訂票管理:客戶對想要購買的票進行訂票。3. 退票管理:將不想要的票進行退票。三、對課程設計說明書撰寫內容、格式、字數的要求1課程設計說明書是體現和總結課程設計成果的載體,主要內容包括:設計題目、設計目的、設備器材、設計原理及內容、設計步驟、遇到的問題及解決方法、設計總結、設計小組

6、評語、參考文獻等。一般不應少于 3000 字。2在適當位置配合相應的實驗原理圖、數據通路圖、微程序流程圖、實驗接線圖、微指令代碼表等圖表進行說明。應做到文理通順,內容正確完整,書寫工整,裝訂整齊。3設計總結部分主要寫本人完成工作簡介以及自己的設計體會,包括通過課程設計學到了什么,哪里遇到了困難,解決的辦法以及今后的目標。設計小組評語處注明設計組編號、設計組組長、設計組成員,并由設計組組長給出評語。4課程設計說明書手寫或打印均可。手寫要用學校統(tǒng)一的課程設計用紙,用黑或藍黑墨水工整書寫;打印時采用 A4 紙,頁邊距均為 20mm,正文采用宋體小四號字,行間距 18磅。文中大標題采用黑體小三號字,一

7、級節(jié)標題采用黑體四號字,二級節(jié)標題采用黑體小四號字,表題與圖題采用宋體五號字。5課程設計說明書裝訂順序為:封面、任務書、成績評定表、目錄、正文、參考文獻。四、設計完成后應提交成果的種類、數量、質量等方面的要求1完成“任務書”中指定的操作功能,運行穩(wěn)定。2課程設計說明書。五、時間進度安排順序階段日期計 劃 完 成 內 容備注1第 1 天(12 月 27 日)閱讀資料2第 23 天(12 月 28 日12 月 29 日)系統(tǒng)分析設計3第 47 天(12 月 30 日1 月 4 日)程序編制、調試及運行4第 89 天(1 月 5 日1 月 6 日)成績評定5第 10 天(1 月 7 日)撰寫課程設計

8、說明書六、主要參考資料(文獻)1嚴蔚敏 吳偉民.數據結構(C 語言版). 北京:清華大學出版社.20072譚浩強.C 程序設計.北京:清華大學出版社.1999.123滕國文.數據結構課程設計.北京:清華大學出版社.2010.094蘇仕華 等編著. 數據結構課程設計. 北京:機械工業(yè)出版社.2005.055李春葆.數據結構(C 語言版)習題與解析.北京:清華大學出版社.2002.04沈沈 陽陽 工工 程程 學學 院院程序設計基礎課程設計成績評定表程序設計基礎課程設計成績評定表系(部):系(部): 信息學院信息學院 班級:班級: 數媒數媒131131 學生姓名:學生姓名: 徐培偉徐培偉 指指 導導

9、 教教 師師 評評 審審 意意 見見評價內容具 體 要 求權重評 分加權分調研論證能獨立查閱文獻,收集資料;能制定課程設計方案和日程安排。工作能力態(tài)度工作態(tài)度認真,遵守紀律,出勤情況是否良好,能夠獨立完成設計工作, 工作量按期圓滿完成規(guī)定的設計任務,工作量飽滿,難度適宜。說明書的質量說明書立論正確,論述充分,結論嚴謹合理,文字通順,技術用語準確,符號統(tǒng)一,編號齊全,圖表完備,書寫工整規(guī)范。指導教師評審成績指導教師評審成績(加權分合計乘以(加權分合計乘以 8 8) 分分加權分合計加權分合計指指 導導 教教 師師 簽簽 名:名: 年年 月月 日日評評 閱閱 教教 師師 評評 審審 意意 見見評價內

10、容具 體 要 求權重評 分加權分查閱文獻查閱文獻有一定廣泛性;有綜合歸納資料的能力工作量工作量飽滿,難度適中。說明書的質量說明書立論正確,論述充分,結論嚴謹合理,文字通順,技術用語準確,符號統(tǒng)一,編號齊全,圖表完備,書寫工整規(guī)范。評閱教師評審成績評閱教師評審成績(加權分合計乘以(加權分合計乘以 4 4)分分加權分合計加權分合計評評 閱閱 教教 師師 簽簽 名:名: 年年 月月 日日答答 辯辯 小小 組組 評評 審審 意意 見見評價內容具 體 要 求權重評 分加權分學生匯報匯報準備充分,思路清晰;語言表達準確,概念清楚,論點正確,有層次,有重點,基本上反映了所完成任務的全部內容;時間符合要求。答

11、 辯思路清晰;回答問題有理論依據,基本概念清楚;主要問題回答準確,深入,有說服力。答辯小組評審成績答辯小組評審成績(加權分合計乘以(加權分合計乘以 8 8)分分加權分合計加權分合計答辯小組教師簽名:答辯小組教師簽名: 年年 月月 日日課課 程程 設設 計計 總總 評評 成成 績績分分 沈陽工程學院課程設計報告 摘要I沈沈 陽陽 工工 程程 學學 院院程序設計基礎課程設計成績評定表程序設計基礎課程設計成績評定表系(部):系(部): 信息學院信息學院 班級:班級: 數媒數媒131131 姓名:姓名: 金曲文金曲文 指指 導導 教教 師師 評評 審審 意意 見見評價內容具 體 要 求權重評 分加權分

12、調研論證能獨立查閱文獻,收集資料;能制定課程設計方案和日程安排。工作能力態(tài)度工作態(tài)度認真,遵守紀律,出勤情況是否良好,能夠獨立完成設計工作, 工作量按期圓滿完成規(guī)定的設計任務,工作量飽滿,難度適宜。 說明書的質量說明書立論正確,論述充分,結論嚴謹合理,文字通順,技術用語準確,符號統(tǒng)一,編號齊全,圖表完備,書寫工整規(guī)范。指導教師評審成績指導教師評審成績(加權分合計乘以(加權分合計乘以 8 8) 分分加權分合計加權分合計指指 導導 教教 師師 簽簽 名:名: 年年 月月 日日評評 閱閱 教教 師師 評評 審審 意意 見見評價內容具 體 要 求權重評 分加權分查閱文獻查閱文獻有一定廣泛性;有綜合歸納

13、資料的能力工作量工作量飽滿,難度適中。說明書的質量說明書立論正確,論述充分,結論嚴謹合理,文字通順,技術用語準確,符號統(tǒng)一,編號齊全,圖表完備,書寫工整規(guī)范。評閱教師評審成績評閱教師評審成績(加權分合計乘以(加權分合計乘以 4 4)分分加權分合計加權分合計評評 閱閱 教教 師師 簽簽 名:名: 年年 月月 日日答答 辯辯 小小 組組 評評 審審 意意 見見評價內容具 體 要 求權重評 分加權分學生匯報匯報準備充分,思路清晰;語言表達準確,概念清楚,論點正確,有層次,有重點,基本上反映了所完成任務的全部內容;時間符合要求。答 辯思路清晰;回答問題有理論依據,基本概念清楚;主要問題回答準確,深入,

14、有說服力。答辯小組評審成績答辯小組評審成績(加權分合計乘以(加權分合計乘以 8 8)分分加權分合計加權分合計答辯小組教師簽名:答辯小組教師簽名: 年年 月月 日日課課 程程 設設 計計 總總 評評 成成 績績分分 沈陽工程學院課程設計報告 摘要II摘 要時代在進步,科技在發(fā)展,這改變了整個世界和人類的生活方式。同時,這也要求我們新世紀的大學生掌握現代科學技術知識,調整自己的知識結構和能力結構,以適應社會發(fā)展的要求,跟上時代的腳步。新世紀需要具有豐富的現代科學知識,能夠獨立解決面臨的任務,充滿活力,又有創(chuàng)新意識的新型人才。隨著各個領域的突飛猛進,計算機也有它卓越的進步。數據結構不僅為計算機專業(yè)工

15、作者所使用,而且為廣大計算機應用人員所喜愛和使用。數據結構是國際上廣泛流行的計算機高級語言。它適合作為系統(tǒng)描述語言,既可以用來編寫系統(tǒng)軟件,也可以用來編寫應用軟件。許多高等學校,不僅在計算機專業(yè)開設數據結構課程,而且在非計算機專業(yè)也開設了數據結構課程。學習數據結構已經成為廣大計算機應用人員和廣大青年學生的迫切要求。本次數據結構課程設計的題目是火車售票系統(tǒng)。對于火車售票系統(tǒng),兩個客戶名單可分別有線性表和隊列實現。為查找方便,以訂票客戶已訂票客戶的線性表應按客戶姓名有序,并且,為插入和刪除方便,應以鏈表作存儲結構。由于預約人數無法預計,隊列也應以鏈表作存儲結構。整個系統(tǒng)需匯總各條路線的情況登錄在一

16、張線性表上,由于路線基本不變,可采用順序存儲結構,并按車次有序或按終點站名有序。每條路線是這張表上的一個記錄,包含上述 8 個域,其中乘員名單域為指向乘員名單鏈表的頭指針,等候替補的客戶名單域為分別指向隊頭和隊尾的指針。編輯用戶使用菜單,內容包括:輸入列班信息,保存列班信息,讀取列班信息,查找列班信息,刪除列班信息,訂票信息,退票信息以及修改信息。在為期兩周的數據結構課程設計學習中,先要學習數據結構課程的目的掌握數據結構存儲的方法,學習會用計算機語言編寫程序,以實現所需要處理的任務。要正確處理算法與語法的關系,算法結構存儲是程序的核心、是靈魂,語法是外殼、是工具。不應把學習重點放在語法規(guī)則上,

17、語法是重要的,不掌握語法規(guī)則就無法編寫出正確的程序。一定要把重點放在解題的思路上和運用何種存儲的方法,通過思考和大量的閱讀,來構造一個完整的程序。數據結構存儲的設計直接關系到程序的好壞。最后,感謝老師在我們程序設計的過程中辛勤的指導和不倦的教誨。關鍵詞關鍵詞 線性表,數組,隊列,設計 沈陽工程學院課程設計報告 目 錄 - - 1 - -目 錄第一章第一章 問題分析問題分析.21.1 引言.21.2 背景.21.3 分析.2第二章第二章 運行原理和環(huán)境運行原理和環(huán)境.42.1 數據理論.42.2 運行環(huán)境.5第三章第三章 系統(tǒng)分析與設計系統(tǒng)分析與設計.93.1 火車票系統(tǒng)問題分析.93.2 火車

18、票系統(tǒng)功能設計.10第四章第四章 系統(tǒng)功能實現系統(tǒng)功能實現.164.1 火車售票系統(tǒng)算法思想.164.2 系統(tǒng)程序代碼.16總總 結結.27致致 謝謝.28參考文獻參考文獻.29 沈陽工程學院課程設計報告 第一章 問題分析 - 2 -第一章 問題分析1.1 引言數據結構的教學要求是:學會分析研究計算機加工的數據結構的特征,以便為應用涉及的數據選擇適當的邏輯結構、存儲結構及其相應的算法,并初步掌握算法的時間分析和空間分析的技術。另一方面,本課程的學習過程也是復雜程序設計的訓練過程,要求學生編寫的程序結構清楚和正確易讀,符合軟件工程的規(guī)范。在學習中,先要學習程序設計課程的目的掌握設計程序的思路,學

19、習會用計算機語言編寫程序,以實現所需要處理的任務。要正確處理算法與語法的關系,算法是程序的核心、是靈魂,語法是外殼、是工具。不應把學習重點放在語法規(guī)則上,語法是重要的,不掌握語法規(guī)則就無法編寫出正確的程序。一定要把重點放在解題的思路上,通過思考和大量的閱讀,來構造一個完整的程序。請記?。褐匾氖菍W會編程,而不是背語法。程序設計是為了鍛煉我們的實際動手能力,在一定程度上,又增加了我們的各方面的知識,特別是一些聯系實際的課程設計,它的完成需要自己平時積累的大量知識、并且需要勤于思考的能力和無限的激情。本次課程設計主要是學習程序設計的方法,進行程序設計的基本訓練,大多數的學生應該把精力放在最基本,最

20、常用的內容上,學好基本功。通過本次課程設計,相信我們一定能加強對數據結構這門課程的學習,尤其在動手實踐上會有很大的進步。1.2 背景在人們日常的火車訂票和退票中,有大量的數據和信息需要存儲和處理,通常紙質的檔案不容易保存和使用,在查詢,訂票,退票上有很大的困難,浪費大量的時間和人力也不一定能夠取得很好的效果,為了方便人們訂票,開發(fā)一個火車售票系統(tǒng)迫在眉睫。1.3 分析隊列來進行客戶信息的存儲。編輯用戶使用菜單,內容包括:列車基本信息管理,列車基本信息查詢,訂票管理,退票管理?;疖囀燮毕到y(tǒng)分為四個大模塊,分別為列車基本信息管理,列車基本信息查詢,訂票管理,退票管理。 列車基本信息管理輸入火車的車

21、次號。在循環(huán)中,如果火車的車次號不存在的話,創(chuàng)建新結點并依次輸入火車的信息,該車次號的信息輸入完畢,保存到文件中,結束輸入;如果火車的車次號存在的話,重新輸入,重復上述過程,單鏈表創(chuàng)建完畢。沈陽工程學院課程設計報告 第一章 問題分析 - 3 - 列車基本信息查詢列車基本信息查詢是在已有的火車訂票系統(tǒng)中按地點、按車次、按車線查找到火車信息,并將其顯示在屏幕上。通過移動指針找到與輸入相同的地點、車次、車線,并將該地點、車次、車線所對應的火車的信息輸出。 訂票管理根據查詢功能查找出所要訂購的車票信息,輸入所要訂購的車票信息。先判斷鏈表是否為空,若為空,顯示“沒有任何記錄” ;若不為空,輸入車票的數量

22、,看有沒有火車票,若沒有火車票,輸出沒有火車票,否則對該結點進行訂票操作。 退票管理根據查詢功能查找出所要退票的車票信息,先判斷鏈表是否為空,若為空,返回主菜單;若不為空,看是否過期,若過期,輸出退票失敗,否則對該結點進行退票操作。主函數是程序的入口,采用模塊化設計。通過一定的入口可以進行列車基本信息管理、列車基本信息查詢、訂票管理、退票管理。沈陽工程學院課程設計報告 第二章 運行原理和環(huán)境- 4 -第二章 運行原理和環(huán)境2.1 數據理論鏈表是一種動態(tài)存儲結構,所占用的存儲空間在程序的執(zhí)行過程中得到,當線性表需要增加一個結點時,要為該結點向系統(tǒng)申請一個存儲空間。當線性表刪除一個結點時,要將已刪

23、除的結點的存儲空間釋放,歸還給系統(tǒng)。每個存儲結點不僅包含有所存儲元素本身的信息(稱之為數據域) ,而且包含所有元素之間邏輯關系的信息,即前驅結點包含有后繼結點的地址信息(這稱為指針域) ,這樣可以通過前驅結點的指針域方便地找到后繼結點的位置,提高數據查找速度。隊列是一種先進后出的線性表,它只允許在表的一端進行插入,而在另一端進行刪除元素。以隊列的鏈式表示和實現為例。一個鏈隊列需要兩個分別指向隊頭和隊尾的指針才能唯一確定。首先給鏈隊列添加一個頭結點,并且令頭指針指向頭結點。鏈隊列的操作即為單鏈表的插入和刪除的特殊情況,只是尚需修改尾指針或頭指針。一般情況下,刪除隊列頭元素時僅需修改頭結點中的指針

24、,但當隊列中最后一個元素被刪除后,隊列尾指針也丟失了,因此,需要對隊尾指針重新賦值(指向頭結點) ?;疖囀燮毕到y(tǒng)應用數據結構的知識有:鏈式線性表存儲結構和隊列。線性表的鏈式存儲結構的特點:是用一組任意的存儲單元存儲線性表的數據元素,結點的一個域表示元素本身,另一個是能指示其后繼的指針,用來表示線性表數據元素的邏輯關系。順序表的可隨機存取特點。我們將任務分成多個最簡化的模塊,增強了可讀性和簡單性,同時為日后的編寫,調試,維護提供了極大地方便。隊列的特點是:它只允許在表的一端進行插入,而在另一端進行刪除元素。在火車售票系統(tǒng)中,我們把列車和客戶分別作為一個結點,該結點類型為結構體型,結構體中的域表示

25、列車和客戶的屬性。每個結點除了存放屬性外,還存放指向后繼結點的指針。列車基本信息管理:存儲是將一個車次信息作為一個結點以鏈式存儲在文件中。列車基本信息查詢:在已有的火車售票系統(tǒng)中按地點,按車次,按車線查找到列車信息,并將其顯示在屏幕上。訂票管理:在原有的火車售票系統(tǒng)中查找到要訂購的車次信息,并將該車次所在的結點輸出。退票管理:根據查詢功能查找出所要退票的車票信息,然后退票處理。沈陽工程學院課程設計報告 第二章 運行原理和環(huán)境- 5 -2.2 運行環(huán)境本次課設采用 Microsoft Visual C+ 6.0 運行環(huán)境。VC+6.0 是 Microsoft 公司推出的一個基于 Windows

26、系統(tǒng)平臺、可視化的集成開發(fā)環(huán)境,它的源程序按 C+語言的要求編寫,并加入了微軟提供的功能強大的 MFC(Microsoft Foundation Class)類庫。MFC 中封裝了大部分 Windows API 函數和 Windows 控件,它包含的功能涉及到整個 Windows 操作系統(tǒng)。MFC不僅給用戶提供了 Windows 圖形環(huán)境下應用程序的框架,而且還提供了創(chuàng)建應用程序的組件,這樣,開發(fā)人員不必從頭設計創(chuàng)建和管理一個標準 Windows 應用程序所需的程序,而是從一個比較高的起點編程,故節(jié)省了大量的時間。另外,它提供了大量的代碼,指導用戶編程時實現某些技術和功能。因此,使用 VC+提

27、供的高度可視化的應用程序開發(fā)工具和MFC 類庫,可使應用程序開發(fā)變得簡單。 單擊“開始”選擇“所有程序” ,雙擊點開 Microsoft Visual studio 2010。如圖 2-1 所示。圖 2-1 打開 Microsoft Visual Studio 2010 運行環(huán)境沈陽工程學院課程設計報告 第二章 運行原理和環(huán)境- 6 - 打開界面如圖 2-2 所示。圖 2-2 打開 Microsoft Visual Studio 2010 操作界面 建立新的工程:在文件中點擊新建-右擊選項目-在項目中填寫你的工程名(例如15). 圖 2-3 在文件中新建項目 雙擊其他語言并選 visual c

28、+-選擇一個空項目-填寫項目名(例如 y).沈陽工程學院課程設計報告 第二章 運行原理和環(huán)境- 7 - 圖 2-4 在 visual C+中創(chuàng)建空項目 右擊原文件添加新項-點擊代碼-填寫文件名-ok。圖 2-5 所示。圖 2-5 在源文件中創(chuàng)建文件 進入編輯界面,開始進行程序編輯。如圖 2-6 所示。沈陽工程學院課程設計報告 第二章 運行原理和環(huán)境- 8 -圖 2-6 編輯界面沈陽工程學院課程設計報告 第三章 系統(tǒng)分析與設計- 9 -第三章 系統(tǒng)分析與設計3.1 火車票系統(tǒng)問題分析本任務要求實現火車售票系統(tǒng),輸入火車基本信息以及客戶信息,并將其存入文件中。根據需要可以進行如下操作:列車基本信息

29、管理、列車基本信息查詢、訂票管理、退票管理。其功能模塊圖,如圖 3-1 所示 火車售票系統(tǒng)列車基本信息管理列車基本信息查詢售 票管理退票管理按車次查詢按終點查詢圖 3-1 車票售票系統(tǒng)模塊圖沈陽工程學院課程設計報告 第三章 系統(tǒng)分析與設計- 10 -3.2 火車票系統(tǒng)功能設計 列車基本信息管理是在火車售票系統(tǒng)中輸入列車的基本信息,是訂票,退票,查詢等操作的基礎。其流程圖如圖3-2 所示。如圖 3-2 所示沈陽工程學院課程設計報告 第三章 系統(tǒng)分析與設計- 11 - 列車基本信息查詢方便旅客快速了解車次信息。其流程圖如圖3-3 所示。圖 3-3 列車基本信息查詢流程圖沈陽工程學院課程設計報告 第

30、三章 系統(tǒng)分析與設計- 12 - 訂票管理是在原有的火車售票系統(tǒng)中查找到要訂購的車票信息,如果有票,將該車票的 發(fā)車時間與現在的時間做以比較,若車票的發(fā)車時間超過現在的時間,顯示已發(fā)車;若超過現在的時間,則可以實現訂票。其流程圖如圖 3-4 所示。 圖 3-4 訂票流程圖沈陽工程學院課程設計報告 第三章 系統(tǒng)分析與設計- 13 - 退票管理是在原有的火車訂票系統(tǒng)中查找到要退票的車票信息,將該車票的發(fā)車時間與 現在的時間做以比較,若車票的發(fā)車時間超過現在的時間,顯示已發(fā)車,不能完成退票;若沒超過現在的時間,則可以實現退票。其流程圖如圖 3-5 所示。圖 3-5 退票流程圖 有時候在火車售票系統(tǒng)中

31、需要添加車次,其流程圖如圖3-6 所示。圖 3-6 添加車次流程圖沈陽工程學院課程設計報告 第三章 系統(tǒng)分析與設計- 14 - 在火車售票系統(tǒng)中需要瀏覽車次信息,其流程圖如圖3-7 所示。圖 3-7 瀏覽車次信息流程圖沈陽工程學院課程設計報告 第四章系統(tǒng)功能實現 28第四章 系統(tǒng)功能實現4.1 火車售票系統(tǒng)算法思想對于火車售票系統(tǒng),兩個客戶名單可分別有線性表和隊列實現。為查找方便,以訂票客戶已訂票客戶的線性表應按客戶姓名有序,并且,為插入和刪除方便,應以鏈表作存儲結構。由于預約人數無法預計,隊列也應以鏈表作存儲結構。整個系統(tǒng)需匯總各條路線的情況登錄在一張線性表上,由于路線基本不變,可采用順序存

32、儲結構,并按車次有序或按終點站名有序。每條路線是這張表上的一個記錄,包含上述 8 個域,其中乘員名單域為指向乘員名單鏈表的頭指針,等候替補的客戶名單域為分別指向隊頭和隊尾的指針。編輯用戶使用菜單,內容包括:輸入列班信息,保存列班信息,讀取列班信息,查找列班信息,刪除列班信息,訂票信息,退票信息以及修改信息。4.2 系統(tǒng)程序代碼 主函數是程序的入口,在主函數里聲明變量int main() int sel; Busman BusAdmin; while (1) system(cls); ShowForm(); cinsel; switch (sel) case 1: BusAdmin.FoundI

33、nfo(); break; case 2: BusAdmin.AddInfo(); break; case 3: BusAdmin.ShowInfo(); break; case 4: BusAdmin.SearchInfo(); break; case 5: BusAdmin.SellTicket(); break; case 6: BusAdmin.ExitTicket(); break; case 7: BusAdmin.SaveInfo(); break; case 0: return 0; coutendl; fflush(stdin); cout按任意鍵返回主菜單:endl;沈陽工

34、程學院課程設計報告 第四章系統(tǒng)功能實現 - 16 - getch(); 火車售票系統(tǒng)主菜單void ShowForm() cout 火車票務系統(tǒng) endl; cout=endl; cout= (1) 錄入班次信息 =endl; cout= (2) 添加班次信息 =endl; cout= (3) 流覽班次信息 =endl; cout= (4) 查詢路線信息 =endl; cout= (5) 售票處理 =endl; cout= (6) 退票處理 =endl; cout= (7) 保存班次信息 =endl; cout= (0) 退出程序 =endl; cout=endl; cout輸入要執(zhí)行的選項:

35、; 輸入程序:該程序在主函數中需要完成的第一個任務是錄入班次信息,如圖 4-1 所示。void Busman:FoundInfo() node *p=NULL,*q; int i,n; coutn 錄入班次信息:n; coutn; for (i=0; in; i+) q=p; p=new node; coutp-Num; coutp-DepartTime; coutp-BegPlace;沈陽工程學院課程設計報告 第四章系統(tǒng)功能實現 - 17 - coutp-EndPlace; coutp-RunTime; coutp-Capacity; p-HumNum=0; if (Busman:BusHe

36、ad=NULL) Busman:BusHead=p; else q-Next=p; coutNext=NULL; cout建立完畢!Next!=NULL) q=q-Next; p=new node; coutp-Num; coutp-DepartTime; coutp-BegPlace; coutp-EndPlace; coutp-RunTime; coutp-Capacity; p-HumNum=0; p-Next=NULL; q-Next=p; cout添加成功!endl; 沈陽工程學院課程設計報告 第四章系統(tǒng)功能實現 - 19 -圖 4-2 添加班次信息 輸入程序:該程序在主函數中需要完

37、成的第三個任務是瀏覽班次信息,如圖 4-3所示。 void Busman:ShowInfo() string time; node *p; couttime; cout班次t發(fā)車時間 起點t終點 行車時間t客載量 訂票人數發(fā)出Next) coutNumtDepartTimetBegPlacetEndPlacetRunTimetCapacitytHumNum; if (time = p-DepartTime) cout(已發(fā)車)endl; else cout(未發(fā)車)endl; 沈陽工程學院課程設計報告 第四章系統(tǒng)功能實現 - 20 -圖 4-3 瀏覽班次信息 輸入程序:該程序在主函數中需要完成

38、的第四個任務是查詢路線信息,如圖 4-4 所示。void Busman:SearchInfo() int sel; string s; node *p; cout(1)班次查找endl; cout(2)終站查找endl; cout選擇:; cinsel; if (sel=1) couts; else if (sel=2) 沈陽工程學院課程設計報告 第四章系統(tǒng)功能實現 - 21 - couts; cout班次t發(fā)車時間 起點t終點 行車時間t客載量 訂票人數發(fā)出Next) if (sel=1 & p-Num=s) | (sel=2 & p-EndPlace=s) coutNumt

39、DepartTimetBegPlacetEndPlacetRunTimetCapacitytHumNum; break; if (p=NULL) cout未找到!endl; 圖 4-4 查詢路線信息沈陽工程學院課程設計報告 第四章系統(tǒng)功能實現 - 22 - 輸入程序:該程序在主函數中需要完成的第五個任務是售票處理信息,如圖 4.5 所示 void Busman:SellTicket() string t,s; node *p; couts; for (p=BusHead; p!=NULL; p=p-Next) if (p-Num=s) break; if (p=NULL) cout未找到班次!

40、endl; return; coutt; if (t DepartTime & p-HumNum+1 Capacity) p-HumNum+; cout售票成功!endl; else cout該車已發(fā)或客載量已滿!endl; 沈陽工程學院課程設計報告 第四章系統(tǒng)功能實現 - 23 -圖 4-5 售票處理信息 輸入程序:該程序在主函數中需要完成的第六個任務是退票處理信息,如圖 4-6所示。 void Busman:ExitTicket() string s,t; node *p; couts; for (p=BusHead; p!=NULL; p=p-Next) if (p-Num=s)

41、 break; if (p=NULL) cout未找到班次!endl; return; coutt; if (t DepartTime)沈陽工程學院課程設計報告 第四章系統(tǒng)功能實現 - 24 - p-HumNum-; cout退票成功!endl; 圖 4-6 退票處理信息 輸入程序:該程序在主函數中需要完成的第七個任務是保存列車班次信息,如圖 4-7 所示。 void Busman:SaveInfo() node *p; ofstream Ocout(Info.txt); Ocout班次t發(fā)車時間 起點t終點 行車時間t客載量 訂票人數發(fā)出Next) OcoutNumtDepartTimetB

42、egPlacetEndPlacetRunTimetCapacitytHumNumendl; Ocout.close(); cout保存成功!endl; 沈陽工程學院課程設計報告 第四章系統(tǒng)功能實現 - 25 - 圖 4-7 保存班次信息沈陽工程學院課程設計報告 總結- 26 -總 結緊張的兩周數據結構課程設計很快過去了,通過這周的學習使我鞏固了以前的知識并在此基礎上對數據結構的特點和算法有了更深的了解,數據結構是計算機程序設計的重要理論技術基礎,它不僅是計算機科學的核心課程,而且已經成為其他理工專業(yè)的熱門選修課。在計算機的研究和應用中已展現出強大的生命力,它兼顧了諸多高級語言的特點,是一種典型

43、的結構化程序設計語言,它處理能力強,使用靈活方便,應用面廣,具有良好的可移植性,同時這兩周的學習也提高了我適應實際,實踐編程的能力。 數據結構定義了諸多抽象數據類型。如:棧、隊列,串等。這些存儲結構在分析問題解決問題時發(fā)揮了重要的作用。就我選的其中一題目而言,在分析問題時棧起了關鍵性的作用。漢諾塔問題是典型的遞歸問題。語句看似簡單,但是如果不借助棧來分析問題,實屬不易。經過了幾天的努力,數據結構課程設計這項任務終于完成。在這幾天里,克服了重重困難,從一頭霧水到漸漸思路變得相對清晰明了。雖然都說“程序數據結構算法” ,但我在學習運用數據結構編程之前,并沒能深刻體會到這一點,直到這次課程設計實踐。

44、我感受最深的一點是:以前用 C 編程,只是注重如何編寫函數能夠完成所需要的功能,似乎沒有明確的戰(zhàn)術,只是憑單純的意識和簡單的語句來堆砌出一段程序。感覺有點像張飛打仗,有勇無謀,只要能完成任務就行。但現在編程感覺完全不同了。在編寫一個程序之前,自己能夠綜合考慮各種因素,首先選取自己需要的數據結構,是樹還是圖或是別的什么漢諾塔之類然后選定一種或幾種存儲結構來具體的決定后面的函數的主要風格。最后在編寫每一個函數之前,可以仔細斟酌比對,挑選出最適合當前狀況的算法。這樣,即使在完整的程序還沒有寫出來之前,自己心中已經有了明確的原圖了。這樣無形中就提高了自己編寫的程序的質量。另外,我還體會到深刻理解數據結構的重要性。只有真正理解這樣定義數據類型的好處,才能用好這樣一種數據結構。了解典型數據結構的性質是非常有用的,它往往是編寫程序的關鍵。通過實際操作,學會分析問題,解決問題,開發(fā)了自己的邏輯思維能力。深刻體會到“沒有做不到的,只有想不到的” , “團結就是力量” , “實

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論