C语言课程设计销售管理系统_第1页
C语言课程设计销售管理系统_第2页
C语言课程设计销售管理系统_第3页
C语言课程设计销售管理系统_第4页
C语言课程设计销售管理系统_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、销售管理系统 目录 摘摘 要要.1 1绪论绪论.1 2. 系统分析系统分析.1 2.1 功能需求.1 2.2 数据需求.2 2.3 性能需求.2 3. 总体设计总体设计.2 3.1 功能模块设计.2 3.2 系统设计方案.3 4. 详细设计详细设计.3 4.1 设备管理模块.3 4.2 设备借出借入管理模块.4 4.3 设备查询模块.4 4.4 系统管理模块.4 5. 调试与测试调试与测试.4 5.1 调试.4 5.2 测试.5 6. 结论结论.6 结束语结束语.6 参考文献参考文献(这个要注意标点是半角这个要注意标点是半角).6 附录附录 1用户手册用户手册.7 附录附录 2源程序源程序.8

2、 摘摘 要要 销售管理系统是一个企事业单位不可缺少的部分,它可以便捷的帮助管理 人员录入和更改销售的信息,进行销售业绩排名以便直观的观察到各个销售员 的业绩。 本系统使用 c 语言作为开发工具。实现了对上月每个人每种产品的销售额 的统计以及按销售额对销售员进行排序,输出排序结果的功能。 本文从分析课题的题目背景、题目意义、题目要求等出发,分别从需求分 析、总体设计、详细设计、测试等各个方面详细介绍了系统的设计与实现过程, 最后对系统的完成情况进行了总结。 关键词:c 语言;销售管理;业绩排名 1绪论绪论 随着科技的发展越来越多的企业也发展起来,公司的员工也越来越多,伴 随而来的是企业因员工量大

3、而信息管理更加繁重的问题。而销售部门的各 种数据更加繁多,加重了企业管理的压力,开发销售管理系统使得这一压 力得以减轻,销售管理系统可以实现对每个人每种产品的销售统计并且进 行排序输出。方便了企业的管理,满足了企业的需求。 根据课程设计任务书要求,本系统开发主要完成以下功能和性能。 (1) 销售额读取:查询各个销售员的销售情况; (2) 销售额排序:按照销售员编号对销售员的额销售额进行排序。 (3) 产品销量排序:对每种产品销售总额从高到低排序(产品代号和销售 额) 。 (4) 输出统计报表:对销售员以及产品的销售额进行报表统计并输出。 2. 系统分析系统分析 2.1 功能需求功能需求 本系统

4、主要是企业对销售员以及销售额的简单管理系统。 该系统需要有读取数据,报表统计,排序,退出功能。利用报表功能将数据库 中的若干项目的计算值显示出来。数据要求有自动更新功能,显示最新的结果。 2.2 数据需求数据需求 需要管理营销员的信息包括:销售员代号,产品代号,销量。 本程序将用到文件系统,list.txt 文件内容作为数据源,其中单行内容代表一 张纸条。程序运行后首先将文件系统的原始数据读取并保存到程序的结构体数 组当中,所以应提供文件输入的操作;由于纸条数据零散,所以要对原始数据 进行分类操作并提供一个数组用于保存分类信息;在程序中要进行统计工作, 所以要提供显示、排序等操作;另外应提供键

5、盘式选择菜单实现功能选择。 2.3 性能需求性能需求 安全性:本系统在设计,开发,运行各环节,都需要贯彻了安全性的原则, 落实到了每个环节,每个方面。 可靠性:需要遵循安全性原理,来提高本系统的可靠性。 稳定性:本系统根据需要可以定义全局变量,可以使用结构体以及链表, 来确保本系统的稳定性。 响应速度;本系统因应用了链表,理论上可以提高查找的速度,整体的响 应速度也会得到了提升。 3. 总体设计总体设计 3.1 功能模块设计功能模块设计 根据上面的分析,可以将这个系统分为如下五大模块:查看每人每种产品的销 售额 、按销售额对销售员排序、对每种产品总销售额从高到低排序、输出统计 报表和退出。其中

6、主要模块是前四个模块。功能模块图如图 1。 图 1 功能模块图 3.2 系统设计方案系统设计方案 根据上面的分析,可以将这个系统分为如下五大模块:查看每人每种产 品的销售额 、按销售额对销售员排序、对每种产品总销售额从高到低排序、 输出统计报表和退出。其中主要模块是前四个模块。 4. 详细设计详细设计 4.14.1【头文件和预定义】 #include #include #include #include #define m 155 4.24.2【功能函数声明】 void detail(); void foreach(); void menu(); void product(); void re

7、addata(); void seller(); void total(); void choice(); 4.34.3【数据结构】 原始数据有销售员代号、产品代号和销售额,所以定义一个全局结构体数组 scrip用于保存原始数据。然后定义全局变量n保存纸条数目,定义数组s用于保 存分类后的信息。 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; /用 于保存员工和产品信息 4.44.4【主函数】 显示程序

8、设计者相关信息和调用文件读取函数、数据初始化函数和主菜单函数 void main() /入口函数,即主函数 readdata(); /读取文件数据 foreach(); /根据文件初始数据初始化便于操作的数组 menu(); /显示主菜单 4.4-14.4-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+)

