欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

计分系统,,计分系统,可以规定选手个

来源: javaer 分享于  点击 12168 次 点评:152

计分系统,,计分系统,可以规定选手个


计分系统,可以规定选手个数。自动去掉最低分、最高分并取平均数,生成文件。

#include "stdio.h"#include "conio.h"#include "stdlib.h"#define SIZE_1 10//#define debugFILE *fp;struct stu_infor{    int num;    char name[10];    float score[7];    float max;    float min;    float aver;    int rack;}stu[SIZE_1];void init() //建立文件并初始化(记录学生姓名并将数据归零){    printf("未建立文件,请初始化……\\n\\n");    if((fp=fopen("student_information","wb"))==NULL)  //建立文件并打开 只写    {        printf("error!!can't open the file\\n");        return;    }    printf("现在请输入学生姓名:\\n");    for(int i=0;i<SIZE_1;i++)    {        printf("请输入%3d 号选手姓名:",i+1);        scanf("%s",stu[i].name);        stu[i].max=0;stu[i].min=0;stu[i].aver=0;stu[i].rack=0;stu[i].num=i;        for(int j=0;j<7;j++)            stu[i].score[j]=0;        fwrite(&stu[i],sizeof(struct stu_infor),1,fp);    }    fclose(fp);}void load()//读入数据{    if((fp=fopen("student_information","r"))==NULL)    {        printf("error!!can't open the file\\n");        return;    }    for(int i=0;i<SIZE_1;i++)    {        fread(&stu[i],sizeof(struct stu_infor),1,fp);    }#ifdef debug    for(i=0;i<SIZE_1;i++)        printf("%s %f %f %f %d \\n",stu[i].name,stu[i].max,stu[i].min,stu[i].aver,stu[i].num);#endif    fclose(fp);}void score(int num,float score[])//分数从小到大排序并储存{    float t;    if((fp=fopen("student_information","wb"))==NULL)  //建立文件并打开 只写    {        printf("error!!can't open the file\\n");        return;    }    for(int i=0;i<SIZE_1;i++)    {        fread(&stu[i],sizeof(struct stu_infor),1,fp);    }    for(int j=0;j<6;j++)        for(int i=0;i<6-j;i++)            if(score[i]>score[i+1])            {                t=score[i];                score[i]=score[i+1];                score[i+1]=t;            }    stu[num].max=score[6];stu[num].min=score[0];    for(i=0;i<7;i++)    {        stu[num].score[i]=score[i];    }    for(i=1;i<6;i++)    {        stu[num].aver=stu[num].aver+score[i];    }    stu[num].aver=stu[num].aver/5;    for(i=0;i<=num;i++)        fwrite(&stu[i],sizeof(struct stu_infor),1,fp);    fclose(fp);}void put_in()//输入分数{    int num;    printf("\\n先输入选手编号,再输入分数。当编号为0是结束录入。\\n");    while(1)    {        printf("请输入选手编号:");A:        scanf("%d",&num);        if(num>SIZE_1||num<0)        {            printf("不存在此选手,请重新输入!\\n");            goto A;        }        if(num==0) break;        num--;        printf("请输入分数(每输入一个分数后回车结束)\\n");        for(int i=0;i<7;i++)            scanf("%f",&stu[num].score[i]);        score(num,stu[num].score);        printf("%3d号选手%s的最高分为%3.2f,最低分为%3.2f,平均分为%3.2f\\n\\n",num+1,stu[num].name,stu[num].max,stu[num].min,stu[num].aver);    }    printf("结束输入!\\n");}void stu_rank()//选手排名并储存{    int rank[SIZE_1];    float score[SIZE_1];    float t;    int tt;    struct stu_infor linshi;    load();    if((fp=fopen("student_information","wb"))==NULL)  //建立文件并打开 只写    {        printf("error!!can't open the file\\n");        return;    }    for(int i=0;i<SIZE_1;i++)    {        rank[i]=i;        score[i]=stu[i].aver;    }    for(int j=0;j<SIZE_1-1;j++)        for(i=0;i<SIZE_1-1-j;i++)            if(score[i]<score[i+1])            {                t=score[i];score[i]=score[i+1];score[i+1]=t;                tt=rank[i];rank[i]=rank[i+1];rank[i+1]=tt;            }    for(i=0;i<SIZE_1;i++)        stu[rank[i]].rack=i+1;    for(j=0;j<SIZE_1-1;j++)        for(i=0;i<SIZE_1-1-j;i++)            if(stu[i].rack>stu[i+1].rack)            {                linshi=stu[i];                stu[i]=stu[i+1];                stu[i+1]=linshi;            }    for(i=0;i<SIZE_1;i++)        fwrite(&stu[i],sizeof(struct stu_infor),1,fp);    fclose(fp);}void gonggao(){    load();    printf("\\n\\n姓名\\t平均分\\t名次\\t所有得分\\n");    for(int i=0;i<SIZE_1;i++)        printf("%s\\t%3.2f\\t%d\\t%3.2f\\t%3.2f\\t%3.2f\\t%3.2f\\t%3.2f\\t%3.2f\\t%3.2f\\n",        stu[i].name,stu[i].aver,stu[i].rack,        stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].score[4],stu[i].score[5],stu[i].score[6]);    printf("\\n\\n");}void gonggao_win(){    load();    for(int i=0;i<SIZE_1;i++)        printf("第%2d名是%2d号选手 %s ,平均分为%3.2f,去掉的最高分为%3.2f,去掉的最低分为%3.2f\\n",        i+1,stu[i].num+1,stu[i].name,stu[i].aver,stu[i].max,stu[i].min);    printf("\\n\\n");}void main(){    char b;    printf("\\n");    printf("**************************************\\n");    printf("************中华颂计分系统************\\n");    printf("********铁龙机器人实验室 岳大禹*******\\n");    printf("**************************************\\n");    if((fp=fopen("student_information","r"))==NULL)    {        init();        printf("储存完毕!!\\n\\n");    }    load();    printf("\\t欢迎进入系统!\\n");B:    printf("\\n");    printf("按q键直接退出\\n");    printf("按t键重新录入名单\\n");    printf("按f键查看所有结果\\n");    printf("按a键进入计分程序\\n");    b=getch();    if(b=='t')    {        init();        printf("储存完毕,请按任意键重新选择\\n");        getch();        goto B;    }    if(b=='q')    {        exit(0);    }    if(b=='f')    {        gonggao();        printf("按任意键重新选择\\n");        getch();        goto B;    }    if(b=='a')    {        put_in();        stu_rank();        gonggao_win();        printf("按任意键重新选择\\n");        getch();        goto B;    }    else    {        printf("不存在的选择,请重新选择!\\n");        goto B;    }}//该片段来自于http://byrx.net
相关栏目:

用户点评