首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-02-23 
大家都来看下:功能为什么不能完全实现?/*Thisprogramisdesignedby*********2007TC2.0开发我们假设这个商店

大家都来看下:功能为什么不能完全实现?
/*         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个选择,发现功能实现很差,请大家帮忙找下…………


[解决办法]
好长,楼下的上。。。
[解决办法]
还可以,没有什么错误
[解决办法]
你的好多个for循环都没有加括号,很容易出现逻辑错误,编译程序不能发现逻辑错误,你的功能恐怕大部分都没实现吧.另外程序的健壮性不太好,几乎没有容错处理,建议在实用每个假设的参数之前加上assert.

热点排行