标题:我正在编学生成绩管理系统。。明天就要交了。求高手调试解决一下、、、小弟 ...
只看楼主
wuamoy
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-4-19
结帖率:0
已结贴  问题点数:20 回复次数:13 
我正在编学生成绩管理系统。。明天就要交了。求高手调试解决一下、、、小弟非常感谢
RT。。。明天我们就要交了。。。但是遇到调试上很大困难。。。求高手帮忙解决一下小弟的问题。。。我也不知具体问题出在哪
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int imax=0;
struct student
{    char num[10];
char name[15];
int chineseg;
int mathg;
int englishg;
int comg;
int total;
float ave;
int rank;}
stu[50];

void menu()
{printf("---------------欢迎来到学生成绩管理系统------------\n");
 printf("*************请输入选项:     退出请按0************\n");
 printf("***************************************************\n");
 printf("**** 1  输入数据                2  添加数据   *****\n");
 printf("**** 3  查找数据                4  修改数据   *****\n");
 printf("**** 5  删除数据                6  输出数据   *****\n");
 printf("**** 7  处理数据                8  保存数据   *****\n");
 printf("**** 9  读取数据                10 统计数据   *****\n");
 printf("***************************************************\n");
}

void input()
{ int i,im;
  imax=im;
char num[10],name[15];
printf("请输入学生人数:");
scanf("%d",&im);
if(im>0&&im<=50)
{for (i=0;i<=im-1;i++)
{do {printf("输入学号:\t");scanf("%s",num);}while(strlen(num)>=10);
            strcpy(stu[i].num,num);
            do {printf("输入姓名:\t");scanf("%s",name);}while(strlen(name)>=15);
            strcpy(stu[i].name,name);
            do { printf("请输入语文成绩:\t"); scanf("%d",&stu[i].chineseg);}while(stu[i].chineseg>100||stu[i].chineseg<0);
            do { printf("请输入数学成绩:\t"); scanf("%d",&stu[i].mathg);}while(stu[i].mathg>100||stu[i].mathg<0);
            do { printf("请输入英语成绩:\t"); scanf("%d",&stu[i].englishg);}while(stu[i].englishg>100||stu[i].englishg<0);
            do { printf("请输入计算机成绩:\t"); scanf("%d",stu[i].comg);}while(stu[i].comg>100||stu[i].comg<0);
            stu[i].total=stu[i].chineseg+stu[i].mathg +stu[i].englishg +stu[i].comg;
            stu[i].ave=stu[i].total/4;}
}
else printf("输入错误!");
return;
}


void insert()
{ int me;
  do
  { if(imax>=50)
    { printf("空间不足!\n");
      return;
    }
    imax++;
    printf("请按顺序输入 学号   姓名  语文成绩  数学成绩   英语成绩   计算机成绩\n");
    scanf("%s%s%d%d%d%d%d%d%",stu[imax-1].num,stu[imax-1].name,&stu[imax-1].chineseg,&stu[imax-1].mathg,&stu[imax-1].englishg,&stu[imax-1].comg);

    if(imax>=50) { printf("\n空间不足!\n");    break; }
    printf("输入0返回菜单\n");
    printf("输入1继续添加\n");
    scanf("%d",&me);
    while(me!=0&&me!=1){ printf("输入错误,请重新输入");continue;}
    if(me==0)    return;
    if(me==1)    continue;
  }while(1);
}





