销售管理系统

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
#define R 4
#define N 5
void menu();//菜单
void biaotou();//生成表头
void input();//输入便条信息
void count_sum();//计算每人每种产品的总销售额
void saleperson();//按销售额对销售员排序
void product();//按销售额对产品排序
void output();//输出统计报表
void add_delete();//增删便条
void inquire();//查询
typedef struct
{
    int xh;  //便条序号
    int dh;  //销售员代号
    int n1;  //1号产品销量
    int n2;  //2号产品销量
    int n3;  //3号产品销量
    int n4;  //4号产品销量
    int n5;  //5号产品销量
}XS;
 
main()     /*操作代码*/
{
    int n,i;
    printf("\n\n                  欢迎使用销售管理系统");
    printf("\n\n");
    for(i=0;;i++)
  {
        menu();
    printf("\t请选择你要进行的操作:(如果首次使用请先生成表头)\n");
    printf("\t");
    scanf("%d",&n);
    if(n<1||n>8)  //输入数字错误
    {
        system("cls");
        printf("\n谢谢使用销售管理系统!\n\n");
        printf("您输入的数字错误,请输入正确数字!\n\n");
        printf("请按任意键退出!\n");
        getch();//退出程序
        system("cls");
    }
    else
    {
        switch(n)
      {  
        case 1:system("cls");biaotou();break;       //生成表头
        case 2:system("cls");input();break;         //输入便条信息
        case 3:system("cls");count_sum();break;        //计算上个月每人每种产品销售额
        case 4:system("cls");saleperson();break;    //按销售额对销售员进行排序
        case 5:system("cls");product();break;       //按销售额对产品进行排序
        case 6:system("cls");output();break;        //输出统计报表
        case 7:system("cls");inquire();break;       //查询
        case 8:system("cls");add_delete();break;    //增删便条
      }
    }
  }
     
}
 
void menu()  //菜单函数
{
    int i;
    for(i=0;i<25;i++)
    printf(" ");
    printf("菜单");
    printf("\n");
    printf("------------------------------------------------------------------------\n");
    printf("\t1.生成表头\n");
    printf("\t2.输入便条\n");
    printf("\t3.计算上个月每人每种产品销售额\n");
    printf("\t4.按销售额(由高到低)对销售员进行排序并输出\n");
    printf("\t5.按销售额(由高到低)对产品进行排序并输出产品代号和销售额\n");
    printf("\t6.输出统计报表\n");
    printf("\t7.查询\n");
    printf("\t8.增删便条\n");
    printf("------------------------------------------------------------------------\n");
}

void biaotou()//生成表头函数
{
    FILE *fp;
    if((fp=fopen("d:\\xiaoshou.txt","ab+"))==NULL)
    {
        printf("File open error!\n");
        exit(0);
    }
    if(fscanf(fp,"序号\t销售员代号\t产品1\t产品2\t产品3\t产品4\t产品5")==NULL)//表头已有
    {
        if(fclose(fp))
        {
            printf("Can not close the file!\n");
            exit(0);
        }
        printf("------------------------------------------------\n");
        printf("该表头已生成,无需再次生成,按任意键返回主菜单\n");
        getch();
         system("cls");//清屏
    }
    else
    {
        fprintf(fp,"序号\t销售员代号\t产品1\t产品2\t产品3\t产品4\t产品5\n");
        if(fclose(fp))
        {
            printf("Can not close the file!\n");
            exit(0);
        }
        printf("---------------------------------------------------------------\n");
        printf("表头生成成功,按任意键返回主菜单!\n");  //生成成功
        getch();
        system("cls"); //清屏
    }
}

void input()  //输入函数  
{
    int i,num;
    FILE *fp;
    XS a[200];
    printf("请输入需要录入的便条条数:\n");
    scanf("%d",&num);
    printf("销售员代号\t产品1\t产品2\t产品3\t产品4\t产品5\n");
    for(i=0;i<num;i++)  //数据输入
    {   printf("\t");
        scanf("%d%d%d%d%d%d",&a[i].dh,&a[i].n1,&a[i].n2,&a[i].n3,&a[i].n4,&a[i].n5);
        
    }
    if((fp=fopen("d:\\xiaoshou.txt","a"))==NULL)
    {
        printf("The file open error!\n");
        exit(0);
    }
    for(i=0;i<num;i++)
    {
        fprintf(fp,"%d\t%d\t\t%d\t%d\t%d\t%d\t%d",i+1,a[i].dh,a[i].n1,a[i].n2,a[i].n3,a[i].n4,a[i].n5);//将数据打印到文件中
        fprintf(fp,"\n");
    }
    if(fclose(fp))
    {
        printf("Can not close the file!\n");
        exit(0);
    }
    printf("输入成功,按任意键返回主菜单!");//输入成功
    getch();
    system("cls");    
}

