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