2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  數(shù)據(jù)結構課程設計</b></p><p><b>  實驗報告</b></p><p>  題目名稱: 模擬旅館管理系統(tǒng)——床位的分配與回收 </p><p><b>  前 言</b></p><p>  數(shù)據(jù)結構課

2、程設計是配合數(shù)據(jù)結構基礎課程與實驗教學的一個非常重要的教學環(huán)節(jié)。它是通信工程專業(yè)學生的重要基礎實踐課,能鞏固程序編輯的理論知識,提高程序設計水平,加強綜合分析問題和解決問題的能力,進一步培養(yǎng)學生的實驗技能和動手能力,啟發(fā)學生的創(chuàng)新意識及創(chuàng)新思維。完成本次課程設計,對進行畢業(yè)設計及畢業(yè)后從事相關工作都有很大的幫助。</p><p>  同時,《數(shù)據(jù)結構》在計算機科學中是一門綜合性的專業(yè)基礎課.數(shù)據(jù)結構的研究不僅涉及

3、到計算機的硬件的研究范圍,而且和計算機軟件的研究有著更密切的關系,無論是編譯程序還是操作系統(tǒng),都涉及到數(shù)據(jù)元素在存儲器中的分配問題。在研究信息檢索時也必須考慮如何組織數(shù)據(jù),以便查找和存取數(shù)據(jù)元素更為方面。因此,可以認為數(shù)據(jù)結構是介于數(shù)學、計算機硬件和計算機軟件三者之間的一門核心課程.在計算機科學中,數(shù)據(jù)結構不僅是一般程序設計的基礎,而且是設計和實現(xiàn)編譯程序、操作系統(tǒng)、數(shù)據(jù)庫系統(tǒng)及其它系統(tǒng)程序和大型應用程序的重要基礎。</p>

4、<p>  可見,學好數(shù)據(jù)結構以及認真對待數(shù)據(jù)結構課程設計對我們十分重要,此次我們小組做的是“模擬旅館管理系統(tǒng)的一個功能——床位的分配與回收”,為了能夠保質保量的完成老師交給我們的任務,我小組積極查閱圖書館及網(wǎng)上的各項資源,認真對待每一次的上機課程,力求盡自己最大的努力,將這項課程設計做好。</p><p><b>  目 錄 </b></p><p>

5、  前言 ……………………………………………………………………1</p><p>  一、課題設計任務及要求 ……………………………………………3</p><p>  1.問題描述 ……………………………………………………………3</p><p>  2.基本要求 ……………………………………………………………3</p><p>  

6、3.實現(xiàn)提示 ……………………………………………………………3</p><p>  二、需求分析 …………………………………………………………4</p><p>  三、系統(tǒng)的概要設計 …………………………………………………4</p><p>  1.功能模塊的劃分 ……………………………………………………4</p><p>  2.

7、參考的ADT …………………………………………………………5</p><p>  四、程序設計思路 ……………………………………………………71.建立結構體及鏈表 …………………………………………………7</p><p>  2.算法的描述 …………………………………………………………7</p><p>  五、程序的調試與分析 ………………………

8、………………………91.測試數(shù)據(jù) ……………………………………………………………9</p><p>  2.測試結果 ……………………………………………………………9</p><p>  六、用戶使用說明 ……………………………………………………101.程序運行環(huán)境 ……………………………………………………10</p><p>  2.程序主界面

9、………………………………………………………10</p><p>  3.相關程序各項說明 ………………………………………………10</p><p>  七、調試過程中出現(xiàn)的問題及心得體會 ……………………………12</p><p>  八、心得體會 …………………………………………………………13</p><p>  附錄:程序的源代

10、碼 …………………………………………………14</p><p>  一、課題設計任務及要求</p><p><b>  1.問題描述:</b></p><p>  某旅館有n個等級的房間,第i等級有個房間,每個等級有個床位(1≤I≤n)。試模擬旅館管理系統(tǒng)中床位分配和回收的功能,設計能為單個旅客分配床位,在其離店便回收床位(供下次分配)的算法

11、。</p><p><b>  2.基本要求:</b></p><p><b> ?。?)輸入數(shù)據(jù)</b></p><p>  對房間信息進行初始化,包括房間的類別、數(shù)量以及房間和床位的計費標準;</p><p>  分配時,輸入旅客姓名、年齡、性別、到達日期和所需房間等級;</p>