void del()
{
    int i,n,j,h=0,g=0,k;  char name[15];  char num[10];
    do
    {
      if (imax==0)  {printf("请输入数据!\n");  return;  }
    printf("1.按姓名删除\n");
    printf("2.按学号删除\n");
  printf("请输入要选择的序号:\n");
  scanf("%d",&n);

  if(n!=1&&n!=2)
     printf("输入有误,请再输入");
  else if(n==2)
     {
        printf("请输入学号:");
       scanf("%s",num);
       for(i=0;i<=imax-1;i++)
          { if(strcmp(stu[i].num,num)==0)
               for (j=i;j<=imax-1;j++)
                 { stu[j].chineseg=stu[j+1].chineseg;
                   stu[j].mathg=stu[j+1].mathg;
                   stu[j].englishg=stu[j+1].englishg;
                   stu[j].comg=stu[j+1].comg;
                   stu[j].total=stu[j+1].total;
                   stu[j].ave=stu[j+1].ave;
                   stu[j].rank=stu[j+1].rank;
                   strcpy(stu[j].name,stu[j+1].name);
                   strcpy(stu[j].num,stu[j+1].num);
                 }

               h=1;
            }
     imax--;
    if(h==0)     printf("没有该学生信息!");
    }

  else if(n==1)
     { printf("请输入学生姓名:");
       scanf("%s",name);
       for(i=0;i<=imax-1;i++)
         { if(strcmp(name,stu[i].name)==0)
             for (j=i;j<=imax-1;j++)
                 { stu[j].chineseg=stu[j+1].chineseg;
                   stu[j].mathg=stu[j+1].mathg;
                   stu[j].englishg=stu[j+1].englishg;
                   stu[j].comg=stu[j+1].comg;
                   stu[j].total=stu[j+1].total;
                   stu[j].ave=stu[j+1].ave;
                   stu[j].rank=stu[j+1].rank;
                   strcpy(stu[j].name,stu[j+1].name);
                   strcpy(stu[j].num,stu[j+1].num);               
                 }
          g=1;
    }
       imax--;
    if(g==0)
     printf("没有该学生信息!");
    }
  printf("输入0返回菜单,输入1继续查找");
  scanf("%d",&k);
  while(k!=0&&k!=1)
       printf("输入错误,请重新输入");
    if(k==1)
       continue;
    if(k==0)
       break;
    }while(1);
}

void count()
{
    int i,j,m;

    for(i=0;i<=imax-1;i++)
    {
        stu[i].total=stu[i].chineseg+stu[i].mathg +stu[i].englishg +stu[i].comg;
            stu[i].ave=stu[i].total/4;
        stu[i].rank=1;
        for(j=0;j<=imax-1;j++)
        {
           if(stu[i].total<stu[j].total) stu[i].rank++;

        }



    }


}


void modify()
{ int i=0,c=-1,choice,flag=0,m;
  char num[10];
  char name[15];
    printf("0用学号查找");
    printf("1用姓名查找\n");
    scanf("%d",&m);
    if (m!=0&&m!=1) printf("输入错误!\n");
    else if(m==0)    {    printf("\n输入要修改的学生学号:");
    scanf("%s",num);
       for(i=0;i<=imax-1;i++)
         { if(strcmp(stu[i].num,num)==0) c=i;break;}
         if(c!=-1){
         printf("您要修改哪一项?\n");
          printf("\n 1.学号(%s) 2.姓名(%s)  3.语文成绩(%d)  4.数学成绩(%d) 5.英语成绩(%d) 6.计算机成绩(%d) \n",stu[i].num,stu[i].name,stu[i].chineseg,stu[i].mathg ,stu[i].englishg ,stu[i].comg );
          printf("\n ***********************请选择序号:");
          scanf("%d",&choice);
         if (!(choice>=1 && choice<=6))  {printf("请重新输入!") ; return;}
          switch(choice)
        { case 1:printf("\n输入修改后的学号:");
               scanf("%s",stu[i].num);break;
          case 2:printf("\n输入修改后的姓名:");
               scanf("%s",stu[i].name);break;
          case 3:printf("\n输入修改后的语文成绩:");
               scanf("%d",&stu[i].chineseg);break;
          case 4:printf("\n输入修改后的数学成绩:");
               scanf("%d",&stu[i].mathg);break;
          case 5:printf("\n输入修改后的英语成绩:");
            scanf("%d",&stu[i].englishg);break;
          case 6:printf("\n输入修改后的计算机成绩:");
            scanf("%d",&stu[i].comg);break;
         default: return; }
           }
           else { printf("\n 该学生信息不存在!");    return; }      }
        else if(m==1)    {    printf("\n输入要修改的学生姓名:");       scanf("%s",name);
       for(i=0;i<=imax-1;i++)
         { if(strcmp(stu[i].name,name)==0) c=i;break;}
         if(c!=-1){
         printf("\n您要修改哪一项?\n");
          printf("\n 1.学号(%s) 2.姓名(%s)  3.语文成绩(%d)  4.数学成绩(%d) 5.英语成绩(%d) 6.计算机成绩(%d) \n",stu[i].num,stu[i].name,stu[i].chineseg,stu[i].mathg ,stu[i].englishg ,stu[i].comg );
          printf("\n ***********************请选择序号:");
          scanf("%d",&choice);
         if (!(choice>=1 && choice<=6))  {printf("请重新输入!") ; return;}
          switch(choice)
         { case 1:printf("\n输入修改后的学号:");
               scanf("%s",&stu[i].num);break;
           case 2:printf("\n输入修改后的姓名:");
               scanf("%s",&stu[i].name);break;
           case 3:printf("\n输入修改后的语文成绩:");
               scanf("%d",&stu[i].chineseg);break;
           case 4:printf("\n输入修改后的数学成绩:");
               scanf("%d",&stu[i].mathg);break;
           case 5:printf("\n输入修改后的英语成绩:");
            scanf("%d",&stu[i].englishg);break;
           case 6:printf("\n输入修改后的计算机成绩:");
            scanf("%d",&stu[i].comg);break;
         default: return; }
           }
           else { printf("\n 该学生信息不存在!");    return; }      }


    }



