#include<stdio.h>
#include<math.h>
#include<string.h>
#define MAXSIZE 20
int i;
struct stud
{
    char name[20];
    int num,m,e,c;
    float v;
} stu[40];
void input()
{
    i=0;
    printf("请按照下面格式输入数据:学号 姓名 英语分数 数学分数 计算机分数\n最后输入0结束数据输入\n");
    while(scanf("%d",&stu[i].num)!=EOF)
    {
        if(stu[i].num==0)break;
        scanf("%s%d%d%d",stu[i].name,&stu[i].e,&stu[i].m,&stu[i].c);
        stu[i].v=(stu[i].e+stu[i].m+stu[i].c)*1.0/3.0;
        i++;
    }
}
int output()
{
    int j;
    printf("   学号   姓名   英语   数学   计算机   平均成绩\n");
    printf("==================================================\n");
    for(j=0; j<i; j++)
    {
        printf("  %d  ",stu[j].num);
        if(strlen(stu[j].name)==4)printf("%s  ",stu[j].name);
        else printf("%s",stu[j].name);
        printf("%4.d%7.d %7.d       %.1f\n",stu[j].e,stu[j].m,stu[j].c,stu[j].v);
    }
    printf("==================================================\n");
}
struct stud t;
int Sort()
{
    int x,y;
    for(x=0; x<i; x++)
        for(y=0; y<i-1; y++)
        {
            if(stu[y].num>stu[y+1].num)
            {
                t=stu[y];
                stu[y]=stu[y+1];
                stu[y+1]=t;
            }
        }
        output();
}
int find()
{
    int xue;
    printf("请输入要查学生学号,最后输入0结束查找!\n");
    while(scanf("%d",&xue)!=EOF)
    {
        if(xue==0)break;
        int x=0,y=i-1,mid,ok=0;
        if(stu[x].num==xue)printf("%d   %s   %d %d %d %.1f\n",stu[x].num,stu[x].name,stu[x].e,stu[x].m,stu[x].c,stu[x].v);
        else if(stu[y].num==xue)printf("%d   %s   %d %d %d %.1f\n",stu[y].num,stu[y].name,stu[y].e,stu[y].m,stu[y].c,stu[y].v);
        else
        {
            while(y-x>1)
            {
                mid=(x+y)/2;
                if(stu[mid].num<xue)
                {
                    x=mid;
                }
                else if(stu[mid].num>xue)
                {
                    y=mid;
                }
                else
                {
                    printf("%d   %s   %d %d %d %.1f\n",stu[mid].num,stu[mid].name,stu[mid].e,stu[mid].m,stu[mid].c,stu[mid].v);
                    ok=1;
                    break;
                }
            }
            if(!ok)printf("No Find!\n");
        }
    }
}
int insert()
{
    printf("请输入要插入学生信息,格式同数据输入,最后输入0结束\n");
    int xue,j,ok,wei;
    while(scanf("%d",&xue)!=EOF)
    {
        if(xue==0)break;
        ok=0;
        for(j=0; j<i; j++)
        {
            if(stu[j].num==xue)
            {
                ok=1;
                printf("Refuse insert!\n");
                break;
            }
            else if(stu[0].num>xue)
            {
                wei=0;
                break;
            }
            else if(stu[i-1].num<xue)
            {
                wei=i-1;
                break;
            }
            else if(stu[j].num<xue&&stu[j+1].num>xue)
            {
                wei=j+1;
                break;
            }

        }
        if(!ok)
        {
            for(j=i-1; j>=wei; j--)
            {
                stu[j+1]=stu[j];
            }
            stu[wei].num=xue;
            scanf("%s%d%d%d",stu[wei].name,&stu[wei].e,&stu[wei].m,&stu[wei].c);
            stu[wei].v=(stu[wei].e+stu[wei].m+stu[wei].c)*1.0/3;
            i++;
        }
    }
output();
}
int del()
{
    printf("请输入要删除学生学号,最后输入0结束\n");
    int xue,j,ok,wei;
    while(scanf("%d",&xue)!=EOF)
    {
        if(xue==0)break;
        ok=0;
        for(j=0; j<i; j++)
        {
            if(stu[j].num==xue)
            {
                ok=1;
                wei=j;
                break;

            }
        }
        if(ok)
        {
            for(j=wei; j<i-1; j++)
            {
                stu[j]=stu[j+1];
            }
            i--;
        }
        else printf("Haven't the student!\n");
    }
    output();
}
int collect()
{
    int j,col[5]= {0};
    for(j=0; j<i; j++)
    {
        if(stu[j].v<60)col[0]++;
        if(stu[j].v>=60&&stu[j].v<70)col[1]++;
        if(stu[j].v>=70&&stu[j].v<80)col[2]++;
        if(stu[j].v>=80&&stu[j].v<90)col[3]++;
        if(stu[j].v>=90&&stu[j].v<100)col[4]++;
    }
    printf("              按平均分统计各分数段学生人数              \n");
    printf("========================================================\n");
    printf("  分数段    0-59    60-69    70-79    80-89    90-100\n");
    printf("  人  数     %d        %d        %d        %d        %d\n",col[0],col[1],col[2],col[3],col[4]);
    printf("========================================================\n");
}
int main()
{
    int m, password,flags = 1,pass = 5259487;
    char username[MAXSIZE];
    while (1 == flags)
    {
        printf("\n\n学生成绩管理系统管理员登录界面\n");
        printf("请输入用户名:\n");
        scanf("%s",username);
        printf("请输入密码:\n");
        scanf("%d",&password);

        if ((0 == strcmp(username,"52587v5")) && (pass == password))
            flags = 0;
        else if ((0 != strcmp(username,"52587v5")) && (pass == password))
            printf("用户名输入错误,请重新输入.\n");
        else if ((0 == strcmp(username,"52587v5")) && (pass != password))
            printf("密码输入错误,请重新输入.\n");
        else
            printf("用户名和密码都输入错误,请重新输入.\n");
    }

    int s;
    printf("                         主菜单                         \n");
    printf("========================================================\n");
    printf("     1.数据输入                2.数据输出\n");
    printf("     3.数据排序(按学号)      4.数据查找(按学号)\n");
    printf("     5.数据插入                6.数据删除\n");
    printf("     7.数据统计(按平均分)    0.退出\n");
    printf("========================================================\n");
    while(scanf("%d",&s)!=EOF)
    {
        if(s==0)break;
        if(s==1)input();
        else if(s==2)output();
        else if(s==3)Sort();
        else if(s==4)find();
        else if(s==5)insert();
        else if(s==6)del();
        else if(s==7)collect();
        printf("                         主菜单                         \n");
        printf("========================================================\n");
        printf("     1.数据输入                2.数据输出\n");
        printf("     3.数据排序(按学号)      4.数据查找(按学号)\n");
        printf("     5.数据插入                6.数据删除\n");
        printf("     7.数据统计(按平均分)    0.退出\n");
        printf("========================================================\n");
    }
    return 0;
}

posted on 2013-06-21 18:23  PerformCrazy  阅读(208)  评论(0)    收藏  举报