栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

餐馆点菜系统C语言源代码

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

餐馆点菜系统C语言源代码

餐馆点菜系统c语言的源代码,一些封装的函数,对链表的操作,还有文件的存取,供大家参考,具体内容如下

#include "public.h"
struct NODE *myhead;
struct NODE *orderhead;
struct NODE *ashead;
char waiter_ID[4+1];



void SetColorEdit(int iNum)
{
 SetColor(4,14);
 while (iNum--)
 {
 putchar(' ');
 }
}

void SetColor(unsigned short ForeColor,unsigned short BackGroundColor) 
{
 HANDLE hCon=GetStdHandle(STD_OUTPUT_HANDLE);
 SetConsoleTextAttribute(hCon,(ForeColor%16)|(BackGroundColor%16*16));
}


void UI_EditBox(int iLong,int iWide,int x,int y,char acBuffer[30])
{
 int i; 
 int j; 
 
 Gotoxy(x,y);
 
 for(i = 0; i <= iWide; i++)
 {
 Gotoxy(x+i,y);
 if(i == 0 || i == iWide)
 {
 for(j = 0; j <= iLong; j++)
 {
 if(i == 0 && j == 0)
 {
  printf("┏");
 }
 else if(i == 0 && j == iLong)
 {
  printf("┓");
 }
 else if(i == iWide && j == 0)
 {
  printf("┗");
 }
 else if(i == iWide && j == iLong)
 {
  printf("┛");
 }
 else
 {
  printf("┅");
 } 
 } 
 }
 else
 {
 Gotoxy(x+i,y); 
 printf ("┇");
 Gotoxy(x+i,y+2*iLong);
 printf ("┇");
 }
 putchar ('n');
 }
 
 Gotoxy(x + 1,y + 2);
 printf ("%s",acBuffer);
}



void UI_TestBox(int x,int y,char acBuffer[30])
{
 Gotoxy(x,y);
 printf ("%s",acBuffer);
}


void Gotoxy(int x,int y)
{
 CONSOLE_SCREEN_BUFFER_INFO   csbiInfo; 
 HANDLE  hConsoleOut;
 hConsoleOut = GetStdHandle (STD_OUTPUT_HANDLE);
 GetConsoleScreenBufferInfo(hConsoleOut,&csbiInfo); 
 csbiInfo.dwCursorPosition.X = y;  
 csbiInfo.dwCursorPosition.Y = x;  
 SetConsoleCursorPosition (hConsoleOut,csbiInfo.dwCursorPosition); 
}



int Glb_putString(char acStr[], int iMaxLen, int iPutType, int isPlaintext,int iTmp) 
{
 char Tmp;
 int i = 0;
 int j;
 int flg;
 
 for(j = 0;j < iMaxLen; j++)
 {
 acStr[j] = ''; 
 }

 while(1)
 {
 Tmp=getch();
 //printf("%d",Tmp);
 if(Tmp==27)
 {
 //printf("%d",Tmp);
 return 1;
 }
 flg = 0;

 if(Tmp == 13)
 {
 if(iTmp == 1) 
 {
 if(acStr[0] != 0)
 {
  break;
 }
 }
 else if(iTmp == 2) 
 {
 j = 0;
 while(j < iMaxLen)
 {
  if(acStr[j] == '')
  {
  break;
  }
  j++;
 }
 if((j == iMaxLen))
 {
  flg = 1;
 }
 }
 else if(iTmp == 3) 
 {
 break;  
 }
 }
 else if(Tmp == 8)
 {
 if(i > 0)
 {
 printf("b b"); 
 acStr[--i] = ''; 
 }
 }
 else 
 {
 if(i < iMaxLen)
 {
 switch(iPutType)
 {
 case Not:
  { 
  if(isPlaintext == NotPwd)
  {
  putchar(Tmp);
  }
  else
  {
  putchar('*');
  }
  acStr[i++] = Tmp;
  }break;
 case Int:
  {
  if(Tmp >= '0' && Tmp <= '9')
  {
  if(isPlaintext == NotPwd)
  {
  putchar(Tmp);
  }
  else
  {
  putchar('*');
  }
  acStr[i++] = Tmp;
  }
  }break;
 case Char:
  {
  if((Tmp >= 'A' && Tmp <= 'Z') || (Tmp >='a' && Tmp <='z'))
  {
  if(isPlaintext == NotPwd)
  {
  putchar(Tmp);
  }
  else
  {
  putchar('*');
  }
  acStr[i++] = Tmp;
  }
  }break;
 case IntOrChar:
  {
  if((Tmp >= 'A' && Tmp <= 'Z') || (Tmp >='a' && Tmp <='z') || (Tmp >= '0' && Tmp <= '9'))
  {
  if(isPlaintext == NotPwd)
  {
  putchar(Tmp);
  }
  else
  {
  putchar('*');
  }
  acStr[i++] = Tmp;
  }
  }break;
 } 
 }
 }
 if(flg == 1) break;
 }
 acStr[i] = '';
 return 0;
}


void* linkInit(void *data)
{
 struct NODE *head;
 head = (struct NODE*)malloc(sizeof(struct NODE));
 if(head == NULL)
 {
 perror("linkinit error");
 return NULL;
 }
 head->data = data;
 head->NEXT = NULL;

 return head;
}


void linkAddNode(struct NODE *phead, void *data, int len)
{
 struct NODE *pNew;
 struct NODE *pTemp;
 pTemp = phead;
 while(pTemp->NEXT != NULL)
 {
 pTemp = pTemp->NEXT;
 }
 pNew = (struct NODE *)malloc(sizeof(struct NODE));
 if(pNew == NULL)
 {
 perror("LindAddNode error");
 return;
 }
 else
 {
 pNew->data = malloc(len);
 if(pNew->data == NULL)
 {
 perror("LindAddNode error");
 return;
 }
 }
 memcpy(pNew->data, data, len);
 pNew->NEXT = NULL;
 pTemp->NEXT = pNew;
 return;
}




void linkFreeNode(struct NODE *phead)
{
 struct NODE *pTemp = phead;
 //static int aaa = 0;
 while(pTemp != NULL)
 {
 phead = phead->NEXT;
 free(pTemp->data);
 free(pTemp);
 pTemp = phead;
 //printf("释放次数=%dn", ++aaa);
 }
 return;
}


void linkPrint(struct NODE *phead, void(*myprint)(void* data,int f))
{
 int i=5;
 struct NODE *pTemp = phead->NEXT;
 while(pTemp != NULL)
 {
 Gotoxy(i++, 3);
 myprint(pTemp->data,i);  //在第i行打印数据
 pTemp = pTemp->NEXT;
 }
}

void Man_Half_Print(struct NODE *phead, void(*myprint)(void* data,int f))
{
 int i=5;
 struct NODE *pTemp = phead->NEXT;
 while(pTemp != NULL)
 {
 if(((struct MAN*)(pTemp->data))->flag==49) //判断flag是否为1,若为1则为在职,将其打印
 {
 Gotoxy(i++, 3);
 myprint(pTemp->data,i);
 }
 pTemp = pTemp->NEXT;
 }
}


void As_Half_Print(struct NODE *phead, void(*myprint)(void* data,int f))
{
 int i=5;
 struct NODE *pTemp = phead->NEXT;
 while(pTemp != NULL)
 {
 if(((struct ASSOCIATOR*)(pTemp->data))->flag==49)
 {
 Gotoxy(i++, 3);
 myprint(pTemp->data,i);
 }
 pTemp = pTemp->NEXT;
 }
}



void Table_Half_Print(struct NODE *phead, void(*myprint)(void* data,int f))
{
 int i=5;
 struct NODE *pTemp = phead->NEXT;
 while(pTemp != NULL)
 {
 if(((struct TABLE*)(pTemp->data))->role==49)
 {
 Gotoxy(i++, 3);
 myprint(pTemp->data,i);
 }
 pTemp = pTemp->NEXT;
 }
}

void Dish_Half_Print(struct NODE *phead, void(*myprint)(void* data,int f))
{
 int i=4;
 struct NODE *pTemp = phead->NEXT;
 while(pTemp != NULL)
 {
 if(((struct DISH*)(pTemp->data))->flag==49)
 {
 Gotoxy(i++, 3);
 myprint(pTemp->data,i);
 }
 pTemp = pTemp->NEXT;
 }
}


