学生成绩管理系统
#include "stdio.h"
#include "string.h"
#define N 100 /*学生数量*/
struct student
{
char num[6];
char name[8];
int score[4];
int CourseCredit[4];
double zhscore;
}stu[N];
save(int n) /*保存文件函数*/
{ FILE *fp;
int i;
fp=fopen("achievement,txt","wb");
for(i=0;i<n;i++)
fwrite(&stu[i],sizeof(struct student),1,fp);
fclose(fp);
}
count() /*统计记录个数*/
{ FILE *fp;
int i;
fp=fopen("stud","rb");
for(i=0;!feof(fp);i++)
fread(&stu[i],sizeof(struct student),1,fp);
fclose(fp);
return(i-1);
}
void zhscore(int n) /*计算每个学生的综合成绩*/
{
int i,j,s,zxf,sum;
for(i=0;i<n;i++)
{
sum=0;
for(j=0;j<4;j++)
s=stu[i].score[j]*stu[i].CourseCredit[j];
zxf+=stu[i].CourseCredit[j];
sum+=s;
stu[i].zhscore=sum/zxf;
}
}
void creat() /*录入学生原始数据并写入磁盘文件*/
{
int i,j,n;
printf("请输入首次输入记录的数量:\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("\n请输入第%d个学生数据:\n",i+1);
printf("学号:");
scanf("%s",stu[i].num);
printf("姓名:");
scanf("%S",stu[i].name);
for(j=0;j<4;j++)
{
printf("成绩%d:",j+1);
scanf("%d",&stu[i].score[j]);
printf("学分%d:",j+1);
scanf("%d",&stu[i].CourseCredit[j]);
}
}
zhscore(n);
save(n);
}
void show() /*显示学生数据*/
{
int i,j,n;
n=count();
printf("\n\n--------------------学生信息表----------------------\n\n");
printf("学号\t姓名\t成绩1\t学分1\t成绩2\t学分2\t成绩3\t学分3\t成绩4\t学分4\t综合成绩\n");
for(i=0;i<n;i++)
{ printf("%s\t%s\t",stu[i].num,stu[i].name);
for(j=0;j<4;j++)
printf("%d\t%d\t",stu[i].score[j],stu[i].CourseCredit[j]);
printf("%.2If",stu[i].zhscore);
printf("\n");
}
}
void search() /*查找学生数据并显示*/
{
int i,j,n,k=-1;
struct student s;
n=count();
printf("请输入要查找的学生的学号:\n");
scanf("%s",&s.num);
for(i=0;i<n;i++)
if(strcmp(s.num,stu[i].num)==0)
{k=i;break;}
if (k==-1)printf("数据不存在\n");
else
{
printf("学号\t姓名\t成绩1\t学分1\t成绩2\t学分2\t成绩3\t学分3\t成绩4\t学分4\t综合成绩\n");
printf("%s\t%s\t",stu[k].num,stu[k].name);
for(j=0;j<4;j++)
printf("%d\t%d\t",stu[i].score[j],stu[i].CourseCredit[j]);
printf("%.2If",stu[i].zhscore);
printf("\n");
}
}
void sort() /*按个人综合成绩降序排序*/
{
int i,j,n;
struct student temp;
n=count();
for(i=0;i<n-1;i++) /*排序*/
for(j=i+1;j<n;j++)
if(stu[i].zhscore<stu[j].zhscore)
{ temp=stu[i];
stu[i]=stu[j];
stu[j]=temp;
}
printf("---------------学生信息表--------------\n");
printf("学号\t姓名\t成绩1\t学分1\t成绩2\t学分2\t成绩3\t学分3\t成绩4\t学分4\t综合成绩\n");
for(i=0;i<n;i++)
{
printf("%s\t%s\t",stu[i].num,stu[i].name);
for(j=0;j<4;j++)
printf("%d\t%d\t",stu[i].score[j],stu[i].CourseCredit[j]);
printf("%.2If",stu[i].zhscore);
}
printf("\n\n");
}
void showmenu() /*显示菜单*/
{
printf("\n 学生成绩管理系统 \n");
printf("\n==========================================\n");
printf(" 1.录入学生数据 \n");
printf(" 2.显示学生数据 \n");
printf(" 3.查找学生数据 \n");
printf(" 4.排序学生数据 \n");
printf(" 0.退出系统 \n");
printf("============================================\n");
printf("\n请输入您的选择(0-4):");
}
main() /*主控函数*/
{
int choice;
showmenu();
scanf("%d",&choice);
while(choice!=0) /*选择0退出*/
{
switch(choice)
{
case 1:creat();break;
case 2:show();break;
case 3:search();break;
case 4:sort();break;
}
showmenu();
scanf("%d",&choice);
}
}
————————————————————————————————————————————————————————
一个学生成绩管理系统,报错0错误可以运行,但是录入成绩后到第二步就会出行退出程序,可以帮我看看那里有问题吗