#include<stdio.h>
#include<string.h>
#include<stdlib.h>

//-------登录设置

void login()
{
int number=0;
char username[20],password[20];//定义用户名和密码
 while(number<3)
  {
  system("cls");//清屏
  printf("\n\n");
  printf("\t\t*******************************\t\t\n");
  printf("\t\t             用户登录               \t\t\n");
  printf("\t\t*******************************\t\t\n");
  printf("\n\n");
  printf("\t\t\t用户名称:");
  scanf("%s",username);
  printf("\n\n");
  printf("\t\t\t用户密码:");
  scanf("%s",password);
   if(strcmp(username,"qt")==0&&strcmp(password,"qt")==0)
   {
     beforeMianMenu();//strcmp字符串比较函数
	 break;
   }
    else if(strcmp(username,"ht")==0&&strcmp(password,"ht")==0)
   {
     backMianMenu();//strcmp字符串比较函数
	 break;
   }
	else 
	{
	    system("cls");//清屏
		printf("请输入正确选项!按任意键返回:");
		getchar();
		getchar();//按任意键返回
	    number++;
	}
 }
}
//  ----后台页面设置

void backMianMeun()
{
     int choice;//选择功能项
     char con;//是否继续
     while(1)
	 {
//实现循环选择;程序主页面
     system("cls");
     printf("\n\n");
     printf("\t\t*******************************\t\t\n");
     printf("\t\t            后台主页面         \t\t\n");
     printf("\t\t*******************************\t\t\n");
     printf("\n\n");
     printf("\t\t\t1.商品维护:\n\n");
     printf("\t\t\t2.会员管理:\n\n");
     printf("\t\t\t3.库存提示:\n\n");
     printf("\t\t\t\t0.退出系统:\n\n");
     printf("\t\t请输入你的选择:\n\n");
     scanf("%d",&choice);      
        switch(choice)
		{
 	    case 1: goodsAdd();break;
    	case 2: memberManage();break;
    	case 3: stockWarn();break;
        case 0: printf("\t\t确认要退出吗(y/n)");
		        scanf("%c",&con);
		        if(con=='Y'||con=='N')
			    exit(0);//退出系统
		        break;
	    default: system("cls");//清屏
		printf("请输入正确选项!按任意键返回:");
		getchar();
		getchar();//按任意键返回
		}	 
	 }
}
//---------前台设置
void beforeMianMeun()
{
     int choice;//选择功能项
     char con;//是否继续
     while(1)
	 {
//实现循环选择;程序主页面
     system("cls");
     printf("\n\n");
     printf("\t\t*******************************\t\t\n");
     printf("\t\t            前台主页面         \t\t\n");
     printf("\t\t*******************************\t\t\n");
     printf("\n\n");
     printf("\t\t\t1.商品销售:\n\n");
     printf("\t\t\t2.库存预示:\n\n");
     printf("\t\t\t\t0.退出系统:\n\n");
     printf("\t\t请输入你的选择:\n\n");
     scanf("%d",&choice);      
        switch(choice)
		{
 	    case 1: goodsSale();break;
    	case 2: stockWarn();break;
        case 0: printf("\t\t确认要退出吗(y/n)");
		        scanf("%c",&con);
		        if(con=='Y'||con=='N')
			    exit(0);//退出系统
		        break;
	    default: system("cls");//清屏
		printf("请输入正确选项!按任意键返回:");
		getchar();
		getchar();//按任意键返回

		}
	 }
}


//  ---会员设置

