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语言课程设计
歌手比赛系统c语言课程设计一、教学目标本课程旨在通过歌手比赛系统的设计与实现,让学生掌握C语言编程的基本语法、数据结构及算法,培养学生具备实际问题分析和解决能力。
具体目标如下:1.知识目标:•掌握C语言的基本语法和编程规范。
•理解并掌握常用的数据结构,如数组、链表、栈和队列。
•学习常用的算法,如排序、查找等。
2.技能目标:•能够使用C语言编写简单的程序,解决实际问题。
•学会使用调试工具,分析并优化代码。
•具备团队合作能力,能够分工协作完成项目。
3.情感态度价值观目标:•培养学生对计算机科学的兴趣和热情。
•培养学生勇于探索、积极思考的科学精神。
•培养学生团队协作、共同进步的合作意识。
二、教学内容根据课程目标,教学内容主要包括C语言基础知识、数据结构、算法及实践应用。
具体安排如下:1.C语言基础知识:•C语言概述、基本语法、数据类型、运算符、控制语句。
2.数据结构:•数组、链表、栈和队列、树和图。
•排序算法(冒泡、选择、插入等)、查找算法(顺序、二分等)。
4.实践应用:•利用C语言实现歌手比赛系统的部分功能,如选手信息管理、比赛成绩统计等。
三、教学方法本课程采用讲授法、案例分析法、实验法等多种教学方法,以激发学生的学习兴趣和主动性。
1.讲授法:用于讲解C语言基本语法、数据结构和算法。
2.案例分析法:通过分析实际案例,让学生更好地理解知识点。
3.实验法:让学生动手实践,培养实际问题分析和解决能力。
四、教学资源教学资源包括教材、多媒体资料、实验设备等。
1.教材:选用权威、实用的C语言教材,如《C程序设计语言》。
2.多媒体资料:制作精美的PPT,辅助讲解和演示。
3.实验设备:为学生提供足够的计算机,安装必要的编程环境和调试工具。
五、教学评估本课程的教学评估主要包括平时表现、作业、考试三个方面,以全面、客观、公正地评价学生的学习成果。
1.平时表现:占比30%,包括课堂参与度、提问、讨论等,以激发学生的学习积极性和主动性。
c语言课程设计歌手大赛
c语言课程设计歌手大赛一、课程目标知识目标:1. 学生能理解并掌握C语言中的基本数据类型、运算符、控制语句等基础知识。
2. 学生能够运用C语言编写具有简单逻辑功能的程序,如歌曲信息录入、展示和排序。
3. 学生了解结构体在C语言中的应用,并能使用结构体存储和管理歌曲信息。
技能目标:1. 学生能够运用所学知识设计并实现一个歌手大赛的程序,包括歌曲信息录入、展示、排序等功能。
2. 学生通过实际操作,提高编程实践能力,培养解决问题的能力。
3. 学生学会运用调试工具检查并修正程序中的错误,提高程序调试能力。
情感态度价值观目标:1. 学生通过课程学习,培养对计算机编程的兴趣和热情,提高主动学习的积极性。
2. 学生在团队协作中,培养沟通、协作能力和集体荣誉感。
3. 学生在编程实践中,体验成就感,增强自信心,培养勇于挑战、不怕困难的品质。
分析课程性质、学生特点和教学要求:本课程为C语言课程设计,旨在让学生将所学知识应用于实际项目中,提高编程实践能力。
针对学生的特点,课程设计注重培养学生的动手能力和团队协作能力。
在教学过程中,教师应关注学生的个体差异,提供适当的指导,确保学生能够达到预期的学习成果。
课程目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容1. C语言基础知识回顾:数据类型、变量、常量、运算符、控制语句(选择、循环)。
2. 函数:函数的定义、调用、参数传递、返回值。
3. 结构体:定义结构体、结构体变量的创建与初始化、结构体数组、结构体指针。
4. 文件操作:文件的打开、关闭、读写操作。
5. 歌手大赛程序设计:- 歌曲信息结构体设计:歌曲名称、歌手、专辑、发行年份等字段。
- 功能模块设计:a. 歌曲信息录入:设计输入界面,实现歌曲信息的录入。
b. 歌曲信息展示:设计展示界面,实现歌曲信息的展示。
c. 歌曲信息排序:根据指定字段(如歌手、发行年份等)进行排序。
d. 查询功能:根据歌曲名称、歌手等条件进行查询。
歌手比赛系统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语言课程设计歌手大赛一、教学目标本课程旨在通过歌手大赛的项目设计,让学生掌握C语言的基本语法、数据结构、算法以及程序设计的方法。
知识目标要求学生能够熟练使用C语言进行程序设计,理解程序设计的基本原理;技能目标要求学生能够独立完成小型应用程序的设计与调试,提升问题解决能力;情感态度价值观目标则是通过项目实践,培养学生的创新意识,提高团队合作能力,增强对计算机科学的热情。
二、教学内容教学内容围绕C语言的基础知识和应用技能展开。
首先,通过C语言基础语法的学习,使学生掌握变量声明、运算符、控制结构等基本元素。
其次,介绍数组、字符串和指针等数据结构的使用和原理。
接着,深入讲解函数的定义和调用,理解递归思想。
最后,通过歌手大赛项目的逐步完成,让学生学会面向对象编程,掌握结构体和文件操作等高级内容。
三、教学方法本课程采用讲授法、案例分析法、实验法相结合的教学方法。
在基础知识讲解中,以讲授法为主,辅以案例分析法帮助学生理解抽象概念。
在实践环节,通过实验法让学生动手编写代码,培养实际操作能力。
此外,鼓励学生进行小组讨论,共同解决问题,以提高学生的沟通协作能力。
四、教学资源教学资源包括教材《C程序设计语言》、在线编程平台、多媒体教学课件以及实验室设备。
教材为学生提供理论知识的基础;在线编程平台供学生在线编写、测试和调试程序,加强实践操作;多媒体教学课件辅助课堂教学,提高学习效果;实验室设备则是学生进行实验的必要资源,确保实验教学的顺利进行。
五、教学评估教学评估分为三个部分:课堂表现、课后作业和项目实践。
课堂表现占20%,通过学生的参与度、提问和回答等方式评估;课后作业占30%,主要评估学生的编程能力和理论知识掌握情况;项目实践占50%,主要评估学生的综合运用能力和团队协作能力。
评估方式将采取客观评分的原则,确保公正性。
六、教学安排本课程共计32课时,每周4课时,共计8周完成。
教学地点选在计算机实验室,以便学生随时进行编程实践。
c语言歌星大奖赛系统总结体会
c语言歌星大奖赛系统总结体会课程设计刚开始的时候,我真的感觉到无从下手。
因为己经过去一个学期了,期间又没有怎么看书,大一上学期的时候学的c语言,不过基本上已经忘光了,而且那时候学的不深,如果单单写一个比较的小的程序还可以,大程序基本写不了。
当选择了之后,刚开始是一筹莫展,不过短时间内就已经觉醒,重新对题目分析了一遍,了解了一下要用到哪方面的知识,然后着手去看书,重新熟悉一下以前的知识。
看过书之后,信心增加了不少,对接下来的程序编译有很大帮助。
通过这两周的课程设计,我独立完成了一个较大的C语言程序的设计,并认真完成了课程设计报告。
回忆这两周的时间,我收获很大。
首先,我熟练地运用了所学的知识编写程序,并成功的完成,感觉成就感很强,这大大激发了我编程的兴趣:其次,在设计的过程中退到了一些困难,我会认真的去思考,或者充分利用网络资源来寻求帮助,提高获取信总的能力。
课程设计期间,我有向老师和同学寻求帮助,在交流中共同进步。
最后,我了解了软件开发的大体过程及各个步骤,这对将来的学习和工作是很有帮助的,对于信管专业的大学生来说,积累实战经验是一项极其重要的内容,很可能成为将来就业的敲门砖。
而程序设计综合课程设计就是积累实战经验的一个过程,虽然程序的规模并不大,但能够让我们尽早地认识软件开发的重要性和必要性,为将来的就业打下坚实的基础。
经过两个星期的上机实践学习,使我对C语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,通过实践,我也发现我的好多不足之处,首先是自己编程粗心大意,经常出错,通过学习也有所改进:再有对C语言的一些标准函数不太了解,还有对函数调用的正确使用不够熟悉,以及对C语言中经常出现的错误也不了解,通过实践,使我在这儿个方面的认识有所提高。
这次的课程设让我认识到很多C 的内在要素:程序设计语言是程序设计的工具。
这是我通过两周课程设计深深体会的一点,并且发现如果想有效的进行程序设计,正确地应用程序设计语言表达算法,必须准确的运用程序设计语言,掌握其语法知识。
c语言课程设计歌星大赛
c语言课程设计歌星大赛一、教学目标本课程旨在通过“C语言课程设计歌星大赛”的教学实践活动,让学生掌握C语言编程的基本语法和结构化程序设计思想,培养学生的实际编程能力和团队协作精神。
具体目标如下:1.知识目标:学生能熟练掌握C语言的基本数据类型、运算符、控制结构、函数等编程基础;理解并运用结构体、指针等高级概念;2.技能目标:学生能运用C语言独立完成简单程序的设计与调试;具备一定的代码阅读和修改能力;3.情感态度价值观目标:培养学生对计算机科学的兴趣,增强其解决实际问题的信心和决心,培育团队协作和沟通交流的能力。
二、教学内容本课程的教学内容围绕C语言编程展开,具体包括:1.C语言基础知识:数据类型、运算符、控制结构、函数等;2.高级编程概念:结构体、指针、动态内存分配等;3.文件操作:文件的打开、读写、关闭等;4.项目实践:“歌星大赛”系统的设计与实现,包括数据结构设计、界面设计、功能实现等。
三、教学方法为了提高教学效果,本课程将采用多种教学方法相结合的方式,包括:1.讲授法:用于讲解C语言的基本概念和编程技巧;2.案例分析法:通过分析典型的编程案例,让学生理解并掌握C语言的运用;3.实验法:让学生在实验室完成编程实践,巩固所学知识;4.讨论法:分组讨论项目实践中的问题,培养学生的团队协作和沟通能力。
四、教学资源为了支持教学内容的实施,我们将准备以下教学资源:1.教材:《C程序设计语言》或《C Primer Plus》;2.参考书:《C和指针》、《C专家编程》等;3.多媒体资料:教学PPT、视频教程等;4.实验设备:计算机、网络环境、编程软件(如Code::Blocks、VisualStudio等)。
以上资源将有助于丰富学生的学习体验,提高其编程能力和综合素质。
五、教学评估本课程的评估方式包括平时表现、作业、考试等多个方面,以全面客观地评价学生的学习成果。
具体评估方式如下:1.平时表现:占课程总评的30%,包括课堂参与度、提问回答、团队协作等;2.作业:占课程总评的30%,主要考察学生的编程能力和对知识的理解运用;3.考试:占课程总评的40%,包括期中考试和期末考试,主要测试学生的知识掌握和编程能力。
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语言课程设计 歌手比赛系统
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];
本次实践我们选择了使用 C 语言编写基于链表的程序,不仅使大家对程序设计、编程 方法有了进一步提高,而且掌握了使用 C 语言动态内存分配及数据结构等方面的知识。
一、系统设计
2.1 设计分析
2.1.1 项目描述
1.项目名称:歌手打分系统
2.功能描述:
(1)生成字符界面的功能菜单
**************************************
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++) {
4、设计体会································································· 5、参考文献········································· 6、系统完整源程序···························································
C歌手大奖赛管理系统
# i n c l u d e < i o s t r e a m > #include<string> #include<fstream>#include<iomanip>using namespace std;class singer // 歌手类的定义{protected:int no; // 编号char name[20]; // 姓名char sex[10]; // 性别int age; // 年龄char song[20]; // 参赛曲目char department[30]; // 选送单位char program[30]; // 比赛项目名称char time[20]; // 比赛时间char place[20]; // 比赛地点int score; // 比赛成绩singer *mynext; // 指向下一个歌手的指针public:singer(); // 歌手类无参构造函数的定义singer(int pnum,char pname[],char psex[],int page,char psong[],charpdepart[],char program[],char time[],char place[],int score); //歌手类有参构造函数的定义singer(int pnum,char pname[],char psex[],int page,char psong[],charpdepart[],char program[],char time[],char place[],int score,singer *next);// 歌手类有参构造函数的定义int getnum(); // 提取歌手编号函数的定义char *getname() ; // 提取歌手名字函数的定义char *getsex(); // 提取歌手性别函数的定义int getage(); // 提取歌手年龄函数的定义void getagee(int as); // 设置歌手年龄函数的定义void getscoree(int ak);char *getsong(); // 提取员歌手参赛曲目函数的定义void output1(); //void output2(); //void output(); // };singer::singer() //{no=0;strcpy(name,"");strcpy(sex,"");char *getdepart(); //提取歌手选送单位函数的定义char *getprogram(); //char *gettime(); //char *getplace(); //int getscore(); //singer *getnext(); //提取比赛项目名称函数的定义提取比赛时间函数的定义提取比赛地点函数的定义提取比赛成绩函数的定义提取指向下一个歌手指针函数的定义void setnext(singer *next); // 设置指向下一个歌手指针函数的定义输出歌手信息函数的定义输出赛事信息函数的定义输出全部信息函数的定义歌手类无参构造函数age=0;strcpy(song,"");strcpy(department,"");strcpy(program,"");strcpy(time,"");strcpy(place,"");score=0;mynext=NULL;}singer::singer(int pnum,char pname[],char psex[],int page,char psong[],charpdepart[],char pprogram[],char ptime[],char pplace[],int pscore) // 造函数歌手类有参构{no=pnum;strcpy(name,pname);strcpy(sex,psex);age=page;strcpy(song,psong);strcpy(department,pdepart);strcpy(program,pprogram);strcpy(time,ptime);strcpy(place,pplace);score=pscore;mynext=NULL;}singer::singer(int pnum,char pname[],char psex[],int page,char psong[],char pdepart[],char pprogram[],char ptime[],char pplace[],int pscore,singer *next) // 歌手类有参构造函数{no=pnum;strcpy(name,pname);strcpy(sex,psex);age=page;strcpy(song,psong);strcpy(department,pdepart);strcpy(program,pprogram); strcpy(time,ptime);strcpy(place,pplace);score=pscore;mynext=next;}int singer::getnum() { return no; }char *singer::getname() { return name; }char *singer::getsex() { return sex; }char *singer::getsong() { return song; }char *singer::getdepart() { return department; } int singer::getage() { return age; } char *singer::getprogram(){return program;} char*singer::gettime(){return time;} char *singer::getplace(){return place;}int singer::getscore(){return score;} void singer::getagee(int as) { age=as; } void singer::getscoree(int ak){score=ak;}void singer::setnext(singer *next) { mynext=next; }singer *singer::getnext() { return mynext; }void singer::output1(){cout<<" 编号:"<<no<<endl;cout<<" 姓名:"<<name<<endl;cout<<" 性别:"<<sex<<endl;cout<<" 年龄:"<<age<<endl;cout<<" 参赛歌曲:"<<song<<endl;cout<<" 选送单位:"<<department<<endl;}void singer::output2(){COUΛ^∙民溯⅛¾≡-=AAPrOgramAAendrCOUΛ^∙m ⅛=AAnameAAendr00⊂X Λ=民溯胃「凹=A A meA A e n d -八COU Λ^∙民VOidSinger ::oufpuoCOUΛd m ⅛=AAnameAAendrCOUΛ^∙≡⅛=AASeXAAendrO O ⊂→ΛΛ=⅜w ∙--ΛcageccendrO O ⊂X Λ=W溯S B ■ ■-AASOngAAendrCOUΛd ⅛≡⅛a ■ --A A de p a¾cout<<" 比赛地点:"<<place<<endl;cout<<" 得分:"<<score<<endl;}class operate:public singer{private:singer *myfirst; // 指向歌手链表中结点的指针public:operate(); //operate 类无参构造函数的定义operate(int nnum,char nname[],char nsex[],int nage,char nsong[],char ndepart[],char nprogram[],char ntime[],char nplace[],int nscore);~operate(); //operate 类析构函数的定义void load(); // 从文件中加载歌手信息void add(); // 增加歌手信息void input(int number); // 键盘输入新歌手基本信息void insert(int nnum,char nname[],char nsex[],int nage,char nsong[],char ndepart[],char nprogram[],char ntime[],char nplace[],int nscore);{operate::operate(int nnum,char nname[],char nsex[],int nage,char nsong[],charndepart[],char nprogram[],char ntime[],char nplace[],int nscore) //operate 类带 参数构造函数的实现{ myfirst=new singer(nnum,nname,nsex,nage,nsong,ndepart,nprogram,ntime,nplace,nscore); } operate::~operate() //operate 类析构函数的实现bool findnum(); // 按编号查询歌手信息 }; bool findprogram(); // bool modify(); // bool deletesinger(); // void save(); // void showa(); // void showb(); //按项目名称查询赛事信息 修改歌手信息 删除歌手信息 歌手信息存盘显示所有歌手信息 显示比赛赛事 operate::operate () //operate { myfirst=NULL; }类无参构造函数的实现singer *next=myfirst,*temp;while(next!=NULL){temp=next;next=next->getnext();delete temp;}myfirst=NULL;}void operate::load() // 从文件中加载歌手信息{int nnum,nage;float nscore;charnname[20],nsex[20],nsong[20],ndepart[20],nprogram[20],ntime[20],nplace[20];ifstream f1("singer.txt",ios::in);while(f1.good()){f1>>nnum>>nname>>nsex>>nage>>nsong>>ndepart>>nprogram>>ntime>>nplace>>nsco re;if(!(f1.eof()))insert(nnum,nname,nsex,nage,nsong,ndepart,nprogram,ntime,nplace,nscore);}f1.close();cout<<endl<<" 存储在文件中的学校人员信息已加载到系统中"<<endl;}void operate::add() // 增加新歌手{int num,n1,n2;singer *p=myfirst;if(p==NULL)cout<<" 目前无歌手,请输入新歌手的编号cin>>num;input(num);}else{if(p->getnext()==NULL){n1=p->getnum()+1;input(n1);}else{while(p->getnext()!=NULL)p=p->getnext();n2=p->getnum()+1;{input(n2); }}}void operate::input(int number) // 键盘输入新歌手基本信息{int nage;int nscore;charnname[20],nsex[20],nsong[20],ndepart[20],nprogram[20],ntime[20],nplace[20];cout<<" 请输入编号为"<<number<<"的歌手信息"<<endl;cout<<" 输入姓名:";cin>>nname;cout<<" 输入性别:";cin>>nsex;cout<<" 输入年龄:";cin>>nage;cout<<" 输入参赛歌曲:";cin>>nsong;cout<<" 选送单位:";cin>>ndepart;cout<<" 比赛项目:";cin>>nprogram;cout<<" 比赛时间:";cin>>ntime;cout<<" 比赛地点:";cin>>nplace;cout<<" 得分:";cin>>nscore;insert(number,nname,nsex,nage,nsong,ndepart,nprogram,ntime,nplace,nscore);}void operate::insert(int nnum,char nname[],char nsex[],int nage,char nsong[],char ndepart[],char nprogram[],char ntime[],char nplace[],int nscore){singer *p=myfirst;if(p==NULL)myfirst=newsinger(nnum,nname,nsex,nage,nsong,ndepart,nprogram,ntime,nplace,nscore);else{while(p->getnext()!=NULL)p=p->getnext();p->setnext(newsinger(nnum,nname,nsex,nage,nsong,ndepart,nprogram,ntime,nplace,nscore,p->getn ext()));}bool operate::findnum() // 按编号查询歌手信息{int id;singer *s=myfirst;singer *f=s;cout<<" 请输入歌手的编号:";cin>>id;if(s==NULL){ cout<<" 本系统暂无歌手信息!"<<endl; return false; } else{while(s!=NULL){if(s->getnum()==id){ s->output1(); return true; }{ f=s; s=s->getnext(); }else}cout<<" 无此歌手信息!"<<endl;return false;}}bool operate::findprogram() // 按比赛项目查询赛事信息{char tmpprogram[20];singer *s=myfirst;singer *f=s;cout<<" 请输入比赛项目:";cin>>tmpprogram;if(s==NULL){ cout<<" 本系统暂无项目信息!"<<endl; return false; } else{ while(s!=NULL){ if(strcmp(s->getprogram(),tmpprogram)==0){ s->output2(); return true; }f=s; s=s->getnext();}cout<<" 本系统无此项目信息!"<<endl;return false;}}bool operate::modify() // 修改歌手信息{int number;singer *s=myfirst;singer *f=s;cout<<" 请输入要修改的歌手编号:";cin>>number;if(s==NULL){cout<<" 无此歌手!"<<endl; return false; }else{while(s!=NULL){if(s->getnum()==number){s->output();while(1){int i;float tmpnumber;char temp[30];cout<<" 请选择要修改的歌手信息:"<<endl;cout<<" 1: 姓名2: 性别3: 年龄4: 参赛曲目5: 选送单位6: 比赛项目7: 比赛时间8: 比赛地点9: 得分"<<endl;请选择(1~9) 中的选项:";cin>>i;cout<<"switch(i){case 1:{ cout<<" 输入修改姓名:";cin>>temp;strcpy(s->getname(),temp); }; break;case 2:{ cout<<" 输入修改性别:"; cin>>temp;strcpy(s->getsex(),temp); };break;case 3:{ cout<<" 输入修改年龄:";cin>>tmpnumber;s->getagee(tmpnumber); };break;case 4:{ cout<<" 输入修改参赛歌曲:";cin>>temp;strcpy(s->getsong(),temp); };break;case 5:{ cout<<" 输入修改选送单位:";cin>>temp;strcpy(s->getdepart(),temp);};break;case 6:{ cout<<" 输入修改比赛项目:";cin>>temp;strcpy(s->getprogram(),temp);};break;case 7:{ cout<<" 输入修改比赛时间:";cin>>temp;strcpy(s->gettime(),temp);};break;case 8:{ cout<<" 输入修改比赛地点:";cin>>temp;strcpy(s->getplace(),temp);};break;case 9:{ cout<<" 输入修改得分:";cin>>tmpnumber;s->getscoree(tmpnumber); };break;}return true;}}else{ s=s->getnext(); f=s; }}cout<<" 没有此编号的歌手return false;}}bool operate::deletesinger( ) //{int i;singer *s=myfirst;singer *f=s;!"<<endl;删除歌手信息cout<<" 请输入要删除歌手的编号:";cin>>i;if(s==NULL){cout<<" 无歌手可以删除"; return false; }else if(s->getnum()==i){myfirst=myfirst->getnext();cout<<" 编号为"<<i<<" 的歌手已被删除了!"<<endl;delete s;return true;}else{s=s->getnext();while(s!=NULL){if(s->getnum()==i){f->setnext(s->getnext());cout<<" 编号为"<<i<<" 的成员已被删除\n";delete s;return true;}f=s;s=s->getnext();}cout<<" 要删除的歌手不存在, 无法删除!"<<endl;return false;}}void operate::save() // 歌手信息存盘{ofstream f2("singer.txt",ios::out);singer *p=myfirst;while(p){f2<<p->getnum()<<"\t"<<p->getname()<<"\t"<<p->getsex()<<"\t"<<p->getage()< <"\t"<<p->getsong()<<"\t"<<p->getdepart()<<"\t"<<p->getprogram()<<"\t"<<p->gettime()<<"\t"<<p->getplace()<<"\t"<<p->getscore<<endl;p=p->getnext();}f2.close();cout<<" 保存数据已经完成"<<endl;}void operate::showa( ) // 显示所有歌手信息singer *s=myfirst;{cout<<setw(8)<<" 编号"<<setw(8)<<" 姓名"<<setw(8)<<" 性别"<<setw(8)<<" 年龄"<<setw(10)<<" 参赛曲目"<<setw(12)<<" 选送单位"<<endl;while(s!=NULL){cout<<setw(8)<<s->getnum()<<setw(8)<<s->getname()<<setw(8)<<s->getsex()<<setw(8)<<s->getage()<<setw(10)<<s->getsong()<<setw(12)<<s->getdepart()<< endl;s=s->getnext();}}void operate::showb() // 显示所有赛事信息{singer *s=myfirst;cout<<setw(10)<<" 参赛项目"<<setw(12)<<" 参赛时间"<<setw(12)<<" 参赛地点"<<setw(12)<<" 得分"<<endl;while(s!=NULL){cout<<setw(10)<<s->getprogram()<<setw(12)<<s->gettime()<<setw(12)<<s->getp lace()<<setw(12)<<s->getscore()<<endl;s=s->getnext();}}void menu()// 主菜单cout<<" "<<endl;欢迎来到歌手信息管理系统』<<endl;cout<<" * *"<<endl;cout<<" * *"<<endl;cout<<" * *"<<endl;cout<<"cout<<"操作:*"<<endl;cout<<" * ‖ 1. 歌手数据录入‖*"<<endl;cout<<" * ‖ 2. 增加新歌手‖*"<<endl;cout<<" * ‖ 3. 按编号查询歌手信息‖*"<<endl;cout<<" * ‖ 4. 按比赛项目查询赛事信息‖*"<<endl;cout<<" * ‖ 5. 修改歌手信息‖*"<<endl;cout<<" * ‖ 6. 删除歌手信息‖*"<<endl;cout<<" * ‖7. 歌手信息存盘‖*"<<endl;cout<<" * ‖8. 显示所有歌手信息‖*"<<endl;cout<<" * ‖9. 显示所有赛事信息‖*"<<endl;cout<<" 0. 退出*"<<endl;cout<<" * =========================================*"<<endl;cout<<" * 提示:输入相应操作前的序号!*"<<endl;cout<<" * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*"<<endl;cout<<" * 感谢您的支持与使用!*"<<endl;cout<<" * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *"<<endl;cout<<"****************************************************************************"< <endl; }void main(){menu();operate op;//int i;while(1){int p,i=0;cout<<" 请您输入操作选择( 0~9):";cin>>p;while(i==0){if(p<=9&&p>=0)i=1;else{ cout<<" 操作错误,请重新输入!";cin>>p;} }switch(p){case 1:case 2:op.add(); break;case 3:op.findnum();break;case 4:op.findprogram();break; case 5:op.modify(); break; case 6:op.deletesinger(); break; case 7:op.save(); break;case 8:op.showa(); break;case 9:case 0:{cout<<"************结束程序运行*************"<<endl;cout<<" 再见<<endl;exit(1);break;}。
C语言课程设计——歌手大赛管理程序
课程设计题目名称:歌手大赛管理程序学号:********姓名:***完成日期:2011年12月12日第2题歌手大赛管理程序【题目描述】请设计一个歌手大赛的管理程序。
歌手信息包括:歌手编号、姓名、身份证号、性别、出生日期(含年、月、日)、评委的打分(假设10个评委)等。
该程序应该具有下列功能:(1) 录入全部歌手的基本信息,歌手的编号按顺序生成,评委的打分随机生成;(2) 显示全部歌手的信息;(3) 添加一个歌手的信息;(4) 给定歌手编号,修改此编号的歌手信息,要求有修改确认;(5)给定歌手名称,删除此名称的歌手信息,要求有删除确认;(6) 给定歌手编号,显示该歌手的基本情况、所有评委的打分和最后得分;(7) 给定一个值,显示得分大于该值的歌手的信息和得分;(8) 给定一个出生日期,显示在此日期出生以后的所有歌手的信息和得分;(9)按歌手出生年龄排序。
(10)自己提供一些按各类信息进行排序、统计各类信息的功能(自己发挥);【题目要求】(1) 按照分析、设计、编码、调试和测试的软件开发过程完成这个应用程序;(2) 为各项操作功能设计一个菜单。
应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目。
【输入要求】应用程序运行后,在屏幕上显示一个菜单。
用户可以根据需求,选定相应的操作项目。
进入每个操作后(若需要,还可显示子菜单),根据应用程序的提示信息,从键盘输入相应的信息。
要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。
【输出要求】(1) 应用程序运行后,要在屏幕上显示一个菜单;(2) 要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。
(3)输出的结果要清晰美观,以表格形式上下对齐。
【提示】使用结构类型和一维数组,用来保存软件信息。
歌手大赛管理程序一.程序说明1.系统概述歌手大赛管理程序是运行于Windows系统下的应用软件,主要对于歌手的姓名,性别,生日,歌名等自然信息以及得分进行增,减,改,查,统计,排序等操作,并且还可以对使用该系统的用户进行登录。
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语言 歌星大奖赛
#include <stdio.h>#include <malloc.h>#include <stdlib.h>#include <string.h>typedef struct singer{int identity;char name[8];char sex;float degree[10];float avgDegree;struct singer *next;}S;int main(){char choice, ch;S *headID = NULL; // identity chain head S *headDG = NULL; // degree chain headS *newSinger(S *head);void displayChain(S *head);S *sortByDegree(S *head);void displayJudgment(S *head);do{system("cls");printf("\n\n\t\t$$$$$$$$$$$$ 一个简单的评分系统$$$$$$$$$$$$\n\n (问题重述)在歌星大赛中有n个选手,有10个评委为参加比赛的选手打分,分数为1~10分。
选手最后得分为:去掉一个最高分和最低分后其余8个分数的平均值。
请编写一个程序实现。
同时对评委评分进行裁判,即在10个评委中找出最公平(即为最接近平均分)和最不公平(即与平均分的差距最大)的评委。
\n\n 说明:此程序有一定的错误输入提示,但在输入数据时请尽量按提示正确输入;建议输入的评分是由一个个位和一个小数位组成的数字,范围在区间[0, 10],eg:8.7,9.4,1.8等。
\n\n");printf("\n-------------------------------------------------------\n\n");printf("\t1 ...... 添加新选手的得分;\n");printf("\t2 ...... 按选手代码查看;\n");printf("\t3 ...... 按选手得分查看;\n");printf("\t4 ...... 查看对评委评分进行裁判的结果.\n");printf("\n请选择一种操作,输入相应编号:");choice = getchar();ch = getchar(); // get "enter" charswitch(choice){case '1':printf("\n\n添加新选手\n");headID = newSinger(headID);break;case '2':if(headID == NULL)printf("\n请先运行’1‘。
C语言课程设计报告—歌星大奖赛评分系统
C语言课程实习报告课程名称:歌星大奖赛学院:信息工程学院专业:通信工程班级:学号:姓名:指导老师:第一部分:课程设计编号、名称、容名称:歌星大奖赛容:【要求】(1)在歌星大奖赛中,有十个评委为参赛的选手打分,分数为1~100分。
选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均植。
请编写一个程序实现。
(2)同时对评委评分进行裁判,即在10个评委中找出最公平(即评分最接近平均分)和最不公平(即与平均分的差距最大)的评委。
【提示】一、需求分析这个问题的第一个要求算法比较简单,但是要注意在程序中判断最大、最小值的变量是如何赋值的。
第二个要求为了考虑效率,要用到排序技术。
第二部分:程序总体设计思路由于C语言是面对过程的语言,故我的设计思路是根据目标程序运行的过程来编写的。
在编写本程序的过程中,首先我借助购买的指导材料,了解了一些目标程序运行的次序与界面的操作方法,然后按照题目的具体要求进行思考和设计。
具体的设计思路如下:程序的要根据十个评委对歌手的打分情况,求出这个歌手的平均成绩和最公平及最不公平的裁判。
首先,我先考虑到程序的数据输入,可以用scanf函数来解决,并将输入的数据存放于数组中。
随后对存放在数组中的数据进行排序,这步为执行找出最不公平的裁判提高了效率,只需将排好序的数组的首尾分值与平均值进行比较即可。
将排好序的数组中间的八个数求平均值即为此歌手的成绩,可见排序法可大大的简化程序。
接下来是最后一个任务就是找最公平的裁判,此过程我使用拆半法,先将靠近中间的一个裁判假设为最公平的,再将他前面的裁判与之比较,找出前半部分的最公平的裁判,再将之与后半部分的进行比较,得出最终的最公平的裁判。
为了方便管理员更好的使用界面操作,我还设置了每输入完一组数据并得到结果后,或接着输入下组数据或按0跳出界面。
整个程序的设计思路到此结束。
第三部分:程序功能划分、图示及流程图【功能模块划分及其流程图】本程序功能模块根据程序设计的需求,综合程序的实用性、人性化、智能化的考虑,将程序划分为6个部分分别编写,程序主体功能将由这6个部分来完成。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
c语言设计歌星大奖赛2C学院: 环境学院专业: 生物科学班级: 043101学号: 20101000179姓名: 段勇目录第一部分:课程设计编号、名称、内容 ..第二部分:程序总体设计思路 ..........第三部分:程序功能划分、图示及流程图第四部分:程序设计数据、运行结果 ....第五部分:源程序 ....................第六部分:总结 ..................................................................... .............................第一部分:课程设计编号、名称、内容编号:二十一题名称:歌星大奖赛内容:【要求】(1) 在歌星大奖赛中,有十个评委为参赛的选手打分,分数为1~100分。
选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均植。
请编写一个程序实现。
(2) 同时对评委评分进行裁判,即在10个评委中找出最公平(即评分最接近平均分)和最不公平(即与平均分的差距最大)的评委。
【提示】一、需求分析这个问题的第一个要求算法十分简单,但是要注意在程序中判断最大、最小值的变量是如何赋值的。
第二个要求为了考虑效率,要用到排序技术。
第二部分:程序总体设计思路由于C语言是面对过程的语言,故我的设计思路是根据目标程序运行的过程来编写的。
王老师给我安排的是21题的《歌星大奖赛》,在编写本程序的过程中,首先我借助购买的指导材料,了解了一些目标程序运行的次序与界面的操作方法,然后按照题目的具体要求进行思考和设计。
因为老师抽签给我的程序比较简单,再加上前期实习时王老师交给的一些C的思路和方法,我很快便将整个程序的设计思路整理清楚。
具体的设计思路如下:程序的要求是根据十个评委对歌手的打分情况,求出这个歌手的平均成绩和最公平及最不公平的裁判。
首先,我先考虑到程序的数据输入,可以用scanf函数来解决,并将输入的数据存放于数组中。
随后对存放在数组中的数据进行排序,这步为执行找出最不公平的裁判提高了效率,只需将排好序的数组的首尾分值与平均值进行比较即可。
将排好序的数组中间的八个数求平均值即为此歌手的成绩,可见排序法可大大的简化程序。
接下来是最后一个任务就是找最公平的裁判,此过程我使用拆半法,先将靠近中间的一个裁判假设为最公平的,再将他前面的裁判与之比较,找出前半部分的最公平的裁判,再将之与后半部分的进行比较,得出最终的最公平的裁判。
为了方便管理员更好的使用界面操作,我还设置了每输入完一组数据并得到结果后,或接着输入下组数据或按0跳出界面。
整个程序的设计思路到此结束第三部分:程序功能划分、图示及流程图【功能模块划分及其流程图】本程序功能模块根据程序设计的需求,综合程序的实用性、人性化、智能化的考虑,将程序划分为6个部分分别编写,程序主体功能将由这6个部分来完成。
这6个部分依次是:1.分数的输入部分;2.对分数进行的排序部分;3.计算平均值的部分;4.找出最不公平裁判部分;5.找出最公平裁判部分;6.数据的输出部分总体设计:歌星大奖赛评分系统找出最不找出最公平分数输入分数排序计算平均数据输出公平评委评委分系统功能模块图第四部分:程序设计数据、运行结果本程序是一款应用软件,故数据设计、程序运行结果应在程序的运用中得以体现,现在通过一个程序的运用事例来对数据设计、程序运行结果进行演示与实现: 【软件运用举例】李明通过朋友介绍想了解裁判对某歌手的评分情况,于是到俱乐部管理员面前说明了意向,裁判部管理员启动歌手大奖赛管理系统。
程序开始界面如下:管理员管理员输入评委对任意歌手的打分,输入完毕后程序如下菜单界面:管理员输入输入完毕后,按,Enter,健,程序运行界面如下:此程序显示了裁判对歌手的平均分数,以及根据裁判们打分与平均分数间的差距判断出的最公平和最不公平裁判的位置及打分~为了向李明验证程序的准确性及公平与不公平裁判出现在每个裁判上的几率,管理员又输入了几位歌手的打分管理员输入输入完毕后,按,Enter,健,程序运行界面如下:接着又输入一组数据后运行如下:当出现最高分的裁判和最低分的裁判各不止一个时,输入数据后程序界面的运行如下:第五部分:原程序#include <stdio.h>#include <math.h>#include <conio.h>struct test{int num;float s;};void main(){int i,j,k,bad,good;float ts,sum=0,min,aver=0,tm[10];struct test data[10],*p[10],*temp;do {sum=0;aver=0;printf("Input 10 sorces------input 0(exit)\n"); for(i=0;i<10;i++){data[i].num=i+1;scanf("%f",&data[i].s);/*分数的输入部分*/if(data[0].s==0) exit(0);}for(i=0;i<10;i++) tm[i]=data[i].s;for(i=0;i<10;i++) p[i]=&data[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=p[i];p[i]=p[k];p[k]=temp;} /*对输入分值进行排序*/}for(i=1;i<9;i++)sum+=p[i]->s;aver=sum/8;/*计算平均值的部分*/printf("\n-----------------\n");printf("The aver is:%.1f\n",aver);printf("-----------------\n");(fabs(p[0]->s-aver)>fabs(p[9]->s-aver))?(bad=0):(bad=9); /*通过绝对差值判断与平均值相差最大的裁判*/min=fabs(p[5]->s-aver);good=5;/*暂定第六个为最公平裁判*/for(i=4;i>0;i--){if((fabs(p[i]->s-aver))<=min){min=fabs(p[i]->s-aver); good=i; }else break;}/*用拆半法先将前半部分与min比较*/for(i=6;i<9;i++){if((fabs(p[i]->s-aver))<=min){min=fabs(p[i]->s-aver); good=i; }else break;}/*用拆半法先将后半部分与min比较*/printf("The worst pingwei is %d and the sorce is %.1f\n", p[bad]->num,p[bad]->s);/*打印出最不公平裁判和其分数*/printf("The best pingwei is %d and the sorce is %.1f\n", p[good]->num,p[good]->s);/*打印出最公平裁判和其分数*/printf("\n----------------------------------\n");printf("Next one:");/*打印出下一位*/}while(1);/* getch(); */return 0;}第六部分:总结通过这次的C语言上机实习,我收获颇丰。
这次的实习使我了解到了编写一个程序的不易。
哪怕很简单的程序也需要下很大的心思来思考,需要考虑到各个方面的问题。
但是当最后程序运行成功的那一刻,我也感受到了很强的成就感。
上机实习是学习程序设计语言必不可少的实践环节,特别是C语言灵活、简洁,更需要通过编程的实践来真正掌握它。
历时7天的《C语言程序设计》已经结束了,在这5天编程的过程中感触颇多,实训编程的同时暴露出了许多我自身存在的问题,同时也对自身有了很大的提高。
首先,对我以前做题做事非常马虎的毛病有了很大的改进,通过在这5天编程的过程中的锻炼,我现在做题比以前仔细多了,会小心翼翼地去看每一个地方,会仔细地检查程序的每一个字母、标点。
其次,在5天编程的过程当中弥补了我许多知识上的缺陷,弄清楚了我不懂的地方和似是而非的地方,使我及时补上了欠缺。
再次,通过5天综合实训编程使我的知识形成了一个完整的框架结构,而不再是零散的知识个体,使我在使用时更加的方便。
第四,在5天的实习结束后,我对做完的习题检查比再是一切的走马观花,而是仔细核对、认真检查。
第五过天的实习改变了我做题时心烦气燥的习惯,现在做题可以平和静气的完成。
第六通过天的实习我的自制能力更强了,基本完全可以控制自己,避免外界的干扰,安心地完成自己的工作。