销售信息统计.docx
- 文档编号:16744008
- 上传时间:2023-07-17
- 格式:DOCX
- 页数:19
- 大小:154.23KB
销售信息统计.docx
《销售信息统计.docx》由会员分享,可在线阅读,更多相关《销售信息统计.docx(19页珍藏版)》请在冰点文库上搜索。
销售信息统计
沈阳航空工业学院
课程设计
学号__________
班级__________
姓名__________
指导教师___尹航___
2009年9月11日
沈阳航空工业学院
课程设计任务书
电子信息工程学院电子信息工程专业84020103班学号2008040201089
一、课程设计题目:
销售信息统计
二、课程设计工作自2009年9月7日起至2009年9月11日止
三、课程设计内容:
用C语言编写软件完成以下任务:
沈阳的某商店今年8月的销售业绩清单存储在文件file02.txt(由教师提供)中,格式为:
售货员编号,售货员姓名,销售日期,销售额。
写程序,对文件中的数据具有如下的统计分析功能:
(1)统计出所有售货员在8月的销售总额,并按照销售总额排序显示。
(2)能够按照所指定的日期,统计出当日的销售总额。
四、课程设计要求:
程序质量:
1.贯彻结构化程序设计思想。
2.用户界面友好,功能明确,操作方便;可以加以其它功能或修饰。
3.用户界面中的菜单至少应包括“读取数据”、“统计售货员的销售总额”、“统计某天的销售总额”、“退出”4项。
4.代码应适当缩进,并给出必要的注释,以增强程序的可读性。
课程设计说明书:
课程结束后,上交课程设计说明书(打印稿和电子稿),其内容如下:
●封面
●课程设计任务书
●目录
●需求分析(分析题目的要求)
●程序流程图(总体流程图和主要功能模块流程图)
●核心技术的实现说明及相应程序段
●个人总结
●参考资料
●源程序及适当的注释
指导教师:
___学生签名:
__
五、成绩:
六、教师评语:
目录
一、需求分析1
二、程序流程图2
三、核心技术的实现说明及相应程序段6
四、个人总结11
五、参考文献11
六、源程序11
一、需求分析
经过对程序设计题目的分析可知,整个程序的设计实现大致分为四个模块,其中每一个模块对应一个函数,它们的功能分别是:
读取数据,按每个销售员的销售总额排序,按日期统计,以及显示所有。
1、读取数据主要实现程序最初运行时各销售员信息的录入,数据来自由老师提供的file02.txt文件。
2、按降序输出所有销售员在八月的销售总额该模块实现的是将某商店各销售员今年八月的销售总额统计出来,并将销售总额按降序输出。
3、按日期统计该模块的功能是按照所指定的日期统计出当日的销售总额。
除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。
每一个销售员的信息都包括编号、姓名、日期以及销售额四项内容,在程序当中,将销售员信息类型定义为结构体类型,函数每次对销售员信息的访问,其根据来源都是在老师提供的file02.txt文件中。
二、程序流程图
1、程序总体
流程图
图一
2、具体功能框图
(1)文件的读取
图二
(2)销售总额的统计与总额的排序
(接下一页)
图三
(3)按日期统计函数
图四
三、核心技术的实现说明及相应程序段
本程序主要由三个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。
在这些函数当中,统计所有销售员八月的销售总额并按降序输出和按日期统计当天的销售总额是程序中较为核心的部分,下面分别进行说明。
(1)显示主函数及目录
#include
#defineN20
#include
#include
#include
structxiaoshou/*定义结构体变量*/
{
charnum[5];
charname[16];
chardate[16];
intmoney;
}xsh[N];
voidbhtjyue();
voidtjtian();
voidshow();
voidmain()
{intn;
printf("*************************某商店八月销售信息统计系统*************************\n");/*用户界面*/
printf("**********************************1.退出************************************\n");
printf("*****************************2.八月销售情况列表*******************************\n");
printf("*************************3.统计所有销售员八月的销售总额并按降序输出***************************\n");
printf("*************************4.按日期统计当日销售信息***************************\n");
while
(1)
{
voidmenu();
printf("\n请输入目录中的数据:
");
scanf("%d",&n);
switch(n)
{case1:
exit(0);break;
case2:
show();break;
case3:
bhtjyue();break;
case4:
tjtian();break;
default:
printf("数据错误,请重新输入\n");
}
}
(2)根据售货员的编号统计所有销售员在该月的销售总额,如果二者编号相同,则将其金额累加;若不同,则将其编号累加,进行下一次比较,就这样进行,最后将所有销售员的销售总额输出。
具体的程序段如下:
for(i=0;i {ip=0; for(k=0;k if(strcmp(temp[k].num,xsh[i].num)==0) {ip=1; temp[k].money+=xsh[i].money; break; } if(ip==0) temp[j++]=xsh[i]; } for(i=0;i<8;i++) printf("\n%s\t%s\t%d\n",temp[i].num,temp[i].name,temp[i].money); printf("******************************\n"); 对于所有销售员销售总额的排序采用的是冒泡法排序,这部分排序过程在结构体数组temp[N]中实现,由于排序算法涉及到两个数组元素的信息交换,因此还需要定义一个中间变量来协助。 具体的程序段如下: for(i=0;i<7;i++)/*采用冒泡法对所有销售员八月销售总额进行排序*/ { for(j=0;j<7-i;j++) { if(temp[j].money { t.money=temp[j].money; temp[j].money=temp[j+1].money; temp[j+1].money=t.money; strcpy(t.name,temp[j].name); strcpy(temp[j].name,temp[j+1].name); strcpy(temp[j+1].name,t.name); strcpy(t.num,temp[j].num); strcpy(temp[j].num,temp[j+1].num); strcpy(temp[j+1].num,t.num); } } } for(i=0;i<8;i++) printf("\n%s\t%s\t%d\n",temp[i].num,temp[i].name,temp[i].money); printf("******************************\n"); (3)根据日期查询当天的销售总额,若输入的日期不在数据库中则显示“无此日期记录"。 voidtjtian()/*统计某一天的销售总额函数*/ { structxiaoshouxsh[N],temp; intsum=0; FILE*fp; inti,j; j=0; if((fp=fopen("file02.txt","r"))==NULL)/*打开文件*/ {printf("读取错误,不能打开该文件! ! \n"); return; } else for(i=0;i fscanf(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;i if(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); 四、个人总结 课设过程是理论应用于实践的过程,通过这次课设,我发现自己在知识掌握方面有很多漏洞,所以在我的程序编写过程中遇到了很多阻碍。 在今后的学习过程中,我要注重夯实基础,吃透教材,注重深入理解、及时消化老师所讲的知识点。 只有这样,才能真正学明白,才能将老师传授的知识真正变成自己的,才能够在需要时灵活运用。 五、参考文献 1姚合生等.C语言程序设计.北京: 清华大学出版社,2008.9 2刘成等.C语言程序设计实验指导与习题集.北京: 中国铁道出版社,2006 六、源程序 #include #defineN20 #include #include #include structxiaoshou/*定义结构体变量*/ { charnum[5]; charname[10]; chardate[11]; intmoney; }xsh[N]; voidbhtjyue(); voidtjtian(); voidshow(); voidmain() {intn; printf("*************************某商店八月销售信息统计系统*************************\n");/*用户界面*/ printf("**********************************1.退出************************************\n"); printf("*****************************2.八月销售情况列表*******************************\n"); printf("*****************3.统计所有销售员八月的销售总额并按降序输出*******************\n"); printf("*************************4.按日期统计销售信息***************************\n"); while (1) { voidmenu(); printf("\n请输入目录中的数据: "); scanf("%d",&n); switch(n) {case1: exit(0);break; case2: show();break; case3: bhtjyue();break; case4: tjtian();break; default: printf("数据错误,请重新输入\n"); } } } voidshow()/*展示销售信息函数*/ { structxiaoshouxsh[N]; FILE*fp; inti=0; if((fp=fopen("file02.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); } voidbhtjyue()/*统计某销售员8月销售总额函数*/ {structxiaoshouxsh[N],temp[N],t; FILE*fp; inti,j,k,ip=0; j=0; if((fp=fopen("file02.txt","r+"))==NULL)/*打开文件*/ {printf("读取错误,不能打开该文件! \n"); exit(0); } for(i=0;i { fscanf(fp,"%s%s%s%d",xsh[i].num,xsh[i].name,xsh[i].date, &xsh[i].money);/*把文件信息读到结构体变量中去*/ } for(i=0;i printf("\n%s\t%s\t%d\n",xsh[i].num,xsh[i].name,xsh[i].money); printf("******************************\n"); for(i=0;i {ip=0; for(k=0;k if(strcmp(temp[k].num,xsh[i].num)==0) {ip=1; temp[k].money+=xsh[i].money; break; } if(ip==0) temp[j++]=xsh[i]; } for(i=0;i<8;i++) printf("\n%s\t%s\t%d\n",temp[i].num,temp[i].name,temp[i].money); printf("******************************\n"); for(i=0;i<7;i++)/*采用冒泡法对所有销售员八月销售总额进行排序*/ { for(j=0;j<7-i;j++) { if(temp[j].money { t.money=temp[j].money; temp[j].money=temp[j+1].money; temp[j+1].money=t.money; strcpy(t.name,temp[j].name); strcpy(temp[j].name,temp[j+1].name); strcpy(temp[j+1].name,t.name); strcpy(t.num,temp[j].num); strcpy(temp[j].num,temp[j+1].num); strcpy(temp[j+1].num,t.num); } } } for(i=0;i<8;i++) printf("\n%s\t%s\t%d\n",temp[i].num,temp[i].name,temp[i].money); printf("******************************\n"); fclose(fp); } voidtjtian()/*统计某一天的销售总额函数*/ { structxiaoshouxsh[N],temp; intsum=0; FILE*fp; inti,j; j=0; if((fp=fopen("file02.txt","r"))==NULL)/*打开文件*/ {printf("读取错误,不能打开该文件! ! \n"); return; } else for(i=0;i fscanf(fp,"%s%s%s%d",xsh[i].num,xsh[i].name,xsh[i].date,&xsh[i].money);/*把文件信息读到结构体变量中去*/ printf("请输入你要查询的日期: \n");/*输入要查询的日期*/ scanf("%s",temp.date); for(i=0;i if(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); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 销售 信息 统计
![提示](https://static.bingdoc.com/images/bang_tan.gif)