void memberManage()
{
int choice;
char con;
     while(1)
	 {
	 system("cls");
     printf("\n\n");
     printf("\t\t*******************************\t\t\n");
     printf("\t\t             会员管理           \t\t\n");
     printf("\t\t*******************************\t\t\n");
     printf("\n\n");
     printf("\t\t\n1.会员添加\n\n");
	 printf("\t\t\n2.会员查询\n\n");
	 printf("\t\t\n3.会员统计\n\n");
	 printf("\t\t\n4.删除会员\n\n");
	 printf("\t\t\n0.返回主页面:");
	 printf("请输入你的选择:");
	 scanf("%d",&choice); 
	    switch(choice)
		{
	      case 1:memberdsAdd();break;//会员添加
	 	     case 2:memberQuery();break;//会员查询加
			    case 3:memberStat();break;//会员统计
					 case 4:memberDeleteMenu();break;//删除会员
						   case 0:
							     //返回主页面
							    printf("\t\t确认要返回主页面吗?(Y/N):");
							    scanf("%c",&con);
							    if(con=='Y'||con=='y')
								{
								  beforeMianMenu();
								}							   							  
								  break;							  
	   default:
		  system("cls");
          printf("请输入正确选择!(按任意键返回会员管理)");
		  getchar();getchar();//任意键返回
		}
	 }
}
void memberQurey()
{
   int choice;
   char con; 
   int number;
     while(1)
	 {
	 system("cls");
     printf("\n\n");
     printf("\t\t*******************************\t\t\n");
     printf("\t\t             会员查询          \t\t\n");
     printf("\t\t*******************************\t\t\n");
     printf("\n\n");
     printf("\t\t按会员编号查询:\t\n\n");
	 printf("\t\t按身份证号查询:\t\n\n");
	 printf("\t\t按会员名称查询:\t\n\n");
	 printf("\t\t\n0.返回主页面:");
	 printf("请输入你的选择:");
	 scanf("%d",&choice); 
	    switch(choice)
		{
		  case 1:
			printf("请输入会员编号:");
			scanf("%d",&number); 
			numberQuery(number,0);
            break;
          case 2: 
			identityQuery();
			break;
		  case 3: 
			nameQuery();
			break;
		  case 0: 
	       	printf("\t\t确认要返回主页面吗?(Y/N):");
		    scanf("%c",&con);
			if(con=='Y'||con=='y')
			 {
				beforeMianMenu();
			 }							   							  
			  break;
	   default:
		  system("cls");
          printf("请输入正确选择!(按任意键返回会员管理)");
		  getchar();getchar();//任意键返回
		}
	 }
}
//-----------会员统计


void memberStatMenu()
{
int choice;
char con;
   while(1)//循环选择
   {
     system("cls");
     printf("\n\n");
     printf("\t\t*******************************\t\t\n");
     printf("\t\t            会员统计           \t\t\n");
     printf("\t\t*******************************\t\t\n");
     printf("\n\n");
     printf("\t\t\n1.按会员编号降序排列\n\n");
	 printf("\t\t\n2.按会员编号升序排列\n\n");
	 printf("\t\t\n0.返回会员管理:");
	 scanf("%d",&choice); 
	     switch(choice)
		 {
		 case 1:
			 memberStat(1);//降序
			 break;
		 case 2:
			 memberStat(2);//升序
			 break;
	   	 case 0:
				 {//返回主页面
				   printf("\t\t确认要返回吗?(Y/N):");
				   scanf("%c",&con);
				   if(con=='Y'||con=='y')
					   return;
				  }
				  break;
		 default:
		  system("cls");
          printf("请输入正确选择!(按任意键返回)");
		  getchar();getchar();//任意键返回
		 }
   }
}



