发新话题
打印

各位编程高手看过来!!!

各位编程高手看过来!!!

这段代码该如何修改???
#include<stdio.h>
#include<stdlib.h>
#define N 8
int geshu=0;//个数
struct xuesheng
{
    int num,gainum;//第2个是用来改学号的
    char name[15],gaixingming[15];//不会改字符串
    int chengji1;
    int cj2;
    int cj3;
        int cj4;
        int Class;
    int avg;
        int sum;
    int gaiavg;
        int gaisum;

}stu[N],*p=stu;
void xianshi()
{
int i;
    if(geshu>=0)//至少有1个学生
    {
    printf("全部学生信息以下:\n");
    printf("学号\t姓名\t平均成绩\t总成绩\n");
    for(i=0;i<geshu;i++)
        { printf("%d\t%s\t%d\n",stu.num,stu.name,stu.avg,stu.sum);    }
        //输出结构里定义的数据
    }
   
}
void chazhao()
{
    int i,zhao;
printf("请输入查找的学号\n");
scanf("%d",&zhao);
printf("学号\t姓名\t平均成绩\总分\n");
    for(i=0;i<geshu;i++)
    {
        if(stu.num=zhao)//要是有的话就显示出来
        {
            printf("%d\t%s\t%d\t%d",stu.num,stu.name,stu.avg,stu.sum);
        }
    }
}
void paixu()
{
int i;
    int a,b;
    struct xuesheng zhong;
    for(a=0;a<geshu;a++)
    {
        for(b=0;b<geshu-a-1;b++)
        {
            if(stu.avg > stu[b+1].avg)
        {
                zhong=stu;
                stu=stu[b+1];
                stu[b+1]=zhong;
            }
        }
    }//先排序好
    if(geshu>0)//要是有1个以上
    {   
    printf("学号\t姓名\t平均成绩 \n");
        for(i=0;i<geshu;i++)
        {
        printf("%d\t%s\t%d\n",stu.num,stu.name,stu.avg,stu.sum);
        }
    }//就输出
    else
    { printf("没有学生信息!\n"); }

}

