题目:
设计一个类 Cstudent,类中包含一个学生的基本数据如下:
编号,姓名,性别,年龄,数学成绩,计算机成绩,外语成绩。
并假设编号为整数,且从 1 号往后连续编号;姓名为字符串,性别为字符。如:
1 LiPing m 18 89 98 94
请采用 binary 文件形式,并使用随机读写处理方式,对自定义 CStudent 类的对象数据进行
储存与读写处理(即是说,总按具有连续编号 num 为“序”来对文件中的各对象数据进行随
机读写处理)。并设计该类的成员函数,而且对输出运算符“<<”进行重载,使该运算符能
够完成将一个学生的信息输出到屏幕上。要求成员函数完成以下功能:
(1) 从键盘输入一个学生的有关信息,并将它们存入到数据文件中(按编号来确定写出
位置)。
(2) 按编号对学生信息进行检索并将检索结果显示在屏幕上。
(3) 按姓名对学生信息进行检索并将检索结果显示在屏幕上。
(4) 计算某编号学生的总成绩与平均成绩。
(5) 列出所有总成绩超过 n 分的性别为 s 同学的有关信息(n,s 由用户从键盘输入)。
编程如下:
#include<iostream.h>
#include<string.h>
#include<fstream.h>
#include<stdlib.h> //使用 exit 函数
class CStudent
{
private:
int number;
char name[20],sex;
double age,math,computer,English;
public:
CStudent() {}
CStudent(int num,char n[20],char se,double ag,double ma,double com,double Eng)
{
strcpy(name,n);number=num;sex=se;age=ag;math=ma;computer=com;English=Eng;
}
friend ostream& operator<<(ostream&,CStudent&);
friend void main(); //将 main 函数定义为友元函数,能够调用类中的私有数据成员
};
ostream& operator<<(ostream& output,CStudent& a) //"<<"运算符重载
{
output<<"编号:"<<a.number<<endl;
output<<"姓名:"<<a.name<<endl;
output<<"性别:"<<a.sex<<endl;
output<<"年龄:"<<a.age<<endl;
output<<"数学成绩:"<<a.math<<endl;
output<<"计算机成绩:"<<a.computer<<endl;
评论13