1.为复习题5描述的类提供方法定义,并编写一个小程序来演示所有的特性。
复习题5:定义一个类来表示银行帐户。数据成员包括储户姓名、账号(使用字符串)和存款。成员函数执行如下操作:
● 创建一个对象并将其初始化;
● 显示储户姓名、账号和存款;
● 存入参数指定的存款;
● 取出参数指定的款项。
//bank.h:定义类成员及函数
#ifndef BANK_H_
#define BANK_H_
#include <string>
using namespace std;
class BankAccount
{
public:
BankAccount();//默认构造函数
BankAccount(const char* str, string id, int ban);//自定义的重载构造函数
~BankAccount();//析构函数
void showinfo() const;
void deposit(const int num1);
void withdraw(const int num2);
private:
string name;
string id;
double banlance;
};
#endif // !BANK_H_
//bank.cpp:定义类中的函数
#include <iostream>
#include "bank.h"
BankAccount::BankAccount()
{
name = "Unknown user";
id = "00000000000";
banlance = 0;
}
BankAccount::BankAccount(const char* str,string acc,int ban)
{
name = str;
banlance = ban;
id = acc;
}
BankAccount::~BankAccount()
{
}
void BankAccount::showinfo() const
{
cout << "The infomation below is about the account:\n";
cout << "User: " << name << endl;
cout << "ID: " << id << endl;
cout << "Banlance: " << banlance << endl;
}
void BankAccount::deposit(const int num1)
{
if (num1 > 0)
{
banlance += num1;
cout << "Deposit " << num1 << " yuan.\n";
}
else
cout << "Negative numbers are not allowed.\n";
}
void BankAccount::withdraw(const int num2)
{
if (num2 > banlance)
cout << "Cannot be greater than balance.\n";
else if (num2<banlance && num2 > 0)
{
banlance -= num2;
cout << "Withdraw " << num2<< " yuan.\n";
}
else
cout << "Negative numbers are not allowed.\n";
}
/* *************************************************
* 文件名:
* 创建人:px
* 创建时间:2020/4/5
* 描述:演示程序
************************************************* */
#include <iostream>
#include "bank.h"
int main()
{
BankAccount pep1;
BankAccount pep2=BankAccount("px","12345677888" ,200);
pep1.showinfo();
pep2.showinfo();
pep2.deposit(500);
pep2.withdraw(200);
pep2.showinfo();
return 0;
}
2.下面是一个非常简单的类定义:
#include <string>
using namespace std;
class Person
{
public:
Person() {
lname = "";fname [0]= '\0'; };
Person(const string& ln, const char* fn = "Heyyou");
~Person();
void Show() const;
void Formashow() const;
private:
static const int LIMIT = 25;
string lname;
char fname[LIMIT];
};
它使用了一个string对象和一个字符数组,让您能够比较它们的用法。请提供未定义的方法的代码,以完成这个类的实现。再编写一个使用这个类的程序,它使用了三种可能的构造函数调用(没有参数、一个参数和两个参数)以及两种显示方法。下面是一个使用这些构造函数和方法的例子:
int main()
{
Person one;
Person two("Smythecraft");
Person three("Dimwiddy", "Sam");
one.Show();
cout << endl;
one.Formashow();
}
//person.h
#ifndef PERSON_H_
#define PERSON_H_
#include <string>
using namespace std;
class Person
{
public:
Person() {
lname = "";fname [0]= '\0'; };
Person(const string& ln, const char* fn = "Heyyou");
~Person();
void Show() const;
void Formashow() const;
private:
static const int LIMIT = 25;
string lname;
char fname[LIMIT];
};
#endif // !PERSON_H_
//person.cpp
#include <iostream>
#include <cstring>
#include "person.h"
Person::Person(const string& ln, const char* fn)
{
lname = ln;
int count = 0;
strcpy_s(fname, fn);
}