void ManPrint(void *data,int i)
{
 Gotoxy(i, 3);
 printf("%s",((struct MAN*)data)->id);
 Gotoxy(i, 19);
 printf("%s",((struct MAN*)data)->name);
 Gotoxy(i, 35);
 printf("*******");
 Gotoxy(i, 51);
 if(((struct MAN*)data)->role==48)
 printf("管理员");
 if(((struct MAN*)data)->role==49)
 printf("经理");
 if(((struct MAN*)data)->role==50)
 printf("服务员");

 Gotoxy(i, 67);
 if(((struct MAN*)data)->flag==48)
 printf("离职");
 if(((struct MAN*)data)->flag==49)
 printf("在职");
}


void AsPrint(void *data,int i)
{
 Gotoxy(i, 3);
 printf("%s",((struct ASSOCIATOR*)data)->no);
 Gotoxy(i, 19);
 printf("%s",((struct ASSOCIATOR*)data)->name);
 Gotoxy(i, 35);
 printf("%s",((struct ASSOCIATOR*)data)->score);
 Gotoxy(i, 51);
 printf("%c",((struct ASSOCIATOR*)data)->flag);
}


void TablePrint(void *data,int i)
{
 Gotoxy(i, 3);
 printf("%s",((struct TABLE*)data)->no);
 Gotoxy(i, 24);
 printf("%s",((struct TABLE*)data)->flag);
 Gotoxy(i, 45);
 printf("%s",((struct TABLE*)data)->des);

}


void DishPrint(void *data,int i)
{
 Gotoxy(i, 3);
 printf("%s",((struct DISH*)data)->no);
 Gotoxy(i, 24);
 printf("%s",((struct DISH*)data)->name);
 Gotoxy(i, 45);
 printf("¥%s",((struct DISH*)data)->price);
}

void link_Dish_Print(struct NODE *phead,void *data)
{
 int i=5,j,n=0,money=0,f;
 struct NODE *pTemp = phead->NEXT;
 while(pTemp != NULL)
 {
 f=0;
 Gotoxy(i, 3);
 for(j=0;j<11;j++)
 {
 if(strcmp((((struct ORDER*)data)->x[j]).no,((struct DISH*)(pTemp->data))->no)==0) //找到订单对应的 点的菜 的节点,并从菜谱中获取该菜的单价
 {
 n=number_change((((struct ORDER*)data)->x[j]).num)+n;
 money=number_change(((struct DISH*)(pTemp->data))->price)*number_change((((struct ORDER*)data)->x[j]).num)+money;
 order_dish_difprint(pTemp->data,i++,number_change((((struct ORDER*)data)->x[j]).num)); //有“*”号的打印函数
 f=1;
 }
 }
 if(f==0 && ((struct DISH*)(pTemp->data))->flag==49)
 order_dish_print(pTemp->data,i++);    //无“*”号的打印函数
 pTemp = pTemp->NEXT;
 //i++;
 }
 char_change(money,((struct ORDER*)data)->money);   //将char类型转换为int类型的函数
 Gotoxy(18, 44);
 printf("%d",money);
 Gotoxy(18, 66);
 printf("%d",n);
}

void order_dish_print(void *data,int i)
{
 Gotoxy(i, 4);
 printf("%s",((struct DISH*)data)->no);
 Gotoxy(i, 24);
 printf("%s",((struct DISH*)data)->name);
 Gotoxy(i, 45);
 printf("¥%s",((struct DISH*)data)->price);
 Gotoxy(i, 66);
 printf("%s",((struct DISH*)data)->num);
}

void order_dish_difprint(void *data,int i,int num)
{
 Gotoxy(i, 3);
 putchar('*');
 Gotoxy(i, 4);
 printf("%s",((struct DISH*)data)->no);
 Gotoxy(i, 24);
 printf("%s",((struct DISH*)data)->name);
 Gotoxy(i, 45);
 printf("¥%s",((struct DISH*)data)->price);
 Gotoxy(i, 66);
 printf("%d",num);
}

void Order_Checkout_Print(void *data,int i)
{
 Gotoxy(i, 3);
 printf("%s",((struct ORDER*)data)->order_no);
 Gotoxy(i, 24);
 printf("¥%s",((struct ORDER*)data)->money);
 Gotoxy(i, 45);
 printf("%s",((struct ORDER*)data)->order_flag);
}

