C语言程序设计-销售管理系统.docx

上传人:scccc 文档编号:14767278 上传时间:2022-02-17 格式:DOCX 页数:32 大小:103.36KB
返回 下载 相关 举报
C语言程序设计-销售管理系统.docx_第1页
第1页 / 共32页
C语言程序设计-销售管理系统.docx_第2页
第2页 / 共32页
C语言程序设计-销售管理系统.docx_第3页
第3页 / 共32页
C语言程序设计-销售管理系统.docx_第4页
第4页 / 共32页
C语言程序设计-销售管理系统.docx_第5页
第5页 / 共32页
亲,该文档总共32页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《C语言程序设计-销售管理系统.docx》由会员分享,可在线阅读,更多相关《C语言程序设计-销售管理系统.docx(32页珍藏版)》请在三一文库上搜索。

1、C语言程序设计-销售管理系统作者: 日期:个人收集整理,勿做商业用途销售信息管理系统设计文档组号:第二组成员:汪品咼齐瑞智欧阳鑫赵飞锋章森目录题目与要求二.功能实现设计(模块化设计)5个人收集整理,勿做商业用途三.运行结果(附带抓图)四.源程序报告正文目与要求:2、某公司有四个销售员(编号:1-4),负责销售五种产品(编号:1-5)。 每个销售员汇总当天出售的每种产品的销售情况。2每天销售情况包括(销售员的代号、产品的代号、这种产品当天的销售额)1、编写一个销售信息管理系统,读取上个月的销售情况1、计算上个月没人每种产品的销售额2、按销售额对销售员进行排序,输出排序结果(销售员代号)3、统计每

2、种产品的总销售额,对这些产品从高到低的顺序输出结果(须 输出产品的代号和销售额)4、输出统计报表2、需求分析本程序将用到文件系统E:/5432l.doc文件内容作为数据源,其中单行内容代 表一张纸条。程序运行后首先将文件系统的原始数据读取并保存到程序的结构体 数组当中,所以应提供文件输入的操作;山于纸条数据零散,所以要对原始数据 进行分类操作并提供一个数组用于保存分类信息;在程序中要进行统计工作,所 以要提供显示、排序等操作;另外应提供代心汴定实现功能选择。3、功能实现设计3.1总体设计根据上面的分析,可以将这个系统分为如下五大模块:查看每人每种产 品的销售额、按销售额对销售员排序、对每种产品

3、总销售额从高到低排序、 输出统计报表和退出。其中主要模块是前四个模块。3. 2流程图3. 3详细设计:读取便3. 3.1【头文件和预定义】个人收集整理,勿做商业用途#includestdio. h#includeconio. h#includestdlib h.主菜#includestring httdefine M3. 3.2【功能函数声明】统计总销售额并排序销售员销售业绩 排序每个人每种 产品销售额wo id detail ();void foreach();输出统计表void menu ();void product ();void readdata();void seller ();v

4、oid total ();void choice ();退出 返回3. 3.3【数据结构】原始数据有销售员代号、产品代号和销售额,所以定义一个全局结构体数组scrip 用于保存原始数据。然后定义全局变量n保存纸条数LI,定义数组s用于保存分类 后的信息。struct ssintsid;销售员代号intPid;/产品代号intsn;/销售额ssM;int n;纸条数目int s4 5 = 0,0, 0, 0,0, 0,0, 0,0,0, 0,0, 0,0,0, 0, 0, 0, 0, 0; 用于 保存员工和产品信息3. 3.4【主函数】显示程序设讣者相关信息和调用文件读取函数、数据初始化函数和主

5、菜单函数void main() /入口函数,即主函数readdata () :/读取文件数据foreachO ;/根据文件初始数据初始化便于操作的数组menu ();显示主菜单3. 3. 4-1【文件读取函数】readdata()读出便条中的内容,并保存到文件结构体中void readdata()/从文件读取数据FILE *fp;/定义文件指针if(fp二fopen(list. txt, r)二二NULL)printf (,/Can,t open the file!n);exit(O);elsefor (n二0; !feof (fp) ; n卄)fscanf (fp, /z%d %d %dnz

6、 &ss n sid, &ss n pid, &ss n sn); /保存文件数据到结构体fclose(fp);3. 3. 4-2【文件读取函数】foreachO将保存到结构体中的信息按产品分类,再根据销售员进行分类,将信息存到数组 当中。void foreachO/从纸条读取数据并分类整理int i;for(i=0;in;i+)/遍历所有纸条switch(ssi. pid)/按产品分大类(例如就是casel-5),根据大类分销售员小类,累加各人各产品销售数量case 1:switch(ssi. sid)case 1:s00+二ssisn;break;case 2:sl0+二ssisn;bre

