程序设计综合课程设计报告销售系统设计.doc

上传人:文库蛋蛋多 文档编号:2386067 上传时间:2023-02-17 格式:DOC 页数:21 大小:219.50KB
返回 下载 相关 举报
程序设计综合课程设计报告销售系统设计.doc_第1页
第1页 / 共21页
程序设计综合课程设计报告销售系统设计.doc_第2页
第2页 / 共21页
程序设计综合课程设计报告销售系统设计.doc_第3页
第3页 / 共21页
程序设计综合课程设计报告销售系统设计.doc_第4页
第4页 / 共21页
程序设计综合课程设计报告销售系统设计.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《程序设计综合课程设计报告销售系统设计.doc》由会员分享,可在线阅读,更多相关《程序设计综合课程设计报告销售系统设计.doc(21页珍藏版)》请在三一办公上搜索。

1、 华科学院信息管理与信息系统专业程序设计综合课程设计报告 (2011/2012学年 第一学期)学生姓名: 学生班级: 信息管理102201H学生学号: 指导教师: 2011年12月30日目 录一 课程设计目的1二 课程设计的任务1三 系统设计方案 1 3.1系统详细描述23.2功能模块划分2四 系统实现与测试24.1产品销售模块实现34.1.1流程图34.1.2代码 34.1.3模块测试54.2销售统计模块实现54.2.1代码54.2.2模块测试10五 程序调试中出现的问题及解决方法12六 参考文献 12七 附录13一 课程设计目的1) 学习综合运用C高级语言课程和其他先修课程的知识,提高分析

2、和解决实际问题的的能力,进一步巩固、加深和拓宽所学的知识;进一步加强结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解。2) 全面系统的学习面向对象程序设计的基本概念、基本语法和编程方法;独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。3) 掌握程序设计中的常用算法和C语言的编程技巧和上机调试程序的方法。4) 在参与一系列子项目的实践过程中,提高如何综合运用所学知识解决实际问题的能力,以及获得相关项目管理和团队合作等众多方面的具体经验。二 课程设计任务和内容按照如下要求,运用C+语言,编写一套可用的较为完善的产品销售管理系统软件。SMG公司有四个销售员(编号:1-4

3、) ,负责销售五种产品(编号:1-5) 。 每个销售员都将当日出售的每种产品各写一张便条交上来。 每张便条内容有 1、销售员的代号 2、产品的代号 3、这种产品当天的销售额 每位销售员每天可能上缴 0-5 张便条。 假设公司收到了上个月的所有便条, 编写一个处理系统,读取上月的销售情况,进行如下处理: 1、计算上个月每人每种产品的销售额 2、按销售额对销售员进行排序,输出排序结果(销售员代号) 3、统计每种产品的总销售额,对这些产品从高到低的顺序输出结果(须输出产品的代号和销售额) 4、输出统计报表 三 系统设计方案3.1 系统详细描述3.1.1 系统设计背景随着公司发展水平的提高,商品销售数

4、据的不断增加,普通的手写记录太过复杂经常出现信息丢失,也不适合现在的节约型社会的发展,公司在正常运营中需要对销售员的销售额进行记录,统计等一系列操作,利用产品销售管理系统急时了解各个环节中信息的变更,有利于提高管理的效率。 本项目作为c+课程设计课程的训练项目提出,目的是为了提高同学们系统的开发,则提高大家的实践能力。所以开发一个符合自身公司实际情况的工作平台是十分必要的。3.1.2 系统设计详细信息 系统使用对象为SMG公司.SMG公司的销售员的代号分别为1-4,该公司销售的商品有单件背包,双肩书包,书架,坐垫,小型台灯,分别对其商品进行编号,为:1-5。注:该系统只是对其销售员的销售数量进

5、行统计。3.2功能模块划分3.2.1 功能模块描述根据任务内容要求及公司相关情况等信息,SMG产品销售管理系统分为如下五大模块:查看每人每种产品的销售额,按销售额对销售员排序,对每种产品总销售额从高到低排序,输出统计表和退出。其中主模块是前四个模块。查看每人每种产品的销售额公司产品销售管理系统按销售额对销售员排序对每种产品总销售额从高到低排序输出统计表退出 图3.1 功能模块结构图四 系统实现与测试4.1 主菜单模块实现4.1.1主菜单流程图4.1.2主菜单代码【主函数】 显示程序设计者相关信息和调用文件读取函数、数据初始化函数和主菜单函数 void main() /入口函数,即主函数 rea