//----会员添加
void memberAdd()
{
struct member hy;
FILE *fp,*bhfp;
int bh=1;
char con;
  //打开一个二进制文件夹,添加数据
  if((fp=fopen("data\\member.dat","ab"))==NULL)
  {
  	
    fp=fopen("data\\member.dat","wb");
	return;
	
  }
  while(1)
  {
  if((bhfp=fopen("data\\memberNumber.dat","r"))==NULL)
   {
   printf("不能打开文件夹,可按任意键新建\n");
   bhfp=fopen("data\\memberNumber.dat","wb"); 
   
   putw(1,bhfp);
   fclose(bhfp);
   getchar();getchar();
   memberManage();
   }
   else
	{  
	  bh=getw(bhfp);
	}
   hy.memberNumber=bh;
   fclose(bhfp);


   system("cls");
   printf("\n\n");
   printf("\t\t*******************************\t\t\n");
   printf("\t\t            会员添加           \t\t\n");
   printf("\t\t*******************************\t\t\n");
   printf("\n\n");

   //会员信息录入
   printf("\t\t会员的编号:\t%d\n",bh);
   printf("\t\t请输入会员姓名:\n");
   scanf("%s",&hy.memberName);
   printf("\t\t请输入会员身份证号:\n");
   scanf("%s",&hy.identity);
   printf("\t\t请确认添加会员的信息:(Y/N)\n");
   scanf("%c",&con);
   if(con=='Y'||con=='y')
   {
      if((fwrite(&hy,sizeof(struct number),1,fp)!=1)
	  {
		printf("\n\n添加失败!\n");
	  }
	  else 
	  {
	   printf("\n\n添加成功!\n");
	   //保存会员
       if((bhfp=fopen("data\\memberNumber.dat","w"))==NULL)
	   {
	    printf("不能打开文件夹\n");
		putw(1,bhfp);
		return;	   
	   }
       //会员编号递增
	   putw(bh+1,bhfp);
       fclose(bhfp);
       getchar();getchar();
	  }
   }
   //返回处理
   printf("\t\t确认要返回吗?(Y/N):");
   scanf("%c",&con);
   if(con=='N'||con=='n')
   {
	   break;
   }
  }
  fclose(fp);
}



//---------会员编号查询
int numberQuery(int number)
{
  struct member hy;
  FILE *fp;
  if((fp=fopen("data\\member.dat","rb"))==NULL)
  {
    printf("不能打开文件夹!\n");
	return 0;
  }
  while(!feof(fp))
  {
	fread(&hy,sizeof(struct member),1,fp);
    if(hy.memberNumber==number)
	{

     system("cls");
     printf("\n\n");
     printf("\t\t*******************************\t\t\n");
     printf("\t\t         会员查询结果:        \t\t\n");
     printf("\t\t*******************************\t\t\n");
     printf("\n\n");
     printf("\t\t按会员编号查询:\t%d\n\n",hy.memberNumber);
	 printf("\t\t按会员身份证号查询\t%d\n\n",hy.identity);
	 printf("\t\t按会员名称查询:\t%s\n\n",hy.memberName);
     printf("\t\t按任意键返回会员查询页面");
	 getchar();getchar();
	 fclose(fp);
	 return 1;
	}
  }
    system("cls");
	printf("\n\n无此会员编号");
	printf("\t\t按任意键返回会员查询页面");
    getchar();getchar();
	fclose(fp);
	return 0;
}


//----按会员姓名查询

void nameQuery()
{
  struct member hy;
  int found=0;//0--未找到,1--找到。
  char memberName[20];
  FILE *fp;
  if((fp=fopen("data\\member.dat","rb"))==NULL)
  {
    printf("文件夹不能打开!\n");
	return;
  }
 pirntf("请输入会员姓名");
 scanf("%s",&memberName);
 while(!feof(fp))
 {
   fread(&hy,sizeof(struct member),1,fp);
   if(struct(hy.memberName,memberName)==0)
   {
     system("cls");
	 found=1;
     printf("\n\n");
     printf("\n\n");
     printf("\t\t*******************************\t\t\n");
     printf("\t\t         查询结果如下:        \t\t\n");
     printf("\t\t*******************************\t\t\n");
     printf("\n\n");
     printf("\t\t会员编号:\t%d\n\n",hy.memberNumber);
	 printf("\t\t会员身份证号\t%d\n\n",hy.identity);
	 printf("\t\t会员名称:\t%s\n\n",hy.memberName);
     printf("\t\t按任意键返回会员查询页面");
	 getchar();getchar();
	 break;
 }
   if(found==0)
   {
     system("cls");
     printf("\n\n无此会员");
	 printf("\t\t按任意键继续查询");
	 getchar();getchar();
   }
   fclose(fp);
}


//---按身份证号查询

void identityQuery()
{
  struct member hy;
  int found=0;//0--未找到,1--找到。
  char identity[19];
  FILE *fp;
  if((fp=fopen("data\\member.dat","rb"))==NULL)
  {
    printf("文件夹不能打开!\n");
	return;
  }
 pirntf("请输入会员身份证号");
 scanf("%s",&identity);
 while(!feof(fp))
 {
   fread(&hy,sizeof(struct member),1,fp);
   if(struct(hy.identity,identity)==0)
   {
     system("cls");
	 found=1;
     printf("\n\n");
     printf("\n\n");
     printf("\t\t*******************************\t\t\n");
     printf("\t\t         查询结果如下:        \t\t\n");
     printf("\t\t*******************************\t\t\n");
     printf("\n\n");
     printf("\t\t会员编号:\t%d\n\n",hy.memberNumber);
	 printf("\t\t会员身份证号\t%d\n\n",hy.identity);
	 printf("\t\t会员名称:\t%s\n\n",hy.memberName);
     printf("\t\t按任意键返回会员查询页面");
	 getchar();getchar();
	 break;
 }
   if(found==0)
   {
     system("cls");
     printf("\n\n无此会员");
	 printf("\t\t按任意键继续查询");
	 getchar();getchar();
   }
   fclose(fp);
}

 /* ---会员统计-----*/
int memberStat(int i)
{
  struct member hy;
  struct member memberinfo[1000];
  int countNum=0;
  int k,j;
  FILE *fp;
  if((fp=fopen("data\\member.dat","rb"))==NULL)
  {
    printf("不能打开文件夹!\n");
	return 0;
  }
 if(!feof(fp))
 {
   fread(&hy,sizeof(struct member),1,fp);
 }
 while(!feof(fp))
  {
   memberinfo[countNum]=hy;
   countNum++;
   fread(&hy,sizeof(struct member),1,fp);  
  }
 if(i==1)
	{
	 for(j=0;j<countNum;j++)