7、ak;case 3:s20+二ssisn;break;case 4:s3O+=ssisn;break;break;case 2:switch(ssiL sid)case 1:s0 1+二ssisn;break;case 2:sl1+二ssisn;break;case 3:s2l+=ssisn;break;case 4:s31+二ssisn;break;break;case 3:switch(ssil. sid)case 1:s02+二ssisn;break;case 2:sl2+二ssisn;break;case 3:s22+二ssisn;break;case 4:s32+二ssisn;bre

8、ak;break;case 4:switch(ssi. sid)case 1:s03+二ssisn;break;case 2:sl3+二ssisn;break;case 3:s23+二ssisn;break;case 4:s33+二ssisn;break;break;case 5:switch(ssi. sid)case l:sO4+二ssisn;break;case 2:sl4+二ssisn;break;case 3:s24+二ssisn;break;case 4:s34+=ssisn;break;break; 3. 3. 4-3【主菜单函数】menu ()显示系统功能菜单以供用户选择相关功

9、能使用,根据用户选择分别可调用detail ():计算上个月每个人每种产品的销售额seller():按销售额对销售员进行排序,输出排序结果(销售员代号)product ():统讣每种产品的总销售额,对这些产品按从高到低的顺序输出排序 结果(需输出产品代号和销售额)exit (0):退出系统void menu()int w, c;doputsCtt 1.查看每人每种产品的销售额);puts(tt 2.按销售额对销售员排序(销售员代号)n);putsCtt 3.对每种产品总销售额从高到低排序(产品代号和销售 额)E);puts(z/tt 4.输出统计报表n);puts(z/tt 5退出rT);pr

10、intf C请选择(1-5) : bb);scanf &c);辻(c5)错误输入则重新获取输入w=lelse w二0; while(w=l);switch (c)输入【case 1:detHl ();break;/每个销售员每种产品的销售额统计case 2:seller () :break;case 3:product();break;case 4:total () ;break;case 5:exit(0);3. 3.5【功能函数】5-1【每人每种产品销售额统计函数】detail ()计算上个月每个人每种产品的销售额void detail ()/显示销售情况int i, j;for(i=0;

11、i4;i+)/遍历销售员printf Cntt%d 号销售员销售情况:n, i+1);for(j=0;j5;j+)/按销售员分类遍历所有产品并显示信息printf Ctt%d 号产品销售数量:dn, j+1, s i j);choice ();3. 3. 5-1【销售员销售业绩排序函数】sellerO按销售额对销售员进行排疗;,输出排疗:结果(销售员代号)void seller()int i, j, k;int sp4 = 0, 0, 0, 0;/汁算每单个销售员所有产品销售数量比较四次,每次选出最大数/用于标记单轮最大数for(i=0;i4;i+) for(j=0;j5;j+) spi+=s

12、i j;for(i=0;i4;i+)k=0;for(j=0;j4;j+)if(spk spj)k=j; 获取最大数标号printf (,?tt 第%(1 名是%d 号销售员!n, i+1, k+1) ;spk =-l;/输出最大数和排名,将最大数标记为负choice ();3. 3. 5-2【总销售额统计函数】void product ()统讣每种产品的总销售额,对这些产品按从高到低的顺序输出排序void product()/与sellerO原理一样,用于对产品进行统讣int i, j, k;int p5二0,0, 0,0,0;for(j=0;j5;j+)for(i=0;i4;i+)pj+=s

13、ij;for(j=0;j5;j+)k二 0;for(i=0;i5;i+)if (p k pi)k=i;printf(,?tt 第d名是d 号产品!t 销量 为%d!n, j+1, k+1, pk) ;pk=l;choice ();3. 3. 5-3【统计报表输出函数】total ()统讣每种产品的总销售额,对这些产品按从高到低的顺序输出排序结果(需输出产品代号和销售额)void total ()/输出报表 int i, j;printf Cnt销售员t产品t销量n);for(i=0;i4;i+)for(j=0;j返回菜单t2退出系统 scanf&c);if (c=l)menu ();elsee

