歌手比赛评分系统程序设计

合集下载

歌星大奖赛系统——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语言课程设计 歌手比赛系统

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语言课程设计

歌手比赛系统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%,包括课堂参与度、提问、讨论等,以激发学生的学习积极性和主动性。

歌唱比赛选手评分系统

歌唱比赛选手评分系统

歌唱比赛选手评分系统第一篇:歌唱比赛选手评分系统#include#include< windows.h >#include#include#define NUM 10void zr();void search();static struct compete{int num;char name[20];double score[11];int range;}compete[NUM];void main(){zr();}double max[NUM],min[NUM],sum[NUM];void input(){ int i,j,temp,a;double maxscore;double tempscore;char tempname[20];for(i=0;i{printf(“请输入选手编号:”);scanf(“%d”,&a);getchar();if(a==0)zr();compete[i].num=a;printf(“请输入选手选手姓名:”);scanf(“%s”,compete[i].name);compete[i].range=i+1;for(j=0;j<10;j++){printf(“%d号评委打分:”,j+1);scanf(“%lf”,&compete[i].score[j]);}}getchar();for(i=0;imax[i]=min[i]=compete[i].score[0];for(j=0;j<10;j++){if(compete[i].score[j]>max[i])max[i]=compete[i].score[j];if(compete[i].score[j]min[i]=compete[i].score[j];}}for(i=0;i{sum[i]=0;for(j=0;j<10;j++)sum[i]+=compete[i].score[j];compete[i].score[10]=(sum[i]-max[i]-min[i])/8.0;}for(i=0;i{maxscore=compete[i].score[10];for(j=i+1;jif(compete[j].score[10]>compete[i].score[10]){temp=compete[i].num;compete[i].num=compete[j].num;compete[j].num=temp;strcpy(tempname,compete[i].name);strcpy(compete[i].name,compete[j].name);strcpy(compete[j].name,tempname);tempscore=compete[i].score[10];compete[i].score[10]=compete[j].score[10];compete[j].score[10]=tempscore;}}system(“pause”);zr();}void searchnum(){int i,j,flag=0;printf(“请输入你想查询的选手编号:”);scanf(“%d”,&j);getchar();for(i=0;iif(compete[i].num==j){printf(“编号t姓名tt平均分t名次t最高分t最低分n”);printf(“%dt%stt%.2lft%dt%.2ft%.2fn”,compete[i].num,co mpete[i].name,compete[i].score[10],compete[i].range,max[i],min [i]);flag=1;break;}}if(flag!=1)printf(“没有此项资料n”);system(“pause”);search();}void searchname(){int i,flag=0;char a[20];printf(“请输入你想查询的选手名字:”);gets(a);for(i=0;i{if(!strcmp(compete[i].name,a)){printf(“编号t姓名tt平均分t名次t最高分t最低分n”);printf(“%dt%stt%.2lft%dt%.2ft%.2fn”,compete[i].num,co mpete[i].name,compete[i].score[10],compete[i].range,max[i],min [i]);flag=1;break;}}if(flag!=1)printf(“没找到n”);system(“pause”);search();}void search(){char c;system(“cls”);printf(“nnnn”);printf(“tt**********1---按选手编号查询********** n”);printf(“tt**********2---按选手姓名查询********** n”);printf(“tt**********3---返回上级菜单********** n”);printf(“nnt请选择:”);c=getchar();getchar();switch(c){case '1':searchnum();break;case '2':searchname();break;case '3':zr();default:printf(“输入错误”);system(“pause”);}search();}void zr(){char c;do{system(“cls”);printf(“nnttt歌唱比赛评分查询nnn”);printf(“tt*****1---输入选手的编号、姓名及所得分数***** nn”);printf(“tt*****2---查询选手的最后得分*****nn”);printf(“tt*****3---退出程序***** nn”);printf(“nntt选择:”);c=getchar();getchar();switch(c){case '1':system(“cls”);input();break;case '2':system(“cls”);search();break;case '3':c='n';exit(0);default:zr();}}while(0);}第二篇:卡拉OK歌唱比赛评分规则卡拉OK歌唱比赛评分规则一、参赛选手按指定时间和地点提前20分钟签到,比赛正式开始后未签到的则视为自动弃权;参赛选手按抽签号顺序上场演唱;二、每位参赛选手演唱一首歌曲,唱法不限、风格不限、语言种类不限,不受伴舞和伴唱的限制;鼓励业主家庭全员参与,有参与者在评委打分基础上加2分。

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

歌手比赛系统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. 编程规范与团队协作,贯穿整个教学过程。

java课程设计歌手比赛系统

java课程设计歌手比赛系统

1.选题背景当下,无论是社会上还是校园内,经常举办一些歌手演唱比赛,一般不会在像以前用笔记录比赛的情况,歌手比赛因此产生,他几乎•包含了•切应有的功能,歌手的信息输入,评委打分,成绩排序等功能,省去「许多麻烦的环节,完全可以满足一次歌手比赛的要求。

本程序是可以统计歌手们的得分情况。

2.开发技术概述本程序采用Java,开发者应具有Java程序设计语言,Swing基本GUI组件,多线程,文件使用的基本知识和技能,程序初始显示出当前的日期,而后根据用户的选择来跳转至用户想要查看的年份与月份。

3.功能需求分析用户可以自行输入选手id,姓名,评委打分等功能,可以体现该程序的灵活性(1)选手信息输入根据程序提示,输入相应的选手的信息。

(2)评委打分按指定的数组,进入评委打分环节,输入五个评委的打分,便是选手的打分。

(3)按成绩排序提供一个按钮,即可算出五个评委对不同的选手的平均分,并且按照大小排序。

(4)成绩查询按指定的数字,便可显示已经输入程序的选手信息,五个评委的打分以及平均分。

大大的增强了程序的可读性。

(5)追加学生数据:按指定数字,便可在已有学生数据上追加学生的数据。

(6)写入数据文件4 .功能设计(1)成绩查询功能通过组合框,显示成绩列表信息,可以选择下拉列表选项实现对不同成绩的选择。

具体说明如下表所示。

(2)评委打分功能通过组合框,显示评委列表信息,可以选择下拉列表选项实现不同评委的打分。

具 体说明如下表所示。

