销售信息统计.docx
《销售信息统计.docx》由会员分享,可在线阅读,更多相关《销售信息统计.docx(16页珍藏版)》请在冰豆网上搜索。
销售信息统计
课程设计
学号
班级
姓名
指导教师
2007年09月14日
课程设计任务书
一、课程设计题目:
销售信息统计
二、课程设计工作自2007年9月10日起至2007年9月14日止
三、课程设计内容:
用C语言编写软件完成以下任务:
沈阳的某家建材商店去年7月的销售业绩清单存储在文件file28.txt,格式为:
售货员编号,售货员姓名,销售日期,销售额。
写程序,对文件的数据具有如下的统计分析功能:
1.能够按照所指定的售货员的编号,或者姓名,统计出他在7月的销售总额。
2.能够按照所指定的日期,统计出当日的销售总额。
四、课程设计要求:
1.程序质量:
●贯彻结构化程序设计思想。
●用户界面友好,功能明确,操作方便;可以加以其它功能或修饰。
●用户界面中的菜单至少应包括“读取数据”、“统计某售货员的销售总额”、“统计某天的销售总额”、“退出”4项。
●代码应适当缩进,并给出必要的注释,以增强程序的可读性。
2.课程设计说明书:
课程结束后,上交课程设计说明书(打印稿和电子稿),其内容如下:
●封面
●课程设计任务书
●目录
●需求分析(分析题目的要求)
●程序流程图(总体流程图和主要功能模块流程图)
●核心技术的实现说明及相应程序段
●个人总结
●参考资料
●源程序及适当的注释
指导教师:
________学生签名:
________
目录
一、需求分析1
二、程序流程图2
三、核心技术的实现说明及相应程序段7
四、个人总结13
五、参考文献13
六、源程序13
一、需求分析
经过对程序设计题目的分析可知,整个程序的设计实现大致分为五个模块,其中每一个模块对应一个函数,他们的功能分别是:
读取数据,按销售员姓名统计(xmtjyue),按销售员编号统计(bhtjyue),按日期统计(tjtian),显示出所有信息(show)。
每一个函数都是严格按照题目的要求。
后四项为编写该题目的主要步骤。
1、显示所有销售实现的是显示目前所有的销售信息。
2、按销售员姓名统计实现的功能是对所输入的姓名信息进行判断,然后对该名的销售额进行累加。
统计出该月该售货员的销售总额。
3、按销售员编号统计实现的功能是对所输入的编号信息进行判断,然后对该编号销售员的销售额进行累加。
统计出该编号售货员在该月的销售总额。
4、按日期统计实现的功能是对所输入的日期进行判断,然后对该日期的销售员的销售额进行累加。
统计出该日期的销售总额。
除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。
二、程序流程图
1、总体设计
While
(1)
真
输入值=1?
否
显示所有销售信息
真
输入值=2?
否
按销售员姓名统计
真
输入值=3?
否
按销售员编号统计
真
输入值=4?
否
按日统计
退出
图1.程序总体设计结构图
2、具体功能框图
(1)显示所有销售信息
inti
i=0;ixsh[i].money!
=0
是
否
Printf(“\n%s%s%s%d\n”
xsh[i].num,xsh[i].name,xsh[i].date,
Xsh[i].money);
图2.显示销售信息函数
(2)按销售员姓名统计
Read(stu,&n)
循环变量i=o;输入待报到的学生学号
当iStu[i]与nuber相等?
真
假
i>=n?
真
假
图3.按销售员姓名统计函数
(3)按销售员编号统计
charnum[5];inti,j=0,sum=0;
printf(“请输入你要查询的销售员的编号:
”)
scanf(“%s,num”)
i=0;istrcmp(temp.num,xsh[i].num)==0
是
否
sum=sum+xsh[i].money;
j=1
是j==0
否
printf(“无此销售员信息,请重新输入”)
printf(“该销售员在本月的销售额为:
”)
图4.按销售员编号统计函数
(4)按日期统计
chardate[16];inti,j=0,sum=0;
print(“请输入你要查询的日期:
”)
scanf(“%s”,temp.date)
i=0;istrcmp(temp.date,xsh[i].date)==0
是
否
sum=sum+xsh[i].money
j=1
j==0
是
否
printf(“无此日期销售信息,请重新输入”)
Printf(“今天的总销售额为:
”)
图5.按日期统计函数
三、核心技术的实现说明及相应程序段
本程序主要由四个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。
在这些函数当中,按销售员姓名统计,按销售员编号统计,按日期统计是程序中较为核心的部分,下面分别进行说明。
(1)定义一个数字变量“i”,数字变量对应的是下面的switch函数。
对应的“i”。
会执会相应的子函数。
main()
{inti;
while
(1)
{printf("**********************************某建材厂七月销售信息统计系统*******************\n");/*用户界面*/
printf("**********************************1.七月销售情况列表******************************\n");
printf("**********************************2.按销售员姓名统计销售信息**********************\n");
printf("**********************************3.按销售员编号统计销售信息**********************\n");
printf("**********************************4.按日期统计销售信息****************************\n");
printf("**********************************5.退出******************************************\n");printf("\n请输入目录中的数据:
");
scanf("%d",&i);
switch(i)
{case1:
show();break;
case2:
xmtjyue();break;
case3:
bhtjyue();break;
case4:
tjtian();break;
case5:
exit(0);break;
default:
printf("数据错误,请重新输入\n");
}
}
}
(2)根据售货员的姓名查询该人员在该月的销售总额,若输入的编号不在数据库中则显示"无此销售员信息,请重新输入"。
voidxmtjyue()/*统计某销售员7月销售总额函数*/
{structxiaoshouxsh[N],temp;
intsum=0;
FILE*fp;
inti,j;
j=0;
if((fp=fopen("E:
\\file28.txt","r+"))==NULL)
{printf("读取错误,不能打开该文件!
!
\n");
return;
}
else
for(i=0;ifscanf(fp,"%s%s%s%d",&xsh[i].num,&xsh[i].name,&xsh[i].date,&xsh[i].money);
printf("请输入你要查询的销售员的姓名:
\n");
scanf("%s",temp.name);
for(i=0;iif(strcmp(temp.name,xsh[i].name)==0)
{sum=sum+xsh[i].money;j=1;}
if(j==0)
printf("无此销售员信息,请重新输入");
else
printf("该销售员在本月的销售额为:
%d\n",sum);
fclose(fp);
}
(3)根据售货员的编号查询该人员在该月的销售总额,若输入的编号不在数据库中则显示"无此销售员信息,请重新输入"。
voidbhtjyue()
{structxiaoshouxsh[N],temp;
intsum=0;
FILE*fp;
inti,j;
j=0;
if((fp=fopen("E:
\\file28.txt","r+"))==NULL)
{printf("读取错误,不能打开该文件!
\n");
return;
}
else
for(i=0;ifscanf(fp,"%s%s%s%d",&xsh[i].num,&xsh[i].name,&xsh[i].date,&xsh[i].money);/*把文件信息读到结构体变量中去*/
printf("请输入你要查询的销售员的编号:
\n");/*输入要查询的销售员编号*/
scanf("%s",temp.num);
for(i=0;iif(strcmp(temp.num,xsh[i].num)==0)
{sum=sum+xsh[i].money;/*对符合要求的进行加*/
j=1;}
if(j==0)
printf("无此销售员信息,请重新输入");
else
printf("该销售员在本月的销售额为:
%d\n",sum);
fclose(fp);
}
(4)根据日期查询该人员在该月的销售总额,若输入的日期不在数据库中则显示“无此日期销售信息,请重新输入"。
voidtjtian()
{
structxiaoshouxsh[N],temp;
intsum=0;
FILE*fp;
inti,j;
j=0;
if((fp=fopen("E:
\\file28.txt","r"))==NULL)
{printf("读取错误,不能打开该文件!
!
\n");
return;
}
else
for(i=0;ifscanf(fp,"%d%s%s%d",&xsh[i].num,xsh[i].name,&xsh[i].date,&xsh[i].money);
printf("请输入你要查询的日期:
\n");
scanf("%s",temp.date);
for(i=0;iif(strcmp(temp.date,xsh[i].date)==0)
{sum=sum+xsh[i].money;j=1;}
if(j==0)
printf("无此日期销售信息,请重新输入");
else
printf("今天的总销售额为:
%d\n",sum);
fclose(fp);
}
四、个人总结
近一周的课程设计,使我对C语言这门课程有了进一步的认识和了解,也让我明白一个道理,有时做事应该多讲究合作精神,这样你会发现一切都会变的很容易理解,就像在这次课设中,在开始的时候我不知所措,但在一段长时间思考过后我没有在继续这么做,而是去和同学讨论,这样不但使他们让我明白了,我所不懂的,而且也让我了解了,同学之间的合作是多么重要,课设不仅让我学习到更多的知识,也学到更多的人生道理,我希望以后还有机会进行这样的学习活动。
五、参考文献
1谭浩强.C程序设计.北京:
清华大学出版社,2005
2刘成等.C语言程序设计实验指导与习题集.北京:
中国铁道出版社,2006
六、源程序
#include
#defineN20
#include
#include
structxiaoshou/*定义结构体变量*/
{
charnum[5];
charname[16];
chardate[16];
intmoney;
}xsh[N];
voidxmtjyue();
voidbhtjyue();
voidtjtian();
voidshow();
voidmain()
{inti;
while
(1)
{printf("**********************************某建材厂七月销售信息统计系统*******************\n");/*用户界面*/
printf("**********************************1.七月销售情况列表******************************\n");
printf("**********************************2.按销售员姓名统计销售信息**********************\n");
printf("**********************************3.按销售员编号统计销售信息**********************\n");
printf("**********************************4.按日期统计销售信息****************************\n");
printf("**********************************5.退出******************************************\n");
printf("\n请输入目录中的数据:
");
scanf("%d",&i);
switch(i)
{case1:
show();break;
case2:
xmtjyue();break;
case3:
bhtjyue();break;
case4:
tjtian();break;
case5:
exit(0);break;
default:
printf("数据错误,请重新输入\n");
}
}
}
voidshow()/*展示销售信息函数*/
{structxiaoshouxsh[N];
FILE*fp;
inti=0;
if((fp=fopen("E:
\\file28.txt","r"))==NULL)/*打开文件*/
{printf("读取错误,不能打开该文件!
!
\n");
return;
}
printf("所有信息如下:
\n");
for(i=0;i{fscanf(fp,"%s%s%s%d",&xsh[i].num,xsh[i].name,xsh[i].date,&xsh[i].money);/*把文件信息读到结构体变量中去*/
printf("\n%s%s%s%d\n",xsh[i].num,xsh[i].name,xsh[i].date,xsh[i].money);/*输出结构体
变量中信息*/
}
fclose(fp);
}
voidxmtjyue()/*统计某销售员7月销售总额函数*/
{structxiaoshouxsh[N],temp;
intsum=0;
FILE*fp;
inti,j;
j=0;
if((fp=fopen("E:
\\file28.txt","r+"))==NULL)/*打开文件*/
{printf("读取错误,不能打开该文件!
!
\n");
return;
}
else
for(i=0;ifscanf(fp,"%s%s%s%d",&xsh[i].num,&xsh[i].name,&xsh[i].date,&xsh[i].money);/*把文件信息读到结构体变量中去*/
printf("请输入你要查询的销售员的姓名:
\n");/*输入要查询的销售员姓名*/
scanf("%s",temp.name);
for(i=0;iif(strcmp(temp.name,xsh[i].name)==0)
{sum=sum+xsh[i].money;/*对符合要求的进行加*/
j=1;}
if(j==0)
printf("无此销售员信息,请重新输入");
else
printf("该销售员在本月的销售额为:
%d\n",sum);
fclose(fp);
}
voidbhtjyue()/*统计某销售员7月销售总额函数*/
{structxiaoshouxsh[N],temp;
intsum=0;
FILE*fp;
inti,j;
i=0;j=0;
if((fp=fopen("E:
\\file28.txt","r+"))==NULL)/*打开文件*/
{printf("读取错误,不能打开该文件!
\n");
return;
}
else
for(i=0;ifscanf(fp,"%s%s%s%d",&xsh[i].num,&xsh[i].name,&xsh[i].date,&xsh[i].money);/*把文件信息读到结构体变量中去*/
printf("请输入你要查询的销售员的编号:
\n");/*输入要查询的销售员编号*/
scanf("%s",temp.num);
for(i=0;iif(strcmp(temp.num,xsh[i].num)==0)
{sum=sum+xsh[i].money;/*对符合要求的进行加*/
j=1;}
if(j==0)
printf("无此销售员信息,请重新输入");
else
printf("该销售员在本月的销售额为:
%d\n",sum);
fclose(fp);
}
voidtjtian()/*统计某一天的销售总额函数*/
{
structxiaoshouxsh[N],temp;
intsum=0;
FILE*fp;
inti,j;
j=0;
if((fp=fopen("E:
\\file28.txt","r"))==NULL)/*打开文件*/
{printf("读取错误,不能打开该文件!
!
\n");
return;
}
else
for(i=0;ifscanf(fp,"%d%s%s%d",&xsh[i].num,xsh[i].name,&xsh[i].date,&xsh[i].money);/*把文件信息读到结构体变量中去*/
printf("请输入你要查询的日期:
\n");/*输入要查询的日期*/
scanf("%s",temp.date);
for(i=0;iif(strcmp(temp.date,xsh[i].date)==0)
{sum=sum+xsh[i].money;/*对符合要求的进行加*/
j=1;}
if(j==0)
printf("无此日期销售信息,请重新输入");
else
printf("今天的总销售额为:
%d\n",sum);
fclose(fp);
}