void search()
{
    int i,i1,j1,h=0,g=0,m;
    char name[15];
    char num[10];
    if(imax==0)
     printf("请先输入学生信息\n");
    while(i!=0)
     { printf("0用学号查找\t");
       printf("1用姓名查找\n");
       scanf("%d",&i1);
       if(i1!=0&&i1!=1)
         printf("输入错误\n");
       else if(i1==0)
         { printf("请输入学生学号");
           scanf("%s",num);
           for(j1=0;j1<=imax-1;j1++)
             if(strcmp(num,stu[j1].num)==0)
               { printf("学号     姓名    语文成绩    数学成绩   英语成绩   计算机成绩   总分  平均分  排名\n ");
                 printf("%-15s%-10s%-10d%-10d%-10d%-10d%-10d%-10d%-10d%\n",stu[j1].num,stu[j1].name,stu[j1].chineseg,stu[j1].mathg,stu[j1].englishg,stu[j1].comg,stu[j1].total,stu[j1].ave,stu[j1].rank);

                 g=1;
               }
           if(g==0)
           printf("无此学生信息\n");
         }
       else if(i1==1)
           { printf("请输入学生姓名");
             scanf("%s",name);
             for(j1=0;j1<=imax-1;j1++)
                if(strcmp(name,stu[j1].name)==0)
                  { printf("学号     姓名    语文成绩    数学成绩   英语成绩   计算机成绩   总分  平均分  排名\n ");
                 printf("%-15s%-10s%-10d%-10d%-10d%-10d%-10d%-10d%-10d%\n",stu[j1].num,stu[j1].name,stu[j1].chineseg,stu[j1].mathg,stu[j1].englishg,stu[j1].comg,stu[j1].total,stu[j1].ave,stu[j1].rank);
               
                 h=1;  
                }
             if(h==0)
               printf("无此学生信息\n");
            }
    printf("输入0返回菜单,输入1继续查找");
    while(scanf("%d",&m)&&m!=0&&m!=1)
         printf("输入错误,请重新输入");
    if(m==1)
       continue;
    if(m==0)
       break;
  }
}


void output(void)
{
    int i;
    for(i=0;i<=imax-1;i++)
    {
        printf("%-12s%-10s%-6s%-6s%-6s%-6s%-6s%-7s%-7s\n","学号","姓名","语文","数学","英语","计算机""总分","平均分","排名");
        printf("%-12s%-10s%-6d%-6d%-6d%-6d%-7.2f%-2d\n",stu[i].num,stu[i].name,stu[i].chineseg,stu[i].mathg,stu[i].englishg,stu[i].comg,stu[i].total,stu[i].ave,stu[i].rank);
    }

}