表月份列表(3)成绩排序使用sortStudent ()方法,即可对student 的成绩进行排序,并输出。

具体说明如下表 所示。

表按钮功能表(4)成绩查询首先创建菜单条,若干菜单,和若干菜单项。

再把菜单项放到菜单上,把菜单放到菜单条上,把菜单条放到窗体上。

具体说明如下表所示。

表4-4菜单功能(5)追加学生数据创建JPanol 面板,设置网格布局方式,添加按钮控件显示口历信息。

具体说明如 下表所示。

c++课程设计报告--歌手比赛系统

c++课程设计报告--歌手比赛系统

面向对象程序设计课程设计报告学号:姓名:题目:成绩:____________指导老师:2014.12C++课程设计目录项目任务书 (1)第一章项目概况 (2)1.1项目研究的意义 (2)1.2 项目研究的背景 (2)1.3项目设计的要求 (2)第二章项目设计过程 (3)2.1项目功能 (3)2.2 开发环境 (4)2.3项目结构 (5)2.4 开发模式 (6)2.4.2 歌手信息管理的实现 (7)2.4.3 类 (7)2.5项目特点 (7)2.5.1 用户选择界面 (7)2.5.2 管理员账户与登录界面 (8)2.5.3 输入异常处理 (8)2.5.4 歌手数据读入与读出 (8)2.5.5 字符串与字符数组相互转换 (9)2.5.5单链表实现歌手信息管理 (9)三、项目运行 (10)3.1项目测试过程 (10)3.2项目运行方法 (11)四、小结 (16)附录1:[参考文献] (17)附录2:[程序清单] (17)文件1 (17)文件2: (20)文件3: (31)文件4: (42)面向对象程序设计评阅表 (46)项目任务书题目歌手比赛系统作者第一章项目概况1.1项目研究的意义1.复习、巩固C++语言的基础知识,进一步加深对C++语言的理解和掌握;2.课程设计为将课本上的理论知识和实际有机的结合起来,锻炼分析解决实际问题的能力。

提高适应实际,实践编程的能力。

1.2 项目研究的背景当下,无论是社会上某些场合还是校园内,经常举行一些歌手演唱比赛,一般不会再像以前那样用笔记录比赛的情况,歌手比赛系统由此产生。

它几乎包含了一切应有的功能,歌手信息的输入,评委打分,成绩排序等功能应有尽有,省去了很多麻烦的环节,完全可以满足一次歌手比赛的需求。

开发此系统只为方便一般的歌手比赛。

1.3项目设计的要求1.对系统进行功能模块分析、控制模块分析正确,符合课题要求,实现相应功能;可以加以其他功能或修饰,使程序更加完善、合理;2.系统设计要实用,编程简练,可用,功能全面3.说明书、流程图要清楚4.记录设计情况(备查,也为编写设计说明书作好准备);5.要求采用模块化程序设计方法,要求上机调试通过和按设计报告格式。

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

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%。

平时表现评估:通过观察学生在课堂上的参与程度、提问回答等情况,评估学生的学习态度和积极性。

歌手竞赛计分系统

歌手竞赛计分系统

