c语言编写学生成绩管理系统出错了

使用c语言做一个学生成绩管理系统出现错误了,麻烦大佬帮忙看看啊
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
#define N 100
struct student
{
int num;
char name[10];
float score[4];
};
int main()
{
int cjsr(struct student stu[],int);
void cjxs(struct student stu[],int);
void xrwj(struct student stu[],int);
void xejzwj(struct student stu[],int);
void xwbwj(struct student stu[],int);
int dcwj(struct student stu[]);
int dejzwj(struct student stu[]);
int dwbwj(struct student stu[]);
void cjtj(struct student stu[],int);
void cjpx(struct student stu[],int);
void cjcx(struct stident stu[],int);
void cjxg(struct student stu[],int rec);
int cjsc(struct student stu[],int rec);
struct student stu[N];
int ch,rec=0;
while(1)
{
system(“cls”);
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(" 8—学生成绩删除\n");
printf(" 0—退出系统\n");
printf(" ------------------------ \n");
printf(" 请选择0–8:");
scanf("%d",&ch);
switch(ch)
{
case 0:printf(“退出系统!\n”);exit(0);
case 1:rec=cjsr(stu,rec);break;
case 2:cjtj(stu,rec);break;
case 3:cjpx(stu,rec);break;
case 4:cjcx(stu,rec);break;
case 5:xrwj(stu,rec);break;
case 6:rec=dcwj(stu);break;
case 7:cjxg(stu,rec);break;
case 8:rec=cjsc(stu,rec);break;
default:printf(“菜单选择错误! \n”);
}
printf(“按任意键继续…”);
getch();
}
return 0;
}
int cjsr(struct student stu[],int rec)
{
struct studentp=stu+rec;
int xh;
do
{
system(“cls”);
printf(" 请录入学生成绩\n");
printf("--------------------------------- \n");
printf(“第%3d位同学:\n”,rec+1);
printf(“请输入学号(负数结束输入):”);
scanf("%d",&xh);
if(xh<0) break;
rec++;
p->num=xh;
printf(“请输入姓名:”);
getchar();
gets(p->name);
printf(“请输入数学成绩:”);;
scanf("%f",&p->score[0]);
printf(“请输入英语成绩:”);
scanf("%f",&p->score[1]);
printf(“请输入C语言成绩:”);
scanf("%f",&p->score[2]);
p->score[3]=p->score[0]+p->score[1]+p->score[2];
printf(" ");
printf(“总成绩%.2f\n”,p->score[3]);
p++;
}while(1);
cjxs(stu,rec);
return rec;
}
void cjxs(struct student stu[],int rec)
{
struct student
p=stu;
system(“cls”);
printf(“共有%3d条记录!\n”,rec);
printf("------------------------------ \n");
printf(“学号 姓名 数学 英语 C语言 总分 \n”);
printf("------------------------------------------------------\n");
for(p=stu;p<=stu+rec-1;p++)
printf("%4d %-10s%9.2f%9.2f%9.2f%9.2f\n",p->num,p->name,p->score[0],p->score[1],p->score[2],p->score[3]);
printf("----------------------------------------------------------------- \n");
getch();
}
void xrwj(struct student stu[],int rec)
{ char ch;
while(1)
{
system(“cls”);
printf(" 学生成绩写入文件\n");
printf(" ----------------------------- \n");
printf(" 1—写入二进制文件请选择\n");
printf(" 2—写入文本文件\n");
printf(" 0—返回上级菜单\n");
printf(" ----------------------------- \n");
printf(" 请选择0–2:");
scanf("%d",&ch);
switch(ch)
{
case 0:printf(“退出写入! \n”);return;
case 1:xejzwj(stu,rec);break;
case 2:xwbwj(stu,rec);break;
default: printf(“菜单选择错误! \n”);
}
printf(“按任意键继续…”);
getch();
}
}

void xejzwj(struct student stu[],int rec)
{
FILEfp;
char f1[10];
struct student
p=stu;
system(“cls”);
printf(“请输入文件名:\n”);
scanf("%s",f1);
if((fp=fopen(f1,“ab”))==NULL)
{
printf(“打开文件错误!”);
exit(0);
}
fwrite(p,sizeof(struct student),rec,fp);
fclose(fp);
}

void xwbwj(struct student stu[],int rec)
{
FILEfp;
char f1[10];
int i=0;
struct student
p=stu;
system(“cls”);
printf(“请输入文件名:\n”);
scanf("%s",f1);
if((fp=fopen(f1,“ab”))==NULL)
{
printf(“打开文件错误!”);
exit(0);
}
for(p=stu;p<=stu+rec-1;p++)
fprintf(fp,"%4d%-10s%9.2f%9.2f%9.2f%9.2f%9.2f\n",p->num,p->name,p->score[0],p->score[1],p->score[2],p->score[3]);
fclos(fp);
}

