#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<dos.h>
#include<string.h>
struct student
{
int num;
char name[8];
char sex[4];
int english;
int chinese;
int math;
int maogai;
int cyuyan;
int tiyu;
double ave;
double sum;
};
struct student stu[50];
void show()
{
int i,m=0;
FILE *fp;
if((fp=fopen("d:\\s.txt","rb"))==NULL)
{
printf("不能打开文件!\n");
return;
}
while(!feof(fp))
{
if(fread(&stu[m],sizeof(struct student),1,fp)==1)
m++;
}
fclose(fp);
printf("学号 姓名 性别 英语 语文 数学 毛概 c语言 体育 平均成绩 总成绩 \n");
for(i=0;i<m;i++)
printf("%-6d%-6s%-6s%-8d%-6d%-6d%-6d%-6d%-6d%-8d%-8d\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].english,stu[i].chinese,stu[i].math,stu[i].maogai,stu[i].cyuyan,stu[i].tiyu,stu[i].ave,stu[i].sum);
}
void menu()
{system("cls");
printf("\t\t ------- 欢迎使用学生成绩管理系统 ------- \n");
printf("\t\t | 1.录入学生成绩 \t |\n");
printf("\t\t | 2.查询学生成绩 \t |\n");
printf("\t\t | 3.删除学生成绩 \t |\n");
printf("\t\t | 4.修改学生成绩 \t |\n");
printf("\t\t | 5.插入学生成绩 \t |\n");
printf("\t\t | 6.统计学生成绩 \t |\n");
printf("\t\t | 7.统计输入记录 \t |\n");
printf("\t\t | 0.退出程序 \t |\n");
printf("\t\t -----------------------------------------\n");
printf("请输入所需的功能编号(0-6)\n");
}
void in()//录入
{
int m=0;
char ch[2];
FILE *fp;
if((fp=fopen("d:\\s.txt","ab+"))==NULL)
{
printf("不能打开文件!\n");
return;
}
while(!feof(fp))
{
if(fread(&stu[m],sizeof(struct student),1,fp)==1)
m++;
}
fclose(fp);
if(m==0)
printf("没有找到!\n");
else
{system("cls");
show();
}
if((fp=fopen("d:\\s.txt","ab+"))==NULL)
{
printf("不能打开文件!\n");
return;
}
printf("确定要输入吗?(y/n)");
scanf("%s",ch);
while(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)
{
printf("学号:");
scanf("%d",&stu[m].num);
printf("姓名:");
scanf("%s",&stu[m].name);
printf("性别:");
scanf("%s",&stu[m].sex);
printf("英语:");
scanf("%d",&stu[m].english);
printf("语文:");
scanf("%d",&stu[m].chinese);
printf("数学:");
scanf("%d",&stu[m].math);
printf("毛概:");
scanf("%d",&stu[m].maogai);
printf("c语言:");
scanf("%d",&stu[m].cyuyan);
printf("体育:");
scanf("%d",&stu[m].tiyu);
stu[m].ave=(stu[m].english+stu[m].chinese+stu[m].math+stu[m].maogai+stu[m].cyuyan+stu[m].tiyu)/6.0;
stu[m].sum=stu[m].english+stu[m].chinese+stu[m].math+stu[m].maogai+stu[m].cyuyan+stu[m].tiyu;
if(fwrite(&stu[m],sizeof(struct student),1,fp)!=1)
{
printf("不能保存!");
getch();
}
else
{
printf("%s 已经保存\n",stu[m].name);
m++;
}
printf("是否继续?(y/n)");
scanf("%s",ch);
}
fclose(fp);
printf("OK!");
}
void main()
{
int n;
menu();
scanf("%d",&n);
while(n)
{
switch(n)
{
case 1:in();break;
case 2:search();break;
case 3:del();break;
case 4:modify();break;
case 5:insert();break;
case 6:order();break;
case 7:total();break;
default:break;
}
getch();
menu();
scanf("%d",&n);
}
}
计算成绩的时候怎么出错啊?