#include<stdio.h>#include<stdlib.h>void Add(int l);typedef struct Songer//结构体{char name[20],sex;int num;int score[10],sum;double ave;}Sg;void Menu1()//菜单{system("color 1D");//设置背景、文字颜色system("mode con cols=100 lines=30");//设置界面大小printf("***********欢迎利用歌手竞赛计分系统**********\n");printf("***************制作者:张阳光*****************\n");printf("**************学号:1204091042****************\n");printf("*************班级:12级软件工程***************\n");printf("***********指导教师:何立新、高玲玲***********\n"); }void Menu()//主菜单{system("color 6E");//设置背景、文字颜色system("mode con cols=100 lines=30");//设置界面大小printf(" 歌手竞赛计分系统\n");printf(" 1)输入选手数据\n");printf(" 2)评委打分\n");printf(" 3)成绩排序(按平均分)\n");printf(" 4)数据查询\n");printf(" 5)追加选手数据\n");printf(" 6)写入数据文件\n");printf(" 7)退出系统\n");}void main()//主函数{FILE *f;int find;int n,i=0,j;double temp;int k,l;Sg sg[10];Menu1();//挪用菜单printf("要继续体验本系统(请输入'1'(yes)或'2'(no)):");scanf("%d",&k);if(k==2){exit(0);//退出}if(k==1){Menu();//挪用主函数}flag:printf("请输入您想查看的数据编号:");scanf("%d",&n);switch(n)//switch语句的运用{case 1:printf("请输入选手人数:");scanf("%d",&l);printf("1)输入选手数据\n");for(i=0;i<l;i++)//循环输入{printf("请输入选手编号:");scanf("%d",&sg[i].num);printf("请输入选手姓名:");scanf("%s",sg[i].name);printf("请输入十位评委的打分:");for(j=0;j<10;j++)//嵌套循环{scanf("%d",&sg[i].score[j]);}}printf("您还想操作其他,请输入'1'(yes)或'2'(no):");scanf("%d",&find);if(find==1){system("cls");Menu();goto flag;}if(find==2)break;case 2:printf("2)评委打分\n");printf("请输入需要被评分的选手编号:");scanf("%d",&i);printf("十位评委给%d号打的分数为:",i);printf(" %d %d %d %d %d %d %d %d %d %d\n",sg[i-1].score[0],sg[i-1].score[1],sg[i-1].score[2 ],sg[i-1].score[3],sg[i-1].score[4],sg[i-1].score[5],sg[i-1].score[6],sg[i-1].score[7],sg[i-1].score[8],sg[i-1].score[9]);printf("您还想操作其他,请输入'1'(yes)或'2'(no):");scanf("%d",&find);if(find==1){system("cls");Menu();goto flag;}if(find==2)break;case 3://排序(从大到小)printf("3)成绩排序(按平均分)\n");for(i=0;i<l;i++){sg[i].sum=0;//初始化printf(" %d %d %d %d %d %d %d %d %d %d\n",sg[i].score[0],sg[i].score[1],sg[i].score[2],sg[i]. score[3],sg[i].score[4],sg[i].score[5],sg[i].score[6],sg[i].score[7],sg[i].score[8],sg[i].score[9]);for(j=0;j<9;j++)for(k=j+1;k<10;k++){if(sg[i].score[j]>sg[i].score[k]){temp=sg[i].score[j];sg[i].score[j]=sg[i].score[k];sg[i].score[k]=(int)temp;//强制转换(将double型直接转换成int型)}}/* for(j=0;j<10;j++){printf(" %d ",sg[i].score[j]);}printf("\n");*/for(j=1;j<9;j++){sg[i].sum+=sg[i].score[j];}// printf("sg[%d].sum=%d ",i+1,sg[i].sum);sg[i].ave=(double)sg[i].sum/8;//强制转换(将int型直接转换成double型)printf("sg[%d].ave=%.2f\n",i+1,sg[i].ave);}for(i=0;i<l-1;i++){for(j=i+1;j<l;j++)if(sg[i].ave<sg[j].ave){temp=sg[i].ave;sg[i].ave=sg[j].ave;sg[j].ave=temp;}}printf("选手的平均分从大到小排序依次为:");for(i=0;i<l;i++){printf(" %.2f ",sg[i].ave);}printf("\n");printf("您还想操作其他,请输入'1'(yes)或'2'(no):");scanf("%d",&find);if(find==1){system("cls");//清屏Menu();goto flag;}if(find==2)break;case 4:printf("4)数据查询\n");printf("请输入您想查询的选手编号:");scanf("%d",&i);printf("%s %d %d %d %d %d %d %d %d %d %d\n",sg[i-1].name,sg[i-1].score[0],sg[i-1].score[ 1],sg[i-1].score[2],sg[i-1].score[3],sg[i-1].score[4],sg[i-1].score[5],sg[i-1].score[6],sg[i-1].score[7],sg[i-1].score[8],sg[i-1].score[9]);printf("您还想操作其他,请输入'1'(yes)或'2'(no):");scanf("%d",&find);if(find==1){system("cls");Menu();goto flag;}if(find==2)break;case 5:printf("5)追加选手数据\n");Add(l);printf("您还想操作其他,请输入'1'(yes)或'2'(no):");scanf("%d",&find);if(find==1){system("cls");Menu();goto flag;}if(find==2)break;case 6://将选手数据写入文件printf("6)写入数据文件\n");f=fopen("写入数据.txt","w+");printf("请输入您想写入文件的选手数据的编号:");scanf("%d",&i);fprintf(f," %d %s %d %d %d %d %d %d %d %d %d %d\n",sg[i-1].num,sg[i-1].name,sg[i-1].score[0],sg[i-1].score[1],sg[i-1].score[2],sg[i-1].score[3],sg[i-1].score[4],sg[i-1].score[5],sg[i-1].score[6],sg[i-1].score[7],sg[i-1].score[8],sg[i-1].score[9]);printf("您还想操作其他,请输入'1'(yes)或'2'(no):");scanf("%d",&find);if(find==1){goto flag;}if(find==2)break;case 7:printf("7)退出系统\n");exit(0);default:printf("您输入的信息有误,请再输一次:\n");goto flag;}}void Add(int l)//追加选手数据{Sg sg[10];printf("请输入选手数据(编号、姓名、十位评委的打分):");scanf(" %d %s %d %d %d %d %d %d %d %d %d %d",&sg[l].num,sg[l]. name,&sg[l].score[0],&sg[l].score[1],&sg[l].score[2],&sg[l].score[3],&sg[l].score[4],&sg[l].score[5],&sg[l].score[6],&sg[l].score[7],&sg[l].score[8],&sg[l].score[9]);printf(" %d %s %d %d %d %d %d %d %d %d %d %d\n",sg[l].num,sg[l ].name,sg[l].score[0],sg[l].score[1],sg[l].score[2],sg[l].score[3],sg[l].score[4],sg[l].score[5],sg[l].score[6],sg[l].score[7],sg[l].score[8],sg[l].score[9]);}。

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

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

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语言课程设计 歌手比赛系统

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、系统完整源程序···························································

歌手比赛评分系统程序设计

歌手比赛评分系统程序设计

计通学院课程设计报告课程名称___高级程序设计语言 __ 题目名称___歌唱比赛评分系统_ __ 学生学院_ 计通学院_ __ __ 专业班级_ 软件181 _ 学号学生姓名指导教师_____ __ ____2019年1月7号目录1. 设计目的与要求 (3)1.1 题目与设计要求 (3)1.2 本程序涉及的知识点 (3)2.功能设计 (3)2.1总体设计 (3)2.2详细设计 (4)3. 程序实现 (27)3.1程序实现时应考虑的问题 (27)3.2 XX模块核心代码 (27)4.测试分析 (32)4.1 测试结果及分析 (32)5.总结 (35)参考文献 (35)1. 设计目的与要求1.1题目与设计要求题目:歌手比赛评分系统设计要求:有十个选手参加歌唱比赛,十个裁判对每个选手的演唱进行打分,去掉一个最高分,去掉一个最低分,剩下分数的平均值作为每位选手最后的成绩。

功能要求:(1)采用结构体定义每个选手的参赛编号,姓名以及十个裁判打出的分数;(2)从键盘输入每个选手的相关信息:参赛编号,姓名和十个得分;(3)计算每位选手的最后得分,并按分数由高到低排序;(4)查询功能:输入参赛选手的编号或姓名,便可输出该选手的得分以及排名;以上功能采用菜单操作方式,即从键盘输入1到3这三个数,分别完成以上(2)到(4)的功能。

1.2本程序设计的知识点结构体、数组、指针、文件操作。

2.功能设计2.1总体设计○1选手信息浏览,○2选手信息录入,○3选手信息保存,○4选手成绩查询,○5选手信息修改,○6选手信息删除,○7选手数据:编号、姓名、成绩、平均成绩。

2.2详细设计○1浏览选手数据browse()分析:实际为链表的遍历,将头节点的指针给予临时节点p1,用while语句实现链表的遍历。

void browse(){SONGER_MESSAGE *p1;if(head==NULL&&tail==NULL){printf("\n--------当前信息记录为空--------\n");}else{printf("\n-----------你要浏览的选手信息如下---------\n");printf("--------|--------\n");printf(" 编号 | 姓名 \n");p1=head;while(p1!=NULL){printf("--------|--------\n");printf("%-9d%-6s\n",p1->num,p1->name);p1=p1->next;}printf("--------|--------\n");}}○2查询选手成绩search()分析:提供详细成绩查询,排名查询的函数调用。