int dcwj(struct student stu[])
{
char ch;
int rec;
while(1)
{
system(“cls”);
printf(" 学生成绩写入文件\n");
printf(" ----------------------------- \n");
printf(" 1—写入二进制文件请选择\n");
printf(" 2—写入文本文件\n");
printf(" 0—返回上级菜单\n");
printf(" ----------------------------- \n");
printf(" 请选择0–2:");
scanf("%d",&ch);
switch(ch)
{
case 0:printf(“退出读文件!\n”);return rec;
case 1:rec=dejzwj(stu);break;
case 2:rec=dwbjwj(stu);break;
default:printf(“菜单选择错误! \n”);
}
printf(“按任意键继续…”);
getch();
}
return rec;
}

int dejzwj(struct student stu[])
{
FILEfp;
int rec=0;
char f1[10];
struct student
p=stu;
system(“cls”);
printf(“请输入文件名:\n”);
scanf("%s",f1);
if((fp=fopen(f1,“rb”))==NULL)
{
printf(“打开文件错误!”);
exit(0);
}
while(! feof(fp))
{
fread(p,sizeof(struct student),1,fp);
rec++;
p++;
}
printf(“读出%3d条记录!\n”,–rec);
getch();
cjxs(stu,rec);
fclose(fp);
return rec;
}
int dwbwj(struct student stu[])
{ FILEfp;
int rec=0;
char f1[10];
struct student
p=stu;
system(“cls”);
printf(“请输入文件名:\n”);
scanf("%s",f1);
if((fp=fopen(f1,“r”))==NULL)
{
printf(“打开文件出错!”);
exit(0);
}
while(!feof(fp))
{
fseek(fp,57*rec,0);
fscanf(fp,"%4d%10s%9f%9f%9f%9f",&p->num,p->name,&p->score[0],&p->score[1],&p->score[2],&p->score[3]);
rec++;
p++;
}
printf(“读出%3d条记录!\n”,–rec);
getch();
cjxs(stu,rec);
fclose(fp);
return rec;
}
void cjtj(struct student stu[],int rec)
{
int i,j;
float tj[4]={0};
for(i=0;i<=3;i++)
for(j=0;j<=rec-1;j++)
tj[i]=tj[i]+stu[j].score[i];
system(“cls”);
printf(“共有学生%3d人\n”,rec);
printf("--------------------------------------------\n");
printf(" 数学 英语 C语言 总分 \n");
printf("--------------------------------------------\n");
printf(“单科总分: %9.2f %9.2f %9.2f %9.2f\n”,tj[0],tj[1],tj[2],tj[3]);
printf(“平均分: “);
for(i=0;i<=3;i++)
printf(”%9.2f “,tj[i]/rec);
printf(”\n”);
getch();
}

void cjpx(struct student stu[],int rec)
{
void xhpx(struct student stu[],int rec);
void xmpx(struct student stu[],int rec);
void kcpx(struct student stu[],int rec ,int);
int ch;
while(1)
{
system(“cls”);
printf(" 学生成绩排序\n");
printf(" -----------------------------\n");
printf(" 1—按学号排序\n");
printf(" 2—按姓名排序\n");
printf(" 3—按数学成绩排序\n");
printf(" 4—按英语成绩排序\n");
printf(" 5—按C语言成绩排序\n");
printf(" 6—按总分排序\n");
printf(" 0—退出程序\n");
printf(" ----------------------------\n");
printf(" 请选择0—6:");
scanf("%d",&ch);
switch(ch)
{
case 0:printf(“退出程序!\n”);return;
case 1:xhpx(stu,rec);break;
case 2:xmpx(stu,rec);break;
case 3:kcpx(stu,rec,0);break;
case 4:kcpx(stu,rec,1);break;
case 5:kcpx(stu,rec,2);break;
case 6:kcpx(stu,rec,3);break;
default:printf(“菜单选择错误!\n”);
}
printf(“按任意键继续…”);
getch();
}
}

void xhpx(struct student stu[],int rec)
{
int i,j;
struct student temp;
for(i=0;i<=rec-2;i++)
for(j=0;j<=rec-2-i;j++)
if(stu[j].num>stu[j+1].num)
{
temp=stu[j];
stu[j]=stu[j+1];
stu[j+1]=temp;
}
cjxs(stu,rec);
}

void xmpx(struct student stu[],int rec)
{
int i,j;
struct student temp;
for(i=0;i<=rec-2;i++)
for(j=0;j<=rec-2-i;j++)
if(strcmp(stu[j].name,stu[j+1].name)<0)
{
temp=stu[j];
stu[j]=stu[j+1];
stu[j+1]=temp;
}
cjxs(stu,rec);
}