void sort()
{
    int i,j,c,m,e,co,ci,mi,ei,coi;
    c=0;
    m=0;
    e=0;
    co=0;
    ci=0;
    mi=0;
    ei=0;
    coi=0;
    printf("语文最高分为:");
    for(i=0;i<=imax-1;i++)
    {
        for(j=0;j<=imax-1;j++)
           {
              if(stu[i].chineseg<stu[j].chineseg) ci=j;

           }

    }
    printf("%d\n",stu[ci].chineseg);


    printf("数学最高分为:");
    for(i=0;i<=imax-1;i++)
    {
        for(j=0;j<=imax-1;j++)
           {
              if(stu[i].mathg<stu[j].mathg) mi=j;

           }

    }
    printf("%d\n",stu[mi].mathg);

    printf("英语最高分为:");
    for(i=0;i<=imax-1;i++)
    {
        for(j=0;j<=imax-1;j++)
           {
              if(stu[i].englishg<stu[j].englishg) ei=j;

           }

    }
    printf("%d\n",stu[ei].englishg);

     printf("计算机最高分为:");
    for(i=0;i<=imax-1;i++)
    {
        for(j=0;j<=imax-1;j++)
           {
              if(stu[i].comg<stu[j].comg) coi=j;

           }

    }
    printf("%d\n",stu[coi].comg);

    printf("语文不及格的有:");
    for(i=0;i<=imax-1;i++)
    {
        if(stu[i].chineseg<60) {printf("%s(%d分)",stu[i].name,stu[i].chineseg);     c++;}
    }
    printf("共%d人\n",c);
    printf("数学不及格的有:");
    for(i=0;i<=imax-1;i++)
    {
        if(stu[i].mathg<60) {printf("%s(%d分)",stu[i].name,stu[i].mathg);   m++;}
    }
    printf("共%d人\n",m);
    printf("英语不及格的有:");
    for(i=0;i<=imax-1;i++)
    {
        if(stu[i].englishg<60) {printf("%s(%d分)",stu[i].name,stu[i].englishg);      e++;}
    }
    printf("共%d人\n",e);
     printf("计算机不及格的有:");
    for(i=0;i<=imax-1;i++)
    {
        if(stu[i].comg<60) {printf("%s(%d分)",stu[i].name,stu[i].comg);      co++;}
    }
    printf("共%d人\n",co);
 i=0;

for(j=1;j<=imax;j++)
{
  for(i=0;i<=imax-1;i++)
   
    if(stu[i].rank==j)
        {
            printf("%-12s%-10s%-6s%-6s%-6s%-6s%-6s%-7s%-7s\n","学号","姓名","语文","数学","英语","计算机","总分","平均分","排名");
            printf("%-12s%-10s%-6d%-6d%-6d%-6d%-6d%-7.2f%-2d\n",stu[i].num,stu[i].name,stu[i].chineseg,stu[i].mathg,stu[i].englishg,stu[i].total,stu[i].ave,stu[i].rank);
        }
 i++;

}


}


void save()
{
    int i;
    FILE *fp;
    if((fp=fopen("student.data","w"))==NULL)
    {
        printf("Can't open file");
        return;

    }
     for( i=0;i<=imax-1;i++)
      if(fwrite(&stu[i],sizeof(struct student),1,fp)==0) printf("error");
     fclose(fp);
}



int inputfromfile()
{
    int i;
    FILE *fp;
    if((fp=fopen("student.data","r"))==NULL)
    {
        printf("Can't open file");
        return 0;

    }
     for( i=0;i<=imax-1;i++)
      if(fread(&stu[i],sizeof(struct student),1,fp)==0) printf("error\n");
     fclose(fp);

}

int main()
{int i;
  i=0;
  do
  {     int select;
     menu();
     scanf("%d",&select);
     switch(select)
        { case 0:printf("OK\n");exit(0);break;
          case 1: input();count(); break;
          case 2: insert();break;
          case 3: search();break;
          case 4: modify();count();break;
          case 5: del();break;
          case 6: output();break;
          case 7: sort();break;
          case 8: save();break;
          case 9: inputfromfile();break;
          case 10: count();break;
          default:break;
        }


  }while(1);

}

搜索更多相关主题的帖子: 管理系统 include 学生成绩 total 
2011-04-19 19:57
v943761
Rank: 2
等 级:论坛游民
帖 子:42
专家分:15
注 册:2009-3-4
得分:2 
试了第一项是出错,找了很久,哥看着蛋疼,头晕,才发现原来下面这句少个地址符。。。。(红色注明)
do { printf("请输入计算机成绩:\t"); scanf("%d",&stu[i].comg);}while(stu[i].comg>100||stu[i].comg<0);
还有imax要声明为static,ave要声明为int,还有下面一些死循环,自己慢慢试把~~
2011-04-19 21:23
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
得分:2 
这东西很无聊

                                         
===========深入<----------------->浅出============
2011-04-19 21:25
v943761
Rank: 2
等 级:论坛游民
帖 子:42
专家分:15
注 册:2009-3-4
得分:0 
我改了其中一些错的,没全测试。。。。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
static int imax=0;
struct student
{    char num[10];
char name[15];
int chineseg;
int mathg;
int englishg;
int comg;
int total;
int ave;
int rank;}
stu[50];