12、<p>  回收時,輸入房間等級、房間號和床位號。</p><p><b> ?。?)輸出數(shù)據(jù)</b></p><p>  分配成功時打印旅客姓名、年齡、到達日期、房間等級、房間號碼和床位號碼。</p><p>  分配不成功時,如所有等級均無床位,則打印“客滿”信息;如旅客需要的等級均無空床位,則打印“是否愿意更換等級?”的詢問信息

13、。若旅客愿意更換,則重新輸入有關信息,再進行分配,否則分配工作結束。</p><p><b>  (3)結帳管理</b></p><p>  在旅客離開時計算房費,并打印賬單,賬單格式自行設計,要求信息齊全、清晰。</p><p>  (4)對旅客信息和房間信息以及收費標準采用文件的形式存儲也可以在程序中初始化。</p><

14、p><b>  3.實現(xiàn)提示:</b></p><p><b>  數(shù)據(jù)結構:</b></p><p>  主要采用順序結構鏈接結構的線性表及堆棧。</p><p>  每個房間用一個如下所示的具有五個字段的結點(房結點)表示: </p><p>  其中,性別:0表示房間為空狀態(tài)</p

15、><p>  1表示房間分配給女旅客</p><p>  2表示房間分配給男旅客</p><p>  現(xiàn)有空床數(shù):數(shù)據(jù)在0~bi之間,其中bi是第i等級一個房間的床位數(shù),當現(xiàn)有空床數(shù)為bi時,表示房間為空;為0時,表示房間滿。</p><p>  RLINK:當房間空時,用作空房棧的連接;當房間不空時,指向下一個房結點。</p>&

16、lt;p>  BTOP:指向該房間的空床號棧棧頂。一個房間對應一個順序表示的空床號棧。棧的容量為bi,棧中存放空床號。分配時,從棧頂取出空床號,棧頂下移(BTOP=BTOP+1);回收時,棧頂上移(BTOP=BTOP-1),將回收的空床號填入棧頂。</p><p>  每一個等級中的空房間構成一個空房棧;已住旅客的房間構成一個鏈棧(簡稱房鏈),其頭結點結構如下:</p><p>  

17、其中:ai:第i等級中房間總數(shù)</p><p>  bi第i等級中每個房間的床位數(shù)</p><p>  可分配男、女床位的總數(shù)的初值等于ai *bi,因為開始時所有房間和床位既可以分配給男旅客,也可以分配給女旅客。當在房鏈中分配一個床位給男(女)旅客,床位總數(shù)應減1;當從空房棧中取出一個房間作為男(女)旅客房間時,則可分配女(男)床位總數(shù)應減bi,當回收一個男(女)床位時,則可分配男(女)

18、床位總數(shù)應加1;當回收一個男(女)空房至空房棧時,則可分配女(男)床位總數(shù)應加bi。</p><p>  TTOP:指向本級空房棧棧頂,當無空房間時,TTOP=^(NIL)。</p><p>  RLINK:指向本級房鏈第一個頂點,當房鏈為空時,RLINK=^(NIL)</p><p>  順序表s=(s0,s1,...,si,...sn),其中,s1-Sn順序存放

19、第1~n等級房間的頭結點;</p><p>  s0存放內容如下所示:</p><p>  初始時,全店可分配男、女床總數(shù)相同,均為,在分配或回收時,對各等級可分配男(女)床位總數(shù)處理的同時也要對全店可分配男(女)床總數(shù)作相應處理,當全店可分配男(女)床總數(shù)等于零時,表示客滿。</p><p><b>  二、需求分析</b></p>

20、;<p>  經(jīng)分析,程序要有以下功能:</p><p> ?、賹β灭^信息進行初始化;</p><p> ?、谠诼每偷絹頃r記錄旅客信息并為其分配床位;</p><p> ?、墼诼每碗x開時為其打印賬單,并回收其床位;</p><p> ?、茉谳斎脒^程中對輸入的數(shù)據(jù)進行檢查,以防止輸入超出范圍的信息。</p><