C++实现歌手比赛评分系统

C++实现歌手比赛评分系统

C++实现歌⼿⽐赛评分系统本⽂实例为⼤家分享了C++实现歌⼿⽐赛评分系统的具体代码,供⼤家参考,具体内容如下(⼀)需求和规格说明对⼀次歌⼿⽐赛的成绩进⾏管理,功能要求:1、输⼊每个选⼿的数据包括编号、姓名、⼗个评委的成绩,根据输⼊计算出总成绩和平均成绩(去掉最⾼分,去掉最低分)。

2、显⽰主菜单如下:1)输⼊选⼿数据2)评委打分3)成绩排序(按平均分)4)数据查询5)追加选⼿数据6)写⼊数据⽂件7)退出系统。

(⼆)设计根据上述需求,运⽤链表存储歌⼿的数据,1.数据的⽣成歌⼿⽐赛选⼿⾸先我们需要歌⼿的基本信息,将每⼀位⽤户的编号、姓名输⼊系统中,然后进⾏评委打分,之后我们对数据进⾏处理分析,计算出总分和平均值,并以.txt⽂件的格式储存起来。

2.数据的存储结构考虑到⼀个宿舍的⼈员是有限的,所以可以⽤链表进⾏存储。

宿舍的⼈员设计为结构体变量:struct singer{undefinedlong lNum;char name[20];float fScore[10];float sum1, sum2, max, min, average;struct singer *pNext;};其中包含选⼿编号、姓名、评委打分、总分(去除最⾼分和最低分)、最⾼分数、最低分数和平均分。

然后我们在主函数当中定义⼀个结构指针struct singer *spHead,作为链表的头结点,然后依次创建下⼀个结构体对他们进⾏遍历输⼊存储。

3.功能的设计函数功能的介绍接收选⼿数据:struct singer *CreatLiList(void);评委打分:void score(struct singer *);遍历输出数歌⼿数据:void TraverLiList(struct singer *);追加选⼿数据:int AppendNode(struct singer *,long , char *, float*);删除数据:int DeleteNode(struct singer *,long);搜索数据:int SearchNode(struct singer *,long );退出系统,删除链表数据:struct singer *ReleaseLiList(struct singer *);链表数据根据平均分排序:struct singer* SortList(struct singer* );将数据写⼊⽂件:将数据写⼊⽂件:void input(struct singer *);(1)输⼊选⼿数据⽤户选择功能1之后,我们对输⼊的歌⼿的编号和姓名进⾏统计存储,直到⽤户输⼊-1时,我们默认接受数据完毕,返回主程序功能页⾯。

C++程序设计歌手打分

C++程序设计歌手打分

实验名称:歌手打分实验成绩:实验日期:5月30日—6月24日学号:实验学时:8学时姓名:一、实验目的利用所学习的C++知识,完成功能相应完整的系统的设计开发。

运用面向对象的编程思想开发设计程序。

二、准备内容1. 完成小型系统的设计开发,将主要部分进行注释。

2. 演示系统,演示过程中必须讲解出模块思想。

3. 回答老师的提问。

三、实验内容自已编写类的:写代码,得分点处要用注释标注做实验指导书的:写代码,每个功能模块用注释标注,每个类用注释标注,循环、判断、SWITCH语句用注释标注出来做游戏的:写代码,每个类用注释标注,循环、判断、SWITCH语句用注释标注出来。

将自己修改的地方标注出来。

四、实验结论制作系统的心得体会实验名称:歌手打分实验成绩:实验日期:5月30日—6月24日学号:094631210实验学时:8学时姓名:胡月一、实验目的利用所学习的C++知识,完成功能相应完整的系统的设计开发。

运用面向对象的编程思想开发设计程序。

二、准备内容1. 完成小型系统的设计开发,将主要部分进行注释。

2. 演示系统,演示过程中必须讲解出模块思想。

3. 回答老师的提问。

三、实验内容1.实验题目(实验指导书)N名裁判给M名歌手打分,评分原则是去掉一个最高分,去掉一个最低分,剩下的分数的平均值为该歌手的最终得分。

裁判给分的范围是60≤分数≤100。

裁判人数N=5。

编写一个程序,每个裁判所给的分数由键盘输入,要求屏幕按一定格式输出四项内容:歌手的姓名、他的最终得分、去掉的最高分、最低分;假如有4名歌手参加比赛,按得分由高到低输出全部歌手姓名和得分。

