歌手评分系统.doc_第1页
歌手评分系统.doc_第2页
歌手评分系统.doc_第3页
歌手评分系统.doc_第4页
歌手评分系统.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

/* 创建链表李佳音*/#include#includetypedef struct Singerchar name20; int number; /编号 float score9;/打分(九名评委) 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;nnext=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;nscoren);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-score0;/初始化maxmin=max;/初始化minh-average=0;/初始化averagefor(n=0;nscorenmax)max=h-scoren;if(h-scorenscoren;for(n=0;naverage)+=(h-scoren);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;nnext;/为p1初始化到头节点的下一个p2=p1-next;/为p2初始化到p1的下一个while(p2!=tail)/p2未到底后if(p1-average)average)/交换p1-next=p2-next;p2-next=p1;p3-next=p2;p3=p2;p2=p1-next;elsep3=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;nscoren);printf(n);h=h-next;/移动指针/*输出最终数据OutputFinal()陈琦*/void 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;/防止误操作elsep2-next=p1-next;free(p1);return s;elseprintf(无此名歌手!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(nn);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)/指令1SINGER * 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;nscoren);printf(插入完成!请继续操作:n);printf(*n);printf(*n);else if(instruct=2)/指令2head=Delete(head);/调用删除函数printf(删除完成!请继续操作:n);printf(*n);printf(*n);else if(instruct=3)/指令3CalculateData(head);/调用计算平均分函数printf(计算完成!请继续操作:n);printf(*n);printf(*n);else if(instruct=4)/指令4SortData(head,SingerNumber);/调用排序函数printf(排序完成!请继续操作:n);printf(*n);prin

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论