用C语言程序设计销售管理系统(共17页).doc
精选优质文档-倾情为你奉上1 前言某公司有四个销售员(编号:1-4),负责销售五种产品(编号:1-5)。每个销售员都将当天出售的每种产品各写一张便条交上来。每张便条包含内容:1)销售员的代号 ;2)产品的代号;3)这种产品的当天的销售额;每位销售员每天可能上缴0-5张便条。假设,收集到了上个月的所有便条,编写一个处理系统,读取上个月的销售情况(自己设定),进行如下处理。 1)计算上个月每个人每种产品的销售额。2)按销售额对销售员进行排序,输出排序结果(销售员代号)3)统计每种产品的总销售额,对这些产品按从高到低的顺序,输出排序结果(需输出产品的代号和销售额)4)输出统计报表 2 需求分析21要求(1)用c语言实现程序设计;(2)利用结构体进行相关信息处理;(3)画出查询模块的流程图;(4)系统的各个功能模块要求用函数的形式实现;(5)界面友好(良好的人机互交),程序要有注释。22任务(1)定义一个结构体类型数组,输入每一位同学的记录(包括姓名、电话号码、e_mail、地址),将其信息存入文件中;(2)输入姓名查询该同学的信息,并显示在屏幕上;(3)画出所有模块的流程图;(4)编写代码;(5)程序分析与调试。23运行环境(1)WINDOWS2000/XP系统(2)Turboc2.0编译环境24开发工具C语言3 概要设计3.1总体设计本程序要设计销售管理系统,首先要设计一个选择函数,用来选择运行其他各个函数。接着要分别设计输入数据函数,各种统计函数和各种排序函数,用以实现各种统计和排序功能,最后要设计一个数据请空函数和统计表输出函数,得到程序设计要求的表格。32 系统流程图(如图3.1)printf(" total is-%dn",su);su=su+sumj;Side By Sidesumj=0;j+j<Mj=0j+,k+k<Mk=j=0FILE*fp;图3.1 系统流程图clrscr();Side By SideIF clrscr();flag=2flag=1intflag;|Voidfunction5流程图(3-3-1)printf("nn -Ok -n");printffclose(fp1);fp1 ")=NULL)FILE*fp1;voidfunction6流程图(3-3-1)4 详细设计41详细设计思路1. main()主函数 设置了程序的流程,结束程序。2. select ( ) 选择函数 选择所想运行的各个函数.3. functionscan ( ) 输入函数 输入便条的数据.4. function1 ( ) 文件的数据输入函数 多次输入数据5. function2 ( ) 统计函数 每个人的每种产品的统计6. functionpaixu2 ( )总额排序函数 按销售额对商品进行排序7. function4() 总额统计函数 统计每种产品的总额8. function3() 售员排序函数 按照销售额对售员排序函数9. function5() 统计报表函数 统计商品总额10. function6() 清空文件函数 清空文件数据11. functionpaixu() 个人排序函数 按销售总额对售员排序4.2功能模块设计开始输入XX=A输入数据继续输入数据返回X=B统计各人销售数量返回X=C按各人销售额排序返回X=D按各商品销售排序返回X=E统计每月便条返回X=F清除数据并退出返回X=G输出表格返回42 具体代码实现#define N 4 /*宏定义职工数*/ #define M 5 /*商品数*/ #define T (N*M*30) #include"stdio.h" struct goods /*货物编号*/ int emp; int num; int price; gsT; struct emploee /*个人排序用*/ int sum; int num; empN,work; struct sum int num; int sum; sum1M,you;/*总额排序用*/ /*.打印选择函数.调试成功!.*/ print1() /*打印选择函数*/ printf("*mune*n"); printf(" please select what are you going to do:n"); printf(" * Hand on the tips (select A)n"); printf(" * Sum everybody's each sales (select B)n"); printf(" * Order employee by the sales (select C)n"); printf(" * Sum and order each goods by total sales (select D)n"); printf(" * Sum the tips (each month) (select E)n"); printf(" * clear all data!/first install me! (select F)n"); printf(" * Output the table (select G)n"); printf("*n"); /*完成*/ /*-选择函数-调试成功!-*/ int select() /*选择函数*/ int k; char a; do printf("Please select:"); scanf("%c",&a); if(a>='A'&&a<='G') a=a+32; while(a>='A'&&a<='G'|a>='a'&&a<='g')!=1); switch(a) case 'a':k=1;break; case 'b':k=2;break; case 'c':k=3;break; case 'd':k=4;break; case 'e':k=5;break; case 'f':k=6;break; case 'g':k=7;break; return(k); /*完成*/ /*.输入数据函数.调试成功.*/ void functionscan()/*输入数据函数*/ FILE *fp; char ch; if(fp=fopen("c:tcemployee1","a+")=NULL) exit(1); printf(" employee.No. goods.No. total cash:n"); ch=getchar(); ch=getchar(); while (ch!='n') fputc(ch,fp); ch=getchar(); rewind(fp); printf("Now you have data is:n"); ch=fgetc(fp); while(ch!=EOF) putchar(ch); ch=fgetc(fp); fputc('n',fp);/*添加回车符*/ fclose(fp); printf("n"); /*.文件的数据输入.调试成功.*/ function1()/*文件的数据输入*/ void functionscan(); FILE *fp1; int i; i=0; printf("-welcome to use- "); printf("n *(please input pleaseinput speace between data!)* n"); loop1: functionscan(); printf("continue?n");/*继续?*/ if(i<M*N&&(getchar()='y'|(getchar()='Y') i+;printf("-Now is%d the tips-n",i+1); goto loop1; printf("press any key backn"); getch(); /*.每个人的每种产品的统计.调试成功.*/ void function2()/*每个人的每种产品的统计*/ FILE *fp; int i=0,j=0,sum,k; printf("-Every employee's sales-nnn"); fp=fopen("c:tcemployee1","r+"); for(j=0;j<N;j+) /*员工数*/ for(k=0;k<M;k+) /*商品数*/ sum=0; for(i=0;i<T;) /*扫描便条数*/ fscanf(fp,"%d%d%d",&gsi.emp,&gsi.num,&gsi.price); if(j+1)=gsi.emp&&(k+1)=gsi.num) sum=sum+gsi.price; i+; printf(" | employee'sNo.%3d |goodsNo.is%4d |totalprice:%9d |n",j+1,k+1,sum); printf(" -n"); fclose(fp); printf("press any key backn"); getch(); /*-总额排序函数-*/ void functionpaixu2() int i,j,r; printf("-Now ordered / by sales-n"); for(i=0;i<M;i+) for(j=i+1;j<M;j+) if(sum1i.sum<sum1j.sum) you=sum1i; sum1i=sum1j; sum1j=you; for(r=0;r<M;r+) printf(" goods'No.%3d |totalprice:%10dn",sum1r.num,sum1r.sum); /*打印数据*/ /*.每种产品的总额.调试成功.*/ function4() /*每种产品的总额*/ FILE *fp; int i=0,sumM=0,k,r; fp=fopen("c:tcemployee1","r+"); /*员工数*/ for(k=0;k<M;k+) /*商品数*/ sumk=0; for(i=0;i<T;) /*扫描便条数*/ fscanf(fp,"%d%d%d",&gsi.emp,&gsi.num,&gsi.price); if(k+1)=gsi.num) sumk=sumk+gsi.price; i+; printf(" goodsNo.%4d |totalprice:%10dn",k+1,sumk); for(r=0;r<M;r+) sum1r.sum=sumr;sum1r.num=r+1; functionpaixu2(); fclose(fp); printf("press any key backn"); getch(); /*. .按照销售额对售员排序函数.调试成功.*/ function3() /*按照销售额对售员排序函数*/ FILE *fp; void functionpaixu(); int i=0,j=0,sumN=0,b=0; fp=fopen("c:tcemployee1","r+"); for(j=0;j<N;j+) /*扫描数据*/ sumj=0; /*员工数*/ for(i=0;i<5;) /*扫描便条数*/ fscanf(fp,"%d%d%d",&gsi.emp,&gsi.num,&gsi.price); if(j+1)=gsi.emp) sumj=sumj+gsi.price; i+; for(b=0;b<N;b+) empb.sum=sumb;empb.num=b+1; /*printf("%4d%4dn",empb.sum,empb.num);*/*数据正确性检查*/ j=0; for(j=0;j<N;j+) printf(" employee'sNo.%3d |totalprice:%10dn",j+1 ,sumj); /*打印数据*/ functionpaixu(); fclose(fp); printf("press any key back!n"); getch(); /*-调试成功-统计报表-*/ function5() FILE *fp; int su=0,i,j,sumM=0,k; printf(" -Sale's Table-n"); fp=fopen("c:tcemployee1","r+"); /*员工数*/ for(k=j=0;k<M;j+,k+) /*商品数*/ sumj=0; for(i=0;i<T;) /*扫描便条数*/ fscanf(fp,"%d%d%d",&gsi.emp,&gsi.num,&gsi.price); if(k+1)=gsi.num) sumj=sumj+gsi.price; i+; printf(" goodsNo.%4d |totalprice:%10dn",(k+1),sumj); for(j=0;j<M;j+) su=su+sumj; printf(" total is-%dn",su); fclose(fp); printf("press any key backn"); getch(); /*-清空文件函数-调试成功-*/ function6()/*清空文件函数*/ FILE *fp1; printf("nnplease wait!.n"); fp1=fopen("c:tcemployee1","w"); if(fp1=fopen("c:tcemployee1","w")=NULL)/*新建文件*/ printf("My soft in your computer have error!n"); printf("-Now please exit-n"); exit(1); else printf("nn -Ok -n"); fclose(fp1); printf("press any key backn"); getch(); /*-输出表格函数-调试成功-*/ function7()int t,s;int aNM; FILE *fp; int i=0,j=0,sum,k; fp=fopen("c:tcemployee1","r+");printf("table of the statistics of the salen");printf(" the number of the goods the totaln");printf("employee's number 1 2 3 4 5 n"); for(j=0;j<N;j+) /*员工数*/ for(k=0;k<M;k+) /*商品数*/ sum=0; t=0; for(i=0;i<T;) /*扫描便条数*/ fscanf(fp,"%d%d%d",&gsi.emp,&gsi.num,&gsi.price); if(j+1)=gsi.emp&&(k+1)=gsi.num) sum=sum+gsi.price; i+; akt+=sum; s=0; for(t=0;t<M;t+) s=s+akt; akM=s; printf("%5d",j+1); for(t=0;t<=M;t+) printf("%8d",akt); printf("n"); /*-个人排序函数-调试成功-*/ void functionpaixu() int i,j,r; printf("n-Now ordered / by sales-n"); for(i=0;i<N;i+) for(j=i+1;j<N;j+) if(empi.sum<empj.sum) work=empi; empi=empj; empj=work; for(r=0;r<N;r+) printf(" employee'sNo.%3d |totalprice:%10dn",empr.num,empr.sum); /*打印数据*/ /*.主函数.*/ main() /*主函数*/ int flag; loop2: print1(); flag=select(); if(flag=1) clrscr(); function1(); /*数据的输入*/ clrscr(); goto loop2; if(flag=2) clrscr(); function2(); /*每个人的每种产品的统计*/ goto loop2; if(flag=3) clrscr(); function3(); /*按照销售额对售员排序函数*/ goto loop2; if(flag=4) clrscr(); function4(); /*每种产品的总额 排序*/ goto loop2; if(flag=5) clrscr(); function5(); /*统计报表*/ goto loop2; if(flag=6) clrscr(); function6(); goto loop2; if(flag=7)clrscr(); function7(); goto loop2; 5课程设计的总结与体会该课程设计的销售管理系统实现了对销售的各方面的管理,同时也对各项项目进行排序,最后输出统计表。经过这么多天的课程设计,使我对C语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,使用它,通过实践,我也发现我还有许多不足之处。首先对C语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,而且还会有许多错误。通过这次的实践,使我在这几个方面的认识有所提高。就是还有通过这次的程序设计,让我更加深刻的明白了程序设计的重要性,同时也更加激起了我要努力学好这门课程的兴趣,现在我还有许多不明白的地方,还需多加努力。参考文献1 谭浩强.C程序设计(第三版).北京:清华大学出版社,2005.2 谭浩强. C程序设计题解与上机指导(第三版).北京:清华大学出版社,20053 罗朝盛,余文芳.C程序设计实用教程,人民邮电出版社,20054杨超宇,赵光明,孟祥瑞,李铁锋. C语言程序设计,华东理工大学出版社,2006致 谢 通过这段时间的学习,我学会了很多东西。同时也非常感谢董峰老师和刘红军老师这段时间的教育与指导。使我从对程序一无所知到勉强能够看懂程序,同时也使我了解到了程序的博大精深,体会到编制程序的无穷乐趣。这段时间的学习我看到了老师无私的奉献,也看到了老师不辞辛苦的来回奔波,让我们非常的感动,同时也更加的激发起了我们学习的兴趣。在这里再一次用热烈的掌声感谢老师。 07 信本二 张红霞专心-专注-专业