信息管理项目

文章目录


一、

某专业2022-2023-1学期开设10门课程,6门必修课,4门选修课(任选2门)。
专业有2个班级,每个班级30人。现要求统计必修课、选修课平均成绩,统计每名学生的成绩,奖学金成绩排名。程序要求包括以下4个函数,可以以10名同学为例进行设计。
(1)必修课成绩统计的函数;
(2)选修课成绩统计的函数;
(3)统计每名同学成绩的函数
(4)期末奖学金统计设置了每门必修课的成绩权重,A1、A…A6,选修课的成绩权重B1、B2…B4,某同学奖学金评定成绩等于=A1必修课程1成绩+A2必修课程2成绩+…B1选修课程1成绩…+84*选修课程4成绩。编写统计每名同学奖学金评定成绩排名的函数。(具体权重值自己设定即可)

#include<iostream>
using namespace std;
//必修课函数
void average(double a[30][6])
{
	double ave[30];
	double sum = 0;
	int i, j;
	for (i = 0; i < 30; i++)
	{
		for (j = 0; j < 6; j++)
		{
			sum = sum + a[i][j];
		}
		ave[i] = sum / 6;
	}

	for (i = 0; i < 30; i++)
		cout << "第" << i + 1 << "个学生的平均分为:" << ave[i] << endl;

}


//必修课函数
void averageopt(double a[30][2])
{
	double ave[30];
	double sum = 0;
	int i, j;
	for (i = 0; i < 30; i++)
	{
		for (j = 0; j < 2; j++)
		{
			sum = sum + a[i][j];
		}
		ave[i] = sum / 2;
	}

	for (i = 0; i < 30; i++)
		cout << "第" << i + 1 << "个学生的平均分为:" << ave[i] << endl;

}

//统计每名学生成绩函数
void sum(double a[30][6],double b[30][2])
{
	int i, j, k;
	for (i = 0; i < 30; i++)
	{	
		k=0;
		double sum = 0;
		for (j = 0; j < 6; j++)
		{
			if(k<2)
			{
				sum = sum + a[i][j]+b[i][k];
			}
			else
				sum = sum + a[i][j];
			k++;
			
		}
		cout << "第" << i + 1 << "个学生的总分为:" << sum << endl;
	}
}

//排名函数
void sort(double a[30][6],double b[30][2],double A1,double A2,double A3,double A4,double A5,double A6,double B1,double B2)
{
	int i, j, k;
	double sum[30];
	for (i = 0; i < 30; i++)
	{	
		sum[i] = a[i][0]*A1+a[i][1]*A2+a[i][2]*A3+a[i][3]*A4+a[i][4]*A5+a[i][5]*A6+b[i][0]*B1+b[i][1]*B2;	
		
	}
	//排序
	for(i=0;i<30-1;i++)
	{
		for(j=0;j<30-1-i;j++)
		{
			//成绩由高至低排序
			if(sum[j]<sum[j+1])
			{
				double temp=sum[j];
				sum[j]=sum[j+1];
				sum[j+1]=temp;
			}
		}
	}
	for(i=0;i<30;i++)
	{
		cout << "排名第" << i + 1 << "个学生的成绩是:" << sum[i] << endl;
	}

	
}
int main()
{
	//必修课
	double req1[30][6];//班级1的必修课
	double req2[30][6];//班级2的必修课
	cout<<"请输入班级1的必修课成绩"<<endl;
	for (int i = 0; i < 30; i++)
	{
		for (int j = 0; i < 6; j++)
		{
			cin >> req1[i][j];
		}
	}
	cout<<"班级1的各个学生必修课平均成绩"<<endl;
	average(req1);
	cout<<"请输入班级2的必修课成绩"<<endl;
	for (int i = 0; i < 30; i++)
	{
		for (int j = 0; i < 6; j++)
		{
			cin >> req2[i][j];
		}
	}
	cout<<"班级2的各个学生必修课平均成绩"<<endl;
	average(req2);



	//选修课
	double opt1[30][2];//班级1的选修课
	double opt2[30][2];//班级2的选修课
	cout<<"请输入班级1的选修课成绩"<<endl;
	for (int i = 0; i < 30; i++)
	{
		for (int j = 0; i < 2; j++)
		{
			cin >> opt1[i][j];
		}
	}
	cout<<"班级1的各个学生选修课平均成绩"<<endl;
	averageopt(opt1);
	cout<<"请输入班级2的选修课成绩"<<endl;
	for (int i = 0; i < 30; i++)
	{
		for (int j = 0; i < 2; j++)
		{
			cin >> opt2[i][j];
		}
	}
	cout<<"班级2的各个学生选修课平均成绩"<<endl;
	averageopt(opt2);


	//统计每名学生成绩的函数
	cout<<"班级1的各个学生总成绩"<<endl;
	sum(req1,opt1);

	cout<<"班级2的各个学生总成绩"<<endl;
	sum(req2,opt2);

	//成绩权重
	double A1=0.2;double A2=0.2;double A3=0.1;double A4=0.1;double A5=0.1;double A6=0.1;
	double B1=0.1;double B2=0.1;
	cout<<"班级1的各个学生总成绩排名"<<endl;
	sort(req1,opt1,A1,A2,A3,A4,A5,A6,B1,B2);
	
	cout<<"班级2的各个学生总成绩排名"<<endl;
	sort(req2,opt2,A1,A2,A3,A4,A5,A6,B1,B2);
	return 0;
}

二、

录入10个同学姓名、学号、语文成绩、数学成绩、英语成绩。
1)可以根据姓名查询其姓名学号、语文成绩、数学成绩 、英语成绩以及平均成绩与总成绩
2)按照高分到低分排列整个列表(姓名、学号、语文成绩、 数学成绩、 英语成绩以及平均成绩、总成绩。

#include<stdio.h>
#include<string.h>
#define Max 10
struct Person
{
	char Name[50];
	int id;
	double C;
	double M;
	double E;
	double MAX;
	double avg;
};
int isExist(struct Person stu[], char* name)
{
	for (int i = 0; i < Max; i++)
	{
		if (strcmp(stu[i].Name , name)==0)//找到了
		{
			return i;
		}
	}
	return -1;//没找到
}
void findPerson(struct Person stu[])
{
	printf("请输入查找联系人姓名:\n");
	char name[20];
	scanf("%s",name);
	int ret = isExist(stu, name);
	if (ret == -1)
	{
		printf("查无此人\n");
	}
	else
	{
		double max=stu[ret].C+stu[ret].M+stu[ret].E;
		printf("找到此人\n");
		printf("姓名:%s\t",stu[ret].Name);
		printf("学号:%d\t",stu[ret].id);
		printf("语文成绩:%lf\t",stu[ret].C);
		printf("数学成绩:%lf\t",stu[ret].M);
		printf("英语成绩:%lf\n",stu[ret].E);
		printf("平均成绩:%lf\n",max/3);
		printf("总成绩:%lf\n",max);

	}
}
void Sort(struct Person stu[])
{
	 int i,j;
	for( i=0;i<Max;i++)
	{
		stu[i].MAX=stu[i].C+stu[i].M+stu[i].E;
		 stu[i].avg=stu[i].MAX/3;
	}
	for( i=0;i<Max-1;i++)
	{
		for(j=0;j<Max-1-i;j++)
		{
			if(stu[j].avg>stu[j+1].avg)
			{
				double temp=stu[j].avg;
				stu[j].avg=stu[j+1].avg;
				stu[j+1].avg=temp;
			}
		}
	}
	for(i=0;i<Max;i++)
	{
		printf("姓名:%s\t",stu[i].Name);
		printf("学号:%d\t",stu[i].id);
		printf("语文成绩:%lf\t",stu[i].C);
		printf("数学成绩:%lf\t",stu[i].M);
		printf("英语成绩:%lf\n",stu[i].E);
		printf("平均成绩:%lf\n",stu[i].avg);
		printf("总成绩:%lf\n",stu[i].MAX);
	}

}
int main()
{
	struct Person stu[Max];
	int i=0;
	//录入
	for(i=0;i<Max;i++)
	{
		scanf("%s%d%lf%lf%lf",stu[i].Name,&stu[i].id,&stu[i].C,&stu[i].M,&stu[i].E);
	}
	findPerson(stu);
	Sort(stu);
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值