數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告--程序的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
已閱讀1頁(yè),還剩34頁(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ì)與實(shí)現(xiàn)</b></p><p>  ——數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)</p><p><b>  目錄</b></p><p><b>  一、功能描述1</b></p><p>  1.1 系統(tǒng)實(shí)現(xiàn)的目的和意義1</p><

2、p>  1.2 系統(tǒng)實(shí)現(xiàn)的功能1</p><p>  1.3 系統(tǒng)開(kāi)發(fā)的環(huán)境1</p><p><b>  二、總體結(jié)構(gòu)1</b></p><p>  2.1 文件清單(按文件系統(tǒng)樹(shù)型方式排列)1</p><p>  2.2 系統(tǒng)功能結(jié)構(gòu)圖2</p><p>  2.3 系統(tǒng)的總流

3、程圖(標(biāo)明每個(gè)模塊的文件名)2</p><p>  三、詳細(xì)設(shè)計(jì)(均需注釋)2</p><p>  3.1 數(shù)據(jù)結(jié)構(gòu)2</p><p>  3.2 各模塊(或算法)流程圖(標(biāo)明函數(shù)名)2</p><p><b>  四、系統(tǒng)實(shí)現(xiàn)2</b></p><p>  4.1模塊一(寫(xiě)出模塊的名字

4、)1</p><p>  4.2模塊二(寫(xiě)出模塊的名字)1</p><p><b>  4.3……2</b></p><p>  五、程序的過(guò)程展示2</p><p>  5.1 程序運(yùn)行過(guò)程展示2</p><p>  5.2 程序結(jié)果展示及分析2</p><p&g

5、t;  六、軟件的輔助說(shuō)明2</p><p>  6.1 本軟件的優(yōu)點(diǎn)2</p><p>  6.2 本軟件的缺點(diǎn)2</p><p>  6.3 本軟件的BUG2</p><p>  七、課程設(shè)計(jì)結(jié)論(意見(jiàn)、建議、心得、申報(bào)成績(jī)…)2</p><p>  八、參考文獻(xiàn)(參考網(wǎng)站)2</p>&

6、lt;p>  九、附錄——提交文檔2</p><p>  9.1 書(shū)面形式清單2</p><p>  9.2 電子形式清單2</p><p>  9.3 文檔命名要求2</p><p><b>  一、功能描述</b></p><p>  1.1 系統(tǒng)實(shí)現(xiàn)的目的和意義:</p&

7、gt;<p>  1.?dāng)?shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)是綜合運(yùn)用數(shù)據(jù)結(jié)構(gòu)課程中學(xué)到的幾種典型數(shù)據(jù)結(jié)構(gòu),以及程序設(shè)計(jì)語(yǔ)言(C語(yǔ)言),自行實(shí)現(xiàn)一個(gè)較為完整的應(yīng)用系統(tǒng)的設(shè)計(jì)與開(kāi)發(fā)。 </p><p>  2.通過(guò)課程設(shè)計(jì),自己通過(guò)系統(tǒng)分析、系統(tǒng)設(shè)計(jì)、編程調(diào)試,寫(xiě)實(shí)驗(yàn)報(bào)告等環(huán)節(jié),進(jìn)一步掌握應(yīng)用系統(tǒng)設(shè)計(jì)的方法和步驟,靈活運(yùn)用并深刻理解典型數(shù)據(jù)結(jié)構(gòu)在軟件開(kāi)發(fā)中的應(yīng)用。</p><p>  3.

8、學(xué)會(huì)將知識(shí)應(yīng)用于實(shí)際的方法,提高分析和解決問(wèn)題的能力,增加綜合能力。</p><p><b>  航空空訂票系統(tǒng):</b></p><p> ?。?)熟練掌握鏈表存儲(chǔ)結(jié)構(gòu)及其建立過(guò)程和常用操作;</p><p> ?。?)熟練掌握隊(duì)列的建立過(guò)程和常用操作;</p><p> ?。?)學(xué)會(huì)自己調(diào)試程序的方法并掌握一定的技巧

9、。</p><p>  1.2 系統(tǒng)實(shí)現(xiàn)的功能:航空客運(yùn)訂票的業(yè)務(wù)活動(dòng)包括:查詢航線、客票預(yù)訂和辦理退票等。設(shè)計(jì)一個(gè)航空客運(yùn)訂票系統(tǒng),以使上述業(yè)務(wù)可以借助計(jì)算機(jī)來(lái)完成。</p><p>  1.3 系統(tǒng)開(kāi)發(fā)的環(huán)境:C類,開(kāi)發(fā)軟件為DEV C++ </p><p><b>  二、總體結(jié)構(gòu)</b></p><p>  2.

10、1 文件清單(按文件系統(tǒng)樹(shù)型方式排列)</p><p>  瀏覽航線信息 讀入文件(airplane.txt)</p><p>  瀏覽已訂票客戶信息 按航班號(hào)查找</p><p><b>  主</b></p><p><b>  按終點(diǎn)站查詢</b>

