數(shù)據(jù)結(jié)構(gòu)課程設(shè)計---列車運行查詢程序的設(shè)計與實現(xiàn)_第1頁
已閱讀1頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  課程設(shè)計報告書</b></p><p>  課程名稱: 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計 </p><p>  題 目: 列車運行查詢程序的設(shè)計與實現(xiàn) </p><p>  系 名: </p><p>  專業(yè)班級:

2、 </p><p>  姓 名: </p><p>  學 號: </p><p>  指導(dǎo)教師: </p><p>&

3、lt;b>  年 月 日</b></p><p><b>  課程設(shè)計任務(wù)書</b></p><p>  學生姓名: 專業(yè)班級: </p><p>  指導(dǎo)教師: 工作單位: </p><p>  題 目: 列車運行查詢程序的

4、設(shè)計與實現(xiàn)</p><p><b>  初始條件:</b></p><p>  理論:學習了《數(shù)據(jù)結(jié)構(gòu)》課程,掌握了基本的數(shù)據(jù)結(jié)構(gòu)和常用的算法;</p><p>  實踐:信息工程系實驗室提供計算機及軟件開發(fā)環(huán)境。</p><p>  要求完成的主要任務(wù): (包括課程設(shè)計工作量及其技術(shù)要求,以及說明書撰寫等具體要求)&l

5、t;/p><p>  1、系統(tǒng)應(yīng)具備的功能:</p><p> ?。?)輸入列車時刻表</p><p> ?。?)按各種查詢條件對列車時刻 </p><p><b>  2、數(shù)據(jù)結(jié)構(gòu)設(shè)計;</b></p><p><b>  3、主要算法設(shè)計;</b></p>&l

6、t;p>  4、編程及上機實現(xiàn);</p><p>  5、撰寫課程設(shè)計報告,包括:</p><p><b>  (1)設(shè)計題目;</b></p><p> ?。?)摘要和關(guān)鍵字;</p><p>  (3)正文,包括引言、需求分析、數(shù)據(jù)結(jié)構(gòu)設(shè)計、算法設(shè)計、程序?qū)崿F(xiàn)及測試等;</p><p>

7、<b>  (4)結(jié)束語;</b></p><p><b> ?。?)參考文獻。</b></p><p>  時間安排: 2011年6月27日-2011年7月1日 (第19周)</p><p>  星期一 查閱資料</p><p>  星期二 系統(tǒng)設(shè)計,數(shù)據(jù)結(jié)構(gòu)設(shè)計,算法設(shè)計</p

8、><p>  星期三-星期四 編程并上機調(diào)試</p><p>  星期五 撰寫報告</p><p>  星期五 驗收程序,提交設(shè)計報告書。</p><p>  指導(dǎo)教師簽名 2011年6月27日 </p><p>  系主任(或責任教師)簽名:

9、 2011年6月27日 </p><p><b>  目錄</b></p><p>  1引言………………………………………………1</p><p>  2需求分析…………………………………………1</p><p>  3數(shù)據(jù)結(jié)構(gòu)設(shè)計……………………………………5</p><p>  4

10、算法設(shè)計…………………………………………5</p><p>  5程序?qū)崿F(xiàn)及測試…………………………………9</p><p>  6不足之處…………………………………………13</p><p>  7設(shè)計體會…………………………………………13</p><p>  8結(jié)束語……………………………………………14</p><

11、p>  列車運行查詢程序的設(shè)計與實現(xiàn)</p><p><b>  摘要</b></p><p>  現(xiàn)要設(shè)計列車運行查詢系統(tǒng),使乘客通過各種查詢方式得到所要查詢列車的基本信息,該信息包括列車號、始發(fā)地點、始發(fā)時間、抵達地點、抵達時間、票價等。如何用數(shù)據(jù)結(jié)構(gòu)中的算法來實現(xiàn)呢?我們知道,在數(shù)據(jù)結(jié)構(gòu)中有一種存儲結(jié)構(gòu)叫鏈式存儲,鏈表的結(jié)點正好可以用來存儲每輛列車的基本信

12、息,結(jié)點的指針域能對該鏈表存儲的信息進行查找、刪除,而查找方式又有兩種方式,一是基于列車編號的查找,二是根據(jù)抵達城鎮(zhèn)的查找。</p><p>  關(guān)鍵字:結(jié)點、 指針 、單鏈表的插入、列車查詢、單鏈表的查找</p><p><b>  1引言</b></p><p>  鏈式存儲結(jié)構(gòu)是用一組任意的存儲單元來存儲表的結(jié)點。也就是說,鏈式存儲結(jié)構(gòu)中

13、,存儲單元可以是相鄰的,也可以是不相鄰的;同時,相鄰的存儲單元中的數(shù)據(jù),不一定是相鄰的結(jié)點,因為結(jié)點存儲的不連續(xù)性,因而它為沒有順序存儲列車信息提供的方便,能隨時將安排運行的列車添加到鏈表中,又鏈表中的每一個結(jié)點還包含一個指針域,它保存了在邏輯上相鄰的結(jié)點的地址信息,該指針域中的指針,將線性表的n個結(jié)點按其邏輯順序連接在一起。因此查詢某輛列車的基本信息就要用到該指針域,因而單鏈表的結(jié)點結(jié)構(gòu)非常適合來存儲列車的基本信息。列車作為現(xiàn)代社會出

