销售管理系统设计

上传人:仙*** 文档编号:80075668 上传时间:2022-04-24 格式:DOC 页数:29 大小:586.50KB
收藏 版权申诉 举报 下载
销售管理系统设计_第1页
第1页 / 共29页
销售管理系统设计_第2页
第2页 / 共29页
销售管理系统设计_第3页
第3页 / 共29页
资源描述:

《销售管理系统设计》由会员分享,可在线阅读,更多相关《销售管理系统设计(29页珍藏版)》请在装配图网上搜索。

1、 C语言课程设计报告设计题目: 销售管理系统设计 设计人员: 指导教师: 所在院系: 年级班级: 目 录C语言课程设计-销售管理系统3销售管理系统的设计目的4总体设计5详细设计7一、课题的功能模块的划分。71.主菜单及头文件设计:72.编辑系统菜单运行:83.输入信息:84.保存信息,参数为结构体数组和记录数:95. 读入取函数,参数为结构体数组:106.清单输出:11二、主要功能的实现12程序调试与测试20执行结果21总结28C语言课程设计-销售管理系统题目:销售管理系统某公司有四个销售员(编号:1-4),负责销售五种产品(编号:1-5)。每个销售员都将当天出售的每种产品各写一张便条交上来。

2、每张便条包含内容: 1)销售员的代号 2)产品的代号 3)这种产品的当天的销售额 每位销售员每天可能上缴0-5张便条。假设,收集到了上个月的所有便条,编写一个处理系统,读取上个月的销售情况(自己设定),进行如下处理。 1)计算上个月每个人每种产品的销售额。 2)按销售额对销售员进行排序,输出排序结果(销售员代号) 3)统计每种产品的总销售额,对这些产品按从高到底的顺序,输出排序结果(需输出产品的代号和销售额)(可选项) 4)输出统计报表 销售管理系统的设计目的1、通过本课程设计,培养上机动手能力,使学生巩固C语言程序设计课程学习的内容,掌握工程软件设计的基本方法,强化上机动手能力,闯过编程关;

3、2、为后续各门计算机课程的学习打下坚实基础;3、学会用c语言程序设计来设计销售管理系统设计。总体设计数据结构图如下:销售管理系统菜单函数清单输入保存文件读取文件显示清单每位销售员的销售额销售产品总和每种产品的销售额按销售额对销售员排序如图为程序设计流程图; 输入记录读取文件保存到文件每位销售员的销售额每种产品的销售额按销售额对销售员排序显示便条清单退出管理详细设计一、课题的功能模块的划分。1.主菜单及头文件设计:我们按照老师所给的示例我们首先编译了一个头文件,在头文件里,编译了主函数需要用到的一些函数,如#include stdio.h等,因为需要录入便条的所有信息,所有用一个数据结构来实现信

4、息的储存方式,用数组方式,把每条信息都编译成一个数组,如销售员代号用name4记录。头文件还包括了定义常数记录数typedef struct,主函数原型int menu_select();/*声明函数*/ int enter(RECODE t);/*声明函数*/ void salor(RECODE t,int n);/*声明函数*/ int sum(RECODE t,int n,int m);/*声明函数*/ void list1(RECODE t,int n);/*声明函数*/ void list2(RECODE t,int n);/*声明函数*/ void list3(RECODE t,i

5、nt n);/*声明函数*/ void save(RECODE t,int n);/*声明函数*/ int load(RECODE t);/*声明函数*/这些的都是主函数需要用到的数据,因此放入头文件当中,在主程序开始之前直接引用#include pro.h。2.编辑系统菜单运行:题目要求我们系统以菜单方式工作,所以我们现要定义一个系统的结构体数组RECODE rec600,用for (;)循环让菜单实现无限循环,让switch(menu_select()调用主菜单函数,返回值整数作开关语句的条件,之后分别定义菜单的信息,如:case 1:length=enter(rec);就是输入信息的定义

