c语言课程设计Word格式.docx
- 文档编号:22420695
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:19
- 大小:104.82KB
c语言课程设计Word格式.docx
《c语言课程设计Word格式.docx》由会员分享,可在线阅读,更多相关《c语言课程设计Word格式.docx(19页珍藏版)》请在冰豆网上搜索。
3
4
5
每种产品之和
总和
二、应用程序功能的详细说明:
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)输出以下表格:
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
%d
大于等于0小于8
所有产品总和
sum
大于0
每个销售员的总销售额
c[]
每个人每种产品的总销售额
b1[],b2[],b3[],b4[],b5[]
每种产品的总销售额
xs[]
三、输入数据类型、格式和内容限制:
四、主要模块的算法描述
–以程序流程图的方式给出
–简要的语言描述:
销售员产品信息查询函数voidsalor(RECODEt[],intn)流程图:
假
真
求和函数intsum(RECODEt[],intn,inte)流程图:
真
排序函数voidlist1(RECODEt[],intn)流程图:
假假
假
真
假真
五、程序的源代码清单:
#include<
stdio.h>
/*输入输出函数*/
stdlib.h>
/*通用应用程序函数*/
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);
case3:
list1(rec,length);
case4:
list2(rec,length);
case5:
list3(rec,length);
case6:
save(rec,length);
case7:
length=load(rec);
case0:
exit(0);
}
}}
/***************************菜单函数**************************/
intmenu_select()
intn;
printf("
--------------------------------menu------------------------------\n\n"
1输入便条\n"
2每个人每种产品的销售额\n"
3销售员总销售额排行\n"
4统计报表\n"
5便条清单\n"
6储存文件\n"
7读取文件\n"
0退出\n"
---------------------------------end---------------------------\n\n"
请输入你的选择(0-7):
"
scanf("
%d"
&
n);
if(0<
n&
&
n<
8)
returnn;
}
/****************************清单输入函数***************************/
intenter(RECODEt[])
inti;
请输入便条的信息:
"
销售员代号产品1产品2产品3产品4产品5"
for(i=0;
i<
1000;
i++){/*将所输入的条数存入结构体数组中*/
\n\n----------------------------------------------------------------\n"
%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)&
=3)&
=4))
不存在该销售员的信息!
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))
\n----------------------------------------------------------------------\n\n\n"
returni;
/************************查询函数************************/
voidsalor(RECODEt[],intn)
inti,s;
intb1=0,b2=0,b3=0,b4=0,b5=0;
输入所要查看的售货员的代号:
s);
/*输入所要查看的售货员的代号*/
n;
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;
};
销售员代号产品1产品2产品3产品4产品5\n"
--------------------------------------------------------------------------\n"
%-15d%-10d%-10d%-7d%-7d%-7d"
s,b1,b2,b3,b4,b5);
\n按任意键继续.\n"
getchar();
/************************求和函数************************/
intsum(RECODEt[],intn,inte)
{inti,sum=0;
=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("
4;
i++)
m[i]=i+1;
c[i]=sum(t,n,m[i]);
i++)/*按销售员的销售额进行排序*/
for(j=i+1;
j<
j++)
if(c[i]<
c[j]){
s=m[i];
m[i]=m[j];
m[j]=s;
s=c[i];
c[i]=c[j];
c[j]=s;
从大到小销售员销售额排行榜\n"
i++)/*输出销售员代号*/
%d\n"
m[i]);
\n按任意键继续."
/***********************统计销售产品求和排序输出函数************************/
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};
c[i]=sum(t,n,i+1);
/*求每个人的总销售额*/
sum0+=c[i];
/*所有产品的销售额*/
i++)/*求每个人每种产品的总销售额*/
for(j=0;
{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;
}}
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<
k++)
index=k;
for(i=k+1;
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;
i++){
产品代号:
%-10d"
a[i]);
总销售额:
%-10d\n"
xs[i]);
按任意键继续......\n"
/********************销售统计报表输出*********************/
voidlist3(RECODEt[],intn)
{inti,j,sum0=0,sum1=0,sum2=0,sum3=0,sum4=0,sum5=0;
j++){
if(j+1==t[i].name)
b1[j]+=t[i].a1;
i++){/*每种产品的总销售额*/
sum1+=b1[i];
-------------------------销售报表-------------------------\n\n\n"
销售员序号12345总数\n\n"
%-7d%-7d%-7d%-7d%-7d%-7d%-7d\n"
i+1,b1[i],b2[i],b3[i],b4[i],b5[i],c[i]);
总和%-7d%-7d%-7d%-7d%-7d%-7d"
sum1,sum2,sum3,sum4,sum5,sum0);
\n按任意键继续......."
/*************************保存函数*************************/
voidsave(RECODEt[],intn)
{inti;
FILE*fp;
/*调用fopen函数*/
if((fp=fopen("
))==NULL)/*如果函数带回一个空指针值*/
不能打开文件\n"
/*不能打开文件*/
exit
(1);
\n储存文件\n"
fprintf(fp,"
n);
\r\n"
%-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);
/*关闭文件*/
****储存成功***\n\n"
/*显示保存成功*/
按任意键继续......"
/*****************************读取函数*******************************/
intload(RECODEt[])
{inti,n;
rb"
fscanf(fp,"
%10d%7d%7d%7d%7d%7d"
/*从fp指向的文件上读入便条信息*/
\n成功读取文件信息!
!
\n"
/*成功读入信息*/
按任意键继续......\n\n"
六、结束语:
C语言实验课教学的改进增强了学生的学习热情,让学生从枯燥无味的语言学习中解放出来,在一定程度上提高了学生程序的编写、调试、优化等能力;
对今后学习其他计算机课程打下良好的基础。
对于实验课的教学,还有许多方面需要我们进一步的完善和提高。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计