【文件属性】:
文件名称:饭店就餐管理系统
文件大小:42KB
文件格式:DOC
更新时间:2015-07-30 04:10:57
管理系统
#include
#include
#include
#include
#include
#include
#include //请加入这个头文件
using namespace std;
#include
#define N 10
#define D 10
#define H 10
#define ASK (ORDER*)malloc(sizeof(ORDER))
#define MaxCapacity 4
//定义订单结构体
typedef struct Order{
int Table_ID;
int Dish_ID[N];
struct Order *next;
}ORDER;
//定义餐桌信息
typedef struct Table{
int Table_ID;
int Capacity;
int Table_State;
}TABLE;
//定义菜的结构体
typedef struct dish{
int Dish_ID;
int Dish_Name[10];
float Dish_Price;
}DISH;
TABLE tb[H];
DISH dish[D];
int PASSWORD=123;
void LOAD_Dish(void);//从文件中读取菜谱;
ORDER*CreateOne(int);//创建一个订单节点;
void Dish_Menu(void);//显示菜谱
void Table_Init(void);//餐桌信息初始化
int search(void);//查找匹配的餐桌
ORDER* Dish_Order(ORDER *,ORDER *);//将节点插入到主链
void Display(int);//显示菜的信息;
void saveInList(float);//将客户消费额写入账单
void Save_Inform(ORDER *,int);//将已结账订单信息写入历史记录
ORDER *Payment(ORDER *);//结账
void ModifyPW(int);//密码修改
int Pass_Word(void);//密码验证
void Observe(void);//账目查询
void ListMenu(void);//账单管理菜单
void List_Management(void);//账单管理
void Main_Menu(void);//主菜单
void Get_Rank(void);//统计
void Menu_select(void);//选择功能
//主函数
void main(){
Table_Init();
Menu_select();
}
//系统主菜单
void Main_Menu(){
printf("\n*********************************\n");
printf("餐厅服务系统\n");
printf("\n*********************************\n");
printf("1.点菜\n");
printf("2.客户结账\n");
printf("3.账目管理\n");
printf("4.餐厅统计\n");
printf("5.退出系统\n");
}
//选择功能
void Menu_select(void){
ORDER* head;
int choose;
int result;
head=NULL;
system("cls");
do{
LOAD_Dish();
Main_Menu();
printf("请选择:\n");
fflush(stdin);
scanf("%d",&choose;);
switch(choose){
case 1: result=search();
if(result==1)
printf("您可以在%d号餐桌就餐\n",result);
else
printf("您和您的朋友可以在%d号餐桌就餐\n",result);
Dish_Menu();
head=Dish_Order(head,CreateOne(result));
break;
case 2: head=Payment(head);
break;
case 3: List_Management();
break;
case 4: Get_Rank();
break;
case 5: exit(1);
break;
}
}while(1);
}
//从文件中读取菜谱
void LOAD_Dish(void){
FILE *fp;
int i;
fp=fopen("dish_name.txt","r");
for(i=0;iTable_ID=result;
for(i=0;iDish_ID[i]);
if((p->Dish_ID[i]<0)||(p->Dish_ID[i]>10)){
printf("超出菜谱范围,请重新输入\n");
i--;
}
else if(p->Dish_ID[i]==0)
break;
else
p->Dish_ID[i]=0;
}
tb[result-1].Table_State=1;
}
p->next=NULL;
return p;
}
//添加到主链
ORDER* Dish_Order(ORDER *head,ORDER *p){
ORDER *p1;
p1=head;
if(p1!=NULL){
if(p!=NULL){
while(p1->next!=NULL){
p1=p1->next;
}
p1->next=p;
printf("创建订单成功\n");
}
else
printf("创建订单失败\n");
}
else{
if(head==NULL&&p!=NULL)
head=p;
}
return head;
}
//根据菜单的编号打印一道菜的信息
void Display(int ID){
int i=0;
for(i=0;iDish_ID[i]>0){
fprintf(fp,"%d\t%s\t%f\n",dish[p->Dish_ID[i]-1].Dish_ID,dish[p->Dish_ID[i]-1].Dish_Name,dish[p->Dish_ID[i]-1].Dish_Price);
i++;
}
fprintf(fp,"%s",ctime(&timer;));
printf("历史记录保存成功\n");
fclose(fp);
}
//结账
ORDER *Payment(ORDER *head){
int i=0;
int count=0;
float pay=0.0;
float pay1;
int ID;
ORDER *p,*p1;
p=head;
printf("请输入您的餐桌号:\n");
fflush(stdin);
scanf("%d",&ID;);
while(p!=NULL){
if(p->Table_ID==ID){
printf("您点的菜如下:\n");
printf("编号\t菜名\t价格\n");
while(p->Dish_ID[i]!=0){
Display(p->Dish_ID[i]);
pay+=dish[p->Dish_ID[i]-1].Dish_Price;
i++;
count++;
}
printf("您一共点了%d道菜\n",count);
printf("您本次的消费额为%d\n",pay);
printf("您实际的付款:\n");
scanf("%f",&pay1;);
if(pay1>pay)
printf("找你%f\n",pay1-pay);
printf("谢谢您的惠顾,欢迎下次再来\n");
if(count>0){
saveInList(pay);
Save_Inform(p,count);
}
tb[p->Table_ID].Table_State=0;
break;
}
else{
p1=p;
p=p->next;
}
}
if(p==head)
head=head->next;
else
p1->next=p->next;
free(p);
return head;
}
//修改密码
void ModifyPW(){
int password;
printf("请输入新的密码\n");
scanf("%d",&password;);
PASSWORD=password;
printf("密码修改成功\n");
}
//查看账目
void Observe(){
FILE *fp;
float pay;
char str[25];
int i=0;
int j=0;
if((fp=fopen("账本.txt","r"))==NULL){
printf("操作失败\n");
exit(1);
}
printf("消费金额\t消费时间\n");
while(!feof(fp)){
i=0;
j=0;
fscanf(fp,"%c",&str;[j]);
j++;
if(str[j]==' ')
i++;
}
fscanf(fp,"\n\n");
i=0;
j=0;
printf("%f\t",pay);
while(i<=5&&j<25){
printf("%c",str[j]);
j++;
if(str[j]==' ')
i++;
}
fclose(fp);
}
//账单管理菜单
void ListMenu(){
int choice;
printf("1.修改密码\n");
printf("2.查看账本\n");
printf("3.返回\n");
do{
printf("请选择\n");
scanf("%d",&choice;);
switch(choice){
case 1:ModifyPW();
break;
case 2:Observe();
break;
case 3:Menu_select();
break;
default:printf("没有该项功能\n");
}
}while(1);
}
//账单管理
void List_Management(){
FILE *fp;
if((fp=fopen("账本.txt","r"))==NULL){
printf("操作失败\n");
exit(1);
}
if(Pass_Word())
ListMenu();
}
//获得近期各菜的受欢迎程度
void Get_Rank(void){
FILE *fp;
int n,i,m=0,j;
int count[10]={0},t=0;
char s[16]="";
char a[10];
fp=fopen("历史记录.txt","r");
while(!feof(fp)){
fscanf(fp,"%d\n",&n);
i=0;
while(i!=n){
fscanf(fp,"%d%*s%*s%,&m,s,s");
for(j=0;j<10;j++){
if(m==dish[j].Dish_ID){
count[j]++;
break;
}
}
i++;
if(i==n)
fscanf(fp,"%*s%*s%*s%*s%*s\n",s,s,s,s,s);
}
}
printf("菜的欢迎程度如下:\n");
for(i=0;i<10;i++){
printf("\n%d 菜: ",i+1);
for(j=0;j