资源描述
淮南师范学院
课程设计汇报
歌手比赛系统
姓 名:胡欢欢
学 号:
专 业:计算机科学和技术
班 级: 10级(1)班
指导老师:彭飞
职 称:XXX
3月7日
目录
1.引言 1
2.系统设计 1
2.1设计分析 1
2.1.1 项目描述 1
2.2 程序结构 2
2.2.1程序划分 2
2.2.2 程序结构步骤图 3
3.系统实现 3
3.1 各模块功效及程序说明 3
3.2系统关键功效模块运行效果图 3
4.设计体会 6
5.参考文件 7
6.源程序代码 7
1.摘要
C语言是一门计算机高级语言,它在Microsoft开发软件Visual C++ 6.0中实施,C语言含有很多优点:
1.C语言含有丰富数据类型,众多运算符,表现结构化程序设计优良控制结构,含有抽象功效及表现信息隐蔽思想函数。
2.C语言应用几乎遍布了程序各个领域,如科学家,系统程序设计,字处理软件和电子表格软件开发,信息管理,计算机辅助设计,等方面。
3.C语言简练,为完成某一功效所写源程序代码往往比其它语言写得短,便利程序输入工作量降低。
4.若程序员在书写过程时严格遵照ANSI C标准,则其源代码可不作修改,即可用于多种型号计算机和多种操作系统,所以,C语言含有良好可移植性。
此次实践我们选择了使用C语言编写基于链表程序,不仅使大家对程序设计、编程方法有了深入提升,而且掌握了使用C语言动态内存分配及数据结构等方面知识。
2.系统设计
2.1设计分析
2.1.1 项目描述
1.项目名称:歌手打分系统
2.功效描述:
(1)生成字符界面功效菜单
**********1.输入选手数据**********
**********2.评委打分**************
**********3.成绩排序**************
**********4.数据查询**************
**********5.追加学生数据**********
**********6.写入数据文件**********
**********7.退出系统**************
(2)经过输入菜单项序号开启对应模块功效
① 能够依据输入选手人数创建链表;
② 录入9名评委给选手打分,并存放到文件singerOriginal.dat中;
③ 根据去掉一个最高分和去掉一个最低分标准求每名选手平均分;
② 按平均分由高到低次序对选手进行排序;
③ 把排名后数据存放到文件singerFianl.dat中;
④ 把原始数据和最终结果输出到屏幕;
④ 在第②步中保留singerOriginal.dat文件之前,可依据情况修改数据,比如:插入或删除歌手。
2.2 程序结构
2.2.1程序划分
将歌手打分系统程序进行系统模块划分,共分为九部分,分别是:
1.定义结构体
2.创建链表函数
3.输入数据函数
4.计算函数
5.排序函数
6.输出数据函数
7.输出最终数据
8.删除函数
9.插入函数
10.主函数
2.2.2 程序结构步骤图
main
输出数据
存放数据
排序
求平均分
得分维护
得分录入
输入成绩
创建链表
3.系统实现
3.1 各模块功效及程序说明
创建链表:使用尾插法插入数据;
输入选手信息:包含选手信息输入,选手成绩输入,去掉一个最高分和最低分,并将其它评委评分求出平均值。
输出选手排名:包含选手成绩排名。
删除和插入选手信息:将退赛选手和新参与比赛选手进行删除和插入。
主函数:将全部函数实现。
3.2系统关键功效模块运行效果图
程序运行效果图:
4.设计体会
在此次C语言实践中,让我受益匪浅,经过此次实践,让更深入了解了C语言这门计算机语言,也明白了软件开发相关步骤和基础步骤,可能我程序还存在些许问题,可能还不完美,不过我相信在以后学习中我们会继改善。也期望老师能够给我们提出您宝贵意见。
5.参考文件
编程入门网:
C程序设计(第四版)谭浩强著
6.源程序代码
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
#define N 3
#define M 10
int add = N-1;
int sum[N]={0},Max[N],Min[N];
float aver[N]={0};
struct player
{int num;
char name[8];
int score[M];
};
void Inistplayer(struct player a[],int n)
{int i;
for(i=0;i<n;i++)
scanf("%d %s",&a[i].num,&a[i].name);
}
void Inputscore(int score[],int n)
{int i;
for(i=0;i<n;i++)
score[i]=1+(int)10*rand()/(RAND_MAX+1);
}
void sort(struct player a[],float b[],int n)
{int i,k,j,t;
float temp;
char str[8];
for(i=0;i<n;i++)
{k=i;
for(j=i+1;j<n;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;
}
}
}
void main()
{int flag=1,n,i,m,j;
FILE *fp;
fp = fopen("data.txt","w+");
struct player a[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)
{
case 1:Inistplayer(a,N);break;
case 2:srand((unsigned)time(NULL));
for(i=0;i<N;i++)
{
printf("%d位选手成绩:",i+1);
Inputscore(a[i].score,M);
for(j=0;j<M;j++)
printf("%d ",a[i].score[j]);
printf("\n");
}
break;
case 3:for(i=0;i<N;i++)
{Max[i]=a[i].score[0];
Min[i]=a[i].score[0];
for(j=0;j<M;j++)
{
sum[i]+=a[i].score[j];
if(Max[i]<a[i].score[j]) Max[i]=a[i].score[j];
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<N;i++)
printf("%s %5.2f\n",a[i].name,aver[i]);
break;
case 4:printf("你想查询选手数据:");
scanf("%d",&m);
for(i=0;i<N;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;
case 5:printf("请输入要追加选手数据:\n");
add += 1;
scanf("%d %s",&a[add].num,&a[add].name);
break;
case 6:printf("将数据写入文件中:\n");
for (i = 0 ; i < add+1 ; i++)
{
fprintf(fp,"%d ",a[i].num);
fprintf(fp,"%s ",a[i].name);
fprintf(fp,"%d\n",a[i].score);
}
break;
case 7:exit(0);
break;
default:flag=0;
}
}
}
程序2:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
//#define N 3
#define M 10
int add = N-1;
int x=3;
int sum[N]={0},Max[N],Min[N];
float aver[N]={0};
struct player
{int num;
char name[8];
int score[M];
};
void Inistplayer(struct player a[],int n)
{int i;
for(i=0;i<n;i++)
scanf("%d %s",&a[i].num,&a[i].name);
}
void Inputscore(int score[],int n)
{int i;
for(i=0;i<n;i++)
score[i]=1+(int)10*rand()/(RAND_MAX+1);
}
void sort(struct player a[],float b[],int n)
{int i,k,j,t;
float temp;
char str[8];
for(i=0;i<n;i++)
{k=i;
for(j=i+1;j<n;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;
}
}
}
void main()
{int flag=1,n,i,m,j;
FILE *fp;
fp = fopen("data.txt","w+");
struct player a[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)
{
case 1:Inistplayer(a,N);break;
case 2:srand((unsigned)time(NULL));
for(i=0;i<x;i++)
{
printf("%d位选手成绩:",i+1);
Inputscore(a[i].score,M);
for(j=0;j<M;j++)
printf("%d ",a[i].score[j]);
printf("\n");
}
break;
case 3:for(i=0;i<x;i++)
{Max[i]=a[i].score[0];
Min[i]=a[i].score[0];
for(j=0;j<M;j++)
{
sum[i]+=a[i].score[j];
if(Max[i]<a[i].score[j]) Max[i]=a[i].score[j];
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<x;i++)
printf("%s %5.2f\n",a[i].name,aver[i]);
break;
case 4:printf("你想查询选手数据:");
scanf("%d",&m);
for(i=0;i<x;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;
case 5:printf("请输入要追加选手数据:\n");
add += 1;
scanf("%d %s",&a[add].num,&a[add].name);
break;
case 6:printf("将数据写入文件中:\n");
for (i = 0 ; i < add+1 ; i++)
{
fprintf(fp,"%d ",a[i].num);
fprintf(fp,"%s ",a[i].name);
fprintf(fp,"%d\n",a[i].score);
}
break;
case 7:exit(0);
break;
default:flag=0;
}
}
}
课程设计汇报评分表(即封底)
淮南师范学院
年课程设计汇报评分表
学生姓名:XXX 学号:XXXXX 班级:XXXX
课程设计题目:歌手比赛系统
项目内容
满分
实 评
选
题
能结合所学课程知识、有一定能力训练。符合选题要求
(3人一题)
5
工作量适中,难易度合理
10
能
力
水
平
能熟练应用所学知识,有一定查阅文件及利用文件资料能力
10
理论依据充足,数据正确,公式推导正确
10
能应用计算机软件进行编程、资料搜集录入、加工、排版、制图等
10
能表现发明性思维,或有独特见解
15
成
果
质
量
模型正确、合理,各项技术指标符合要求。
15
摘要叙述简练完整,假设合理、问题分析正确、数学用语正确、结论严谨合理;问题处理科学、条理分明、语言流畅、结构严谨、版面清楚
15
课程设计汇报关键部分齐全、合理,符号统一、编号齐全。 格式、绘图、表格、插图等规范正确,符合课程设计汇报要求
10
正文字数不少于字,不超出15000字
5
总 分
100
指导老师评语:
指导老师署名:
年 月 日
展开阅读全文