void Order_Checkouted_Print(void *data,int i)
{
 Gotoxy(i, 3);
 printf("%s",((struct ORDER*)data)->order_no);
 Gotoxy(i, 24);
 printf("%s",((struct ORDER*)data)->time);
 Gotoxy(i, 45);
 printf("¥%s",((struct ORDER*)data)->money);
}

void Check_Order_id(void *data,int i)
{
 Gotoxy(i, 3);
 printf("%s",((struct ORDER*)data)->order_no);
 Gotoxy(i, 18);
 printf("%s",((struct ORDER*)data)->time);
 Gotoxy(i, 33);
 printf("¥%s",((struct ORDER*)data)->money);
 Gotoxy(i, 48);
 printf("%s",((struct ORDER*)data)->order_flag);

}

int linktofile(struct NODE *phead, int datalen,int f)
{
 FILE *fp;
 struct NODE *pTemp = phead->NEXT;
 if(f==1)
 fp = fopen("./maninfo.txt", "wb+");  //写入人员文件
 else if(f==2)
 fp = fopen("./tableinfo.txt", "wb+");  //写入台桌文件
 else if(f==3)
 fp = fopen("./dishinfo.txt", "wb+");  //写入菜谱文件
 else if(f==4)
 fp = fopen("./orderinfo.txt", "wb+");  //写入订单文件
 else if(f==5)
 fp = fopen("./associatorinfo.txt", "wb+");   //写入会员文件
 if(fp == NULL)
 {
 perror("open file(man)");
 return -1;
 }
 while(pTemp != NULL)
 {
 
 fwrite(pTemp->data, 1, datalen, fp);
 pTemp = pTemp->NEXT;
 }
 linkFreeNode(phead);
 if(f==4)    //释放内存中的链表
 orderhead = (struct NODE*)linkInit(NULL);
 if(f==5)
 ashead = (struct NODE*)linkInit(NULL);
 if(f!=4 && f!=5) 
 myhead = (struct NODE*)linkInit(NULL);
 fclose(fp);
 return 0;
}

void linkfromfile(struct NODE *phead,int datalen,int f)
{
 int x,i;
 FILE *fp;
 void *q;
 q=(void *)malloc(datalen);
 //struct MAN *q;
 //q=new MAN;
 memset(q, 0, sizeof(datalen));
 if(f==1)
 fp = fopen("./maninfo.txt", "rb+");
 else if(f==2)
 fp = fopen("./tableinfo.txt", "rb+");
 else if(f==3)
 fp = fopen("./dishinfo.txt", "rb+");
 else if(f==4)
 fp = fopen("./orderinfo.txt", "rb+");
 else if(f==5)
 fp = fopen("./associatorinfo.txt", "rb+");
 if(fp == NULL)
 {
 return ;
 }
 fseek(fp,0,SEEK_END);
 x=ftell(fp);
 rewind(fp);
 //printf("%dn",(x/datalen));
 for(i=0;i<(x/datalen);i++)
 {
 fread(q,1,datalen,fp);
 if(q==NULL)
 {
 printf("无数据记录n");
 }
 linkAddNode(phead,q,datalen);
 }
 free(q);
 q=NULL;
 fclose(fp);
}

NODE* LIST_GetNode(int iIndex,struct NODE *phead,int f)
{
 int n;
 struct NODE *tmp=NULL;
 tmp=phead->NEXT;
 while(tmp!=NULL)
 {
 if(f==1)
 n=number_change(((struct MAN *)(tmp->data))->id);
 else if(f==2)
 n=number_change(((struct TABLE *)(tmp->data))->no);
 else if(f==3)
 n=number_change(((struct DISH *)(tmp->data))->no);
 else if(f==4)
 n=number_change(((struct ASSOCIATOR *)(tmp->data))->no);
 if(n==iIndex)
 break;
 tmp=tmp->NEXT;
 }
 if(tmp== NULL)
 {
 perror("未找到指定的结点索引");
 return 0;
 }
 return tmp;
}