6、编辑,当然最后需要用到break来实现返回。菜单定义完成之后,开始编译菜单的输出,这部分,用了printf就把需要显示的菜单显示出来,然后由用户选择菜单的选项,因为菜单只有07的选项,为了防止用户输入选项超值,所以用do while语句来控制,(c7)限定了用户输入的数据只有07才有效,超值则返回开始菜单,重新选择(return)。3.输入信息:输入信息一般都是使用scanf来实现,但在用户输入之前需要解决一个问题,程序必须限制用户的输入序数(记录条数),所以在输入数据之前,必须先限定序数,方法则是用一个for循环来实现,有用户输入一个数字,成为循环的上限,而用户输入的便条信息则在此限定下,不

7、能超出,当超出时则返回到开始菜单。用户输入的便条信息分别存入对应的数组当中,如便条条数则存入ti.num当中。4.保存信息,参数为结构体数组和记录数:用户输入的信息需要保存时,用save选项进行保存。保存的时候,实现应该建立一个指向文件的指针,从而固定保存文件时的位置,之后用if语句来判断打开文件是否正常,if(fp=fopen(record.txt,wb)=NULL),如果没打开(打开不正常),则程序执行退出;当判断文件打开正常时,系统显示“保存文件”(用printf(n保存文件n)来完成),保存信息是用到的fprintf函数,将制定记录数输入文件fprintf(fp,%d,n),因为源文件

8、中采用了换行,保存文件是系统默认不会进行保存,所有必须加如换行符号保存,防止文件丢失,保证文件以用户输入的信息一致,保存换行符号依然采用fprintf函数来实现,具体源文件为fprintf(fp,rn);当确立了保存的可以性之后,系统开始录入需要保存的信息,用for循环语句,不断把用户输入的信息保存,因为之前在编写输入,输出程序时,都用到了一定的格式,保证信息的一一对应,所以在保存文件时,也需要确定和输入是相同的格式,这里依然使用fprintf函数来进行保存,如fprintf(fp,%-10d%-7d%-7d%-7d%-7d-7d,ti.name,ti.a1,ti.a2,ti.a3,ti.a4

9、,ti.a5)就是把销售员代号,产品代号,销售额按照间隔7个字符格式进行保存,在保存格式确立后,需要把换行符号再次写入文件,程序结束后fclose结束保存,并用printf输出“文件保存成功”,让用户知道已经保存文件。5. 读入取函数,参数为结构体数组:前面已经做了文件的保存,当保存文件成功后,系统会以record.txt文件保存在与程序同级的文件夹下,而读入函数,就是为了让用户再次打开运行程序时,可以直接读取之前已经输入并保存过的信息,和储存信息一样,读入函数也采用了参数为结构体数组,同样应该确定文件指向指针FILE *fp,读入函数之前,应该确定是否有已经保存的文件,用保存文件一样,用if

10、语句来进行判断if(fp=fopen(record.txt,rb)=NULL),如果判断失败,系统不能读入文件,则会显示“不能打开文件”,用printf(不能打开文件n)来实现,同时系统要结束读入文件的执行,用exit(1)实现;如果判断成功,则系统会自动读入用户已经保存的数据(fscanf(fp,%d,&n)读入记录数),用for循环把已经保存的数据一一对应的读入到正在执行的程序中,这里需要注意的是,读取的数据格式应该同保存时的一致,如储存时的格式是fprintf(fp,%-10d%-7d%-7d%-7d%-7d-7d,ti.name,ti.a1,ti.a2,ti.a3,ti.a4,ti.a

11、5),则读入的时的格式就为fscanf(fp,%d%d%d%d%d%d,&(ti.name),&(ti.a1),&(ti.a2),&(ti.a3),&(ti.a4),&(ti.a5),读取成功后关闭文件fclose(fp),并显示“成功地从文件读入数据!”(用printf实现)。6.清单输出: 读取销售情况有3个,分别是每个人每种产品的销售额,按销售额对销售员进行排序和每种产品的总销售额三个函数:1).每个人每种产品的销售额(由周锐完成): 首先,要定义每个人,每种产品,销售额数组如int i,j,sum0=0,sum1=0,sum2=0,sum3=0,sum4=0,sum5=0; int c

