C语言程序课程设计歌手比赛系统.docx

上传人:b****5 文档编号:28269597 上传时间:2023-07-10 格式:DOCX 页数:18 大小:193.79KB
下载 相关 举报
C语言程序课程设计歌手比赛系统.docx_第1页
第1页 / 共18页
C语言程序课程设计歌手比赛系统.docx_第2页
第2页 / 共18页
C语言程序课程设计歌手比赛系统.docx_第3页
第3页 / 共18页
C语言程序课程设计歌手比赛系统.docx_第4页
第4页 / 共18页
C语言程序课程设计歌手比赛系统.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

C语言程序课程设计歌手比赛系统.docx

《C语言程序课程设计歌手比赛系统.docx》由会员分享,可在线阅读,更多相关《C语言程序课程设计歌手比赛系统.docx(18页珍藏版)》请在冰豆网上搜索。

C语言程序课程设计歌手比赛系统.docx

C语言程序课程设计歌手比赛系统

淮南师范学院

课程设计报告

 

歌手比赛系统

 

******

学号:

**********

专业:

计算机科学与技术

班级:

10级

(1)班

指导教师:

***

职称:

XXX

 

2013年3月7日

1.摘要

C语言是一门计算机高级语言,它在Microsoft开发的软件VisualC++6.0中执行,C语言具有很多优点:

1.C语言具有丰富的数据类型,众多的运算符,体现结构化程序设计的优良控制结构,具有抽象功能及体现信息隐蔽思想的函数。

2.C语言的应用几乎遍及了程序的各个领域,如科学家,系统程序设计,字处理软件和电子表格软件的开发,信息管理,计算机辅助设计,等方面。

3.C语言简洁,为完成某一功能所写的源程序代码往往比其他语言写得短,便利程序输入工作量减少。

4.若程序员在书写过程时严格遵循ANSIC标准,则其源代码可不作修改,即可用于各种型号的计算机和各种操作系统,因此,C语言具有良好的可移植性。

本次实践我们选择了使用C语言编写基于链表的程序,不仅使大家对程序设计、编程方法有了进一步提高,而且掌握了使用C语言动态内存分配及数据结构等方面的知识。

2.系统设计

2.1设计分析

2.1.1项目描述

1.项目名称:

歌手打分系统

2.功能描述:

(1)生成字符界面的功能菜单

**********1.输入选手数据**********

**********2.评委打分**************

**********3.成绩排序**************

**********4.数据查询**************

**********5.追加学生数据**********

**********6.写入数据文件**********

**********7.退出系统**************

(2)通过输入菜单项的序号启动相应模块的功能

1能够根据输入的选手人数创建链表;

2录入9名评委给选手的打分,并存储到文件singerOriginal.dat中;

3按照去掉一个最高分和去掉一个最低分的原则求每名选手的平均分;

2按平均分由高到低的顺序对选手进行排序;

3把排名后的数据存储到文件singerFianl.dat中;

4把原始数据和最终的结果输出到屏幕;

4在第②步中保存singerOriginal.dat文件之前,可根据情况修改数据,例如:

插入或删除歌手。

2.2程序结构

2.2.1程序划分

将歌手打分系统程序进行系统模块划分,共分为九部分,分别是:

1.定义结构体

2.创建链表函数

3.输入数据函数

4.计算函数

5.排序函数

6.输出数据函数

7.输出最终数据

8.删除函数

9.插入函数

10.主函数

2.2.2程序结构流程图

 

 

3.系统实现

3.1各模块的功能及程序说明

创建链表:

使用尾插法插入数据;

输入选手信息:

包括选手信息的输入,选手成绩的输入,去掉一个最高分和最低分,并将其余评委的评分求出平均值。

输出选手排名:

包括选手成绩排名。

删除和插入选手信息:

将退赛选手和新参加的比赛的选手进行删除和插入。

主函数:

将所有函数实现。

3.2系统主要功能模块的运行效果图

程序的运行效果图:

4.设计体会