14、門旅行的重要工具,要怎樣不用出門就能了解到列車的具體開往時間,進而為自己的行程做好安排。因此網(wǎng)上列車查詢系統(tǒng)的建立為人們的出行提供了輕松與便捷,這種查詢系統(tǒng)也為車站的售票員提供了便利。結(jié)合實際,我想通過自己的知識嘗試著去編寫一個這樣的系統(tǒng),一來可以完成課程設(shè)計,二來可以加深自己的數(shù)據(jù)結(jié)構(gòu)知識,鍛煉自己的同時也提升了自己。</p><p><b>  2需求分析</b></p>

15、<p><b>  2.1提出需求</b></p><p>  在日常生活中,對于出行,人們最關(guān)心的就是列車的始發(fā)時間,到站時間以及票價,要滿足人們的需求,故本系統(tǒng)將包括以下幾個方面</p><p>  1.列車基本信息的建立。用單鏈表的結(jié)點來存儲列車的基本信息,也可以用結(jié)點的插入來添加新增的列車班次或更新列車班次。</p><p>

16、  2.按不同的查詢條件來查詢列車的信息。通過列車的編號或者通過列車的始發(fā)地和目的地兩種方式查詢列車,方便找到適合自己的。通過將用戶輸入信息與鏈表存儲的相應(yīng)信息一一做比較找到所需的列車信息并輸出,利用指針的移動來查找該信息。</p><p><b>  2.2開發(fā)計劃</b></p><p>  更具所學課程的只是,結(jié)合實際情況,本系統(tǒng)開發(fā)的計劃表如下:</p&

17、gt;<p><b>  開發(fā)計劃表</b></p><p><b>  開發(fā)進度表</b></p><p>  2.3列車運行查詢程序待發(fā)計劃的模塊劃分</p><p>  根據(jù)任務(wù)書中的設(shè)計要求,對該模擬進行如下劃分:</p><p><b>  2.4系統(tǒng)流程圖<

18、/b></p><p><b>  3 數(shù)據(jù)結(jié)構(gòu)設(shè)計</b></p><p>  3.1程序所需結(jié)構(gòu)體</p><p>  定義結(jié)構(gòu)體train,用來存儲列車信息</p><p>  typedef struct train /*定義存儲列車信息的結(jié)構(gòu)體*/

19、 </p><p>  {

20、 </p><p>  char num[10]; /*列車號*/

21、 </p><p>  char startcity[10]; /*出發(fā)城市*/

22、 </p><p>  char reachcity[10]; /*目的城市*/

23、 </p><p>  char takeofftime[10]; /*發(fā)車時間*/

24、 </p><p>  char receivetime[10]; /*到達時間*/

25、 </p><p>  int price; /*票價*/

26、 </p><p>  }lieche; &l

27、t;/p><p>  typedef struct node /*定義列車信息鏈表的結(jié)點結(jié)構(gòu)*/ </p><p>  {

28、 </p><p>  lieche data;

29、 /*數(shù)據(jù)域 */ </p><p>  struct node *next;

30、/*指針域*/ </p><p>  } Node, *Link;

31、 </p><p>  3.2程序中,列車的鏈表操作模塊</p><p>  void menu() /*定義菜單選擇界面函數(shù)*/</p><p>  void Traininfo(Link l) /*定義列車信息鏈表函數(shù)*</p><p>  searchtrain(Link l) /*定義查詢列車信息的函

32、數(shù)*/</p><p>  main() /*定義主函數(shù)*/</p><p>  3.3引用庫函數(shù)及變量的定義</p><p>  #include<conio.h>

33、 </p><p>  #include<stdio.h>

34、 </p><p>  #include<stdlib.h>

35、 </p><p>  #include<string.h>

36、 </p><p>  #define DATE</p><p>  p->data.num,p->data.startcity,p->data.reachcity,p->data.takeofftime,p->data.receivetime,p->data.price, p-&

37、gt;data.ticketnum</p><p>  int c; /*定義全局變量,用來控制輸入列車信息的輛數(shù)*/</p><p><b>  4算法設(shè)計</b></p><p>  4.1列車信息鏈表的操作模塊</p><p>  這個模塊主要是實現(xiàn)列車鏈表的初始化、插入、以及各種查詢的操作,在進行列車信息的存

38、儲時,系統(tǒng)一邊為結(jié)點分配內(nèi)存,一邊將該結(jié)點插入到鏈表中后。在查詢時,查詢按照畫面的提示,選擇不同的查詢方式進行查詢,然后便顯示出了查詢結(jié)果。在本程序中是最基礎(chǔ),最基本的操作,但也是最主要的。</p><p><b>  4.2主菜單</b></p><p>  主菜單界面函數(shù),為用戶顯示該系統(tǒng)的功能,方便用戶進行操作</p><p>  voi

