數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--航空訂票系統(tǒng)_第1頁
已閱讀1頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  本科生課程設(shè)計(jì)報(bào)告書</p><p>  題 目 航空客運(yùn)訂票系統(tǒng) </p><p>  姓  名   </p><p>  學(xué)  號(hào)    </p><p>  學(xué)  院   信息工程學(xué)院  &l

2、t;/p><p>  ?! I(yè)   計(jì)算機(jī)  </p><p>  指導(dǎo)教師   XXXXXX </p><p>  完成日期: 2012-XX-XX</p><p><b>  航空客運(yùn)訂票系統(tǒng)</b></p><p><b>  1 需求分析

3、</b></p><p><b>  【問題描述】</b></p><p>  試設(shè)計(jì)一個(gè)航空客運(yùn)訂票系統(tǒng),方便乘客通過購票系統(tǒng)購買自己的所需要的飛機(jī)票,而航空客運(yùn)訂票的業(yè)務(wù)活動(dòng)包括:1.查詢航線;2.客票預(yù)訂;3.辦理退票。</p><p>  【系統(tǒng)能實(shí)現(xiàn)的功能】</p><p> ?、黉浫耄河稍O(shè)計(jì)者錄入

4、航班情況,數(shù)據(jù)存儲(chǔ)在文件中;</p><p>  ②查詢航線:由用戶輸入終點(diǎn)站名,出發(fā)時(shí)間,輸出下列信息:</p><p>  所有可能的航班號(hào),當(dāng)天航班的余票數(shù)目;</p><p> ?、鄢修k訂票業(yè)務(wù):根據(jù)用戶提出的要求(航班號(hào)、出發(fā)時(shí)間、訂票數(shù)額)查詢</p><p>  該航班票額情況,若尚有余票,則為客戶辦理訂票手續(xù),輸出座位號(hào);已滿

5、員或余票額少于訂票額,則需重新詢問客戶是否需要進(jìn)入預(yù)約人數(shù)中。</p><p>  ④承辦退票業(yè)務(wù):根據(jù)用戶提供的情況(日期、航班、票數(shù)等),為客戶辦理</p><p>  退票手續(xù)。然后查詢?cè)摵桨嗍欠裼腥伺抨?duì)候補(bǔ),首先詢問排在第一的客戶,若所退票數(shù)目能滿足他的要求,則為他辦理訂票手續(xù),否則依次詢問其他排隊(duì)候補(bǔ)的客戶。</p><p><b>  【測(cè)試實(shí)

6、例】</b></p><p>  例子某客戶輸入訂票信息:北京到上海 ,2014年5月3日,所需票數(shù)3張;系統(tǒng)輸出:所有可能航班號(hào)1000,1001,1002 余票分別為40張,50張,55張;該客戶選擇航班號(hào)為1000的航班;則該航班余票變?yōu)?7張;</p><p><b>  2 概要設(shè)計(jì)</b></p><p>  航線的情況

