根據(jù)輸入時間,輸出機位信息
根據(jù)輸入的日期和時間段查詢是否有空機位,若有,則預(yù)約;若無,則提供最近空機時間段
另: 若用戶要求在非空時間上機, 則將用戶信息插入該時間段的等待列表
根據(jù)輸入的時間, 撤銷該時間的預(yù)訂;查詢是否有等待信息,若有,則按順序顯示聯(lián)系方式。
1.系統(tǒng)功能模塊圖:
2.函數(shù)模塊圖
1 void Fx();
菜單頁面函數(shù),主函數(shù)
2 void f1();
查詢機位是否空置的函數(shù)
3 void f2();
預(yù)定機位函數(shù)
4 void f3();
取消預(yù)定機位函數(shù)
5 void f4();
查看預(yù)定情況函數(shù)
6 void detail(int t);
對應(yīng)時間空置機位的情況函數(shù)
7 void prione(int i);
輸出等待列表到屏幕
#include#include#include#define N 20 //wait結(jié)構(gòu)體中代表的20個結(jié)構(gòu)體
#define T (t-8)/2 //
int sum[6]={0};//有18個小時,用六個元素進行三個時間段循環(huán),每個元素對應(yīng)下面結(jié)構(gòu)體電腦狀態(tài)
int computer[6][20]{{1,0,1,0,1,1,0,0,0,0,0,0,1,1,1,1,0,1,1,1},
{1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1},
{1,1,0,1,1,1,1,1,0,1,1,0,1,0,1,1,0,1,1,1},
{1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,0,0,1,1,1},
{1,1,0,1,1,1,0,0,0,0,0,0,1,1,0,1,1,1,1,0},
{1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,0,1,1,1,1}};//模擬20臺電腦狀態(tài),0代表空置,18個小時3個循環(huán) ,每個時間機位空置模擬
void Fx(); //菜單頁面函數(shù),主函數(shù)
void f1();//查詢機位是否空置的函數(shù)
void f2();//預(yù)定機位函數(shù)
void f3();//取消預(yù)定機位函數(shù)
void f4();//查看預(yù)定情況函數(shù)
void detail(int t);//對應(yīng)時間空置機位的情況函數(shù)
void prione(int i);//輸出等待列表到屏幕
struct waitlist//等待列表結(jié)構(gòu)體
{char num[3];//存預(yù)約機位號
char phone[11]; //存電話號碼
}wait[N];//20個結(jié)構(gòu)體
int main()
{Fx();
}
void Fx()// 菜單函數(shù)
{int a,b;
do
{printf("\t\t\t機房機位預(yù)定系統(tǒng)\n");
printf("\t\t\t\t菜單\n");
printf("\t\t\t1.查詢機位狀態(tài)\n");
printf("\t\t\t2.預(yù)定空機位\n");
printf("\t\t\t3.取消預(yù)訂\n");
printf("\t\t\t4.查詢等待信息\n");
printf("\t\t\t5.退出\n");
printf("\t\t請輸入選擇項目(1-5):");
scanf("%d",&a);
if(a<1||a>5)//不是菜單5個選項,重新輸入,令b==1,繼續(xù)循環(huán)
{b=1;
}
else b=0;//b=0,跳出循環(huán)
}while(b==1);
switch(a)//主菜單的5個選項
{case 1:f1();break;//查詢空置機位
case 2:f2();break;//預(yù)約空置機位
case 3:f3();break; //取消預(yù)訂
case 4:f4();break;//查詢預(yù)約信息
case 5:exit(0);break;//返回
}
}
void f1()//查詢機位是否空置
{int t;
printf(" 輸入在(8-20)的時間:");
scanf("%d",&t);
if(t<8||t>20)// 不在對應(yīng)時間,時間錯誤
{printf("\t時間輸入錯誤!\n");
printf(" 輸入在(8-20)的時間:");
scanf("%d",&t);//重新輸入時間
}
detail(t);//輸入時間,查找該時間機位空置情況
Fx(); // 查詢后回到主菜單
}
void f2() // 預(yù)約機位函數(shù)
{int t,i=0,x,y;
FILE *fp;
char c;
printf(" 請輸入你想要預(yù)定的時間(8-20):");
scanf("%d",&t);
if(t<8||t>20)//不在時間內(nèi)顯示時間錯誤
{printf("\t 輸入時間錯誤,請重新輸入:\n");
scanf("%d",&t);
}
detail(t);//在時間內(nèi)查詢,輸出空機位
if(sum[T]>0)//空置電腦序號為正常
{if((fp=fopen("waitlist.txt","a"))==NULL)
{ printf("\n打開文件錯誤!\n");//文件打開情況
exit(0);
}
printf("\n\t請問你想預(yù)留哪個機位,輸入機位號,留下你的電話號碼?。篭n");
scanf("%s %s",wait[i].num,wait[i].phone); //對照輸出的空機位,輸入你想要遇定的號數(shù)和你的電話號碼
for(i=0;i<1;i++)
fwrite(&wait[i],sizeof(struct waitlist),1,fp);
fclose(fp);//向文本添加你的信息
printf("\t再次輸入你想要預(yù)定的時間: \n");
scanf("%d",&x);//再次確定
sum[T]--;// 預(yù)定后空機位少一個
computer[T][x]=1;//機位狀態(tài)變?yōu)椴皇强罩?為1
printf("\t預(yù)定成功\t\n");
Fx();
}
else
{printf("這是在這個時間段未預(yù)定的電腦!\n");
for(i=T+1;i<6;i++)//由三個循環(huán)重新確定機位空置情況
{ t=9+2*i;
detail(t);
if(sum[T]>0)
printf("\t最近空閑的時間是:%d,%d\n",2*i+8,2*i+10);//輸出對應(yīng)空閑的時間
break;
}
printf("\t你想要預(yù)定嗎?:Y\N");
scanf("%s",&c);//輸入你是否想要預(yù)定
if(c=='Y')
{ if((fp=fopen("waitlist.txt","r"))==NULL)
{ printf("\n打開文件錯誤!\n");
exit(0);
}
else
{ printf("等待列表:機位號,電話\n");//輸出已經(jīng)預(yù)定的機位和他們的電話號碼
for(i=0;!feof(fp);i++)
{ fscanf(fp,"%s %s",&wait[i].num,wait[i].phone);
}
fclose(fp);//讀出他們的信息
}
for(i=0;i<10;i++)
{ prione(i);//輸出預(yù)定信息
}
printf("\n\t 請輸入你想預(yù)定的機位號并留下電話號碼!:\n");
if((fp=fopen("waitlist.txt","a"))==NULL)
{ printf("\n打開文件錯誤!\n");
exit(0);
}
scanf("%s %s",wait[i].num,wait[i].phone);
for(i=0;i<1;i++)
fwrite(&wait[i],sizeof(struct waitlist),1,fp);
fclose(fp);//寫入你的信息,一個結(jié)構(gòu)體單元
printf("\t再次輸入電腦序號:\n");
scanf("%d",&y);
sum[T]--;//空置數(shù)和機位狀態(tài)依次變化
computer[T][y]=1;
printf("\t好了,等待我們電話!\n");
Fx();
}
else Fx();
}
}
void f3()//取消預(yù)定函數(shù)
{int t,x;
printf("輸入你已經(jīng)預(yù)定的時間(8-20):");
scanf("%d",&t);//輸入你預(yù)定的時間
if(t>20||t<8)//輸入錯誤
{printf("\t輸入時間錯誤!\n");
printf("\t再次輸入你已經(jīng)預(yù)定的時間?。?);
scanf("%d",&t);//再次輸入
}
else
{printf("\t你已經(jīng)預(yù)定的機位號?。?);
scanf("%d",&x);
}
detail(t);
sum[T]++; //取消空機位加1,對應(yīng)機位狀態(tài)為空置
computer[T][x]=0;
printf("\t取消成功!\n");
Fx();
}
void f4()//查詢預(yù)定信息
{int t,i;
FILE *fp;
printf("\t請輸入你要搜索的時間:");
scanf("%d",&t);
if(t<8||t>20) //輸入時間錯誤
{printf("\t 輸入時間錯誤!\n");
printf("\t 輸入你要搜索的時間:");
scanf("%d",&t);
}
else
if((fp=fopen("waitlist.txt","r"))==NULL)
{ printf("\n打開文件錯誤!\n");
exit(0);
}
else
{printf("等待列表:機位號,電話\n");
for(i=0;!feof(fp);i++)
{ fscanf(fp,"%s %s",&wait[i].num,&wait[i].phone);
}
fclose(fp);//打開列表
}
for(i=0;i<10;i++)
{prione(i);
}
Fx();
}
void detail(int t)//查找空機位數(shù)和對應(yīng)機位號數(shù)
{int i,j=0,k,s=0;
int v[30];
for(i=0;i<20;i++)
{if(computer[T][i]==0) //為0時機位空置
{ s++;//空置電腦數(shù)加1
v[j++]=i;//空置電腦序號
}
}
sum[t]=s;//由三個循環(huán)輸出空置的電腦
printf("\t目前空置的電腦:%d\n",sum[T]);
for(k=0;kprintf("\t\t%s %s \n",wait[i].num,wait[i].phone);
}
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