西安石油大学C++上机实验 上机一:类与对象程序设计(2学时)

上机一:类与对象程序设计(2学时)

上机目的

  1. 掌握声明类的方法。
  2. 掌握类和类的成员的概念以及定义对象的方法。
  3. 掌握构造函数和析构函数的使用方法

实验目的

掌握声明类的方法,类和类的成员的概念以及定义对象的方法。

掌握用类和对象编制基本对象的程序的方法。

掌握构造函数和析构函数的使用方法。

上机内容

1.进行类的设计和使用,练习构造函数的重载和析构函数的使用方法;练
习具有不同访问权限的成员的访问方式;

2.测试章节例题,完成教材 P101:3.34,3.35。

题目 1:编写一个基本账户类,成员变量包括:账号,储户姓名,和存款余
额,成员函数包括:存款和取款。编写一个测试程序进行测试。

题目 2:设计一个长方形类,成员变量包括长度和宽度,成员函数除包括计
算周长和计算面积外,还包括用 Set 方法设置长和宽,以及用 get 方法来获取长
方形的长和宽。

实验内容

P101:3.34, 3.35

题目 1:编写一个基本账户类,成员变量包括:账号,储户姓名,和存款余额,成员函数包括:存款和取款。编写一个测试程序进行测试。

思路:

编辑头文件。在弹出的 Account.h 头文件中添加 Account 类的代码。如图
1-5 所示。详细代码如下:

步骤 a:声明程序设计所需要包含的头文件:
#include <iostream.h>
#include <string.h>

步骤 b:根据题目要求:定义账户类:Account 类:
class Account
{
    
    
……
7
8
};

步骤 c:在 Account 类中定义成员变量:
private:
long accountNo; //账户
char name[30]; //储户姓名
float money; //账户余额

步骤 d:定义成员函数:
构造函数:
(这些都是在account中的东西(变量))
Account(long a,char *n,float b): accountNo(a),money(b){
    
    
 strcpy(name,n);
}

析构函数:
~Account(){
    
    }

存款成员函数:
void Add(const float x){
    
    
money=money+x;
}

取款成员函数:
void Sub(const float x){
    
    
money=money-x;
}

输出成员函数:
void Print(void)const{
    
    
cout<<"姓名:"<<name<<endl;
cout<<"账户:"<<accountNo<<endl;
cout<<"余额:"<<money<<endl;
}

4)添加源文件代码。在 Account.cpp 文件中添加主程序代码,详细代码如下:

a:测试主程序详解:

#include "Account.h" //包含 Account.h 头文件(此时应该注意“”这个符号应该出现在知道头文件位置的地方当不确定Account在何处时会报错)
void main()
{
    
    
//一个萝卜一个坑,对定义的对象类进行赋值初始化定义

Account a1(1000000,"阿斌",100); //定义对象,对象名为 a1,其账号为 1000000,储户姓名为阿斌,账户余额为 100 元

Account a2(1000001,"阿豪",100); //定义对象,对象名为 a2,其账号为 1000001,储户姓名为阿豪,账户余额为 100 元

cout<<"名为阿斌的用户向账户存款 50 元"<<endl;


//此时程序的意思就是对构造的a1对象进行Add函数操作

a1.Add(50); //对象 a1 调用 Add 存款成员函数向账户存款 50 元

//此时程序的意思就是对构造的a1对象进行Print函数操作
a1.Print(); //对象 a1 调用 Print 成员函数输出显式账号、姓名、余额
cout<<endl; //换行

 cout<<"名为阿豪的用户从账户取款款 50 元"<<endl;

a2.Sub(50); //对象 a2 调用 Sub 取款成员函数从账户取款 50 元

a2.Print(); //对象 a2 调用 Print 成员函数输出显式账号、姓名、余额
}

完整源码


#include<iostream>
#include<string>
using namespace std;

class zhanghu {
    
    
public:
	std::string name;
	long int ZH;
	int CKYE;
	zhanghu(){
    
    }	
	zhanghu(string _name, long int y = 12345678, int z = 100) {
    
    
		name = _name;
		ZH = y;
		CKYE = z;
	}
	int CK(int a) {
    
    
		CKYE += a;
		return CKYE;
	}
	int QK(int b) {
    
    
		CKYE -= b;
		return CKYE;
	}
	~zhanghu()
	{
    
    }
};

int main() {
    
    
	int n, o, p;
	zhanghu m("chenbochao", 12345678, 100);
	cout << "您的姓名是" << m.name << endl << "账号是" << m.ZH << endl << "余额是" << m.CKYE << endl;
	cout << "--------------------------" << endl;
	cout << "请输入操作" << endl <<"1存款" << endl << "2取款" << endl;
	cout << "--------------------------" << endl;
	while (scanf("%d", &n) != EOF) {
    
    
		if (n == 1) {
    
    
			cout << "请输入存款金额:" << endl;
			cin >> o;
			cout << "--------------------------" << endl;
			m.CK(o);
			cout << "您的姓名是" << m.name << endl << "账号是" << m.ZH << endl << "余额是" << m.CKYE << endl;
			cout << "--------------------------" << endl;
		}
		if (n == 2) {
    
    
			cout << "请输入取款金额:" << endl;
			cin >> p;
			cout << "--------------------------" << endl;
			m.QK(p);
			cout << "您的姓名是" << m.name << endl << "账号是" << m.ZH << endl << "余额是" << m.CKYE << endl;
			cout << "--------------------------" << endl;
		}
	}
	return 0;
}