39、d menu() </p><p>  {

40、 </p><p>  puts("\n\n");

41、 </p><p>  puts("\t\t|┄┄┄┄┄┄┄┄┄┄┄┄

42、┄┄┄|"); </p><p>  puts("\t\t| The information of the train

43、|"); /* 列車信息*/ </p><p>  puts("\t\t|┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄|");

44、 </p><p>  puts("\t\t| 0:quit the system |");

45、/*退出該程序* / </p><p>  puts("\t\t|1:Insert a train information |"

46、); /*輸入列車信息 */ </p><p>  puts("\t\t|2:Search a train information |

47、"); /* 查詢列車信息*/ </p><p><b>  } </b></p><p&

48、gt;<b>  4.3列車信息輸入</b></p><p>  自定義Traininfo()函數(shù),作用是添加列車信息

49、 </p><p>  void Traininfo(Link l)

50、 </p><p>  {

51、 </p><p>  struct node *p,*r,*s; /*定義鏈表指針 */

52、 </p><p>  char num[10];

53、 </p><p>  int i; </p>&l

54、t;p>  r=l; /* 讓r指向頭結(jié)點* / </p><

55、p>  s=l->next; /*讓s指向頭結(jié)點的下一個結(jié)點*/ </p&

56、gt;<p>  while(r->next!=NULL) /*鏈表沒有存儲任何信息* / &

57、lt;/p><p>  r=r->next; /*r后移,r指向頭結(jié)點的下一個結(jié)點 */

58、 </p><p>  for(i=1;i<=c;i++) /*控制輸入列車信息的輛數(shù) */

59、 </p><p>  { printf("Please input the number of the train(0-return):");

60、 </p><p>  scanf("%s",num); /*輸入列車編號*/

61、 </p><p>  if(strcmp(num,"0")==0) /*檢索 輸入的列車編號是否為字符0*/

62、 </p><p>  break;

63、 </p><p>  while(s)

64、 </p><p>  { </p>&l

65、t;p>  if(strcmp(s->data.num,num)==0) /*檢測鏈表中是否已有該列車的基本信息*/ </p&

66、gt;<p>  { </p><p>  pr

67、intf("the train '%s' is existing!\n",num); /*輸出該列車信息已存在于鏈表中 * / </p>

68、;<p>  return; </p><p>  }

69、 </p><p>  s=s->next;

70、*s后移指向下一個結(jié)點 * </p><p>  }

71、 </p><p>  p=(struct node*)malloc(si

72、zeof(struct node)); /*申請新結(jié)點*/ </p><p>  strcpy(p->data.num,num);

73、 /*輸入車號*/ </p><p>  printf("Input the city where the tra

74、in will start:"); </p><p>  scanf("%s",p->data.startcity);

75、 /*輸入出發(fā)城市*/ </p><p>  printf("Input the city where the train will

76、 reach:"); </p><p>  scanf("%s",p->data.reachcity);

77、 /*輸入到站城市*/ </p><p>  printf("Input the time which the train take off:&q

78、uot;); </p><p>  scanf("%s",p->data.takeofftime); /

79、*輸入出發(fā)時間*/ </p><p>  printf("Input the time which the train receive:");

80、 </p><p>  scanf("%s",p->data.receivetime); /*輸入到站時

81、間*/ </p><p>  printf("Input the price of ticket:");

82、 </p><p>  scanf("%d",p->data.price); /*票價*/

83、 </p><p>  p->next=NULL;

84、 </p><p>  r->next=p;

85、 </p><p>  r=p; /*插入到鏈表中*/

86、 </p><p>  }

87、 </p><p>  clrscr(); /*清屏*/

88、 </p><p>  menu(); /*調(diào)用主菜單界面函數(shù)*/

89、 </p><p><b> ?。?lt;/b></p><p><b>  4.4列車查詢</b></p><p>  自定義searchtrai()函數(shù) ,實現(xiàn)列車信息查詢,

90、程序代碼如下

91、 </p><p>  searchtrain(Link l)

92、 </p><p>  {

93、 </p><p>  Node *r,*t; /*定義鏈表指針*/

94、 </p><p>  int sel, k,flat=0;

95、 </p><p>  char str1[5],str2[10],str3[10];

96、 </p><p>  if(!l->next)

97、 </p><p>  {

98、 </p><p>  printf("There is not receord !"); /*鏈表為空*/

99、 </p><p>  return;

100、 </p><p>  }

101、 </p><p>  printf("choose the way:\n1:according to the number of train;\n2:according to the city:\n");

102、 </p><p>  scanf("%d",&sel); /*從兩種查詢方式中選擇一種 */

103、 </p><p>  if(sel==1) /*選擇按列車編號查詢*/

104、 </p><p>  {

105、 </p><p>  printf("Input the number of train:");

106、 </p><p>  scanf("%s",str1); /*輸入要查找的列車編號*/

溫馨提示

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

最新文檔

評論

0/150

提交評論