void menu()
{printf("---------------欢迎来到学生成绩管理系统------------\n");
printf("*************请输入选项:     退出请按0************\n");
printf("***************************************************\n");
printf("**** 1  输入数据                2  添加数据   *****\n");
printf("**** 3  查找数据                4  修改数据   *****\n");
printf("**** 5  删除数据                6  输出数据   *****\n");
printf("**** 7  处理数据                8  保存数据   *****\n");
printf("**** 9  读取数据                10 统计数据   *****\n");
printf("***************************************************\n");
}

void input()
{ int i,im;
  imax=im;
char num[10],name[15];
printf("请输入学生人数:");
scanf("%d",&im);
if(im>0&&im<=50)
{for (i=0;i<=im-1;i++)
{           do {printf("输入学号:\t");scanf("%s",num);}while(strlen(num)>=10);
            strcpy(stu[i].num,num);
            do {printf("输入姓名:\t");scanf("%s",name);}while(strlen(name)>=15);
            strcpy(stu[i].name,name);
            do { printf("请输入语文成绩:\t"); scanf("%d",&stu[i].chineseg);}while(stu[i].chineseg>100||stu[i].chineseg<0);
            do { printf("请输入数学成绩:\t"); scanf("%d",&stu[i].mathg);}while(stu[i].mathg>100||stu[i].mathg<0);
            do { printf("请输入英语成绩:\t"); scanf("%d",&stu[i].englishg);}while(stu[i].englishg>100||stu[i].englishg<0);
            do { printf("请输入计算机成绩:\t"); scanf("%d",&stu[i].comg);}while(stu[i].comg>100||stu[i].comg<0);
            stu[i].total=stu[i].chineseg+stu[i].mathg +stu[i].englishg +stu[i].comg;
            stu[i].ave=stu[i].total/4;}
}
else printf("输入错误!");
return;
}


void insert()
{ int me;
  do
  { if(imax>=50)
    { printf("空间不足!\n");
      return;
    }
    imax++;
    printf("请按顺序输入 学号   姓名  语文成绩  数学成绩   英语成绩   计算机成绩\n");
    scanf("%s%s%d%d%d%d",stu[imax-1].num,stu[imax-1].name,&stu[imax-1].chineseg,&stu[imax-1].mathg,&stu[imax-1].englishg,&stu[imax-1].comg);

    if(imax>=50) { printf("\n空间不足!\n");    break; }
    printf("输入0返回菜单\n");
    printf("输入1继续添加\n");
    scanf("%d",&me);
    while(me!=0&&me!=1){ printf("输入错误,请重新输入");continue;}
    if(me==0)    return;
    if(me==1)    continue;
  }while(1);
}





void del()
{
    int i,n,j,h=0,g=0,k;  char name[15];  char num[10];
    do
    {

    printf("1.按姓名删除\n");
    printf("2.按学号删除\n");
  printf("请输入要选择的序号:\n");
  scanf("%d",&n);

  if(n!=1&&n!=2)
     printf("输入有误,请再输入");
  else if(n==2)
     {
        printf("请输入学号:");
       scanf("%s",num);
       for(i=0;i<=imax-1;i++)
          { if(strcmp(stu[i].num,num)==0)
               for (j=i;j<=imax-1;j++)
                 { stu[j].chineseg=stu[j+1].chineseg;
                   stu[j].mathg=stu[j+1].mathg;
                   stu[j].englishg=stu[j+1].englishg;
                   stu[j].comg=stu[j+1].comg;
                   stu[j].total=stu[j+1].total;
                   stu[j].ave=stu[j+1].ave;
                   stu[j].rank=stu[j+1].rank;
                   strcpy(stu[j].name,stu[j+1].name);
                   strcpy(stu[j].num,stu[j+1].num);
                 }

               h=1;
            }
     imax--;
    if(h==0)     printf("没有该学生信息!");
    }

  else if(n==1)
     { printf("请输入学生姓名:");
       scanf("%s",name);
       for(i=0;i<=imax-1;i++)
         { if(strcmp(name,stu[i].name)==0)
             for (j=i;j<=imax-1;j++)
                 { stu[j].chineseg=stu[j+1].chineseg;
                   stu[j].mathg=stu[j+1].mathg;
                   stu[j].englishg=stu[j+1].englishg;
                   stu[j].comg=stu[j+1].comg;
                   stu[j].total=stu[j+1].total;
                   stu[j].ave=stu[j+1].ave;
                   stu[j].rank=stu[j+1].rank;
                   strcpy(stu[j].name,stu[j+1].name);
                   strcpy(stu[j].num,stu[j+1].num);               
                 }
          g=1;
    }
       imax--;
    if(g==0)
     printf("没有该学生信息!");
    }
  printf("输入0返回菜单,输入1继续查找\n");
  while(scanf("%d",&k)&&k!=0&&k!=1)
       printf("输入错误,请重新输入\n");
    if(k==1)
       continue;
    if(k==0)
       break;
    }while(1);
}