21、p><b>  三、系統(tǒng)的概要設計</b></p><p><b>  1.功能模塊的劃分</b></p><p>  程序功能模塊劃分下圖所示:</p><p><b>  2.參考的ADT</b></p><p>  ADT設計使用線性表和棧:</p>

22、<p>  ADT List {</p><p>  數(shù)據(jù)對象:D={ ai | ai∈ ElemSet, i=1,2,...,n, n≥0 }</p><p>  數(shù)據(jù)關系:R1={ <ai-1 ,ai >| ,∈D, i=2,...,n }  </p><p><b>  基本操作:</b></p>&

23、lt;p>  InitList( &L )</p><p>  操作結果:構造一個空的線性表 L 。</p><p>  DestroyList( &L )</p><p>  初始條件:線性表 L 已存在。</p><p>  操作結果:銷毀線性表 L 。</p><p>  ListEmpty

24、( L )</p><p>  初始條件:線性表L已存在。</p><p>  操作結果:若 L 為空表,則返回 TRUE,否則返回 FALSE。</p><p>  ListLength( L )</p><p>  初始條件:線性表 L 已存在。</p><p>  操作結果:返回 L 中元素個數(shù)。</p&g

25、t;<p>  PriorElem( L, cur_e, &pre_e )</p><p>  初始條件:線性表 L 已存在。</p><p>  操作結果:若 cur_e 是 L 中的數(shù)據(jù)元素,則用 pre_e 返回它的前驅,</p><p>  否則操作失敗,pre_e 無定義。</p><p>  NextElem

26、( L, cur_e, &next_e )</p><p>  初始條件:線性表 L 已存在。</p><p>  操作結果:若 cur_e 是 L 中的數(shù)據(jù)元素,則用 next_e 返回它的后繼,</p><p>  否則操作失敗,next_e 無定義。</p><p>  GetElem( L, i, &e )</p

27、><p>  初始條件:線性表 L 已存在,1≤i≤LengthList(L)。</p><p>  操作結果:用 e 返回 L 中第 i 個元素的值。</p><p>  LocateElem( L, e, compare( ) )</p><p>  初始條件:線性表 L 已存在,compare( ) 是元素判定函數(shù)。</p>

28、<p>  操作結果:返回 L 中第1個與 e 滿足關系 compare( ) 的元素的位序。</p><p>  若這樣的元素不存在,則返回值為0。</p><p>  ListTraverse(L, visit( ))</p><p>  初始條件:線性表 L 已存在,visit( ) 為元素的訪問函數(shù)。</p><p>  操

29、作結果:依次對 L 的每個元素調用函數(shù) visit( )。</p><p>  一旦 visit( ) 失敗,則操作失敗。</p><p>  ClearList( &L )</p><p>  初始條件:線性表 L 已存在。</p><p>  操作結果:將 L 重置為空表。</p><p>  PutEle

30、m( &L, i, &e )</p><p>  初始條件:線性表L已存在,1≤i≤LengthList(L)。</p><p>  操作結果:L 中第 i 個元素賦值同 e 的值。</p><p>  ListInsert( &L, i, e )</p><p>  初始條件:線性表 L 已存在,1≤i≤Length

31、List(L)+1。</p><p>  操作結果:在 L 的第 i 個元素之前插入新的元素 e,L 的長度增1。</p><p>  ListDelete( &L, i, &e )</p><p>  初始條件:線性表 L 已存在且非空,1≤i≤LengthList(L)。</p><p>  操作結果:刪除 L 的第 i

32、個元素,并用 e 返回其值,L 的長度減1。</p><p>  } ADT List</p><p>  ADT Stack {</p><p>  數(shù)據(jù)對象:D={ai| ai∈ElemSet, i=1,2,...,n, n≥0 }</p><p>  數(shù)據(jù)關系:R1={ < ai-1, ai >| ai-1, ai-∈D,

33、i=2,...,n }</p><p>  約定an端為棧頂,a1端為棧底。</p><p><b>  基本操作:</b></p><p>  InitStack(&S)</p><p>  操作結果:構造一個空棧 S。</p><p>  DestroyStack(&S)<

34、;/p><p>  初始條件:棧 S 已存在。</p><p>  操作結果:棧 S 被銷毀。 </p><p>  ClearStack(&S)</p><p>  初始條件:棧 S 已存在。</p><p>  操作結果:將 S 清為空棧。</p><p>  StackEmpty(S)

35、</p><p>  初始條件:棧 S 已存在。</p><p>  操作結果:若棧 S 為空棧,則返回TRUE,否則返回FALSE。</p><p>  StackLength(S)</p><p>  初始條件:棧 S 已存在。</p><p>  操作結果:返回棧 S 中元素個數(shù),即棧的長度。</p>

36、<p>  GetTop(S, &e)</p><p>  初始條件:棧 S 已存在且非空。</p><p>  操作結果:用 e 返回S的棧頂元素。</p><p>  Push(&S, e)</p><p>  初始條件:棧 S 已存在。</p><p>  操作結果:插入元素 e 為

37、新的棧頂元素。</p><p>  Pop(&S, &e)</p><p>  初始條件:棧 S 已存在且非空。</p><p>  操作結果:刪除 S 的棧頂元素,并用 e 返回其值。</p><p>  StackTraverse(S, visit( ))</p><p>  初始條件:棧 S 已存

38、在且非空,visit( )為元素的訪問函數(shù)。</p><p>  操作結果:從棧底到棧頂依次對S的每個元素調用函數(shù)visit( ),</p><p>  一旦visit( )失敗,則操作失敗。</p><p>  } ADT Stack</p><p><b>  四、程序設計思路</b></p><

