c语言课程设计销售管理系统完整版.docx
- 文档编号:5124423
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:17
- 大小:104.56KB
c语言课程设计销售管理系统完整版.docx
《c语言课程设计销售管理系统完整版.docx》由会员分享,可在线阅读,更多相关《c语言课程设计销售管理系统完整版.docx(17页珍藏版)》请在冰豆网上搜索。
c语言课程设计销售管理系统完整版
C语言课程设计
设计(论文)题目:
销售管理系统设计
学院名称:
电信学院
专业:
计算机科学与技术
班级:
计科081班
姓名:
学号
指导教师:
职称
定稿日期:
XX年2月27日
一、题目内容描述:
某公司有四个销售员(编号:
1-4),负责销售五种产品(编号:
1-5)。
每个销售员都将当天出售的每种产品各写一张便条交上来。
每张便条包含内容:
1、销售员的代号
2、产品的代号
3、这种产品的当天的销售额
每位销售员每天可能上缴0-5张便条。
假设,收集到了上个月的所有便条,编写一个处理系统,读取上个月的销售情况(自己设定),进行如下处理。
1)计算上个月每个人每种产品的销售额。
2)按销售额对销售员进行排序,输出排序结果(销售员代号)
3)统计每种产品的总销售额,对这些产品按从高到底的顺序,输出排序结果(需输出产品的代号和销售额)
4)输出统计报表
销售统计报表
产品代号
销售之和
销售员代号
1
2
3
4
5
1
2
3
4
每种产品之和
总和
二、应用程序功能的详细说明:
1、主函数voidmain():
清屏之后对主菜单函数menu_select()进行无限循环
2、菜单函数intmenu_select():
打印出菜单功能选项,包括便条清单输入、每个人每种产品的销售额、销售员销售额排行、统计报表、便条清单、储存文件、读取文件和退出8个选项。
根据用户的选择判断该调用哪个功能函数,则输入相应的选项代号n(0-7)以运行该功能选项。
3、清单输入函数intenter(RECODEt[]):
清屏之后输出提示语“请输入便条的信息”,按提示语输入便条信息,输入数据的同时,已将该信息存入开始已定义的结构体数组typedefstructRECORDt[]中,以便在排序功能选项、统计功能选项、输出清单列表选项等功能选项中读取信息,进行编辑,阅读。
输入结束以信息全为零而结束清单输入,返回主菜单。
4、销售员便条信息查询函数voidsalor(RECODEt[],intn):
进入查询功能,出现提示语“输入所要查看的售货员的代号”,输入销售员的代号(1-4),通过循环判断读取输入的销售员代号(s)来进行对信息的阅读。
5、求和函数intsum(RECODEt[],intn,inte):
定义初始值sum=0通过对销售员代号的循环和判断(当销售员代号与传递的e值相同),累加并统计同一个销售员销售不同种产品的销售额信息,返回统计值sum,以便调用。
6、排序函数voidlist1(RECODEt[],intn):
调用求和函数返回的统计值sum(使c[i]=sum(t,n,m[i])),按销售员的总销售额进行从大到小排序,输出销售员的代号m[i]。
7、销售产品的销售额情况的函数调用voidlist2(RECODEt[],intn):
调用求和函数使c[i]=sum(t,n,i+1),累加并统计每个人销售每种产品的总销售额和所有销售员销售的所有产品的总销售额,再将每个人销售每种产品的总销售额放到定义的数组中(即xs[5]={sum1,sum2,sum3,sum4,sum5}),按每种产品的总销售额sum[i]循环比较并排序输出产品代号a[i]和总销售额xs[i]。
8、销售统计报表输出函数voidlist3(RECODEt[],intn):
类似(6)输出以下表格:
销售统计报表
产品代号
销售之和
销售员代号
1
2
3
4
5
1
2
3
4
每种产品之和
总和
9、保存函数voidsave(RECODEt[],intn):
打开record.txt文件,如果函数带回一个空指针值if((fp=fopen("record.txt","wb"))==NULL),则显示“不能打开文件”,非法退出再进行存储文件。
通过文件指针,循环将便条信息输出到fp指向的文件。
关闭文件,显示“*****存储成功*****”,“按任意键继续。
。
。
。
。
。
”。
10、读取函数intload(RECODEt[]):
定义文件指针*fp,循环从fp指向的文件上读入便条信息,关闭文件,显示“成功读取文件信息!
!
!
”,“按任意键继续。
。
。
。
。
。
”。
返回n值。
数据名称
数据关联
数据类型
数据格式
内容限制
销售员代号
name,s,m[]
int整型变量
%d,%d,%d
大于0小于5
产品代号
a1,a2,a3,a4,a5
int整型变量
%d%d%d%d%d
大于0小于6
功能键代号
n
int整型变量
%d
大于等于0小于8
所有产品总和
sum
int整型变量
%d
大于0
每个销售员的总销售额
c[]
int整型变量
%d
大于0
每个人每种产品的总销售额
b1[],b2[],b3[],b4[],b5[]
int整型变量
%d%d%d%d%d
大于0
每种产品的总销售额
xs[]
int整型变量
%d
大于0
三、输入数据类型、格式和内容限制:
四、主要模块的算法描述
–以程序流程图的方式给出
–简要的语言描述:
销售员产品信息查询函数voidsalor(RECODEt[],intn)流程图:
假
真
求和函数intsum(RECODEt[],intn,inte)流程图:
假
真
排序函数voidlist1(RECODEt[],intn)流程图:
假假
真
真
假
真
假真
五、程序的源代码清单:
#include
#include
typedefstruct/*定义结构体变量*/
{
intname;
inta1;
inta2;
inta3;
inta4;
inta5;
}RECODE;
intmenu_select();/*选择菜单函数声明*/
intenter(RECODEt[]);/*进入函数声明*/
voidsalor(RECODEt[],intn);/*声明函数*/
intsum(RECODEt[],intn,intm);/*统计函数声明*/
voidlist1(RECODEt[],intn);/*菜单1函数声明*/
voidlist2(RECODEt[],intn);/*菜单2函数声明*/
voidlist3(RECODEt[],intn);/*菜单3函数声明*/
voidsave(RECODEt[],intn);/*保存文件函数声明*/
intload(RECODEt[]);/*读取函数声明*/
voidmain()/*主函数*/
{
RECODErec[600];
intlength;
system("cls");/*清屏*/
for(;;)/*无限循环*/
{switch(menu_select()){/*根据用户的选择判断该调用哪个功能函数*/
case1:
length=enter(rec);break;
case2:
salor(rec,length);break;
case3:
list1(rec,length);break;
case4:
list2(rec,length);break;
case5:
list3(rec,length);break;
case6:
save(rec,length);break;
case7:
length=load(rec);break;
case0:
exit(0);}
}}
/***************************菜单函数**************************/
intmenu_select()
{
intn;
printf("--------------------------------menu------------------------------\n\n");
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---------------------------\n\n");
printf("请输入你的选择(0-7):
");
scanf("%d",&n);
if(0 system("cls");/*清屏*/ returnn; } /****************************清单输入函数***************************/ intenter(RECODEt[]) { inti; system("cls");/*清屏*/ printf("请输入便条的信息: "); printf("销售员代号产品1产品2产品3产品4产品5"); for(i=0;i<1000;i++){/*将所输入的条数存入结构体数组中*/ printf("\n\n----------------------------------------------------------------\n"); scanf("%d%d%d%d%d%d",&t[i].name,&t[i].a1,&t[i].a2,&t[i].a3,&t[i].a4,&t[i].a5); if((t[i].name! =1)&&(t[i].name! =2)&&(t[i].name! =3)&&(t[i].name! =4)) printf("不存在该销售员的信息! "); if((t[i].name==0)&&(t[i].a1==0)&&(t[i].a2==0)&&(t[i].a3==0)&&(t[i].a4==0)&&(t[i].a5==0)) break; } printf("\n----------------------------------------------------------------------\n\n\n"); returni; } /************************查询函数************************/ voidsalor(RECODEt[],intn) { inti,s; intb1=0,b2=0,b3=0,b4=0,b5=0; printf("输入所要查看的售货员的代号: "); scanf("%d",&s);/*输入所要查看的售货员的代号*/ for(i=0;i if(t[i].name==s){ b1+=t[i].a1; b2+=t[i].a2; b3+=t[i].a3; b4+=t[i].a4; b5+=t[i].a5;}; printf("销售员代号产品1产品2产品3产品4产品5\n"); printf("--------------------------------------------------------------------------\n"); printf("%-15d%-10d%-10d%-7d%-7d%-7d",s,b1,b2,b3,b4,b5); printf("\n按任意键继续.\n"); getchar(); } /************************求和函数************************/ intsum(RECODEt[],intn,inte) {inti,sum=0; for(i=0;i<=n;i++)/*求销售产品的总和*/ if(e==t[i].name) {sum+=t[i].a1; sum+=t[i].a2; sum+=t[i].a3; sum+=t[i].a4; sum+=t[i].a5; } returnsum; } /************************排序函数************************/ voidlist1(RECODEt[],intn) {inti,j,s; intc[4],m[4];/*定义两个数组*/ system("cls");/*清屏*/ for(i=0;i<4;i++) m[i]=i+1; for(i=0;i<4;i++) c[i]=sum(t,n,m[i]); for(i=0;i<4;i++)/*按销售员的销售额进行排序*/ for(j=i+1;j<4;j++) if(c[i] s=m[i]; m[i]=m[j]; m[j]=s; s=c[i]; c[i]=c[j]; c[j]=s; } printf("从大到小销售员销售额排行榜\n"); for(i=0;i<4;i++)/*输出销售员代号*/ printf("%d\n",m[i]); printf("\n按任意键继续."); getchar(); } /***********************统计销售产品求和排序输出函数************************/ voidlist2(RECODEt[],intn) {intindex,k,s; inti,j,sum0=0,sum1=0,sum2=0,sum3=0,sum4=0,sum5=0; intc[4],b1[4]={0},b2[4]={0},b3[4]={0},b4[4]={0},b5[4]={0}; system("cls");; for(i=0;i<4;i++) c[i]=sum(t,n,i+1);/*求每个人的总销售额*/ for(i=0;i<4;i++) sum0+=c[i];/*所有产品的销售额*/ for(i=0;i for(j=0;j<4;j++) {if(j+1==t[i].name) {b1[j]+=t[i].a1; b2[j]+=t[i].a2; b3[j]+=t[i].a3; b4[j]+=t[i].a4; b5[j]+=t[i].a5; }} for(i=0;i<4;i++)/*每种产品的总销售额*/ {sum1+=b1[i]; sum2+=b2[i]; sum3+=b3[i]; sum4+=b4[i]; sum5+=b5[i];} intxs[5]={sum1,sum2,sum3,sum4,sum5}; inta[5]={1,2,3,4,5}; for(k=0;k<4;k++) { index=k; for(i=k+1;i<5;i++) if(xs[i]>xs[index]) index=i; s=xs[index]; xs[index]=xs[k]; xs[k]=s; s=a[index]; a[index]=a[k]; a[k]=s;} for(i=0;i<5;i++){ printf("产品代号: %-10d",a[i]); printf("总销售额: %-10d\n",xs[i]);} printf("按任意键继续......\n"); getchar(); } /********************销售统计报表输出*********************/ voidlist3(RECODEt[],intn) {inti,j,sum0=0,sum1=0,sum2=0,sum3=0,sum4=0,sum5=0; intc[4],b1[4]={0},b2[4]={0},b3[4]={0},b4[4]={0},b5[4]={0}; system("cls");; for(i=0;i<4;i++) c[i]=sum(t,n,i+1);/*求每个人的总销售额*/ for(i=0;i<4;i++) sum0+=c[i];/*所有产品的销售额*/ for(i=0;i for(j=0;j<4;j++){ if(j+1==t[i].name) { b1[j]+=t[i].a1; b2[j]+=t[i].a2; b3[j]+=t[i].a3; b4[j]+=t[i].a4; b5[j]+=t[i].a5; } } for(i=0;i<4;i++){/*每种产品的总销售额*/ sum1+=b1[i]; sum2+=b2[i]; sum3+=b3[i]; sum4+=b4[i]; sum5+=b5[i]; } printf("-------------------------销售报表-------------------------\n\n\n"); printf("销售员序号12345总数\n\n"); for(i=0;i<4;i++) printf("%-7d%-7d%-7d%-7d%-7d%-7d%-7d\n",i+1,b1[i],b2[i],b3[i],b4[i],b5[i],c[i]); printf("总和%-7d%-7d%-7d%-7d%-7d%-7d",sum1,sum2,sum3,sum4,sum5,sum0); printf("\n按任意键继续......."); getchar(); } /*************************保存函数*************************/ voidsave(RECODEt[],intn) {inti; FILE*fp;/*调用fopen函数*/ if((fp=fopen("record.txt","wb"))==NULL)/*如果函数带回一个空指针值*/ { printf("不能打开文件\n");/*不能打开文件*/ exit (1); } printf("\n储存文件\n"); fprintf(fp,"%d",n); fprintf(fp,"\r\n"); for(i=0;i { fprintf(fp,"%-10d%-7d%-7d%-7d%-7d%-7d",t[i].name,t[i].a1,t[i].a2,t[i].a3,t[i].a4,t[i].a5);/*将便条的信息输出到fp指向的文件上*/ fprintf(fp,"\r\n"); } fclose(fp);/*关闭文件*/ printf("****储存成功***\n\n");/*显示保存成功*/ printf("按任意键继续......"); getchar(); } /*****************************读取函数*******************************/ intload(RECODEt[]) {inti,n; FILE*fp; if((fp=fopen("record.txt","rb"))==NULL)/*如果函数带回一个空指针值*/ { printf("不能打开文件\n");/*不能打开文件*/ exit (1); } fscanf(fp,"%d",&n); for(i=0;i fscanf(fp,"%10d%7d%7d%7d%7d%7d",&t[i].name,&t[i].a1,&t[i].a2,&t[i].a3,&t[i].a4,&t[i].a5);/*从fp指向的文件上读入便条信息*/ fclose(fp); printf("\n成功读取文件信息! ! ! \n");/*成功读入信息*/ printf("按任意键继续......\n\n"); getchar(); returnn; } 六、结束语: C语言实验课教学的改进增强了学生的学习热情,让学生从枯燥无味的语言学习中解放出来,在一定程度上提高了学生程序的编写、调试、优化等能力;对今后学习其他计算机课程打下良好的基础。 对于实验课的教学,还有许多方面需要我们进一步的完善和提高。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 销售 管理 系统 完整版