在本次的C语言实践中,让我受益匪浅,通过本次的实践,让更深入的了解了C语言这门计算机语言,也明白了软件开发的相关流程和基本步骤,也许我的程序还存在些许问题,也许还不完美,但是我相信在以后的学习中我们会继改进的。

也希望老师可以给我们提出您的宝贵意见。

5.参考文献

编程入门网:

C程序设计(第四版)谭浩强著

 

6.源程序代码

#include

#include

#include

#include

#defineN3

#defineM10

intadd=N-1;

intsum[N]={0},Max[N],Min[N];

floataver[N]={0};

structplayer

{intnum;

charname[8];

intscore[M];

};

voidInistplayer(structplayera[],intn)

{inti;

for(i=0;i

scanf("%d%s",&a[i].num,&a[i].name);

}

voidInputscore(intscore[],intn)

{inti;

for(i=0;i

score[i]=1+(int)10*rand()/(RAND_MAX+1);

}

voidsort(structplayera[],floatb[],intn)

{inti,k,j,t;

floattemp;

charstr[8];

for(i=0;i

{k=i;

for(j=i+1;j

if(b[k]>b[j])k=j;

if(k!

=i)

{temp=b[i];

b[i]=b[k];

b[k]=temp;

strcpy(str,a[i].name);

strcpy(a[i].name,a[k].name);

strcpy(a[k].name,str);

t=a[i].num;

a[i].num=a[k].num;

a[k].num=t;

}

}

}

voidmain()

{intflag=1,n,i,m,j;

FILE*fp;

fp=fopen("data.txt","w+");

structplayera[20];

printf("**********1.输入选手数据***********\n");

printf("**********2.评委打分***************\n");

printf("**********3.成绩排序***************\n");

printf("**********4.数据查询***************\n");

printf("**********5.追加学生数据***********\n");

printf("**********6.写入数据文件***********\n");

printf("**********7.退出系统***************\n");

while(flag)

{printf("你想进行的操作:

");

scanf("%d",&n);

switch(n)

{

case1:

Inistplayer(a,N);break;

case2:

srand((unsigned)time(NULL));

for(i=0;i

{

printf("%d位选手的成绩:

",i+1);

Inputscore(a[i].score,M);

for(j=0;j

printf("%d",a[i].score[j]);

printf("\n");

}

break;

case3:

for(i=0;i

{Max[i]=a[i].score[0];

Min[i]=a[i].score[0];

for(j=0;j

{

sum[i]+=a[i].score[j];

if(Max[i]

if(Min[i]>a[i].score[j])Min[i]=a[i].score[j];

}

aver[i]=(float)(sum[i]-Max[i]-Min[i])/(M-2);

}

sort(a,aver,N);

for(i=0;i

printf("%s%5.2f\n",a[i].name,aver[i]);

break;

case4:

printf("你想查询选手的数据:

");

scanf("%d",&m);

for(i=0;i

if(a[i].num==m)

{

printf("%d号选手%s总分:

%d,最高分%d,最低分%d,平均分%5.2f",a[i].num,a[i].name,sum[i],Max[i],Min[i],aver[i]);

printf("\n");

}

break;

case5:

printf("请输入要追加的选手数据:

\n");

add+=1;

scanf("%d%s",&a[add].num,&a[add].name);

break;

case6:

printf("将数据写入文件中:

\n");

for(i=0;i

{

fprintf(fp,"%d",a[i].num);

fprintf(fp,"%s",a[i].name);

fprintf(fp,"%d\n",a[i].score);

}

break;

case7:

exit(0);

break;

default:

flag=0;

}

}

}

程序2:

#include

#include

#include

#include

//#defineN3

#defineM10

intadd=N-1;

intx=3;

intsum[N]={0},Max[N],Min[N];

floataver[N]={0};

structplayer

{intnum;

charname[8];

intscore[M];

};

voidInistplayer(structplayera[],intn)

{inti;

for(i=0;i

scanf("%d%s",&a[i].num,&a[i].name);

}

voidInputscore(intscore[],intn)

{inti;

for(i=0;i

score[i]=1+(int)10*rand()/(RAND_MAX+1);

}

voidsort(structplayera[],floatb[],intn)

{inti,k,j,t;

floattemp;

charstr[8];

for(i=0;i

{k=i;

for(j=i+1;j

if(b[k]>b[j])k=j;

if(k!

=i)

{temp=b[i];

b[i]=b[k];

b[k]=temp;

strcpy(str,a[i].name);

strcpy(a[i].name,a[k].name);

strcpy(a[k].name,str);

t=a[i].num;

a[i].num=a[k].num;

a[k].num=t;

}

}

}

voidmain()

{intflag=1,n,i,m,j;

FILE*fp;

fp=fopen("data.txt","w+");

structplayera[20];

printf("**********1.输入选手数据***********\n");

printf("**********2.评委打分***************\n");

printf("**********3.成绩排序***************\n");

printf("**********4.数据查询***************\n");

printf("**********5.追加学生数据***********\n");

printf("**********6.写入数据文件***********\n");

printf("**********7.退出系统***************\n");

while(flag)

{printf("你想进行的操作:

");

scanf("%d",&n);

switch(n)

{

case1:

Inistplayer(a,N);break;

case2:

srand((unsigned)time(NULL));

for(i=0;i

{

printf("%d位选手的成绩:

",i+1);

Inputscore(a[i].score,M);

for(j=0;j

printf("%d",a[i].score[j]);

printf("\n");

}

break;

case3:

for(i=0;i

{Max[i]=a[i].score[0];

Min[i]=a[i].score[0];

for(j=0;j

{

sum[i]+=a[i].score[j];

if(Max[i]

if(Min[i]>a[i].score[j])Min[i]=a[i].score[j];

}

aver[i]=(float)(sum[i]-Max[i]-Min[i])/(M-2);

}

sort(a,aver,x);

for(i=0;i

printf("%s%5.2f\n",a[i].name,aver[i]);

break;

case4:

printf("你想查询选手的数据:

");

scanf("%d",&m);

for(i=0;i

if(a[i].num==m)

{

printf("%d号选手%s总分:

%d,最高分%d,最低分%d,平均分%5.2f",a[i].num,a[i].name,sum[i],Max[i],Min[i],aver[i]);

printf("\n");

}

x=x+1;

break;

case5:

printf("请输入要追加的选手数据:

\n");

add+=1;

scanf("%d%s",&a[add].num,&a[add].name);

break;

case6:

printf("将数据写入文件中:

\n");

for(i=0;i

{

fprintf(fp,"%d",a[i].num);

fprintf(fp,"%s",a[i].name);

fprintf(fp,"%d\n",a[i].score);

}

break;

case7:

exit(0);

break;

default:

flag=0;

}

}

}

 

课程设计报告评分表(即封底)

淮南师范学院

学年课程设计报告评分表

学生姓名:

XXX学号:

XXXXX班级:

XXXX

课程设计题目:

歌手比赛系统

项目内容

满分

实评

能结合所学课程知识、有一定的能力训练。

符合选题要求

(3人一题)

5

工作量适中,难易度合理

10

能熟练应用所学知识,有一定查阅文献及运用文献资料能力

10

理论依据充分,数据准确,公式推导正确

10

能应用计算机软件进行编程、资料搜集录入、加工、排版、制图等

10

能体现创造性思维,或有独特见解

15

模型正确、合理,各项技术指标符合要求。

15

摘要叙述简练完整,假设合理、问题分析正确、数学用语准确、结论严谨合理;问题处理科学、条理分明、语言流畅、结构严谨、版面清晰

15

课程设计报告主要部分齐全、合理,符号统一、编号齐全。

 格式、绘图、表格、插图等规范准确,符合课程设计报告要求

10

正文字数不少于2000字,不超过15000字

5

总分

100

指导教师评语:

 

指导教师签名:

年月日

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1