C语言课程设计报告—歌星大奖赛评分系统
歌星大奖赛系统——C语言
歌星大奖赛系统题目要求:(1)、在歌星大奖赛中,有10个评委为参赛的选手打分,分数为1到100分。
选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均值。
请编写一个程序实现。
(2)、同时对评委评分进行裁判,即在10个评委中找出最公平(即评分最接近平均分)和最不公平的评委。
【提示】这个问题的第一个要求算法十分简单,但是要注意在程序中判断最大、最小值的变量是如何赋值的。
第二个要求为了考虑效率,要用到排序技术。
一、需求分析根据题目第一个要求,有10个评委,需要依次输入10个分数,并在10个数中取出最大值和最小值;而且所输入的分数在1到100之间,否则该分数需要重新输入。
第二个要求,需要将10个分数分别与去掉最大最小值之后的八个数的平均值进行比较。
二、总体设计根据题目要求,定义一个数组,将依次输入的10个分数存入这个数组中,再对数组中的数进行去值、求平均值、差值比较的操作。
三、详细设计根据题目要求,将这个程序设计成2个函数,一个主函数main(),另一个函数impartial()用于进行差值比较。
1、主函数(1)、流程图(2)、具体说明void main(){void impartial(float a[],float aver);float sco[10],max,min,sum,aver,w;int i;max=0;min=100;sum=0;w=0;for(i=1;i<=11;i++){if(i==11) break;printf("Input the score of judger %d =",i);scanf("%f",&sco[i-1]); /*依次输入10个裁判的评分*/if(sco[i-1]>100){w=1;break;} /*判断是否在0到100之间*/sum+=sco[i-1];if(sco[i-1]>max) max=sco[i-1];if(sco[i-1]<min) min=sco[i-1];}aver=(sum-max-min)/8; /*去掉最大最小值之后求平均值*/if(i<11&&w==1){printf("\nSorry, the score is wrong! Please enter again!\n");main();}else{printf ("the max score:%f and the min score:%f is cancled\n",max,min);printf ("average score=%f\n",aver);impartial(sco,aver); /*调用impartial函数进行差值比较,输出结果*/}}2、impartial函数该函数设计较为简单,利用fabs()求每个分数与平均值的差值的绝对值,并对此值进行比较,得出裁判公平与否的结论。
C语言课程设计 歌手比赛系统
XXXXX大学本科课程设计课程:C语言程序设计题目:歌手比赛系统学院:xxxxxxxxxx专业班级:xxxxxxx学号:xxxxxxxx学生姓名:xxxxxxx指导教师:庞茂群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语言具有丰富的数据类型,众多的运算符,体现结构化程序设计的优良控制结构,具有抽象功能及体现信息隐蔽思想的函数。
课程设计报告(歌星大奖赛)
C语言课程设计报告学院:专业:班级:学号:姓名:指导老师:目录第一部分:前言摘要 (1)第二部分:课程设计名称及题目要求 (1)第三部分:程序总体设计思路 (2)第三部分:调试分析 (8)第四部分:使用手册 (10)第五部分:测试结果 (10)第六部分:总结与致谢 (13)第七部分:参考文献 (14)第八部分:附录(源程序) (15)第一部分:前言摘要课程设计是学习程序设计语言中的一个重要环节。
为提高学生程序设计能力,课程设计共安排两个实践环节:上机实习和课程设计。
其中上机实习与课堂教学同一学期先后进行,主要是检验课堂教学内容,初步掌握程序设计的基本方法和调试技能;课程设计是在课堂学习结束后,集中安排一次上机强化训练,使学生的程序设计能力再上一个台阶。
最后,以报告形式形成此次课程设计的最终成果。
第一部分为上机实习。
安排了Visual C++环境下的课堂实习内容。
具体内容包括Visual C++ 集成环境的使用;课堂实验指导内容,共分八个实验,学生在每次上机实习前需事先阅读并熟悉相关实验内容。
具体进度可由任课教师统一安排。
由于统一安排的上机时间有限,部分实验内容可由学生在课后自由上机时间完成。
第二部分是课程设计。
老师首先让大家复习以前所学知识,然后在每堂课上给大家出道相关题目让大家进行自我测试检验。
最后通过多次统一课程设计,在课程结束时完成自己所选的题目的课程设计。
第二部分:课程设计名称及题目要求题目名称:歌星大奖赛【要求】(1)在歌星大奖赛中,有十个评委为参赛的选手打分,分数为1~100分。
选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均植。
请编写一个程序实现。
(2)同时对评委评分进行裁判,即在10个评委中找出最公平(即评分最接近平均分)和最不公平(即与平均分的差距最大)的评委。
【需求分析】这个问题的第一个要求算法十分简单,但是要注意在程序中判断最大、最小值的变量是如何赋值的。
第二个要求为了考虑效率,要用到排序技术。
歌手比赛系统c语言课程设计
歌手比赛系统c语言课程设计一、课程目标知识目标:1. 掌握C语言的基本语法,包括变量声明、数据类型、运算符、控制结构等;2. 学会使用C语言进行数组、函数、指针的操作;3. 了解结构体和文件在C语言中的应用,并能应用于歌手比赛系统的设计;4. 掌握C语言编程规范,养成良好的编程习惯。
技能目标:1. 能够运用所学知识,独立设计并实现一个歌手比赛系统的基本功能;2. 学会使用C语言进行问题分析、程序设计和调试;3. 提高学生的逻辑思维能力和解决问题的能力;4. 培养学生的团队协作能力和沟通能力。
情感态度价值观目标:1. 激发学生对计算机编程的兴趣,培养其主动学习的热情;2. 培养学生面对困难时的坚持和毅力,树立克服困难的信心;3. 引导学生认识到编程对于解决实际问题的意义,提高社会责任感;4. 强调诚信、公正、合作的价值观念,培养学生的职业道德。
本课程针对高年级学生,结合C语言课程特点,注重理论与实践相结合,通过歌手比赛系统课程设计,使学生在巩固C语言知识的基础上,提高实际编程能力和综合运用能力。
课程目标旨在培养学生的编程素养,提升其运用计算机技术解决实际问题的能力,同时注重情感态度价值观的引导,为学生未来的学习和工作奠定坚实基础。
二、教学内容1. C语言基础回顾:变量、数据类型、运算符、控制结构(选择、循环);2. 数组与函数:一维数组、二维数组、函数定义、调用、传参;3. 指针与内存管理:指针的概念、指针操作、动态内存分配;4. 结构体与文件操作:结构体定义、结构体数组、文件读写;5. 歌手比赛系统设计:需求分析、功能模块划分、数据结构设计;6. 系统实现:编写程序代码,实现歌手比赛系统的各项功能;7. 系统测试与调试:测试用例设计、系统测试、错误调试;8. 编程规范与团队协作:代码规范、文档编写、团队分工与协作。
教学内容依据课程目标,结合教材相关章节,制定以下教学大纲:1. 复习C语言基础知识,为期2周;2. 数组与函数教学,为期2周;3. 指针与内存管理教学,为期2周;4. 结构体与文件操作教学,为期2周;5. 歌手比赛系统设计,为期1周;6. 系统实现,为期4周;7. 系统测试与调试,为期1周;8. 编程规范与团队协作,贯穿整个教学过程。
c课程设计歌手打分系统
c 课程设计歌手打分系统一、教学目标本课程旨在让学生掌握歌手打分系统的基本原理和实现方法,通过学习,学生能够了解音乐评分系统的运作机制,掌握评分算法,并能够运用所学知识设计和实现一个简单的歌手打分系统。
1.理解音乐评分系统的原理和构成。
2.掌握歌手打分的主要算法。
3.熟悉歌手打分系统的实现方法。
4.能够运用所学知识分析和解决音乐评分相关问题。
5.能够设计和实现一个简单的歌手打分系统。
情感态度价值观目标:1.培养学生对音乐的热爱和鉴赏能力。
2.培养学生独立思考和解决问题的能力。
二、教学内容本课程的教学内容主要包括以下几个部分:1.音乐评分系统的原理和构成:介绍音乐评分系统的起源和发展,讲解评分系统的核心组件和运作机制。
2.歌手打分算法:讲解常用的歌手打分算法,包括音高准确性、节奏准确性、音色相似度等方面的评估方法。
3.歌手打分系统实现:介绍如何利用编程语言和数据库技术实现一个简单的歌手打分系统。
4.案例分析:分析现实中典型的歌手打分系统,让学生了解实际应用中的系统设计和优化方法。
三、教学方法为了提高教学效果,本课程将采用多种教学方法相结合的方式进行教学:1.讲授法:讲解音乐评分系统的原理、歌手打分算法和系统实现方法。
2.案例分析法:分析现实中的歌手打分系统案例,让学生了解实际应用中的系统设计和优化方法。
3.实验法:让学生动手设计和实现一个简单的歌手打分系统,提高学生的实际操作能力。
4.讨论法:学生进行小组讨论,分享学习心得和解决问题的方法。
四、教学资源为了支持本课程的教学,我们将准备以下教学资源:1.教材:提供相关的教材和参考书籍,供学生自学和复习。
2.多媒体资料:提供视频、音频等多媒体资料,帮助学生更好地理解音乐评分系统的原理和应用。
3.实验设备:提供计算机、音响等实验设备,让学生能够动手实践,设计和实现歌手打分系统。
4.网络资源:引导学生利用网络资源,了解最新的音乐评分系统和歌手打分技术。
五、教学评估本课程的教学评估将采用多元化的评估方式,以全面、客观、公正地评价学生的学习成果。
C语言实现歌手大奖赛计分程序
C语⾔实现歌⼿⼤奖赛计分程序本⽂实例为⼤家分享了C语⾔实现歌⼿⼤奖赛计分程序的具体代码,供⼤家参考,具体内容如下1. 题⽬描述编写⼀个程序,⽤户输⼊评委⼈数和分数后,程序可以计算去掉⼀个最⾼分和最低分后的平均成绩。
可多次输⼊选⼿成绩,输⼊N时退出程序。
2. 源代码#include <stdio.h>#include <stdlib.h>float score[99];//成绩数据int num=0;//评委数⽬float sum=0;//总分//输⼊打分数据并输出结果void inputSc(){if(num==0){printf("请您输⼊评委数⽬:");scanf("%d",&num);}int i=0;printf("请您输⼊%d位评委评分:\n",num);for(i=0;i<num;i++){scanf("%f",&score[i]);}//去掉最⾼分和最低分avoidMax(score);//输出结果printf("平均分:%.2f\n",sum/num);//恢复数⽬if(num>2){num = num+2;}}//成绩处理模块void avoidMax(float *score){int i=0;float max=*score,min=*score;//寻找最⾼分、最低分for(i=0;i<num;i++){if(*(score+i)>max)max = *(score+i);else if(*(score+i)<min);min = *(score+i);}//将最⾼分、最低分设置为0for(i=0;i<num;i++){if(num>2){if(*(score+i)==max || *(score+i)==min){*(score+i) = 0;}}sum += *(score+i);}if(num>2){num = num-2;}}//主函数int main(){char key;while(key!='N'&&key!='n'){inputSc();printf("按任意键继续下⼀选⼿成绩计算,退出请选择N:");fflush(stdin);key = getchar();}return 0;}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
c语言课程设计歌手比赛系统
c语言课程设计歌手比赛系统一、教学目标本课程的目标是让学生掌握C语言的基本语法和编程技巧,学会使用C语言设计简单的歌手比赛系统。
通过本课程的学习,学生应达到以下知识目标:1.理解C语言的基本语法和数据类型。
2.掌握C语言的运算符和表达式。
3.学会使用C语言进行流程控制和函数调用。
4.掌握C语言的文件操作和字符串处理。
5.能够使用C语言编写简单的程序。
6.能够独立思考和解决编程问题。
7.能够协作完成项目任务。
情感态度价值观目标:1.培养学生的编程兴趣,提高学生的自主学习能力。
2.培养学生团队合作意识和沟通能力。
3.培养学生面对挑战、解决问题的勇气和决心。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据类型、运算符、流程控制、函数、文件操作和字符串处理等。
具体安排如下:1.第1-2周:C语言基本语法和数据类型。
2.第3-4周:运算符和表达式。
3.第5-6周:流程控制。
4.第7-8周:函数。
5.第9-10周:文件操作和字符串处理。
三、教学方法本课程采用讲授法、案例分析法和实验法相结合的教学方法。
在教学过程中,教师将讲解C语言的基本概念和语法,通过案例分析让学生掌握编程技巧,并通过实验环节让学生动手实践,巩固所学知识。
同时,鼓励学生参与讨论,提高学生的主动性和积极性。
四、教学资源本课程的教学资源包括教材、参考书、多媒体资料和实验设备。
教材选用《C程序设计语言》作为主教材,参考书包括《C语言编程入门》等。
多媒体资料包括教学PPT、视频教程等。
实验设备包括计算机、网络设备等,以支持学生动手实践和协作完成项目任务。
五、教学评估本课程的评估方式包括平时表现、作业、考试等。
平时表现主要评估学生的课堂参与度、提问回答等情况,占总评的20%。
作业分为编程作业和实践项目,占总评的30%。
考试分为期中和期末考试,占总评的50%。
平时表现评估:通过观察学生在课堂上的参与程度、提问回答等情况,评估学生的学习态度和积极性。
C语言课程设计-歌手比赛系统
C语言课程设计-歌手比赛系统
C语言歌手比赛系统是一款能够方便评委对歌手参赛作品进行打分的软件系统。
它采
用C语言作为开发语言,利用结构化编程的编码思想,结合界面处理技术,将模块间的复
杂关系归纳到一个明确的思路,利用控制台输入输出的技术让评委对参赛者作品进行评分。
首先,基于C语言,编写各个模块函数,完成参赛方的登记功能,同时具备查看、修改、删除等功能,以及保存所有参赛歌手的相关信息,如性别、歌手名称、介绍、歌曲名称、作品类型等;
其次,通过编写算法程序,对评委对歌手的打分情况进行总结,统计个每位参赛者的
总得分,最终以此来确定参赛歌手的获奖名次;
最后,基于C语言,编写出控制台处理界面,让评委在电脑上使用控制台输入输出操作,进行比赛打分,这样可以节省评委的纸笔式打分时间,提高速度和效率。
总之,C语言歌手比赛系统可以实现参赛歌手信息的记录、评委打分以及获奖者的记录,采用面向对象的编程理念,提高了比赛系统的可靠性与性能,极大地丰富了评委的体验,提升了比赛的效率。
歌手大赛系统c语言课程设计
歌手大赛系统c语言课程设计一、教学目标本课程的教学目标是使学生掌握C语言的基本语法、数据结构、算法及面向对象编程思想,能够运用C语言设计简单的歌手大赛系统。
具体分为以下三个部分:1.知识目标:学生需要掌握C语言的基本语法、数据类型、运算符、控制结构、函数、数组、指针、结构体等基本知识,了解面向对象编程的基本概念和方法。
2.技能目标:学生能够熟练使用C语言进行程序设计,具备独立分析问题、解决问题的能力,能够运用C语言设计并实现歌手大赛系统的功能。
3.情感态度价值观目标:通过本课程的学习,使学生培养对计算机编程的兴趣和热情,提高动手实践能力,培养良好的团队合作精神和创新意识。
二、教学内容教学内容主要包括C语言的基本语法、数据结构、算法及面向对象编程思想,具体安排如下:1.C语言基本语法:介绍C语言的数据类型、运算符、控制结构、函数等基本知识。
2.数据结构:讲解数组、指针、结构体等数据结构的基本概念和应用。
3.算法:学习排序、查找等基本算法,培养学生解决问题的能力。
4.面向对象编程:介绍面向对象编程的基本概念和方法,如类、对象、封装、继承等。
5.歌手大赛系统设计:结合所学知识,分组设计并实现一个简单的歌手大赛系统,包括选手报名、比赛评分、成绩统计等功能。
三、教学方法本课程采用讲授法、案例分析法、实验法等多种教学方法,以激发学生的学习兴趣和主动性。
1.讲授法:用于讲解C语言的基本语法、数据结构、算法及面向对象编程思想。
2.案例分析法:通过分析实际案例,使学生更好地理解和掌握所学知识。
3.实验法:安排实验课程,让学生动手实践,培养实际编程能力。
四、教学资源教学资源包括教材、参考书、多媒体资料、实验设备等,以支持教学内容和教学方法的实施,丰富学生的学习体验。
1.教材:《C语言程序设计》等。
2.参考书:《C Primer Plus》、《C和指针》等。
3.多媒体资料:教学PPT、视频教程等。
4.实验设备:计算机、编程软件等。
C语言课设-唱歌比赛评分系统
沈阳航空航天大学课程设计任务书学院:专业:班级:学号:题目:唱歌比赛评委评分系统一、课程设计时间二、课程设计内容参加唱歌比赛3位选手的名称和出场顺序存放在文件file22.txt中;评委共有7个。
每当一个选手表演之后,7个评委都分别评分(0~10分),而选手的最终得分计算规则为:去掉7个评分的最高和最低分,取剩下5个评分的平均值。
程序最后打印出3位选手的成绩。
三、课程设计要求程序质量:✧贯彻结构化的程序设计思想。
✧用户界面友好,功能明确,操作方便。
✧用户界面中的菜单至少应包括“读取并显示选手名单”、“表演与评分”、“打印最后成绩”、“退出”4项。
✧代码应适当缩进,并给出必要的注释,以增强程序的可读性。
课程设计说明书:✧课程结束后,上交课程设计说明书和源程序。
课程设计说明书的内容参见提供的模板。
四、指导教师和学生签字指导教师:________ 学生签名:________五、成绩六、教师评语目录一、需求分析 (1)二、设计分析 (2)三、主要界面截图 (4)四、技术要点 (9)五、个人总结 (14)六、参考文献 (15)七、源程序 (15)一、需求分析根据任务书给定的“课程设计内容”和“课程设计要求”作如下的需求分析。
该系统是一个分数录入以及评定系统,其使用者被假定为某歌唱比赛的管理人员,系统应该具有安全、稳定、功能齐全的特点。
1. 安全性分析系统管理的数据涉及到参赛的所有选手,为防止他人恶意修改,所以在进入评分系统前有密码程序,只有掌握了正确的密码才能进入程序进行各项操作。
2. 稳定性分析指系统比较健壮,只要是用户的合理操作,系统都应给出合理正确的回应,而不是出现令用户感到意外的系统错误或系统崩溃。
3. 主要功能分析(1)密码程序:在程序尾端设置好密码,只有掌握密码的管理员才能进入程序进行成绩录入,修改等操作,避免信息被他人修改,造成比赛不公(2)菜单:有一个功能强大又清晰明了的菜单能极大程度方便管理员的操作(3)数据输入:在每个输入前都有详细分类和提示,简单明了,根据提示输入参赛选手号数,姓名,各个评委打分成绩(4)数据保存:对于输入的数据,或被修改的数据应该保存到某个磁盘文件中,实现永久存储。
C语言课程设计报告完整版
C语言课程设计实习报告学生姓名:学生学号:所在班级:任课教师:课程成绩:1.题目需求(1)在歌星大奖赛中,有10个评委为参赛的选手打分,分数为1~100分。
选手的最后得分为:去掉一个最高分和一个最低分后其余8个数的平均值。
(2)同时对评委评分进行裁判,即在十个评委中找出最公平(即评分最接近平均分)和最不公平(即与平均分差距最大)的评委。
2.需求分析根据题目要求,由于数据间单,仅涉及到简单排序及转换,程序中应提供显示、输入、输出、排序等操作,同时还可以提供键盘式选择菜单实现功能选择。
3.总体设计这个系统可分为三个模块(见图 1 ),评分、对评委测评、退出。
其中主要功能是最终得分和对评委测评两个模块。
4.详细设计主函数比较简洁,只提供输入、功能处理和输出部分的函数调用。
其中各功能模块用菜单方式选择;另外,菜单部分也可以写成函数。
其流程图如图 2 所示。
[程序]}#include <stdio.h> #include <math.h> main () /*主函数*/{void V ote_score();/* 声明评分函数*/void BaW();/*声明对裁判测评函数*/int n,w;do{ puts("\t\t**************************MENU****************** *******\n\n");/*选择菜单*/puts("\t\t\t\t 1.V ote and the score ");/*对歌手评分*/puts("\t\t\t\t 2.Best and worest voter");/*对裁判测评*/puts("\t\t\t\t 0.Exit ");/*退出*/puts("\n\n\t\t****************************************************\n\n"); printf("Choice your number (0-2): [ ]\b\b");scanf(" %d",&n);if(n<0 || n>2)/*对选择的数字做判断*/{ w=1;getchar ();}else w=0;}while (w==1);/*选择功能*/switch(n){case 1 : V ote_score();break;case 2 : BaW();break;case 0 : exit(0);}}void V ote_score()/*评分函数*/{i nt a[10],b[10],i,j,k,B,n,w;f loat A;B=0;p rintf("input the content :\n");f or(i=0;i<10;i++)/*输入评选内容并求的评分之和*/ {b[i]=a[i];B=B+b[i];}for (i=0;i<9;i++)/*对评分按从小到大排序*/for(j=1;j<10;j++)if(b[i]>b[j]){k=b[i];b[i]=b[j];b[j]=k;}A=(B-b[0]-b[9])/8.0;/*舍去最低分和最高分求平均分*/ printf("The final score %f .\n",A);/*输出结果*/printf(“What do you what to do?”);printf("\t\t\n********************1.MENU**********\n\n ***********2.Exit *********\n\n");/*选择菜单*/ printf("\t\t\t Choice you number:[ ]\b\b");scanf(" %d",&n);if(n<1 || n>2)/*对选择的数字做判断*/{ w=1;getchar ();}else w=0;while(w==1);/*选择功能*/switch (n){case 1: main() ;break;/*返回主函数*/case 2: exit(0);/*退出*/}}#include <math.h>void BaW()/*对裁判测评函数*/{i nt a[10],b[10],i,j,k,B,n,w;f loat A,f,c[10],d[10];B=0;p rintf("input the content :\n");f or(i=0;i<10;i++)/*输入评选内容并求的评分之和*/ {b[i]=a[i];B=B+b[i];}for (i=0;i<9;i++)for(j=1;j<10;j++)if(b[i]>b[j]){k=b[i];b[i]=b[j];b[j]=k;}A=(B-b[0]-b[9])/8.0;for(i=0;i<10;i++)/*求得各评分与平均分之差的绝对值*/ {c[i]=fabs(a[i]-A);d[i]=c[i];}for(i=0;i<9;i++)/*对所求绝对值按从大到小排序*/for(j=1;j<10;j++){i f(d[i]<d[j]){}}for(i=0;i<10;i++)/*找出最公平评委*/if(c[i]==d[9])printf("The best voter's number is %d . \n",i);for(i=0;i<10;i++)/*找出最不公平评委*/if(c[i]==d[0])printf("The worst voter's number is %d .\n" ,i);printf(“What do you what to do?”);printf("\t\t\n********************1.MENU**********\n\n ***********2.Exit *********\n\n");/*菜单*/printf("\t\t\t Choice you number:[ ]\b\b"); scanf(" %d",&n);if(n<1 || n>2)/*对选择的数字做判断*/{ w=1;getchar ();}else w=0;while(w==1);/*选择功能*/switch (n){case 1: main() ;break;/*回主菜单*/case 2: exit(0);/*退出*/}5. 上机操作1.编译、链接和运行。
C语言程序课程设计—歌手比赛系统
C语言程序课程设计—歌手比赛系统C语言程序课程设计——歌手比赛系统一、引言随着计算机技术的不断发展,计算机应用越来越广泛,其中,音乐类比赛系统的需求也日益增长。
为了满足这一需求,我们设计了一个基于C语言的歌手比赛系统。
本文将详细介绍该系统的设计思路、实现方法以及特色功能。
二、系统设计1、功能设计本系统主要功能包括:选手信息管理、比赛流程管理、评委评分管理、得分统计与排名、现场大屏幕显示等。
通过这些功能,确保歌手比赛的公平、公正与高效。
2、模块设计根据系统功能,我们将系统分为以下几个模块:(1)选手信息模块:管理参赛选手的基本信息,包括姓名、性别、年龄、所属单位等。
(2)比赛流程模块:管理比赛流程,包括比赛时间、比赛地点、比赛轮次、每轮选手名单等。
(3)评委评分模块:管理评委评分,包括评分标准、评委评分、评分统计等。
(4)得分统计与排名模块:根据评委评分统计选手得分,并根据得分进行排名。
(5)现场大屏幕显示模块:将比赛进程、选手得分与排名等信息实时展示在大屏幕上,方便现场观众查看。
3、数据库设计为了存储和处理选手信息、比赛流程、评委评分等数据,我们设计了一个关系型数据库。
主要表格包括:选手信息表、比赛流程表、评委评分表、得分排名表等。
三、系统实现1、界面设计系统界面采用简洁明了的风格,以方便用户操作。
界面包括:选手信息展示区、比赛流程展示区、评委评分展示区、得分排名展示区、大屏幕显示控制区等。
2、功能实现(1)选手信息管理:实现添加、修改、删除选手信息等功能。
(2)比赛流程管理:实现添加、修改、删除比赛流程等功能。
(3)评委评分管理:实现评委对选手的评分、评分修改、评分提交等功能。
(4)得分统计与排名:根据评委评分统计选手得分,并根据得分进行排名,生成得分排名表。
(5)现场大屏幕显示:通过与大屏幕显示设备的通信,实时展示比赛进程、选手得分与排名等信息。
四、特色功能1、实时更新功能:系统能够根据比赛进程实时更新选手信息、比赛流程、评委评分等内容,确保信息的准确性。
C语言程序设计课程设计--歌手成绩管理系统
《C语言程序设计课程设计》课程设计报告题目:歌手成绩管理系统学院:计算机科学与技术歌手成绩管理系统一、系统菜单及任务(1)系统菜单的主要功能(1)输入歌手信息(2)输出歌手信息(3)歌手成绩排序(4)记录歌手信息(5)保存歌手信息(6)添加歌手信息(7)删除歌手信息(8)退出系统(2)实现的任务:完成对歌手比赛信息的各种管理。
歌手比赛系统对一次歌手比赛的成绩进行管理,功能要求:1、输入每个选手的数据包括姓名、歌曲名、各评委的打分成绩,大众评委打分成绩,根据输入计算出总成绩。
2、显示主菜单如下:1)输入信息2)显示信息3)结果排序4)保存信息5)显示结果6)退出系统。
二、设计内容:确定能表述歌手信息的数据结构,至少要有姓名、歌曲名、各评委打分、大众评委打分等信息,它是本程序的核心数据结构,定义为如下的结构体类型:struct Sing{float P1;float P2;float A[M];};struct Singer{int num;float sum;char singerName[10];char singName1[20];char singName2[20];struct Sing singScore1;struct Sing singScore2;};三、程序应具有以下基本功能:❖信息输入:输入每个选手的数据包括姓名、各首歌曲的歌曲名、各评委的打分成绩,大众评委打分成绩❖计算成绩:根据输入计算出各歌手的每首歌得分以及总得分。
❖成绩排序:按歌手的最后得分❖保存结果:将结果保存在文本文件中。
❖要求界面良好四、主要流程图程序各模块(输入,显示等)结构图:五、系统测试程序进行实例如下1、显示主菜单界面:主要功能输入歌手信息输出歌手信息歌手成绩排序记录歌手信息保存歌手信息添加歌手信息删除歌手信息退出系统2、选择1:运行界面如下六、源程序及系统文件使用说明#include<stdio.h>#include<stdlib.h>/*动态存储分配函数*/#include<string.h>/*字符函数和字符串函数*/ #include<math.h>/*数学函数*/#define M 5int N;struct Sing/*歌曲信息结构体*/{float P1;float P2;float A[M];};struct Singer/*歌手信息结构体*/{int num;float sum;char singerName[10];char singName1[20];char singName2[20];struct Sing singScore1;struct Sing singScore2;};struct Singer Sin[200];void print(){printf("- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n");printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");printf(" 欢迎进入歌手成绩管理系统\n");printf("- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n");printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");}void menu();void input()/*输入歌手信息*/{int i;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();}void output()/*输出歌手信息*/{int i;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();}void sort()/*对歌手成绩进行排序*/{float t,d,e,g,h;int i,j,m;char b[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();}void save()/*将歌手信息保存到文本文件中*/{FILE *fp;int i;if((fp=fopen("f:\\lin","wb"))==NULL){printf("cannot open file\n");return;}for(i=0;i<200;i++)if(fwrite(&Sin[i],sizeof(struct Singer),1,fp)==1){printf("文件写入错误\n");break;}fclose(fp);}void WritetoText(int n)/*将所有记录写入文件*/{int i=0;FILE *fp;/*定义文件指针*/char filename[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<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++;}fclose(fp);/*关闭文件*/printf("Successed!\n");//返回成功信息menu();}void Tianjia_a_record()/*添加函数*/{int i,j;int a;printf("请输入一个歌手的编号:");scanf("%d",&a);for(i=0;i<N;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");}}void name_Delete() /*按照姓名删除歌手信息*/{int i,j=0;char a[20];printf("\n输入一个歌手的姓名");scanf("%s",a);for(i=0;i<N;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("系统中无该歌手信息");}void dakai()/*定义打开函数*/{FILE *fp;system("cls");if((fp=fopen("filename","rb"))==NULL){printf("文件不存在\n");return;}}void menu()/*定义菜单函数*/{printf(" 歌手成绩管理系统\n");printf("**********************Menu**********************\n");printf(" * 1.输入信息 2.显示信息*\n");printf(" * 3.结果排序 4.信息保存到文件中*\n");printf(" * 5.信息记录到文件中 6.添加信息*\n");printf(" * 7.删除信息8.退出程序*\n");printf("************************************************\n");printf("请选择所要进行的选项:");}void Quit()/*退出函数*/{printf("结束程序"); exit(0);}void menu_select() /*菜单选择*/{int a;int n=3;printf("输入:");scanf("%d",&a);switch(a){case 1:printf("\n");input();break;case 2:printf("\n");output();break;case 3:printf("\n");sort();break;case 4:printf("\n");save();break;case 5:printf("\n");WritetoText(n);break;case 6:printf("\n");Tianjia_a_record();break;case 7:printf("\n");name_Delete();break;case 8:printf("\n"); Quit(); break;}}void main(){struct Singer Sin[200];print();menu();menu_select();}。
C课程设计报告歌星管理系统报告
C语言课程设计报告学生:定明静学号:20061003225班级:19106922一、题目要求(1)在歌星打奖赛中,有10个评委为参赛的选手打分,分数为1~100分。
选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均值。
请编写一个程序实现。
(2)同时对评委进行裁判,即在10个评委中找出最公平(即评分最接近平均分)和最不公平(即与平均分差距最大)的评委。
二、需求分析根据题目要求,第一个的算法要在程序中判断最大最小的变量是如何赋值的。
第二个为了考虑效率,要用到排序技术。
三、总体设计四、详细设计#include<stdio.h>#include"math.h"#define stu struct judgestu{int score; /*结构体*/double cha;char name[20];};void main() /*主函数*/{ int i,max=1,min=100,sum=0;double aver,h=1.0,k=100.0;stu jud[10];printf("Please input datas:");for(i=0;i<10;i++)scanf("%d,%s",&jud[i].score,&jud[i].name);for(i=0;i<10;i++){ sum+=jud[i].score;if(jud[i].score<min)min=jud[i].score; /*找出最低分*/if(jud[i].score>max)max=jud[i].score; /*找出最高分*/}printf("\nmax=%d,min=%d",max,min);aver=((sum-max-min)/8);printf("\naver=%f",aver); /***平均分***/for(i=0;i<10;i++){ jud[i].cha=fabs(jud[i].score-aver);printf("\n%f",jud[i].cha);if(jud[i].cha<k)k=jud[i].cha;if(jud[i].cha>h)h=jud[i].cha;}for(i=0;i<10;i++){if(k==jud[i].cha)printf("\nThe most fair judge's name is %s",jud[i].name);/*最公平评委*/if(h==jud[i].cha)printf("\nThe most unfair judge's name is %s",jud[i].name);/*最不公平评委*/ }运行结果如图:杂志订阅管理软件一、题目要求使用计算机对一种杂志的订阅进行管理,该杂志拥有最多订户不超过10人,每个订户的信息包括:姓名、性别、地址、电话号码、杂志单价、订阅数、订阅期限(至年月).现要求用彩旦选者并完成下述的功能:(1)增加新订户,即将订户的全部信息输入到文件中;(2)根据当天的日期对订户文件进行查询, 删除已经到期的订户记录;(3)(3)统计本期杂志订户数并打印运算结果;本期订户信息表订户名订阅数单价金额李平 2 5.5 11.0黄海 1 5.5 5.5合计 3 1.0 16.5一、 需求分析根据题目要求,订户的信息用文件存储,提供文件的输入输出操作;提供文件的添加操作增加新订户 ;对订户文件的查寻,提供文件的查找操作;通过文件的删除操作删除已到期的订户记录;提供统计和显示操作统计本期杂志订户数并打印运算结果;另外还要提供键盘式选择菜单以实现功能选择。
歌手比赛系统c课程设计
歌手比赛系统 c 课程设计一、课程目标知识目标:1. 让学生掌握歌手比赛系统的基本组成部分,如评分系统、选手管理、赛事流程控制等。
2. 使学生了解并运用程序设计的基本原理,结合所学的编程语言,实现歌手比赛系统的功能模块。
3. 帮助学生理解数据库管理的基本概念,学会使用数据库存储和管理歌手比赛的相关数据。
技能目标:1. 培养学生运用所学编程语言(如C语言)进行系统设计的能力,具备一定的编程实践操作技能。
2. 提高学生分析问题、解决问题的能力,使其能够针对歌手比赛系统的功能需求进行合理的模块划分和程序设计。
3. 培养学生团队协作和沟通表达的能力,能在项目开发过程中有效分工与合作。
情感态度价值观目标:1. 培养学生对计算机科学和编程技术的兴趣,激发其探究精神和创新意识。
2. 培养学生严谨、认真的工作态度,使其在项目开发过程中养成良好的编程习惯。
3. 培养学生面对困难和挑战时保持积极的心态,具备克服困难、解决问题的信心和勇气。
本课程结合学生年级特点,注重理论与实践相结合,旨在提高学生的编程实践能力和团队协作能力,使学生在完成课程学习后,能够独立或协作完成具有一定实用价值的歌手比赛系统项目。
同时,课程强调培养学生正确的价值观和积极的态度,为其未来的学习和职业发展奠定基础。
二、教学内容1. 程序设计基础:回顾C语言的基本语法,包括数据类型、运算符、控制结构等,为后续的系统设计打下基础。
教材章节:C语言程序设计基础2. 系统需求分析:讲解如何对歌手比赛系统进行需求分析,明确系统功能模块和性能要求。
教材章节:软件工程概述、需求分析3. 数据库设计:介绍数据库基本概念,指导学生学会使用SQL语句进行数据库设计和数据操作。
教材章节:数据库原理与应用、SQL语言4. 系统设计与模块划分:根据需求分析,进行系统设计,将系统划分为若干功能模块,如选手管理、评分系统、赛事流程控制等。
教材章节:软件设计、模块化设计5. 编程实践:指导学生运用C语言进行系统功能模块的编码实现,包括界面设计、功能实现等。
C语言课程设计报告—歌星大奖赛评分系统
C语言课程实习报告课程名称:歌星大奖赛学院:信息工程学院专业:通信工程班级:学号:姓名:指导老师:第一部分:课程设计编号、名称、容名称:歌星大奖赛容:【要求】(1)在歌星大奖赛中,有十个评委为参赛的选手打分,分数为1~100分。
选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均植。
请编写一个程序实现。
(2)同时对评委评分进行裁判,即在10个评委中找出最公平(即评分最接近平均分)和最不公平(即与平均分的差距最大)的评委。
【提示】一、需求分析这个问题的第一个要求算法比较简单,但是要注意在程序中判断最大、最小值的变量是如何赋值的。
第二个要求为了考虑效率,要用到排序技术。
第二部分:程序总体设计思路由于C语言是面对过程的语言,故我的设计思路是根据目标程序运行的过程来编写的。
在编写本程序的过程中,首先我借助购买的指导材料,了解了一些目标程序运行的次序与界面的操作方法,然后按照题目的具体要求进行思考和设计。
具体的设计思路如下:程序的要根据十个评委对歌手的打分情况,求出这个歌手的平均成绩和最公平及最不公平的裁判。
首先,我先考虑到程序的数据输入,可以用scanf函数来解决,并将输入的数据存放于数组中。
随后对存放在数组中的数据进行排序,这步为执行找出最不公平的裁判提高了效率,只需将排好序的数组的首尾分值与平均值进行比较即可。
将排好序的数组中间的八个数求平均值即为此歌手的成绩,可见排序法可大大的简化程序。
接下来是最后一个任务就是找最公平的裁判,此过程我使用拆半法,先将靠近中间的一个裁判假设为最公平的,再将他前面的裁判与之比较,找出前半部分的最公平的裁判,再将之与后半部分的进行比较,得出最终的最公平的裁判。
为了方便管理员更好的使用界面操作,我还设置了每输入完一组数据并得到结果后,或接着输入下组数据或按0跳出界面。
整个程序的设计思路到此结束。
第三部分:程序功能划分、图示及流程图【功能模块划分及其流程图】本程序功能模块根据程序设计的需求,综合程序的实用性、人性化、智能化的考虑,将程序划分为6个部分分别编写,程序主体功能将由这6个部分来完成。
歌手比赛系统c语言课程设计
歌手比赛系统 c语言课程设计一、教学目标本课程的目标是让学生掌握C语言的基本语法和编程技巧,通过歌手比赛系统的项目实践,培养学生解决实际问题的能力。
具体分为以下三个部分:1.知识目标:学生需要掌握C语言的基本数据类型、运算符、控制结构、函数等语法知识,了解面向对象编程的基本概念。
2.技能目标:学生能够运用C语言编写简单的程序,具备歌手比赛系统项目开发所需的基本技能。
3.情感态度价值观目标:学生在项目实践中培养团队合作意识,提高解决实际问题的能力,感受编程带来的成就感,培养对计算机科学的兴趣。
二、教学内容教学内容以歌手比赛系统项目为主线,涵盖C语言的基本语法和编程技巧。
具体安排如下:1.教材章节:第1-10章。
2.教学内容:–第1-4章:C语言基础知识,包括基本数据类型、运算符、控制结构等。
–第5-7章:函数、数组、指针,以及面向对象编程的基本概念。
–第8-10章:文件操作、动态内存分配、以及歌手比赛系统项目实践。
三、教学方法本课程采用讲授法、案例分析法、实验法等多种教学方法,以激发学生的学习兴趣和主动性。
1.讲授法:用于讲解C语言的基本语法和编程技巧,帮助学生建立知识体系。
2.案例分析法:通过分析歌手比赛系统的实际案例,让学生了解项目开发的全过程,提高解决实际问题的能力。
3.实验法:学生动手编写代码,进行项目实践,培养实际编程能力。
四、教学资源教学资源包括教材、参考书、多媒体资料和实验设备。
1.教材:选用《C程序设计语言》作为主要教材,辅助以《C语言编程实践》等参考书。
2.多媒体资料:提供在线编程教程、视频讲座等,帮助学生更好地理解课程内容。
3.实验设备:计算机实验室,为学生提供编程实践的场所。
五、教学评估为了全面、客观地评估学生的学习成果,本课程采用多元化的评估方式,包括平时表现、作业、考试等。
具体评估方法如下:1.平时表现:考察学生在课堂上的参与程度、提问回答、团队合作等,占总评的20%。
2.作业:布置课后编程作业,让学生巩固课堂所学,占总评的30%。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言课程实习报告课程名称:歌星大奖赛学院:信息工程学院专业:通信工程班级:学号:姓名:指导老师:第一部分:课程设计编号、名称、内容名称:歌星大奖赛内容:【要求】(1)在歌星大奖赛中,有十个评委为参赛的选手打分,分数为1~100分。
选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均植。
请编写一个程序实现。
(2)同时对评委评分进行裁判,即在10个评委中找出最公平(即评分最接近平均分)和最不公平(即与平均分的差距最大)的评委。
【提示】一、需求分析这个问题的第一个要求算法比较简单,但是要注意在程序中判断最大、最小值的变量是如何赋值的。
第二个要求为了考虑效率,要用到排序技术。
第二部分:程序总体设计思路由于C语言是面对过程的语言,故我的设计思路是根据目标程序运行的过程来编写的。
在编写本程序的过程中,首先我借助购买的指导材料,了解了一些目标程序运行的次序与界面的操作方法,然后按照题目的具体要求进行思考和设计。
具体的设计思路如下:程序的要求是根据十个评委对歌手的打分情况,求出这个歌手的平均成绩和最公平及最不公平的裁判。
首先,我先考虑到程序的数据输入,可以用scanf函数来解决,并将输入的数据存放于数组中。
随后对存放在数组中的数据进行排序,这步为执行找出最不公平的裁判提高了效率,只需将排好序的数组的首尾分值与平均值进行比较即可。
将排好序的数组中间的八个数求平均值即为此歌手的成绩,可见排序法可大大的简化程序。
接下来是最后一个任务就是找最公平的裁判,此过程我使用拆半法,先将靠近中间的一个裁判假设为最公平的,再将他前面的裁判与之比较,找出前半部分的最公平的裁判,再将之与后半部分的进行比较,得出最终的最公平的裁判。
为了方便管理员更好的使用界面操作,我还设置了每输入完一组数据并得到结果后,或接着输入下组数据或按0跳出界面。
整个程序的设计思路到此结束。
第三部分:程序功能划分、图示及流程图【功能模块划分及其流程图】本程序功能模块根据程序设计的需求,综合程序的实用性、人性化、智能化的考虑,将程序划分为6个部分分别编写,程序主体功能将由这6个部分来完成。
这6个部分依次是:1.分数的输入部分;2.对分数进行的排序部分;3.计算平均值的部分;4.找出最不公平裁判部分;5.找出最公平裁判部分;6.数据的输出部分总体设计:系统功能模块图程序流程系统的执行应从功能菜单的选择开始,依据用户的选择来进行后续的处理,直到用户选择退出系统为止,其间应对用户的选择做出判断及异常处理。
系统的流程图如下:是第四部分:程序设计数据、运行结果本程序是一款应用软件,故数据设计、程序运行结果应在程序的运用中得以体现,现在通过一个程序的运用事例来对数据设计、程序运行结果进行演示与实现:【软件运用举例】程序开始界面如下:管理员输入评委对任意歌手的打分,输入完毕后程序如下菜单界面:管理员输入评委对任意歌手的打分,当输入有误后程序如下菜单界面:此程序显示了裁判对歌手的平均分数,以及根据裁判们打分与平均分数间的差距判断出的最公平和最不公平裁判的位置及打分!当出现最高分的裁判和最低分的裁判各不止一个时,输入数据后程序界面的运行如下:第五部分:程序改进思路【针对第一点:程序算法精简问题】>>改进思路:1. 算法上除了采用结构体数组外,考虑在程序的算法设计上引入排序法,考察这样对数据组织运算效率上是具有提高作用的。
2. 就现有知识水平、经验来看,对我来说,本程序的算法设计上已经是最精简的了。
C语言知识博大精深,有必要对C语言的专着进行研究学习,多阅读别人的程序代码、多动手实践操作与设计,这样便对程序算法精简改进提供了可能。
【针对第二点:用户输入错误问题】>>改进思路:对每个数据输入段代码进行更深的研究与分析,明确变量的类型、可能的数值,然后进行分类判断(if 或switch语句),必要时借助for循环语句来控制程序进行,保障各模块运行相对独立,稳定准确执行各自功能。
典型方法是如果输入数据错误,通过printf输出问题,并用for或(do)while构成循环,直到用户输入正确为止。
此功能本因在程序中得以体现,但因对C语言编程掌握的不够全面和深入,加上时间不太充分,此程序中没有体现出来,是我编程工作中的失误,再以后还需加深学习并改进!【针对第三点:程序功能完善问题】>>改进思路:[管理员对运动员的成绩输入]设计思路:将裁判的评给分数全部读入,并且全部进行简单的排序,通过去掉排序后首尾最高和最低分,求出相应的歌手的平均成绩,再将平均值与每个裁判的打分进行比较,与平均值差值最大的定位此次打分中最不公平的裁判,与平均值差值最小的定为此次打分中最公平的裁判!第七部分:附录(原程序)#include<>#include <>#include <>#include<>struct test{int num;float s;};void main(){int i,j,k,bad,good;float ts,m,sum=0,aver=0,tm[10];double min;struct test score[10],*Judge[10],*temp;do{sum=0;aver=0;printf("请选择:继续请按1,退出请按2\n");scanf("%f",&m);if(m==2)exit(0);for(i=0;i<10;i++){printf("请第%d位评委打分\n",i+1);score[i].num=i+1;scanf("%f",&score[i].s); /*分数的输入部分*/ if(score[i].s>100||score[i].s<1){printf("分数在1-100之间,请重新输入\n");scanf("%f",&score[i].s);continue;}if(score[0].s==0)break;}for(i=0;i<10;i++)tm[i]=score[i].s; for(i=0;i<10;i++)Judge[i]=&score[i];for(i=0;i<9;i++){k=i;for(j=i+1;j<10;j++)if(tm[k]<tm[j])k=j;if(k!=i){ts=tm[i];tm[i]=tm[k];tm[k]=ts;temp=Judge[i];Judge[i]=Judge[k];Judge[k]=temp;} /*对输入分值进行排序*/}for(i=1;i<9;i++)sum+=Judge[i]->s;aver=sum/8; /*计算平均值的部分*/printf("\n-----------------\n");printf("该选手的平均分为:%.3f\n",aver);printf("-----------------\n");(fabs(Judge[0]->s-aver)>fabs(Judge[9]->s-aver))?(bad=0):(bad=9) ;/*通过绝对差值判断与平均值相差最大的裁判*/min=fabs(Judge[5]->s-aver);good=5; /*暂定第六个为最公平裁判*/for(i=4;i>0;i--){if((fabs(Judge[i]->s-aver))<=min){min=fabs(Judge[i]->s-aver);good=i;}elsebreak;} /*用拆半法先将前半部分与 min 比较*/for(i=6;i<9;i++){if((fabs(Judge[i]->s-aver))<=min){min=fabs(Judge[i]->s-aver);good=i;}elsebreak;} /*用拆半法先将后半部分与 min 比较*/printf("最不公平评委: 第%d位评委他的打分: %.3f\n",Judge[bad]->num,Judge[bad]->s);/*打印出最不公平裁判和其分数*/printf("最公平评委:第%d位评委他的打分: %.3f\n",Judge[good]->num,Judge[good]->s);/*打印出最公平裁判和其分数*/printf("\n----------------------------------\n");printf("请下一位选手上场:\n");/*打印出下一位*/}while(1);}。