void LIST_Del(int iIndex,struct NODE *phead,int f)
{
 int n;
 struct NODE *tmp=NULL,*pre=NULL;
 tmp=phead->NEXT;
 pre=phead;
 while(tmp!=NULL)
 {
 if(f==1)
 n=number_change(((struct MAN *)(tmp->data))->id);
 else if(f==2)
 n=number_change(((struct TABLE *)(tmp->data))->no);
 else if(f==3)
 n=number_change(((struct DISH *)(tmp->data))->no);
 else if(f==4)
 n=number_change(((struct ASSOCIATOR *)(tmp->data))->no);
 if(n==iIndex)
 break;
 pre=tmp;
 tmp=tmp->NEXT;
 //tmp=tmp->NEXT;
 }
 //printf("%dn",n);
 if(tmp== NULL)
 {
 perror("未找到指定的结点索引");
 return ;
 }
 pre->NEXT=tmp->NEXT;
 free(tmp);
 return;
}

void LIST_Del_FS(int iIndex,struct NODE *phead,int f)
{
 int n;
 struct NODE *tmp;
 tmp=phead->NEXT;
 while(tmp!=NULL)
 {
 if(f==1)
 n=number_change(((struct MAN *)(tmp->data))->id);
 else if(f==2)
 n=number_change(((struct TABLE *)(tmp->data))->no);
 else if(f==3)
 n=number_change(((struct DISH *)(tmp->data))->no);
 else if(f==4)
 n=number_change(((struct ASSOCIATOR *)(tmp->data))->no);
 if(n==iIndex)
 break;
 tmp=tmp->NEXT;
 }
 if(tmp== NULL)     //改变节点的状态
 {
 perror("未找到指定的结点索引");
 return ;
 }
 if(f==1)
 ((struct MAN *)(tmp->data))->flag=48;
 if(f==2)
 ((struct TABLE *)(tmp->data))->role=48;
 if(f==3)
 ((struct DISH *)(tmp->data))->flag=48;
 if(f==4)
 ((struct ASSOCIATOR *)(tmp->data))->flag=48;
 return;
}

