1、345每种产品之和总和二、应用程序功能的详细说明:1、主函数void main():清屏之后对主菜单函数menu_select()进行无限循环2、菜单函数int menu_select():打印出菜单功能选项,包括便条清单输入、每个人每种产品的销售额、销售员销售额排行、统计报表、便条清单、储存文件、读取文件和退出8个选项。根据用户的选择判断该调用哪个功能函数,则输入相应的选项代号n(0-7)以运行该功能选项。3、清单输入函数int enter(RECODE t):清屏之后输出提示语“请输入便条的信息”,按提示语输入便条信息,输入数据的同时,已将该信息存入开始已定义的结构体数组typedef s
2、truct RECORD t 中,以便在排序功能选项、统计功能选项、输出清单列表选项等功能选项中读取信息,进行编辑,阅读。输入结束以信息全为零而结束清单输入,返回主菜单。4、销售员便条信息查询函数void salor(RECODE t,int n):进入查询功能,出现提示语“输入所要查看的售货员的代号”,输入销售员的代号(1-4),通过循环判断读取输入的销售员代号(s)来进行对信息的阅读。5、求和函数int sum(RECODE t,int n, int e):定义初始值sum=0通过对销售员代号的循环和判断(当销售员代号与传递的e值相同),累加并统计同一个销售员销售不同种产品的销售额信息,返
3、回统计值sum,以便调用。6、排序函数void list1 (RECODE t,int n):调用求和函数返回的统计值sum (使ci=sum(t,n,mi),按销售员的总销售额进行从大到小排序,输出销售员的代号mi。7、销售产品的销售额情况的函数调用void list2(RECODE t,int n):调用求和函数使ci=sum(t,n,i+1),累加并统计每个人销售每种产品的总销售额和所有销售员销售的所有产品的总销售额,再将每个人销售每种产品的总销售额放到定义的数组中(即xs5=sum1,sum2,sum3,sum4,sum5),按每种产品的总销售额sumi循环比较并排序输出产品代号ai和
4、总销售额xsi。8、销售统计报表输出函数void list3(RECODE t,int n):类似(6)输出以下表格:9、保存函数void save(RECODE t,int n):打开record.txt文件,如果函数带回一个空指针值if(fp=fopen(record.txt,wb)=NULL),则显示“不能打开文件”,非法退出再进行存储文件。通过文件指针,循环将便条信息输出到fp指向的文件。关闭文件,显示“*存储成功*”,“按任意键继续。”。10、读取函数int load(RECODE t):定义文件指针*fp,循环从fp指向的文件上读入便条信息,关闭文件,显示“成功读取文件信息!”,“
5、按任意键继续。返回n值。数据名称数据关联数据类型数据格式内容限制name,s,mint整型变量%d,%d,%d大于0小于5a1,a2,a3,a4,a5int 整型变量%d%d%d%d%d大于0小于6功能键代号n%d大于等于0小于8所有产品总和sum大于0每个销售员的总销售额c每个人每种产品的总销售额b1,b2,b3,b4,b5每种产品的总销售额xs三、输入数据类型、格式和内容限制:四、主要模块的算法描述 以程序流程图的方式给出 简要的语言描述:销售员产品信息查询函数void salor(RECODE t,int n)流程图: 假真求和函数int sum(RECODE t,int n, int
6、e)流程图: 真 排序函数void list1 (RECODE t,int n)流程图:假 假假 真 假 真五、程序的源代码清单:#include /*输入输出函数*/ stdlib.h/*通用应用程序函数*/ typedef struct /*定义结构体变量*/ int name;int a1;int a2;int a3;int a4;int a5;RECODE;int menu_select();/*选择菜单函数声明*/ int enter(RECODE t);/*进入函数声明*/ void salor(RECODE t,int n);/*声明函数*/ int sum(RECODE t,i
7、nt n,int m);/*统计函数声明*/ void list1(RECODE t,int n);/*菜单1函数声明*/ void list2(RECODE t,int n);/*菜单2函数声明*/ void list3(RECODE t,int n);/*菜单3函数声明*/ void save(RECODE t,int n);/*保存文件函数声明*/ int load(RECODE t);/*读取函数声明*/ void main()/*主函数*/ RECODE rec600;int length;system(cls); /*清屏*/ for( ; ; ) /*无限循环*/ switch(
8、menu_select() /*根据用户的选择判断该调用哪个功能函数*/ case 1:length=enter(rec);break; case 2:salor(rec,length); case 3:list1(rec,length); case 4:list2(rec,length); case 5:list3(rec,length); case 6:save(rec,length); case 7:length=load(rec); case 0:exit(0); /*菜单函数*/int menu_select() int n;printf(-menu-nn 1 输入便条n 2 每个人
9、每种产品的销售额n 3 销售员总销售额排行n 4 统计报表n 5 便条清单n 6 储存文件n 7 读取文件n 0 退出n-end-nn 请输入你的选择(0-7): scanf(%d,&n);if(0n&n8) return n; /*清单输入函数*/int enter(RECODE t) int i;请输入便条的信息:销售员代号 产品1 产品2 产品3 产品4 产品5for(i=0;i1000;i+) /*将所输入的条数存入结构体数组中*/ nn-n%d%d%d%d%d%dti.name,&ti.a1,&ti.a2,&ti.a3,&ti.a4,&ti.a5);if(ti.name!=1)&(t
10、i.name!=2)&=3)&=4)不存在该销售员的信息!if(ti.name=0)&(ti.a1=0)&(ti.a2=0)&(ti.a3=0)&(ti.a4=0)&(ti.a5=0)n-nnnreturn i;/*查询函数*/void salor(RECODE t,int n) int i,s;int b1=0,b2=0,b3=0,b4=0,b5=0;输入所要查看的售货员的代号:s); /*输入所要查看的售货员的代号*/ n;i+) /*对每种产品的销售额求和*/ if(ti.name=s)b1+=ti.a1;b2+=ti.a2;b3+=ti.a3;b4+=ti.a4;b5+=ti.a5;销
11、售员代号 产品1 产品2 产品3 产品4 产品5n-n%-15d%-10d%-10d%-7d%-7d%-7d,s,b1,b2,b3,b4,b5);n 按任意键继续.ngetchar();/*求和函数*/int sum(RECODE t,int n, int e) int i,sum=0;=n;i+)/*求销售产品的总和*/ if(e=ti.name) sum+=ti.a1;sum+=ti.a2;sum+=ti.a3;sum+=ti.a4;sum+=ti.a5;return sum;/*排序函数*/void list1 (RECODE t,int n) int i,j,s;int c4,m4;
12、/*定义两个数组*/ system(4;i+) mi=i+1;ci=sum(t,n,mi);i+)/*按销售员的销售额进行排序*/ for(j=i+1;jj+) if(cicj)s=mi;mi=mj;mj=s;s=ci;ci=cj;cj=s;从大到小销售员销售额排行榜ni+)/*输出销售员代号*/ %dn,mi);n 按任意键继续./*统计销售产品求和排序输出函数*/void list2(RECODE t,int n) int index,k,s;int i,j,sum0=0,sum1=0,sum2=0,sum3=0,sum4=0,sum5=0;int c4,b14=0,b24=0,b34=0
13、,b44=0,b54=0;ci=sum(t,n,i+1);/*求每个人的总销售额*/ sum0+=ci;/*所有产品的销售额*/ i+)/*求每个人每种产品的总销售额*/ for(j=0; if(j+1=ti.name) b1j+=ti.a1;b2j+=ti.a2;b3j+=ti.a3;b4j+=ti.a4;b5j+=ti.a5; i+)/*每种产品的总销售额*/ sum1+=b1i;sum2+=b2i;sum3+=b3i;sum4+=b4i;sum5+=b5i; int xs5=sum1,sum2,sum3,sum4,sum5;int a5=1,2,3,4,5;for(k=0;kxsinde
14、x)index=i;s=xsindex;xsindex=xsk;xsk=s;s=aindex;aindex=ak;ak=s;i+)产品代号:%-10d,ai);总销售额:%-10dn,xsi);按任意键继续 .n/*销售统计报表输出*/void list3(RECODE t,int n) int i,j,sum0=0,sum1=0,sum2=0,sum3=0,sum4=0,sum5=0;j+) if(j+1=ti.name) b1j+=ti.a1;i+)/*每种产品的总销售额*/ sum1+=b1i;-销售报表-nnn 销售员序号 1 2 3 4 5 总数nn %-7d%-7d%-7d%-7d
15、%-7d%-7d%-7dn,i+1,b1i,b2i,b3i,b4i,b5i,ci); 总和 %-7d%-7d%-7d%-7d%-7d%-7d,sum1,sum2,sum3,sum4,sum5,sum0);n 按任意键继续./*保存函数*/void save(RECODE t,int n) int i;FILE *fp;/*调用fopen函数*/ if(fp=fopen()=NULL)/*如果函数带回一个空指针值*/ 不能打开文件n/*不能打开文件*/ exit(1);n储存文件nfprintf(fp,n);rn%-10d%-7d%-7d%-7d%-7d%-7d,ti.name,ti.a1,ti
16、.a2,ti.a3,ti.a4,ti.a5);/*将便条的信息输出到fp指向的文件上*/ fclose(fp);/*关闭文件*/ *储存成功*nn/*显示保存成功*/ 按任意键继续./*读取函数*/int load(RECODE t) int i,n;rbfscanf(fp,%10d%7d%7d%7d%7d%7d/*从fp指向的文件上读入便条信息*/ n 成功读取文件信息!n/*成功读入信息*/ 按任意键继续.nn六、结束语:C语言实验课教学的改进增强了学生的学习热情,让学生从枯燥无味的语言学习中解放出来,在一定程度上提高了学生程序的编写、调试、优化等能力;对今后学习其他计算机课程打下良好的基础。对于实验课的教学,还有许多方面需要我们进一步的完善和提高。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1