新手 求指教 C++
为什么我输入科目 分数 后 选择4的时候 读不出结构体里的数据呢? 刚学C++ 老师让我们做个成绩管理系统 新手求大家指点一下 ;
#include<stdio.h>
#include"stdlib.h"
#include<string.h >
struct grades_list{
char sub[100];
int grade;
int credit;
};
int Count=0;
struct grades_list l[100];
char sub[10];
void dispMenu(); /*自定义菜单*/
void func(int n); /*选择菜单栏*/
void new_list(struct grades_list l[] ); /*成绩输入并保存到文件*/
void search_sub(struct grades_list l[],char*sub); /*科目查询*/
void dele_data(struct grades_list l[],char*sub ); /*科目删除*/
void aver(); /*平均分计算*/
int main(void)
{ int choice;
dispMenu();
printf("请输入你的选择序号:");
scanf("%d",&choice);
func(choice);
}
void new_list(struct grades_list l[] ) /*成绩输入并保存到文件*/
{
int choice;
FILE *fp;
struct grades_list e;
if((fp=fopen("c:\\test\\f.txt","a"))==NULL)
{
printf("file open error!\n");
exit(0);
}
printf("请输入学科");
scanf("%s",e.sub);
printf("请输入分数");
scanf("%d",&e.grade);
printf("请输入学分");
scanf("%d",&e.credit);
fprintf(fp,"%s %d %d\n",e.sub,e.grade,e.credit);
l[Count]=e;
Count++;
fclose(fp);
printf("%d",l[0].grade);
printf("请继续选择功能序号:");
scanf("%d",&choice);
func(choice);
}
void search_sub(struct grades_list l[],char*sub) /*科目 查询*/
{
int i,choice,flag=0;
if(Count==0)
{
printf("此表是空的!\n");
}
for(i=0;i<Count;i++)
if(strcmp(sub,l[i].sub)==0)
{
flag=1;
break;
}
if(flag)
{
printf("科目:%s\t",l[i].sub);
printf("分数:%d\t",l[i].grade);
printf("学分:%d\n",l[i].credit);
}
else
printf("找不到你所选的科目!\n");
printf("请继续选择功能序号:");
scanf("%d",&choice);
func(choice);
}
void dele_data(struct grades_list l[],char*sub )
{
int i,choice,k=0,flag=0;
FILE *fp=fopen("c:\\test\\f.txt","w");
if(Count==0)
{
printf("此表是空的!\n");
}
for(i=0;i<Count;i++)
{
if(!strcmp(sub,l[i].sub)==0)
{
fwrite(l[i].sub ,sizeof(int), 1, fp);
fwrite(&l[i].grade ,sizeof(int), 1, fp);
fwrite(&l[i].credit ,sizeof(int), 1, fp);
}
}
printf("请继续选择功能序号:");
scanf("%d",&choice);
func(choice);
}
void dispMenu() /*自定义菜单*/
{
printf("=== 菜单 ================\n");
printf("==1 成绩输入 ==============\n");
printf("==2 成绩查询 ==============\n");
printf("==3 成绩删除 ==============\n");
printf("==4 平均分计算 ==============\n");
printf("==0 返回选择菜单 ==============\n");
printf("==-1 退出系统 ==============\n");
}
void func(int n) /*选择菜单栏*/
{
if(n==-1)
{
exit(0);
}
while(n!=-1)
{
if(n==1)
{
new_list(l);
}
if(n==2)
{
printf("输入查询的科目:");
scanf("%s",sub);
search_sub(l,sub);
}
if(n==3)
{
printf("请输入要删除的科目:");
scanf("%s",sub);
dele_data(l,sub);
}
if(n==4)
{
void aver();
}
}
}
void aver() /*平均分计算*/
{
int choice;
int sum=0,GPA=0;
FILE *fp;
if((fp=fopen("c:\\test\\e.txt","r"))==NULL)
{
printf("file open error!\n");
exit(0);
}
while(!feof(fp))
{
fscanf(fp,"%s",l[0].sub);
printf("%s\n",l[0].sub);
};
if(fclose(fp))
{
printf("can not close the file!\n");
exit(0);
}
printf("请继续选择功能序号:");
scanf("%d",&choice);
func(choice);
}