課程設(shè)計(jì)報(bào)告(網(wǎng)吧管理系統(tǒng))_第1頁(yè)
已閱讀1頁(yè),還剩27頁(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>  軟件學(xué)院課程設(shè)計(jì)報(bào)告</p><p><b>  —— 網(wǎng)吧管理系統(tǒng)</b></p><p>  年級(jí)班級(jí): </p><p>  專業(yè)方向: </p><p>  學(xué) 號(hào): </p><p>  姓 名:

2、 </p><p>  指導(dǎo)老師: </p><p><b>  二零一零年六月</b></p><p><b>  一、問(wèn)題描述</b></p><p>  本程序是一個(gè)網(wǎng)吧管理程序,首先選擇界面選擇需要的服務(wù),包括查詢空機(jī)位,預(yù)訂與取消機(jī)位,用戶可通過(guò)屏幕提示,查詢自己的信

3、息,包括打印預(yù)訂單,等候單,以及打印用戶列表。操作簡(jiǎn)潔,較易掌握。 </p><p><b>  二、基本要求</b></p><p><b>  1、軟件要求</b></p><p>  Windows XP、Windows Vista、Windows7 64位系統(tǒng)。使用VC++6.0</p><p

4、><b>  2、硬件要求</b></p><p>  CPU:CORE I5 2.14GHZ 內(nèi)存:4G</p><p><b>  三、需求分析</b></p><p><b>  1、功能需求 </b></p><p>  實(shí)現(xiàn)對(duì)網(wǎng)吧機(jī)位的預(yù)定,查詢,取消預(yù)訂,以及

5、打印預(yù)訂與候選單。</p><p><b>  2、性能需求</b></p><p>  根據(jù)系統(tǒng)提示選擇查詢以及預(yù)定的時(shí)間段 </p><p><b>  四、測(cè)試數(shù)據(jù)</b></p><p>  查詢時(shí)間:2010-06-23 時(shí)間段:1</p><p>  機(jī)位預(yù)訂:

6、2010-06-23 時(shí)間段:1 預(yù)訂者姓名:楊驥 預(yù)訂者電話:123</p><p><b>  打印預(yù)訂單;</b></p><p>  輸出:預(yù)定日期:2010-06-23</p><p>  預(yù)定時(shí)間:08:00</p><p><b>  聯(lián)系電話:123</b></p>&

7、lt;p><b>  五.疑難解答</b></p><p>  六. 心得體會(huì)與研究方向</p><p>  通過(guò)對(duì)C語(yǔ)言的學(xué)習(xí),了解C語(yǔ)言的基本知識(shí),運(yùn)用C語(yǔ)言可以解決許多實(shí)際問(wèn)題,尤其是在信息管理方面,C語(yǔ)言作為一門高級(jí)和計(jì)算機(jī)編程語(yǔ)言,有其強(qiáng)大的功能。同時(shí)我也知道了我們隨時(shí)都要培養(yǎng)自己的動(dòng)手能力,只有這樣,才能更好的適應(yīng)這個(gè)日新月異的飛速發(fā)展的社會(huì)。<

8、;/p><p>  在系統(tǒng)的時(shí)候發(fā)現(xiàn)自己的能力還是有限,要想學(xué)好C語(yǔ)言,并且靈活應(yīng)用還是需要下苦功夫的,在接下來(lái)的暑假中我會(huì)經(jīng)常上機(jī)實(shí)踐,做到熟練掌握C語(yǔ)言中的精華。</p><p>  數(shù)據(jù)結(jié)構(gòu)是C語(yǔ)言的基礎(chǔ),希望能在把編程練習(xí)好之后,繼續(xù)深入學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu),并結(jié)合C語(yǔ)言來(lái)繼續(xù)進(jìn)一步提高編程能力。</p><p><b>  七. 程序源代碼</b>

9、;</p><p>  #include <stdio.h></p><p>  #include <string.h></p><p>  #include <stdlib.h></p><p>  #define N 1 /* 計(jì)算機(jī)總臺(tái)數(shù),可以根據(jù)實(shí)際需要改動(dòng) */</p>

10、<p>  #define P 11 /* 定義輸入的日期字符數(shù)組,其格式為2009-12-23,共11位(包含\0),無(wú)需改動(dòng) */</p><p>  #define T 12 /* 手機(jī)號(hào)碼長(zhǎng)度,共12位(包含\0) */</p><p>  #define S 13 /* 表示時(shí)間段的輸出長(zhǎng)度,如8:00--10:00,共占13