void kcpx(struct student stu[],int rec,int kh)
{
int i,j;
struct student temp;
for(i=0;i<=rec-2;i++)
for(j=0;j<=rec-2-i;j++)
if(stu[j].score[kh]<stu[j+1].score[kh])
{
temp=stu[j];
stu[j]=stu[j+1];
stu[j+1]=temp;
}
cjxs(stu,rec);
}
void cjcx(struct student stu[],int rec)
{
void zgf(struct student stu[],int rec);
void zdf(struct student stu[],int rec);
void xhcx(struct student stu[],int rec);
int ch;
while(1)
{
system(“cls”);
printf(" 学生成绩查询\n");
printf(" ------------------------------\n");
printf(" 1—查询最高总分\n");
printf(" 2—查询最低总分\n");
printf(" 3—按学号查询\n");
printf(" 0—退出查询\n");
printf(" ------------------------------\n");
printf(" 请选择0—3:");
scanf("%d",&ch);
switch(ch)
{
case 0:printf(“退出查询!\n”);return;
case 1:zgf(stu,rec);break;
case 2:zdf(stu,rec);break;
case 3:xhcx(stu,rec);break;
default:printf("'菜单选择错误!\n");
}
printf(“按任意继续…”);
getch();
}
}
void zgf(struct student stu[],int rec)
{
int i,k;
float max;
max=stu[0].score[3];
k=0;
for(i=0;i<=rec-1;i++)
if(max<stu[i].score[3])
{
max=stu[i].score[3];
k=i;
}
system(“cls”);
printf("----------------------------------------\n");
printf(“学号 姓名 数学 英语 C语言 总分 \n”);
printf("----------------------------------------\n");
printf("%4d %-10s%9.2f%9.2f%9.2f%9.2f\n",stu[k].num,stu[k].name,stu[k].score[0],stu[k].score[1],stu[k].score[2],stu[k].score[3]);
getch();
}
void zdf(struct student stu[],int rec)
{
int i,k;
float min;
min=stu[0].score[3];
k=0;
for(i=0;i<=rec-1;i++)
if(min>stu[i].score[3])
{
min=stu[i].score[3];
k=i;
}
system(“cls”);
printf("----------------------------------------\n");
printf(“学号 姓名 数学 英语 C语言 总分 \n”);
printf("----------------------------------------\n");
printf("%4d %-10s%9.2f%9.2f%9.2f%9.2f\n",stu[k].num,stu[k].name,stu[k].score[0],stu[k].score[1],stu[k].score[2],stu[k].score[3]);
getch();
}
void xhcx(struct student stu[],int rec)
{
int i,xh;
printf(“请输入学号:”);
scanf("%d",&xh);
for(i=0;i<=rec-1;i++)
if(xhstu[i].num)
{
system(“cls”);
printf("----------------------------------------\n");
printf(“学号 姓名 数学 英语 C语言 总分 \n”);
printf("----------------------------------------\n");
printf("%4d %-10s%9.2f%9.2f%9.2f%9.2f\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3]);
getch();
}
void cjxg(struct stdent stu[],int rec)
{
int i,xh;
printf(“请输入学号:”);
scanf("%d",&xh);
for(i=0;i<=rec-1;i++)
if(xh
stu[i].num)
{
system(“cls”);
printf("----------------------------------------\n");
printf(“学号 姓名 数学 英语 C语言 总分 \n”);
printf("----------------------------------------\n");
printf("%4d %-10s%9.2f%9.2f%9.2f%9.2f\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3]);
getch();

	printf("请输入学号:");
	scanf("%d",&stu[i].num);
    printf("请输入姓名:");
	getchar();
	gets(stu[i].name);
    printf("请输入数学成绩:");;
    scanf("%f",&stu[i].score[0]);
    printf("请输入英语成绩:");
    scanf("%f",&stu[i].score[1]);
	printf("请输入C语言成绩:");
	scanf("%f",&stu[i].score[2]);
	stu[i].score[3]=stu[i].score[0]+stu[i].score[1]=stu[i].score[2];
	cjxs(stu,rec);
	return ;

}
printf(“查无此人!”);
getch();
}
int cjsc(struct student stu[],int rec)
{
int i,j,xh;
printf(“输入学号:”);
scanf("%d",&xh);
for(i=0;i<=rec-1;i++)
if(xhstu[i].num)
{
system(“cls”);
printf("----------------------------------------\n");
printf(“学号 姓名 数学 英语 C语言 总分 \n”);
printf("----------------------------------------\n");
printf("%4d %-10s%9.2f%9.2f%9.2f%9.2f\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3]);
getch();
if(i
rec-1)
return–rec;
else
for(j=i;j<=rec-2;j++)
stu[j]=stu[j+1];
return–rec;
}
printf(“查无此人!”);
getch();
return rec;
}在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值