我的这个程序不是所有的功能都能实现,我当初也是做的这个程序,我答辩时老师只是看了你的程序的运行情况,并没有仔细看你的题目要求,只要能运行出来就可以了,这是那程序和流程图,希望可以帮到你:
#include
#include
#define N 3
struct student
{
int math;
int number;
char name[20];
int language;
int JN;
}student[4];
void main()
{
void save();
void load();
void input();
void sum();
void search();
void output();
int n;
printf("\n");
printf("学生成绩管理\n");
printf("\n");
printf("1.录入学生信息\n\n\n");
printf("2.浏览学生的平均分和总分\n\n\n");
printf("3. 不及格的人数和姓名及科目\n\n\n");
printf("4.全班学生信息\n\n\n");
printf("5.退出\n\n\n\n");
printf("请输入你的选择\n");
printf("\n\n");
scanf("%d",&n);
switch(n)
{
case 1:printf("输入信息\n");printf("\n");input();main();break;
case 2:printf("浏览学生的平均分和总分\n");printf("\n");sum();main();break;
case 3:printf("不及格的人数和姓名\n");printf("\n");search();main();break;
case 4:printf("全班学生信息\n");printf("\n");output();main();break;
default :break;
}
}
void save(int m)
{
int i;
FILE*fp;
if((fp=fopen("out.txt","wb"))==NULL) //在当前程序运行目录下自动建立out.dat文件,用二进制打开
{
printf("打开文件出错\n");
return ;
}
for(i=0;i if(fwrite(&student[i],sizeof(struct student),1,fp)!=1) printf("cuo\n"); fclose(fp); } void input() { int i; for(i=0;i { printf("请输入学生的学号:"); scanf("%d",&student[i].number); printf("请输入姓名: "); scanf("%s",student[i].name); printf("请输入数学成绩: "); scanf("%d",&student[i].math); printf("请输入c语言成绩: "); scanf("%d",&student[i].language); printf("请输入日语成绩: "); scanf("%d",&student[i].JN); printf("请输入你的选择\n"); printf("\n"); } printf("\n创建完毕!\n"); save(N); } void sum() { int i;int sum[N],ave[N]; for(i=0;i { sum[i]=student[i].math+student[i].language+student[i].JN; ave[i]=sum[i]/3; } for(i=0;i<3;i++) printf("第%d名学生的总分:%3d,平均分%d\n",i+1,sum[i],ave[i]); } void output() { int i; for(i=0;i { printf("学生的学号%d:",student[i].number); printf("姓名:%s ",student[i].name); printf("数学成绩:%d ",student[i].math); printf("c语言成绩:%d ",student[i].language); printf("日语成绩:%d ",student[i].JN); printf("\n\n"); } } void search() { int i,j=0; for(i=0;i if(student[i].math<50|| student[i].language<50 ||student[i].JN<50) {printf("姓名:%s ",student[i].name);j++;} printf("不及格人数是%d",j); } void load() { int i; FILE*fp; if((fp=fopen("out.txt","rb"))==NULL) { printf("打开文件出错\n"); return ; } for( i=0;i<4;i++) if(fread(&student[i],sizeof(struct student),1,fp)!=1) { if(feof(fp)); {fclose(fp); return;} printf("打开文件出错\n"); } fclose(fp);