車票管理系統(tǒng)課程設(shè)計報告_第1頁
已閱讀1頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、<p><b>  車票管理系統(tǒng)</b></p><p><b>  一 目的</b></p><p>  通過課程設(shè)計,加深對《C語言程序設(shè)計》和《數(shù)據(jù)結(jié)構(gòu)》課程所學(xué)知識的理解,熟練掌握和鞏固C語言的基本知識和語法規(guī)范,包括:數(shù)據(jù)類型(整形、實型、字符型、指針、數(shù)組、結(jié)構(gòu)等);運算類型(算術(shù)運算、邏輯運算、自增自減運算、賦值運算等)

2、;程序結(jié)構(gòu)(順序結(jié)構(gòu)、判斷選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu));庫函數(shù)應(yīng)用等;復(fù)雜任務(wù)功能分解方法(自頂向下逐步求精、模塊化設(shè)計、信息隱藏等),熟練掌握和鞏固三種基本的數(shù)據(jù)結(jié)構(gòu)(線性結(jié)構(gòu)、樹形結(jié)構(gòu)、圖形結(jié)構(gòu))的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)以及相關(guān)運算和應(yīng)用。</p><p>  學(xué)會編制結(jié)構(gòu)清晰、風(fēng)格良好、數(shù)據(jù)結(jié)構(gòu)適當?shù)腃語言程序,從而具備利用計算機編程分析解決綜合性實際問題的初步能力</p><p><b&

3、gt;  二 需求分析</b></p><p>  1、首先本演示程序要實現(xiàn)錄入班次信息的功能,并且要用文件來保存這些信息,還可以不定時的增加班次數(shù)據(jù)。</p><p>  2、需要瀏覽班次信息是可以一次性輸出當前的班次狀況,并且要從實際考慮,若當前系統(tǒng)時間已經(jīng)超過了某班次的發(fā)車時間,則要顯示“此班已發(fā)出”的提示信息。</p><p>  3、此程序既

4、為車票管理系統(tǒng),就要實現(xiàn)查詢路線、售票、退票等功能。當使用查詢路線功能時,要分兩種情況:按班次號查詢和按終點站查詢。若使用售票功能,則只有在查詢出已定票人數(shù)小于額定載量且當前系統(tǒng)時間小于發(fā)車時間時才能售票,并且要自動跟新已售票人數(shù)。退票要輸入退票的班次,當本班車尚未出發(fā)時才能退票,也要自動更新已售票人次。</p><p>  4、演示程序以用戶和計算機的對話方式執(zhí)行,即在計算機的屏幕上顯示“提示信息”下,用戶根據(jù)

5、自己的意愿自行操作,每次測試完畢,新增加的班次信息要保存在data.txt文件中。</p><p><b>  三 概要設(shè)計</b></p><p>  1、本程序各個模塊的功能及調(diào)用關(guān)系:</p><p> ?。?)主程序模塊main()函數(shù):</p><p>  此主程序的主要目的是用來調(diào)用讀取文件函數(shù)、功能菜單函

6、數(shù)以及保存文件信息函數(shù)。</p><p> ?。?)文件讀入與保存函數(shù)read()、save()以及功能菜單MainMenu()函數(shù):</p><p>  這三個函數(shù)的主要目的是為了讀取文件,保存文件和為用戶創(chuàng)造一個功能菜單以便于用戶的操作。</p><p> ?。?)在MainMenu()函數(shù)中調(diào)用的各級功能函數(shù):</p><p>  這個

