开发工具:
文件大小: 42kb
下载次数: 0
上传时间: 2012-07-09
详细说明: #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
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.