资源描述:
《投票评选十佳运动员》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、十佳运动员评选活动一、功能要求某市体委与电视台联合举办十佳运动员有奖评选活动,具体说明如下(1)体委组织有关人士评出了如表1所示的20个候选人名单运动员编号运动员姓名运动员编号运动员姓名(2)电视台在网上设立了投票站供市民投票,以便用计算机进行统计和核对。选票格式如表2所示选票编号0000001投票人姓名投票人地址拟选运动员编号选票号为7位数字,有效的运动员编号是01~20(3)计算机统计的具体任务是①统计出各候选人的得票数,并根据得票数排定名次,选出十佳人员②根据命中率选出10个获奖的参选者,并排定名次命中率=命中分+次序分命中分:选中十佳中的一个即得10分,选
2、中n个得n╳10分(不考虑次序)次序分:选票中的第一个运动员与十佳中的第一名相符(简称选中第一名)得9分选中第二名得8分,……,选中第十名的0分(4)编写出完成以上统计任务的程序具体要求如下1候选人数据和选票数据应以文本文件的方式分别存放在两个文件中,选票中参选的地址可以不考虑2程序中,对选票数据要求采用结构体作数据结构3程序除能完成统计功能外,应具有核对选票数据的功能,并且每一功能的实现要用选择菜单的方式进行(使用简单的文本菜单),菜单包含以下几项a.统计b.核对选票c.退出4各个功能以及相对独立的任务要求编写成独立的函数,主函数只用于管理菜单和织调用个功能函数
3、5统计结果除在屏幕显示外,还要求输出到文件中最好用上链表#include#include#include#include#include#include/*存储运动员信息的文件*/#defineDATA1"data1.txt"/*存储选票信息的文件*/#defineDATA2"data2.txt"typedefstructsportsman{intnumber;charname[21];inttickets;structsportsman*next;
4、}sportsman;typedefstructticket{charticknum[8];charvotername[21];charvoteraddr[51];intsportsman;intscores;structticket*next;}ticket;intSIZE1,SIZE2;sportsman*head1,*tail1;ticket*head2,*tail2;voidinit();voidcleanup();voidcreate();voidprocess();sportsman*sortlist1();ticket*sortlist2();voi
5、dshowdetail();voidshowtop10();voidclearlist();voidinit(){SIZE1=sizeof(sportsman);SIZE2=sizeof(ticket);head1=tail1=(sportsman*)malloc(SIZE1);head2=tail2=(ticket*)malloc(SIZE2);memset(head1,0,SIZE1);memset(head2,0,SIZE2);}voidcreate(){FILE*infile=fopen(DATA1,"r");if(infile==NULL){printf
6、("无法打开文件1");cleanup();exit(1);}while(1){charnm[21];intnum;memset(nm,0,21);num=0;fscanf(infile,"%d",&num);if(num==0)break;sportsman*node=(sportsman*)malloc(SIZE1);node->number=num;node->tickets=0;fscanf(infile,"%s",node->name);tail1->next=node;tail1=node;}tail1->next=NULL;fclose(infi
7、le);infile=fopen(DATA2,"r");if(infile==NULL){printf("无法打开文件2");cleanup();exit(1);}while(1){charnum[8];memset(num,' ',8);fscanf(infile,"%s",num);if(num[0]==' ')break;ticket*node=(ticket*)malloc(SIZE2);memset(node,0,SIZE2);strcpy(node->ticknum,num);fscanf(infile,"%s%s%d",node->voter
8、name,