2.实验代码#include <iostream>using namespace std;const int JudgeNum=5; // 评委人数//常成员函数const int PlayerNum=4; // 选手人数class CompetitionResult {short num; // 选手号码char name[10]; // 选手姓名float score[JudgeNum]; // 记录各评委给选手的打分float average; // 选手最后得分public:CompetitionResult( );// 无参数构造函数CompetitionResult(short n, char * ps); // 一般构造函数float MaxScore( ); // 求评委打的最高分float MinScore( ); // 求评委打的最低分实验名称:歌手打分实验成绩:实验日期:5月30日—6月24日学号:094631210实验学时:8学时姓名:胡月void SetAvg(); // 求选手的最后得分float GetAvg() { return average; } // 读选手的最后得分short GetNo( ) { return num; } // 读选手的编号void setNo (int i) { num = i; } // 设置选手的编号char * GetName( ) { return name;} // 读选手的姓名float GetScore(int j){ return score[j];} // 读第j个评委的打分void SetScore(int k, float av){ score[k] = av;} // 记录第j个评委的打分friend void Sort(CompetitionResult * pr, int n); // 按最后得分由高到低排序//友元函数};CompetitionResult::CompetitionResult( ) // 无参数构造函数{num = 0;strcpy(name, "");for(int i = 0; i < JudgeNum; i++)//循环语句score[i] = 0;}CompetitionResult::CompetitionResult(short n, char * ps) // 一般构造函数{num = n;strcpy(name, ps);for(int i = 0; i < JudgeNum; i++)//循环语句score[i] = 0;}float CompetitionResult::MaxScore( )//求最高分{float max;max = score[0];for( int i = 1; i < JudgeNum; i++ )//循环语句if(score[i] > max)max = score[i];实验名称:歌手打分实验成绩:实验日期:5月30日—6月24日学号:094631210实验学时:8学时姓名:胡月return max;}float CompetitionResult::MinScore( )//求最低分{float min;min = score[0];for( int i = 1; i < JudgeNum; i++ )//循环语句if(score[i] < min)min = score[i];return min;}void CompetitionResult::SetAvg() // 求选手的最后得分{float total = 0;for( int i = 0; i < JudgeNum; i++)//循环语句total += score[i];total -= MaxScore()+MinScore();average=total/(JudgeNum-2);}void Sort(CompetitionResult * pr, int n) // 按最后得分由高到低排序{实验名称:歌手打分实验成绩:实验日期:5月30日—6月24日学号:094631210实验学时:8学时姓名:胡月int i, j,k;CompetitionResult temp;for (i=0;i<n-1;i++)//循环语句{k=i;for (j=i+1;j<n;j++)//循环语句if ((pr[j].average) > (pr[k].average))//判断语句k=j;if (k!=i)//判断语句{temp=pr[i];pr[i]=pr[k];pr[k]=temp;}}}int main( ){CompetitionResult r[PlayerNum] = {CompetitionResult(1, "张丽"), CompetitionResult(2, "刘飞"), CompetitionResult(3, "姜昕"), CompetitionResult(4, "张三")};float temp,min,max;cout << "采用100分制,裁判给分的范围是60≤分数≤100精确到小数点后两位,得分间用'TAB'键分隔"<<endl;for( int i =0; i < PlayerNum; i++ )//循环语句{cout << "\n请评委给第" << r[i].GetNo () << "号选手打分:\n";for(int j = 0; j < JudgeNum; j++ )//循环语句cout << "评委"<<j+1<<"\t";cout<<endl;for(j = 0; j < JudgeNum; j++ )//循环语句实验名称:歌手打分实验成绩:实验日期:5月30日—6月24日学号:094631210实验学时:8学时姓名:胡月{cin >> temp;if(temp<=60||temp>=100)//判断语句{cout<<"你输入了一个非法值。

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

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

C语言程序课程设计—歌手比赛系统C语言程序课程设计——歌手比赛系统一、引言随着计算机技术的不断发展,计算机应用越来越广泛,其中,音乐类比赛系统的需求也日益增长。

为了满足这一需求,我们设计了一个基于C语言的歌手比赛系统。

本文将详细介绍该系统的设计思路、实现方法以及特色功能。

二、系统设计1、功能设计本系统主要功能包括:选手信息管理、比赛流程管理、评委评分管理、得分统计与排名、现场大屏幕显示等。

通过这些功能,确保歌手比赛的公平、公正与高效。

2、模块设计根据系统功能,我们将系统分为以下几个模块:(1)选手信息模块:管理参赛选手的基本信息,包括姓名、性别、年龄、所属单位等。

(2)比赛流程模块:管理比赛流程,包括比赛时间、比赛地点、比赛轮次、每轮选手名单等。

(3)评委评分模块:管理评委评分,包括评分标准、评委评分、评分统计等。

(4)得分统计与排名模块:根据评委评分统计选手得分,并根据得分进行排名。

(5)现场大屏幕显示模块:将比赛进程、选手得分与排名等信息实时展示在大屏幕上,方便现场观众查看。

3、数据库设计为了存储和处理选手信息、比赛流程、评委评分等数据,我们设计了一个关系型数据库。

主要表格包括:选手信息表、比赛流程表、评委评分表、得分排名表等。

三、系统实现1、界面设计系统界面采用简洁明了的风格,以方便用户操作。

界面包括:选手信息展示区、比赛流程展示区、评委评分展示区、得分排名展示区、大屏幕显示控制区等。

2、功能实现(1)选手信息管理:实现添加、修改、删除选手信息等功能。

(2)比赛流程管理:实现添加、修改、删除比赛流程等功能。

(3)评委评分管理:实现评委对选手的评分、评分修改、评分提交等功能。

(4)得分统计与排名:根据评委评分统计选手得分,并根据得分进行排名,生成得分排名表。

(5)现场大屏幕显示:通过与大屏幕显示设备的通信,实时展示比赛进程、选手得分与排名等信息。

四、特色功能1、实时更新功能:系统能够根据比赛进程实时更新选手信息、比赛流程、评委评分等内容,确保信息的准确性。

C语言程序设计课程设计--歌手成绩管理系统

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课程设计

歌手比赛系统 c 课程设计一、课程目标知识目标:1. 让学生掌握歌手比赛系统的基本组成部分,如评分系统、选手管理、赛事流程控制等。

2. 使学生了解并运用程序设计的基本原理,结合所学的编程语言,实现歌手比赛系统的功能模块。

3. 帮助学生理解数据库管理的基本概念,学会使用数据库存储和管理歌手比赛的相关数据。

技能目标:1. 培养学生运用所学编程语言(如C语言)进行系统设计的能力,具备一定的编程实践操作技能。

2. 提高学生分析问题、解决问题的能力,使其能够针对歌手比赛系统的功能需求进行合理的模块划分和程序设计。

3. 培养学生团队协作和沟通表达的能力,能在项目开发过程中有效分工与合作。

情感态度价值观目标:1. 培养学生对计算机科学和编程技术的兴趣,激发其探究精神和创新意识。

2. 培养学生严谨、认真的工作态度,使其在项目开发过程中养成良好的编程习惯。

3. 培养学生面对困难和挑战时保持积极的心态,具备克服困难、解决问题的信心和勇气。

本课程结合学生年级特点,注重理论与实践相结合,旨在提高学生的编程实践能力和团队协作能力,使学生在完成课程学习后,能够独立或协作完成具有一定实用价值的歌手比赛系统项目。

同时,课程强调培养学生正确的价值观和积极的态度,为其未来的学习和职业发展奠定基础。

二、教学内容1. 程序设计基础:回顾C语言的基本语法,包括数据类型、运算符、控制结构等,为后续的系统设计打下基础。

教材章节:C语言程序设计基础2. 系统需求分析:讲解如何对歌手比赛系统进行需求分析,明确系统功能模块和性能要求。

教材章节:软件工程概述、需求分析3. 数据库设计:介绍数据库基本概念,指导学生学会使用SQL语句进行数据库设计和数据操作。