int number_change(char *id)
{
 int num=0,i,n=1;
 for(i=0;iNEXT;
 while(tmp)    //遍历人员链表查找是否存在,如果存在返回其对应角色
 {
 if(!strcmp(acStr1,((struct MAN *)(tmp->data))->id))
 {
 if(!strcmp(acStr2,((struct MAN *)(tmp->data))->pwd))
 {
 return ((struct MAN *)(tmp->data))->role;
 }
 else
 printf("密码错误!");
 }
 tmp=tmp->NEXT;
 }
 printf("用户不存在!");
 
}

void OrderData(char *no)
{
 time_t t=time(0);
 char time[11];
 int n;
 struct ORDER m;
 memset(&m,0,sizeof(struct ORDER));
 n=1000+link_sum(orderhead,sizeof(struct ORDER),4);
 char_change(n,m.order_no);

 //memcpy(m.man_id,id,5);
 strcpy(m.man_id,waiter_ID);
 //strcpy(m.man_id,"1001");

 memcpy(m.table_no,no,11);

 strftime(time, sizeof(time), "%Y%m%d",localtime(&t));
 memset(m.time,0,sizeof(m.time));
 strcpy(m.time,time);

 strcpy(m.order_flag,"未付款");

 strcpy(m.money,"0");

 memset(m.x,0,sizeof(m.x));

 linkfromfile(orderhead,sizeof(m),4);    //从文件中读出订单链表
 linkAddNode(orderhead, &m, sizeof(m));   //在链表中加入新创建的订单节点 
 linktofile(orderhead, sizeof(m),4);    //将链表写入文件
}


int link_sum(struct NODE *phead,int datalen,int f)
{
 int x,i;
 FILE *fp;

 if(f==1)
 fp = fopen("./maninfo.txt", "rb+");
 else if(f==2)
 fp = fopen("./tableinfo.txt", "rb+");
 else if(f==3)
 fp = fopen("./dishinfo.txt", "rb+");
 else if(f==4)
 fp = fopen("./orderinfo.txt", "rb+");
 else if(f==5)
 fp = fopen("./associatorinfo.txt", "rb+");
 if(fp == NULL)
 {
 return 0;
 }
 fseek(fp,0,SEEK_END);
 x=ftell(fp);
 rewind(fp);
 return (x/datalen);
 
 fclose(fp);
}

void busy_table()
{
 int i=5;
 struct NODE *pTemp;
 ui_function_table();

 linkfromfile(myhead,sizeof(struct TABLE),2);  //从文件中读出台桌链表
 pTemp = myhead->NEXT;
 while(pTemp != NULL)
 {
 if(strcmp(((struct TABLE*)(pTemp->data))->flag,"占用")==0 && ((struct TABLE*)(pTemp->data))->role==49)//选取被占用且在用的台桌将其打印
 {
 Gotoxy(i++, 3);
 TablePrint(pTemp->data,i);
 }
 pTemp = pTemp->NEXT;
 }
 linkFreeNode(myhead);
 myhead = (struct NODE*)linkInit(NULL);
}

void un_checkout()
{
 int i=5;
 struct NODE *pTemp;
 ui_function_checkout();

 linkfromfile(orderhead,sizeof(struct ORDER),4);
 pTemp = orderhead->NEXT;
 while(pTemp != NULL)
 {
 if(strcmp(((struct ORDER*)(pTemp->data))->order_flag,"未付款")==0) //选取未付款的订单将其打印
 {
 Gotoxy(i++, 3);
 Order_Checkout_Print(pTemp->data,i);
 }
 pTemp = pTemp->NEXT;
 }
 linkFreeNode(orderhead);
 orderhead = (struct NODE*)linkInit(NULL);
}

void checkout_ed(char *begin,char *end)
{
 int i=5,f=0,sum=0;
 struct NODE *pTemp;
 ui_function_checkmoney();
 
 linkfromfile(orderhead,sizeof(struct ORDER),4);
 pTemp = orderhead->NEXT;
 while(pTemp != NULL)
 {
 if(number_change(((struct ORDER*)(pTemp->data))->time)>=number_change(begin) && number_change(((struct ORDER*)(pTemp->data))->time)<=number_change(end) && strcmp(((struct ORDER*)(pTemp->data))->order_flag,"已付款")==0)
 {
 Gotoxy(i++, 3);
 Order_Checkouted_Print(pTemp->data,i);
 f=1;
 sum=number_change(((struct ORDER*)(pTemp->data))->money)+sum;
 }
 pTemp = pTemp->NEXT;
 }
 Gotoxy(15, 60);
 printf("¥%d",sum);
 if(f==0)
 {
 Gotoxy(6, 20);
 printf("暂无数据!");
 }
 linkFreeNode(orderhead);
 orderhead = (struct NODE*)linkInit(NULL);
}

void check_order_id(char *begin,char *end,int g)
{
 int i=5,f=0,j=5;
 struct NODE *pTemp,*p;
 ui_function_checkorderid();
 
 linkfromfile(orderhead,sizeof(struct ORDER),4);
 linkfromfile(myhead,sizeof(struct MAN),1);

 pTemp = orderhead->NEXT;
 p=myhead->NEXT;
 while(pTemp != NULL && g==50) //打印已付款
 {
 if(number_change(((struct ORDER*)(pTemp->data))->time)>=number_change(begin) && number_change(((struct ORDER*)(pTemp->data))->time)<=number_change(end) && strcmp(((struct ORDER*)(pTemp->data))->order_flag,"已付款")==0)
 {
 while(p != NULL)
 {
 if(strcmp(((struct MAN*)(p->data))->id,((struct ORDER*)(pTemp->data))->man_id)==0)
 {
  Gotoxy(j++, 63);
  printf("%s",((struct MAN*)(p->data))->name);
 }
 p=p->NEXT;
 }
 p=myhead->NEXT;
 Gotoxy(i, 3);
 Check_Order_id(pTemp->data,i++);
 f=1;
 
 }
 pTemp = pTemp->NEXT;
 }
 pTemp = orderhead->NEXT;
 p=myhead->NEXT;
 while(pTemp != NULL && g==49)  //打印未付款
 {
 if(number_change(((struct ORDER*)(pTemp->data))->time)>=number_change(begin) && number_change(((struct ORDER*)(pTemp->data))->time)<=number_change(end) && strcmp(((struct ORDER*)(pTemp->data))->order_flag,"未付款")==0)
 {
 while(p != NULL)
 {
 if(strcmp(((struct MAN*)(p->data))->id,((struct ORDER*)(pTemp->data))->man_id)==0)
 {
  Gotoxy(j++, 63);
  printf("%s",((struct MAN*)(p->data))->name);
 }
 p=p->NEXT;
 }
 p=myhead->NEXT;
 Gotoxy(i, 3);
 Check_Order_id(pTemp->data,i++);
 f=1;
 }
 pTemp = pTemp->NEXT;
 }
 if(f==0)
 {
 Gotoxy(6, 20);
 printf("暂无数据!");
 }
 linkFreeNode(orderhead);
 orderhead = (struct NODE*)linkInit(NULL);
 linkFreeNode(myhead);
 myhead = (struct NODE*)linkInit(NULL);
}

void check_waiter_money(char *begin,char *end)
{
 int i=5,sum,count=0;
 struct NODE *pTemp;
 struct NODE *p;
 ui_count_director();
 
 linkfromfile(orderhead,sizeof(struct ORDER),4);
 linkfromfile(myhead,sizeof(struct MAN),1);
 pTemp = orderhead->NEXT;
 p=myhead->NEXT;

 while(p != NULL)
 {
 sum=0;
 if(((struct MAN*)(p->data))->role==50)
 {
 while(pTemp != NULL)   //选取订单中时间符合要求的,已付款的,对应员工的订单,并合计
 {
 if(number_change(((struct ORDER*)(pTemp->data))->time)>=number_change(begin) && number_change(((struct ORDER*)(pTemp->data))->time)<=number_change(end))
  if(strcmp(((struct ORDER*)(pTemp->data))->order_flag,"已付款")==0)
  if(strcmp(((struct MAN*)(p->data))->id,((struct ORDER*)(pTemp->data))->man_id)==0)
  {
  sum=number_change(((struct ORDER*)(pTemp->data))->money)+sum;
  }
  pTemp = pTemp->NEXT;
 }
 pTemp = orderhead->NEXT;
 Gotoxy(i, 3);
 printf("%s",((struct MAN*)(p->data))->name);
 Gotoxy(i, 48);
 printf("¥%d",sum);
 i++;
 }
 count=count+sum;
 Gotoxy(16, 60);
 printf("¥%d",count);
 p=p->NEXT;
 }
 
 linkFreeNode(orderhead);
 orderhead = (struct NODE*)linkInit(NULL);
 linkFreeNode(myhead);
 myhead = (struct NODE*)linkInit(NULL);
}



void add_dish(void *data,char *no,char *num)
{
 int i,n;
 for(i=0;i<11;i++)
 {
 if(strcmp((((struct ORDER*)data)->x[i]).no,no)==0)  //找到菜品的单价
 {
 n=number_change((((struct ORDER*)data)->x[i]).num)+number_change(num);
 char_change(n,(((struct ORDER*)data)->x[i]).num);
 //puts((((struct ORDER*)data)->x[i]).num);
 return;
 }
 }
 for(i=0;i<11;i++)
 {
 if((((struct ORDER*)data)->x[i]).no[0]=='')  //找到指定订单节点,加入点的菜的编号和份数
 {
 strcpy((((struct ORDER*)data)->x[i]).no,no);
 n=number_change((((struct ORDER*)data)->x[i]).num)+number_change(num);
 char_change(n,(((struct ORDER*)data)->x[i]).num);
 return;
 }
 }
}

void sub_dish(void *data,char *no,char *num)
{
 int i,n;
 for(i=0;i<11;i++)
 {
 if(strcmp((((struct ORDER*)data)->x[i]).no,no)==0)
 {
 n=number_change((((struct ORDER*)data)->x[i]).num)-number_change(num);
 char_change(n,((((struct ORDER*)data)->x[i]).num));
 puts((((struct ORDER*)data)->x[i]).num);
 if(n==0)
 {
 char_change(n,(((struct ORDER*)data)->x[i]).num);
 memset((((struct ORDER*)data)->x[i]).no,0,sizeof((((struct ORDER*)data)->x[i]).no));
 }

 return;
 }
 }
}

更多学习资料请关注专题《管理系统开发》。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/62267.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号