39、p>  1.建立結構體及鏈表</p><p> ?、俳⒙灭^房間結構體及其信息類型,如下:</p><p>  typedef struct node</p><p><b>  {</b></p><p>  int roomgrade;//房間等級</p><p>  int roomn

40、umber;//房間號</p><p>  int peoplein;//入住人數(shù)</p><p>  int bed[N];//床號</p><p>  int sex;//性別</p><p>  struct node *next;//結構體指針</p><p><b>  }Room;</b&g

41、t;</p><p><b> ?、诮⒖盏姆块g鏈表</b></p><p>  Room *creat()</p><p>  {//建立房間的鏈表</p><p>  建立指向房間的指針Room *head,*p,*q;</p><p>  While(等級循環(huán))</p><

42、;p><b>  { </b></p><p>  For(房間號在小于等級的情況下進行循環(huán))</p><p><b>  { </b></p><p>  將p所指向的房間進行初始化,賦初值; </p><p>  讓q->next=p;</p><p>&

43、lt;b>  }</b></p><p><b>  head為頭結點;</b></p><p>  將房間對等級循環(huán)建立整個空旅館鏈表</p><p><b>  }</b></p><p><b>  2.算法的描述</b></p><

44、p><b> ?、俪跏蓟瘮?shù)的建立</b></p><p>  Void chushihua(Room *head)</p><p><b>  {</b></p><p>  建立指向房間的room *p指針,</p><p>  通過對每個房間的查找</p><p>

45、;<b>  并將其恢復賦初始值</b></p><p><b>  }</b></p><p><b> ?、谟喎亢瘮?shù)的建立</b></p><p>  Void dingfang(Room *head)</p><p><b>  {</b></

46、p><p><b>  //訂房間</b></p><p><b>  旅客信息的輸入;</b></p><p>  While(房間不為空)</p><p><b>  { </b></p><p>  If(房間所需等級存在并且房間入住的性別一致或者房間

47、為空)</p><p><b>  {</b></p><p>  For(對等級進行循環(huán))</p><p><b>  {</b></p><p><b>  If(床位為空)</b></p><p><b>  {</b><

48、;/p><p>  將房間號、床位號賦值</p><p><b>  }</b></p><p>  If(如果找到了符合的房間)</p><p><b>  跳出循環(huán);</b></p><p><b>  } </b></p><p&g

49、t;<b>  P指向下一個房間;</b></p><p><b>  }</b></p><p>  If(房間號和床位號都不為空)</p><p><b>  打?。嚎蜐M;</b></p><p><b>  Else</b></p>&