教材章节:数据库原理与应用、SQL语言4. 系统设计与模块划分:根据需求分析,进行系统设计,将系统划分为若干功能模块,如选手管理、评分系统、赛事流程控制等。

教材章节:软件设计、模块化设计5. 编程实践:指导学生运用C语言进行系统功能模块的编码实现,包括界面设计、功能实现等。

C语言课程设计报告—歌星大奖赛评分系统

C语言课程设计报告—歌星大奖赛评分系统

C语言课程实习报告课程名称:歌星大奖赛学院:信息工程学院专业:通信工程班级:学号:姓名:指导老师:第一部分:课程设计编号、名称、容名称:歌星大奖赛容:【要求】(1)在歌星大奖赛中,有十个评委为参赛的选手打分,分数为1~100分。

选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均植。

请编写一个程序实现。

(2)同时对评委评分进行裁判,即在10个评委中找出最公平(即评分最接近平均分)和最不公平(即与平均分的差距最大)的评委。

【提示】一、需求分析这个问题的第一个要求算法比较简单,但是要注意在程序中判断最大、最小值的变量是如何赋值的。

第二个要求为了考虑效率,要用到排序技术。

第二部分:程序总体设计思路由于C语言是面对过程的语言,故我的设计思路是根据目标程序运行的过程来编写的。

在编写本程序的过程中,首先我借助购买的指导材料,了解了一些目标程序运行的次序与界面的操作方法,然后按照题目的具体要求进行思考和设计。

具体的设计思路如下:程序的要根据十个评委对歌手的打分情况,求出这个歌手的平均成绩和最公平及最不公平的裁判。

首先,我先考虑到程序的数据输入,可以用scanf函数来解决,并将输入的数据存放于数组中。

随后对存放在数组中的数据进行排序,这步为执行找出最不公平的裁判提高了效率,只需将排好序的数组的首尾分值与平均值进行比较即可。

将排好序的数组中间的八个数求平均值即为此歌手的成绩,可见排序法可大大的简化程序。

接下来是最后一个任务就是找最公平的裁判,此过程我使用拆半法,先将靠近中间的一个裁判假设为最公平的,再将他前面的裁判与之比较,找出前半部分的最公平的裁判,再将之与后半部分的进行比较,得出最终的最公平的裁判。

为了方便管理员更好的使用界面操作,我还设置了每输入完一组数据并得到结果后,或接着输入下组数据或按0跳出界面。

整个程序的设计思路到此结束。

第三部分:程序功能划分、图示及流程图【功能模块划分及其流程图】本程序功能模块根据程序设计的需求,综合程序的实用性、人性化、智能化的考虑,将程序划分为6个部分分别编写,程序主体功能将由这6个部分来完成。

歌手评分系统

歌手评分系统