12、4,b14=0,b24=0,b34=0,b44=0,b54=0,用for循环来求每个人的总销售额:for(i=0;i4;i+);用for循环来求每个人每种产品的总销售额:for(i=0;in;i+),for(j=0;j4;j+);在用for循环每种产品的总销售额:for(i=0;i4;i+),之后则在系统界面输入销售员代号,产品代号,产品代号用printf即可实现,用sum对每个销售员的销售额求和,用system(cls)来录入信息,然后输出头标(如销售员代号,产品代号,销售额等,用printf实现),之后开始查询,用 for语句来。2).按销售额对销售员进行排序(由赵弘完成): 此部分要分两

13、部分其一是,每位销售员销售额;其二是,按销售额对销售员排序。在求每个销售员销售额时也是要先定义销售员代号,产品代号,销售额。接着是则是用输入要查询的销售员的代号,用scanf(%d,&s)来记录输入销售员代号的信息,然后输出头标(如销售员代号,产品代号,销售额等,用printf实现),之后开始查询,查询信息首先需要一个for语句来,实现对已存入数据的所有查询for(i=0;in;i+),关键内容是查询销售员代号时用if(strcmp(name,ti.name)=0),找出与输入的销售员相同的储存信息,查找完成后则把该销售员的所有信息全部输出。上面是求每个销售员销售额,接着是要在上面的基础上排序

14、。首先要定义两个数组如:int c4,m4,接着用for循环(for(i=0;i4;i+);for(j=i+1;j4;j+) )对销售员的销售额进行排序,再用if语句来求,最后是输出用printf(%dn,mi)实现。3).每种产品的总销售额(由李鸿完成): 也一样首先要定义数组,接着用ci=sum(t,n,i+1) 求每个人的总销售额,再用for循环,再用sum0+=ci对所有产品的销售额求总,用for循环对每个人每种产品的销售额求总销售额,再用for循环实现每种产品的总销售额,然后输出头标(如销售员代号,产品代号,总销售额等,用printf实现)即可。二、主要功能的实现头文件:#inclu

15、de stdio.h/*输入输出函数*/ #include stdlib.h/*通用应用程序函数*/ #include string.h/*字符串函数*/ #include ctype.h/*字符操作函数*/ typedef struct /*定义结构体变量*/ int name4; /*销售员代号*/int a1; /*产品一代号*/int a2; /*产品二代号*/int a3; /*产品三代号*/int a4; /*产品四代号*/int a5; /*产品五代号*/RECODE; int me/*以下是函数原型*/ nu_select();/*声明函数*/ int enter(RECODE

16、 t);/*声明函数*/ void salor(RECODE t,int n);/*声明函数*/ int sum(RECODE t,int n,int m);/*声明函数*/ void list1(RECODE t,int n);/*声明函数*/ void list2(RECODE t,int n);/*声明函数*/ void list3(RECODE t,int n);/*声明函数*/ void save(RECODE t,int n);/*声明函数*/ int load(RECODE t);/*声明函数*/函数:#include pro.h/*主函数开始*/void main()/*主函数