9、fscanf(fp,%d %d %dn, /保存文件数据到结构体 fclose(fp); 4.4-24.4-2【文件读取函数】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; case

10、 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(ssi.sid) case 1:s02+=ssi.sn;break; case 2:s12+=ssi.sn;break; case 3:s22+=ssi.sn;break; case 4:s

11、32+=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;break; case 2:s14+=ssi.sn;break; case 3:s24+=ssi.sn;break; case 4:s34+=ssi.sn;break; ; break; 4.4

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

13、额从高到低排序(产品代号和销售额) n); puts(tt 4.输出统计报表n); puts(tt 5.退出n); puts(nntt*n); printf(请选择(1-5): bb); scanf(%d, 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; ca

14、se 5: exit(0); 4.54.5【功能函数】 5-1【每人每种产品销售额统计函数】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(); 4.5-14.5-1【销售员销售业绩排序函数】seller() 按销售额对销售员进行排序,输出排序结果(销售员代号) void sel

15、ler() 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);spk=-1; /输出最大数和排名,将最大数标记为负 choice(); 4.5-24.5-2【总销售额统计函数】void product() 统计每种产品的总销售额,对这些产品

16、按从高到低的顺序输出排序 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(); 4.5-34.5-3【统计报表输出函数】total() 统计每种产品的总销售额,对这些产品按从高到低的顺序输出排序结果(需输 出产品代

17、号和销售额) void total() /输出报表 int i,j; printf(nt 销售员t 产品t 销量n); for(i=0;i4;i+) for(j=0;j返回菜单t2退出系统 bb); scanf(%d, if(c=1) menu(); else exit(0); puts(n); 5. 调试调试与测试与测试 5.1 调试调试 调试是软件开发过程中的一个重要环节,也是最复杂,对软件开发者者来 说也是最艰巨的任务。调试的任务是及时改正测试过程中发现的软件错误。具 体地说,调试过程由两个步骤组成,它从表示程序中存在错误的某迹象开始, 首先确定错误的准确位置,也就是找出哪个模块或哪个语

18、句引起的错误。然后 仔细研究推断代码以确定问题的原因,并设法改正。 调试过程主要是运行编制好的程序,然后遇到错误后根据系统的提示,找 到相关的问题所在。本系统调试过程中遇到问题、原因和解决方法如下面介绍。 (1)程序不能运行 提示 rst.open trim(sql), cnn, adopenkeyset, adlockoptimistic 行有错误,此 行是数据库连接错误或者是数据返回错误,原因是将数据库查找到的信息显示 没有设置好。 (2)点击按钮没有出现要显示的内容 原因是内容的代码忘记输入。 5.2 测试测试 软件测试是软件生存期中的一个重要阶段,是软件质量保证的关键步骤从 用户的角度

19、来看,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,所以 软件测试应该是“为了发现错误而执行程序的过程” 。或者说,软件测试应该根 据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即 输入数据及其预期的输出结果) ,并利用这些测试用例去运行程序,以发现程序 错误或缺陷。过度测试则会浪费许多宝贵的资源。到测试后期,即使找到了错 误,然而付出了过高的代价。 测试数据过程如下。 list.txtlist.txt(便条)文件中数据如下:(便条)文件中数据如下: 1 1 10 2 5 20 3 4 40 4 2 60 1 3 20 3 4 30 运行结果运行结果 显示主菜单显示主菜单

20、 查看每人每种产品的销售额运行结果:查看每人每种产品的销售额运行结果: 按销售额对销售员排序运行结果:按销售额对销售员排序运行结果: 对每种产品销售额从高到低排序运行结果:对每种产品销售额从高到低排序运行结果: 统计报表运行结果:统计报表运行结果: 6. 结论结论 通过这次 c 程序设计,我掌握了模块化设计方法,能够深入的理解结构化 程序设计思想,熟练运用结构化程序设计方法,提高了运用 c 语言进行程序设 计的能力。此外我还熟悉了,对于文件读写的操作。更重要的是对程序的调试 有了显著的提高。我发现我对程序的设计越来越感兴趣了,我决定今后在这一 方面下一番功夫,取得一些成绩。 结束语结束语 为期

21、两个礼拜的的软件综合课程设计实习终于顺利完成,在这期间付出汗水, 辛劳可是一言难尽。但我觉得很值得,以前只是在书本上学到 c 语言的编程基 础,这次用在了实际的程序编写上,解决了实际的问题。 参考文献参考文献 1 刘炳文. visual basic 程序设计教程(第二版).北京:清华大学出版社,2005 2 全国计算机等级考试命题研究组 .全国计算机等级考试二级教程及同步辅导 visual basic 语言程序设计. 珠海:珠海出版社,2004 附录附录 1用户手册用户手册 首先新建 list.txt 其中输入便条内容,并放置在程序根目录。 双击运行程序便可实现各项功能,使用数字键盘进行相应功

22、能选择。 附录附录 2源程序源程序 #include #include #include #include #define m 155 void detail(); void 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

23、,0,0,0,0; /用于保存员工和产品信息 void main() /入口函数,即主函数 readdata(); /读取文件数据 foreach(); /根据文件初始数据初始化便于操作的数组 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, /保存文件数据到结构体 fclose(fp); void foreach

24、() /从纸条读取数据并分类整理 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; 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;b

25、reak; case 3:s21+=ssi.sn;break; case 4:s31+=ssi.sn;break; break; case 3: switch(ssi.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

26、; case 4:s33+=ssi.sn;break; break; case 5: switch(ssi.sid) case 1:s04+=ssi.sn;break; 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); scanf(%d, if(c5) /错误输入则重新获取输入 w=1; getchar(); else w=0; while(w=1); switch(c) /根据输入实现相应函数调用 case 1: detail();break;/每个销售员每种产

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论