天津理工大学C++期末考试(2)

2019-04-09 17:56

6.

定义一个学生类CStudent实现简单的学籍管理功能,要求该类至少实现以下功能:

(1) 录入学生的基本信息(包括姓名,学号,性别,年龄,专业,入学时间,各门功课成绩) (2) 输出学生的基本信息

(3) 选课(输入时间和所选的课程) (4) 统计每门课的学分绩点 (5) 统计每学期的平均学分绩点 (6) 统计重考科目 (7) 统计重修科目 #include #include using namespace std; const MAX=4; class CStudent{ string name,sex,ID,object,jtime;//分别存储姓名 性别 学号 专业 入学时间 int age; //存储年龄 int mark[MAX]; //设立一个数组存放成绩 string sbj[MAX]; //设立string数组来存放科目名称 int retry,redo; //统计重考重修数量 string t_chose,s_chose; //存放选课时间和选课名称 int m_point[MAX],m_mark[MAX]; //存放每门功课的学分和绩点 int marker[MAX]; //存放重修科目的角标(有时不止挂掉一科 可能会很多 所以声明称数组) int marker2[MAX]; //存放重修科目角标 public: CStudent()

为什么建立数据时使用的数组? {

通过对角标的控制 便可以把一行数据全部对 cout<<\构造CStudent 开始录入基本信息\应起来 cout<<\

cout<<\

请看下面数据对应关系: cout<<\

角标 科目名称成绩学分 cout<<\

(sbj[i]) (mark[i]) (m_mark[i]) cout<<\

0 44 6 数学 cout<<\

1 92 6 C语言 cout<<\

2 72 4 英语 for(int i=0;i

便于统计也可以方便地调用出一门科目的 {

全部内容 cout<<\

cout<<\ } } void baseprint() //按(2)要求 输出基本信息 { cout<<\基本信息:\ cout<<\学生姓名:\学号:\年龄:\性别\ cout<<\入学时间:\专业:\ cout<<\成绩:\

6

for(int i=0;i

retry=0; for(i=0;i=60)score+=m_mark[i]; //成绩及格垒加学分 else {retry++;marker[j++]=i;} //否则不及格 便要重考 将重考数量自增 } //其中marker[j++]=i是将当时重修科目的角标记录下来 float s=0; for(i=0;i

7

for(int i=0;i

int main(void) { CStudent a; a.baseprint(); a.chose(); a.Point(); a.check(); return 0; }

注意:

(1)新设计的类中所需要的数据成员需要根据所要实现的功能自行设计;

(2)用一个演示程序完成对所设计的新类的功能测试,并给出测试数据和实验结果; (3)为增加程序可读性,请在程序中对类成员进行适当注释说明;

补充实验题:

(1)教材134页【3.33】-【3.36】

8

实验二

(2010-3-23)

实验名称:

复杂形式的对象。

实验目的:

(1)掌握对象数组、对象指针和string类的使用方法;

把对象想象成一种数据类型 比如整型 有整型数组吧(int a[10])自然也有对象数组 对象指针以以上类似 有时涉及到动态联编()

String类 不如说是string类型 类似于智能化的字符串数组

(2)掌握对象数组、对象指针和对象引用作为函数参数的使用方法;

主要看书 实际用的不多 注意对象数组初始化方法(书P77中上的说明)

(3)掌握类对象作为成员的使用方法;

了解就行

(4)掌握友元的概念和使用方法;

通常的,通过A对象想要访问B对象的私有成员是不可能的 而通过友元就可以做到 需要注意的是 友元函数虽然在类内声明 但是友元函数不是成员函数 独立于类外 所以类外定义是不能加作用域“::”

另外,由于使用的Visual C++6.0不是完全使用C++标准 编程时如果遇到 报错内容为一堆大写字母 且错误位置指向友元函数的话 把#include using namespace std;改为#include 还有!只有上述情况才可以把头文件加上“.h”,否则会导致部分功能不正常

(5)掌握静态数据成员和静态成员函数的使用方法;

例如:有Object类,拥有数据成员a,由Object类声明出的对象A、B、C,那么A、B、C都拥有各自的a,内存中也会分配出各自的内存空间A::a,B::a,C::a(共3个)。而如果将数据成员a声明为静态成员(static),那么A、B、C则共用一个内存空间a(只有1个)

最典型的例子是统计声明对象的数量 使用方法:

static 数据类型 数据成员名

由于不能直接对数据成员赋初值 所以静态数据成员初始化方法为: 数据类型 类名::静态数据成员名=

9

初值(注意:1.是类名,不是对象名;2.之前不要加static)

静态成员函数

静态成员函数属于整个类 而不是某个对象 所以调用方法为 类名::静态成员函数名(参数表) 其他参看书P103几点说明

练习项目

Time类的框架定义如下:

#include //Powered by Zuki & X.Duke class Time { public:

Time(int A=0,int B=0,int C=0) // 带默认参数的构造函数 { }

// set functions

void setTime(int a,int b,int c) { } { } {

for(;;) {

if(a>=60||a<0)

10

for(;;) { } hour=a;

if(a>=24||a<0) {

cout<<\小时输入错误 再来一次\cin>>a; }

else {break;}

cout<<\setHour(a); setMinute(b); setSecond(c);

// 设置hour, minute, second

hour=A; minute=B; second=C;

//声明Time类

}

// 设置second (确保数据在合理

{

cout<<\分钟输入错误 再来一次\cin>>a; }

else {break;} } minute=a;

void setSecond( int a) 范围)

{ }

for(;;) {

if(a>=60||a<0) {

cout<<\秒输入错误 再来一次\cin>>a; } else {break;} } second=a;

void setHour(int a)// 设置hour (确保数据在合理范围)

// get functions

int getHour()// 返回 hour

{ } { } { }

return second; return minute; return hour;

int getMinute()// 返回 minute

int getSecond()// 返回 second

void setMinute(int a) // 设置minute (确保数据在合理范围)

void printUniversal()// 按24小时格式输出时间:23:56:12


天津理工大学C++期末考试(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:复习题十答案及详细分析

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: