有大神愿意帮忙看看这篇代码哪有错误吗

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#include<dos.h>
#define LEN sizeof(struct student)891
#define FORMAT “%d%10s%16d%13d%15d%19.2f\n”
#define DATA stu[i].num,stu[i].name,stu[i].gaos_score,stu[i].cyy_socre,stu[i].English_score,stu[i].sum
struct student//定义结构体
{
int num;//学号
char name[20];//姓名
int gaos_score;//高数成绩
int cyy_socre;//C语言成绩
int English_score;//大英成绩
float sum;//总成绩
}stu[100];
int main()
{
//对各函数模板进行声明
void show();//显示信息
void input();//学生基本信息录入
void search();//按学号查询学生信息
void del();//删除某学生信息
void modify();//按学号修改某学生信息
void insert();//添加某学生信息
void order();//根据总成绩排名
void menu();//菜单
void bben();
int n;
bben();
menu();
scanf("%d",&n);
while(n)
{ switch(n)
{ case 1: input();break;
case 2: search();break;
case 3: del();break;
case 4: modify();break;
case 5: insert();break;
case 6: order();break;
case 8: show();printf(“请按任意键返回菜单!\n”);break;
default:break;
}
getch();
menu();
scanf("%d",&n);
}
return 0;
}
void bben()
{
int i,j;
system(“cls”);
printf("\n\n\n\n\n");
printf(" * * \n");
printf(" 欢迎进入学生成绩管理系统\n");
printf(" ** **\n");
printf(" ******************************************************\n");
printf("\n\n\n\n\n\n\n");
system(“pause”);
}
void menu()
{
system(“cls”);//清屏

printf("\n\n\n\n\n                                    ********************菜单********************\n");
printf("                                    *                                          *\n");
printf("                                    *             0.退出                       *\n");
printf("                                    *             1.学生基本信息录入           *\n");
printf("                                    *             2.按学号查询学生信息         *\n");
printf("                                    *             3.删除某学生信息             *\n");
printf("                                    *             4.按学号修改某学生信息       *\n");
printf("                                    *             5.插入某学生信息             *\n");
printf("                                    *             6.根据总成绩排名             *\n");
printf("                                    *             7.显示学生信息               *\n");
printf("                                    *                                          *\n");
printf("                                    ********************************************\n");
printf("                                    请输入您要执行的序号(0--7):");

}
void show()
{ FILE fp;
int i,a=0;
fp=fopen(“data.txt”,“rb”);//打开文件
while(!feof(fp))//判断文件指针
fp是否指向文件末尾
{
if(fread(&stu[a] ,LEN,1,fp)==1)
a++;
}
fclose(fp);
printf(“学号 姓名 高数 C语言 大学英语 总分\t\n”);
for(i=0;i<a;i++)
{
printf(FORMAT,DATA);//将信息打印
}
}
void input()//录入学生信息模块
{

int i,a=0,n;//a是记录的条数
char ch[2];
FILE *fp;//定义文件指针
if((fp=fopen("data.txt","a+"))==NULL)//打开指定文件  a+:为读/写打开一个指定文件  第一次打开文件,寻找原本存在的学生信息并且显示出来 
{
	printf("不能打开文件\n");
	return;
} 
while(!feof(fp))
{
	if(fread(&stu[a],LEN,1,fp)==1)
	a++;                             //记录当前条数 

}
fclose(fp);
if(a==0)
printf("不能记录!\n");
else
{
	system("cls");
	show();
}
if((fp=fopen("data.txt","wb"))==NULL)
{
	printf("不能打开文件\n");
	return;
}
for(i=0;i<a;i++)
fwrite(&stu[i],LEN,1,fp);
printf("请输入y/n(提示,输入y继续输入,输入n结束输入):");
scanf("%s",ch);
while(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)
{
	printf("学号");
	scanf("%d",&stu[a].num);
	for(i=0;i<a;i++)
	if(stu[i].num==stu[a].num)
	{
		printf("该学号已存在,请按任何键继续!");
		getch();
		fclose(fp);
		return;
	}
	printf("姓名:");
	scanf("%s",stu[a].name);
	printf("高数:");
	scanf("%d",&stu[a].gaos_score);
	printf("C语言:");
	scanf("%d",&stu[a].cyy_socre);
	printf("英语:");
	scanf("%d",&stu[a].English_score);
	stu[a].sum=stu[a].gaos_score+stu[a].cyy_socre+stu[a].English_score;
	if(fwrite(&stu[a],LEN,1,fp)!=1)
	{
		printf("不能保存!");
		getch();
	}
	else
	{
		printf("%s 已被保存!\n",stu[a].name);
		a++;
	}
	printf("是否继续y/n(提示,输入y继续输入,输入n结束输入):");
	scanf("%s",ch);
}
fclose(fp);
printf("OK!请按任意键返回主菜单!\n");

}

void search()//查询学生信息
{
FILE *fp;
int snum,i,a=0;
char ch[2];
if((fp=fopen(“data.txt”,“rb”))==NULL)//rb:(只读)以二进制形式
{
printf(“不能打开文件\n”);
return;
}
while(!feof(fp))
{
if(fread(&stu[a],LEN,1,fp)==1)
a++;
}

fclose(fp);
if(a0)
{
printf(“没有记录!\n”);
return;
}
printf(“请输入要查询学生的学号:”);
scanf("%d",&snum);
for(i=0;i<a;i++)
if(snum
stu[i].num)
{
printf(“已经找出该学生,是否要显示(y/n):”);
scanf("%s",ch);
if(strcmp(ch,“Y”)==0||strcmp(ch,“y”)0)
{
printf(“学号 姓名 高数 C语言 大学英语 总分\t\n”);
printf(FORMAT,DATA);
break;
}
}
if(i
a) printf(“未能找到要查询的信息!\n”);
printf(“请按任意键返回主菜单!\n”);
}

void del()//删除学生信息
{
FILE *fp;
int snum,i,j,a=0;
char ch[2];
if((fp=fopen(“data.txt”,“r+”))NULL)
{
printf(“不能打开文件\n”);
return;
}
while(!feof(fp))
if(fread(&stu[a],LEN,1,fp)1)
a++;
fclose(fp);
if(a
0)
{
printf(“没有记录!\n”);
return;
}
printf(“请输入要删除学生的学号:”);
scanf("%d",&snum);
for(i=0;i<a;i++)
if(snum
stu[i].num)
break;
printf(“已经找到该学生,是否删除(y/n):”);
scanf("%s",ch);
if(strcmp(ch,“Y”)==0||strcmp(ch,“y”)==0)//判断是否要进行删除
for(j=i;j<a;j++)
stu[j]=stu[j+1];//将后一个记录移到前一个记录的位置
a–;//记录的总个数减1
if((fp=fopen(“data.txt”,“wb”))==NULL)
{
printf(“不能打开文件\n”);
return;
}
for(j=0;j<a;j++)
if(fwrite(&stu[j] ,LEN,1,fp)!=1)
{
printf(“不能保存!\n”);
getch();
}
fclose(fp);
printf(“修改成功!\n”);
printf(“请按任意键返回主菜单!\n”);
}

void modify()//修改学生信息
{
FILE *fp;
int snum,i,j,a=0;
if((fp=fopen(“data.txt”,“r+”))NULL)
{
printf(“不能打开文件!\n”);
return;
}
while(!feof(fp)) //判断文件指针是否指到文件末尾
if(fread(&stu[a],LEN,1,fp)1)
a++;
if(a
0)
{
printf(“没有记录!\n”);
fclose(fp);
return;
}
printf(“请输入你想修改的信息的学生学号!\n”);
scanf("%d",&snum);
for(i=0;i<a;i++)
if(snum
stu[i].num)
break;
printf(“已经找到该学生,请进行修改!\n”);
printf(“姓名:”);
scanf("%s",stu[i].name);
printf(“高数:”);
scanf("%d",&stu[i].gaos_score);
printf(“C语言:”);
scanf("%d",&stu[i].cyy_socre);
printf(“英语:”);
scanf("%d",&stu[i].English_score);
stu[i].sum=stu[i].gaos_score+stu[i].cyy_socre+stu[i].English_score;
if((fp=fopen(“data.txt”,“wb”))==NULL)
{
printf(“不能够打开文件!\n”);
return;
}
for(j=0;j<a;j++)
if(fwrite(&stu[j],LEN,1,fp)!=1)
{
printf(“不能保存!\n”);
getch();
}
fclose(fp);
printf(“请按任意键返回主菜单!\n”);
}
void insert()//插入学生信息
{
FILE *fp;
int i,j,k,snum,m=0;
if((fp=fopen(“data.txt”,“r+”))==NULL)
{
printf(“不能打开文件!\n”);
return;
}
while(!feof(fp))
if(fread(&stu[m],LEN,1,fp)1)
m++;
if(m
0)
{
printf(“没有记录!\n”);
fclose(fp);

}
printf("请选择你要插入的位置!(输入要插入的已存在的学号)\n");
scanf("%d",&snum);
for(i=0;i<m;i++)
if(snum==stu[i].num)
break;
for(j=m-1;j>i;j--)//将i以后的数字依次推后一位 
stu[j+1]=stu[j];
printf("请输入新的信息!\n");
printf("学号:");
scanf("%d",&stu[i+1].num);
for(k=0;k<m;k++)
if(stu[k].num==stu[i+1].num)
{
	printf("学生信息已经成功插入,请按任意键继续!\n");
	getch();
	fclose(fp);
   
   
} 
printf("姓名:");
scanf("%s",stu[i+1].name);
printf("高数成绩:");
scanf("%d",&stu[i+1].gaos_score);
printf("C语言成绩:");
scanf("%d",&stu[i+1].cyy_socre);
printf("英语成绩:");
scanf("%d",&stu[i+1].English_score);
stu[i+1].sum =stu[i+1].gaos_score+stu[i+1].cyy_socre+stu[i+1].English_score;
 if((fp=fopen("data.txt","wb"))==NULL)
{
	printf("不能够打开文件!\n");
	return;
} 
	for(k=0;k<m+1;k++)
    if(fwrite(&stu[k] ,LEN,1,fp)!=1)
	{
		printf("不能够保存!\n");
		getch();
	}
	fclose(fp);
	printf("请按任意键返回主菜单!\n");

}

void order()//将成绩进行排序并输出
{
FILE *fp;
struct student t;
int i,j,m=0;
if((fp=fopen(“data.txt”,“r+”))==NULL)
{
printf(“不能够打开文件!\n”);
return;
}
while(!feof(fp))
if(fread(&stu[m],LEN,1,fp)1)
m++;
fclose(fp);
if(m
0)
{
printf(“没有记录!\n”);
return;
}
if((fp=fopen(“data.txt”,“wb”))==NULL)
{
printf(“不能打开文件!\n”);
return;
}
for(i=0;i<m-1;i++)
for(j=i+1;j<m;j++)
if(stu[i].sum<stu[j].sum)
{
t=stu[i];
stu[i]=stu[j];
stu[j]=t;
}
if((fp=fopen(“data.txt”,“wb”))==NULL)
{
printf(“不能打开!\n”);
return;
}
for(j=0;j<m;j++)
if(fwrite(&stu[j],LEN,1,fp)!=1)
{
printf("%s不能储存!\n");
getch();
}
fclose(fp);

show();
printf(“请按任意键返回主菜单!\n”);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值