/***************************************************************************** 创建链表李佳音******************************************************************************/ #include<stdio.h>#include<stdlib.h>typedef struct Singer{char name[20];int number; //编号float score[9]; //打分(九名评委)float average; //平均分struct Singer *next;//指向下一个元素的指针struct Singer *count;}SINGER;SINGER* CreateLink(int number){SINGER *head,*tail,*NewNode;int n;head=tail=NewNode=(SINGER *)malloc(sizeof(SINGER));for(n=0;n<number;n++){NewNode=(SINGER *)malloc(sizeof(SINGER));tail->next=NewNode;tail=NewNode;}NewNode->next=NULL;head->count=number;return head; //返回头指针}/****************************************************************************** 输入数据函数InputData()赵烯彤******************************************************************************/ void InputData(SINGER *s)FILE *fp;int n; //评委打分循环用int m; //记第m名选手用SINGER *h=s->next; //定义新的头指针,以免原头指针移动m=1;fp=fopen("singerOriginal.dat","wb");while(1){if(h==NULL){ //只有链表结束时才结束本函数return;}printf("请输入第%d个选手的信息:\n",m);printf("请输入姓名:");scanf("%s",h->name);printf("请输入编号:");scanf("%d",&(h->number));getchar();printf("请输入成绩:\n");for(n=0;n<9;n++){printf("请输入第%d个评委的打分:",n+1);scanf("%f",&(h->score[n]));}printf("******************************************************************** **********\n");printf("******************************************************************** **********\n");h=h->next; //移动指针m++;fwrite(s,sizeof(SINGER),1,fp);}fclose(fp);}/****************************************************************************** 计算函数CalculateData()李京潼******************************************************************************/ void CalculateData(SINGER *s){int n; //循环用float min; //记录最小值float max; //记录最大值SINGER *h=s->next; //定义新的头指针,以免原头指针移动while(1){if(h==NULL){ //只有链表结束时才结束本函数return;}max=h->score[0]; //初始化maxmin=max; //初始化minh->average=0; //初始化averagefor(n=0;n<9;n++){ //求出最大值,最小值if(h->score[n]>max){max=h->score[n];}if(h->score[n]<min){min=h->score[n];}}for(n=0;n<9;n++){ //计算总分(h->average)+=(h->score[n]);}h->average=(float)((h->average-max-min)/7.0); //计算平均分h=h->next;}}/****************************************************************************** 排序函数SortData()王江宁******************************************************************************/ void SortData(SINGER *s,int number){SINGER *head,*tail; //定义头尾节点指针SINGER *p,*p1,*p2,*p3; //定义四个指针,其中p为寻找尾节点用,p1,p2,p3为排序用int n; //循环用tail=(SINGER *)malloc(sizeof(SINGER)); //尾尾节点分配空间head=s; //为head赋值p=s->next; //初始化pwhile(p->next!=NULL){ //p找尾节点p=p->next;}p->next=tail; //找到后尾节点的next存tailtail->next=NULL; //tail中的next存空,防止出错for(n=0;n<number-1;n++){ //循环number-1次,排序p3=head; //为p3初始化到头节点p1=p3->next; //为p1初始化到头节点的下一个p2=p1->next; //为p2初始化到p1的下一个while(p2!=tail){ //p2未到底后if((p1->average)<(p2->average)){ //交换p1->next=p2->next;p2->next=p1;p3->next=p2;p3=p2;p2=p1->next;}else{p3=p1;p1=p2;p2=p2->next;}}}p=s->next;while(p->next!=tail){ //将p重新定义到尾p=p->next;}p->next=NULL; //next存空,防出错}/****************************************************************************** 输出数据源函数OutputSource()陈琦******************************************************************************/ void OutputSource(SINGER *s){SINGER *h=s->next; //定义新的头指针,以免原头指针移动int n; //循环用printf("下面输出原始成绩:\n");printf("选手编号姓名评委打分\n");while(1){if(h==NULL){return;}printf(" %d %s ",h->number,h->name);for(n=0;n<9;n++){printf("%.3f ",h->score[n]);}printf("\n");h=h->next; //移动指针}}/****************************************************************************** 输出最终数据OutputFinal()陈琦******************************************************************************/v oid OutputFinal(SINGER *s){FILE *fp;SINGER *h=s->next; //定义新的头指针,以免原头指针移动int n=1; //排名用printf("下面输出最终成绩:\n");printf("名次选手编号姓名得分 \n");fopen("singerFinal.dat","wb");while(1){if(h==NULL){return;}printf(" %d %d %s %.3f",n,h->number,h->name,h->average);n++;printf("\n");h=h->next;}fclose(fp);}/****************************************************************************** 删除数据Delete()赵烯彤******************************************************************************/ SINGER* Delete(SINGER *s){int SN; //删除用SINGER *p1=NULL; //存空SINGER *p2=NULL; //存空p1=s->next;printf("请输入您想删除的歌手的编号");scanf("%d",&SN); //读入想删除的编号while(SN!=p1->number&&p1->next!=NULL){ //p1中的number不为SNp2=p1; //移动p1=p1->next; //移动}if(p1->number==SN){if(p1==s->next){ //当要改数据为头节点时s=p1; //更新头节点p1=NULL; //防止误操作}else{p2->next=p1->next;free(p1);}return s;}else{printf("无此名歌手!\n");}return s; //返回头指针}/****************************************************************************** 插入数据insert()石洁******************************************************************************/void insert(SINGER *head,SINGER *p){SINGER *s = (SINGER*)malloc(sizeof(SINGER));for(s=head;s->next!=NULL;){s=s->next;}s->next=p;p->next=NULL;}/****************************************************************************** 主函数main()石洁******************************************************************************/ int main(void){SINGER *head; //头指针int SingerNumber; //学生人数int instruct;//输入指令用int n;printf("******************************************************************** **********\n");printf("******************************************************************** **********\n");printf("歌手评分系统\n");printf("\n\n");printf("下面开始创建歌手信息\n");printf("请输入歌手人数:");scanf("%d",&SingerNumber);head=CreateLink(SingerNumber); //调用创建链表函数printf("下面请输入歌手信息\n");InputData(head); //调用输入函数OutputSource(head); //调用输出源数据函数printf("******************************************************************** **********\n");printf("******************************************************************** **********\n");printf("请输入操作指令:\n");while(1){printf("插入个人信息请按:“1”\n");printf("删除个人信息请按:“2”\n");printf("计算成绩请按:“3”\n");printf("计算排名请按:“4”\n");printf("输出最终成绩请按:“5”\n");printf("退出请按:“6”\n");printf("请输入操作指令:");scanf("%d",&instruct); //录入指令if(instruct==1) //指令1{SINGER * p = (SINGER*)malloc(sizeof(SINGER));printf("请输入要插入的歌手的信息");printf("请输入姓名:");scanf("%s",p->name);printf("请输入编号:");scanf("%d",&(p->number));getchar();insert(head,p); //调用插入函数SingerNumber++;printf("请输入成绩:\n");for(n=0;n<9;n++){printf("请输入第%d个评委的打分:",n+1);scanf("%f",&(p->score[n]));}printf("插入完成!请继续操作:\n");printf("***********************************************************\n");printf("***********************************************************\n");}else if(instruct==2) //指令2{head=Delete(head); //调用删除函数printf("删除完成!请继续操作:\n");printf("***********************************************************\n");printf("***********************************************************\n");}else if(instruct==3) //指令3{CalculateData(head); //调用计算平均分函数printf("计算完成!请继续操作:\n");printf("***********************************************************\n");printf("***********************************************************\n");}else if(instruct==4) //指令4{SortData(head,SingerNumber); //调用排序函数printf("排序完成!请继续操作:\n");printf("***********************************************************\n");printf("***********************************************************\n");}else if(instruct==5) //指令5{OutputFinal(head); //调用输出最终结果函数printf("输出完成!请继续操作:\n");printf("***********************************************************\n");printf("***********************************************************\n");}else if(instruct==6) //指令6{ //按“6”退出程序break;}else{ //报错,重新输入printf("输入有误,请重新输入!\n");printf("***********************************************************\n");printf("***********************************************************\n");}}return;}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计通学院课程设计报告课程名称___高级程序设计语言 __ 题目名称___歌唱比赛评分系统_ __ 学生学院_ 计通学院_ __ __ 专业班级_ 软件181 _ 学号学生姓名指导教师_____ __ ____2019年1月7号目录1. 设计目的与要求 (3)1.1 题目与设计要求 (3)1.2 本程序涉及的知识点 (3)2.功能设计 (3)2.1总体设计 (3)2.2详细设计 (4)3. 程序实现 (27)3.1程序实现时应考虑的问题 (27)3.2 XX模块核心代码 (27)4.测试分析 (32)4.1 测试结果及分析 (32)5.总结 (35)参考文献 (35)1. 设计目的与要求1.1题目与设计要求题目:歌手比赛评分系统设计要求:有十个选手参加歌唱比赛,十个裁判对每个选手的演唱进行打分,去掉一个最高分,去掉一个最低分,剩下分数的平均值作为每位选手最后的成绩。

功能要求:(1)采用结构体定义每个选手的参赛编号,姓名以及十个裁判打出的分数;(2)从键盘输入每个选手的相关信息:参赛编号,姓名和十个得分;(3)计算每位选手的最后得分,并按分数由高到低排序;(4)查询功能:输入参赛选手的编号或姓名,便可输出该选手的得分以及排名;以上功能采用菜单操作方式,即从键盘输入1到3这三个数,分别完成以上(2)到(4)的功能。

1.2本程序设计的知识点结构体、数组、指针、文件操作。

2.功能设计2.1总体设计○1选手信息浏览,○2选手信息录入,○3选手信息保存,○4选手成绩查询,○5选手信息修改,○6选手信息删除,○7选手数据:编号、姓名、成绩、平均成绩。

