c語言課程設(shè)計報告—機房機位預(yù)約模擬系統(tǒng)_第1頁
已閱讀1頁,還剩13頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  程序設(shè)計報告</b></p><p><b>  C語言程序設(shè)計</b></p><p>  編程實踐是學(xué)習(xí)C語言程序設(shè)計的一重要環(huán)節(jié),為提高學(xué)生程序設(shè)計能力,通過課堂和上機實踐練習(xí)使學(xué)生的程序設(shè)計能力上一臺階。通過前四單元溫顧而知新、庖丁解牛、舉一反三、熟能生巧等過程的練習(xí)設(shè)計下面一個完整的程序</p>

2、<p><b>  題目要求</b></p><p>  設(shè)計“機房機位預(yù)約模擬系統(tǒng)”</p><p>  要求:20臺機器,從早8點到晚8點,每兩個小時一個時間段。 </p><p><b>  需要實現(xiàn)功能: </b></p><p>  1,查詢,根據(jù)輸入時間,輸出機位信息。 &

3、lt;/p><p>  2,即為預(yù)定,根據(jù)輸入的日期和時間段查詢是否有空機位,若有則預(yù)約,若無則提供最近空機時間段。另:若用戶要求在非空時間上機,則將用戶信息插入該時間段的等待列表. </p><p>  3,退出預(yù)定,根據(jù)輸入的時間,撤銷該時間的預(yù)定。 </p><p>  4,查詢是否有等待的信息,若有則按順序顯示聯(lián)系方式,若無則顯示提示信息。</p>

4、<p><b>  2需求分析</b></p><p>  根據(jù)題目要求在程序中需實現(xiàn)查詢,預(yù)定,排隊等功能的操作,所以需要建立相應(yīng)的模塊來實現(xiàn);另外還需提供鍵盤式選擇菜單實現(xiàn)功能,在運行時達到所要目的。</p><p><b>  3總體設(shè)計</b></p><p>  整個系統(tǒng)可分為3個模塊 查詢模塊 預(yù)定

