大家都来看下:功能为什么不能完全实现?

空心兜兜 2007-07-05 05:53:19
/* This program is designed by ********* 2007

TC 2.0开发

我们假设这个商店有四个销售员,他们分别负责五种产品(销售员编号1-4,产品编号1-5)。每个销售员都将当天出售的每种商品单独做个记录。
该记录包括:
(1)销售代号;
(2)产品代号;
(3)该产品当天的销售额;
每个销售员每天可能上缴0-5张便条。
假设,每天记录到电脑。编写一个销售系统,读取上个月的销售情况(自己设定)进行如下处理:
(1)计算上个月每个人每种产品的销售额;
(2)按销售额对销售员进行排序,输出排序结果(销售代号);
(3)统计每种产品的总销售额,对这些产品按从高到低的顺序输出排序 结果(需输出产品的代号和销售额);


(4)输出一个统计报表如下:
产品代号 销售之和
销售员代号 1 2 3 4 5
1
2
3
4
每种产品之和 总和

*/
#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();
}
















8个选择,发现功能实现很差,请大家帮忙找下…………
...全文
257 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Inhibitory 2007-07-06
  • 打赏
  • 举报
回复
因为你没有写完,所以功能不能完全实现.
签定完毕
空心兜兜 2007-07-05
  • 打赏
  • 举报
回复
没编译错误
但是大家测试下功能吧,好多没实现的…………

大家帮忙修下好吗?
micro0807 2007-07-05
  • 打赏
  • 举报
回复
你的好多个for循环都没有加括号,很容易出现逻辑错误,编译程序不能发现逻辑错误,你的功能恐怕大部分都没实现吧.另外程序的健壮性不太好,几乎没有容错处理,建议在实用每个假设的参数之前加上assert.
fengdream 2007-07-05
  • 打赏
  • 举报
回复
还可以,没有什么错误
bargio_susie 2007-07-05
  • 打赏
  • 举报
回复
好长,楼下的上。。。
expter 2007-07-05
  • 打赏
  • 举报
回复
?

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