C语言程序设计课程设计歌手成绩管理系统Word文档下载推荐.docx
- 文档编号:18234964
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:15
- 大小:131.04KB
C语言程序设计课程设计歌手成绩管理系统Word文档下载推荐.docx
《C语言程序设计课程设计歌手成绩管理系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C语言程序设计课程设计歌手成绩管理系统Word文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。
floatP2;
floatA[M];
};
structSinger
intnum;
floatsum;
charsingerName[10];
charsingName1[20];
charsingName2[20];
structSingsingScore1;
structSingsingScore2;
三、程序应具有以下基本功能:
v信息输入:
输入每个选手的数据包括姓名、各首歌曲的歌曲名、各评委的打分成绩,大众评委打分成绩
v计算成绩:
根据输入计算出各歌手的每首歌得分以及总得分。
v成绩排序:
按歌手的最后得分
v保存结果:
将结果保存在文本文件中。
v要求界面良好
四、主要流程图
程序各模块(输入,显示等)结构图:
五、系统测试
程序进行实例如下
1、显示主菜单界面:
2、选择1:
运行界面如下
六、源程序及系统文件使用说明
#include<
stdio.h>
stdlib.h>
/*动态存储分配函数*/
string.h>
/*字符函数和字符串函数*/
math.h>
/*数学函数*/
#defineM5
intN;
structSing/*歌曲信息结构体*/
{
floatA[M];
structSinger/*歌手信息结构体*/
structSingerSin[200];
voidprint()
printf("
----------------------------------------\n"
);
****************************************\n"
欢迎进入歌手成绩管理系统\n"
}
voidmenu();
voidinput()/*输入歌手信息*/
inti;
for(i=0;
i<
3;
i++)
{
请输入歌手编号:
"
scanf("
%d"
&
Sin[i].num);
请输入歌手姓名:
%s"
Sin[i].singerName);
请输入歌曲1名称:
Sin[i].singName1);
请输入歌曲1大众评委打分:
%f"
Sin[i].singScore1.P1);
请输入歌曲1专业评委1打分:
Sin[i].singScore1.A[0]);
请输入歌曲1专业评委2打分:
Sin[i].singScore1.A[1]);
请输入歌曲1专业评委3打分:
Sin[i].singScore1.A[2]);
请输入歌曲1专业评委4打分:
Sin[i].singScore1.A[3]);
请输入歌曲1专业评委5打分:
Sin[i].singScore1.A[4]);
歌曲1专业评委打分为:
Sin[i].singScore1.P2=(
Sin[i].singScore1.A[0]+
Sin[i].singScore1.A[1]+
Sin[i].singScore1.A[2]+
Sin[i].singScore1.A[3]+
Sin[i].singScore1.A[4])/5;
%f\n"
Sin[i].singScore1.P2);
请输入歌曲2名称:
Sin[i].singName2);
请输入歌曲2大众评委打分:
Sin[i].singScore2.P1);
请输入歌曲2专业评委1打分:
Sin[i].singScore2.A[0]);
请输入歌曲2专业评委2打分:
Sin[i].singScore2.A[1]);
请输入歌曲2专业评委3打分:
Sin[i].singScore2.A[2]);
请输入歌曲2专业评委4打分:
Sin[i].singScore2.A[3]);
请输入歌曲2专业评委5打分:
Sin[i].singScore2.A[4]);
歌曲2专业评委打分为:
Sin[i].singScore2.P2=(
Sin[i].singScore2.A[0]+
Sin[i].singScore2.A[1]+
Sin[i].singScore2.A[2]+
Sin[i].singScore2.A[3]+
Sin[i].singScore2.A[4])/5;
printf("
Sin[i].singScore2.P2);
该歌手的总成绩为:
Sin[i].sum=Sin[i].singScore1.P1+Sin[i].singScore1.P2+
Sin[i].singScore2.P1+Sin[i].singScore2.P2;
%lf\n"
Sin[i].sum);
}
menu();
voidoutput()/*输出歌手信息*/
输出歌手信息是:
\n"
{
编号歌手歌曲1大众评委专业评委歌曲2大众评委专业评委总分:
%d\t%4s\t%4s\t%4.2f\t%6.2f\t%6s\t%8.2f\t%4.2f\t%6.2f\t\n"
Sin[i].num,Sin[i].singerName,
Sin[i].singName1,
Sin[i].singScore1.P1,Sin[i].singScore1.P2,
Sin[i].singName2,
Sin[i].singScore2.P1,Sin[i].singScore2.P2,
Sin[i].sum);
voidsort()/*对歌手成绩进行排序*/
floatt,d,e,g,h;
inti,j,m;
charb[10],c[20],f[20];
for(j=0;
j<
j++)
for(i=0;
2-j;
if(Sin[i].sum>
Sin[i+1].sum)
{
t=Sin[i].sum;
Sin[i].sum=Sin[i+1].sum;
Sin[i+1].sum=t;
/*分数排序*/
m=Sin[i].num;
Sin[i].num=Sin[i+1].num;
Sin[i+1].num=m;
/*编号排序*/
strcpy(b,Sin[i].singerName);
strcpy(Sin[i].singerName,Sin[i+1].singerName);
strcpy(Sin[i+1].singerName,b);
/*名字复制替换进行名字排序*/
strcpy(c,Sin[i].singName1);
strcpy(Sin[i].singName1,Sin[i+1].singName1);
strcpy(Sin[i].singName1,c);
/*歌曲1名称排序*/
d=Sin[i].singScore1.P1;
Sin[i].singScore1.P1=Sin[i+1].singScore1.P1;
Sin[i+1].singScore1.P1=d;
/*歌曲1大众评委打分的排序*/
e=Sin[i].singScore1.P2;
Sin[i].singScore1.P2=Sin[i+1].singScore1.P2;
Sin[i+1].singScore1.P2=e;
/*歌曲1专业评委打分的排序*/
strcpy(f,Sin[i].singName2);
strcpy(Sin[i].singName2,Sin[i+1].singName2);
strcpy(Sin[i+1].singName2,f);
/*歌曲2名称的排序*/
g=Sin[i].singScore2.P1;
Sin[i].singScore2.P1=Sin[i+1].singScore2.P1;
Sin[i+1].singScore2.P1=g;
/*歌曲2大众评委打分的排序*/
h=Sin[i].singScore2.P2;
Sin[i].singScore2.P2=Sin[i+1].singScore2.P2;
Sin[i+1].singScore2.P2=h;
/*歌曲2专业评委打分的排序*/
}
printf("
排序后的结果为:
编号姓名总成绩:
for(i=0;
printf("
%d\t%s\t%lf\t\n"
Sin[i].num,Sin[i].singerName,
Sin[i].sum);
menu();
voidsave()/*将歌手信息保存到文本文件中*/
FILE*fp;
if((fp=fopen("
f:
\\lin"
"
wb"
))==NULL)
cannotopenfile\n"
return;
}
200;
if(fwrite(&
Sin[i],sizeof(structSinger),1,fp)==1)
文件写入错误\n"
break;
fclose(fp);
voidWritetoText(intn)/*将所有记录写入文件*/
inti=0;
/*定义文件指针*/
charfilename[200];
将所有记录写入文件:
/*输入文件名*/
输入文件名:
filename);
if((fp=fopen(filename,"
a"
))==NULL)/*打开文件*/
不能打开文件:
system("
pause"
/*终止程序*/
fprintf(fp,"
%d\n"
n);
/*循环写入数据*/
while(i<
n)
fprintf(fp,"
%d\t%2s\t%2s\t%lf\t%lf\t%6s\t%lf\t%lf\t%lf\t\n"
Sin[i].num,Sin[i].singerName,
Sin[i].singName1,Sin[i].singScore1.P1,Sin[i].singScore1.P2,
Sin[i].singName2,Sin[i].singScore2.P1,Sin[i].singScore2.P2,
Sin[i].sum);
i++;
/*关闭文件*/
Successed!
//返回成功信息
voidTianjia_a_record()/*添加函数*/
inti,j;
inta;
请输入一个歌手的编号:
a);
N;
if(a==Sin[i].num)/*两个整数进行比较*/
{
不能进行添加操作"
j++;
break;
}
if(j==0)/*新添加的歌手编号与原歌手中没有相同的*/
Sin[i].num=a;
歌手名:
scanf("
Sin[i].singerName);
歌曲1的名称:
Sin[i].singName1);
歌曲1的大众评委打分:
歌曲1的专业评委1打分:
歌曲1的专业评委2打分:
歌曲1的专业评委3打分:
歌曲1的专业评委4打分:
歌曲1的专业评委5打分:
歌曲1的专业评委打分:
Sin[i].singScore1.P2);
歌曲2的名称:
Sin[i].singName2);
歌曲2的大众评委打分:
歌曲2的专业评委1打分:
歌曲2的专业评委2打分:
歌曲2的专业评委3打分:
歌曲2的专业评委4打分:
歌曲2的专业评委5打分:
歌曲2的专业评委打分:
Sin[i].singScore2.P2);
该歌手的总成绩:
&
f"
Sin[i].sum);
save();
N++;
system("
voidname_Delete()/*按照姓名删除歌手信息*/
inti,j=0;
chara[20];
\n输入一个歌手的姓名"
a);
if(strcmp(Sin[i].singerName,a)==0)
Sin[i].num=Sin[i+1].num;
/*编号*/
/*歌手名*/
strcpy(Sin[i].singName1,Sin[i+1].singName1);
/*歌曲1名称*/
/*歌曲2名称*/
Sin[i].singScore1=Sin[i+1].singScore1;
/*歌曲1得分*/
Sin[i].singScore2=Sin[i+1].singScore2;
/*歌曲2得分*/
Sin[i].sum=Sin[i+1].sum;
/*总得分*/
该歌手信息删除成功"
N--;
//j++;
if(j==0)
系统中无该歌手信息"
voiddakai()/*定义打开函数*/
cls"
filename"
rb"
{printf("
文件不存在\n"
voidmenu()/*定义菜单函数*/
歌手成绩管理系统\n"
**********************Menu**********************\n"
*1.输入信息2.显示信息*\n"
*3.结果排序4.信息保存到文件中*\n"
*5.信息记录到文件中6.添加信息*\n"
*7.删除信息8.退出程序*\n"
************************************************\n"
请选择所要进行的选项:
voidQuit()/*退出函数*/
结束程序"
exit(0);
voidmenu_select()/*菜单选择*/
intn=3;
输入:
switch(a)
case1:
printf("
input();
break;
case2:
output();
case3:
sort();
case4:
save();
case5:
WritetoText(n);
case6:
Tianjia_a_record();
case7:
name_Delete();
case8:
Quit();
voidmain()
structSingerSin[200];
print();
menu_select();
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 课程设计 歌手 成绩管理系统