5、模塊 取消模塊</p><p><b>  詳細設(shè)計 </b></p><p>  主函數(shù)比較簡潔,只提供輸入、功能處理和輸出部分的函數(shù)調(diào)用。</p><p><b>  main() </b></p><p><b>  { </b></p><p>

6、;<b>  int i; </b></p><p>  for(i=0;i<LENGTH;i++){ </p><p>  TimeQueue[i].CNum=0; </p><p>  TimeQueue[i].first=NULL; </p><p>  TimeQueue[i].middle=NULL; &

7、lt;/p><p>  TimeQueue[i].last=NULL; </p><p><b>  } </b></p><p>  while(1){ </p><p>  printf("請輸入序號!:\n"); </p><p>  printf("1. 查詢預(yù)定

8、的機位 2.查詢空機位 3.預(yù)定 4. 取消預(yù)定 5.等待列表 6.查詢等待者列表 0.退出\n"); </p><p>  scanf("%d",&i); </p><p>  switch(i) </p><p><b>  { </b></p><p>  case 1:Inq

9、uir();break; </p><p>  case 2:inquir();break; </p><p>  case 3:booking();break; </p><p>  case 4:cancel();break; </p><p>  case 5:waiting();break; </p><p>

10、  case 6:inquir_waiting();break; </p><p>  case 0:exit(0); </p><p>  default:printf("error\n");</p><p><b>  } </b></p><p><b>  } </b>&

11、lt;/p><p><b>  }</b></p><p>  void Inquir() </p><p><b>  { </b></p><p><b>  int n; </b></p><p>  char Infor[10]; </p>

12、;<p>  struct node *Rem; </p><p>  printf("輸入查詢時間(24 hours 8~20 o'clock,include 8o'clock)\n"); </p><p>  scanf("%d",&n); </p><p>  if(n>=8&

13、amp;&n<20){ </p><p><b>  n=S(n); </b></p><p>  printf("請輸入學(xué)號\n"); </p><p>  scanf("%s",Infor); </p><p>  Rem=TimeQueue[n].first;

14、</p><p>  for(;Rem->next!=NULL;Rem=Rem->next) </p><p>  if(strcmp(Rem->data,Infor)==0)break; </p><p>  if(Rem->locat!=0) </p><p>  printf("The computer

15、 number is %d\n",Rem->locat); </p><p>  else printf("對不起.你依舊在等待列表中或者沒有預(yù)定"); </p><p><b>  } </b></p><p>  else printf("錯誤,請再次輸入.\n"); </p&g

16、t;<p><b>  } </b></p><p>  void inquir() </p><p><b>  { </b></p><p><b>  int n; </b></p><p>  printf("輸入想要查詢的時間(24 hours

17、 8~20o'clock,include 8 o'clock)\n"); </p><p>  scanf("%d",&n); </p><p>  if(n>=8&&n<20){ </p><p><b>  n=S(n); </b></p>&l

18、t;p>  if(TimeQueue[n].CNum<MAX) </p><p>  printf("There are %d empty computer!\n",MAX-TimeQueue[n].CNum); </p><p>  else printf("對不起.沒有空余機位\n"); </p><p>&l

19、t;b>  } </b></p><p>  else printf("錯誤,再次輸入.\n"); </p><p><b>  }</b></p><p>  預(yù)定模塊 </p><p>  void booking() &

20、lt;/p><p><b>  { </b></p><p><b>  int n; </b></p><p>  char Infor[10]; </p><p>  struct node *Rem; </p><p>  struct node *p; </p>

21、;<p>  printf("輸入想要預(yù)定的時間\n"); </p><p>  scanf("%d",&n); </p><p>  if(n>=8&&n<20){ </p><p><b>  n=S(n); </b></p><p

22、>  if(TimeQueue[n].CNum<MAX){ </p><p>  printf("請輸入你的學(xué)號\n"); </p><p>  scanf("%s",Infor); </p><p>  if(TimeQueue[n].first==NULL){ </p><p>  Re

23、m=(struct node *)malloc(sizeof(struct node)); </p><p>  Rem->locat=1; </p><p>  strcpy(Rem->data,Infor); </p><p>  Rem->next=NULL; </p><p>  TimeQueue[n].first

24、=Rem; </p><p>  TimeQueue[n].last=Rem; </p><p>  TimeQueue[n].CNum++; </p><p>  printf("成功預(yù)定\n"); </p><p><b>  } </b></p><p><b>

25、;  else{ </b></p><p>  Rem=(struct node *)malloc(sizeof(struct node)); </p><p>  strcpy(Rem->data,Infor); </p><p>  Rem->next=NULL; </p><p>  p=TimeQueue[n]

26、.last; </p><p>  Rem->locat=TimeQueue[n].CNum+1; </p><p>  printf("%d",Rem->locat); </p><p>  TimeQueue[n].last=Rem; </p><p>  p->next=Rem; </p>

27、;<p>  TimeQueue[n].CNum++; </p><p>  printf("成功預(yù)定\n"); </p><p><b>  } </b></p><p><b>  } </b></p><p>  else printf("沒有空余機

28、位!"); </p><p><b>  } </b></p><p>  else printf("錯誤.請再次輸入.\n"); </p><p><b>  } </b></p><p>  void waiting() </p><p>&

29、lt;b>  { </b></p><p><b>  int n; </b></p><p>  char Infor[10]; </p><p>  struct node *Rem; </p><p>  struct node *p; </p><p>  printf(

30、"請輸入想要排隊的時間\n"); </p><p>  scanf("%d",&n); </p><p>  if(n>=8&&n<20){ </p><p><b>  n=S(n); </b></p><p>  if(TimeQueue[n

31、].CNum>=MAX){ </p><p>  printf("請輸入你的學(xué)號\n"); </p><p>  scanf("%s",Infor); </p><p>  if((TimeQueue[n].CNum)==MAX){ </p><p>  Rem=(struct node *)ma

32、lloc(sizeof(struct node)); </p><p>  strcpy(Rem->data,Infor); </p><p>  Rem->next=NULL; </p><p>  Rem->locat=0; </p><p>  p=TimeQueue[n].last; </p><

33、p>  TimeQueue[n].last=Rem; </p><p>  p->next=Rem; </p><p>  TimeQueue[n].middle=Rem; </p><p>  TimeQueue[n].CNum++; </p><p>  printf("成功排隊\n"); </p&g

34、t;<p><b>  } </b></p><p><b>  else{ </b></p><p>  Rem=(struct node *)malloc(sizeof(struct node)); </p><p>  strcpy(Rem->data,Infor); </p>&l

35、t;p>  Rem->next=NULL; </p><p>  Rem->locat=0; </p><p>  p=TimeQueue[n].last; </p><p>  TimeQueue[n].last=Rem; </p><p>  p->next=Rem; </p><p>  

36、TimeQueue[n].CNum++; </p><p>  printf("成功排隊\n"); </p><p><b>  } </b></p><p><b>  } </b></p><p>  else printf("有空余機位,無須等待\n")

37、; </p><p><b>  } </b></p><p>  else printf("錯誤.再次輸入.\n"); </p><p><b>  }</b></p><p>  取消模塊 </p><p>

38、;  void cancel() </p><p><b>  { </b></p><p><b>  int n; </b></p><p><b>  int i; </b></p><p>  char Infor[10]; </p><p> 

39、 struct node *Rem; </p><p>  struct node *q; </p><p>  struct node *p; </p><p>  printf("請輸入預(yù)定的時間\n"); </p><p>  scanf("%d",&n); </p><

40、;p>  if(n>=8&&n<20){ </p><p>  printf("Please input your No.!\n"); </p><p>  scanf("%s",Infor); </p><p><b>  n=S(n); </b></p>

41、<p>  Rem=TimeQueue[n].first; </p><p><b>  q=Rem; </b></p><p>  for(i=1;;q=Rem,Rem=Rem->next,i++) </p><p>  if(strcmp(Rem->data,Infor)==0)break; </p>

42、<p>  if(i>MAX){ </p><p>  if(Rem->next==NULL){ </p><p>  q->next=NULL; </p><p>  TimeQueue[n].last=q; </p><p>  free(Rem); </p><p>  TimeQue

43、ue[n].CNum--; </p><p>  printf("Succeed to out the queue!\n"); </p><p><b>  } </b></p><p><b>  else{ </b></p><p>  q->next=Rem->

44、next; </p><p>  free(Rem); </p><p>  TimeQueue[n].CNum--; </p><p>  printf("Succeed to out the queue!\n"); </p><p><b>  } </b></p><p>

45、;<b>  } </b></p><p><b>  else{ </b></p><p>  if(TimeQueue[n].CNum>MAX){ </p><p>  TimeQueue[n].middle->locat=Rem->locat; </p><p>  Time

46、Queue[n].middle=TimeQueue[n].middle->next; </p><p><b>  } </b></p><p>  if(i==1) TimeQueue[n].first=Rem->next; </p><p>  else q->next=Rem->next; </p>

47、<p>  free(Rem); </p><p>  TimeQueue[n].CNum--; </p><p>  printf("成功取消預(yù)定!\n");</p><p>  附錄源代碼:#include<stdio.h> </p><p>  #include<stdlib.h>

48、</p><p>  #include<string.h> </p><p>  #define LENGTH 6 </p><p>  #define MAX 20 </p><p>  #define S(r) (r-8)/2 </p><p>  #define NULL 0 </p>

49、<p>  struct node{ </p><p>  int locat; </p><p>  char data[10]; </p><p>  struct node *next; </p><p><b>  }; </b></p><p>  struct node *h

50、ead; </p><p>  struct cell{ </p><p>  int CNum; </p><p>  struct node *first; </p><p>  struct node *middle; </p><p>  struct node *last; </p><p

51、>  }TimeQueue[LENGTH]; </p><p>  void Inquir() </p><p><b>  { </b></p><p><b>  int n; </b></p><p>  char Infor[10]; </p><p>  st

52、ruct node *Rem; </p><p>  printf("輸入查詢時間(24 hours 8~20 o'clock,include 8o'clock)\n"); </p><p>  scanf("%d",&n); </p><p>  if(n>=8&&n<20

53、){ </p><p><b>  n=S(n); </b></p><p>  printf("請輸入學(xué)號\n"); </p><p>  scanf("%s",Infor); </p><p>  Rem=TimeQueue[n].first; </p><

54、p>  for(;Rem->next!=NULL;Rem=Rem->next) </p><p>  if(strcmp(Rem->data,Infor)==0)break; </p><p>  if(Rem->locat!=0) </p><p>  printf("The computer number is %d\n&

55、quot;,Rem->locat); </p><p>  else printf("對不起.你依舊在等待列表中或者沒有預(yù)定"); </p><p><b>  } </b></p><p>  else printf("錯誤,請再次輸入.\n"); </p><p><

56、;b>  } </b></p><p>  void inquir() </p><p><b>  { </b></p><p><b>  int n; </b></p><p>  printf("輸入想要查詢的時間(24 hours 8~20o'clock

57、,include 8 o'clock)\n"); </p><p>  scanf("%d",&n); </p><p>  if(n>=8&&n<20){ </p><p><b>  n=S(n); </b></p><p>  if(Time

58、Queue[n].CNum<MAX) </p><p>  printf("There are %d empty computer!\n",MAX-TimeQueue[n].CNum); </p><p>  else printf("對不起.沒有空余機位\n"); </p><p><b>  } </

59、b></p><p>  else printf("錯誤,再次輸入.\n"); </p><p><b>  } </b></p><p>  void booking() </p><p><b>  { </b></p><p><b>

60、;  int n; </b></p><p>  char Infor[10]; </p><p>  struct node *Rem; </p><p>  struct node *p; </p><p>  printf("輸入想要預(yù)定的時間\n"); </p><p>  sc

61、anf("%d",&n); </p><p>  if(n>=8&&n<20){ </p><p><b>  n=S(n); </b></p><p>  if(TimeQueue[n].CNum<MAX){ </p><p>  printf("

62、請輸入你的學(xué)號\n"); </p><p>  scanf("%s",Infor); </p><p>  if(TimeQueue[n].first==NULL){ </p><p>  Rem=(struct node *)malloc(sizeof(struct node)); </p><p>  Rem

63、->locat=1; </p><p>  strcpy(Rem->data,Infor); </p><p>  Rem->next=NULL; </p><p>  TimeQueue[n].first=Rem; </p><p>  TimeQueue[n].last=Rem; </p><p>

64、;  TimeQueue[n].CNum++; </p><p>  printf("成功預(yù)定\n"); </p><p><b>  } </b></p><p><b>  else{ </b></p><p>  Rem=(struct node *)malloc(size

65、of(struct node)); </p><p>  strcpy(Rem->data,Infor); </p><p>  Rem->next=NULL; </p><p>  p=TimeQueue[n].last; </p><p>  Rem->locat=TimeQueue[n].CNum+1; </p&

66、gt;<p>  printf("%d",Rem->locat); </p><p>  TimeQueue[n].last=Rem; </p><p>  p->next=Rem; </p><p>  TimeQueue[n].CNum++; </p><p>  printf("成

67、功預(yù)定\n"); </p><p><b>  } </b></p><p><b>  } </b></p><p>  else printf("沒有空余機位!"); </p><p><b>  } </b></p><p

68、>  else printf("錯誤.請再次輸入.\n"); </p><p><b>  } </b></p><p>  void waiting() </p><p><b>  { </b></p><p><b>  int n; </b>&

69、lt;/p><p>  char Infor[10]; </p><p>  struct node *Rem; </p><p>  struct node *p; </p><p>  printf("請輸入想要排隊的時間\n"); </p><p>  scanf("%d",&

70、amp;n); </p><p>  if(n>=8&&n<20){ </p><p><b>  n=S(n); </b></p><p>  if(TimeQueue[n].CNum>=MAX){ </p><p>  printf("請輸入你的學(xué)號\n"); &

71、lt;/p><p>  scanf("%s",Infor); </p><p>  if((TimeQueue[n].CNum)==MAX){ </p><p>  Rem=(struct node *)malloc(sizeof(struct node)); </p><p>  strcpy(Rem->data,In

72、for); </p><p>  Rem->next=NULL; </p><p>  Rem->locat=0; </p><p>  p=TimeQueue[n].last; </p><p>  TimeQueue[n].last=Rem; </p><p>  p->next=Rem; <

73、;/p><p>  TimeQueue[n].middle=Rem; </p><p>  TimeQueue[n].CNum++; </p><p>  printf("成功排隊\n"); </p><p><b>  } </b></p><p><b>  else

74、{ </b></p><p>  Rem=(struct node *)malloc(sizeof(struct node)); </p><p>  strcpy(Rem->data,Infor); </p><p>  Rem->next=NULL; </p><p>  Rem->locat=0; <

75、/p><p>  p=TimeQueue[n].last; </p><p>  TimeQueue[n].last=Rem; </p><p>  p->next=Rem; </p><p>  TimeQueue[n].CNum++; </p><p>  printf("成功排隊\n");

76、</p><p><b>  } </b></p><p><b>  } </b></p><p>  else printf("有空余機位,無須等待\n"); </p><p><b>  } </b></p><p>  els

77、e printf("錯誤.再次輸入.\n"); </p><p><b>  } </b></p><p>  void cancel() </p><p><b>  { </b></p><p><b>  int n; </b></p>

78、<p><b>  int i; </b></p><p>  char Infor[10]; </p><p>  struct node *Rem; </p><p>  struct node *q; </p><p>  struct node *p; </p><p>  pr

79、intf("請輸入預(yù)定的時間\n"); </p><p>  scanf("%d",&n); </p><p>  if(n>=8&&n<20){ </p><p>  printf("Please input your No.!\n"); </p><

80、;p>  scanf("%s",Infor); </p><p><b>  n=S(n); </b></p><p>  Rem=TimeQueue[n].first; </p><p><b>  q=Rem; </b></p><p>  for(i=1;;q=Rem

81、,Rem=Rem->next,i++) </p><p>  if(strcmp(Rem->data,Infor)==0)break; </p><p>  if(i>MAX){ </p><p>  if(Rem->next==NULL){ </p><p>  q->next=NULL; </p>

82、<p>  TimeQueue[n].last=q; </p><p>  free(Rem); </p><p>  TimeQueue[n].CNum--; </p><p>  printf("Succeed to out the queue!\n"); </p><p><b>  } &l

83、t;/b></p><p><b>  else{ </b></p><p>  q->next=Rem->next; </p><p>  free(Rem); </p><p>  TimeQueue[n].CNum--; </p><p>  printf("Su

84、cceed to out the queue!\n"); </p><p><b>  } </b></p><p><b>  } </b></p><p><b>  else{ </b></p><p>  if(TimeQueue[n].CNum>MAX

85、){ </p><p>  TimeQueue[n].middle->locat=Rem->locat; </p><p>  TimeQueue[n].middle=TimeQueue[n].middle->next; </p><p><b>  } </b></p><p>  if(i==1)

86、TimeQueue[n].first=Rem->next; </p><p>  else q->next=Rem->next; </p><p>  free(Rem); </p><p>  TimeQueue[n].CNum--; </p><p>  printf("成功取消預(yù)定!\n"); &l

87、t;/p><p><b>  } </b></p><p><b>  } </b></p><p>  else printf("錯誤,請再次輸入.\n"); </p><p><b>  } </b></p><p>  void i

88、nquir_waiting() </p><p><b>  { </b></p><p><b>  int n; </b></p><p>  struct node *q; </p><p>  printf("查詢其他等待者的預(yù)定時間\n"); </p>&

89、lt;p>  scanf("%d",&n); </p><p>  if(n>=8&&n<20){ </p><p><b>  n=S(n); </b></p><p>  if(TimeQueue[n].CNum>MAX){ </p><p>  p

90、rintf("等待列表 are:\n"); </p><p>  q=TimeQueue[n].middle; </p><p>  for(;q->next!=NULL;q=q->next) printf("%s\n",q->data); </p><p>  printf("%s\n"

91、,TimeQueue[n].last->data); </p><p><b>  } </b></p><p>  else printf("這個時間段沒有預(yù)定者\n"); </p><p><b>  } </b></p><p>  else printf("

92、;錯誤。請再次輸入.\n"); </p><p><b>  } </b></p><p><b>  main() </b></p><p><b>  { </b></p><p><b>  int i; </b></p>&

93、lt;p>  for(i=0;i<LENGTH;i++){ </p><p>  TimeQueue[i].CNum=0; </p><p>  TimeQueue[i].first=NULL; </p><p>  TimeQueue[i].middle=NULL; </p><p>  TimeQueue[i].last=NU

94、LL; </p><p><b>  } </b></p><p>  while(1){ </p><p>  printf("請輸入序號!:\n"); </p><p>  printf("1. 查詢預(yù)定的機位 2.查詢空機位 3.預(yù)定 4. 取消預(yù)定 5.等待列表 6.查詢等待者時間列

95、表 0.退出\n"); </p><p>  scanf("%d",&i); </p><p>  switch(i) </p><p><b>  { </b></p><p>  case 1:Inquir();break; </p><p>  case

96、 2:inquir();break; </p><p>  case 3:booking();break; </p><p>  case 4:cancel();break; </p><p>  case 5:waiting();break; </p><p>  case 6:inquir_waiting();break; </p&

97、gt;<p>  case 0:exit(0); </p><p>  default:printf("error\n"); </p><p><b>  } </b></p><p><b>  } </b></p><p><b>  }</b&

溫馨提示

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

評論

0/150

提交評論