




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程序设计基础课程设计报告班 级: 姓 名: 指导教师: 完成日期: (题目)1 设计题目与要求题目:销售管理系统某公司有三个销售员(编号:1-3),负责销售四种产品(编号:1-4)。每个销售员都将当天出售的每种产品各写一张便条交上来。每张便条包含内容: 1)销售员的代号 2)产品的代号 3)这种产品的当天的销售额 每位销售员每天可能上缴0-5张便条。假设,收集到了上个月的所有便条,编写一个处理系统,读取上个月的销售情况(自己设定),进行如下处理。 1)计算上个月每个人每种产品的销售额。 2)按销售额对销售员进行排序,输出排序结果(销售员代号) 3)统计每种产品的总销售额,对这些产品按从高到底的顺序,输出排序结果(需输出产品的代号和销售额)(可选项) 4)输出统计报表要求:1,通过本课程设计,培养上机动手能力,使学生巩固C语言程序设计课程学习的内容,掌握工程软件设计的基本方法,强化上机动手能力,闯过编程关; 2,理解函数的本质,灵活使用各种函数,通过使用函数来实现某种功能。 3,为后续各门计算机课程的学习打下坚实基础;4,学会用c语言程序设计来设计销售管理系统设计,将所学知识用于实际。2 算法设计与描述(要求有相关流程图) 2.1 算法设计与描述数据结构图如下:销售管理系统菜单函数清单输入保存文件读取文件显示清单每位销售员的销售额销售产品总和每种产品的销售额按销售额对销售员排序 2.2 流程图输入记录读取文件保存到文件每位销售员的销售额每种产品的销售额按销售额对销售员排序显示便条清单退出管理3 设计软硬件环境IBM PC兼容机,Intel P4以上、1G内存、80GB硬盘、Windows 操作系统,Trubo C+ 3.0、VC6.0以上IDE环境。4 源程序代码清单#include stdio.h/*输入输出函数*/ #include stdlib.h/*通用应用程序函数*/ #include string.h/*字符串函数*/ #include ctype.h/*字符操作函数*/ typedef struct /*定义结构体变量*/ /* typedef的功能是定义新的类型。第一句就是定义了一种PTRFUN的类型,并定义这种类型为指向某种函数的指针,这种函数以一个int为参数并返回char类型。后面就可以像使用int,char一样使用ptrfun了。*/int name; int a1; int a2; int a3; int a4; RECODE; 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,int n);/*声明函数*/ void save(RECODE t,int n);/*声明函数*/ int load(RECODE t);/*声明函数*/ main()/*主函数*/ RECODE rec600; int length; system(cls); /*清屏*/ for( ; ; ) /*无限循环*/ switch(menu_select() /*根据用户的选择判断该调用哪个功能函数*/ case 1:length=enter(rec);break; case 2:salor(rec,length);break; case 3:list1(rec,length);break; case 4:list2(rec,length);break; case 5:list3(rec,length);break; case 6:save(rec,length);break; case 7:length=load(rec);break; case 0:exit(0); int menu_select() /*菜单函数*/ int n; printf(nnn 欢迎进入销售管理系统nnn);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): ); scanf(%d,&n); if(0n8) system(cls); /*清屏*/ return n; int enter(RECODE t)/*清单输入函数*/ int i,num; system(cls); /*清屏*/ printf(请输入销售员上各月的销售情况:); scanf(%d,&num);/*输入所要写入的清单的条数*/ if(num0)printf(出现错误,请您重新输入:);scanf(%d,&num);printf(销售员代号 产品1 产品2 产品3 产品4); for(i=0;inum;i+)/*将所输入的条数存入结构体数组中*/ printf(nn-n); scanf(%d%d%d%d%d,&,&ti.a1,&ti.a2,&ti.a3,&ti.a4); if(3)printf(出现错误,请您重新输入n);continue;if(ti.a10)printf(出现错误,请您重新输入n);continue;if(ti.a20)printf(出现错误,请您重新输入n);continue;if(ti.a30)printf(出现错误,请您重新输入n);continue;if(ti.a40)printf(出现错误,请您重新输入n);continue; printf(n-nnn); save(t, num) ;return i; void salor(RECODE t,int n) int i,s;char str66=zhao,str76=qian,str86=sun,str96=li,str06; int b1=0,b2=0,b3=0,b4=0; printf(请输入销售员代号(1-3):); scanf(%d,&s); /*输入所要查看的售货员的代号*/ printf(请您输入密码:);scanf(%s,str0);if(s=1)&(strcmp(str0,str6)=0)system(cls); /*清屏*/for(i=0;in;i+) /*对每种产品的销售额求和*/ if(=s) b1+=ti.a1; b2+=ti.a2; b3+=ti.a3; b4+=ti.a4; ; printf(销售员代号 产品1 产品2 产品3 产品4n); printf(-n); printf(%-15d%-10d%-10d%-7d%-7d%,s,b1,b2,b3,b4); printf(n按enter键继续.n); getchar();if(s=2)&(strcmp(str0,str7)=0)system(cls); /*清屏*/for(i=0;in;i+) /*对每种产品的销售额求和*/ if(=s) b1+=ti.a1; b2+=ti.a2; b3+=ti.a3; b4+=ti.a4; ; printf(销售员代号 产品1 产品2 产品3 产品4n); printf(-n); printf(%-15d%-10d%-10d%-7d%-7d%,s,b1,b2,b3,b4); printf(n按enter键继续.n); getchar();if(s=3)&(strcmp(str0,str8)=0)system(cls); /*清屏*/for(i=0;in;i+) /*对每种产品的销售额求和*/ if(=s) b1+=ti.a1; b2+=ti.a2; b3+=ti.a3; b4+=ti.a4; ; printf(销售员代号 产品1 产品2 产品3 产品4n); printf(-n); printf(%-15d%-10d%-10d%-7d%-7d%,s,b1,b2,b3,b4); printf(n按enter键继续.n); getchar();if(strcmp(str0,str9)=0) system(cls); for(i=0;in;i+) /*对每种产品的销售额求和*/ if(=s) b1+=ti.a1; b2+=ti.a2; b3+=ti.a3; b4+=ti.a4; ; printf(销售员代号 产品1 产品2 产品3 产品4n); printf(-n); printf(%-15d%-10d%-10d%-7d%-7d%,s,b1,b2,b3,b4); printf(n按enter键继续.n); getchar(); int sum(RECODE t,int n, int e) int i,sum=0; for(i=0;i=n;i+)/*求销售产品的总和*/ if(e=) sum+=ti.a1; sum+=ti.a2; sum+=ti.a3; sum+=ti.a4; return sum; void list1 (RECODE t,int n) int i,j,s;char str110=jingli,str210;printf(请您输入密码:);scanf(%s,str2);if(strcmp(str2,str1)=0)system(cls);else exit(0); int c3,m3; /*定义两个数组,m3包含3个销售员的代号,c3包含3个销售员各自的销售额*/ system(cls); /*清屏*/ for(i=0;i3;i+) /*销售员代号*/mi=i+1; for(i=0;i3;i+) ci=sum(t,n,mi); for(i=0;i3;i+)/*按销售员的销售额进行排序*/ for(j=i+1;j3;j+) if(cicj) s=mi; mi=mj; mj=s; s=ci; ci=cj; cj=s; printf(从多到少给销售员排序n); for(i=0;i3;i+)/*输出销售员代号*/ printf(%dn,mi); printf(n按任意键继续.n); getchar(); void list2(RECODE t,int n) int i,j,s,s1=0,s2=0,s3=0,s4=0; int c4,m4; for(i=0;i4;i+)/*产品代号*/ mi=i+1; for(i=0;i4;i+)/*给数组赋初值*/ ci=0; for(i=0;in;i+)/*分别对每一种产品的销售额求总和*/ s1+=ti.a1; s2+=ti.a2; s3+=ti.a3; s4+=ti.a4; c0=s1;c1=s2;c2=s3;c3=s4; for(i=0;i4;i+)/*按销售额对产品排序*/ for(j=i+1;j4;j+) if(cicj) s=ci;ci=cj; cj=s; s=mi;mi=mj; mj=s; system(cls); /*清屏*/ printf(根据每种产品的销售额从高到低顺序输出结果:n产品代号 销售额n);for(i=0;i4;i+)/*输出产品的代号和销售额*/ printf(%-10d%-10dn,mi,ci); printf(按任意键继续 .n); getchar(); void list3(RECODE t,int n) int i,j,sum0=0,sum1=0,sum2=0,sum3=0,sum4=0; int c3,b13=0,b24=0,b34=0,b44=0; system(cls); ; for(i=0;i3;i+) ci=sum(t,n,i+1);/*求每个人的总销售额*/ for(i=0;i3;i+) sum0+=ci;/*所有产品的销售额*/ for(i=0;in;i+)/*求每个人每种产品的总销售额*/ for(j=0;j3;j+) if(j+1=) b1j+=ti.a1; b2j+=ti.a2; b3j+=ti.a3; b4j+=ti.a4; for(i=0;i4;i+)/*每种产品的总销售额*/ sum1+=b1i; sum2+=b2i; sum3+=b3i; sum4+=b4i; printf(-the lise of saling recode-nnn); printf( 产品总数n); printf( code 1 2 3 4 sumnn); for(i=0;i3;i+) printf( %-10d%-7d%-7d%-7d%-7d%-7d%n,i+1,b1i,b2i,b3i,b4i,ci); printf( psum %-7d%-7d%-7d%-7d%-7d%,sum1,sum2,sum3,sum4,sum0); printf(n 按任意键继续.n); getchar(); void save(RECODE t,int n) int i; FILE *fp;/*调用fopen函数*/ if(fp=fopen(record.txt,wb)=NULL)/*如果函数带回一个空指针值*/ printf(不能打开文件n);/*不能打开文件*/ exit(1); printf(n保存文件n);fprintf(fp,销售员 产品1 产品2 产品3 产品4);fprintf(fp,rn); for(i=0;in;i+) fprintf(fp,%-10d%-7d%-7d%-7d%-7d%,,ti.a1,ti.a2,ti.a3,ti.a4);/*将便条的信息输出到fp指向的文件上*/ fprintf(fp,rn); fclose(fp);/*关闭文件*/ printf(*save success*nn);/*显示保存成功*/ printf(按任意键继续e.n); getchar(); int load(RECODE t) int i,n; FILE *fp; if(fp=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,&(),&(ti.a1),&(ti.a2),&(ti.a3),&(ti.a4);/*从fp指向的文件上读入便条信息*/ fclose(fp); printf(n 你已成功读入信息!n);/*成功读入信息*/ printf(p按任意键继续.nn); getchar(); return n; 5 程序运行结果1. 进入主菜单:2、选择“1”,输入销售员销售数据输入条数,如输入一天的三个便条3、请输入销售员上个月的销售情况4、每人每月的销售量5、根据销售量对销售员进行排序6、每种产品的总和7、销售情况列表8、保存文件9、载入文件10 保存的文件:保存的文件为TXT格式,其保存的文件为:6 设计总结(重点从设计方法、实现技术、功能等几方面总结。)1 该课程设计的销售管理系统实现了对销售的各方面的管理,同时将所学知识用于实际,使我们更好的认识到所学知识与实际生活之间的联系,加深理解。2. 经过这两三天的课程设计,使我对C语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,通过实践,我也发现我的好多不足之处对C,首先对C语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对C语言中经常出现的错误也不了解,通过实践,使我在这几个方面的认识有所提高。 还有,就是通过实践的学习,我认到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。而学好C语言的最重要的地方就是要对各个概念都要透彻了解,在这次课程设计里面我才发现自己对概念性问题有很多不了解的地方,导致使用的时候出现很多错误。我在我们组所做的是第三个输入信息与第四个保存信息参数为结构体数组和记录数,输入信息一般都是使用scanf来实现,但在用户输入之前需要解决一个问题,程序必须限制用户的输入序数(记录条数),所以在输入数据之前,必须先限定序数,方法则是用一个for循环来实现,有用户输入一个数字,成为循环的上限,而用户输入的便条信息则在此限定下,不能超出,当超出时则返回到开始菜单。用户输入的便条信息分别存入对应的数组当中,如便条条数则存入ti.num当中。用户输入的信息需要保存时,用save选项进行保存。保存的时候,实现应该建立一个指向文件的指针,从而固定保存文件时的位置,之后用if语句来判断打开文件是否正常
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 12克服胆怯(教学设计)-大象版心理健康四年级
- 第四单元第1课 身临其境 说课稿-2024-2025学年人教版(2024)初中美术七年级上册
- 第六课 成功贵在坚持说课稿-2025-2026学年小学心理健康川教版五年级上册-川教版
- 2025年高考生物试题分类汇编植物生命活动的调节(解析版)
- 2025年审计专业知识考试题及答案
- 2025年高考生物试题分类汇编:群落及其演替解析版
- 葡萄酒美容知识培训课件
- 小班科学连线题目及答案
- 2025经理聘用合同的范文
- 项目论文题目及答案范文
- 2025全国交管12123驾驶证学法减分考试题库与答案
- 《免除烦恼》课件
- 《非权力影响力》课件
- 2025年江西南昌市西湖城市建设投资发展集团有限公司招聘笔试参考题库附带答案详解
- 职业教育产教融合型数字化教材开发研究
- 文学传播学概论课件
- 第3单元主题活动三《创意玩具DIY》(课件)三年级上册综合实践活动
- 商务英语词汇大全
- 麻醉质量控制专家共识
- 人教PEP版(一起)(2024)一年级上册英语全册教案(单元整体教学设计)
- 反走私课件完整版本
评论
0/150
提交评论