XXXXXXXXXXXX
本 科 课 程 设 计
课程:C语言程序设计
目:歌手比赛系统
学院:XXXXXXXXXXXXXXXXXX
专业班级:XXXXXXX
学号:XXXXXXXX
学生姓名:XXXXXXX
合作人:XXXXXXXXXXXX
指导教师:XXXXXX
2011年10月15日
目录
1、引言·····································································
2、系统设计·································································
2.1、设计分析·····························································
2.1.1、项目描述·······················································
2.2、程序结构·····························································
2.2.1、程序划分·······················································
2.2.2、程序结构流程图·················································
3、系统实现·································································
3.1、各模块的功能及程序说明···············································
3.2、系统各模块的运行效果图···············································
4、设计体会·································································
5、参考文献·········································
6、系统完整源程序···························································
引言
C语言是一门计算机高级语言,它在Microsoft开发的软件Visual C++ 6.0中执行,C语言具有很多优点:
1.C语言具有丰富的数据类型,众多的运算符,体现结构化程序设计的优良控制结构,具有抽象功能及体现信息隐蔽思想的函数。
2.C语言的应用几乎遍及了程序的各个领域,如科学家,系统程序设计,字处理软件和电子
格软件的开发,信息管理,计算机辅助设计,等方面。
3.C语言简洁,为完成某一功能所写的源程序代码往往比其他语言写得短,便利程序输入工作量减少。
4.若程序员在
写过程时严格遵循ANSI C
,则其源代码可不作修改,即可用于各种型号的计算机和各种操作系统,因此,C语言具有良好的可移植性。
本次实践我们选择了使用C语言编写基于链表的程序,不仅使大家对程序设计、编程方法有了进一步提高,而且掌握了使用C语言动态内存分配及数据结构等方面的知识。
一、系统设计
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 程序结构流程图
三、系统实现
3.1 各模块的功能及程序说明
创建链表:使用尾插法插入数据;
输入选手信息:包括选手信息的输入,选手成绩的输入,去掉一个最高分和最低分,并将其余评委的评分求出平均值。
输出选手排名:包括选手成绩排名。
删除和插入选手信息:将退赛选手和新参加的比赛的选手进行删除和插入。
主函数:将所有函数实现。
系统主要功能模块的运行效果图
程序的运行效果图:
四、设计体会
在本次的C语言实践中,让我们受益匪浅,通过本次的实践,让我们更深入的了解了C语言这门计算机语言,也明白了软件开发的相关流程和基本步骤,也明白了团队精神的重要性,一项工作如果是靠一个人的力量是远远不够的。虽然在设计软件中遇到了很多问题,我们所有组员通力合作,积极讨论,翻阅资料,最终完成了这次实践,也许我们的程序还存在些许问题,也许还不完美,但是我相信在以后的学习中我们会继续改进的。也希望老师可以给我们提出您的宝贵意见。
五、参考文献
编程入门网:http://www.bianc.cn/
http://www.bianceng.cn/Programming/
六、源程序代码
#include
#include
#include
#include
#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;ib[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;ia[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