7、模塊中有六個函數(shù),MainMenu()函數(shù)調(diào)用這六個函數(shù)來分別實現(xiàn)增加班次、瀏覽班次信息、查找班次、售票、退票、退出的功能。 </p><p>  2、程序中出現(xiàn)的數(shù)據(jù)類型定義及含義:</p><p>  本程序采用鏈表存儲相關(guān)信息,定義如下</p><p>  typedef struct Node</p><p>  { int nu

8、m; //班次號</p><p>  int sTimeH, sTimeM; //發(fā)車時間(小時sTimeH和分鐘sTimeM)</p><p>  int sumSeat, soldSeat; //總座位數(shù), 已訂票人數(shù)</p><p>  float lastTime; //行車時間<

9、/p><p>  char begin[20], end[20]; //起始站,終點站</p><p>  struct Node * next; //指向下一個節(jié)點</p><p>  }Node, * LinkedNode; </p><p><b>  四 詳細設(shè)計</b></p><

10、;p>  用全局變量List保存鏈表的頭結(jié)點</p><p>  LinkedNode List;</p><p>  ShowHead()、ShowNode(Node * p);這兩個函數(shù)用于顯示鏈表信息:</p><p>  ShowHead()輸出航班、發(fā)車時間、站點等標題信息;</p><p>  ShowNode()輸出鏈表中

11、存儲的確切信息。</p><p>  Read()函數(shù)讀取文件信息并存入鏈表:</p><p>  定義一個指針*fp指向所要打開的文件,</p><p>  List = (LinkedNode)malloc(sizeof(Node));</p><p>  LinkedNode p = List; 為頭結(jié)點申請空間并用p指向頭結(jié)點;<

12、;/p><p>  fseek()函數(shù)來移動*fp指針;</p><p>  ftell()函數(shù)返回指針;</p><p>  然后用fscanf()從文件中輸入信息。</p><p>  最后用fclose(fp)來關(guān)閉文件。</p><p>  Save()函數(shù)將鏈表存儲的信息存進文件并釋放所占空間:</p>

13、;<p>  用fopen()函數(shù)打開fp指向的文件;</p><p>  然后用fprintf()函數(shù)輸出鏈表信息并存到文件里;</p><p>  最后用fcolse(fp)關(guān)閉文件。</p><p>  IsSetOff(Node * p)函數(shù)用于判斷班次是否已經(jīng)出發(fā):</p><p><b>  time_t

14、t;</b></p><p><b>  time(&t);</b></p><p>  struct tm * timeinfo = localtime(&t)</p><p>  獲取系統(tǒng)時間,然后與班次出發(fā)時間比較并將結(jié)果用return()函數(shù)返回。</p><p>  Add()函數(shù)是

15、增加一個班次:</p><p>  LinkedNode p = List;定義p指向頭結(jié)點;</p><p>  然后用malloc()函數(shù)為結(jié)點申請空間;</p><p>  用scanf()函數(shù)輸入各種信息;</p><p>  ShowHead();</p><p>  ShowNode(p); 輸出新增加的

16、班次信息。</p><p>  Lookup()函數(shù)顯示各班次信息:</p><p>  if (IsSetOff(p))</p><p>  printf("\n\n此班已出發(fā)");</p><p>  ShowNode(p);</p><p>  p = p->next; 依次顯示文件中的

17、班次信息。</p><p>  SearchPath()函數(shù)查詢路線:</p><p><b>  int n;</b></p><p>  printf("請輸入要出售的車票班次:");</p><p>  scanf("%d", &n); 按班次號來售票;</

18、p><p>  char ch[20];</p><p>  printf("請輸入終點站:");</p><p>  scanf("%s", &ch);按終點站來查詢。</p><p>  SaleTicket()、ReturnTicket()函數(shù)用來賣票退票:</p><p&

19、gt;  if (IsSetOff(p))</p><p>  printf("此班已出發(fā)!\n"); 此時班次出發(fā)時間超過系統(tǒng)時間;</p><p>  ++p->soldSeat;</p><p>  printf("售票成功\n");</p><p>  ShowHead();</p

20、><p>  ShowNode(p);輸出賣票后的該班次信息。</p><p>  退票功能的實現(xiàn)與以上功能相似,++p->soldSeat</p><p>  改成--p->soldSeat表示退票后soldSeat數(shù)減少一個。</p><p>  Quit()函數(shù)退出:</p><p>  MainMenu

21、()函數(shù)是主菜單,各個功能的選擇:</p><p>  switch(getch()) 用一個switch函數(shù)來選擇一個功能;</p><p>  用getch()從鍵盤輸入一個數(shù)字來選擇功能。</p><p>  主函數(shù)void main()</p><p>  主函數(shù)來調(diào)用Read()、MainMenu()、Save()三個函數(shù);<

22、/p><p>  實現(xiàn)從文件讀取信息,打開主菜單,保存信息到文件中的功能。</p><p><b>  五 調(diào)試分析</b></p><p>  1、該程序的關(guān)鍵是用一個結(jié)構(gòu)體來存儲每個班次的各種信息,然后建立一個單鏈表存儲所有的班次。要注意的是正確的定義頭結(jié)點指針,還有保證每次循環(huán)都能正確的進行下去。只有保證這些細節(jié)都正確,程序才能正常的運行。

23、</p><p>  2、在設(shè)計程序的時候要設(shè)計多個模塊,比如程序中的查詢、售票、退票、功能菜單等,最后用一個主函數(shù)來調(diào)用其他的函數(shù),我在調(diào)試時發(fā)現(xiàn)每次賣票后都不能正常的返回,經(jīng)檢查后才發(fā)現(xiàn)是因為掉了一句p=p->next,所以在以后寫程序時都要認真仔細,這樣才不至于在調(diào)試程序的時候出現(xiàn)問題,浪費很多時間。</p><p>  3、在寫這個程序的時候,調(diào)試過程中發(fā)現(xiàn)了很多錯誤,這樣很

24、不容易修改,所以最好循序漸進,認真寫好每一個程序,檢查后再寫下一個,這樣更能保證整個程序的正確性,也便于隨時調(diào)整。</p><p>  4、在調(diào)試的過程中同樣出現(xiàn)文件寫入和讀出的問題,所以文件的格式必須熟練掌握,這樣才能正確的實現(xiàn)功能,達到目的。</p><p><b>  六 測試結(jié)果</b></p><p>  1、將程序在VC6中打開后

25、點擊編譯、運行后出現(xiàn)主界面如下圖:</p><p>  2、我們先查看已有的班次,選擇2,則出現(xiàn)下圖:</p><p>  3、按任意鍵返回主菜單,然后我們選擇增加一個班次,選擇1,根據(jù)提示分別輸入班次:5、發(fā)車時間:22:30、起始站:武漢、終點站:南京、行車時間3.5、額定載量:50則出現(xiàn)下圖:</p><p>  此時按任意鍵返回主菜單,再選擇2查看班次,我們

26、發(fā)現(xiàn)班次5已經(jīng)增加進去了,如圖:</p><p>  4、按任意鍵返回主菜單選擇3查詢功能,則出現(xiàn)按班次號查詢和按終點站查詢,我們先選擇1并輸入3,則會出現(xiàn)班次3的信息如圖:</p><p>  然后我們選擇2繼續(xù)按終點站查詢,輸入南京,則會顯示如圖:</p><p>  5、按ESC返回主菜單選擇4售票,然后輸入要購買的班次號,若該班次已發(fā)出,則會顯示:此班已出發(fā)

27、。否則顯示售票成功,并輸出該班次的信息:</p><p><b>  ,</b></p><p>  6、現(xiàn)在我們按任意鍵返回主菜單并選擇5,實現(xiàn)退票功能,輸入要退票的班次,我們輸入5,則顯示如圖:</p><p>  此時我們發(fā)現(xiàn)已經(jīng)退票成功。</p><p>  7、若想退出,則按ESC,顯示如圖:</p>

28、;<p><b>  七 用戶使用說明</b></p><p>  1、本程序可以在VC6的環(huán)境下運行。</p><p>  2、程序運行后,會自動從文件讀取數(shù)據(jù),并出現(xiàn)功能菜單</p><p>  用戶要根據(jù)自己的意愿自己選擇所要執(zhí)行的功能,每次用戶選擇功能后都會有提示輸入信息,用戶只需根據(jù)提示輸入信息便可輕松使用各種功能。&

29、lt;/p><p>  3、當用戶使用完并退出后,新增加的班次信息會自動保存在data.txt</p><p><b>  八 課程設(shè)計總結(jié)</b></p><p>  通過本次的課程設(shè)計,讓我又重新拿起了程序設(shè)計和數(shù)據(jù)結(jié)構(gòu)課本,好好的復(fù)習(xí)了一下以前學(xué)過的知識。對循環(huán)結(jié)構(gòu)、指針、結(jié)構(gòu)體,函數(shù)調(diào)用,switch語句, for循環(huán)語句等有了更為系統(tǒng)的

30、了解,也學(xué)會了制作流程圖,明白了一個設(shè)計精良的程序要的不僅是它的正確輸出結(jié)果,還要有簡明可靠地思路,良好的穩(wěn)定性等。通過這次課程設(shè)計,讓我能把相關(guān)的知識聯(lián)系起來解決要解決的問題。更為重要的是,經(jīng)過這次課程設(shè)計,我學(xué)會了要有模塊化的思想進行程序設(shè)計,提高了對問題的分析和解決能力。增強了程序設(shè)計過程中對程序的調(diào)試能力,知道如何解決調(diào)試過程中遇到的問題,從中提高對問題分析的能力。</p><p>  總之,設(shè)計程序是一

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論