14、xit(O);puts(, n );17个人收集整理,勿做商业用途4、运行结果(附带抓图)List, txt (便条文件中数据如下: (提前建立文件或就将 便条保存在文件中!)11 11221 331481592 1 32232342452563 1 132 1(这是个例子)3343453564 1 2423434445456#个人收集整理,勿做商业用途31运行结果显示主菜单:采甲 *1查看每人每种产品的销售额2 -按销售额对销售员排序销售员代号3 .对每种产品总销售额从高到低排序 产品代号和销售额4 输出统计报表5 退岀2退岀糸统】1呪: 1:2:3:8:9 w=:杳豊 隹f数数数数ffl隹

15、屋SS崔口隹tl品品品品品 ffl产产产产产 uyyyyylp 112 3 4 5fR隹屋屋屋屋口 ais8 隹吕品品品品 销产产产产产兄 1 1 4 5 63 售里量量量量 佢1-数数数数 销隹屋屋屋屋口ilifi崔口品品品品品 翼产产产产 口 IPOIPOIFayIFalp3 12 3 4 5oinl隹II品品品品品 聖产产产产口 |ra|ra|ra|Fa 一4 12 3 4选择按销售额对销售员按顺序排序(销售员代号)运行结果对每种产品销售额从高到低排序运行结果:统计报表运行结果:6、源程序#include# include#include/*调用 exit 函数*/#include#dc

16、fine M 155/*宏左义引void dctailO;void foreachO;void menu();void productO;void readdata();void seller();void total();void choice();struct ssint sid; 销售员代号int pid: /产品代号int sn; /销售额ssM;int n;纸条数目int s45二OOOQO,OQOQO,OOO(H),OQOQO; /用于保存员工和产品信息void inain() 入口函数,即主函数PreaddataO; /读取文件数据foreachO;/根据文件初始数据初始化便于操

17、作的数组menu(); 显示主菜单)void readdata()从文件读取数据FILE *fp;if(fp=fopen(Mlist.txtH;fr,)=NULL)printf(MCan,t open the filc!n”);exit(O);elsefor(n=0;!feof(fp);n+)fscanf(fp.%d %d %dn,&ssn.sid,&ssnpid,&ssn.sn); 保存文件数据到结构体 fclose(fp);void foreachO/从纸条读取数据并分类整理int i;for(i=0;in;i+)遍历所有纸条switch(ssi.pid)按产品分大类,根据大类分销售员小类

18、,累加个人各产品销售数量case 1:switch(ssi.sid)case 1 :s00+=ssi.sn;break;case 2:sl0+=ssi.sn;break;case 3:s20+=ssi.sn;break;case 4:s30+=ssi.sn;break;break:case 2:switch(ssi.sid)case 1:sOl+=ssi.sn;break;case 2:s 1 1 +=ssi.sn;break;case 3:s2 1 +=ssi.sn;break;case 4:s3 l+=ssi.sn;break;break:case 3:switch(ssi.sid)cas

19、e 1:s02+=ssi.sn;break;case 2:sl2+=ssi.sn;brcak;case 3:s22+=ssi.sn;break;case 4:s3 2+=ssi.sn;break;break;case 4:switch(ssi.sid)case 1:s03+=ssi.sn;break;case 2:s +=ssi.sn;break;case 3:s23+=ssi.sn;break;case 4:s3 3+=ssi.sn;break;)break:case 5:switch(ssi.sid)case 1 :s04+=ssi.sn;break;case 2:s 1 4+=ssi .

20、sn;break;case 3:s24+=ssi .sn;break;case 4:s(34+=ssi.sn;break;break;)void nienuOint w,c;doputs(Htt * * *尊菜单 * * * *nj“) puts(Htt 1 査看每人每种产品的销售额nj;putsC*tt 2.按销售额对销售员排序(销售员代号)E);puts(Htt 3.对每种产品总销售额从髙到低排序(产品代号和销售额)n“);puts(Htt 4.输岀统计报表E);puts(Htt 5退出n”);printf(HW选择(15): bbH);scanf(M%d&c);if(c5). 错误输入则

21、重新获取输入w=l;getchar();else w=0; while(w=l);switch(c)根据输入实现相应函数调用case 1:dctail( );brcak:每个销售员每种产品的销售额统计case 2:seller();break;case 3:product();break:case 4:total():break;case 5:exit(O);void detail()/显示销售情况int i,j;for(i=0;i4;i+)遍历销售员printf(Hntt%d 号销售员销售情况:n“,i+1);for(j=0;j5;j+)/按销售员分类遍历所有产品并显示信息 printf(M

22、tt%d 号产品销售数量:dn,j+l,sij);choice();)void sellerOint ij.k;int sp4=0Q0,0;for(i=0;i4;i+)for(j=0:jv5;j+)spi+=siUJ;讣算每单个销售员所有产品销售数量for(i=0;i4;i+)比较四次,每次选岀最大数 k=0;用于标记单轮最大数for(j=0;j4;j+)if(spkspj)k=j;获取最大数标号printf(Ntt 第1 名是d 号销售员时i+l,k+l);spk=ir|输出最大数和排名,将最大数标记为负choice();void product()与seller。原理一样,用于对产品进行统

23、计 im i,j,k;int p5=0,0.000;for(j=0;j5;j+)for(i=0;i4;i+)pUl+=siU;for(j=0;j5;j+)k=0;for(i=0;i5:i+)if(pkp|i)k=i:printf(Htt 第d 名是d 号产品!t 销量为%d!nHJ+l)k+l,pk);pk=-l;choice();void total() 输出报表 int i,j;printf(Hiit销售员t产品t销量nj;for(i=0;i4;i+)for(j=0;j5;j+)printf(Ht %dt %dt %chn,i+Lj+Lsij);choice();”void choiceO用于输出信息功能选择int c;printf(”请选择接下来想做什么tl返回菜单t2退出系统 scanf(H%dM.&c);if(c=l)menu();elseexit(O);puts(AiT);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1