2.2详细设计○1浏览选手数据browse()分析:实际为链表的遍历,将头节点的指针给予临时节点p1,用while语句实现链表的遍历。

void browse(){SONGER_MESSAGE *p1;if(head==NULL&&tail==NULL){printf("\n--------当前信息记录为空--------\n");}else{printf("\n-----------你要浏览的选手信息如下---------\n");printf("--------|--------\n");printf(" 编号 | 姓名 \n");p1=head;while(p1!=NULL){printf("--------|--------\n");printf("%-9d%-6s\n",p1->num,p1->name);p1=p1->next;}printf("--------|--------\n");}}○2查询选手成绩search()分析:提供详细成绩查询,排名查询的函数调用。

其中各功能均采用菜单选择的方式。

void search(){int c;printf("\n请选择查询内容:\n");printf("1.选手详细成绩查询 2.选手排名查询\n请输入您的选择:");scanf("%d",&c);switch(c){case1:system("cls");print();break;case2:system("cls");rank();break;}}○3查询选手信息print()分析:实际为输出链表中的某个节点,输出某个选手的编号与姓名较为好实现,输出10位评委成绩则用的for语句来实现。

{SONGER_MESSAGE *p1=(SONGER_MESSAGE *)malloc(LEN);int check=0,i;long seeknum;printf("\n请输入要查找的选手编号:");scanf("%d",&seeknum);if(head==NULL&&tail==NULL ){printf("\n对不起,当前记录为空!\n");}else{p1=head;printf("\n-----------你要找的选手的成绩如下---------\n");//在这里找到了要查找的选手成绩printf("------|------|-----|----|----|----|----|----|----|----|----|----|----|----------|--------\n"); printf(" 编号 | 姓名 | 成绩| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 平均成绩\n"); printf("------|------|-----|----|----|----|----|----|----|----|----|----|----|----------|--------\n"); while(p1 != NULL){if(p1->num==seeknum){printf("%-7d%-6s",p1->num,p1->name);printf(" ");for(i=0;i<N;i++){printf("%.1f",p1->grades[i]);}printf("%-6.2lf\n",p1->ave);check=1;getchar();return;}else{p1=p1->next;}}}if(head!=NULL&&check==0){printf("\n对不起,你查看的选手成绩不存在!\n");}}○4选手信息录入creat()分析:录入信息表现为创建链表节点并给节点的元素赋值,然后对评委的分数进行排序(链表的排序),排序选择冒泡排序法,最后去掉一个最高分去掉一个最低分。

void creat(){int i,j;float t;char c='y';while(c=='y’||c=='Y'){SONGER_MESSAGE *p1=(SONGER_MESSAGE *)malloc(LEN);printf("\n请输入要录入的选手信息:\n");printf("\n选手编号:");scanf("%d",&p1->num);printf("\n选手姓名:");scanf("%s",p1->name);printf("\n请输入10位评委点评成绩:");p1->ave =0;for(i=0;i<N;i++){scanf("%f",&(p1->grades[i])); //runtime error//p1->ave+=p1->grades[i];}for(i=0; i<N-1; i++)//冒泡排序法让那个成绩从小到大排列,然后选出最大值是最后一个,最小值是第一个//for(j=0;j<N-1-i;j++)if(p1->grades[j]>p1->grades[j+1]){t=p1->grades[j];p1->grades[j]=p1->grades[j+1];p1->grades[j+1]=t;}p1->ave=(p1->ave-(p1->grades[0]+p1->grades[9]))/8;//去掉一个最高分,去掉一个这一低分,得出最后的平均分//p1->next=NULL;if(p1==NULL){printf("\n内存分配失败\n");n=n-1;}if(head==NULL&&tail==NULL) //当前没有结点,创建第一个结点//{head=p1;head->next=NULL;tail=head;printf("\n------选手信息录入成功------\n");}Else //如果当前还有节点则插入到尾部//{tail->next=p1;tail=p1;tail->next=NULL;printf("\n------选手信息录入成功------\n");}printf("是否继续(Y/N):");getchar();scanf("%c",&c);}}○5选手信息保存函数save()分析:保存文件的流程。

使用fopen()函数打开txt文件,“w”参数代表打开只写文件,再利用fprintf()函数写入选手内容,最后用fclose()函数关闭文件。

void save() //将数据保存到文件//{FILE *fp;SONGER_MESSAGE *p1; //=(SONGER_MESSAGE *)malloc(LEN);//p1=head;fp=fopen("参赛选手名单.txt","w");fprintf(fp,"--------|--------\n");fprintf(fp," 编号| 姓名\n");while(p1!=NULL){fprintf(“fp--------|--------\n");fprintf(“fp %-9d%-6s\n",p1->num,p1->name);p1=p1->next;}fprintf(“fp--------|--------\n");fclose(fp);printf("\n\t文件已将保存到\"参赛选手名单.txt\”");}○6选手信息修改函数update()分析;实现选手信息的修改,核心内容为链表的遍历。

找出要修改的选手,修改其个人信息。

void update(){SONGER_MESSAGE *p1;//=(SONGER_MESSAGE *)malloc(LEN);//int check=0; //用来进行判断,是否找到了要修改的信息// long updatenum;printf("\n请输入要修改的选手编号:");scanf("%d",&updatenum); //查找到要修改的选手//if(head==NULL&&tail==NULL){printf("\n--------当前信息记录为空--------\n");}else{p1=head;while(p1!==NULL){if(p1->num==updatenum){printf("\n-----------你要修改的选手信息如下---------\n"); printf("--------|--------\n");printf(" 编号| 姓名\n");printf("--------|--------\n");printf(" %-9d%-6s\n",p1->num,p1->name);printf("--------|--------\n");printf("\n-----------请重新写入此选手信息:---------\n"); check=1;//从新写入修改项目printf("\n修改选手编号为:");scanf("%d",&p1->num);printf("\n修改选手姓名为:");scanf("%s",p1->name);return;}else{p1=p1->next;}}}if(head!=NULL&&check==0){printf("\n对不起,你要修改的选手信息不存在!\n");}getchar();}○7选手信息删除函数del()分析:节点的删除较为繁琐。

相关文档
最新文档