void count_sum()  //计算每人每种产品的销售总额
{
    FILE *fp;
    int i=0,j,k=0;
    XS a[200];
    int sum1=0,sum2=0,sum3=0,sum4=0,sum5=0;//定义每种产品的销量和初始值为0
    if((fp=fopen("d:\\xiaoshou.txt","r+"))==NULL)
    {
        printf("The file open error!\n");
        exit(0);
    }
    rewind(fp);//重新使指针回到文件开头
    fscanf(fp,"序号\t销售员代号\t产品1\t产品2\t产品3\t产品4\t产品5");
    while(fscanf(fp,"%d%d%d%d%d%d%d",&a[k].xh,&a[k].dh,&a[k].n1,&a[k].n2,&a[k].n3,&a[k].n4,&a[k].n5)>0)
     k++;//统计便条数量
     if(fclose(fp))
     {
         printf("Can not close the file!\n");
         exit(0);
     }
     printf("销售员代号\tsum1\tsum2\tsum3\tsum4\tsum5\n");
     printf("----------------------------------------------------\n");
     for(i=0;i<R;i++)
     {   
        sum1=0;sum2=0;sum3=0;sum4=0;sum5=0;
       for(j=0;j<k;j++)
       {
             if(a[j].dh==(i+1))
             {
                 sum1+=a[j].n1;
            sum2+=a[j].n2;
            sum3+=a[j].n3;
            sum4+=a[j].n4;
            sum5+=a[j].n5;
             }
       }
      printf("\t%d\t%d\t%d\t%d\t%d\t%d\n",(i+1),sum1,sum2,sum3,sum4,sum5);    
    }
    printf("----------------------------------------------------\n");
    printf("统计成功,按任意键返回主菜单!");
    getch();
    system("cls");//清屏
}

void saleperson() //按销售额(由高到低)对销售员进行排序并输出
{
    int i,j,k=0,max,t,sum;
    FILE *fp;
    XS a[200];
    int c[R]={0};//用来存放销售员代号
    int s[R]={0};//定义每个销售员的销售总额初始值为0
    int x[R]={0};//用来存放重新排序之前的销售总额
    int sum1=0,sum2=0,sum3=0,sum4=0,sum5=0;//定义每种产品的销量和初始值为0
    if((fp=fopen("d:\\xiaoshou.txt","r+"))==NULL)
    {
        printf("The file open error!\n");
        exit(0);
    }
    rewind(fp);//重新使指针回到文件开头
    fscanf(fp,"序号\t销售员代号\t产品1\t产品2\t产品3\t产品4\t产品5");
    while(fscanf(fp,"%d%d%d%d%d%d%d",&a[k].xh,&a[k].dh,&a[k].n1,&a[k].n2,&a[k].n3,&a[k].n4,&a[k].n5)>0)
     k++;//统计便条数量
     if(fclose(fp))
     {
         printf("Can not close the file!\n");
         exit(0);
     }
     for(i=0;i<R;i++)
     {  sum1=0;sum2=0;sum3=0;sum4=0;sum5=0;
       for(j=0;j<k;j++)
       {
             if(a[j].dh==(i+1))
             {
                 sum1+=a[j].n1;
            sum2+=a[j].n2;
            sum3+=a[j].n3;
            sum4+=a[j].n4;
            sum5+=a[j].n5;
             }
       }
      sum=sum1+sum2+sum3+sum4+sum5;
      s[i]=sum;
    }
    for(i=0;i<R;i++)
    {
        x[i]=s[i];
    }
    for(i=0;i<R;i++)
    {
        max=i;
        for(j=i+1;j<R;j++)
        {
            if(s[j]>s[max])
            max=j;
        }
        t=s[max];
        s[max]=s[i];
        s[i]=t;
    }
    for(i=0;i<R;i++)
    {
       for(j=0;j<R;j++)
       {
           if(x[j]==s[i])
           c[i]=j;
          }
    }
    printf("按销售额由高到低对销售员进行排序,结果如下:\n");
    printf("-----------------------------\n");
    printf("排名\t代号\t销售总额\n");
    printf("-----------------------------\n");
    for(i=0;i<4;i++)
    printf("%d\t%d\t%d\n",(i+1),(c[i]+1),s[i]);
    printf("-----------------------------\n");
    printf("按任意键返回主菜单!");
    getch();
    system("cls");
}

