我们做课件,期末考试要。谁能帮帮忙呀?如果你来重庆,我请客。非常感谢呀
联系邮箱:piratexjz@126.com
QQ:405719713
销售统计问题:
我们假设这个便利店有四个销售员,他们分别负责五种产品(销售员编号1-4,产品编号1-5)。每个销售员都将当天出售的每种商品单独做个记录。
该记录包括:
(1)销售代号;
(2)产品代号;
(3)该产品当天的销售额;
每个销售员每天可能上缴0-5张便条。
假设,每天记录到电脑。编写一个销售系统,读取上个月的销售情况(自己设定)进行如下处理:
(1)计算上个月每个人每种产品的销售额;
(2)按销售额对销售员进行排序,输出排序结果(销售代号);
(3)统计每种产品的总销售额,对这些产品按从高到低的顺序输出排序 结果(需输出产品的代号和销售额);
(4)输出一个统计报表如下:
产品代号 销售之和
销售员代号 1 2 3 4 5
1
2
3
4
每种产品之和 总和
看到cao123在http://bbs.bc-cn.net/viewthread.php?tid=140944发过类似的问题了,没回复。
下面这个错误很多,请帮忙改一改也好呀
#include "stdio.h"/*输入输出函数*/
#include "stdlib.h"/*通用应用程序函数*/
#include "string.h"/*字符串函数*/
#include "ctype.h"/*字符操作函数*/
typedef struct /*定义结构体变量*/
{int name;
int a1;
int a2;
int a3;
int a4;
int a5;
}RECODE;
int menu_select();/*声明函数*/
int enter(RECODE t[]);/*声明函数*/
void worker(RECODE t[],int n);/*声明函数*/
int sum(RECODE t[],int n,int m);/*声明函数*/
void list1(RECODE t[],int n);/*声明函数*/
void list2(RECODE t[],int n);/*声明函数*/
void list3(RECODE t[],int n);/*声明函数*/
void save(RECODE t[],int n);/*声明函数*/
int load(RECODE t[]);/*声明函数*/
main()/*主函数*/
{int i;
RECODE rec[600];
int length;
clrscr();/*清屏*/
for( ; ; )/*无限循环*/
{switch(menu_select())/*根据用户的选择判断该调用哪个功能函数*/
{case 0:length=enter(rec);break;
case 1:worker(rec,length);break;
case 2:list1(rec,length);break;
case 3:list2(rec,length);break;
case 4:list3(rec,length);break;
case 5:save(rec,length);break;
case 6:length=load(rec);break;
case 7:exit(0);}}
}
int menu_select()/*菜单函数*/
{int n;
clrscr();/*清屏*/
printf("--------------------------------menu------------------------------\n\n");
printf(" 0 enter the record\n");
printf(" 1 saling num each person per month\n");
printf(" 2 the sequence of people due to saling number\n");
printf(" 3 sum of every product\n");
printf(" 4 the list of recodes\n");
printf(" 5 save the file\n");
printf(" 6 load the file\n");
printf(" 7 quit\n");
printf("---------------------------------end---------------------------\n\n");
printf(" please input your choice: ");
scanf("%d",&n);
return n;}
int enter(RECODE t[])/*清单输入函数*/
{int i,num;
clrscr();/*清屏*/
printf("please input the num of recode:");
scanf("%d",&num);/*输入所要写入的清单的条数*/
printf("name product1 product2 product3 product4 product5");
for(i=0;i<num;i++)/*将所输入的条数存入结构体数组中*/
{printf("\n\n----------------------------------------------------------------\n");
scanf("%d%d%d%d%d%d",&t[i].name,&t[i].a1,&t[i].a2,&t[i].a3,&t[i].a4,&t[i].a5);
}
printf("\n----------------------------------------------------------------------\n\n\n");
return i;
}
void worker(RECODE t[],int n)
{int i,s;
int b1=0,b2=0,b3=0,b4=0,b5=0;
clrscr();/*清屏*/
printf("please input the code of salor:");
scanf("%d",&s);/*输入所要查看的售货员的代号*/
for(i=0;i<n;i++)/*对每种产品的销售额求和*/
if(s==t[i].name)
{b1+=t[i].a1;
b2+=t[i].a2;
b3+=t[i].a3;
b4+=t[i].a4;
b5+=t[i].a5;}
printf("name product1 product2 product3 product4 product5");
printf("\n--------------------------------------------------------------------------\n");
printf("%-15d%-10d%-10d%-7d%-7d%-7d",s,b1,b2,b3,b4,b5);
printf("\n\ninput any key to continue.......\n\n");
getch();
}
int sum(RECODE t[],int n, int e)
{int i,sum=0;
for(i=0;i<n;i++)/*求销售产品的总和*/
if(e==t[i].name)
{sum+=t[i].a1;
sum+=t[i].a2;
sum+=t[i].a3;
sum+=t[i].a4;
sum+=t[i].a5;
}
return sum;}
void list1 (RECODE t[],int n)
{int i,j,s;
int c[4],m[4];/*定义两个数组*/
clrscr();/*清屏*/
for(i=0;i<4;i++)
m[i]=i+1;
for(i=0;i<4;i++)
c[i]=sum(t,n,m[i]);
for(i=0;i<4;i++)/*按销售员的销售额进行排序*/
for(j=i+1;j<4;j++)
if(c[i]<c[j])
{s=m[i];
m[i]=m[j];
m[j]=s;
s=c[i];
c[i]=c[j];
c[j]=s;}
printf("the sequce of salor*saling number from many to few*\n");
for(i=0;i<4;i++)/*输出销售员代号*/
printf("%d\n",m[i]);
printf("press any key to continue.......");
getch();
}
void list2(RECODE t[],int n)
{int i,j,s;
int c[5],m[5];
for(i=0;i<5;i++)/*产品代号*/
m[i]=i+1;
for(i=0;i<5;i++)/*给数组赋初值*/
c[i]=0;
for(i=0;i<n;i++)/*分别对每一种产品的销售额求总和*/
for(j=0;j<5;j++)
{if(m[j]==t[i].a1)
c[j]+=t[i].a1;
if(m[j]==t[i].a2)
c[j]+=t[i].a2;
if(m[j]==t[i].a3)
c[j]+=t[i].a4;
if(m[j]==t[i].a5)
c[j]+=t[i].a5;}
for(i=0;i<5;i++)/*按销售额对产品排序*/
for(j=i+1;j<5;j++)
{if(c[i]<c[j])
{s=c[i];c[i]=c[j];
c[j]=s;
s=m[i];m[i]=m[j];
m[j]=s;}}
clrscr();/*清屏*/
printf("product num");
for(i=0;i<5;i++)/*输出产品的代号和销售额*/
printf("%-10d%-10d\n",m[i],c[i]);
printf("please input any key to continue ......\n");
getch();}
void list3(RECODE t[],int n)
{int i,j,sum0=0,sum1=0,sum2=0,sum3=0,sum4=0,sum5=0;
int c[4],b1[4],b2[4],b3[4],b4[4],b5[4];
clrscr();
for(i=0;i<4;i++)
c[i]=sum(t,n,i+1);/*求每个人的总销售额*/
for(i=0;i<4;i++)
sum0+=c[i];/*所有产品的销售额*/
for(i=0;i<n;i++)/*求每个人每种产品的总销售额*/
for(j=0;j<4;j++)
{ if(j+1==t[i].name)
{b1[j]+=t[i].a1;
b2[j]+=t[i].a2;
b3[j]+=t[i].a3;
b4[j]+=t[i].a4;
b5[j]+=t[i].a5;
}}
for(i=0;i<4;i++)/*每种产品的总销售额*/
{sum1+=b1[i];
sum2+=b2[i];
sum3+=b3[i];
sum4+=b4[i];
sum5+=b5[i];
}
printf("-------------------------the lise of saling recode----------------------\n\n\n");
printf(" products saling num\n");
printf("salor code 1 2 3 4 5\n");
for(i=0;i<4;i++)
printf("%-10d%-7d%-7d%-7d%-7d%-7d%-7d\n",i+1,b1[i],b2[i],b3[i],b4[i],b5[i],c[i]);
printf("each product sum %-7d%-7d%-7d%-7d%-7d%-7d",sum1,sum2,sum3,sum4,sum5,sum0);
printf("input any key to continue.......");
getch();
}
void save(RECODE t[],int n)
{
int i;
FILE *fp;/*调用fopen函数*/
if((fp=fopen("record.txt","wb"))==NULL)/*如果函数带回一个空指针值*/
{
printf("can not open file\n");/*不能打开文件*/
exit(1);
}
printf("\nSaving file\n");
fprintf(fp,"%d",n);
fprintf(fp,"\r\n");
for(i=0;i<n;i++)
{
fprintf(fp,"%-10d%-7d%-7d%-7d%-7d%-7d",t[i].name,t[i].a1,t[i].a2,t[i].a3,t[i].a4,t[i].a5);/*将便条的信息输出到fp指向的文件上*/
fprintf(fp,"\r\n");
}
fclose(fp);/*关闭文件*/
printf("****save success***\n\n");/*显示保存成功*/
printf("press any key to continue......");
getch();
}
int load(RECODE t[])
{
int i,n;
FILE *fp;
if((fp=fopen("record.txt","rb"))==NULL)/*如果函数带回一个空指针值*/
{
printf("can not open file\n");/*不能打开文件*/
exit(1);
}
fscanf(fp,"%d",&n);
for(i=0;i<n;i++)
fscanf(fp,"%10d%7d%7d%7d%7d%7d",t[i].name,t[i].a1,t[i].a2,t[i].a3,t[i].a4,t[i].a5);/*从fp指向的文件上读入便条信息*/
fclose(fp);
printf("You have success read data from file!!!\n");/*成功读入信息*/
return n;
printf("press any key to continue......\n\n");
getch();
}
[此贴子已经被作者于2007-6-27 12:33:36编辑过]