11、位 */</p><p>  /* 數(shù)據(jù)結(jié)構(gòu)的定義 */</p><p>  /* 計(jì)算機(jī)類(關(guān)于類,有點(diǎn)OOP的的意味,在這里可以理解為相關(guān)數(shù)據(jù)在內(nèi)存中的表現(xiàn)形式) */</p><p>  struct Computer{</p><p>  int no; /* 計(jì)算機(jī)編號(hào),個(gè)人感覺(jué)在這里沒(méi)多大用處

12、 */</p><p>  int isOrder; /* 是否被預(yù)定,0表示未預(yù)定,1表示已預(yù)定 */</p><p><b>  };</b></p><p><b>  /* 用戶類 */</b></p><p>  struct User{</p><

13、;p>  char name[P]; /* 用戶姓名 */</p><p>  char tel[T]; /* 用戶聯(lián)系方式 */</p><p>  struct User *next; /* User類型指針 */</p><p><b>  };</b></p>

14、<p>  /* 預(yù)訂信息類 */</p><p>  struct OrderInfo{</p><p>  char date[P]; /* 日期 */</p><p>  int time; /* 時(shí)間段 */</p><p>  struct User *user;

15、 /* User類型指針,指向一個(gè)User類型節(jié)點(diǎn) */</p><p>  struct OrderInfo * next;</p><p><b>  };</b></p><p>  /* 重命名結(jié)構(gòu)體 */</p><p>  typedef struct Computer Computer;</p

16、><p>  typedef struct OrderInfo OrderInfo;</p><p>  typedef struct User User;</p><p>  /* 定義相關(guān)全局變量 */</p><p>  static Computer computers[N]; /* 表示20臺(tái)計(jì)算機(jī)

17、的數(shù)組 */</p><p>  static OrderInfo orderList; /* 預(yù)訂單,以鏈表表示 */</p><p>  static OrderInfo waitList; /* 等候單 */</p><p>  static User userList

18、; /* 用戶列表 */</p><p>  static OrderInfo *orderHead = &orderList; /* 指向預(yù)訂單頭結(jié)點(diǎn)的指針 */</p><p>  static OrderInfo *waitHead = &waitList; /* 指向等候單頭結(jié)

19、點(diǎn)的指針 */</p><p>  static User *userHead = &userList; /* 指向用戶列表頭結(jié)點(diǎn)的指針 */</p><p>  static OrderInfo *orderCurrent = &orderList; /* 指向預(yù)訂單隊(duì)尾的指針,初始指向頭結(jié)點(diǎn) */</p><

20、;p>  static OrderInfo *waitCurrent = &waitList; /* 指向等候單隊(duì)尾的指針,初始指向頭結(jié)點(diǎn) */</p><p>  static User *userCurrent = &userList; /* 指向用戶列表隊(duì)尾的指針,初始指向頭結(jié)點(diǎn) */</p><p>  static cha

21、r str[S] = "\0";</p><p>  /* 函數(shù)聲明 */</p><p>  void init(); /* 系統(tǒng)初始化,相關(guān)全局變量的初始化 */</p><p>  void mainMenu();

22、 /* 主菜單中的選項(xiàng)邏輯處理 */</p><p>  int select(char date[],int time); /* 通過(guò)日期和時(shí)間段進(jìn)行查詢,返回繁忙的計(jì)算機(jī)的數(shù)目 */</p><p>  voi

23、d order (char date[],int time); /* 處理預(yù)定信息 */</p><p>  void printInfo(char date[],int time,int *used,int *wait); /* 通過(guò)日期和時(shí)間段打印出相關(guān)預(yù)訂單和等候單的信息,并以指針形式返回預(yù)定數(shù)目和等

24、候數(shù)目 */</p><p>  void deleteFromOrderList(char date[],int time,int n); /* 從預(yù)訂單中刪除相關(guān)條目,并將等候單中第一個(gè)用戶自動(dòng)添加到預(yù)訂單中 */</p><p>  void deleteFormWaitList(char date[],int time,int n);

25、 /* 從等候單中刪除相關(guān)條目 */</p><p>  void cancel(char date[],int time); /* 通過(guò)日期和訂單號(hào)刪除相關(guān)條目 */</p><p>  int getDate(char date[],int i);

