c语言 银行叫号系统,【分享】C语言 银行取票排队系统
該樓層疑似違規(guī)已被系統(tǒng)折疊?隱藏此樓查看此樓
void call() //客服呼叫客戶
{
int mywin;//客服所在窗口號 自動分配窗口改為手工分配
char mywinchar;//字符型的窗口號 0的ascii碼為48
char setfree;
printf("\t【當(dāng)前空閑窗口】:");
showfreewin();
printf("\t【當(dāng)前客戶隊(duì)列情況】:");
showqueue();
printf("\n");
if(vip->size == 0 && nor->size == 0)
{
printf("\t【暫時(shí)沒有客戶等待服務(wù)!】\n");
service();
}
else
{printf("\t【請輸入您值班的窗口號】:");
scanf("%s",&mywinchar);
mywin = mywinchar -48;//這樣做可以避免輸入非數(shù)字引起程序錯(cuò)誤 但是窗口總數(shù)不能大于9!!0的ascii碼為48
if(mywin >= 1 && mywin <= allwin)
{
if(win[mywin - 1] ==0) //值班的窗口為空閑狀態(tài)
{
callfree(mywin);//將值班的窗口號 mywin傳遞給callfree函數(shù)
}
else
{
printf("\t【第%d號窗口當(dāng)前為忙碌狀態(tài)!】\n",mywin);
printf("\t【是否設(shè)置第%d號窗口為空閑,并繼續(xù)呼叫客戶?】\n",mywin);
printf("\t【請選擇】:\n");
printf("\t\t\tY.是\tN.否\n");
printf("\t【您的選擇】:");
scanf("%s",&setfree);
if(setfree ==*Y* ||setfree ==*y*)
{
win[mywin - 1] = 0;
callfree(mywin);//不用再次輸入窗口號 將當(dāng)前窗口號傳遞到callfree()函數(shù) 按原來的窗口號呼叫客戶
}
else
{
if(setfree == *N* || setfree == *n*)
{
call();//選擇其他窗口號來呼叫客戶
}
else
{
printf("\t【沒有這個(gè)選項(xiàng)!】\n");
}
}
}
}
else
{
if(mywin >= 1 && mywin <= 9)
{
printf("\t【第%d號窗口暫未開設(shè),請確認(rèn)您所在值班的窗口號!】\n",mywin);
call();
}
else
{
printf("\t【請正確輸入您值班的窗口號!】\n");
call();
}
}
}
}
/*************************************************************/
void servicelogin() //登陸客服系統(tǒng)
{
char password[] = "1";
char pass[20]; //記錄輸入的密碼
printf("\t【請輸入登陸密碼】:\t");
scanf("%s",pass);//pass是數(shù)組 不需要&
while(strcmp(pass,password) == 0) //strcmp為字符串比較函數(shù),返回值為0表示兩字符串相同
{
service();//service()函數(shù)里有跳出循環(huán)的語句 所以這里不是死循環(huán)
}
printf("\t【登陸密碼錯(cuò)誤!】\n");
hugemenu();
}
/*************************************************************/
void service()
{char menu; //客服系統(tǒng)里的菜單變量 若此處設(shè)置為整型 萬一輸入的不是數(shù)字會造成死循環(huán) 所以設(shè)置為字符型
printf("\n\t【請選擇】:\n");
printf("\t\t\t1.呼叫客戶\t2.隊(duì)列情況\n\t\t\t3.管理窗口\t4.返回\n");
while(1)
{printf("\t【您的選擇】:");
scanf("%s",&menu); // %s 比%c可靠
switch(menu)
{
case *1*:call();service();break;//文單引號表示是字符型
case *2*:printf("\t【當(dāng)前隊(duì)列情況】:");showqueue();service();break;
case *3*:managewin();break;
case *4*:hugemenu();break;
default:
{
printf("\t【請正確選擇您的服務(wù)項(xiàng)目!】\n");
printf("\t\t\t1.呼叫客戶\t2.隊(duì)列情況\n\t\t\t3.管理窗口\t4.返回\n");
}
}
}
}
/*************************************************************/
void turnoff()
{
char password[] ="1";
char pass[30];//定義大一點(diǎn) 因?yàn)槿绻斎氲淖址^數(shù)組長度,程序會出錯(cuò) 退出!
char sure;//確定不確定關(guān)閉
printf("\t【請輸入登陸密碼】: ");
scanf("%s",pass);//輸入密碼時(shí) 如果輸入的字符超過數(shù)組長度,程序會出錯(cuò) 退出!屬于漏洞!
if(strcmp(pass,password) == 0)//對比字符串 返回值等于意味著密碼正確
{
printf("\t【關(guān)閉系統(tǒng)后,客戶將不能排隊(duì)取票!】\n\t【您確定要關(guān)閉嗎?】\n\n");
printf("\t\t\tY.關(guān)閉\t\tN.保持\n");
while(1)
{printf("\t【您的選擇】:");
scanf("%s",&sure); //不應(yīng)該用%c 因?yàn)橛?c的話 回車時(shí)會影響
if(sure == *y* || sure == *Y* ) //注意不是sure == *y* || *Y* !!!
{
printf("\t【系統(tǒng)關(guān)閉中...】\n");
Beep(800,300); Beep(800,300); Beep(800,800); //聲音 beep(調(diào)子,時(shí)間)
exit(0);//關(guān)閉系統(tǒng)
}
else
{if(sure == *n* || sure == *N*)
{
printf("\t【系統(tǒng)未關(guān)閉 依然正常運(yùn)行!】\n");
break;
}
else
{
printf("\t【關(guān)閉請按 Y 保持請按 N】\n");
}
}
}
}
else
{
printf("\t【密碼錯(cuò)誤!請重新輸入!】\n");
}
}
/************************************************************/
void hugemenu()//最大的菜單
{
char menu; //服務(wù)項(xiàng)目菜單 采用字符型比較可靠!因?yàn)槿绻x成整型,萬一輸入了字符,可能會造成死循環(huán)錯(cuò)誤
while(1) //系統(tǒng)將一直運(yùn)行 直到運(yùn)行 turnoff()函數(shù)
{
printf("\n\t********************歡迎您使用本系統(tǒng)********************\n\n");
printf("\t【請選擇服務(wù)項(xiàng)目】:\n");
printf("\t\t\t1.客戶取票\t2.VIP服務(wù)\n\t\t\t3.客服系統(tǒng)\t4.關(guān)閉系統(tǒng)\n");
printf("\t【您的選擇】:");
scanf("%s",&menu); //用%s 比%c好 %c會記錄字符 而且比如輸入111 就會執(zhí)行g(shù)etnor() 3次!如果用%s。也輸入111,不同的是只執(zhí)行一遍getnor 后面兩個(gè)1與回車都不起作用。
switch(menu)
{
case *1*:getnor(); printf("\n\t^^^^^^^^^^^^^^^^^^^^感謝您使用本系統(tǒng)^^^^^^^^^^^^^^^^^^^^\n\n");break;
case *2*:getvip(); printf("\n\t^^^^^^^^^^^^^^^^^^^^感謝您使用本系統(tǒng)^^^^^^^^^^^^^^^^^^^^\n\n");break;
case *3*:servicelogin();break;
case *4*:turnoff();break;
default:printf("\t【暫時(shí)沒有這個(gè)選項(xiàng)!】\n");
}
}
}
/***********************************************************/
int main()
{
vip = createqueue(n);//創(chuàng)建vip客戶隊(duì)列
nor = createqueue(n);//創(chuàng)建普通股客戶隊(duì)列
hugemenu();//調(diào)用主界面 //hugemenu()函數(shù)是無限循環(huán)函數(shù),內(nèi)部有跳出循環(huán)的語句
return 0;
}
總結(jié)
以上是生活随笔為你收集整理的c语言 银行叫号系统,【分享】C语言 银行取票排队系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 定时任务 web管理_Se
- 下一篇: 你为什么喜欢VIM?