天天看点

C语言十佳运动员有奖评选系统,投票评选十佳运动员.doc

投票评选十佳运动员

十佳运动员评选活动一、功能要求某市体委与电视台联合举办十佳运动员有奖评选活动,具体说明如下(1)体委组织有关人士评出了如表1所示的20个候选人名单运动员编号 运动员姓名 运动员编号 运动员姓名(2)电视台在网上设立了投票站供市民投票,以便用计算机进行统计和核对。选票格式如表2所示选票编号 0000001 投票人姓名 投票人地址 拟选运动员编号 选票号为7位数字,有效的运动员编号是01~20(3)计算机统计的具体任务是 统计出各候选人的得票数,并根据得票数排定名次,选出十佳人员 根据命中率选出10个获奖的参选者,并排定名次命中率=命中分+次序分命中分:选中十佳中的一个即得10分,选中n个得n10分(不考虑次序)次序分:选票中的第一个运动员与十佳中的第一名相符(简称选中第一名)得9分选中第二名得8分,……,选中第十名的0分(4)编写出完成以上统计任务的程序具体要求如下1 候选人数据和选票数据应以文本文件的方式分别存放在两个文件中,选票中参选的地址可以不考虑2程序中,对选票数据要求采用结构体作数据结构3 程序除能完成统计功能外,应具有核对选票数据的功能,并且每一功能的实现要用选择菜单的方式进行(使用简单的文本菜单),菜单包含以下几项a. 统计b. 核对选票c. 退出4 各个功能以及相对独立的任务要求编写成独立的函数,主函数只用于管理菜单和织调用个功能函数5统计结果除在屏幕显示外,还要求输出到文件中最好用上链表

#include #include #include #include #include #include #define DATA1 "data1.txt" #define DATA2 "data2.txt" typedef struct sportsman{ int number; char name[21]; int tickets; struct sportsman *next;} sportsman;typedef struct ticket{ char ticknum[8]; char votername[21]; char voteraddr[51]; int sportsman; int scores; struct ticket *next;} ticket;int SIZE1, SIZE2;sportsman *head1, *tail1;ticket *head2, *tail2;void init();void cleanup();void create();void process();sportsman *sortlist1();ticket *sortlist2();void showdetail();void showtop10();void clearlist();void init(){ SIZE1 = sizeof(sportsman); SIZE2 = sizeof(ticket); head1 = tail1 = (sportsman *)malloc(SIZE1); head2 = tail2 = (ticket *)malloc(SIZE2); memset(head1, 0, SIZE1); memset(head2, 0, SIZE2);}void create(){ FILE *infile = fopen(DATA1, "r"); if (infile == NULL) { printf("无法打开文件1\n"); cleanup(); exit(1); } while (1) { char nm[21]; int num; 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;