学生成绩管理
·难度系数: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;
}