示例#1
0
int Ui_admin()
{  
	int n;
	void (*pst[3])() = {Table_manage,Menu_manage,Staff_manage};
	while(1)
	{	
		system("cls");
		printf("\n\n\n\t\t\t管理员功能选择界面\n\n");
		printf("\t\t\t1、台桌管理\n\n");
		printf("\t\t\t2、菜谱管理\n\n");
		printf("\t\t\t3、人员管理\n\n");
		printf("\t\t\t4、注销\n\n");
		printf("\t\t\t5、退出\n\n");
		printf("\t\t\t请输入您所要选择的功能:");
	    n = glb_putString(NULL,'1','5',1,2);
		if (n > 0 && n <4)
		{
			pst[n-1]();
		}
	    else if(n == 4)
			return 0;
		else if (n == 5)
		     return 1;		    				
	}	

}
示例#2
0
void Staff_manage()
{
	char dirname[] = "./Date/Staff.txt";
	FILE *fp;
	pList head;
	int n,count;
	fp = File_open(dirname);
	head = File_read(fp,sizeof(struct staff_t));
	count = List_count(head);
	while(1)
	{	 
		system("cls");
		printf("\n\n\n\t\t\t员工管理界面\n\n");
		printf("\t\t\t1、增加员工\n\n"); 
		printf("\t\t\t2、删除员工\n\n");
		printf("\t\t\t3、修改员工\n\n"); 
		printf("\t\t\t4、查询员工\n\n"); 
		printf("\t\t\t5、返回\n\n"); 
		printf("\t\t\t请输入要操作的功能:");
		n = glb_putString(NULL,'1','5',1,2);
		switch(n)
		{
		case 1:	
			List_print(head,staff_print);
			File_add(fp,head,sizeof(struct staff_t),staff_add);
			List_print(head,staff_print);		
			break;
		case 2:
			List_print(head,staff_print);
			File_remove(fp,head,sizeof(struct staff_t),staff_remove);
			head = File_read(fp,sizeof(struct staff_t));
			List_print(head,staff_print);			
			break;
		case 3:
			List_print(head,staff_print);
			File_updata(fp,head,sizeof(struct staff_t),staff_updata);
			head = File_read(fp,sizeof(struct staff_t));
			List_print(head,staff_print);		
			break;
		case 4:  
			staff_search(head);			
			break;
		case 5:
			break;
		}
		if (n == 5)
		{
			break;
		}
		else
		{
            printf("\n按<Esc>键返回...");
			while(getch() != 27)
			{}
		}
		
		
	}
	List_free(head);
}
示例#3
0
/************************************************************************
int Ui_waiter()
服务员界面
************************************************************************/
int Ui_waiter()
{  
	pList pTable;
	int n;
    FILE *fp;
	void (*pst[5])(pList pTable) = {Open_desk,Order_dishes,Settle_Accounts,turnover_search,Order_search};
	fp = File_open("./Date/Table.txt");
    pTable= File_read(fp,sizeof(struct Table_t));
	while(1)
	{	
		system("cls");
		printf("\n\n\n\t\t\t服务员功能选择界面\n\n");
		printf("\t\t\t1、开桌\n\n");
		printf("\t\t\t2、点菜\n\n");
		printf("\t\t\t3、结账\n\n");
		printf("\t\t\t4、营业额查询\n\n");
		printf("\t\t\t5、已买/未买单查询\n\n");
		printf("\t\t\t6、注销\n\n");
		printf("\t\t\t7、退出\n\n");
		printf("\t\t\t请输入您所要选择的功能:");
		n = glb_putString(NULL,'1','7',1,2);
		if (n > 0 && n <6)
		{
			pst[n-1](pTable);
		}
		else if(n == 6)
			return 0;
		else if (n == 7)
			return 1;		    				
	}	
	   
	  
}
示例#4
0
void Menu_manage()
{
	char dirname[] = "./Date/Menu.txt";
	FILE *fp;
	pList head;
	int n;
	fp = File_open(dirname);
	head = File_read(fp,sizeof(struct Menu_t));
	while(1)
	{	 
		system("cls");
		printf("\n\n\n\t\t\t菜谱管理界面\n\n");
		printf("\t\t\t1、增加菜谱\n\n"); 
		printf("\t\t\t2、删除菜谱\n\n");
		printf("\t\t\t3、修改菜谱\n\n"); 
		printf("\t\t\t4、查询菜谱\n\n"); 
		printf("\t\t\t5、返回\n\n"); 
		printf("\t\t\t请输入您要操作的功能:");
	    n = glb_putString(NULL,'1','5',1,2);
		switch(n)
		{
		case 1:	
			List_print(head,Menu_print);
			File_add(fp,head,sizeof(struct Menu_t),Menu_add);
			head = File_read(fp,sizeof(struct Menu_t));
			List_print(head,Menu_print);
			break;
		case 2:
			List_print(head,Menu_print);
			File_del(fp,dirname,head,sizeof(struct Menu_t),Menu_del);
			List_print(head,Menu_print);
			break;
		case 3:
			List_print(head,Menu_print);
			File_updata(fp,head,sizeof(struct Menu_t),Menu_updata);
		    head = File_read(fp,sizeof(struct Menu_t));
			List_print(head,Menu_print);
			break;
		case 4: 
	
		    Menu_search(head);
			break;
		case 5:
			break;
		}
		if (n == 5)
		{
			break;
		}
		else
		{
            printf("\n按<Esc>键返回...");
			while(getch() != 27)
			{}
		}
		
	}
	  List_free(head);
}
示例#5
0
void Table_manage()
{
	char dirname[] = "./Date/Table.txt";
	FILE *fp;
	pList head;
	int n;
	fp = File_open(dirname);
	head = File_read(fp,sizeof(struct Table_t));
	while(1)
	{	 
		system("cls");
		printf("\n\n\n\t\t\t台桌管理界面\n\n");
		printf("\t\t\t1、增加台桌\n\n"); 
		printf("\t\t\t2、删除台桌\n\n");
		printf("\t\t\t3、修改台桌\n\n"); 
		printf("\t\t\t4、查询台桌\n\n"); 
		printf("\t\t\t5、返回\n\n"); 
		printf("\t\t\t请输入您要操作的功能:");
	    n = glb_putString(NULL,'1','5',1,2);
		switch(n)
		{
		case 1:	
			List_print(head,Table_print);
			File_add(fp,head,sizeof(struct Table_t),Table_add);
			head = File_read(fp,sizeof(struct Table_t));
			List_print(head,Table_print);			
			break;
		case 2:
			List_print(head,Table_print);
			File_remove(fp,head,sizeof(struct Table_t),Table_remove);
			head = File_read(fp,sizeof(struct Table_t));
			List_print(head,Table_print);
			break;
		case 3:
			List_print(head,Table_print);
			File_updata(fp,head,sizeof(struct Table_t),Table_updata);
		    head = File_read(fp,sizeof(struct Table_t));
			List_print(head,Table_print);
			break;
		case 4: 
		    Table_search(head,3,4);
			break;
		case 5:
			break;
		}
		if (n == 5)
		{
			break;
		}
		else
		{
            printf("\n按<Esc>键返回...");
			while(getch() != 27)
			{}
		}
		
	}
	  List_free(head);
}
示例#6
0
/************************************************************************
void turnover_search(pList  pTable)
营业额查询
************************************************************************/
void turnover_search(pList  pTable)
{
  FILE *fp;
  pList pOrder,pt;
  struct Order_t *data;
  long *stardate,*enddate;
  long ordernum;// 订单号
  int a,b,c;// 用来打印年月日
  long money = 0;// 总营业额
  stardate = (long *)malloc(sizeof(long));// 开始日期
  enddate = (long *)malloc(sizeof(long));// 结束日期
  fp = File_open("./Date/Order/Order.txt");
  pOrder = File_read(fp,sizeof(struct Order_t));// 读出已买订单链表

  system("cls");
  printf("\n\t\t\t(1):当天查询\n");
  printf("\n\t\t\t(2):历史查询\n");
  printf("\n\t\t\t请输入要选择的功能:");
  if (glb_putString(NULL,'1','2',1,2) == 1)
  {
	  system("cls");
	  *stardate = Ordernum_get(NULL,NULL);// 获取当前系统日期
	  *enddate = *stardate;
  }
  else
  {
      Orderdate_input(stardate,enddate);// 输入开始和结束日期
	  printf("\n");
  }
 
  printf("\t\t%-16s%-18s%-11s\n","订单号","时间","金额");
  pt = pOrder->pNext;
  while (pt)
  {
	  data = (struct Order_t *)(pt->pData);
	  sscanf(data->ordernum,"%8ld",&ordernum);// 字符串转化成长整型
	  if ((strcmp(data->acname,acName) == 0)&&((ordernum <= *enddate) && (ordernum >= *stardate)))//
	  {
		  money = money + (data->money);// 营业额累加
         sscanf(data->ordernum,"%4d%2d%2d",&a,&b,&c);//分别取出年月日
		 printf("\t\t%-16s%d%s%2d%s%2d%-6s%s%d\n",data->ordernum,a,"年",b,"月",c,"日","¥",data->money);		 
	  }
	  pt = pt->pNext;
  } 
      printf("\n\t\t营业额总额:¥%ld\n",money);
      List_free(pOrder);
	  printf("\n\t\t按任意键返回...");
	  getch();
}
示例#7
0
/************************************************************************
void Order_search(pList  pTable)
已买/未买单查询
************************************************************************/
void Order_search(pList  pTable)
{
	int n;
	FILE *fp;
	pList pOrder;
	fp = File_open("./Date/Cache/Order.txt");
    pOrder = File_read(fp,sizeof(struct Order_t));// 读出未买单链表
    while (1)
    {
    system("cls");
	printf("\n\n\n\t\t\t已买/未买单查询界面\n\n");
	printf("\t\t\t1、未买单查询\n\n");
	printf("\t\t\t2、已买单查询\n\n");
	printf("\t\t\t3、退出\n\n");
	printf("\t\t\t请输入您所要选择的功能:");
	n = glb_putString(NULL,'1','3',1,2);
	switch(n)
	{
	case 1:
		Order_search_unbuy(pOrder);// 未买单查询函数 
		getch();
		break;
	case 2:
		Order_search_buy();// 已买单查询函数
		getch();
		break;
	case 3:
		
		break;
	}
	 if (n == 3)
	 {
		break;
	 }
   
	}
     List_free(pOrder);// 释放链表
}
示例#8
0
int Ui_manage()
{	
	int n;
	while(1)
	{			
		system("cls");
		printf("\n\n\n\t\t\t经理功能选择界面\n\n");
		printf("\t\t\t1、营收汇总\n\n");
		printf("\t\t\t2、注销\n\n");
		printf("\t\t\t3、退出\n\n");
		printf("\t\t\t请输入您所要选择的功能:");
		n = glb_putString(NULL,'1','3',1,2);
	    if (n == 1)
	   {
		Profit_statist();
	   }
		else if(n == 2)
			return 0;
		else if (n == 3)
			return 1;		    				
	}	

}
示例#9
0
void way_add_arb(LIST_T*head)
{
	int get,count;
	FILE*stt_fp,*way_fp;
	LIST_T*stt_head;
	STT_T*stt_data;
	char str=' ';
	WAY_T*data,*fdata,*ldata;
	char filename[15]=" ";
	int sum=list_count(head);
	stt_head=list_init();
	stt_fp=file_open("station.txt");
	file_readall(stt_fp,stt_head,ISTT);
	data=(WAY_T*)malloc(IWAY);
	memset(data,0,IWAY);
	fdata=(WAY_T*)malloc(IWAY);
	memset(fdata,0,IWAY);
	ldata=(WAY_T*)malloc(IWAY);
	memset(ldata,0,IWAY);
	while(1)
	{
		count=way_printpage(head);
		if (count==27)
		{
			return;
		}
		if (count==sum)
		{
			gotoXY(18,16);
			printf("不能在终点站后插入站点");
			Sleep(1000);
			continue;
		}
		fdata=list_search_count(count,head);
		ldata=list_search_count(count+1,head);
		break;
	}
	data->tickctnum=((WAY_T*)(head->pnext->data))->tickctnum;
	print_way_add();	
	strcpy(data->id,((WAY_T*)(head->pnext->data))->id);
	while(1)
	{
		gotoXY(26,3);
		get=glb_putString(data->stt,4,10,1);
		if(get==27)
		{
			return ;
		}
		if(list_search_name(data->stt,head,way_sttmatch)!=NULL)
		{
			gotoXY(20,20);
			printf("该车次已有该站点");
			Sleep(1000);
			gotoXY(20,20);
			printf("          ");
			gotoXY(26,3);
			printf("          ");
			continue;
		}
		else if(list_search_name(data->stt,stt_head,stt_namematch)==NULL)
		{
			gotoXY(20,20);
			printf("没有该站点");
			Sleep(1000);
			gotoXY(20,20);
			printf("          ");
			gotoXY(26,3);
			printf("          ");
			continue;
		}
		else if (list_search_name(data->stt,head,way_sttmatch)!=NULL)
		{
			gotoXY(20,20);
			printf("该站点已经在该车次中出现");
			Sleep(1000);
			gotoXY(20,20);
			printf("                         ");
			gotoXY(26,3);
			printf("          ");
			continue;

		}
		else
		{
			break;
		}
	
	}
	while (1)
	{
		gotoXY(26,5);
		get=glb_putTime(data->btime);
		if(get==27)
		{
			return ;
		}
		gotoXY(26,7);
		get=glb_putTime(data->etime);
		if(get==27)
		{
			return ;
		}
		if(!(trn_usetime(data->btime,fdata->etime)<0&&trn_usetime(ldata->btime,data->etime)<0))
		{
			gotoXY(17,17);
			printf("该时间不合法");	
			Sleep(1000);
			gotoXY(17,17);
			printf("            ");
			gotoXY(26,5);
			printf("        ");
			gotoXY(26,7);
			printf("        ");
			continue;
		}
		break ;
	}
	data->usetime=trn_usetime(data->btime,data->etime);
	gotoXY(26,9);
	printf("%d:%d",data->usetime/60,data->usetime%60);
	while (1)
	{	
		gotoXY(26,11);
		get=data->distance=glb_putNumber(4);
		if(get==0)
		{
			return ;
		}
		if(!(data->distance>fdata->distance&&data->distance<ldata->distance))
		{
			gotoXY(17,17);
			printf("该里程不合法");	
			Sleep(1000);
			gotoXY(17,17);
			printf("            ");
			gotoXY(26,11);
			printf("        ");
			continue;
		}
		break;
	}
	gotoXY(26,13);
	data->price=data->distance*1.2;
	printf("%.2f",data->price);
	list_add_count(head,count,data);
	gotoXY(20,18);
	printf("成功增加途径站点");
	sprintf(filename,"%s.txt",((WAY_T*)(head->pnext->data))->id);
	file_writeall(head,IWAY,filename);
	way_fp=file_open(filename);
	fclose(way_fp);
	stt_data=list_search_name(data->stt,stt_head,stt_search);
	stt_data->isdelete++;
	file_writeall(stt_head,ISTT,"station.txt");
	fclose(stt_fp);
	Sleep(1000);
	return ;
}
示例#10
0
/************************************************************************
void  Open_desk(pList pTable)
开桌
************************************************************************/
void  Open_desk(pList pTable)
{	
	pList pt;
	int n;
	struct Table_t *ps;
	char str[8] = {0};
    FILE *fp;
	fp = File_open("./Date/Table.txt");

	while (1)
	{
		system("cls");
    n = Table_search(pTable,0,3);// 打印空闲和预定的台桌
	if (n == 0)
	{
		printf(",暂无空闲桌子,按任意键返回...");
		getch();
		return;
	}
    printf("请输入要开桌的台桌号:");
	glb_putString(str,'0','9',3,2);// str存放要开桌的台桌号
    pt = pTable->pNext;
	while(pt != NULL)
	 { 	  
		ps = (struct Table_t *)(pt->pData);
		if (strcmp(ps->acNo,str) == 0)
		{	
			if ((ps->state == 0)||(ps->state == 3))
     		break;
		}
		pt = pt->pNext;
	 }
	
	 if (pt == NULL)
	  {
		  memset(str,0,sizeof(char));
		  printf("\n台桌号有误或不可用,请重新输入,按任意键继续...");
		  getch();
	  }
	  else
		  break;
	}
	  
	     if (ps->state == 3)// 若为预定状态,直接跳转为点菜界面
	     {
			 ps->state = 2;//占用,转到点菜界面
			 File_write(fp,pTable,sizeof(struct Table_t),0);// 更新台桌文件
			 printf("\n开桌成功,按任意键继续...");
			 getch();
			 Order_dishes(pTable);// 跳转到点菜界面
			 return;
	     }
	     printf("\n是否马上开始点菜(y)确定、(n)返回:");
	     if(glb_putString(NULL,0,0,1,1) != 'y')
		 {     
			 ps->state = 3;//预定状态
			 File_write(fp,pTable,sizeof(struct Table_t),0);
			 printf("\n预定成功,按任意键继续...");
			 getch();
		 }  
		 else 
		 {
			 ps->state = 2;//占用,转到点菜界面
			 File_write(fp,pTable,sizeof(struct Table_t),0);
			 printf("\n开桌成功,按任意键继续...");
			 getch();
			 Order_dishes(pTable);
			 return;
		 }			 
	   
}
示例#11
0
/************************************************************************
void Settle_Accounts(pList pTable)
结账功能
************************************************************************/
void Settle_Accounts(pList pTable)
{
	FILE *fp;
	int money;
	pList pt,pTitle,pOrder,ps;
	struct Order_t * data;
	char txt[] = ".txt";
    char str[6] = {0};
	char str1[6] = {0};
    char tabpath[30] ="./Date/Cache/";// 未结详单路径
	fp = File_open("./Date/Cache/Order.txt");// 打开未买订单文件
	pOrder = File_read(fp,sizeof(struct Order_t));
	while(1)
	{	
	system("cls");
	pt = pOrder->pNext;
	if (pt == NULL)//判断当前是否有未买订单
	{
		printf("\n目前没有未买订单,按任意键返回...");
		return;
	}
	printf("\t\t%12s%12s%11s%11s\n","订单号","台桌号","金额","状态");
	while (pt)
	{
		data = (struct Order_t *)(pt->pData);
		printf("\t\t%12s%12s%11d%11s\n",data->ordernum,data->tablenum,data->money,"未支付");// 打印所有未结订单信息
		pt = pt->pNext;
	}  
	printf("\n请输入要结账的台桌号(3位):");
	glb_putString(str,'0','9',3,2);	
	ps = pOrder;
	pt = pOrder->pNext;
	while (pt)
	{
		data = (struct Order_t *)(pt->pData);
		if (strcmp(data->tablenum,str) == 0)// 找出要结账的订单结点
			break;
		ps = pt;
		pt = pt->pNext;
	}
	if (pt == NULL)// 未找到订单,作提示
	{
		printf("\n\n台桌号无订单或有误,按<Esc>键返回、其他键重新输入:");
		if (getch() == 27)
		return;	
		memset(str,0,sizeof(char));
	}
	else
	   break;
	}	
	strcat(tabpath,str);// 获取详单的路径
	strcat(tabpath,txt);
	fp = File_open(tabpath);// 打开将结账的详单文件
	pTitle = File_read(fp,sizeof(struct Title_t));// 读出未买详单链表
	Title_print(pTitle,data);// 打印未买详单信息
	printf("\n订单号为%s是否结账,(y)确定、(n)返回:",data->ordernum);
	if (glb_putString(NULL,0,0,1,1) == 'y')
	{
		printf("\n实收金额:");
		money = glb_putString(str1,'0','9',5,2);// 输入金额
		if (money < data->money)// 实收金额不可小于订单金额
		{
			printf("\n实收金额小于订单金额,无法结账,按任意键返回...");
			getch();
			return;
		}
		printf("\n回找金额:%d",money - (data->money));
		fp = File_open("./Date/Title/Title.txt");
		File_write(fp,pTitle,sizeof(struct Title_t),2);//写入已结详单链表
		
		fp = File_open("./Date/Order/Order.txt");
		fseek(fp,0,2);
		strcpy(data->acname,acName);//写入结账服务员登录名到订单结构体中
		fwrite(data,sizeof(struct Order_t),1,fp);//写入已结订单的结点到另一个文件
		fflush(fp);
		
		ps->pNext = pt->pNext;// 删除结点
		free(pt);//释放已结订单的结点
		fp = fopen("./Date/Cache/Order.txt","w+");
		File_write(fp,pOrder,sizeof(struct Order_t),0);//刷新未结订单的文件
		
		pt = pTable->pNext;
		while(pt)
		{
			if(strcmp(((struct Table_t *)(pt->pData))->acNo,str) == 0)// 找到已结账台桌结点
			{
				((struct Table_t *)(pt->pData))->state = 0;// 桌子状态改为空闲
				fp = File_open("./Date/Table.txt");
				File_write(fp,pTable,sizeof(struct Table_t),0);// 更新台桌信息文件
				break;
			}
			pt = pt->pNext;
		}
		printf("\n结账成功");			   
	}
	else
		printf("\n结账失败");
	printf(",按任意键返回...");
	getch();
	List_free(pTitle);
    List_free(pOrder);
}
示例#12
0
/************************************************************************
void Order_dishes(pList pTable)
点菜
************************************************************************/
void Order_dishes(pList pTable)
{
	FILE *fd;
	int n,count1;
	pList pMenu,pOrder,pTitle,pt;
    struct Order_t *pNew,*pdata;
	char txt[] = ".txt";
    char str[8] = {0};
    char tabpath[30] ="./Date/Cache/";// 详单的相对路径

	fd = File_open("./Date/Menu.txt");
	pMenu = File_read(fd,sizeof(struct Menu_t));	
	fd = File_open("./Date/Cache/Order.txt");
    pOrder = File_read(fd,sizeof(struct Order_t));

	while (1)
	{
		system("cls");
	n = Table_search(pTable,2,4);// 判断是否有可用桌子
	if (n == 0)
	{		
		printf(",暂无可用桌子,按任意键继续...");
		getch();
		return;
	}
	printf("请输入要点菜的台桌号:");
	glb_putString(str,'0','9',3,2);
    strcat(tabpath,str);
	strcat(tabpath,txt);// 获取详单的路径
    pt = pOrder->pNext;
	while(pt)
	{
         pdata = (struct Order_t *)(pt->pData);
		if (strcmp(pdata->tablenum,str) == 0)// 判断当前未买订单中是否存在此台桌的订单
		{
			pNew = pdata;
			fd = File_open(tabpath);
	        pTitle = File_read(fd,sizeof(struct Title_t));
			break;
		}
		pt = pt->pNext;
	}

    if (pt == NULL)// 未买订单不存在输入台桌的订单
    {	
        pt = pTable ->pNext;
		while(pt)
		{
			if (strcmp(((struct Table_t *)(pt->pData))->acNo,str) == 0)
			{
				if (((struct Table_t *)(pt->pData))->state == 2)
				{
					pNew = Order_init(str);// 初始化一个订单结点
					List_add(pOrder,pNew);
					File_write(fd,pOrder,sizeof(struct Order_t),0);// 写入未买订单文件
					fd = fopen(tabpath,"w+");// 已w+方式打开详单文件,便于开始点菜
		            pTitle = File_read(fd,sizeof(struct Title_t));
					break;
				}
				else if (((struct Table_t *)(pt->pData))->state == 0)
				{
					printf("\n此桌号为空闲需先开桌才能点菜,是否开桌,(y)开桌、(n)返回:");
					if (glb_putString(NULL,0,0,1,1) == 'y')
						Open_desk(pTable);// 跳转到开桌界面
					return;
				}		
		
			}
		               pt = pt->pNext;
		
		}
		if (pt == NULL)
		{
			memset(str,0,sizeof(char));
			strcpy(tabpath,"./Date/Cache/");
			printf("\n输入的桌号有误或者处于维修状态,请重新输入,按任意键继续...");
			getch();
		}
		else
			break;		
    }
	else
		break;
}
     Order_print(pMenu,pTitle,pNew);
	 count1 = List_count(pMenu);// 获取菜谱的个数
	 while (1)	
{
	JR_EmptyRaw(count1+3,count1+12);// 清空菜谱下面的几行信息
	JR_SetCursor(count1+3,0);
	printf("\t\t(1):点菜\n");
	printf("\t\t(2):退菜\n");
	printf("\t\t(3):返回\n");
	printf("\t\t请输入要操作的功能:");
    n = glb_putString(NULL,'1','3',1,2);
	switch(n)
	{ 
	 case 1:
		 {
			 Order_add(count1,pNew,pTitle,pOrder,pMenu,tabpath); // 加菜功能函数
		     break;
		 }	
	 case 2:
		 {
			 Order_del(count1,pNew,pTitle,pMenu,pOrder,tabpath);// 减菜功能函数
			 break;
		 }
	 case 3:
		     break;
		
	}	
	        
	 if (n == 3)
	 {
		 break;
	 }
	 	   		   
	}	 
	 List_free(pOrder);
	 List_free(pMenu);
	 List_free(pTitle);
}
示例#13
0
void Profit_statist()
{
	pList pOrder,pStaff;
	pList p1,p2;
	struct Order_t *Odate;
	struct staff_t *Sdate;
	FILE *fp;
	long money,income;// 总金额
	long *stardate,*enddate;
    long ordernum;// 订单号
	money = income = 0;
	stardate = (long *)malloc(sizeof(long));// 开始日期
    enddate = (long *)malloc(sizeof(long));// 结束日期
	fp = File_open("./Date/Order/Order.txt");
    pOrder= File_read(fp,sizeof(struct Order_t));
	fp = File_open("./Date/Staff.txt");
    pStaff= File_read(fp,sizeof(struct staff_t));

	system("cls");
	printf("\n\t\t\t(1):当天查询\n");
	printf("\n\t\t\t(2):历史查询\n");
	printf("\n\t\t\t请输入要选择的功能:");
	if (glb_putString(NULL,'1','2',1,2) == 1)
	{
		system("cls");
		*stardate = Ordernum_get(NULL,NULL);// 获取当前系统日期
		*enddate = *stardate;
	}
	else
	{
		Orderdate_input(stardate,enddate);// 输入开始和结束日期
		printf("\n");
	}
    printf("\t\t\t%-15s%s\n","服务员","营收");
	p1 = pStaff->pNext;
	while (p1)
	{
		Sdate = (struct staff_t *)(p1->pData);
		p2 = pOrder->pNext;
		while(p2)
		{
			Odate = (struct Order_t *)(p2->pData);
			sscanf(Odate->ordernum,"%8ld",&ordernum);// 获取订单号上的日期
			if ((strcmp(Sdate->acName,Odate->acname) == 0)&&(ordernum <= *enddate) && (ordernum >= *stardate))
			{
				money = money + (Odate->money);
			}
			p2 = p2->pNext;
		}
		if ((Sdate->role == 0))// 判断是否为服务员
		{
			printf("\t\t\t%-15s%s%ld\n",Sdate->acName,"¥",money);
			income = income + money;// 累加每个服务员的营业额
			money = 0;
		}	
		p1 = p1->pNext;
	}

	    printf("\n\t\t\t总营业额:¥%ld\n",income);
		printf("\n\t\t\t请按任意键返回...");
		getch();
}