实验课题目2

l 二 、设计一个 Student (学生)类,完成如下要求:
Ø 该类具有姓名、学号、程序设计、信号处理、数据结构三门课程的成绩
Ø 学生全部信息由键盘输入
Ø 通过成员函数统计学生平均成绩。注意:当课程数量增加时,成员函数无需修改仍可求取平均成绩
Ø 输出学生的各科成绩与平均成绩
Ø 要求使用到静态成员和静态成员函数,即设计 2 个静态变量分别来统计学生的总数,不及格学生的总数,设计一个静态成员函数来访问这些静态成员变量并且打印输出。
Ø 学生对象的定义采用对象数组实现
Ø 使用 const 定义常量,便于实现对课程数量和学生人数的修改。
Ø 输出时注意对齐,整齐美观
Student.h

#ifndef STUDENT_H
#define STUDENT_H
/*
 * 姓名 学号 分数
 * 信 息 由 键 盘 输 入
 * 输出各科成绩与平均成绩 
 * static: 学生总数, 不及格学生数
 * 分数: 程序设计, 信号处理, 数据结构
 * 求平均成绩( avg_score )课程增加时成员函数无需修改仍可以求平均成绩
 */
#include <iostream>
#include <string>
const int N = 3;
#define MESSAGE "程序设计 信号处理 数据结构的成绩依次为: " 
class Student {
public:
	//默认构造函数 
	Student();
	//输出总人数和不及格人数
	static void fail();
	//求平均成绩
	double avg_score() const;
	//输入各科成绩与平均成绩 
	std::istream& getIn(std::istream& in);
	//输出各科成绩与平时成绩
	std::ostream& getOut(std::ostream& out);
	//获得总人数
	static int Student::getTotal();
private:
	std::string name;      //姓名
	long long number;      //学号
	double score[N];       //成绩
	static int total_num;  //学生总数
	static int fail_num;   //不及格学生数
};

//默认构造函数
inline Student::Student() :number(0){
	for (int ix = 0; ix != N; ++ix){
		score[ix] = 0.0;
	}
}
#endif
Student.cpp

#include "Student.h"

//输出总人数和不及格人数
void Student::fail()
{
	std::cout << "the total number is:\t" << total_num << std::endl;
	std::cout << "the fail number is:\t" << fail_num << std::endl;
}
//求平均成绩 
double Student::avg_score() const
{
	double total_score = 0.0;
	int ix;
	for (ix = 0; ix != N; ++ix){
		total_score += score[ix];
	}
	return total_score / ix;
}
//输入各科成绩与平均成绩 
std::istream& Student::getIn(std::istream &in)
{
	++total_num;
	std::cout << "输入该学生姓名: ";
	in >> name;
	std::cout << "输入该学生学号: ";
	in >> number;
	std::cout << MESSAGE;
	for (int ix = 0; ix != N; ++ix){
		in >> score[ix];
	}
	if (avg_score() < 60.0)
		++fail_num;
	return in;
}
//输出各科成绩与平均成绩
std::ostream& Student::getOut(std::ostream& out)
{
	out << "学生姓名: " << name << "\t 学号: " << number << std::endl;
	out << MESSAGE;
	for (int ix = 0; ix != N; ++ix){
		out << " " << score[ix];
	}
	out << std::endl;
	out << "平均成绩为: " << avg_score() << std::endl;
	return out;
}
//获得总人数
int Student::getTotal()
{
	return total_num;
}

int Student::total_num = 0;
int Student::fail_num = 0;
#include <iostream>
#include <string>
#include "Student.h"
using namespace std;
const int Num = 6;
int main()
{
	Student st1[Num];
	for (int ix = 0; ix != Num; ++ix){
		st1[ix].getIn(cin);
	}
	cout << endl;
	for (int ix = 0; ix != Num; ++ix){
		st1[ix].getOut(cout);
		cout << endl;
	}
	Student::fail();
	system("pause");
	return 0;
}

one
12301
70 60 85.5
two
12302
80 60 40
three
12303
50 20 60
four
12304
70 90.2 10
five
12305
70 50 70
six
12306
80 40.7 20




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值