void count()
{
    int i,j,m;

    for(i=0;i<=imax-1;i++)
    {
        stu[i].total=stu[i].chineseg+stu[i].mathg +stu[i].englishg +stu[i].comg;
            stu[i].ave=stu[i].total/4;
        stu[i].rank=1;
        for(j=0;j<=imax-1;j++)
        {
           if(stu[i].total<stu[j].total) stu[i].rank++;

        }



    }


}


void modify()
{ int i=0,c=-1,choice,flag=0,m;
  char num[10];
  char name[15];
    printf("0用学号查找");
    printf("1用姓名查找\n");
    scanf("%d",&m);
    if (m!=0&&m!=1) printf("输入错误!\n");
    else if(m==0)    {    printf("\n输入要修改的学生学号:");
    scanf("%s",num);
       for(i=0;i<=imax-1;i++)
         { if(strcmp(stu[i].num,num)==0) c=i;break;}
         if(c!=-1){
         printf("您要修改哪一项?\n");
          printf("\n 1.学号(%s) 2.姓名(%s)  3.语文成绩(%d)  4.数学成绩(%d) 5.英语成绩(%d) 6.计算机成绩(%d) \n",stu[i].num,stu[i].name,stu[i].chineseg,stu[i].mathg ,stu[i].englishg ,stu[i].comg );
          printf("\n ***********************请选择序号:");
          scanf("%d",&choice);
         if (!(choice>=1 && choice<=6))  {printf("请重新输入!") ; return;}
          switch(choice)
        { case 1:printf("\n输入修改后的学号:");
               scanf("%s",stu[i].num);break;
          case 2:printf("\n输入修改后的姓名:");
               scanf("%s",stu[i].name);break;
          case 3:printf("\n输入修改后的语文成绩:");
               scanf("%d",&stu[i].chineseg);break;
          case 4:printf("\n输入修改后的数学成绩:");
               scanf("%d",&stu[i].mathg);break;
          case 5:printf("\n输入修改后的英语成绩:");
            scanf("%d",&stu[i].englishg);break;
          case 6:printf("\n输入修改后的计算机成绩:");
            scanf("%d",&stu[i].comg);break;
         default: return; }
           }
           else { printf("\n 该学生信息不存在!\n");    return; }      }
        else if(m==1)    {    printf("\n输入要修改的学生姓名:");       scanf("%s",name);
       for(i=0;i<=imax-1;i++)
         { if(strcmp(stu[i].name,name)==0) c=i;break;}
         if(c!=-1){
         printf("\n您要修改哪一项?\n");
          printf("\n 1.学号(%s) 2.姓名(%s)  3.语文成绩(%d)  4.数学成绩(%d) 5.英语成绩(%d) 6.计算机成绩(%d) \n",stu[i].num,stu[i].name,stu[i].chineseg,stu[i].mathg ,stu[i].englishg ,stu[i].comg );
          printf("\n ***********************请选择序号:");
          scanf("%d",&choice);
         if (!(choice>=1 && choice<=6))  {printf("请重新输入!") ; return;}
          switch(choice)
         { case 1:printf("\n输入修改后的学号:");
               scanf("%s",&stu[i].num);break;
           case 2:printf("\n输入修改后的姓名:");
               scanf("%s",&stu[i].name);break;
           case 3:printf("\n输入修改后的语文成绩:");
               scanf("%d",&stu[i].chineseg);break;
           case 4:printf("\n输入修改后的数学成绩:");
               scanf("%d",&stu[i].mathg);break;
           case 5:printf("\n输入修改后的英语成绩:");
            scanf("%d",&stu[i].englishg);break;
           case 6:printf("\n输入修改后的计算机成绩:");
            scanf("%d",&stu[i].comg);break;
         default: return; }
           }
           else { printf("\n 该学生信息不存在!\n");    return; }      }


    }