50、lt;p><b>  打印旅客入住信息;</b></p><p><b>  }</b></p><p><b> ?、弁朔亢瘮?shù)的建立</b></p><p>  void tuifang(Room *head)</p><p><b>  {//退房間<

51、/b></p><p>  建立房間指針Room *p;</p><p>  輸入旅客退房的房間號,性別,床號;</p><p>  While(房間不為空)</p><p><b>  {</b></p><p>  If(查找到的房間號與輸入的一致)</p><p&g

52、t;  If(性別與輸入一致)</p><p><b>  For(循環(huán)等級)</b></p><p><b>  {</b></p><p>  將此人的所有信息進行刪除操作</p><p><b>  }</b></p><p><b> 

53、 P指向下一個房間;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b> ?、茱@示函數(shù)的建立</b></p><p>  void display(Room *head)</p><p

54、><b>  {//顯示房間信息</b></p><p>  建立房間指針room *p;</p><p>  While(入住人數(shù)不為空)</p><p><b>  {</b></p><p>  打印旅客入住的相關信息</p><p><b>  For

55、(等級循環(huán))</b></p><p><b>  If(床位不為空)</b></p><p>  打印已經(jīng)入住的床位號;</p><p><b>  P指向下一個房間</b></p><p><b>  }</b></p><p><b

56、>  } </b></p><p>  五、程序的調試與分析</p><p><b>  1.測試數(shù)據(jù)</b></p><p>  A.打開程序后在訂房系統(tǒng)中訂房,可按下圖進行:</p><p>  然后進行顯示函數(shù)的測試,將如上數(shù)據(jù)輸入后,打印,看是否顯示正確;</p><p>

57、;  B.進行退房函數(shù)測試,將進行退房操作,打印看是否已經(jīng)正確刪除;</p><p>  C.進行初始化函數(shù)的測試,選擇初始化操作,點擊打印,看是否可以成功進行初始化;</p><p>  D.進行退出函數(shù)的測試,點擊退出選項,看是否可以成功退出。</p><p><b>  2.測試結果</b></p><p>  以

58、上兩項測試數(shù)據(jù)經(jīng)過實際測試后,其返回值與預計返回值相同,證明程序在數(shù)據(jù)輸入正確的情況下可以正常運行。</p><p><b>  六、用戶使用說明</b></p><p><b>  1.程序運行環(huán)境</b></p><p>  程序名為hotel.exe,運行環(huán)境為window XP。</p><p&

59、gt;<b>  2.程序主界面</b></p><p>  運行程序后首先顯示圖所示程序主界面:</p><p>  選擇1:有旅客入??;</p><p>  選擇2:有旅客退房;</p><p>  選擇3:顯示房間信息;</p><p>  選擇4:刪除所有信息;</p>&

60、lt;p><b>  選擇5:退出程序;</b></p><p>  3.相關程序各項說明</p><p><b> ?、俾每腿胱。?</b></p><p>  選擇此項后,程序提示下圖所示界面:</p><p>  按照提示依次輸入旅客信息。其中,性別一項0代表男、1代表女,性別取值0-1

61、,年齡取值16-99,房間等級取初始時的房間等級范圍;如果各項輸入超出范圍程序會要求重新輸入。</p><p>  當輸入全部信息后,如果旅客選擇的房間等級有空床位,則程序為旅客分配床位并,如果沒有則詢問是否更換房間等級;如果旅客愿意更換等級則輸入新等級重新分配床位,如果如果旅客愿意更換等級則返回程序主界面。當床位分配成功后程序顯示圖:</p><p><b> ?、诼每屯朔浚?

62、</b></p><p>  選擇此項后,程序提示下圖所示界面</p><p>  按照提示依次輸入旅客信息。其中,性別一項0代表男、1代表女,性別取值0-1,房間號為已有房間號碼,床位號碼0-該級別每房間床位數(shù);如果各項輸入超出范圍程序會要求重新輸入。</p><p>  當輸入全部信息后,如果輸入無誤則可退房成功,否則要求重新輸入數(shù)據(jù)。</p&

63、gt;<p><b> ?、埏@示房間信息:</b></p><p>  選擇此項后,程序下圖所示界面,該界面將顯示各等級男女床位可用數(shù)、該級別床位價格,以及總男女床位可用數(shù)。</p><p><b> ?、芡顺龀绦?lt;/b></p><p>  選擇此項后程序將退出。</p><p> 

64、 七、調試過程中出現(xiàn)的問題及心得體會</p><p>  調試程序,是軟件開發(fā)過程中的一個必不可少的環(huán)節(jié),是程序能否正常運行的關鍵。</p><p>  在程序調試之前,需要熟練地掌握幾門必要的匯編語言及熟悉開發(fā)環(huán)境,這樣才能做到事半功倍。</p><p>  以下是調試過程中遇到的主要問題及解決過程:</p><p><b>  

65、1. 清屏問題</b></p><p>  在程序設計中,想讓界面顯示美觀,加入清屏函數(shù),可是用clearscreen();或者system(”cls”);都不能實現(xiàn)該功能,經(jīng)查證,看書等途徑,才知道原來是頭文件里沒包含該函數(shù)的功能。因此,我們將其頭文件加入,則可以正常運行了。</p><p><b>  2. 數(shù)據(jù)結構設計</b></p>

66、<p>  題目已經(jīng)給了數(shù)據(jù)結構的提示,所以開始設計時直接使用了已有的結構。但是在設計后續(xù)算法時發(fā)現(xiàn),現(xiàn)有的結構對于已經(jīng)住人但還沒住滿的房間和住滿的房間沒有區(qū)分,分配房間時要把所有房間都檢查過以后才能找到一個空床位,這就導致了程序設計比較復雜。后經(jīng)過重新設計,決定分別使用一個空房間棧存儲空房間信息,一個空床棧存儲已經(jīng)住人但還沒住滿的房間的信息,一個滿床鏈存儲已經(jīng)住滿人的房間信息;后經(jīng)過改進,除空房棧外其余兩個均為一個有兩個元素

67、的數(shù)組,分別存儲男女房間信息,這個直接根據(jù)顧客性別即可到相應的鏈或棧尋找相關信息,省去了對已經(jīng)住人的房間的性別判斷,同時不用在房間結構體上記錄該房間性別,當開設房間數(shù)量比較大以后可以節(jié)省一部分存儲空間。</p><p>  3. 房間分配和回收算法</p><p>  數(shù)據(jù)結構設計決定了這兩個算法的思想是很簡單的:分配房間時如果有房間就先看有沒有沒住滿的房間,有就直接分配沒有就開一個空房分

68、配;回收房間時如果房間還有其他人就將房間放到相應的空床棧,沒有人就將房間回收到空房棧中。不過在實現(xiàn)回收算法時發(fā)現(xiàn)要判斷的東西比較多,程序分別到空床棧和滿房鏈中尋找房間,而且這兩個鏈/棧沒有設置頭結點,需要對第一個結點單獨做判斷,由此導致了回收房間的函數(shù)源代碼有144行之多,難免會在編寫時出現(xiàn)一些錯誤,帶來了很大調試工作量。</p><p><b>  八、心得體會</b></p>

69、<p>  這次的課程設計使我懂得了理論與實際相結合是很非常重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。在整個設計過程中,構思是很花費時間的。調試時經(jīng)常會遇到這樣那樣的錯誤,有的是因為粗心造成的語法錯誤。當然,很多也時用錯了方法,總是實現(xiàn)不了。同時在設計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學過的知識理解得不夠深刻

70、,掌握得不夠牢固。</p><p>  根據(jù)我在課程設計中遇到得問題,我將在以后的學習過程中注意以下幾點:</p><p>  1、認真上好專業(yè)實驗課,多在實踐中鍛煉自己。</p><p>  2、寫程序的過程中要考慮周到,嚴密。</p><p>  3、在做設計的時候要有信心,有耐心,切勿浮躁。</p><p>  

71、4、認真的學習課本知識,掌握課本中的知識點,并在此基礎上學會靈活運用。</p><p>  5、在課余時間里多寫程序,熟練掌握在調試程序的過程中所遇到的常見錯誤,以便能節(jié)省調試程序的時間。</p><p>  每個實驗通常都要花費很久的時間才能理清一個程序的思路,而且要不斷的調試程序才能把程序調試正確,同時還要做到界面的輸出也是需要美化的。這次課程設計終于順利完成了,在設計中遇到了很多專業(yè)

72、知識問題,最后在老師的辛勤指導下,也完成了課程設計。</p><p>  通過這次的課程設計,讓我更加了解到數(shù)據(jù)結構的重要性。以及它對我們專業(yè)的發(fā)展發(fā)揮的作用。對我們而言,知識上的收獲很重要,但精神上的豐收更加可喜。讓我知道了學無止境的道理。我們每一個人永遠不能滿足于現(xiàn)有的成就,人生就像在爬山,一座山峰的后面還有更高的山峰在等著你。挫折是一份財富,經(jīng)歷是一份擁有。這次課程設計必將成為我人生旅途上一個非常美好的回憶

73、!同時在做課程設計時要能夠從多方面去考慮,去研究,用多種算法去實現(xiàn)要求。此次課程設計,學到了很多課內學不到的東西,比如獨立思考解決問題,出現(xiàn)差錯的隨機應變,這些都讓我受益非淺,今后的制作應該能夠更輕松,自己也都能夠解決并高質量的完成項目。</p><p><b>  附錄:程序的源代碼</b></p><p>  #include<stdio.h><

74、/p><p>  #define N 10//房間等級</p><p>  #include<conio.h></p><p>  #include<stdlib.h></p><p>  #include<string.h></p><p>  typedef struct node{

75、</p><p>  int roomgrade;</p><p>  int roomnumber;</p><p>  int peoplein;</p><p>  int bed[N];</p><p><b>  int sex;</b></p><p>  st

76、ruct node *next;//結構體指針</p><p><b>  }Room;</b></p><p>  Room *creat()</p><p>  {//建立房間的鏈表</p><p>  Room *head,*p,*q;</p><p>  int i=1,j,m=0,h;&

77、lt;/p><p>  while (i<=N)</p><p><b>  {</b></p><p>  for(j=1;j<=i;j++)</p><p><b>  {</b></p><p>  if((i!=1)||(j!=1))</p>&

78、lt;p><b>  q=p;</b></p><p>  p=new(Room);</p><p>  if((i==1)&&(j==1))</p><p><b>  head=p;</b></p><p>  p->roomgrade=i;</p>&

79、lt;p>  p->roomnumber=m+1;</p><p>  p->peoplein=0;</p><p>  p->sex=-1;//表示一個人也沒有</p><p>  for(h=0;h<i;h++)</p><p>  p->bed[h]=0;//0表示該床未住人,1表示住人</p&

80、gt;<p>  if((i!=1)||(j!=1))</p><p>  q->next=p;</p><p><b>  }</b></p><p>  i++; m++;</p><p><b>  }</b></p><p>  p->ne

81、xt=NULL;</p><p>  return(head);</p><p><b>  }</b></p><p>  void chushihua(Room *head)</p><p><b>  {//初始化</b></p><p><b>  Room

82、 *p;</b></p><p><b>  int i;</b></p><p><b>  p=head;</b></p><p>  while(p!=NULL)</p><p><b>  { </b></p><p>  p-

83、>peoplein=0;</p><p>  p->sex=-1;</p><p>  for(i=0;i<N;i++)</p><p>  p->bed[i]=0;</p><p>  p=p->next;</p><p><b>  }</b></p>

84、<p>  printf("\n\n\n 操作成功! \n");</p><p><b>  }</b></p><p>  void dingfang(Room *head)</p><p><b>  {//訂房間</b></p><p><b&

85、gt;  Room *p;</b></p><p>  int i,number=0,bednumber=0,s,grade;</p><p>  printf("\n\n *****歡迎使用訂房系統(tǒng)***** \n\n");</p><p>  printf("____________________________

86、_______________________\n\n");</p><p>  printf("\n 請輸入性別(1為男,0為女):");</p><p>  scanf("%d",&s);</p><p>  printf("\n\n 請輸入房間等級:(1-10): &quo

87、t; );</p><p>  scanf("%d",&grade);</p><p><b>  p=head;</b></p><p>  while (p!=NULL)</p><p><b>  {</b></p><p>  if ((

88、p->roomgrade==grade)&&((p->sex==s)||(p->sex==-1)))</p><p><b>  {</b></p><p>  for(i=0;i<grade;i++)</p><p>  if (p->bed[i]==0)</p><p>

89、<b>  {</b></p><p>  number=p->roomnumber;</p><p>  bednumber=i+1;</p><p>  p->bed[i]=1;</p><p><b>  p->sex=s;</b></p><p> 

90、 p->peoplein++;</p><p><b>  break;</b></p><p><b>  }</b></p><p>  if (number!=0) break;</p><p><b>  }</b></p><p>  p

91、=p->next;</p><p><b>  }</b></p><p>  if(number==0&&bednumber==0)</p><p>  printf("\n 不能入住該房間,請重新輸入:\n");</p><p><b>  else</b&

92、gt;</p><p>  printf(" \n 房間號:%d 床號:%d\n",number,bednumber);</p><p><b>  }</b></p><p>  void tuifang(Room *head)</p><p><b>  {//退房間&l

93、t;/b></p><p><b>  Room *p;</b></p><p>  int number,bednumber,i,s;</p><p>  printf(" ***歡迎使用退房系統(tǒng)*** \n");</p><p>  printf("\n\n

94、 請輸入房間號(1為男,0為女):");</p><p>  scanf("%d",&number);</p><p>  printf(" \n\n 請輸入性別:");</p><p>  scanf("%d",&s);</p><p&g

95、t;  printf("\n\n 請輸入床號:");</p><p>  scanf("%d",&bednumber);</p><p><b>  p=head;</b></p><p>  while (p!=NULL)</p><p><b> 

96、 {</b></p><p>  if (p->roomnumber==number)</p><p>  if(p->sex==s)</p><p>  for (i=0;i<p->roomgrade;i++)</p><p>  if (i+1==bednumber)</p><p&

97、gt;<b>  {</b></p><p>  p->bed[i]=0;</p><p>  p->peoplein--;</p><p>  if(p->peoplein<0)</p><p>  p->peoplein=0;</p><p>  if(p->

98、;peoplein==0)</p><p>  p->sex=-1;</p><p><b>  break;</b></p><p><b>  }</b></p><p>  p=p->next;</p><p><b>  }</b>&

99、lt;/p><p><b>  }</b></p><p>  void display(Room *head)</p><p><b>  {//顯示房間信息</b></p><p><b>  Room *p;</b></p><p><b>

100、  int i;</b></p><p><b>  p=head;</b></p><p>  printf("\n\n\n ***已訂房間查詢*** \n\n");</p><p>  while (p->peoplein!=NULL)</p><p>

101、;<b>  {</b></p><p>  printf("\n 房間號:%d,房間等級:%d,已住人數(shù):%d,住人性別:%d",p->roomnumber,p->roomgrade,p->peoplein,p->sex);</p><p>  for(i=0;i<p->roomgrade;i++)&l

102、t;/p><p>  if (p->bed[i]==1)</p><p>  printf("已住人的床號:%d\n",i+1);</p><p>  printf("\n");</p><p>  p=p->next;</p><p><b>  }</

103、b></p><p><b>  }</b></p><p>  void main()</p><p><b>  {</b></p><p>  int n,k=1;</p><p>  Room *head;</p><p>  head=

104、creat();</p><p>  while(k==1)</p><p><b>  {</b></p><p>  printf("\n\n 歡迎您的光臨,很開心為您服務 \n");</p><p>  printf(" \n

105、 *******菜單****** \n");</p><p>  printf(" ___________________________________________________\n\n");</p><p>  printf(" | 1:訂房

106、 | \n\n");</p><p>  printf(" | 2:退房 | \n\n");</p><p>  printf(" | 3:顯示房間分配情況

107、 | \n\n");</p><p>  printf(" | 4:刪除所有信息 | \n\n");</p><p>  printf(" | 5:退出系統(tǒng) | \n\n");<

108、/p><p>  printf(" __________________________________________________\n\n");</p><p>  printf(" \n 請輸入您的選擇(請輸入1-5的數(shù)字):");</p><p>  scanf("%d",&

109、;n);</p><p><b>  switch(n)</b></p><p><b>  {</b></p><p>  case 1:system("CLS");dingfang(head);break;</p><p>  case 2:system("CLS&

110、quot;);tuifang(head);break;</p><p>  case 3:system("CLS");display(head);break;</p><p>  case 4:system("CLS");chushihua(head);break;</p><p>  case 5:k=2;break;<

溫馨提示

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

評論

0/150

提交評論