我希望只需要输入一遍课程名称

学生成绩管理

·难度系数:1.08

设计一个Student(学生)类,并使Student类具有以下特点:

(1)该类具有学生姓名、学号、程序设计、信号处理、数据结构三门课程的成绩。

(2)学生全部信息由键盘输入,以提高程序的适应性。

(3)通过成员函数统计学生平均成绩,当课程数量增加时,成员函数无需修改仍可求取平均成绩。

(4)输出学生各科成绩与平均成绩。

(5)学生对象的定义采用对象数组实现。

(6)统计不及格人数。

(7)表格输出整齐美观。

(8)以最方便的方式实现对课程数量和学生数量的修改。

 

 

#include<iostream>
using namespace std;
const int COURSE_NUM = 3;//课程数量     课程数量发生变化可直接修改此处
const int STUDENT_NUM = 2;//学生数量     学生数量发生变化可直接修改此处
class student //类名:学生
{
	public:
	void input();//输入函数
	void output();//输出函数
	void output1();//输出平均数函数
	private:
	char name[20];//姓名
	char number[20];//学号
	char coursename[COURSE_NUM][20];//课程名称
	float marks[COURSE_NUM];//分数
};
void student::input()
{
	int i;
	cout << "请输入姓名:";
	cin >> name;
	cout << "请输入学号:";
	cin >> number;
	for (i = 0; i < COURSE_NUM; i++)
	{
		cout << "请输入第 " << i + 1 << " 门课程名:";
		cin >> coursename[i];
		cout << "请输入 " <<coursename[i] << " 成绩:";
		cin >> marks[i];
	}
}
void student::output()
{
	int i;
	float ave = 0;
	cout << "-----------------------------------------" << endl;
	cout << "姓名:" << name <<"\t"<< "学号:" << number << "\t"<<endl;
	for (i = 0; i < COURSE_NUM; i++)
	{
		cout << "-----------------------------------------" << endl;
		cout <<"\t"<< coursename[i] << ":" << marks[i] <<"\t"<< endl;
		ave += marks[i];
	}
	ave /= COURSE_NUM;//课程数量改变此处不必修改
	cout << "-----------------------------------------" << endl;
	cout <<"\t"<< "平均成绩:" << ave <<"\t"<< endl;
}



void student::output1()
{
	int i ,n,j=0,k=0;
	for (i = 0; i < STUDENT_NUM; i++)
	{
		for(n = 0; n< COURSE_NUM; n++)
		{
			if(marks[n]<60)
			j=1;
		}
		if(j==1)
		k=k+1;
	}
	cout << "-----------------------------------------" << endl;
	cout << "不及格人数为:" << k <<"\t"<< endl;
	cout << "-----------------------------------------" << endl;
}



int main()
{
	student stu[STUDENT_NUM];
	int i;
	for (i = 0; i < STUDENT_NUM; i++)
	{
		stu[i].input();
	}
	for (i = 0; i < STUDENT_NUM; i++)
	{
		stu[i].output();
	}
	stu[i].output1();
	return 0;
}

我的程序每个学生都要输入课程名称,太繁琐了,尝试过加一个成员函数,但运行失败。

还有我的统计不及格人数的函数也有问题,

来个大佬指导一下 

求求

你的意思是不是所有学生学的课程都是一样的呢?

不及格统计函数中,第一层循环内先要将j赋值为0,不然前一个人不及格将j=1后,后面j的状态不能恢复,所有人都不及格了

运行结果

int i ,n,j=0,k=0;
	for (i = 0; i < STUDENT_NUM; i++)
	{
		for(n = 0; n< COURSE_NUM; n++)
		{
            k=i*n+n;
			if(marks[k]<60)
			j++;
		}
	}
	cout << "-----------------------------------------" << endl;
	cout << "不及格人数为:" << j <<"\t"<< endl;
	cout << "-----------------------------------------" << endl;

试试 我没编译过 

另表格输出小白也不会。。。。。。

yszkg  大哥看看

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

#include<iostream>
using namespace std;
const int COURSE_NUM = 3;//课程数量     课程数量发生变化可直接修改此处
const int STUDENT_NUM = 2;//学生数量     学生数量发生变化可直接修改此处
class student //类名:学生
{
    public:
    void input();//输入函数
    void output();//输出函数
    int output1();//输出平均数函数
    private:
    char name[20];//姓名
    char number[20];//学号
    char coursename[COURSE_NUM][20];//课程名称
    float marks[COURSE_NUM];//分数
};
void student::input()
{
    int i;
    cout << "请输入姓名:";
    cin >> name;
    cout << "请输入学号:";
    cin >> number;
    for (i = 0; i < COURSE_NUM; i++)
    {
        cout << "请输入第 " << i + 1 << " 门课程名:";
        cin >> coursename[i];
        cout << "请输入 " <<coursename[i] << " 成绩:";
        cin >> marks[i];
    }
}
void student::output()
{
    int i;
    float ave = 0;
    cout << "-----------------------------------------" << endl;
    cout << "姓名:" << name <<"\t"<< "学号:" << number << "\t"<<endl;
    for (i = 0; i < COURSE_NUM; i++)
    {
        cout << "-----------------------------------------" << endl;
        cout <<"\t"<< coursename[i] << ":" << marks[i] <<"\t"<< endl;
        ave += marks[i];
    }
    ave /= COURSE_NUM;//课程数量改变此处不必修改
    cout << "-----------------------------------------" << endl;
    cout <<"\t"<< "平均成绩:" << ave <<"\t"<< endl;
}
 
int student::output1()
{
    int k=0;
    for (int i = 0; i < COURSE_NUM; i++)
    {
        if(marks[i]<60)
            k++;
    }
    return k;
    
}
 
int main()
{
    student stu[STUDENT_NUM];
    int i,j=0;
    for (i = 0; i < STUDENT_NUM; i++)
    {
        stu[i].input();
    }
    for (i = 0; i < STUDENT_NUM; i++)
    {
        stu[i].output();
    }
    for (i = 0; i < STUDENT_NUM; i++)
    {
        j=j+stu[i].output1();
    }
    cout << "-----------------------------------------" << endl;
    cout << "不及格人数为:" << j <<"\t"<< endl;
    cout << "-----------------------------------------" << endl;
    return 0;
}