#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");
}
}