题目 2:设计一个长方形类,成员变量包括长度和宽度,成员函数除包括计算周长和计算面积外,还包括用 Set 方法设置长和宽,以及用 get 方法来获取长

方形的长和宽

1)创建头文件。在工程主界面左上角点击 File 菜单,在弹出的 New 对话框
中选择 C/C++ Header File 选项,新建头文件命名为 Rectangle.h。用来设计长方形类。

2)编辑头文件。在弹出的 Rectangle.h 头文件中添加 Rectangle 类的代码。


步骤 a:声明程序设计所需要包含的头文件:

#include <iostream.h>

步骤 b:根据题目要求:定义长方形类:Rectangle 类:

class Rectangle
{
    
    
……
};

步骤 c:在 Rectangle 类中定义成员变量:

private:
float length; //长
float width; //宽

步骤 d:定义成员函数:
构造函数:
Rectangle(float len = 1, float wid = 1):length(len), width(wid){
    
    }

析构函数:

~ Rectangle (){
    
    }

//定义函数功能
计算长方形周长的成员函数:

float Perimeter(){
    
    
return 2*(length + width);
}

计算长方形面积的成员函数:
double Area() {
    
    
return length*width;
}

设置长方形长的成员函数:
void SetLength(float len)
{
    
    
length = len; 
}

设置长方形宽的成员函数
void SetWidth(float wid)
{
    
    
width = wid;
}

获取长方形长的成员函数

float GetLength()
{
    
    
return length;
}
获取长方形宽的成员函数

float GetWidth()
{
    
    
return width;
}

步骤 e:程序编写示例
3)创建源文件。在工程主界面左上角点击 File 菜单,在弹出的 New 对话框
中选择 C++Source File 选项,新建头文件命名为 Rectangletest.cpp。用来测试长
方形类。


4)编辑源文件。在弹出的 Rectangletest.cpp 头文件中添加测试主程序代码。
a.详细代码:
#include "Rectangle.h" //包含 Rectangle.h 头文件
void main()
{
    
    
Rectangle Rec1, Rec2(10, 10);
cout<<"长:"<<Rec1.GetLength()<<" 宽:"<<Rec1.GetWidth()<<endl;
cout<<"周长:"<<Rec1.Perimeter()<<" 面积:"<<Rec1.Area()<<endl<<endl;
Rec1.SetLength(5);
Rec1.SetWidth(8);
cout<<"长:"<<Rec1.GetLength()<<" 宽:"<<Rec1.GetWidth()<<endl;
cout<<"周长:"<<Rec1.Perimeter()<<" 面积:"<<Rec1.Area()<<endl<<endl;
cout<<"长:"<<Rec2.GetLength()<<" 宽:"<<Rec2.GetWidth()<<endl;
cout<<"周长:"<<Rec2.Perimeter()<<" 面积:"<<Rec2.Area()<<endl<<endl;
}
#include<iostream>
using namespace std;

class CF {
    
    //定义CF类
public:
	int C;
	int K;
	CF()
	{
    
    }
	//定义函数功能
	void set(){
    
    
		cout << "请输入长度" << endl;
		cin >> C;
		getchar();
		cout << "请输入宽度" << endl;
		cin >> K;
	}
	void get() {
    
    
		cout << "长度为:" << C << endl;
		cout << "宽度为:" << K << endl;
	}
	int ZC() {
    
    
		int c;
		c = 2 * (C + K);
		return c;
	}
	int MJ() {
    
    
		int c;
		c = C * K;
		return c;
	}
	~CF()
	{
    
    }
};


int main() {
    
    
	int a;
	int c, d;
	CF m;
	m.set();
	cout << "--------------------------" << endl;
	m.get();
	cout << "--------------------------" << endl;
	cout << "请选择操作:" << endl << "1:求周长" << endl << "2:求面积" << endl;
	cout << "--------------------------" << endl;
	while (scanf("%d", &a) != EOF) {
    
    
		if (a == 1) {
    
    
			cout << "周长是" << m.ZC() << endl;
		}
		else if (a == 2) {
    
    
			cout << "面积是" << m.MJ() << endl;
		}
	}
	return 0;
}

思考题

分析总结上述程序设计实现的不足之处,如账户类中当取款金额大于账户原
有余额时,应如何操作?如长方形类结果输出采用函数调用方式是否更为方便?
如若要实现两个长方形对象的面积加和时又该如何进行程序设计?请针对程序
中的不足之处进行完善修改,并思考如何进行功能拓展。

猜你喜欢

转载自blog.csdn.net/shaozheng0503/article/details/130015889