void tianjia()
{
    int i;
    char shu;
    do
    { printf("请输入学生信息\n");
        do
        {   
            printf("学号:");
            scanf("%d",&stu[geshu].num); fflush(stdin);
            for(i=0;i<geshu;i++)
            {
                if((p+i)->num==stu[geshu].num) { printf("该学生以重复\n");break; }
            }//一个个检查,要是学号等于以输入的学号就输出,已经有了
        }while(i<geshu);
    printf("姓名:");
    gets(stu[geshu].name);
    fflush(stdin);
    printf("语文成绩:");
    scanf("%d",&stu[geshu].chengji1);
    printf("数学成绩:");
    scanf("%d",&stu[geshu].cj2);
    printf("英语成绩:");
        scanf("英语成绩:");
        printf("计算机成绩:");
        scanf("计算机成绩:");
    scanf("%d",&stu[geshu].cj3);//输入各个成绩
    stu[geshu].avg=(stu[geshu].chengji1+stu[geshu].cj2+stu[geshu].cj3)/3;
    if(    (stu[geshu].chengji1>100||stu[geshu].chengji1<0)||
        (stu[geshu].cj2>100||stu[geshu].cj2<0)||
        (stu[geshu].cj3>100||stu[geshu].cj3<0)||
                (stu[geshu].cj4>100||stu[geshu].cj4<0))
    { printf("错误,请输入0-100分数\n");  tianjia();}//不能大于100和小于0
    printf("是否继续输入(y/n):");
    fflush(stdin);
    shu=getchar();
    geshu++;
    }while(shu=='y'||shu=='Y');//条件为真时,继续执行
}
void chacha()
{
    int i;
    char shu;
    do
    {
        do
        {   
            printf("学号:");
            scanf("%d",&stu[geshu].num); fflush(stdin);
            for(i=0;i<geshu;i++)
            {
                if((p+i)->num==stu[geshu].num) { printf("该学生以存在\n");break; }
            }
        }while(i<geshu);
    printf("姓名:");
    gets(stu[geshu].name);
    fflush(stdin);
    printf("语文成绩:");
    scanf("%d",&stu[geshu].chengji1);
    printf("数学成绩:");
    scanf("%d",&stu[geshu].cj2);
    printf("英语成绩:");
    scanf("%d",&stu[geshu].cj3);
        printf("计算机成绩:");
    scanf("%d",&stu[geshu].cj4);

    stu[geshu].sum=stu[geshu].chengji1+stu[geshu].cj2+stu[geshu].cj3+stu[geshu].cj4;
    stu[geshu].avg=stu[geshu]/4;
    if(    (stu[geshu].chengji1>100||stu[geshu].chengji1<0)||
        (stu[geshu].cj2>100||stu[geshu].cj2<0)||
        (stu[geshu].cj3>100||stu[geshu].cj3<0)||
                (stu[geshu].cj4>100||stu[geshu].cj4<0))
    { printf("错误,请输入0-100分数\n");  tianjia();}
    printf("是否继续输入(y/n):");
    fflush(stdin);
    shu=getchar();
    geshu++;
    }while(shu=='y'||shu=='Y');
}//跟添加函数差不多
void charu()
{
    int i;
    int n;
    printf("输入学生学号:");
    scanf("%d", &n);
    for(i=0;i<geshu;i++)
    {
        if(n==stu.num)
            break;
    }

    if(i<geshu)
    {
        printf("该学生以存在\n");
    }
    else
    {
        chacha();//调用添加函数
    }
}
void xiugai()
{
    int ss,i;

    printf("输入旧的学号:\n");
   
    scanf("%d",&ss);
    for(i=0;i<geshu;i++)
    {
    if(stu.num==ss)
        {break;}
    }
    if(i<geshu)
    {printf("第%d位旧学生信息:\n",i+1);
        printf("%d\t%s\t%d\n",stu.num,stu.name,stu.avg,stu.sum);
        printf("输入新的学号:");scanf("%d",&stu.gainum);
        stu.num=stu.gainum;
                stu.sum=stu.gaisum;
        printf("输入新的平均成绩:");scanf("%d",&stu.gaiavg);
        stu.avg=stu.gaiavg;
                printf("输入新的总成绩:");
                scanf("%d",&stu.gaiavg);
                stu.sum=stu.gaisum;
    }
}
void shanchu()
{
    int i,j,shu;
    printf("输入要册除的学号:");
    scanf("%d",&shu);
    for(i=0;i<geshu;i++)
    {
        if(shu==stu.num)
        {
            break;
        }
    }//要是有这个学生就开始删除
    if(i<geshu)
    {
        for(j=i;j<geshu-1;j++)
            stu=stu[i+1];
        printf("\n成功册除%d学号学生的信息\n",shu);
        printf("\n学号\t姓名\t语文成绩\t数学成绩\t英语成绩\计算机成绩\t平均成绩\t总分\n");
        printf("\n%d\t%s\t%d\t%d\t%d\t%d\t%d\t%d\n",stu.num,
        stu.name,stu.chengji1,stu.cj2,stu.cj3,stu.cj4,stu.avg,stu.sum);
        geshu=geshu-1;
    }
    else
        printf("\n不存在该学生信息\n");
}

void jiemian()
{
    printf("1:添加学生信息\n");
    printf("2:显示学生信息\n");
    printf("3:返回系统界面\n");
    printf("4:查找学生信息\n");
    printf("5:插入学生信息\n");
    printf("6:删除学生信息\n");
    printf("7:修改学生信息\n");
    printf("0:退出\n");
}//界面
void main()
{
int shu;
    system("cls");
    jiemian();
    do
    {
        printf("\n请输入功能键:");
        scanf("%d",&shu);
        if(shu>=1 && shu<=7)
        {switch(shu)
        {case 1:tianjia();break;
        case 2:xianshi();paixu();break;
        case 3:system("cls");jiemian();break;
        case 4:chazhao();break;
        case 5:charu();break;
        case 6:shanchu();break;
        case 7:xiugai();break;
        case 0:exit(0);break;}
        }
        else
        {printf("错误,请输入1-3的数字功能\n");}
    }while(shu!=0);//功能表
}

TOP

发新话题