7、和已訂票客戶登錄在一張線性表上,分別用順序表和單鏈表實(shí)現(xiàn);</p><p><b>  ADT list{</b></p><p>  數(shù)據(jù)對(duì)象 :D = {ai | ai ∈ElemSet,i = 1,2,…,n,n>=0}</p><p>  數(shù)據(jù)關(guān)系 :R1 = {<ai-1,ai>|ai-1,ai∈D,i = 2, …

8、,n}</p><p><b>  基本操作 :</b></p><p>  InitList70219(&L)</p><p>  操作結(jié)果:構(gòu)造一個(gè)空的線性表L;</p><p>  ListInsert70219(&L,i,e)</p><p>  初始條件:線性表L已經(jīng)存在

9、;</p><p>  操作結(jié)果:在L中第i個(gè)位置之前插入新的元素e,L的長(zhǎng)度加1;</p><p>  ListDelete70219(&L,i,&e)</p><p>  初始條件:線性表L已經(jīng)存在且非空,</p><p>  操作結(jié)果:刪除L的第i個(gè)位置的元素,并用e返回其值,L的長(zhǎng)度減1;</p><

10、;p><b>  }</b></p><p>  預(yù)約客戶信息的存儲(chǔ)使用隊(duì)列。</p><p>  ADT Queue{</p><p>  數(shù)據(jù)對(duì)象 :D = {ai | ai ∈ElemSet,i = 1,2,…,n,n>=0}</p><p>  數(shù)據(jù)關(guān)系 :R1 = {<ai-1,ai>|

11、ai-1,ai∈D,i = 2, …,n}</p><p>  約定其中a1端為隊(duì)頭,an端為隊(duì)列尾。</p><p><b>  基本操作 :</b></p><p>  InitQueue70219( &Q);</p><p>  操作結(jié)果:構(gòu)造一個(gè)空隊(duì)列;</p><p>  Que

12、ueEmpty70219 (&Q);</p><p>  初始條件:隊(duì)列Q已存在;</p><p>  操作結(jié)果:若Q為空隊(duì)列,則返回1,否則返回 0;</p><p>  EnQueue70219( &Q, &e);</p><p>  初始條件:隊(duì)列Q已存在;</p><p>  操作結(jié)果:

13、插入元素e為Q的新隊(duì)尾元素;</p><p>  DeQueue70219(&Q,&e);</p><p>  初始條件:隊(duì)列Q已存在,且非空;</p><p>  操作結(jié)果:刪除Q的隊(duì)頭元素,并用e返回其值。</p><p>  Gedhead70219(&Q,&e);</p><p>

14、;  初始條件:隊(duì)列Q已存在,且非空;</p><p>  操作結(jié)果:取隊(duì)列的隊(duì)頭元素,用e返回;</p><p><b>  }</b></p><p>  航空系統(tǒng)用到的其他的函數(shù):</p><p>  void entry70219();</p><p>  操作結(jié)果:初始化錄入功能<

15、/p><p>  void search70219();</p><p>  初始條件:初始化錄入成功</p><p>  操作結(jié)果:通過始發(fā)地和終點(diǎn)站查詢</p><p>  void book70219();</p><p>  初始條件:初始化錄入成功</p><p><b>  操

