学生成绩管理系统 C语言 用的是dev c++

#include <stdio.h>
#include <stdlib.h>
#define SIZE 10
struct student
{
int num;
char name[10];
int c;
float s[3];
float aver;
}stu[SIZE],temp;
void save()//录入同学成绩们的函数
{int i;
FILE *fp;
if((fp=fopen("stu.dat","wb"))==NULL)
{printf("cannot open file\n");
return;}
for(i=0;i<SIZE;i++)
if (fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
printf ("file write error\n");
fclose(fp);}
void write()//录入成绩
{int i;
printf("Please enter data of students including number,name,class,scores of three subjects:\n");
for(i=0;i<SIZE;i++)
{scanf("%d%s%d%f%f%f",&stu[i].num,stu[i].name,&stu[i].c,&stu[i].s[0],&stu[i].s[1],&stu[i].s[2]);
stu[i].aver=(stu[i].s[1]+stu[i].s[2]+stu[i].s[0])/3.0;}
save();}
void read(int i)//浏览同学们的成绩 i的取值范围是0-9 ,输出
{ FILE *fp;
if ((fp=fopen("stu.dat","rb"))==NULL)
{printf("cannot open file\n");
return;}
fread(&stu[i],sizeof(struct student),1,fp);
printf("浏览成绩:%-10s同学:\n",stu[i].name) ;
printf("学号:%4d 班级:%4d 数分:%.1f 几代:%.1f C语言:%.1f 平均:%.1f\n",stu[i].num,stu[i].c,stu[i].s[0],stu[i].s[1],stu[i].s[2],stu[i].aver);
fclose (fp);}
void paixu()//按学号排序浏览成绩
{ int i,j,k;
FILE *fp;
if ((fp=fopen("stu.dat","rb"))==NULL)
{printf("cannot open file\n");
return;}
printf("按学号排序查看全体同学的成绩如下:\n") ;
for(i=0;i<SIZE;i++)
fread(&stu[i],sizeof(struct student),1,fp);
for(i=0;i<SIZE-1;i++)
{k=i;
for(j=i+1;j<SIZE;j++)
if(stu[j].num<stu[k].num)k=j;
temp=stu[k];stu[k]=stu[i];stu[i]=temp;}
for(i=0;i<SIZE;i++)
{printf("学号:%4d 姓名%-10s班级:%d 数分:%.1f 几代:%.1f C语言:%.1f 平均:%.1f\n",stu[i].num,stu[i].name,stu[i].c,stu[i].s[0],stu[i].s[1],stu[i].s[2],stu[i].aver);
}
fclose (fp);
}
void del()//删除某个学生的某项资料
{}
void cha()//输入学号查成绩
{int a,i;
FILE *fp;
printf("请输入你的学号:");
scanf("%d",&a);
getchar();
for(i=0;i<SIZE;i++)
{
fread(&stu[i],sizeof(struct student),1,fp);
if(a==stu[i].num)void read(int i);
}
fclose (fp);
}
int main()
{
cha();
return 0;
}
这是我在做的一个程序,还很简陋,想求教:查询成绩那里出了什么问题?【void cha()】那里
能帮上忙一定有悬赏!!嗯不要复制别人的程序,告诉我哪里错了就好。谢谢
scanf("%d",&a);
getchar();
for(i=0;i<SIZE;i++)
{
fread(&stu[i],sizeof(struct student),1,fp);
if(a==stu[i].num)void read(int i);
}
我不懂的应该是这里,不可以直接去比较然后输出,这样子嘛。。。。?

#include <stdio.h>
#include <stdlib.h>
#define SIZE 10
struct student
{
int num;
char name[10];
int c;
float s[3];
float aver;
}stu[SIZE],temp;
void save()//录入同学成绩们的函数 
{
    int i;
FILE *fp;
if((fp=fopen("stu.dat","wb"))==NULL){
       printf("cannot open file\n");
  return;
    }
for(i=0;i<SIZE;i++) 
if (fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
printf ("file write error\n");
fclose(fp);}
void write()//录入成绩 
{
    int i;
printf("Please enter data of students including number,name,class,scores of three subjects:\n");
for(i=0;i<SIZE;i++)
{scanf("%d%s%d%f%f%f",&stu[i].num,stu[i].name,&stu[i].c,&stu[i].s[0],&stu[i].s[1],&stu[i].s[2]);
stu[i].aver=(stu[i].s[1]+stu[i].s[2]+stu[i].s[0])/3.0;}
save();
 }
void read(int i)//浏览同学们的成绩 i的取值范围是0-9 ,输出 
{
    FILE *fp;
if ((fp=fopen("stu.dat","rb"))==NULL){
        printf("cannot open file\n");  
   return;
     } 
fread(&stu[i],sizeof(struct student),1,fp);
printf("浏览成绩:%-10s同学:\n",stu[i].name) ;
printf("学号:%4d 班级:%4d 数分:%.1f 几代:%.1f C语言:%.1f 平均:%.1f\n",stu[i].num,stu[i].c,stu[i].s[0],stu[i].s[1],stu[i].s[2],stu[i].aver);
fclose (fp);
 } 
void paixu()//按学号排序浏览成绩 
{   int i,j,k;
 FILE *fp;
if ((fp=fopen("stu.dat","rb"))==NULL)
{printf("cannot open file\n");  
return;}
printf("按学号排序查看全体同学的成绩如下:\n") ;
    for(i=0;i<SIZE;i++)
    fread(&stu[i],sizeof(struct student),1,fp);
    for(i=0;i<SIZE-1;i++){
        k=i;
        for(j=i+1;j<SIZE;j++){
            if(stu[j].num<stu[k].num)k=j;
            temp=stu[k];
            stu[k]=stu[i];stu[i]=temp;
        }
    } 
    for(i=0;i<SIZE;i++){
        printf("学号:%4d 姓名%-10s班级:%d 数分:%.1f 几代:%.1f C语言:%.1f 平均:%.1f\n",stu[i].num,stu[i].name,stu[i].c,stu[i].s[0],stu[i].s[1],stu[i].s[2],stu[i].aver);
    }
fclose (fp);
}
void del()//删除某个学生的某项资料
{}
void cha()//输入学号查成绩 
{
    int a,i;
    FILE *fp;
    printf("请输入你的学号:");
    scanf("%d",&a);getchar();
    for(i=0;i<SIZE;i++){
        fread(&stu[i],sizeof(struct student),1,fp);
        if(a==stu[i].num){
            //输出输出该同学相关信息 
        }
        break; 
    }
    fclose (fp);
}
int main()
{
    cha();
return 0;
}

 

追问

额,不好意思 眼有点花,请问一下修改的是哪里?

额,不好意思 眼有点花,请问一下修改的是哪里?

追答

没怎么修改,那个查询还是空的,找到后并没输出什么信息,需要你白自己实现

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-01-29
学生成绩管理系统 帮修改调试
相似回答