| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2454 人关注过本帖
标题:急求一个c语言小程序。
只看楼主 加入收藏
piratexjz
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-6-27
收藏
 问题点数:0 回复次数:11 
急求一个c语言小程序。

我们做课件,期末考试要。谁能帮帮忙呀?如果你来重庆,我请客。非常感谢呀
联系邮箱: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编辑过]

搜索更多相关主题的帖子: c语言 重庆 销售员 
2007-06-27 12:18
piratexjz
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-6-27
收藏
得分:0 
帮帮忙呀
2007-06-27 12:19
piratexjz
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-6-27
收藏
得分:0 
没得人理呀?
2007-06-27 12:22
a307871404
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2007-6-19
收藏
得分:0 

看不懂


我让我喜欢的人不开心     真没用
2007-06-27 15:27
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
收藏
得分:0 
这也叫`````小`````问题````?


女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2007-06-27 15:30
lishizelibin
Rank: 2
等 级:论坛游民
帖 子:513
专家分:41
注 册:2007-5-10
收藏
得分:0 
看来我的头发都快没了

惟有学习不断的学习!
2007-06-27 15:31
dthm
Rank: 1
等 级:新手上路
帖 子:126
专家分:0
注 册:2006-11-25
收藏
得分:0 
看得我头都晕了~~~
2007-06-27 16:01
三笔
Rank: 1
等 级:新手上路
帖 子:74
专家分:0
注 册:2007-6-12
收藏
得分:0 
变量名字 取的要有 意义
别人才看的懂
2007-06-27 16:37
yinlenc
Rank: 1
等 级:新手上路
帖 子:147
专家分:0
注 册:2007-5-17
收藏
得分:0 
可以编译,但不能执行

2007-06-27 22:47
gospark
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2007-6-1
收藏
得分:0 

这个程序没什么错误,只是编译器不同。以下的程序在VC++中可以运行成功:
#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;
system("cls"); /*清屏*/
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;
system("cls"); /*清屏*/
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;
system("cls"); /*清屏*/
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;
system("cls"); /*清屏*/
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");
getchar();
}
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];/*定义两个数组*/
system("cls"); /*清屏*/
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.......");
getchar();
}
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;}}
system("cls"); /*清屏*/
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");
getchar();}
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];
system("cls"); ;
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.......");
getchar();
}
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......");
getchar();
}
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");
getchar();
}

软硬结合才是发展之路~~~
2007-06-28 01:12
快速回复:急求一个c语言小程序。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019083 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved