C语言程序设计:学生成绩管理系统

1.从键盘输入n名学生数据,包括(姓名、学号、三门课程成绩),分别计算出平均成绩,将原有数据和平均分数保存在文件1;

2.将文件1中的学生数据,按平均分数升序排列,将排好的学生数据保存到文件2;

3.插入1个学生数据,计算出平均分数,按平均分升序插入该学生数据,保存到文件3;

1.声明结构体类型、定义结构体数组

struct Student//声明一个结构体类型 struct Student
{
	int num;//学号 
	char name[20];//姓名 
	float score[3];//3门课成绩 
	float average; //3门课平均分 
}stu[N];//定义结构体数组 

2.从键盘输入学生数据,计算平均分数、将学生数据保存至文件1

for(i=0;i<N;i++)
{
scanf("%d%s%f%f%f",&stu[i].num,stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
stu[i].average=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3;//计算每个学生3门平均分 
} 

for(i=0;i<N;i++)
fwrite(&stu[i],LEN,1,fp)//循环N次,每次向文件中写入一个学生信息

3.将文件1中的学生数据按平均分升序排列、保存至文件2

/*冒泡法*/
 for(i=0;i<N-1;i++)//N个结构体变量两两比较N-1趟
 {
 	for(j=0;j<N-1-i;j++)//每一趟比较N-1-i次
	{
		if(stu[j].average>stu[j+1].average)
		{
			t=stu[j];
			stu[j]=stu[j+1];
			stu[j+1]=t;
		} 
	} 
 }
/*写入文件*/
for(i=0;i<N;i++)
fwrite(&stu[i],LEN,1,fp)//循环N次,每次向文件中写入一个学生信息

 4.按平均分升序插入一名学生数据,保存至文件3

struct Student a;//定义结构体变量存放插入学生信息 
scanf("%d%s%f%f%f",&a.num,a.name,&a.score[0],&a.score[1],&a.score[2]);	
a.average=(a.score[0]+a.score[1]+a.score[2])/3;//计算新插入学生的3门平均分
/*插在开头*/	 
 fwrite(b,LEN,1,fp);
 for(i=0;i<N;i++)
 fwrite(&stu[i],LEN,1,fp);

/*插在末尾*/	 
 for(i=0;i<N;i++)
 fwrite(&stu[i],LEN,1,fp);
 fwrite(b,LEN,1,fp);

/*插在中间某处*/	
for(i=0;i<m+1;i++)
fwrite(&stu[i],LEN,1,fp);
fwrite(b,LEN,1,fp);
for(i=m+1;i<N;i++)
fwrite(&stu[i],LEN,1,fp);

注:以上仅为部分代码,具体代码已以文本形式上传,用户可自行下载

5.运行结果:

1.运行界面

2.输入学生数据(以3名学生为例),保存至文件1、并在屏幕显示

3.按平均分升序排列,保存至文件2、并在屏幕显示

4.按平均分升序插入一名学生数据,保存至文件3、并在屏幕显示

视频演示如下:

C语言程序设计:学生成绩管理系统

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值