有没人可以帮我改改?
自己写的学生成绩管理系统,蛮多错误不知怎么改。请高手帮帮手。#include"stdio.h"
#include"string.h"
#include"stdlib.h"
#define TOTAL 30
void menu();
int save();
int read();
void input();
void count();
void order();
void check();
void insert();
void modify();
void del();
struct student
{int cla[20];
int num;
char name[8];
float math;
float c_prog;
float eng;
float polity;
float sport;
float ave;
int order;
};
struct student stu[TOTAL];
void main()
{menu();}
void menu()
{
printf("*************学生成绩管理系统*************\n");
printf("******************************************\n");
printf("** 1输入 ***\n");
printf("** 2统计 ***\n");
printf("** 3排序 ***\n");
printf("** 4查询 ***\n");
printf("** 5插入 ***\n");
printf("** 6修改 ***\n");
printf("** 7删除 ***\n");
printf("** 0退出 ***\n");
printf("******************************************\n");
printf("******************************************\n");
int choice;
printf("请选择(0-7):");
scanf("%d",&choice);
switch(choice)
{ case 0:exit(0);break;
case 1:input();break;
case 2:count();break;
case 3:order();break;
case 4:check();break;
case 5:insert();break;
case 6:modify();break;
case 7:del();break;
}
}
int save(int n)
{
FILE * fp;
int i;
if((fp=fopen("stu.txt","wb"))==NULL)
{ printf("\nCan not open\n");
exit(0);
}
printf("FILE'stu.txt':");
for(i=0;fwrite(&stu[i],sizeof(struct student),1,fp)!=0;i++)
printf("file write error\n");
fclose(fp);
exit(0);
for(i=0;!feof(fp);i++)
fread(&stu,sizeof(struct student),1,fp);
fclose(fp);
return(i);
}
int read()
{
FILE*fp;int i;
if((fp=fopen("stu.txt","wb"))==NULL)
{ printf("\nCan not open\n");
return NULL;
}
for(i=0;!feof(fp);i++)
fread(&stu,sizeof(struct student),1,fp);
fclose(fp);
return(i-1);
}
void input()
{ int i=1;
char c;
do
{printf("现在录入学生成绩\n输入第%d个学生的信息\n",i);
printf("请输入姓名:");
scanf("%s",stu[i].name);
fflush(stdin);
printf("请输入班级:");
scanf("%d",stu[i].cla);
fflush(stdin);
printf("请输入学号:");
scanf("%d",stu[i].num);
fflush(stdin);
printf("请输入数学成绩");
scanf("%f",stu[i].math);
fflush(stdin);
printf("请输入C语言成绩");
scanf("%f",stu[i].c_prog);
fflush(stdin);
printf("请输入英语成绩");
scanf("%f",stu[i].eng);
fflush(stdin);
printf("请输入政绩成绩");
scanf("%f",stu[i].polity);
fflush(stdin);
printf("请输入体育成绩");
scanf("%f",stu[i].sport);
fflush(stdin);
i++;
printf("是否继续输入?(Y/N)");
fflush(stdin);
c=getchar();
}while(c=='y'&&c=='Y');
system("cls");
}
void count()
{ int i;
float sum;
for(i=0;i<TOTAL;i++)
sum+=stu[i].math+stu[i].c_prog+stu[i].eng+stu[i].polity+stu[i].sport;
stu[i].ave=sum/5;
}
void order()
{
float temp;int Q,i,j;
for(i=0;i<Q;i++)
for(j=i+1;j<Q;j++)
if(stu[i].ave<stu[j].ave)
{temp=stu[i].ave;
stu[i].ave=stu[j].ave;
stu[j].ave=temp;}
}
void cheak()
{
int i;
printf("\n\tNo\t\tName\t\tMath\t\tc_prog\t\tEng\t\tPolity\t\tSport\t\n");
for(i=0;i<TOTAL;i++)
void count();
printf("%12d%12s%7f%7f%7f%7f%7f%10.2f",
stu[i].num,stu[i].name,stu[i].math,stu[i].c_prog,stu[i].eng,stu[i].polity,stu[i].sport);
}
void insert()
{
FILE*fp,*fp1;
int i,t,n;
printf("\n请输入学号:");
scanf("%s",stu[i].num);
fflush(stdin);
printf("请输入姓名:");
scanf("%s",stu[i].name);
fflush(stdin);
printf("请输入班级:");
scanf("%d",stu[i].cla);
fflush(stdin);
printf("请输入数学成绩");
scanf("%f",stu[i].math);
fflush(stdin);
printf("请输入C语言成绩");
scanf("%f",stu[i].c_prog);
fflush(stdin);
printf("请输入英语成绩");
scanf("%f",stu[i].eng);
fflush(stdin);
printf("请输入政绩成绩");
scanf("%f",stu[i].polity);
fflush(stdin);
printf("请输入体育成绩");
scanf("%f",stu[i].sport);
fflush(stdin);
if((fp=fopen("stu.txt","wb"))==NULL)
{printf("\nCan not open\n");
exit(0);
}
printf("Originaldata:\n");
for(i=0;fread(&stu[i],sizeof(struct student),1,fp)!=0;i++)
{
printf("\n%12d%12s",stu[i].num,stu[i].name);
printf("%4d",stu[i].cla);
printf("%4f",stu[i].math);
printf("%4f",stu[i].c_prog);
printf("%4f",stu[i].eng);
printf("%4f",stu[i].polity);
printf("%4f",stu[i].sport);
printf("%6.2f",stu[i].ave);
}
n=i;for(t=0;stu[t].ave>stu[n].ave&&t<n;t++)
printf("\nNOw:\n");
fp1=fopen("stu.txt","w");
for(i=0;i<t;i++)
{
fwrite(&stu[i],sizeof(struct student),1,fp1);
printf("\n%12d%12s",stu[i].num,stu[i].name);
printf("%4d",stu[i].cla);
printf("%4f",stu[i].math);
printf("%4f",stu[i].c_prog);
printf("%4f",stu[i].eng);
printf("%4f",stu[i].polity);
printf("%4f",stu[i].sport);
printf("%6.2f",stu[i].ave);
}
fwrite(&stu[i],sizeof(struct student),1,fp1);
printf("\n%12d%12s%7d%7d%7d%7d%7d%10.2f",stu[i].num,stu[i].name,stu[i].math,stu[i].c_prog,stu[i].eng,stu[i].polity,stu[i].sport,stu[i].ave);
for(i=t;i<n;i++)
{
fwrite(&stu[i],sizeof(struct student),1,fp1);
printf("\n%12d%12s",stu[i].num,stu[i].name);
printf("%4d",stu[i].cla);
printf("%4f",stu[i].math);
printf("%4f",stu[i].c_prog);
printf("%4f",stu[i].eng);
printf("%4f",stu[i].polity);
printf("%4f",stu[i].sport);
printf("10.2f",stu[i].ave);
}
printf("\n");
fclose(fp);
fclose(fp1);
}
void modify()
{
int i;char str[20];
printf("输入需要修改的学生的姓名:");
gets(str);
for(i=0;i<TOTAL;i++)
{if(str==stu[i].name)
{
printf("请输入学号:");
scanf("%d",&stu[i].num);
printf("请输入班级:");
scanf("%d",stu[i].cla);
fflush(stdin);
printf("请输入数学成绩");
scanf("%f",stu[i].math);
fflush(stdin);
printf("请输入C语言成绩");
scanf("%f",stu[i].c_prog);
fflush(stdin);
printf("请输入英语成绩");
scanf("%f",stu[i].eng);
fflush(stdin);
printf("请输入政绩成绩");
scanf("%f",stu[i].polity);
fflush(stdin);
printf("请输入体育成绩");
scanf("%f",stu[i].sport);
fflush(stdin);
}
else printf("查无此人,请重新输入:");
}
}
void del()
{ int i,j,n,flag;char name[20];FILE*fp;
if((fp=fopen("stu.txt","wb"))==NULL)
{printf("\nCan not open\n");
exit(0);
}
printf("\noriginal data:\n");
for(i=0;fread(&stu[i],sizeof(struct student),1,fp)!=0;i++)
printf("\n%12d%12s",stu[i].num,stu[i].name);
printf("%4d",stu[i].cla);
printf("%7f",stu[i].math);
printf("%7f",stu[i].c_prog);
printf("%7f",stu[i].eng);
printf("%7f",stu[i].polity);
printf("%7f",stu[i].sport);
printf("10.2f",stu[i].ave);
fclose(fp);
n=i;
printf("请输入要删除的姓名\n");
scanf("%s",name);
for(flag=1,i=0;flag&&i<n;i++)
{
if(strcmp(name,stu[i].name)==0)
{
for(j=i;j<n-1;j++)
{
strcpy(stu[j].name,stu[j+1].name);
stu[j].num=stu[j+1].num;
stu[j].math=stu[j+1].math;
stu[j].c_prog=stu[j+1].c_prog;
stu[j].eng=stu[j+1].eng;
stu[j].polity=stu[j+1].polity;
stu[j].sport=stu[j+1].sport;
stu[j].ave=stu[j+1].ave;
}flag=0;
}
}
if(flag!=0)
n=n-1;
else printf("\nNOt found!");
printf("\nNow,the content of file:\n");
if((fp=fopen("stu.txt","wb"))==NULL)
{
printf("Can not open\n");
exit(0);
}
for(i=0;i<n;i++)
fwrite(&stu[i],sizeof(struct student),1,fp);
fclose(fp);
fp=fopen("stu.txt","r");
for(i=0;fread(&stu[i],sizeof(struct student),1,fp)!=0;i++)
printf("\n%12d%12s",stu[i].num,stu[i].name);
printf("%4d",stu[i].cla);
printf("%7f",stu[i].math);
printf("%7f",stu[i].c_prog);
printf("%7f",stu[i].eng);
printf("%7f",stu[i].polity);
printf("%7f",stu[i].sport);
printf("10.2f",stu[i].ave);
printf("\n");
fclose(fp);
}