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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

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

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

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

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è)計(jì)……………………………………5</p><p>  4

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

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

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

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

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

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

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

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

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

19、 </p><p>  {

20、 </p><p>  char num[10]; /*列車號(hào)*/

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

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

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

24、 </p><p>  char receivetime[10]; /*到達(dá)時(shí)間*/

25、 </p><p>  int price; /*票價(jià)*/

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

27、t;/p><p>  typedef struct node /*定義列車信息鏈表的結(jié)點(diǎn)結(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引用庫(kù)函數(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; /*定義全局變量,用來(lái)控制輸入列車信息的輛數(shù)*/</p><p><b>  4算法設(shè)計(jì)</b></p><p>  4.1列車信息鏈表的操作模塊</p><p>  這個(gè)模塊主要是實(shí)現(xiàn)列車鏈表的初始化、插入、以及各種查詢的操作,在進(jìn)行列車信息的存

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

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

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

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

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); /*輸入列車編號(hào)*/

61、 </p><p>  if(strcmp(num,"0")==0) /*檢索 輸入的列車編號(hào)是否為字符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) /*檢測(cè)鏈表中是否已有該列車的基本信息*/ </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后移指向下一個(gè)結(jié)點(diǎn) * </p><p>  }

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

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

73、 /*輸入車號(hào)*/ </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ā)時(shí)間*/ </p><p>  printf("Input the time which the train receive:");

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

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

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

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ù) ,實(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) /*選擇按列車編號(hào)查詢*/

104、 </p><p>  {

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

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

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論