6、ddata(); /读取文件数据 foreach(); /根据文件初始数据初始化便于操作的数组 menu(); /显示主菜单 【主菜单函数】menu() 显示系统功能菜单以供用户选择相关功能使用,根据用户选择分别可调用 detail():计算上个月每个人每种产品的销售额 seller():按销售额对销售员进行排序,输出排序结果(销售员代号) product():统计每种产品的总销售额,对这些产品按从高到低的顺序输出排序 结果(需输出产品代号和销售额) exit(0):退出系统 void menu() int w,c; do puts(tt*菜单*nn); puts(tt 1.查看每人每种产品的

7、销售额n); puts(tt 2.按销售额对销售员排序(销售员代号)n); puts(tt 3.对每种产品总销售额从高到低排序(产品代号和销售额)n); puts(tt 4.输出统计报表n); puts(tt 5.退出n); puts(nntt*n); printf(请选择(1-5): bb); scanf(%d,&c); if(c5) /错误输入则重新获取输入 w=1; getchar(); else w=0; while(w=1); switch(c) /根据输入实现相应函数调用 case 1: detail();break; /每个销售员每种产品的销售额统计 case 2: seller

8、();break; case 3: product();break; case 4: total();break; case 5: exit(0); 4.1.3主菜单测试 图4.1 主菜单4.2销售统计模块实现4.2.1销售统计代码【文件读取函数】readdata() 读出便条中的内容,并保存到文件结构体中 void readdata() /从文件读取数据 FILE *fp; if(fp=fopen(list.txt,r)=NULL) printf(Cant open the file!n); exit(0); else for(n=0;!feof(fp);n+) fscanf(fp,%d %

9、d %dn,&ssn.sid,&ssn.pid,&ssn.sn); /保存文件数据到结构体 fclose(fp); 【文件读取函数】foreach() 将保存到结构体中的信息按产品分类,再根据销售员进行分类,将信息存到数组当中。 void foreach() /从纸条读取数据并分类整理 int i; for(i=0;in;i+) /遍历所有纸条 switch(ssi.pid) /按产品分大类,根据大类分销售员小类,累加个人各产品销售数量 case 1: switch(ssi.sid) case 1:s00+=ssi.sn;break; case 2:s10+=ssi.sn;break; cas

10、e 3:s20+=ssi.sn;break; case 4:s30+=ssi.sn;break; break; case 2: switch(ssi.sid) case 1:s01+=ssi.sn;break; case2:s11+=ssi.sn;break; case 3:s21+=ssi.sn;break; case 4:s31+=ssi.sn;break; break; case 3: switch(ssi.sid) case 1:s02+=ssi.sn;break; case2:s12+=ssi.sn;break; case3:s22+=ssi.sn;break; case4:s32+

11、=ssi.sn;break; break; case 4: switch(ssi.sid) case1:s03+=ssi.sn;break; case2:s13+=ssi.sn;break; case3:s23+=ssi.sn;break; case4:s33+=ssi.sn;break; break; case 5: switch(ssi.sid) case1:s04+=ssi.sn;break; case2:s14+=ssi.sn;break; case 3:s24+=ssi.sn;break; case 4:s34+=ssi.sn;break; ; break; 【功能函数】 【每人每种

12、产品销售额统计函数】detail() 计算上个月每个人每种产品的销售额 void detail() /显示销售情况 int i,j; for(i=0;i4;i+) /遍历销售员 printf(ntt%d 号销售员销售情况:n,i+1); for(j=0;j5;j+) /按销售员分类遍历所有产品并显示信息 printf(tt%d 号产品销售数量:%dn,j+1,sij); choice(); 【销售员销售业绩排序函数】seller() 按销售额对销售员进行排序,输出排序结果(销售员代号) void seller() int i,j,k;int sp4=0,0,0,0; for(i=0;i4;i+

13、) for(j=0;j5;j+) spi+=sij; /计算每单个销售员所有产品销售数量 for(i=0;i4;i+) /比较四次,每次选出最大数 k=0; /用于标记单轮最大数 for(j=0;j4;j+) if(spkspj)k=j; /获取最大数标号 printf(tt 第%d 名是%d 号销售员!n,i+1,k+1);spk=-1; /输出最大数和排名,将最大数标记为负 choice(); 【总销售额统计函数】void product() 统计每种产品的总销售额,对这些产品按从高到低的顺序输出排序 void product() /与 seller()原理一样,用于对产品进行统计 int

14、 i,j,k; int p5=0,0,0,0,0; for(j=0;j5;j+) for(i=0;i4;i+) pj+=sij; for(j=0;j5;j+) k=0; for(i=0;i5;i+) if(pkpi)k=i; printf(tt 第 %d是 %d 号 产 品!t销量为%d!n,j+1,k+1,pk);pk=-1; choice(); 【统计报表输出函数】total() 统计每种产品的总销售额,对这些产品按从高到低的顺序输出排序结果(需输出产品代号和销售额) void total() /输出报表 int i,j; printf(nt 销售员t 产品t 销量n); for(i=0;

15、i4;i+) for(j=0;j返回菜单t2退出系统 bb);scanf(%d,&c); if(c=1)menu(); else exit(0); puts(n); ; 4.2.2统计测试测试 图4.2查看每人每种产品的销售额运行结果 图4.3按销售额对销售员排序运行结果图4.4对每种产品销售额从高到底排序运行结果 图4.5统计报表运行结果五 程序调试中出现的问题及解决方法在调试过程中,经常会出现无法得出结果的情况,因此必逐条的对应进行检查,例如:在for语句写完时加上了分号;或者因为粗心把单词写错,使得前后不能连接,导致结果出现异常情况;对于for语句中的数字,如i4,假如写成i5,也会导致

16、程序结果与我们所想的不符等。对于这些在编写程序中出现的问题,我们在编写时一定要认真仔细,不要放过任何微小的细节,因为往往是因为这些细节问题,才导致我们运行结果出现问题,而这些微小问题往往也是不会受到我们的重视,所以我们一定要认真的编写程序,在源头上杜绝问题的产生。六 参考文献1谭浩强,C+程序设计,清华大学出版社, 2011。2郑莉,C+程序设计(第三版),清华大学出版社, 2005。 3钱能,C+程序设计教程,清华大学出版社, 2004。七 附录程序代码#include #include #include #include #define M 155 void detail(); void

17、foreach(); void menu(); void product(); void readdata(); void seller(); void total(); void choice(); struct ss int sid; /销售员代号 int pid; /产品代号 int sn; /销售额 ssM; int n; /纸条数目 int s45=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0; /用于保存员工和产品信息 void main() /入口函数,即主函数 p readdata(); /读取文件数据 foreach(); /根据文件初始数据

18、初始化便于操作的数组 menu(); /显示主菜单 void readdata() /从文件读取数据 FILE *fp; if(fp=fopen(list.txt,r)=NULL) printf(Cant open the file!n); exit(0); else for(n=0;!feof(fp);n+) fscanf(fp,%d %d %dn,&ssn.sid,&ssn.pid,&ssn.sn); /保存文件数据到结构体 fclose(fp); void foreach() int i; for(i=0;in;i+) switch(ssi.pid) /按产品分大类,根据大类分销售员小类

19、,累加个人各产品销售数量 case 1: switch(ssi.sid) case 1:s00+=ssi.sn;break; case 2:s10+=ssi.sn;break; case 3:s20+=ssi.sn;break; case 4:s30+=ssi.sn;break; break; case 2: switch(ssi.sid) case 1:s01+=ssi.sn;break; case 2:s11+=ssi.sn;break; case 3:s21+=ssi.sn;break; case 4:s31+=ssi.sn;break; break; case 3: switch(ss

20、i.sid) case 1:s02+=ssi.sn;break; case 2:s12+=ssi.sn;break; case 3:s22+=ssi.sn;break; case 4:s32+=ssi.sn;break; break; case 4: switch(ssi.sid) case 1:s03+=ssi.sn;break; case 2:s13+=ssi.sn;break; case 3:s23+=ssi.sn;break; case 4:s33+=ssi.sn;break; break; case 5: switch(ssi.sid) case 1:s04+=ssi.sn;brea

21、k; case 2:s14+=ssi.sn;break; case 3:s24+=ssi.sn;break; case 4:s34+=ssi.sn;break; ; break; void menu() int w,c; do puts(tt*菜*nn); puts(tt 1.查看每人每种产品的销售额n); puts(tt 2.按销售额对销售员排序(销售员代号)n); puts(tt 3.对每种产品总销售额从高到低排序(产品代号和销售额)n); puts(tt 4.输出统计报表n); puts(tt 5.退出n); puts(nntt*n);printf(请选择(1-5): bb); scan

22、f(%d,&c); if(c5) /错误输入则重新获取输入 w=1; getchar(); else w=0; while(w=1); switch(c) /根据输入实现相应函数调用 case 1: detail();break;/每个销售员每种产品的销售额统计 case 2: seller();break; case 3: product();break; case 4: total();break; case 5: exit(0); void detail() /显示销售情况 int i,j; for(i=0;i4;i+) /遍历销售员 printf(ntt%d 号销售员销售情况:n,i+

23、1); for(j=0;j5;j+) /按销售员分类遍历所有产品并显示信息 printf(tt%d 号产品销售数量:%dn,j+1,sij); choice(); void seller() int i,j,k; int sp4=0,0,0,0; for(i=0;i4;i+) for(j=0;j5;j+) spi+=sij; /计算每单个销售员所有产品销售数量for(i=0;i4;i+) /比较四次,每次选出最大数 k=0; /用于标记单轮最大数for(j=0;j4;j+) if(spkspj)k=j; /获取最大数标号 printf(tt 第%d 名是%d 号销售员!n,i+1,k+1);s

24、pk=-1; /输出最大数和排名,将最大数标记为负 choice(); void product() /与 seller()原理一样,用于对产品进行统计 int i,j,k; int p5=0,0,0,0,0; for(j=0;j5;j+) for(i=0;i4;i+) pj+=sij; for(j=0;j5;j+) k=0; for(i=0;i5;i+) if(pkpi)k=i; printf(tt 第%d 名是%d 号产品!t 销量为d!n,j+1,k+1,pk);pk=-1; choice(); void total() /输出报表 int i,j; printf(nt 销售员t 产品t 销量n); for(i=0;i4;i+) for(j=0;j返回菜单t2退出系统 bb); scanf(%d,&c); if(c=1) menu(); else exit(0); puts(n);

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

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号