11、;</p><p>  菜 查詢航線 </p><p><b>  按航班號(hào)查詢</b></p><p><b>  單 </b></p><p><b>  辦理訂票業(yè)務(wù)</b></p><p><b>

12、;  辦理退票業(yè)務(wù)</b></p><p><b>  退出系統(tǒng)</b></p><p>  2.2 系統(tǒng)功能結(jié)構(gòu)圖</p><p>  2.3 系統(tǒng)的總流程圖</p><p>  三、詳細(xì)設(shè)計(jì)(均需注釋)</p><p><b>  3.1 數(shù)據(jù)結(jié)構(gòu)</b>&l

13、t;/p><p>  訂票跟退票的模塊均用到了鏈表跟隊(duì)列的知識(shí)。以退票模塊為例:(退票模塊涉及到兩方面,一是客戶將定完的票推掉,二是將客戶退掉的票安排給排隊(duì)的客戶)</p><p>  void return_tkt()</p><p><b>  /*退票模塊*/</b></p><p>  { struct airli

14、ne *info;</p><p>  qnode *t,*back,*f,*r;</p><p>  int grade;</p><p>  linklist *p1,*p2,*head;</p><p>  char cusname[10];</p><p>  if(!(info=find()))</p&

15、gt;<p>  return;/*調(diào)用查詢函數(shù),根據(jù)客戶提供的航線進(jìn)行搜索*/</p><p>  head=info->order;</p><p><b>  p1=head;</b></p><p>  printf("請(qǐng)輸入你的姓名(退票客戶):");</p><p> 

16、 scanf("%s",cusname);</p><p>  while(p1!=NULL)</p><p>  {/*根據(jù)客戶提供的姓名到訂票客戶名單域進(jìn)行查詢*/</p><p>  if(!strcmp(cusname,p1->name))</p><p><b>  break;</b>

17、;</p><p><b>  p2=p1;</b></p><p>  p1=p1->next;</p><p><b>  }</b></p><p>  if(p1==NULL)</p><p><b>  {</b></p>

18、<p>  printf("對(duì)不起,你沒(méi)有訂過(guò)票!\n");</p><p><b>  return;</b></p><p>  }/*若未找到,退出本模塊*/</p><p><b>  else</b></p><p>  {/*若信息查詢成功,刪除訂票客戶名單

19、域中的信息*/</p><p>  if(p1==head) head=p1->next;</p><p>  else p2->next=p1->next;</p><p>  info->tkt_sur+=p1->ord_amt;</p><p>  grade=p1->grade;</p>

20、<p>  printf("%s成功退票!\n",p1->name);</p><p><b>  free(p1);</b></p><p><b>  }</b></p><p>  info->order=head;/*重新將航線名單域指向訂票單鏈表的頭指針 */<

21、/p><p>  f=(info->wait).front;/*f指向排隊(duì)等候名單隊(duì)列的頭結(jié)點(diǎn)*/</p><p>  r=(info->wait).rear;/*r指向排隊(duì)等候名單隊(duì)列的尾結(jié)點(diǎn)*/</p><p>  t=f;/*t為當(dāng)前滿點(diǎn)條件的排隊(duì)候補(bǔ)名單域*/</p><p><b>  while(t)</b

22、></p><p><b>  {</b></p><p>  if(info->tkt_sur>=info->wait.front->req_amt)</p><p>  {/*若滿足條件者為頭結(jié)點(diǎn)*/</p><p><b>  int i;</b></p&g

23、t;<p>  info->wait.front=t->next;</p><p>  printf("%s訂票成功!\n",t->name);</p><p>  for(i=0;i<t->req_amt;i++)/*輸出座位號(hào)*/</p><p>  printf("%s的座位號(hào)是:%d\

24、n",t->name,(info->tkt_sur)-i);</p><p>  info->tkt_sur-=t->req_amt;</p><p>  info->order=insertlink(info->order,t->req_amt,t->name,grade);/*插入到訂票客戶名單鏈表中*/</p>

25、<p><b>  free(t);</b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  back=t;</b></p><p>  t=t->next;</p

26、><p>  if((info->tkt_sur)>=(t->req_amt)&&t!=NULL)/*若滿足條件者不為頭結(jié)點(diǎn)*/</p><p><b>  {</b></p><p><b>  int i;</b></p><p>  back->next=t

27、->next;</p><p>  printf("%s訂票成功!\n",t->name);</p><p>  for(i=0;i<t->req_amt;i++)/*輸出座位號(hào)*/</p><p>  printf("<%s>'s seat number is:%d\n",t-&g

28、t;name,(info->tkt_sur)-i);</p><p>  info->tkt_sur-=t->req_amt;</p><p>  info->order=insertlink(info->order,t->req_amt,t->name,grade);/*插入到訂票客戶名單鏈表中*/</p><p><

29、;b>  free(t);</b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  if(f==r)</b></p><p><b>  break;</b></

30、p><p><b>  }</b></p><p><b>  }</b></p><p>  3.2 各模塊(或算法)流程圖(標(biāo)明函數(shù)名)</p><p>  顯示已初始化的全部航線信息</p><p><b>  (2)查詢航線</b></p>

31、;<p><b>  a.按終點(diǎn)站查詢</b></p><p><b>  b.按航班號(hào)查詢</b></p><p> ?。?)瀏覽已訂票客戶信息</p><p><b>  訂票</b></p><p><b>  (5)辦理退票業(yè)務(wù)</b>

32、;</p><p><b>  四、系統(tǒng)實(shí)現(xiàn)</b></p><p>  4.1模塊一:初始化</p><p>  int readrecord(struct airline air[])</p><p><b>  { </b></p><p><b>  

33、FILE *fp;</b></p><p>  struct airline a;</p><p>  if((fp = fopen("airplane.txt","r")) != NULL)</p><p><b>  {</b></p><p>  while(!f

34、eof(fp))</p><p><b>  {</b></p><p>  fscanf(fp,"%s%s%s%s%d%d",a.ter_name,a.air_num,a.plane_num,a.day,&a.tkt_amt,&a.tkt_sur);</p><p>  strcpy(air[length]

35、.ter_name, a.ter_name);</p><p>  strcpy(air[length].air_num, a.air_num);</p><p>  strcpy(air[length].plane_num, a.plane_num);</p><p>  strcpy(air[length].day, a.day);</p><

36、;p>  air[length].tkt_amt = a.tkt_amt;</p><p>  air[length].tkt_sur = a.tkt_sur;</p><p><b>  length++;</b></p><p><b>  }</b></p><p>  air[leng

37、th].ter_name[0] = '\0';</p><p><b>  } </b></p><p><b>  else</b></p><p><b>  {</b></p><p>  printf("Can not open this fi

38、le!\n");</p><p><b>  exit(0);</b></p><p><b>  } </b></p><p>  return length;</p><p><b>  } </b></p><p>  4.2模塊二:顯示

39、每條航線信息</p><p>  void display(struct airline *info)</p><p>  /*輸出每條航線的基本信息*/</p><p><b>  {</b></p><p>  printf("%8s\t%3s\t%s\t%4s\t\t%3d\t%10d\n",i

40、nfo->ter_name,info->air_num,info->plane_num,info->day,info->tkt_amt,info->tkt_sur);</p><p><b>  }</b></p><p>  4.3模塊三:打印全部航線信息</p><p>  void list()<

41、/p><p><b>  { </b></p><p>  struct airline *info;</p><p><b>  int i=0;</b></p><p>  info=start;</p><p>  printf("終點(diǎn)站名\t航班號(hào)\t飛機(jī)號(hào)\

42、t飛行周日\(chéng)t乘員定額\t余票量\n");</p><p>  while(i<length)</p><p><b>  {</b></p><p>  display(info);</p><p><b>  info++;</b></p><p><

43、;b>  i++;</b></p><p><b>  }</b></p><p>  printf("\n\n");</p><p><b>  }</b></p><p>  4.4模塊四:根據(jù)客戶提出的終點(diǎn)站名輸出航線信息</p><p

44、>  void search()</p><p><b>  {</b></p><p>  int findHao();</p><p>  int findZhong();</p><p>  struct airline *find();</p><p>  printf("

45、1......按終點(diǎn)站查詢\n2......按航班號(hào)查詢\n");</p><p>  switch(getch())</p><p><b>  {</b></p><p><b>  case '1':</b></p><p>  findHao();</p>

46、;<p><b>  break;</b></p><p><b>  case '2':</b></p><p>  findZhong();</p><p><b>  break;</b></p><p><b>  default

47、:;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  4.5模塊五:根據(jù)客戶提出的終點(diǎn)站名輸出航線信息</p><p>  int findHao()</p><p><b>  {</b

48、></p><p>  struct airline *info;</p><p>  char name[10];</p><p><b>  int i=0;</b></p><p>  info=start;</p><p>  printf("請(qǐng)輸入終點(diǎn)站名:")

49、;</p><p>  scanf("%s",name);</p><p>  while(i<length)</p><p><b>  {</b></p><p>  if(!strcmp(name,info->ter_name)) break;//字符串比較</p>&

50、lt;p><b>  info++;</b></p><p><b>  i++;</b></p><p><b>  }</b></p><p>  if(i>=length)</p><p>  printf("對(duì)不起,該航線未找到!\n")

51、;</p><p><b>  else</b></p><p><b>  {</b></p><p>  printf("終點(diǎn)站名\t航班號(hào)\t飛機(jī)號(hào)\t飛行周日\(chéng)t乘員定額\t余票量\n");</p><p>  display(info);</p><

52、p><b>  }</b></p><p><b>  }</b></p><p>  4.6模塊六:根據(jù)系統(tǒng)提出的航班號(hào)查詢并以指針形式返回</p><p>  int findZhong()</p><p><b>  {</b></p><p&g

53、t;  struct airline *info;</p><p>  char number[10];</p><p><b>  int i=0;</b></p><p>  info=start;</p><p>  printf("請(qǐng)輸入航班號(hào):");</p><p>

54、  scanf("%s",number);</p><p>  while(i<length)</p><p><b>  {</b></p><p>  if(!strcmp(number,info->air_num))</p><p><b>  break;</b&g

55、t;</p><p><b>  info++;</b></p><p><b>  i++;</b></p><p><b>  }</b></p><p>  if(i>=length)</p><p>  printf("對(duì)不起,該

56、航線未找到!\n");</p><p><b>  else</b></p><p><b>  {</b></p><p>  printf("終點(diǎn)站名\t航班號(hào)\t飛機(jī)號(hào)\t飛行周日\(chéng)t乘員定額\t余票量\n");</p><p>  display(info);&

57、lt;/p><p><b>  }</b></p><p>  return NULL;</p><p><b>  }</b></p><p>  4.7模塊七:根據(jù)系統(tǒng)提出的航班號(hào)查詢并以指針形式返回</p><p>  struct airline *find()</

58、p><p><b>  {</b></p><p>  struct airline *info;</p><p>  char number[10];</p><p><b>  int i=0;</b></p><p>  info=start;</p><

59、;p>  printf("請(qǐng)輸入航班號(hào):");</p><p>  scanf("%s",number);</p><p>  while(i<length)</p><p><b>  {</b></p><p>  if(!strcmp(number,info-&g

60、t;air_num))</p><p>  return info;</p><p><b>  info++;</b></p><p><b>  i++;</b></p><p><b>  }</b></p><p>  if(i>=leng

61、th)</p><p>  printf("對(duì)不起,該航線未找到!\n");</p><p><b>  else</b></p><p><b>  {</b></p><p>  printf("終點(diǎn)站名\t航班號(hào)\t飛機(jī)號(hào)\t飛行周日\(chéng)t乘員定額\t余票量\n&q

62、uot;);</p><p>  display(info);</p><p><b>  }</b></p><p>  return NULL;</p><p><b>  }</b></p><p>  4.8模塊八:打印訂票乘員名單域的客戶名單信息</p>

63、<p>  void prtlink()</p><p>  { linklist *p;</p><p>  struct airline *info;</p><p>  info=find();</p><p>  p=info->order;</p><p>  if(p!=NULL)&l

64、t;/p><p><b>  {</b></p><p>  printf("客戶姓名 訂票數(shù)額 艙位等級(jí)\n");</p><p><b>  while(p)</b></p><p><b>  {</b></p><p> 

65、 printf("%s\t\t%d\t%d\n",p->name,p->ord_amt,p->grade);</p><p>  p=p->next;</p><p><b>  }</b></p><p><b>  }</b></p><p><

66、b>  else</b></p><p>  printf("該航線沒(méi)有客戶信息!!\n");</p><p><b>  }</b></p><p>  4.9模塊九:增加訂票乘員名單域的客戶信息</p><p>  linklist *insertlink(linklist *h

67、ead,int amount,char name[],int grade)</p><p><b>  { </b></p><p>  linklist *p1,*n;</p><p><b>  p1=head; </b></p><p>  n=(linklist *)malloc(size

68、of(linklist));</p><p><b>  if(!n)</b></p><p><b>  {</b></p><p>  printf("\nOut of memory!!\n");</p><p>  return NULL;</p><p

69、><b>  }</b></p><p>  strcpy(n->name,name);</p><p>  n->ord_amt=amount;</p><p>  n->grade=grade;</p><p>  n->next=NULL;</p><p>  

70、if(head==NULL)/*若原無(wú)訂票客戶信息*/</p><p><b>  {</b></p><p><b>  head=n;</b></p><p>  n->next=NULL;</p><p><b>  }</b></p><p&g

71、t;<b>  else</b></p><p><b>  head=n;</b></p><p>  n->next=p1;</p><p>  return head;</p><p><b>  }</b></p><p>  4.10模塊

72、十:增加排隊(duì)等候的客戶名單域</p><p>  linkqueue appendqueue(linkqueue q,char name[],int amount)</p><p><b>  { qptr n;</b></p><p>  n=(qptr)malloc(sizeof(qnode));</p><p> 

73、 strcpy(n->name,name);</p><p>  n->req_amt=amount;</p><p>  n->next=NULL;</p><p>  if(q.front==NULL)/*若原排隊(duì)等候客戶名單域?yàn)榭?/</p><p>  q.front=n;</p><p>&

74、lt;b>  else</b></p><p>  q.rear->next=n;</p><p><b>  q.rear=n;</b></p><p><b>  return q;</b></p><p><b>  }</b></p>

75、<p>  4.11模塊十一:訂票業(yè)務(wù)</p><p>  void order()</p><p>  /*辦理訂票業(yè)務(wù)*/</p><p>  { struct airline *info;</p><p>  int amount,grade;</p><p>  char name[10];&l

76、t;/p><p>  info=start;</p><p>  if(!(info=find()))</p><p>  return;/*根據(jù)客戶提供的航班號(hào)進(jìn)行查詢,如為空,退出該模塊*/</p><p>  printf("請(qǐng)輸入你訂票所需要的數(shù)量:");</p><p>  scanf(&qu

77、ot;%d",&amount);</p><p>  if(amount>info->tkt_amt)/*若客戶訂票額超過(guò)乘員定票總額,退出*/</p><p><b>  {</b></p><p>  printf("\n對(duì)不起,您輸入的票的數(shù)量已經(jīng)超過(guò)乘員定額!");</p>

78、<p><b>  return;</b></p><p><b>  }</b></p><p>  if(amount<=info->tkt_sur)/*若客戶訂票額末超過(guò)余票量,訂票成功并等記信息*/</p><p><b>  {</b></p><

79、p><b>  int i;</b></p><p>  printf("請(qǐng)輸入您的姓名(訂票客戶):");</p><p>  scanf("%s",name);</p><p>  printf("請(qǐng)輸入您需訂購(gòu)的機(jī)票的艙位等級(jí):",grade);</p>&l

80、t;p>  scanf("%d",&grade);</p><p>  info->order=insertlink(info->order,amount,name,grade);/*在訂票乘員名單域中添加客戶信息*/</p><p>  for(i=0;i<amount;i++)/*依次輸出該訂票客戶的座位號(hào)*/</p>

81、<p>  printf("%s的座位號(hào)是:%d\n",name,info->tkt_amt-info->tkt_sur+i+1);</p><p>  info->tkt_sur-=amount;/*該航線的余票量應(yīng)減掉該客戶的訂票量*/</p><p>  printf("\n祝您乘坐愉快!\n");</p>

82、;<p><b>  }</b></p><p>  else /*若滿員或余票額少于訂票額,詢問(wèn)客戶是否需要進(jìn)行排隊(duì)等候*/</p><p><b>  {</b></p><p><b>  char r;</b></p><p>  printf

83、("\n已經(jīng)沒(méi)有更多的票,您需要排隊(duì)等候嗎?(Y/N)");</p><p>  r=getch();</p><p>  printf("%c",r);</p><p>  if(r=='Y'||r=='y')</p><p><b>  {</b>

84、;</p><p>  printf("\n請(qǐng)輸入您的姓名(排隊(duì)訂票客戶):");</p><p>  scanf("%s",name);</p><p>  info->wait=appendqueue(info->wait,name,amount);/*在排隊(duì)等候乘員名單域中添加客戶信息*/</p>

85、<p>  printf("\n添加成功!\n");</p><p><b>  }</b></p><p>  else printf("\n歡迎您下次訂購(gòu)!\n");</p><p><b>  }</b></p><p><b>

86、  }</b></p><p>  4.12模塊十二:退票業(yè)務(wù)</p><p>  void return_tkt()</p><p><b>  /*退票模塊*/</b></p><p>  { struct airline *info;</p><p>  qnode *t,*b

87、ack,*f,*r;</p><p>  int grade;</p><p>  linklist *p1,*p2,*head;</p><p>  char cusname[10];</p><p>  if(!(info=find()))</p><p>  return;/*調(diào)用查詢函數(shù),根據(jù)客戶提供的航線進(jìn)行

88、搜索*/</p><p>  head=info->order;</p><p><b>  p1=head;</b></p><p>  printf("請(qǐng)輸入你的姓名(退票客戶):");</p><p>  scanf("%s",cusname);</p>

89、<p>  while(p1!=NULL)</p><p>  {/*根據(jù)客戶提供的姓名到訂票客戶名單域進(jìn)行查詢*/</p><p>  if(!strcmp(cusname,p1->name))</p><p><b>  break;</b></p><p><b>  p2=p1;<

90、/b></p><p>  p1=p1->next;</p><p><b>  }</b></p><p>  if(p1==NULL)</p><p><b>  {</b></p><p>  printf("對(duì)不起,你沒(méi)有訂過(guò)票!\n"

91、);</p><p><b>  return;</b></p><p>  }/*若未找到,退出本模塊*/</p><p><b>  else</b></p><p>  {/*若信息查詢成功,刪除訂票客戶名單域中的信息*/</p><p>  if(p1==head)

92、head=p1->next;</p><p>  else p2->next=p1->next;</p><p>  info->tkt_sur+=p1->ord_amt;</p><p>  grade=p1->grade;</p><p>  printf("%s成功退票!\n",p

93、1->name);</p><p><b>  free(p1);</b></p><p><b>  }</b></p><p>  info->order=head;/*重新將航線名單域指向訂票單鏈表的頭指針 */</p><p>  f=(info->wait).front;

94、/*f指向排隊(duì)等候名單隊(duì)列的頭結(jié)點(diǎn)*/</p><p>  r=(info->wait).rear;/*r指向排隊(duì)等候名單隊(duì)列的尾結(jié)點(diǎn)*/</p><p>  t=f;/*t為當(dāng)前滿點(diǎn)條件的排隊(duì)候補(bǔ)名單域*/</p><p><b>  while(t)</b></p><p><b>  {</b

95、></p><p>  if(info->tkt_sur>=info->wait.front->req_amt)</p><p>  {/*若滿足條件者為頭結(jié)點(diǎn)*/</p><p><b>  int i;</b></p><p>  info->wait.front=t->ne

96、xt;</p><p>  printf("%s訂票成功!\n",t->name);</p><p>  for(i=0;i<t->req_amt;i++)/*輸出座位號(hào)*/</p><p>  printf("%s的座位號(hào)是:%d\n",t->name,(info->tkt_sur)-i);&l

97、t;/p><p>  info->tkt_sur-=t->req_amt;</p><p>  info->order=insertlink(info->order,t->req_amt,t->name,grade);/*插入到訂票客戶名單鏈表中*/</p><p><b>  free(t);</b></

98、p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  back=t;</b></p><p>  t=t->next;</p><p>  if((info->tkt_sur)>=

99、(t->req_amt)&&t!=NULL)/*若滿足條件者不為頭結(jié)點(diǎn)*/</p><p><b>  {</b></p><p><b>  int i;</b></p><p>  back->next=t->next;</p><p>  printf(&qu

100、ot;%s訂票成功!\n",t->name);</p><p>  for(i=0;i<t->req_amt;i++)/*輸出座位號(hào)*/</p><p>  printf("<%s>'s seat number is:%d\n",t->name,(info->tkt_sur)-i);</p>&l

101、t;p>  info->tkt_sur-=t->req_amt;</p><p>  info->order=insertlink(info->order,t->req_amt,t->name,grade);/*插入到訂票客戶名單鏈表中*/</p><p><b>  free(t);</b></p><p

102、><b>  break;</b></p><p><b>  }</b></p><p><b>  if(f==r)</b></p><p><b>  break;</b></p><p><b>  }</b></

103、p><p><b>  }</b></p><p>  4.13模塊十三:主菜單</p><p>  int menu_select()</p><p><b>  /*菜單界面*/</b></p><p><b>  { int c;</b></p

104、><p>  char s[20];</p><p>  printf("\n\t\t航空客運(yùn)訂票系統(tǒng)\n");</p><p>  printf("******************************************\n");</p><p>  printf("1.瀏覽航線信息

105、:\n");</p><p>  printf("2.瀏覽已訂票客戶信息:\n");</p><p>  printf("3.查詢航線\n");</p><p>  printf("4.辦理訂票業(yè)務(wù):\n");</p><p>  printf("5.辦理退票業(yè)務(wù)

106、:\n");</p><p>  printf("6.退出系統(tǒng)\n");</p><p>  printf("*******************************************\n");</p><p><b>  do{</b></p><p>  

107、printf("請(qǐng)選擇:");</p><p>  scanf("%s",s);</p><p>  c=atoi(s);//convert string to int</p><p>  }while(c<0||c>7);</p><p><b>  return c;</

108、b></p><p><b>  }</b></p><p>  4.14模塊十四:主函數(shù)</p><p>  int main()</p><p>  { /*struct airline air[MAXSIZE]={{"beijing","1","B8571&

109、quot;,"SUN",3,3},</p><p>  {"shanghai","2","S1002","MON",2,2},</p><p>  {"london","3","L1003","FRI",1,1}

110、};/*初始化航線信息*/</p><p>  /* clrscr();*/</p><p>  readrecord(air);</p><p>  start=air;</p><p><b>  for(;;){</b></p><p>  switch(menu_select()){&l

111、t;/p><p>  case 1:list();break;</p><p>  case 2:prtlink();break;</p><p>  case 3:search();break;</p><p>  case 4:order();break;</p><p>  case 5:return_tkt();b

112、reak;</p><p>  case 6:printf("\n歡迎使用本系統(tǒng),再見(jiàn)!\n");exit(0);</p><p><b>  }</b></p><p>  printf("\nPress any key to continue!\n");</p><p><

113、;b>  getch();</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  五、程序的過(guò)程展示</b></p><p>  5.1 程序運(yùn)行過(guò)程展示</p><p>&

114、lt;b>  主界面</b></p><p><b>  瀏覽航線信息</b></p><p><b>  瀏覽已訂票客戶信息</b></p><p><b>  查詢航線</b></p><p><b>  辦理訂票業(yè)務(wù)</b><

115、/p><p><b>  辦理退票業(yè)務(wù)</b></p><p>  5.2 程序結(jié)果展示及分析</p><p><b>  六、軟件的輔助說(shuō)明</b></p><p>  6.1 本軟件的優(yōu)點(diǎn)</p><p>  能夠完成簡(jiǎn)單的訂票程序,簡(jiǎn)單易懂,在查詢航班時(shí)考慮了通過(guò)航班號(hào)查詢

116、和通過(guò)終點(diǎn)站查詢兩方面,使用戶操作更方便。另外,此軟件用鏈表及隊(duì)列實(shí)現(xiàn),節(jié)約內(nèi)存。訂票步驟較為簡(jiǎn)潔,節(jié)約顧客的時(shí)間。</p><p>  6.2 本軟件的缺點(diǎn)</p><p>  未涉及到更改航線這一用途,功能有限,對(duì)退票之后還款也沒(méi)有做出相應(yīng)的設(shè)計(jì)。訂票時(shí)只能按照航班號(hào)訂票,沒(méi)有時(shí)間信息,不能按其他方式訂票。用到的數(shù)據(jù)結(jié)構(gòu)課程的知識(shí)較少,在編寫(xiě)的時(shí)候只使用了相對(duì)較為簡(jiǎn)單的基礎(chǔ)語(yǔ)言,代替了

117、相對(duì)較為復(fù)雜的語(yǔ)言,降低了運(yùn)行效率。</p><p>  6.3 本軟件的BUG</p><p>  設(shè)計(jì)讀入文件時(shí)總導(dǎo)致程序無(wú)法運(yùn)行。</p><p>  查詢航線時(shí)雖設(shè)置了兩種查詢航線的方式,但是按航班號(hào)查詢時(shí)總出現(xiàn)錯(cuò)誤。</p><p>  退票時(shí)是按退票人姓名進(jìn)行查找的,沒(méi)有其他身份驗(yàn)證信息,若有人重名,都會(huì)被刪掉。</p>

118、;<p>  課程設(shè)計(jì)結(jié)論(意見(jiàn)、建議、心得、申報(bào)成績(jī)…)</p><p>  通過(guò)此次課程設(shè)計(jì),我明白了合作的重要性,雖然這個(gè)程序可能沒(méi)有別人編寫(xiě)的那么具有難度,但是也耗費(fèi)了我們很多精力,而如果讓任何一個(gè)人單獨(dú)完成的話,將會(huì)更加辛苦,每個(gè)人所擅長(zhǎng)的部分不一樣,合作體現(xiàn)出1+1>2的效果。除此之外,通過(guò)此次課程設(shè)計(jì),我加深了對(duì)調(diào)試的認(rèn)識(shí),調(diào)試是有技巧的,改變了過(guò)去只調(diào)試不知道如何對(duì)照程序語(yǔ)言修

119、改程序的壞習(xí)慣。</p><p>  計(jì)科1103班 高華超</p><p>  在這次的課程設(shè)計(jì)中我又學(xué)到了許多知識(shí),不僅是c語(yǔ)言的知識(shí),方法,技巧,更多的是我們?cè)趯W(xué)習(xí)過(guò)程中掌握的一些學(xué)習(xí)的技巧,手段和方法。雖然我們的程序還不是很完美,但我們也是精心準(zhǔn)備的。</p><p>  計(jì)科1103班 朱楠</p><p>  參考文獻(xiàn)(參考網(wǎng)站

120、)</p><p>  數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)</p><p><b>  百度文庫(kù)</b></p><p><b>  九、附錄 源代碼</b></p><p>  #include <stdio.h></p><p>  #include <stdlib.

121、h></p><p>  #include <string.h></p><p>  #include<conio.h></p><p>  #include <iostream></p><p>  #define MAXSIZE 100 /*定義航線量的最大值*/</p><p

122、>  using namespace std;</p><p>  typedef struct wat_ros</p><p>  { char name[10];/*姓名*/</p><p>  int req_amt;/*訂票量*/</p><p>  struct wat_ros *next;</p><p

123、>  }qnode,*qptr;</p><p>  typedef struct pqueue</p><p>  { qptr front;/*等候替補(bǔ)客戶名單域的頭指針*/</p><p>  qptr rear;/*等候替補(bǔ)客戶名單域的屬指針*/</p><p>  }linkqueue;</p><p&g

124、t;  typedef struct ord_ros</p><p>  { char name[10];/*客戶姓名*/</p><p>  int ord_amt;/*訂票量*/</p><p>  int grade;/*艙位等級(jí)*/</p><p>  struct ord_ros *next;</p><p&g

125、t;  }linklist;</p><p>  struct airline</p><p>  { char ter_name[10];/*終點(diǎn)站名 */</p><p>  char air_num[10];/*航班號(hào)*/</p><p>  char plane_num[10];/*飛機(jī)號(hào)*/</p><p&g

126、t;  char day[7];/*飛行周日(星期幾)*/</p><p>  int tkt_amt;/*票量定額*/</p><p>  int tkt_sur;/*余票量*/</p><p>  linklist *order;/*乘員名單域,指向乘員名單鏈表的頭指針*/</p><p>  linkqueue wait;/*等候替補(bǔ)的

127、客戶名單域,分別指向排隊(duì)等候名單隊(duì)頭隊(duì)尾的指針*/</p><p>  struct airline *next; </p><p>  }air[100];</p><p>  struct airline *start;</p><p>  int length =0;</p><p>  int readreco

128、rd(struct airline air[])</p><p><b>  { </b></p><p><b>  FILE *fp;</b></p><p>  struct airline a;</p><p>  if((fp = fopen("airplane.txt&q

129、uot;,"r")) != NULL)</p><p><b>  {</b></p><p>  while(!feof(fp))</p><p><b>  {</b></p><p>  //fscanf(fp,"%s %s %s %s %d %d ",

130、air[length].ter_name,air[length].air_num,air[length].plane_num,air[length].day,air[length].tkt_amt,air[length].tkt_sur);</p><p>  fscanf(fp,"%s%s%s%s%d%d",a.ter_name,a.air_num,a.plane_num,a.day,&am

131、p;a.tkt_amt,&a.tkt_sur);</p><p>  strcpy(air[length].ter_name, a.ter_name);</p><p>  strcpy(air[length].air_num, a.air_num);</p><p>  strcpy(air[length].plane_num, a.plane_num);

132、</p><p>  strcpy(air[length].day, a.day);</p><p>  air[length].tkt_amt = a.tkt_amt;</p><p>  air[length].tkt_sur = a.tkt_sur;</p><p><b>  length++;</b></

133、p><p><b>  }</b></p><p>  air[length].ter_name[0] = '\0';</p><p><b>  } </b></p><p><b>  else</b></p><p><b>

134、  {</b></p><p>  printf("Can not open this file!\n");</p><p><b>  exit(0);</b></p><p><b>  } </b></p><p>  return length;</p&

135、gt;<p><b>  } </b></p><p>  void display(struct airline *info)</p><p>  /*輸出每條航線的基本信息*/</p><p><b>  {</b></p><p>  printf("%8s\t%3s\

136、t%s\t%4s\t\t%3d\t%10d\n",info->ter_name,info->air_num,info->plane_num,info->day,info->tkt_amt,info->tkt_sur);</p><p><b>  }</b></p><p>  void list()/*打印全部航線信息*

137、/</p><p>  { struct airline *info;</p><p><b>  int i=0;</b></p><p>  info=start;</p><p>  printf("終點(diǎn)站名\t航班號(hào)\t飛機(jī)號(hào)\t飛行周日\(chéng)t乘員定額\t余票量\n");</p>

138、<p>  while(i<length)</p><p><b>  {</b></p><p>  display(info);</p><p><b>  info++;</b></p><p><b>  i++;</b></p><

139、;p><b>  }</b></p><p>  printf("\n\n");</p><p><b>  }</b></p><p>  void search()</p><p>  /*根據(jù)客戶提出的終點(diǎn)站名輸出航線信息*/</p><p>

140、<b>  {</b></p><p>  int findHao();</p><p>  int findZhong();</p><p>  struct airline *find();</p><p>  printf("1......按終點(diǎn)站查詢\n2......按航班號(hào)查詢\n");&l

141、t;/p><p>  switch(getch())</p><p><b>  {</b></p><p><b>  case '1':</b></p><p>  findHao();</p><p><b>  break;</b>&

142、lt;/p><p><b>  case '2':</b></p><p>  findZhong();</p><p><b>  break;</b></p><p><b>  default:;</b></p><p><b&g

143、t;  }</b></p><p><b>  }</b></p><p>  int findHao()</p><p>  /*根據(jù)客戶提出的終點(diǎn)站名輸出航線信息*/</p><p><b>  {</b></p><p>  struct airline *

144、info;</p><p>  char name[10];</p><p><b>  int i=0;</b></p><p>  info=start;</p><p>  printf("請(qǐng)輸入終點(diǎn)站名:");</p><p>  scanf("%s"

145、;,name);</p><p>  while(i<length)</p><p><b>  {</b></p><p>  if(!strcmp(name,info->ter_name)) break;//字符串比較</p><p><b>  info++;</b></p&

146、gt;<p><b>  i++;</b></p><p><b>  }</b></p><p>  if(i>=length)</p><p>  printf("對(duì)不起,該航線未找到!\n");</p><p><b>  else</b

147、></p><p><b>  {</b></p><p>  printf("終點(diǎn)站名\t航班號(hào)\t飛機(jī)號(hào)\t飛行周日\(chéng)t乘員定額\t余票量\n");</p><p>  display(info);</p><p><b>  }</b></p><

溫馨提示

  • 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)論