16、作結(jié)果:實(shí)現(xiàn)訂票</b></p><p>  void returnticket70219();</p><p>  初始條件:已經(jīng)成功預(yù)訂機(jī)票;</p><p>  操作結(jié)果:實(shí)現(xiàn)退票;</p><p>  int main()</p><p><b>  {</b></p&g

17、t;<p><b>  int n;</b></p><p><b>  do{ //主界面</b></p><p>  printf("\n 歡迎使用航空客運(yùn)訂票系統(tǒng)\n");</p><p>  printf("\n==>1. 錄入功能 ==\n");<

18、/p><p>  printf("\n==>2. 查詢功能 ==\n");</p><p>  printf("\n==>3. 訂票功能 ==\n");</p><p>  printf("\n==>4. 退票功能 ==\n");</p><p>  printf(&q

19、uot;\n==>5. 退出 ==\n");</p><p>  scanf("%d",&n);</p><p>  printf("\n");</p><p><b>  switch(n)</b></p><p><b>  {</b&g

20、t;</p><p>  case 1: entry70219();//錄入功能</p><p><b>  break;</b></p><p>  case 2: search70219();//查詢功能</p><p><b>  break;</b></p><p>

21、  case 3: book70219();//訂票功能</p><p><b>  break;</b></p><p>  case 4: returnticket70219();//退票功能</p><p><b>  break;</b></p><p>  default :exit(0)

22、;//退出</p><p><b>  }</b></p><p>  } while(n==1||n==2||n==3||n==4);</p><p><b>  return 0;</b></p><p><b>  }</b></p><p>&l

23、t;b>  3 詳細(xì)設(shè)計(jì)</b></p><p>  已訂票客戶的單鏈表存儲(chǔ)結(jié)構(gòu) </p><p>  typedef struct booked{</p><p>  char name[20];//訂票客戶姓名</p><p>  int bookednum;//該客戶已訂票數(shù)</p><p> 

24、 struct booked *next_1;//指向下一客戶的</p><p>  }booked,*LinkList;</p><p>  預(yù)約客戶的隊(duì)列存儲(chǔ)結(jié)構(gòu)</p><p>  typedef struct yuyue{</p><p>  char name[20];//預(yù)約客戶姓名</p><p>  i

25、nt yuyuenum;//該客戶預(yù)約票數(shù)</p><p>  struct yuyue *next_2;//指向下一客戶的</p><p>  }yuyue,*Qnode;</p><p>  typedef struct {</p><p>  Qnode front;//隊(duì)頭指針</p><p>  Qnode

26、 rear;//隊(duì)尾指針</p><p>  }LinkQueue;</p><p>  每條航線是這張表上的一個(gè)記錄,包含8個(gè)域、其中乘員名單域?yàn)橹赶虺藛T名單鏈表的頭指針,等候替補(bǔ)的客戶名單域?yàn)榉謩e指向隊(duì)頭和隊(duì)尾的指針。</p><p>  航班的相關(guān)信息使用順序表存儲(chǔ)結(jié)構(gòu)</p><p>  typedef struct hangxia

27、n {</p><p>  char hangbannum[10];// 航班號(hào)</p><p>  char feijinum[10];// 飛機(jī)號(hào)</p><p>  char zhongdian[20];// 終點(diǎn)站名</p><p>  int starttime ;//飛行時(shí)間</p><p>  int t

28、otalnum//乘員定額</p><p>  int leftnum;//余票量</p><p>  booked *yiding;//指向已訂票客戶的頭結(jié)點(diǎn)指針</p><p>  LinkQueue *yuyuequeue;//指向預(yù)約客戶隊(duì)列的指針</p><p>  } hangxian;</p><p>

29、;<b>  1鏈表的操作:</b></p><p>  1.1初始化單鏈表來存儲(chǔ)訂票客戶的信息:</p><p>  申請(qǐng)帶有頭結(jié)點(diǎn)的單鏈表;</p><p>  如果申請(qǐng)失敗則退出程序;</p><p>  頭結(jié)點(diǎn)的下一個(gè)指針為空</p><p>  返回值為初始化的頭結(jié)點(diǎn)指針;</p&

30、gt;<p>  LinkList InitList70219(LinkList &la){</p><p>  la = (LinkList)malloc(sizeof(booked));</p><p>  if(la==NULL)exit(0);</p><p>  la->next_1 = NULL;</p><

31、;p>  return la;}</p><p>  1.2插入訂票客戶的信息:、</p><p>  該節(jié)點(diǎn)指針域存儲(chǔ)la的指針域的指針;</p><p>  la的指針域存儲(chǔ)新申請(qǐng)的節(jié)點(diǎn)的指針;</p><p>  void lianbiaoInsert70219(LinkList &la,LinkList &s){

32、</p><p>  s->next_1 = la->next_1;</p><p>  la->next_1 = s; </p><p><b>  return ;}</b></p><p>  1.3刪除退票客戶信息:</p><p>  傳入的刪除節(jié)點(diǎn)的

33、前一個(gè)節(jié)點(diǎn)的地址;</p><p>  刪除傳入的指針的后一個(gè)節(jié)點(diǎn);</p><p><b>  釋放該節(jié)點(diǎn);</b></p><p>  void lianbiaoDelete70219(LinkList &s){ </p><p>  LinkList q = s,p;</p><p>

34、;  p = q->next_1;</p><p>  q->next_1 = p->next_1;</p><p><b>  free(p);}</b></p><p><b>  2隊(duì)列的操作:</b></p><p><b>  2.1初始化隊(duì)列</b>

35、;</p><p>  為頭尾指針申請(qǐng)一個(gè)頭節(jié)點(diǎn);</p><p><b>  申請(qǐng)失敗則退出;</b></p><p>  此時(shí)頭結(jié)點(diǎn)指針域?yàn)榭眨?lt;/p><p><b>  返回Q值;</b></p><p>  LinkQue InitQueue70219(LinkQu

36、e &Q){</p><p>  Q=(LinkQueue*)malloc(sizeof(LinkQueue)) ;</p><p>  Q->front = Q->rear=(Qnode)malloc(sizeof(yuyue));</p><p>  if(!Q->front)exit(-1); </p>

37、<p>  Q->rear->next_2 = NULL; </p><p>  return Q;}</p><p>  2.2 插入預(yù)約客戶的信息:</p><p>  插入節(jié)點(diǎn)的指針域?yàn)榭眨?lt;/p><p>  隊(duì)尾指針中的指針域存儲(chǔ)傳入的節(jié)點(diǎn)地址;</p>

38、;<p>  隊(duì)尾指針存儲(chǔ)傳入節(jié)點(diǎn)的地址;</p><p>  void EnQueue70219(LinkQue &Q,Qnode p){</p><p>  p->next_2 = NULL;</p><p>  Q->rear->next_2 = p;</p><p>  Q->rear =

39、 p;}</p><p>  2.3刪除隊(duì)列的首元素,即第一個(gè)預(yù)約的客戶:</p><p><b>  判斷是否為空隊(duì)列;</b></p><p>  不為空則刪除隊(duì)列首元素;</p><p>  隊(duì)列中最后一個(gè)元素被刪除時(shí),使隊(duì)尾指針指向頭結(jié)點(diǎn);</p><p><b>  釋放該節(jié)點(diǎn)

40、;</b></p><p>  LinkQue DeQueue70219(LinkQue &Q){</p><p>  if(Q->front ==Q->rear) exit(-1);</p><p>  p = Q->front->next_2; </p><p>  Q-&

41、gt;front->next_2 = p->next_2;</p><p>  if(Q->rear == p)Q->rear = Q->front; </p><p><b>  free(p);</b></p><p>  return Q;}</p><p><b>  2

42、.4取隊(duì)頭元素:</b></p><p>  先判斷隊(duì)列是否為空;</p><p>  不為空則取隊(duì)頭元素;</p><p>  Qnode Gedhead70219(LinkQue &Q)</p><p>  {if(Q->front == Q->rear)return NULL;</p>&l

43、t;p>  s = (Q->front->next_2);</p><p>  return s;}</p><p>  3.飛行航線的錄入:</p><p><b>  打開文件讀取數(shù)據(jù);</b></p><p>  從文件讀取的所有航班信息;</p><p>  將讀入的數(shù)據(jù)

44、顯示到屏幕上;</p><p><b>  關(guān)閉文件;</b></p><p>  void entry70219(hangxian air[20];){</p><p>  FILE *fp = fopen(filename,"r");</p><p>  int errno = 0;</p

45、><p>  if(!fp)exit(-1);</p><p>  while(!feof(fp) && i<20)</p><p>  {fscanf(fp,"%s%s%s%s%d%d",air[i].hangbannum,air[i].feijinum,air[i].zhongdian</p><p>

46、;  air[i].starttime,&(air[i].totalnum),&(air[i].leftnum));</p><p>  InitQueue70219(air[i].yuyueque);</p><p>  InitList70219(air[i].yiding) ;</p><p><b>  i++;}</b>

47、;</p><p>  fclose(fp);</p><p><b>  }</b></p><p><b>  4.查詢功能:</b></p><p>  輸入終點(diǎn)站以查詢某航線所有信息;</p><p>  在順序表中查找該航線信息;</p><p&

48、gt;  找到則顯示該航班的信息;</p><p>  void search70219(hangxian air[20]) {</p><p>  scanf("%s",city);</p><p>  for(i = 0;i < 20;i++){</p><p>  if(!strcmp(air[i].zhong

49、dian,city))</p><p><b>  break;}</b></p><p><b>  if(i =20)</b></p><p><b>  return;</b></p><p><b>  }</b></p><p

50、><b>  5.訂票功能:</b></p><p>  在數(shù)組中查找客戶輸入的航線信息;</p><p><b>  如果找到該航線</b></p><p>  輸入訂票姓名和票數(shù);</p><p>  判斷該客戶所定的航班的余票是否足夠;</p><p>  足夠則

51、把客戶提供的姓名和票數(shù),輸入到該航線對(duì)應(yīng)的鏈表中;</p><p>  航線的余票數(shù)目發(fā)生改變;</p><p>  訂票成功則退出程序;</p><p>  否則提示余票不足,詢問是否預(yù)約;</p><p>  預(yù)約則把該客戶的信息插入到預(yù)約客戶的隊(duì)列隊(duì)尾;</p><p>  輸入的終點(diǎn)站不存在,退出程序;<

52、/p><p>  void book70219(hangxian air[20] ) { </p><p>  scanf("%s",city);//</p><p>  for(i = 0;i < 20;i++){</p><p>  if(!strcmp(air[i].zhongdian,city)){</p&

53、gt;<p>  scanf("%s",name);</p><p>  scanf("%d",&ticket_num);</p><p>  if(air[i].leftnum>=ticket_num) {</p><p>  b = (LinkList)malloc(sizeof(booked

54、));</p><p>  b->bookednum = ticket_num; </p><p>  strcpy(b->name, name);</p><p>  lianbiaoInsert70219(air[i].yiding,b); </p><p>  air[i].leftnum =

55、air[i].leftnum - ticket_num; </p><p><b>  return ;}</b></p><p><b>  else{</b></p><p>  E = (Qnode)malloc(sizeof(yuyue)) ; </p><p>  E->yuyuen

56、um = ticket_num; </p><p>  strcpy(E->name, name);</p><p>  EnQueue70219(air[i].yuyueque,E); /</p><p><b>  return ;}</b></p><p> 

57、 else return;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  return ;</b></p><p><b&g

58、t;  }</b></p><p><b>  6. 退票功能:</b></p><p><b>  尋找航線位置;</b></p><p>  客戶輸入姓名在該航線訂票客戶中查找;</p><p>  訂票客戶鏈表為空不進(jìn)行循環(huán);</p><p>  通過姓名尋

59、找到訂票客戶的節(jié)點(diǎn)位置;</p><p><b>  以取消訂閱;</b></p><p>  沒有找到則繼續(xù)尋找;</p><p>  退出循環(huán)時(shí)指針仍然存在則表示退票成功;</p><p>  否則提示沒有找到客戶的信息;</p><p>  判斷退票成功時(shí)是否有預(yù)約客戶;</p>

60、<p>  有則判斷此時(shí)該航線的余票是否滿足第一個(gè)預(yù)約客戶的訂票需求;</p><p><b>  滿足則客戶訂票;</b></p><p><b>  取隊(duì)列的對(duì)頭元素;</b></p><p>  將隊(duì)頭的元素信息插入到鏈表中;</p><p>  從隊(duì)列取出的元素插入到訂票客戶鏈

61、表中;</p><p>  刪除隊(duì)列的隊(duì)頭元素;</p><p>  void returnticket70219(hangxian air[20]){</p><p>  scanf(city);</p><p>  for(i = 0;i < 20;i++) {</p><p>  if(!strcmp(a

62、ir[i].zhongdian,city)){</p><p>  scanf(name);</p><p>  p = air[i].yiding;</p><p>  if(p->next_1){</p><p>  while(p->next_1){</p><p>  if(!strcmp(p-&g

63、t;next_1->name,name)){</p><p>  air[i].leftnum+=p->next_1->bookednum ;</p><p>  lianbiaoDelete70219(p); </p><p>  break; </p><p><b&

64、gt;  }</b></p><p>  p = p->next_1; </p><p><b>  j = 1;</b></p><p><b>  }</b></p><p><b>  if(j==1)</b></p><p>&

65、lt;b>  return ;</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  return;</b></p><p>  m = air[i].yuyueque->front;

66、</p><p>  if(m->next_2)</p><p>  { if(m->next_2->yuyuenum <= air[i].leftnum)</p><p><b>  { </b></p><p>  h = Gedhead70219(air[i].yuyueque);

67、 </p><p>  s = (LinkList)malloc(sizeof(booked));</p><p>  strcpy(s->name , h->name); </p><p>  s->bookednum = h->yuyuenum;</p><p>  air[i].leftnum = ai

68、r[i].leftnum - h->yuyuenum;</p><p>  lianbiaoInsert70219(air[i].yiding,s); </p><p>  DeQueue70219(air[i].yuyueque); </p><p><b>  }</b></p><p><b> 

69、 }</b></p><p><b>  return ;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  return ;</b></p><p>&

70、lt;b>  }</b></p><p>  int main()</p><p><b>  {</b></p><p><b>  int n;</b></p><p><b>  do{ //主界面</b></p><p>  p

71、rintf("\n 歡迎使用航空客運(yùn)訂票系統(tǒng)\n");</p><p>  printf("\n==>1. 錄入功能 ==\n");</p><p>  printf("\n==>2. 查詢功能 ==\n");</p><p>  printf("\n==>3. 訂票功能 ==\

72、n");</p><p>  printf("\n==>4. 退票功能 ==\n");</p><p>  printf("\n==>5. 退出 ==\n");</p><p>  scanf("%d",&n);</p><p>  switch(n){

73、</p><p>  case 1: entry70219(air);//錄入功能</p><p><b>  break;</b></p><p>  case 2: search70219(air);//查詢功能</p><p><b>  break;</b></p><p

74、>  case 3: book70219(air);//訂票功能</p><p><b>  break;</b></p><p>  case 4: returnticket70219(air);//退票功能</p><p><b>  break;</b></p><p>  defaul

75、t :exit(0);//退出</p><p><b>  }</b></p><p>  } while(n==1||n==2||n==3||n==4);</p><p><b>  return 0;</b></p><p><b>  }</b></p>&

76、lt;p><b>  4 編碼調(diào)試</b></p><p>  運(yùn)行程序主界面如圖1</p><p><b>  圖1</b></p><p>  從文件中導(dǎo)入航班的信息:輸入的數(shù)據(jù)能基本能正確導(dǎo)入結(jié)構(gòu)體中,并在屏幕中顯示出來,但在文件中再加入一行航班信息時(shí)屏幕上不會(huì)顯示,但在查詢時(shí)能輸出該航線的信息,表明文件正確導(dǎo)

77、入結(jié)構(gòu)體中,但沒有輸出到屏幕上,將for(j = 0;j<i-1;j++)中的i-1改成i,并且文件中輸入數(shù)據(jù)時(shí)不要輸入多余的空格就可以正確顯示出來;如圖2 </p><p><b>  圖2</b></p><p>  查詢終點(diǎn)站為武漢的航班信息如圖3</p><p><b>  圖3</b></p>

78、<p>  查詢終點(diǎn)站為廣州的航班信息如圖4</p><p><b>  圖4</b></p><p>  訂票模塊:訂票時(shí)各航線數(shù)據(jù)除第一行外都能夠正確顯示,并提示訂票。經(jīng)過調(diào)試發(fā)現(xiàn)是從文件導(dǎo)入數(shù)據(jù)時(shí)第一行數(shù)據(jù)沒有正確初始化;改進(jìn)之后就可以全部顯示; 此中第一條航班信息北京即為邊界數(shù)據(jù)。</p><p>  選擇訂票有航線:北京,

79、姓名:王,訂票數(shù):7,顯示訂票成功,如圖5</p><p>  圖5 </p><p>  在此基礎(chǔ)上選擇訂票,姓名:張;訂票數(shù):4,顯示余票不足,選擇預(yù)約如圖6</p><p><b>  圖6</b></p><p>  退票模塊:進(jìn)入退票功能時(shí),輸入航班后

80、提示輸入訂票客戶姓名但不管輸入任何訂票客戶的信息都提示沒有該客戶的信息,則說明退票函數(shù)的功能沒有正確執(zhí)行。錯(cuò)誤的原因:刪除訂票客戶節(jié)點(diǎn)的函數(shù)lianbiaoDelete70219的參數(shù)沒有傳遞對(duì),剛開始傳遞的是該航線單鏈表的頭指針,根據(jù)函數(shù)功能應(yīng)該傳遞的是這項(xiàng)刪除節(jié)點(diǎn)的前一個(gè)節(jié)點(diǎn)的指針,改正之后能夠正確執(zhí)行函數(shù)功能;</p><p>  在以上客戶訂票基礎(chǔ)上執(zhí)行退票,航線:北京,姓名:王。退票成功并且是首位預(yù)約客

81、戶訂票成功,如圖7</p><p><b>  圖7</b></p><p><b>  5 設(shè)計(jì)體會(huì)</b></p><p>  由于是首次進(jìn)行稍微復(fù)雜的程序設(shè)計(jì),所以在需求分析階段需花費(fèi)一定</p><p>  的時(shí)間以便深刻的了解該階段到底要實(shí)現(xiàn)什么功能,才能為后幾個(gè)階段做好準(zhǔn)備;比如需求分析

82、時(shí)寫入了較多的專業(yè)術(shù)語既是一種錯(cuò)誤的做法,此階段需要的是可供非專業(yè)人員讀懂的設(shè)計(jì)要求,所以過多的專業(yè)術(shù)語將導(dǎo)致需求分析失去了其作用;</p><p>  概要設(shè)計(jì)時(shí)及要求大腦中有一個(gè)大概的輪廓知道如何設(shè)計(jì)各種數(shù)據(jù)類型</p><p>  并進(jìn)行存儲(chǔ)以及個(gè)數(shù)據(jù)類型之間的關(guān)系,需要知道主功能模塊與個(gè)數(shù)據(jù)類型基本操作之間的調(diào)用關(guān)系;</p><p>  詳細(xì)設(shè)計(jì)時(shí)實(shí)現(xiàn)實(shí)現(xiàn)

83、個(gè)函數(shù)功能做主要的階段,由于以往不良的編程習(xí)</p><p>  慣導(dǎo)致剛開始設(shè)計(jì)程序時(shí)是直接上手敲代碼,致使函數(shù)功能的實(shí)現(xiàn)中出現(xiàn)了大量的錯(cuò)誤,后來在張有華老師的要求下重頭開始先用漢字將算法描述一遍,然后再有類c語言寫出算法,這樣不僅讓函數(shù)功能的實(shí)現(xiàn)更加清晰,而且使得程序在編譯時(shí)錯(cuò)誤大大減少;</p><p>  4.編碼調(diào)試階段由于函數(shù)中任然存在各種問題,如指針、引用的使用,函數(shù)參數(shù)的傳

84、遞,實(shí)參、虛參之間的關(guān)系,在老師和同學(xué)的幫助下終于將問題一一擊破;</p><p>  5. 測(cè)試結(jié)果及所采用的測(cè)試相關(guān)數(shù)據(jù)已經(jīng)在編碼調(diào)試階段給出了一些分析,錄入航班信息的功能時(shí)間復(fù)雜度為O(n)、空間復(fù)雜度為O(l),查詢功能的時(shí)間復(fù)雜度為O(n),空間復(fù)雜度O(n),訂票功能的時(shí)間復(fù)雜度為O(n),時(shí)間復(fù)雜度O(l),</p><p>  退票功能的時(shí)間復(fù)雜度為O(n*n);</

85、p><p>  6.算法改進(jìn),此程序中預(yù)約客戶使用隊(duì)列的存儲(chǔ)存在一個(gè)缺陷。即隊(duì)列是采用的尾進(jìn)頭出的存儲(chǔ)結(jié)構(gòu),也就是說大部分的預(yù)約客戶(隊(duì)頭元素除外)不能夠?qū)崿F(xiàn)取消預(yù)約的情況,顯然在實(shí)際情況中不大合情理。改進(jìn)思路可以采用鏈表的形式存儲(chǔ),但需要對(duì)鏈表進(jìn)行一定的限制,如必須在鏈表尾部插入新的預(yù)約客戶信息。另一個(gè)需要改進(jìn)的地方是航空客運(yùn)訂票系統(tǒng)應(yīng)該分成幾個(gè)不同的操作界面,外部客戶界面、內(nèi)部系統(tǒng)界面這樣才與現(xiàn)實(shí)的情況相符合;&

86、lt;/p><p>  7.本次課程設(shè)計(jì)是我對(duì)c語言的運(yùn)用更加熟練,理解更加深刻,同時(shí)對(duì)數(shù)據(jù)結(jié)構(gòu)最基本的操作理解更進(jìn)一步,同時(shí)加深了對(duì)軟件工程的認(rèn)識(shí)。是自己對(duì)今后的就業(yè)方向更加清晰,師生、同伴之間的交流加強(qiáng)了團(tuán)隊(duì)合作的呢能力;</p><p><b>  6 致謝</b></p><p>  /*提示:培養(yǎng)感恩之心,對(duì)在本次設(shè)計(jì)中所有對(duì)你有幫助的人

87、(老師、同學(xué)、同組成員)表達(dá)真誠的謝意。*/</p><p>  由于本人目前能力有限,在本次課程設(shè)計(jì)各種功能的實(shí)現(xiàn)中遇到了很大很多的問題,程序的成功完成得到了各位老師和同學(xué)的大力支持。在此特意感謝我的數(shù)據(jù)結(jié)構(gòu)老師**,她并不是我此次課程設(shè)計(jì)的直接指導(dǎo)老師,但是當(dāng)我的程序陷入問題中時(shí)她都會(huì)非常耐心、認(rèn)真地指導(dǎo)和幫助我。本次課設(shè)的難度相對(duì)來說比較大程序中遇到的問題也是非常棘手,如果不是*老師的幫助我恐怕很難保質(zhì)保量

88、地按時(shí)完成課設(shè)的任務(wù)?;诖嗽俅螌?duì)*老師的幫助表示感謝。</p><p>  同時(shí)感謝**老師對(duì)我們的高標(biāo)準(zhǔn)嚴(yán)要求,因?yàn)樗囊笫沟梦以诰幊踢@一塊的能力有了很大的提升,良好地變成習(xí)慣逐漸形成。最后感謝在我程序設(shè)計(jì)時(shí)為我提供過幫助的同學(xué)。</p><p><b>  7 參考文獻(xiàn)</b></p><p>  嚴(yán)蔚敏.?dāng)?shù)據(jù)結(jié)構(gòu)(C語言版)[M].清

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(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)論