void search()
{
    int i,i1,j1,h=0,g=0,m;
    char name[15];
    char num[10];
    if(imax==0)
     printf("请先输入学生信息\n");
    while(i!=0)
     { printf("0用学号查找\t");
       printf("1用姓名查找\n");
       scanf("%d",&i1);
       if(i1!=0&&i1!=1)
         printf("输入错误\n");
       else if(i1==0)
         { printf("请输入学生学号");
           scanf("%s",&num);
           for(j1=0;j1<=imax-1;j1++)
             if(strcmp(num,stu[j1].num)==0)
               { printf("学号     姓名    语文成绩    数学成绩   英语成绩   计算机成绩   总分  平均分  排名\n ");
                 printf("%-15s%-10s%-10d%-10d%-10d%-10d%-10d%-10d%-10d%\n",stu[j1].num,stu[j1].name,stu[j1].chineseg,stu[j1].mathg,stu[j1].englishg,stu[j1].comg,stu[j1].total,stu[j1].ave,stu[j1].rank);

                 g=1;
               }
           if(g==0)
           printf("无此学生信息\n");
         }
       else if(i1==1)
           { printf("请输入学生姓名");
             scanf("%s",name);
             for(j1=0;j1<=imax-1;j1++)
                if(strcmp(name,stu[j1].name)==0)
                  { printf("学号     姓名    语文成绩    数学成绩   英语成绩   计算机成绩   总分  平均分  排名\n ");
                 printf("%-15s%-10s%-10d%-10d%-10d%-10d%-10d%-10d%-10d%\n",stu[j1].num,stu[j1].name,stu[j1].chineseg,stu[j1].mathg,stu[j1].englishg,stu[j1].comg,stu[j1].total,stu[j1].ave,stu[j1].rank);
               
                 h=1;  
                }
             if(h==0)
               printf("无此学生信息\n");
            }
    printf("输入0返回菜单,输入1继续查找\n");
    while(scanf("%d",&m)&&m!=0&&m!=1)
         printf("输入错误,请重新输入\n");
    if(m==1)
       continue;
    if(m==0)
       break;
  }
}


void output(void)
{
    int i;
    for(i=0;i<=imax-1;i++)
    {
        printf("%-12s%-10s%-6s%-6s%-6s%-6s%-6s%-7s%-7s\n","学号","姓名","语文","数学","英语","计算机""总分","平均分","排名");
        printf("%-12s%-10s%-6d%-6d%-6d%-6d%-7.2f%-2d\n",stu[i].num,stu[i].name,stu[i].chineseg,stu[i].mathg,stu[i].englishg,stu[i].comg,stu[i].total,stu[i].ave,stu[i].rank);
    }

}