26、 /* 獲得日期的輸入,并進(jìn)行相關(guān)判斷操作 */</p><p>  int isBusy(int count); /* 判斷是否滿員 */</p><p>  char* showTime(int time);

27、 /* 輸出相應(yīng)時(shí)間段 */</p><p>  void showMenu(); /* 顯示主菜單選項(xiàng) */</p><p>  int getFreeTime(char date[], int time);

28、 /* 通過(guò)日期和時(shí)間段獲得當(dāng)前是否滿員,1表示未滿 */</p><p>  void insertIntoList(int i,char date[],int time,char name[],char tel[]); /* 向鏈表中插入數(shù)據(jù) */</p><p>  /* 程序入口點(diǎn) */</p&g

29、t;<p>  void main(){</p><p><b>  init();</b></p><p>  mainMenu();</p><p><b>  }</b></p><p>  /* 系統(tǒng)初始化(全局變量的初始化) */</p><p>  

30、void init(){</p><p><b>  int i;</b></p><p>  for(i = 0; i < N; i++){</p><p>  computers[i].no = i;</p><p>  computers[i].isOrder = 0;</p><p>

31、;<b>  }</b></p><p>  strcpy(orderList.date,"");</p><p>  orderList.time = 0;</p><p>  orderList.user = NULL;</p><p>  orderList.next = NULL;</p

32、><p>  strcpy(waitList.date,"");</p><p>  waitList.time = -1;</p><p>  waitList.user = NULL;</p><p>  waitList.next = NULL;</p><p><b>  }</

33、b></p><p>  /* 顯示主菜單選項(xiàng) */</p><p>  void showMenu()</p><p><b>  {</b></p><p>  printf("**********歡迎使用網(wǎng)吧管理系統(tǒng)**********\n");</p><p> 

34、 printf("\n");</p><p>  printf(" 1.查詢\n");</p><p>  printf(" 2.機(jī)位預(yù)定\n");</p><p>  printf(" 3.取消預(yù)定\n");</p>

35、<p>  printf(" 4.退出系統(tǒng)\n");</p><p>  /* 調(diào)試功能,以下三項(xiàng)是做測(cè)試時(shí)使用的,可以根據(jù)實(shí)際需要增刪 */</p><p>  /* ****************************************************** */</p><p>  printf(

36、" 5.打印預(yù)訂單\n");</p><p>  printf(" 6.打印等候單\n");</p><p>  printf(" 7.打印用戶列表\n");</p><p>  /* **********************************

37、*********************/</p><p>  printf("\n");</p><p>  printf("請(qǐng)輸入您的選擇: ");</p><p>  printf("\n");</p><p><b>  }</b></p&g