void product()//按销售额(由高到低)对产品进行排序并输出产品代号和销售额
{
    FILE *fp;
    int i,k=0,j,t,max;
    XS a[200];
    int xh[N]={0},numb[N]={0};//定义两个数组来存放产品代号和销售额 ,初始值为0
    int x[N]={0};//用来存放排序前的产品销售总额
    int sum1=0,sum2=0,sum3=0,sum4=0,sum5=0;//定义每种产品的销量和初始值为0
    int b[R][N]={0};//用来存放每个销售员不同产品的销售总额,行下标表示销售员代号,列下标表示产品代号,b[i][j]表示销售员(i+1)号卖出的产品(j+1)的销售总额
    if((fp=fopen("d:\\xiaoshou.txt","r+"))==NULL)
    {
        printf("The file open error!\n");
        exit(0);
    }
    rewind(fp);//重新使指针回到文件开头
    fscanf(fp,"序号\t销售员代号\t产品1\t产品2\t产品3\t产品4\t产品5");
    while(fscanf(fp,"%d%d%d%d%d%d%d",&a[k].xh,&a[k].dh,&a[k].n1,&a[k].n2,&a[k].n3,&a[k].n4,&a[k].n5)>0)
     k++;//统计便条数量
     if(fclose(fp))
     {
         printf("Can not close the file!\n");
         exit(0);
     }
     for(i=0;i<R;i++)
     {
         sum1=0;sum2=0;sum3=0;sum4=0;sum5=0;
       for(j=0;j<k;j++)
       {
             if(a[j].dh==(i+1))
             {
                 sum1+=a[j].n1;
            sum2+=a[j].n2;
            sum3+=a[j].n3;
            sum4+=a[j].n4;
            sum5+=a[j].n5;
             }
       }
      b[i][0]=sum1;
      b[i][1]=sum2;
      b[i][2]=sum3;
      b[i][3]=sum4;
      b[i][4]=sum5;
    }
    for(i=0;i<N;i++)
    {
        for(j=0;j<R;j++)
        {
            numb[i]+=b[j][i];
        }
    }
    for(i=0;i<N;i++)
    {
        x[i]=numb[i];
    }
    for(i=0;i<N;i++)
    {
        max=i;
        for(j=i+1;j<N;j++)
        {
           if(numb[j]>numb[max])
           max=j;    
        }
        t=numb[max];
        numb[max]=numb[i];
        numb[i]=t;
    }
    for(i=0;i<N;i++)
    {
        for(j=0;j<N;j++)
        {
            if(x[j]==numb[i])
            xh[i]=j;
        }
    }
    printf("按销售额由高到低对产品排序结果如下:\n");
    printf("------------------------------\n");
    printf("排名\t产品代号\t销售额\n");
    printf("------------------------------\n");
    for(i=0;i<5;i++)
    printf("%d\t%d\t\t%d\n",i+1,(xh[i]+1),numb[i]);
    printf("------------------------------\n");
    printf("输出成功,按任意键返回主菜单!\n");
    getch();
    system("cls"); //清屏
}


void output()   //输出统计报表
{
    FILE *fp;
    XS a[200];
    int i,j,k=0;
    int sum1=0,sum2=0,sum3=0,sum4=0,sum5=0;//定义每种产品的销量和初始值为0
    int sumb[N]={0},c[R]={0};//数组a,b分别用来存放每种产品的销售总额,每个人的销售总额
    int b[R][N];//用来存放每人每种产品的销售总额
     if((fp=fopen("d:\\xiaoshou.txt","r+"))==NULL)
    {
        printf("The file open error!\n");
        exit(0);
    }
    rewind(fp);//重新使指针回到文件开头
    fscanf(fp,"序号\t销售员代号\t产品1\t产品2\t产品3\t产品4\t产品5");
    while(fscanf(fp,"%d%d%d%d%d%d%d",&a[k].xh,&a[k].dh,&a[k].n1,&a[k].n2,&a[k].n3,&a[k].n4,&a[k].n5)>0)
     k++;//统计便条数量
     if(fclose(fp))
     {
         printf("Can not close the file!\n");
         exit(0);
     }
     for(i=0;i<R;i++)
     {
         sum1=0;sum2=0;sum3=0;sum4=0;sum5=0;
       for(j=0;j<k;j++)
       {
             if(a[j].dh==(i+1))
             {
                 sum1+=a[j].n1;
            sum2+=a[j].n2;
            sum3+=a[j].n3;
            sum4+=a[j].n4;
            sum5+=a[j].n5;
             }
       }
      b[i][0]=sum1;
      b[i][1]=sum2;
      b[i][2]=sum3;
      b[i][3]=sum4;
      b[i][4]=sum5;
    }
    for(i=0;i<R;i++)
    {
        for(j=0;j<N;j++)
        {
            c[i]+=b[i][j];
        }
    }
    for(i=0;i<N;i++)
    {
        for(j=0;j<R;j++)
        {
            sumb[i]+=b[j][i];
        }
    }
    printf("*************************统计报表**************************\n");
    printf("-----------------------------------------------------------\n");
    printf("销售员代号\t产品1\t产品2\t产品3\t产品4\t产品5\n");
    printf("-----------------------------------------------------------\n");
    for(i=0;i<k;i++)
    printf("\t%d\t%d\t%d\t%d\t%d\t%d\n",a[i].dh,a[i].n1,a[i].n2,a[i].n3,a[i].n4,a[i].n5);
    printf("-----------------------------------------------------------\n\n");
    printf("********************每人每种产品总销售额*************************\n");
    printf("-----------------------------------------------------------------\n");
    printf("销售员代号\tsum1\tsum2\tsum3\tsum4\tsum5\t总额\n");
    printf("-----------------------------------------------------------------\n");
    for(i=0;i<R;i++)
    {
        printf("\t%d\t%d\t%d\t%d\t%d\t%d\t%d\n",(i+1),b[i][0],b[i][1],b[i][2],b[i][3],b[i][4],c[i]);
    }
    printf("-----------------------------------------------------------------\n");
    printf("销售总额");
    for(i=0;i<N;i++)
    printf("\t%d",sumb[i]);
    printf("\n");
    printf("-----------------------------------------------------------------\n");
    printf("统计报表输出成功,按任意键返回主菜单!");
    getch();
    system("cls");
}

void inquire() //查询函数
{
   int i,j,k=0,d;
   int x,y;//操作选项
   XS a[200];
   FILE *fp;
    if((fp=fopen("d:\\xiaoshou.txt","r+"))==NULL)
    {
        printf("The file open error!\n");
        exit(0);
    }
    rewind(fp);//重新使指针回到文件开头
    fscanf(fp,"序号\t销售员代号\t产品1\t产品2\t产品3\t产品4\t产品5");
    while(fscanf(fp,"%d%d%d%d%d%d%d",&a[k].xh,&a[k].dh,&a[k].n1,&a[k].n2,&a[k].n3,&a[k].n4,&a[k].n5)>0)
     k++;//统计便条数量
     if(fclose(fp))
     {
         printf("Can not close the file!\n");
         exit(0);
     }
     printf("请选择你要进行查询的方式:\n");
     printf("1.按销售员查询      2.按产品查询\n");
     scanf("%d",&d);
     switch(d)
     {
         case 1:  //按销售员查询
         printf("请输入你要查询的销售员代号:\n");
         printf("*1\n*2\n*3\n*4\n");
         scanf("%d",&x);
         printf("销售员%d号的销售情况如下:\n",x);
         printf("--------------------------------------\n");
         printf("产品1\t产品2\t产品3\t产品4\t产品5\n");
         printf("--------------------------------------\n");
         for(i=0;i<k;i++)
         {
             if(a[i].dh==x)
             printf("%d\t%d\t%d\t%d\t%d\n",a[i].n1,a[i].n2,a[i].n3,a[i].n4,a[i].n5);
         }
         printf("--------------------------------------\n");
         printf("输入成功,按任意键返回!\n");
         getch();
         system("cls");
         break;
         case 2: //按产品查询
         printf("请输入你要查询的产品代号:\n");
         printf("*1\n*2\n*3\n*4\n*5\n");
         scanf("%d",&y);
         printf("\n%d号产品的销售情况如下:\n",y);
         printf("--------------------------\n");
         printf("销售员代号\t销售额\n");
        printf("--------------------------\n");
         switch(y)
        {
            case 1:
            for(i=0;i<k;i++)
            printf("\t%d\t%d\n",a[i].dh,a[i].n1);
            break;
            case 2:
            for(i=0;i<k;i++)
            printf("\t%d\t%d\n",a[i].dh,a[i].n2);
            break;
               case 3:
            for(i=0;i<k;i++)
            printf("\t%d\t%d\n",a[i].dh,a[i].n3);
            break;
            case 4:
            for(i=0;i<k;i++)
            printf("\t%d\t%d\n",a[i].dh,a[i].n4);
            break;
            case 5:
            for(i=0;i<k;i++)
            printf("\t%d\t%d\n",a[i].dh,a[i].n5);
            break;
        }
        printf("--------------------------\n");
        printf("输出成功,按任意键返回主菜单!\n");
        getch();
         system("cls");
         break;
    }
}