void sort()
{
    int i,j,c,m,e,co,ci,mi,ei,coi;
    c=0;
    m=0;
    e=0;
    co=0;
    ci=0;
    mi=0;
    ei=0;
    coi=0;
    printf("语文最高分为:");
    for(i=0;i<=imax-1;i++)
    {
        for(j=0;j<=imax-1;j++)
           {
              if(stu[i].chineseg<stu[j].chineseg) ci=j;

           }

    }
    printf("%d\n",stu[ci].chineseg);


    printf("数学最高分为:");
    for(i=0;i<=imax-1;i++)
    {
        for(j=0;j<=imax-1;j++)
           {
              if(stu[i].mathg<stu[j].mathg) mi=j;

           }

    }
    printf("%d\n",stu[mi].mathg);

    printf("英语最高分为:");
    for(i=0;i<=imax-1;i++)
    {
        for(j=0;j<=imax-1;j++)
           {
              if(stu[i].englishg<stu[j].englishg) ei=j;

           }

    }
    printf("%d\n",stu[ei].englishg);

     printf("计算机最高分为:");
    for(i=0;i<=imax-1;i++)
    {
        for(j=0;j<=imax-1;j++)
           {
              if(stu[i].comg<stu[j].comg) coi=j;

           }

    }
    printf("%d\n",stu[coi].comg);

    printf("语文不及格的有:");
    for(i=0;i<=imax-1;i++)
    {
        if(stu[i].chineseg<60) {printf("%s(%d分)",stu[i].name,stu[i].chineseg);     c++;}
    }
    printf("共%d人\n",c);
    printf("数学不及格的有:");
    for(i=0;i<=imax-1;i++)
    {
        if(stu[i].mathg<60) {printf("%s(%d分)",stu[i].name,stu[i].mathg);   m++;}
    }
    printf("共%d人\n",m);
    printf("英语不及格的有:");
    for(i=0;i<=imax-1;i++)
    {
        if(stu[i].englishg<60) {printf("%s(%d分)",stu[i].name,stu[i].englishg);      e++;}
    }
    printf("共%d人\n",e);
     printf("计算机不及格的有:");
    for(i=0;i<=imax-1;i++)
    {
        if(stu[i].comg<60) {printf("%s(%d分)",stu[i].name,stu[i].comg);      co++;}
    }
    printf("共%d人\n",co);
i=0;

for(j=1;j<=imax;j++)
{
  for(i=0;i<=imax-1;i++)
   
    if(stu[i].rank==j)
        {
            printf("%-12s%-10s%-6s%-6s%-6s%-6s%-6s%-7s%-7s\n","学号","姓名","语文","数学","英语","计算机","总分","平均分","排名");
            printf("%-12s%-10s%-6d%-6d%-6d%-6d%-6d%-7.2f%-2d\n",stu[i].num,stu[i].name,stu[i].chineseg,stu[i].mathg,stu[i].englishg,stu[i].total,stu[i].ave,stu[i].rank);
        }
i++;

}


}


void save()
{
    int i;
    FILE *fp;
    if((fp=fopen("student.data","w"))==NULL)
    {
        printf("Can't open file");
        return;

    }
     for( i=0;i<=imax-1;i++)
      if(fwrite(&stu[i],sizeof(struct student),1,fp)==0) printf("error");
     fclose(fp);
}



int inputfromfile()
{
    int i;
    FILE *fp;
    if((fp=fopen("student.data","r"))==NULL)
    {
        printf("Can't open file");
        return 0;

    }
     for( i=0;i<=imax-1;i++)
      if(fread(&stu[i],sizeof(struct student),1,fp)==0) printf("error\n");
     fclose(fp);

}

int main()
{int i;
  i=0;
  do
  {     int select;
     menu();
     scanf("%d",&select);
     switch(select)
        { case 0:printf("OK\n");exit(0);break;
          case 1: input();count(); break;
          case 2: insert();break;
          case 3: search();break;
          case 4: modify();count();break;
          case 5: del();break;
          case 6: output();break;
          case 7: sort();break;
          case 8: save();break;
          case 9: inputfromfile();break;
          case 10: count();break;
          default:break;
        }


  }while(1);

}
如果发现还有错的,再发帖吧~~
2011-04-19 21:28
v943761
Rank: 2
等 级:论坛游民
帖 子:42
专家分:15
注 册:2009-3-4
得分:0 
以下是引用laoyang103在2011-4-19 21:25:47的发言:

这东西很无聊
的确~~
2011-04-19 21:29
岳三路
Rank: 2
等 级:论坛游民
帖 子:23
专家分:19
注 册:2011-3-30
得分:2 
晕了,看不下去了。。
2011-04-19 21:35
双鱼哥哥
Rank: 1
来 自:四川
等 级:新手上路
帖 子:1
专家分:2
注 册:2011-4-20
得分:2 
太无聊了

2011-04-20 13:33
tudou2xigua
Rank: 2
等 级:论坛游民
帖 子:87
专家分:54
注 册:2011-3-20
得分:2 
好复杂。。。
2011-04-20 14:59
sinsharp
Rank: 1
等 级:新手上路
帖 子:1
专家分:2
注 册:2011-4-20
得分:2 
板凳学习中..
但是看见你们痛苦的样子 我很开心
2011-04-20 16:26
cxylfmyyyy
Rank: 2
来 自:河南
等 级:论坛游民
帖 子:22
专家分:39
注 册:2011-4-13
得分:2 
  蛋疼菊紧。

      纠结的生活。
2011-04-20 17:32



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-337261-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.139053 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved