广东金融学院实验报告
课程名称:C++程序设计
实验编号 及实验名称 姓 名 实验地点 指导教师 实验6 类和对象练习 系 别 班 级 实验时数 成 绩 参考答案 学 号 实验日期 同组其他成员 新电403 2011-10-27 6 曲政 无 一、 实验目的及要求 1. 学习面向对象设计的基本概念:模块分解的思路、类、函数、对象等的概念和编程。 2. 实践简单类的设计,包括数据抽象、成员函数的编写、封装、重载、静态成员等,并应用这些类完成给定的计算任务。 二、 实验环境及相关情况(包含使用软件、实验设备、主要仪器及材料等) 硬件设备:联网的个人计算机 操作系统:Windows XP 编译系统:Visual Studio 2005 三、 实验内容及步骤(包含简要的实验步骤流程) 1. 关于控制结构的知识点和例题 (略) 2. 控制结构编程练习 ⑴ 设计一个圆(Circle)类,包含计算其周长(perimeter)和面积(area)两项功能。编写测试程序,输入半径(radius),打印出类似“半径为1的圆,周长为6.2832,面积为3.1416”的信息。 ⑵ 设计一个时间类MyTime,封装6个整型变量分别表示年(year)、月(month)、日(day)、时(hour)、分(minute)、秒(second)。仿照本课件例3.2取得当前系统时间,以1秒为间隔滚动显示。 ⑶ PointLine类 设计一个平面数据点类Point,封装double型坐标(x, y),并提供必要的入口和出口。 设计一个直线类Line,封装2个数据点对象,并提供必要的入口和出口。 设计主函数,从起点(0, 0)开始到终点(π, 0)结束,以横坐标π/20为步长,以端点坐标对形式输出一条正弦曲线(通过在格式符的字段序号后加“:fn”来控制小数位数,如{0:f4}): ⑷ Student类 设计一个学生类Student,包括学号ID、姓名name、平时成绩usual、考试成绩exam和总评成绩mark(以String保存学号和姓名、以double保存成绩数据),以及一个静态整型成员变量counter(保存学生人数)和一个静态浮点成员变量sum(保存总评成绩总和)。编写属性函数代替来入口和出口,并编写一个计算总评成绩的函数calcMark(按平时成绩占40%、考试成绩占60%的比例计算总评成绩)和一个分数累积函数sumMark。编写测试程序,仿照给定的演示程序StudentIO.cpp从给定的文本文件读入原始数据、计算总评成绩、以列表的方式输出原始数据和计算结果。最后计算总评平均成绩,并与学生人数一同输出到屏幕上。 第 1 页 共 10 页
四、 实验结果(源程序) (1) #include %using namespace System; ref class Circle { private: }; int main(array
(2) #include %using namespace System; ref class MyDateTime { private: int m_year, m_month, m_day, m_hour, m_minute, m_second; public: MyDateTime(int year, int month, int day, int hour, int minute, int second) { }; } int getYear() { return m_year; } int getMonth() { return m_month; } int getDay() { return m_day; } int getHour() { return m_hour; } int getMinute() { return m_minute; } int getSecond() { return m_second; } bool Update() { } DateTime dt = DateTime::Now; if (dt.Second != m_second) { } return false; m_year = dt.Year; m_month = dt.Month; m_day = dt.Day; m_hour = dt.Hour; m_minute = dt.Minute; m_second = dt.Second; return true; m_year = year; m_month = month; m_day = day; m_hour = hour; m_minute = minute; m_second = second; 第 3 页 共 10 页
int main(array
(3) #include %using namespace System; value class Point { private: }; ref class Line { private: }; Point m_p0, m_p1; Line(Point p0, Point p1): m_p0(p0), m_p1(p1) {} Line() {} ~Line() {} Line(Line% line) { m_p0 = line.m_p0; m_p1 = line.m_p1; } Line% operator=(Line% line) { m_p0 = line.m_p0; m_p1 = line.m_p1; return *this; } property Point P0 { } property Point P1 { } void setLine(Point p0, Point p1) { m_p0 = p0; m_p1 = p1; } Point getP0() { return m_p0; } Point getP1() { return m_p1; } void set(Point p1) { m_p1 = p1; } Point get() { return m_p1; } void set(Point p0) { m_p0 = p0; } Point get() { return m_p0; } public: double m_x, m_y; Point(double x, double y) { m_x = x; m_y = y; } property double X { } property double Y { } void setPoint(double x, double y) { m_x = x; m_y = y; } double getX() { return m_x; } double getY() { return m_y; } void set(double y) { m_y = y; } double get() { return m_y; } void set(double x) { m_x = x; } double get() { return m_x; } public: 第 5 页 共 10 页