資源描述:
《c語言程序設(shè)計報告new》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、2012級《C課程設(shè)計》大作業(yè)設(shè)計報告設(shè)計題目:餐廳信息管理程序小組參與人員:姓名:學(xué)號:專業(yè)班級:分工:姓名:學(xué)號:專業(yè)班級:分工:姓名:學(xué)號:專業(yè)班級:分工:主函數(shù)及歡迎界面是一起完成的。1.題目:餐廳服務(wù)系統(tǒng)系統(tǒng)功能設(shè)計a.要求實現(xiàn)客戶點菜的過程、客戶結(jié)賬、賬目的管理、餐廳系統(tǒng)的維護四大功能模塊,每個功能模塊又分別對應(yīng)一些不同操作子模塊,從而完成一個餐廳信息管理信息系統(tǒng)。b.可以使用三種不同的結(jié)構(gòu)體來分別存儲餐桌、菜以及訂單信息。b.使用文本文件完成數(shù)據(jù)的存儲與讀取,完成賬單的管理。界面要求歡迎界面、登錄界面、管理界面。2.設(shè)計方案說明2.1數(shù)據(jù)的存儲結(jié)構(gòu)因為菜,餐桌
2、信息均不只含有一項內(nèi)容,所以使用結(jié)構(gòu)體數(shù)組typedefstructf//菜信息{charname[30];//菜名intprice;//菜定價}_food;typedefstructt//餐桌信息{intflag;//定義變量名用于判斷intfoo[30];//餐桌編號}_table;structr//訂單信息{_foodfood[20];//所選菜信息_tabletable[30];//所選餐桌信息};2.2函數(shù)之間的調(diào)用關(guān)系說明在主函數(shù)中通過case選擇語句調(diào)用system("cls");menu(&restaurant);order(&restaurant);sav
3、e(&restaurant);book(&restaurant);bill(&restaurant);total_information(&restaurant);change_menu(&restaurant);entry(&restaurant);九個函數(shù),其中各函數(shù)中又個別嵌套調(diào)用了其他函數(shù)。2.3各函數(shù)說明①order(structr*restaurant)訂餐的函數(shù):restaurant是指向structr結(jié)構(gòu)體的指針。輸入餐桌號i,如果table[i].flag是1或2,則顯示該桌已被選定,系統(tǒng)提示重新選擇餐桌號,通過嵌套函數(shù)order(restaurant)再
4、次選擇。如果table[i].flag不是1或2,則該桌可用,同時使table[i].flag變?yōu)?防止重復(fù)選定。然后是for語句循環(huán),直到輸入999之前可以持續(xù)點餐,點餐通過輸入菜對應(yīng)的編號實現(xiàn),想重復(fù)點同一道菜可以再次輸入編號。②book(structr*restaurant)預(yù)定餐桌和菜的函數(shù):restaurant是指向structr結(jié)構(gòu)體的指針。系統(tǒng)提示“請輸入預(yù)定的桌子號碼(1-30):”同order函數(shù),若table[i].flag是1或2,則顯示該桌已被選定,系統(tǒng)提示重新選擇餐桌號,通過嵌套函數(shù)book(restaurant)再次選擇。如果table[i].f
5、lag不是1或2,則該桌可預(yù)定,同時使table[i].flag變?yōu)?防止重復(fù)預(yù)定。for(j=1;restaurant->table[i].foo[j-1]!=999;j++){scanf("%d",&restaurant->table[i].foo[j]);}意思是只要輸入的編號不是999就可以持續(xù)點菜(bill函數(shù)有設(shè)置,即使輸入的編號超過菜單范圍也不會被收費。特別注意for語句循環(huán)中是j-1而不是j,因為從第二次循環(huán)開始,先j++后判斷)printf("預(yù)定成功??!");getchar();getchar();其中第一個getchar();用以接收回車鍵,第二個
6、getchar();返回主界面。③bill(structr*restaurant)用于結(jié)賬的函數(shù):若table[i].flag是1,表示正被使用,可以結(jié)帳;若table[i].flag是2,表示已被預(yù)定,可以結(jié)賬。如果不是1或2,則表示沒人,不能結(jié)賬。restaurant->food[restaurant->table[i].foo[j]].price表示第i張桌子點的菜的編號,bill+=restaurant->food[restaurant->table[i].foo[j]].price是把所有菜的價格相加。restaurant->table[i].foo[j]<21&
7、&restaurant->table[i].foo[j]>0表示如果輸入的編號不在菜單范圍內(nèi)就不能算入賬單,否則會出錯,這提高了容錯性。結(jié)賬后,若是輸入1,由if(j==1)restaurant->table[i].flag=-1;知該桌位會被釋放供其他客人使用,再按2return返回界面。④函數(shù)total_information(structr*restaurant)功能:顯示所有進賬和餐廳信息實現(xiàn)方法:此函數(shù)無返回值,首先定義并初始化變量,輸出標(biāo)題后通過for循環(huán)計算出進賬金額及被使用的桌子和剩余桌子數(shù)for(