38、t;<p>  /* 輸出相應(yīng)時(shí)間段 */</p><p>  char *showTime(int time)</p><p><b>  {</b></p><p>  switch(time)</p><p><b>  {</b></p><p>  c

39、ase 1: strcpy(str,"08:00--10:00"); break;</p><p>  case 2: strcpy(str,"10:00--12:00"); break;</p><p>  case 3: strcpy(str,"12:00--14:00"); break;</p><p&g

40、t;  case 4: strcpy(str,"14:00--16:00"); break;</p><p>  case 5: strcpy(str,"16:00--18:00"); break;</p><p>  case 6: strcpy(str,"18:00--20:00"); break;</p>&l

41、t;p><b>  }</b></p><p>  return str;</p><p><b>  }</b></p><p>  /* 主菜單邏輯處理 */</p><p>  void mainMenu()</p><p><b>  {</b&

42、gt;</p><p>  int choice = 0; /* 選項(xiàng) */</p><p>  char date[P],ch;</p><p>  int time = -1; /* 時(shí)間段初始化為-1 */</p><p>  int i,result;

43、 /* result表示輸入時(shí)間數(shù)據(jù)是否滿足相關(guān)要求 */</p><p>  /* 若要開(kāi)啟調(diào)試功能,以下注釋也應(yīng)去掉 */</p><p>  /* ************************************************************************* */</p><p>  OrderInfo *orderT

44、emp;</p><p>  OrderInfo *waitTemp;</p><p>  User *userTemp;</p><p>  /* **************************************************************************/</p><p>  showMenu();

45、 /* 顯示相關(guān)選項(xiàng) */</p><p>  do{ /* 需要循環(huán)判斷,知道輸入4(退出)時(shí)才結(jié)束程序 */</p><p>  scanf("%d",&choice);</p><p>  switch(choice)</p>

46、<p><b>  {</b></p><p>  case 1 : /* 查詢 */</p><p>  /*這條語(yǔ)句主要是由于在getDate()函數(shù)中將會(huì)捕獲到在主菜單中選擇相應(yīng)功能后的那個(gè)回車,</p><p>  此時(shí)選擇1,然后回車,它將捕獲到這個(gè)回車,造成不必要的麻煩*/</p

47、><p>  ch = getchar(); </p><p>  printf("請(qǐng)輸入日期,格式y(tǒng)yyy-mm-dd(如:2009-12-22):\n");</p><p>  result = getDate(date,P);</p><p>  while(result != 1)

48、 /* 判斷是否滿足相應(yīng)輸入要求 */</p><p><b>  {</b></p><p>  result = getDate(date,P);</p><p><b>  }</b></p><p>  printf("請(qǐng)選擇時(shí)間段:\n");</p&

49、gt;<p>  for(i = 1; i <= 6; i++)</p><p><b>  {</b></p><p>  printf("%d. %s\n",i,showTime(i)); /* showTime(),打印相關(guān)的時(shí)間段信息 */</p><p><b>  }

50、</b></p><p>  scanf("%d",&time);</p><p>  while(time <1 || time > 6) /* 同樣是進(jìn)行輸入校驗(yàn) */</p><p><b>  {</b></p><p> 

51、 printf("對(duì)不起,您輸入的參數(shù)有誤,請(qǐng)核對(duì)后重新輸入!\n\n");</p><p>  scanf("%d",&time);</p><p><b>  }</b></p><p>  isBusy(select(date,time)); /* is

52、Busy()判斷是否滿員 */</p><p>  system("pause"); /* system("pause")-->暫停DOS窗口輸出 */</p><p><b>  break;</b></p><p><b>  ca

53、se 2 :</b></p><p>  ch = getchar();</p><p>  printf("請(qǐng)輸入日期,格式y(tǒng)yyy-mm-dd(如:2009-12-22):\n");</p><p>  result = getDate(date,P);</p><p>  while(result !=

54、1)</p><p><b>  {</b></p><p>  result = getDate(date,P);</p><p><b>  }</b></p><p>  printf("請(qǐng)選擇時(shí)間段:\n");</p><p>  for(i =

55、1; i <= 6; i++)</p><p><b>  {</b></p><p>  printf("%d. %s\n",i,showTime(i));</p><p><b>  }</b></p><p>  scanf("%d",&

56、time);</p><p>  while(time <1 || time > 6)</p><p><b>  {</b></p><p>  printf("對(duì)不起,您輸入的參數(shù)有誤,請(qǐng)核對(duì)后重新輸入!\n\n");</p><p>  scanf("%d",&a

57、mp;time);</p><p><b>  }</b></p><p>  order(date,time); /* 調(diào)用預(yù)定相關(guān)邏輯處理函數(shù) */</p><p>  system("pause");</p><p><b>  break

58、;</b></p><p><b>  case 3 :</b></p><p>  ch = getchar();</p><p>  printf("請(qǐng)輸入日期,格式y(tǒng)yyy-mm-dd(如:2009-12-22):\n");</p><p>  result = getDate(da

59、te,P);</p><p>  while(result != 1)</p><p><b>  {</b></p><p>  result = getDate(date,P);</p><p><b>  }</b></p><p>  printf("請(qǐng)選擇

60、時(shí)間段:\n");</p><p>  for(i = 1; i <= 6; i++)</p><p><b>  {</b></p><p>  printf("%d. %s\n",i,showTime(i));</p><p><b>  }</b><

61、/p><p>  scanf("%d",&time);</p><p>  while(time <1 || time > 6)</p><p><b>  {</b></p><p>  printf("對(duì)不起,您輸入的參數(shù)有誤,請(qǐng)核對(duì)后重新輸入!\n\n");&

62、lt;/p><p>  scanf("%d",&time);</p><p><b>  }</b></p><p>  cancel(date,time); /* 調(diào)用取消預(yù)定相關(guān)邏輯處理 */</p><p>  system("paus

63、e");</p><p><b>  break;</b></p><p><b>  case 4 :</b></p><p>  printf("歡迎下次繼續(xù)使用!\n");</p><p>  exit(0);

64、 /* 退出程序 */</p><p><b>  break;</b></p><p>  /* 調(diào)試功能,以下部分是前面提到的調(diào)試時(shí)使用,可以按照需要選擇增刪此部分,這兩部分應(yīng)同時(shí)開(kāi)啟或關(guān)閉,以免引起不必要的麻煩 */</p><p>  /* ********************************************

65、******************************************************************** */</p><p><b>  case 5 :</b></p><p>  if(orderCurrent == orderHead)</p><p><b>  {</b><

66、/p><p>  printf("暫無(wú)相關(guān)信息\n");</p><p>  printf("\n\n");</p><p><b>  }else</b></p><p><b>  {</b></p><p>  orderTemp =

67、 orderHead->next;</p><p>  while(orderTemp != NULL){</p><p>  printf("預(yù)定日期: %s\n",orderTemp->date);</p><p>  printf("預(yù)定時(shí)間: %s\n",showTime(orderTemp->t

68、ime));</p><p>  printf("預(yù)定者 : %s\n",orderTemp->user->name);</p><p>  printf("聯(lián)系方式: %s\n",orderTemp->user->tel);</p><p>  printf("\n\n");

69、</p><p>  if( orderTemp->next != NULL)</p><p><b>  {</b></p><p>  orderTemp = orderTemp->next;</p><p><b>  }else</b></p><p>&

70、lt;b>  {</b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p> 

71、 system("pause");</p><p><b>  break;</b></p><p><b>  case 6 :</b></p><p>  if(waitHead->next == NULL)</p><p><b>  {</b>

72、</p><p>  printf("暫無(wú)相關(guān)信息\n");</p><p>  printf("\n\n");</p><p><b>  }else</b></p><p><b>  {</b></p><p>  waitTem

73、p = waitHead->next;</p><p>  while(waitTemp != NULL){</p><p>  printf("預(yù)定日期: %s\n",waitTemp->date);</p><p>  printf("預(yù)定時(shí)間: %s\n",showTime(waitTemp->ti

74、me));</p><p>  printf("預(yù)定者 : %s\n",waitTemp->user->name);</p><p>  printf("聯(lián)系方式: %s\n",waitTemp->user->tel);</p><p>  printf("\n\n");<

75、;/p><p>  if(waitTemp->next != NULL)</p><p><b>  {</b></p><p>  waitTemp = waitTemp->next;</p><p><b>  }else</b></p><p><b>

76、;  {</b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  system

77、("pause");</p><p><b>  break;</b></p><p><b>  case 7 :</b></p><p>  if(userCurrent == userHead)</p><p><b>  {</b></p>

78、;<p>  printf("暫無(wú)相關(guān)信息\n");</p><p>  printf("\n\n");</p><p><b>  }else</b></p><p><b>  {</b></p><p>  userTemp = userH

79、ead->next;</p><p>  while(userTemp != NULL){</p><p>  printf("聯(lián)系人姓名: %s\n",userTemp->name);</p><p>  printf("聯(lián)系人電話: %s\n",userTemp->tel);</p>&

80、lt;p>  printf("\n\n");</p><p>  if(userTemp->next != NULL)</p><p><b>  {</b></p><p>  userTemp = userTemp->next;</p><p><b>  }else&

81、lt;/b></p><p><b>  {</b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }&

82、lt;/b></p><p>  system("pause");</p><p><b>  break;</b></p><p>  /******************************************************************************************

83、****************/</p><p>  default : printf("對(duì)不起,您輸入的參數(shù)有誤,請(qǐng)核對(duì)后重新輸入!\n\n\n");system("pause");</p><p><b>  }</b></p><p>  system("cls");

84、 /* system("cls")-->清空當(dāng)前DOS窗口中的內(nèi)容 */</p><p>  showMenu();</p><p>  }while(choice != '4'); /* 除非輸入4,否則將不會(huì)結(jié)束循環(huán) */</p><p><b>  }

85、</b></p><p>  /* 獲得日期的輸入,并進(jìn)行相關(guān)判斷操作,其中i表示需要輸入的字符串長(zhǎng)度,如2009-12-23,這個(gè)字符串就是11位的(包含\0) */</p><p>  /* 以下相關(guān)代碼是進(jìn)行輸入校驗(yàn)的 */</p><p>  int getDate(char date[],int i)</p><p>&

86、lt;b>  {</b></p><p>  char *p = date,ch;</p><p>  int m = 0 , result = 0 ,j; /* result表示輸入是否合法,1表示合法 */</p><p>  while(m <= i)</p><p><b>  

87、{</b></p><p>  ch = getchar();</p><p>  if(ch != '\n')</p><p><b>  {</b></p><p>  if(ch >='0' && ch <= '9' || ch

88、== '-') /* 輸入的字符只能為'0'到'9'以及'-' */</p><p><b>  {</b></p><p>  *p++ = ch;</p><p><b>  m++;</b></p><p><

89、b>  }else</b></p><p><b>  {</b></p><p>  *p = '\0';</p><p><b>  break;</b></p><p><b>  }</b></p><p>&l

90、t;b>  }else</b></p><p><b>  {</b></p><p><b>  *p ='\0';</b></p><p><b>  break;</b></p><p><b>  }</b><

91、;/p><p><b>  }</b></p><p>  *p++ = '\0';</p><p><b>  m++;</b></p><p>  if(m == i) /* 判斷長(zhǎng)度是否符合輸入要求 */</p>

92、<p><b>  {</b></p><p>  result = 1;</p><p><b>  }</b></p><p>  for(j = 0; j < P; j++) /* 判斷是否僅僅只有date[4]和date[7]為'-',以此來(lái)判斷格式是否

93、為yyyy-mm-dd */</p><p><b>  {</b></p><p>  if(j == 4 || j == 7)</p><p><b>  {</b></p><p><b>  continue;</b></p><p><b

94、>  }</b></p><p>  if(date[j] == '-')</p><p><b>  {</b></p><p>  result = 0;</p><p><b>  break;</b></p><p><b>

95、;  }</b></p><p><b>  }</b></p><p>  return result;</p><p><b>  }</b></p><p>  /* 查詢某時(shí)間段是否滿員,返回已預(yù)定的機(jī)位數(shù) */</p><p>  int select(

96、char date[],int time){</p><p>  OrderInfo *temp = orderHead; /* 臨時(shí)性存儲(chǔ)頭結(jié)點(diǎn) */</p><p>  int count = 0; /* 存儲(chǔ)該時(shí)間段預(yù)定人數(shù) */</p><p><b>  do{</b><

97、;/p><p>  /* 遍歷orderList,獲得相同時(shí)間段的預(yù)定信息,統(tǒng)計(jì)20臺(tái)機(jī)器中正在使用多少臺(tái) */</p><p>  if(strcmp(temp->date,date) == 0 && temp->time == time)</p><p><b>  {</b></p><p>

98、;<b>  count++;</b></p><p><b>  }</b></p><p>  if(temp->next != NULL) /* 若為空,表示已到鏈表末尾,直接跳出循環(huán) */</p><p><b>  {</b></p><p&g

99、t;  temp = temp->next;</p><p><b>  }else</b></p><p><b>  {</b></p><p><b>  break;</b></p><p><b>  }</b></p>&l

100、t;p>  }while(temp != NULL);</p><p>  return count;</p><p><b>  }</b></p><p>  /* 判斷是否滿員 */</p><p>  int isBusy(int count)</p><p><b>  

101、{</b></p><p>  int result = 0; /* 該變量作為返回值,指示該時(shí)間段是否滿員,1表示已滿,0表示空閑 */</p><p>  /* 若使用數(shù)目大于20臺(tái),則提示無(wú)空閑機(jī)位,否則打印出空閑機(jī)位 */</p><p>  if(count >= N)</p><p><

102、;b>  {</b></p><p>  printf("對(duì)不起,暫無(wú)空閑機(jī)位\n\n");</p><p>  result = 1;</p><p><b>  }else</b></p><p><b>  {</b></p><p&g

103、t;  printf("恭喜您,還剩%d個(gè)機(jī)位\n\n",N - count);</p><p><b>  }</b></p><p>  return result; /* 該返回值表示是否滿員 */</p><p><b>  }</b></p><p&g

104、t;  /* 通過(guò)日期和時(shí)間段獲得當(dāng)前是否滿員,1表示未滿 */</p><p>  int getFreeTime(char date[], int time)</p><p><b>  {</b></p><p>  int result = 0;</p><p>  int count = select(date

105、,time);</p><p>  if(count < N)</p><p><b>  {</b></p><p>  result = 1;</p><p><b>  }</b></p><p>  return result;</p><p

106、><b>  }</b></p><p>  /* 預(yù)定邏輯處理,首先判斷是否滿員,可以調(diào)用select函數(shù) */</p><p>  void order (char date[],int time)</p><p><b>  {</b></p><p>  int result;<

107、/p><p>  char name[P];</p><p>  char tel[T];</p><p>  system("cls");</p><p>  printf("**********歡迎使用網(wǎng)吧管理系統(tǒng)**********\n\n");</p><p>  print

108、f("您查詢的時(shí)間段是: %s %s\n\n",date,showTime(time));</p><p>  result = isBusy(select(date,time));</p><p>  if(result == 0) /* 未滿 */</p><p><b>  {</b>

109、;</p><p><b>  int ch;</b></p><p>  printf("是否開(kāi)始預(yù)定?\n");</p><p>  printf("1.是\n");</p><p>  printf("2.否\n");</p><p&g

110、t;  printf("3.返回主菜單\n");</p><p>  scanf("%d",&ch);</p><p>  while(ch != 1 && ch != 2 && ch != 3) /* 同樣是輸入校驗(yàn) */</p><p><b>  {

111、</b></p><p>  printf("對(duì)不起,您輸入的參數(shù)有誤,請(qǐng)核對(duì)后重新輸入!\n\n\n");</p><p>  scanf("%d",&ch);</p><p><b>  }</b></p><p>  if(ch == 1)</p&g

112、t;<p><b>  {</b></p><p>  system("cls");</p><p>  printf("**********歡迎使用網(wǎng)吧管理系統(tǒng)**********\n\n");</p><p>  printf("您預(yù)定的時(shí)間段是: %s %s\n\n&q

113、uot;,date,showTime(time));</p><p>  /* 輸入相關(guān)聯(lián)系人的信息 */</p><p>  printf("請(qǐng)輸入預(yù)訂者信息\n");</p><p>  printf("預(yù)訂者姓名: ");</p><p>  scanf("%s",nam

114、e);</p><p>  printf("預(yù)訂者電話: ");</p><p>  scanf("%s",tel);</p><p>  /*向預(yù)定表中插入數(shù)據(jù)*/</p><p>  insertIntoList(1,date,time,name,tel); /* 向鏈表中插入數(shù)

115、據(jù) */</p><p><b>  /* 選擇否 */</b></p><p>  }else if(ch == 2)</p><p><b>  {</b></p><p>  system("cls");</p><p>  mainMenu();&

116、lt;/p><p>  /* 選擇回到主菜單 */</p><p>  }else if(ch == 3)</p><p><b>  {</b></p><p>  system("cls");</p><p>  mainMenu();</p><p>

117、<b>  }</b></p><p>  /* 當(dāng)是滿員的情況 */</p><p><b>  }else</b></p><p><b>  {</b></p><p>  int ch, temp = 0 , t, isFree = 0,p;</p>&l

118、t;p>  int chTemp;</p><p>  printf("預(yù)定最近機(jī)位,排隊(duì)等候還是返回?\n");</p><p>  printf("1.預(yù)定最近機(jī)位\n");</p><p>  printf("2.排隊(duì)等候\n");</p><p>  printf(&q

119、uot;3.返回主菜單\n");</p><p>  scanf("%d",&ch);</p><p>  while(ch != 1 && ch != 2 && ch != 3){</p><p>  printf("對(duì)不起,您輸入的參數(shù)有誤,請(qǐng)核對(duì)后重新輸入!\n\n\n"

120、);</p><p>  scanf("%d",&ch);</p><p><b>  }</b></p><p>  /* 這里實(shí)現(xiàn)的功能是獲得最近的空閑時(shí)間,最近時(shí)間可能是上一個(gè)時(shí)間段,也可能是下一個(gè)時(shí)間段 */</p><p>  /* isFree = 1 時(shí),表示還有空閑,isFre

121、e = 0 時(shí),表示當(dāng)天已經(jīng)全部滿員 */</p><p>  if(ch == 1){</p><p>  for(t = 1; t < 6; t++)</p><p><b>  {</b></p><p>  if(time + t <= 6)</p><p><b>

122、  {</b></p><p>  p = time + t;</p><p>  isFree = getFreeTime(date,p);</p><p><b>  }</b></p><p>  if(isFree == 1)</p><p><b>  {</

123、b></p><p><b>  break;</b></p><p><b>  }</b></p><p>  if(time - t >= 1)</p><p><b>  {</b></p><p>  p = time - t;&l

124、t;/p><p>  isFree = getFreeTime(date,p);</p><p><b>  }</b></p><p>  if(isFree == 1)</p><p><b>  {</b></p><p><b>  break;</b&g

125、t;</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(isFree == 0) /* 全部滿員的情況 */</p><p><b>  {</b></p><p>  printf(

126、"對(duì)不起,當(dāng)天各時(shí)段已經(jīng)全部滿員,是否排隊(duì)等候?\n");</p><p>  printf("1. 是\n");</p><p>  printf("2. 否\n");</p><p>  scanf("%d",&chTemp);</p><p> 

127、 while(chTemp != 1 && chTemp != 2) /* 同樣是輸入校驗(yàn) */</p><p><b>  {</b></p><p>  printf("對(duì)不起,輸入?yún)?shù)有誤.\n");</p><p>  scanf("%d",&chTemp);

128、</p><p><b>  }</b></p><p>  if(chTemp == 1)</p><p><b>  {</b></p><p>  /* 輸入相關(guān)聯(lián)系人的信息 */</p><p>  printf("請(qǐng)輸入預(yù)訂者信息\n");<

129、;/p><p>  printf("預(yù)訂者姓名: ");</p><p>  scanf("%s",name);</p><p>  printf("預(yù)訂者電話: ");</p><p>  scanf("%s",tel);</p><

130、p>  /*向等候表中插入數(shù)據(jù)*/</p><p>  insertIntoList(2,date,time,name,tel); /* 向鏈表中插入數(shù)據(jù) */</p><p><b>  }</b></p><p>  else if(chTemp == 2)</p><p><b>  

131、{</b></p><p>  system("cls");</p><p>  mainMenu();</p><p><b>  }</b></p><p><b>  }else</b></p><p><b>  {</

132、b></p><p>  printf("當(dāng)前日期是: %s\n",date);</p><p>  printf("最近空閑的時(shí)間段是: %s\n",showTime(p));</p><p>  printf("是否預(yù)定?\n");</p><p>  printf(&

133、quot;1. 是\n");</p><p>  printf("2. 否\n");</p><p>  scanf("%d",&temp);</p><p>  while(temp != 1 && temp != 2)</p><p><b>  {&

134、lt;/b></p><p>  scanf("%d",&temp);</p><p><b>  }</b></p><p>  if(temp == 1)</p><p><b>  {</b></p><p>  /* 輸入相關(guān)聯(lián)系人的

135、信息 */</p><p>  printf("請(qǐng)輸入預(yù)訂者信息\n");</p><p>  printf("預(yù)訂者姓名: ");</p><p>  scanf("%s",name);</p><p>  printf("預(yù)訂者電話: ");<

136、;/p><p>  scanf("%s",tel);</p><p>  /*向預(yù)定表中插入數(shù)據(jù)*/</p><p>  insertIntoList(1,date,p,name,tel);</p><p><b>  }else</b></p><p><b>  {&

137、lt;/b></p><p>  system("cls");</p><p>  mainMenu();</p><p><b>  }</b></p><p><b>  }</b></p><p>  /* 這是選擇排隊(duì)等候的情況 */<

138、/p><p>  }else if(ch == 2)</p><p><b>  {</b></p><p>  /* 輸入相關(guān)聯(lián)系人的信息 */</p><p>  printf("請(qǐng)輸入預(yù)訂者信息\n");</p><p>  printf("預(yù)訂者姓名: &q

139、uot;);</p><p>  scanf("%s",name);</p><p>  printf("預(yù)訂者電話: ");</p><p>  scanf("%s",tel);</p><p>  insertIntoList(2,date,time,name,tel);&

140、lt;/p><p>  /* 返回主菜單的情況 */</p><p>  }else if(ch == 3)</p><p><b>  {</b></p><p>  system("cls");</p><p>  mainMenu();</p><p>

141、;<b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  /* 通過(guò)日期和時(shí)間段打印出相關(guān)預(yù)訂單和等候單的信息,并以指針形式返回預(yù)定數(shù)目和等候數(shù)目 */</p><p>  void printInfo(cha

142、r date[],int time,int *used,int *wait)</p><p><b>  {</b></p><p>  OrderInfo *orderTemp = orderHead; /* 臨時(shí)性存儲(chǔ)頭結(jié)點(diǎn) */</p><p>  OrderInfo *waitTemp = waitHead; /*

溫馨提示

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