17、*/ RECODE rec600; int length; system(cls); /*清屏*/ for( ; ; ) /*无限循环*/ switch(menu_select() /*根据用户的选择判断该调用哪个功能函数*/ case 1:length=enter(rec); break; case 2:save(rec,length);break; case 3:length=load(rec);break; case 4:list1(rec,length);break; case 5:salor(rec,length);break; case 6:list2(rec,length);br

18、eak; case 7:list3(rec,length);break;case 0:exit(0); int menu_select() /*菜单函数*/ int n; printf(*MENU*nn); printf( 1 输入便条n);printf( 2 保存到文件n); printf( 3 读取文件n);printf( 4 显示便条清单n); printf( 5 每位销售员的销售额n); printf( 6 每种产品的销售额n); printf( 7 按销售额对销售员排序n); printf( 0 退出管理n); printf(*END*nn); printf( 请选择你的操作(0-7

19、): n); scanf(%d,&n); if(0n & n7) system(cls); /*清屏*/ return n;/*清单输入*/int enter(RECODE t) int i,num; system(cls); /*清屏*/ printf(请输入要写的便条条数:n); scanf(%d,&num);/*输入所要写入的清单的条数*/ printf(name product1 product2 product3 product4 product5); for(i=0;inum;i+)/*将所输入的条数存入结构体数组中*/ printf(nn-n); scanf(%d%d%d%d%d

20、%d,&ti.name,&ti.a1,&ti.a2,&ti.a3,&ti.a4,&ti.a5); printf(n-nnn); return i; /*保存文件*/void save(RECODE t,int n) int i; FILE *fp;/*调用fopen函数*/ if(fp=fopen(record.txt,wb)=NULL)/*如果函数带回一个空指针值*/ printf(不能打开文件n);/*不能打开文件*/ exit(1); fprintf(fp,%d,n); fprintf(fp,rn); for(i=0;in;i+) fprintf(fp,%-10d%-7d%-7d%-7d

21、%-7d-7d,ti.name,ti.a1,ti.a2,ti.a3,ti.a4,ti.a5);/*将便条的信息输出到fp指向的文件上*/ fprintf(fp,rn); fclose(fp);/*关闭文件*/ printf(*保存成功*nn);/*显示保存成功*/ printf(press any key to continue.n); getchar(); /*读取文件*/int load(RECODE t) int i,n; FILE *fp; if(fp=fopen(record.txt,r)=NULL)/*如果函数带回一个空指针值*/ printf(不能打开文件n);/*不能打开文件*

22、/ exit(1); fscanf(fp,%d,&n); for(i=0;in;i+) fscanf(fp,%d%d%d%d%d%d,&(ti.name),&(ti.a1),&(ti.a2), &(ti.a3),&(ti.a4),&(ti.a5);/*从fp指向的文件上读入便条信息*/ fclose(fp); printf(n 成功读取文件!n);/*成功读入信息*/ printf(press any key to continue.nn); getchar(); return n; /*显示清单*/void list1(RECODE t,int n) int i;FILE *fp; if(f

23、p=fopen(record.txt,r)=NULL)/*如果函数带回一个空指针值*/ printf(不能打开文件n);/*不能打开文件*/ exit(1); fscanf(fp,%d,&n); for(i=0;in;i+) fscanf(fp,%d%d%d%d%d%d,&(ti.name),&(ti.a1),&(ti.a2),&(ti.a3),&(ti.a4),&(ti.a5);/*从fp指向的文件上读入便条信息*/ fclose(fp); printf(*the lise of saling recode*nnn); printf(name product1 product2 produc

24、t3 product4 product5); for(i=0;in;i+)/*将所输入的条数存入结构体数组中*/ printf(nn-n); printf( %d %d %d %d %d %d,ti.name,ti.a1,ti.a2,ti.a3,ti.a4,ti.a5); printf(nn-n);printf(n press any key to continue.n); getchar(); /*每位销售员销售额*/void salor(RECODE t,int n) int i,s; int b1=0,b2=0,b3=0,b4=0,b5=0; printf(请输入要查询的销售员的代号(1

25、-4): n); scanf(%d,&s); /*输入所要查看的售货员的代号*/ for(i=0;in;i+) /*对每种产品的销售额求和*/ if(ti.name=s) b1+=ti.a1; b2+=ti.a2; b3+=ti.a3; b4+=ti.a4; b5+=ti.a5; printf(name product1 product2 product3 product4 product5n); printf(-n); printf(%-15d%-10d%-10d%-7d%-7d%-7d,s,b1,b2,b3,b4,b5); printf(npress enter to continue.n

26、); getchar(); /*销售产品总和*/int sum(RECODE t,int n, int e) int i,sum=0; for(i=0;i=n;i+)/*求销售产品的总和*/ if(e=ti.name) sum+=ti.a1; sum+=ti.a2; sum+=ti.a3; sum+=ti.a4; sum+=ti.a5; return sum; /*每种产品的销售额*/void list2(RECODE t,int n) int i,j,sum0=0,sum1=0,sum2=0,sum3=0,sum4=0,sum5=0; int c4,b14=0,b24=0,b34=0,b44

27、=0,b54=0; system(cls); ; for(i=0;i4;i+) ci=sum(t,n,i+1);/*求每个人的总销售额*/ for(i=0;i4;i+) sum0+=ci;/*所有产品的销售额*/ for(i=0;in;i+)/*求每个人每种产品的总销售额*/ for(j=0;j4;j+) if(j+1=ti.name) b1j+=ti.a1; b2j+=ti.a2; b3j+=ti.a3; b4j+=ti.a4; b5j+=ti.a5; for(i=0;i4;i+)/*每种产品的总销售额*/ sum1+=b1i; sum2+=b2i; sum3+=b3i; sum4+=b4i

28、; sum5+=b5i; printf( products numn); printf( code 1 2 3 4 5 sumnn); for(i=0;i4;i+) printf( %-10d%-7d%-7d%-7d%-7d%-7d%-7dn,i+1,b1i,b2i,b3i,b4i,b5i,ci); printf( psum %-7d%-7d%-7d%-7d%-7d%-7d,sum1,sum2,sum3,sum4,sum5,sum0); printf(n press any key to continue.n); getchar(); /*按销售额对销售员排序*/void list3(RECO

29、DE t,int n) int i,j,s; int c4,m4; /*定义两个数组*/ system(cls); /*清屏*/ for(i=0;i4;i+) mi=i+1; for(i=0;i4;i+) ci=sum(t,n,mi); for(i=0;i4;i+)/*按销售员的销售额进行排序*/ for(j=i+1;j4;j+) if(cicj) s=mi; mi=mj; mj=s; s=ci; ci=cj; cj=s; printf(the sequce of salorsaling number from many to fewn); for(i=0;i4;i+)/*输出销售员代号*/

30、printf(%dn,mi); printf(ninput any key to continue.n); getchar(); 程序调试与测试主窗体中分为N个功能键: 1. 输入销售额;2存储;3. 读取;4. 显示便条清单; 5. 每位销售员的销售额; 6. 每种产品的销售额; 7. 按销售额对销售员排序。遇到的问题: 比如:在输入销售信息时,数据多而繁杂,难以通过简单的函数进行输入和存储,经过我们同组成员一番讨论,我们采用了结构型数组变量来进行数据的存储,实现了数据简单而且明了输入;在运行完程序的某一功能后,输出的信息仍然显示在屏幕上,操作界面看起来十分繁杂,为此,我们采用了清屏函数对前

31、一过程输出的数据进行清屏操作。执行结果1. 进入主菜单:2. 选择“1”,输入便条:输入条数,如:输入2天的便条,8条:3. 选择“2”,保存到文件:4. 选择“3”,读取文件:5. 选择“4”,显示清单:6. 选择“5”,每位销售员的销售额:输入查询员工代号,如:查询的员工号为3:7. 选择“6”, 每种产品的销售额: 8. 选择“7”, 按销售额对销售员排序:9. 选择“0”,退出管理: 10. 保存的文件:保存的文件为TXT格式,其保存的文件为:总结1. 该课程设计的销售管理系统实现了对销售的各方面的管理,同时也对各项项目进行排序,最后输出统计表。2. 经过这两三天的课程设计,使我对C语

32、言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,通过实践,我也发现我的好多不足之处对C,首先对C语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对C语言中经常出现的错误也不了解,通过实践,使我在这几个方面的认识有所提高。 还有,就是通过实践的学习,我认到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。而学好C语言的最重要的地方就是要对各个概念都要透彻了解,在这次课程设计里面我才发现自己对概念性问题有很多不了解的地方,

33、导致使用的时候出现很多错误。 参考文献1、C语言程序设计 - 张磊 出版社:高等教育出版社 书号:ISBN-7-04-016437-6 X 2、语言编程宝典,作者:王大刚 3、C语言最新编程技巧200例 作者:鲁沐浴,电子工业出版社,1997,1 4、C语言程序设计实用技巧与程序实例 作者:梁 翎,李爱齐,上海科普出版社,1996,5 5、Turbo C程序设计技巧与应用实例 作者:陈国章,天津科学技术出版社,1995,5 6、C高级实用程序设计 作者:王士元,清华大学出版社,1996,6 7、C:The Complete Reference Author:Herbert Schildt 8、Programming in C - A Tutorial Author: Brian W. Kernighan , Bell Laboratories,Murray Hill, N. J29

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!