void add_delete()
{
    FILE *fp;
    XS a[1000];
    int i,j,k=0;
    int x,y,m,n,r,t;//操作选项
    if((fp=fopen("d:\\xiaoshou.txt","r+"))==NULL)
    {
        printf("The file open error!\n");
        exit(0);
    }
    rewind(fp);//重新使指针回到文件开头
    fscanf(fp,"序号\t销售员代号\t产品1\t产品2\t产品3\t产品4\t产品5");
    while(fscanf(fp,"%d%d%d%d%d%d%d",&a[k].xh,&a[k].dh,&a[k].n1,&a[k].n2,&a[k].n3,&a[k].n4,&a[k].n5)>0)
     k++;//统计便条数量
     if(fclose(fp))
     {
         printf("Can not close the file!\n");
         exit(0);
     }
     printf("请选择你要进行的操作:\n");
     printf("1.增加便条  2.删减便条\n");
     scanf("%d",&x);
     if(x==1||x==2)
     {
         switch(x)
         {
             case 1:  //增加便条
             printf("请输入增加的便条数:\n");
             scanf("%d",&m);
             for(i=0;i<m;i++)
             {
                 printf("请选择增添位置(序号):\n");
                 scanf("%d",&n);
                 for(j=k;j>(n-1);j--)
                 {
                     a[j].dh=a[j-1].dh;
                     a[j].n1=a[j-1].n1;
                     a[j].n2=a[j-1].n2;
                     a[j].n3=a[j-1].n3;
                     a[j].n4=a[j-1].n4;
                     a[j].n5=a[j-1].n5;
                 }
                 printf("销售员代号\t产品1\t产品2\t产品3\t产品4\t产品5\n");
                 printf("---------------------------------------------------------------\n\t");
                 scanf("%d%d%d%d%d%d",&a[n-1].dh,&a[n-1].n1,&a[n-1].n2,&a[n-1].n3,&a[n-1].n4,&a[n-1].n5);
                 k++;
             }
             if((fp=fopen("d:\\xiaoshou.txt","w+"))==NULL)
                  {
                      printf("The file open error!\n");
                      exit(0);
                  }
                  fprintf(fp,"序号\t销售员代号\t产品1\t产品2\t产品3\t产品4\t产品5\n");
                  for(i=0;i<k;i++)
                  {
                      fprintf(fp,"%d\t\t%d\t%d\t%d\t%d\t%d\t%d\n",(i+1),a[i].dh,a[i].n1,a[i].n2,a[i].n3,a[i].n4,a[i].n5);
                  }
              if(fclose(fp))
              {
                  printf("Can not close the file!\n");
                  exit(0);
                }
                printf("添加成功,按任意键返回主菜单!\n");
                getch();
                system("cls");
                break;
             case 2:  //删除便条
               printf("请输入要删去的便条数:\n");
               scanf("%d",&r);
               for(i=0;i<r;i++)
               {
                    printf("请输入便条删除的位置(序号):\n");
                    scanf("%d",&t);
                    for(j=(t-1);j<k;j++)
                    {
                    a[j].dh=a[j+1].dh;
                   a[j].n1=a[j+1].n1;    
                   a[j].n2=a[j+1].n2;
                   a[j].n3=a[j+1].n3;
                   a[j].n4=a[j+1].n4;
                   a[j].n5=a[j+1].n5;
                 }
                 k--;
                  }
                  if((fp=fopen("d:\\xiaoshou.txt","w+"))==NULL)
                  {
                      printf("The file open error!\n");
                      exit(0);
                  }
                  fprintf(fp,"序号\t销售员代号\t产品1\t产品2\t产品3\t产品4\t产品5\n");
                  for(i=0;i<k;i++)
                  {
                      fprintf(fp,"%d\t\t%d\t%d\t%d\t%d\t%d\t%d\n",(i+1),a[i].dh,a[i].n1,a[i].n2,a[i].n3,a[i].n4,a[i].n5);
                  }
              if(fclose(fp))
              {
                  printf("Can not close the file!\n");
                  exit(0);
                }
                printf("删除成功,按任意键返回主菜单!\n");
                getch();
                system("cls");
                break;
                   
         }
    }
     else
    {
        printf("输入的数字错误,按任意键返回主菜单!\n");
        getch();
        system("cls");    
     }
}

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拾画F

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值