Universidade de Shenzhen Jiruan "Programação Orientada a Objetos" Experiência 11 Herança Múltipla

A. Estudantes de pós-graduação em meio período (herança múltipla)

descrição do tópico

1. Crie a seguinte estrutura de herança de classe:

1) Defina uma classe pessoal CPessoas, cujos atributos (tipo de proteção) são: nome, gênero, idade;

2) A classe aluno CStudent é derivada da classe CPeople, e os atributos são adicionados: número do aluno e nota de admissão;

3) A classe professor CTeacher é derivada da classe CPessoas, e são adicionados os atributos: título, departamento;

4) Das classes CStudent e CTacher, deriva a classe de pós-graduação em serviço CGradOnWork, agregando atributos: direção de pesquisa, tutor;

2. Defina os construtores das classes acima, a função de saída print e outras funções (se necessário).

3. Defina vários tipos de objetos na função principal e teste-os.

digitar

Linha 1: nome sexo idade

A segunda linha: pontuação do número do aluno

A terceira linha: departamento de trabalho

A quarta linha: tutor de direção de pesquisa

saída

A primeira linha: Pessoas:

A segunda linha e as linhas subseqüentes: Consulte a amostra para o formato

Exemplo de entrada 1

wang-li m 23
2012100365 92,5
assistente computador
robô zhao-jun

amostra de saída 1

Pessoas:
Nome: wang-li
Sexo: m
Idade: 23

Aluno:
Nome: wang-li
Sexo: m
Idade: 23
Nº: 2012100365
Pontuação: 92,5

Professor:
Nome: wang-li
Sexo: m
Idade: 23
Cargo: assistente
Departamento: informática

GradOnWork:
Nome: wang-li
Sexo: m
Idade: 23
Nº: 2012100365
Pontuação: 92,5
Posição: assistente
Departamento: computador
Direção: robô
Tutor: zhao-jun

código AC

#include<bits/stdc++.h>
using namespace std;

class CPeople {
    
    
protected:
	string name;
	string sex;
	int age;
public:
	CPeople(string n, string s, int a) :name(n), sex(s), age(a) {
    
    }
	void print() {
    
    
		cout << "People:" << endl;
		cout << "Name: " << name << endl;
		cout << "Sex: " << sex << endl;
		cout << "Age: " << age << endl;
		cout << endl;
	}
};

class CStudent :virtual public CPeople {
    
    
protected:
	string id;
	double grade;
public:
	CStudent(string n, string s, int a, string id, double g) :CPeople(n, s, a), id(id), grade(g) {
    
    }
	void print() {
    
    
		cout << "Student:" << endl;
		cout << "Name: " << name << endl;
		cout << "Sex: " << sex << endl;
		cout << "Age: " << age << endl;
		cout << "No.: " << id << endl;
		cout << "Score: " << grade << endl;
		cout << endl;
	}
};


class CTeacher :virtual public CPeople {
    
    
protected:
	string position, department;
public:
	CTeacher(string n, string s, int a, string p, string d) :CPeople(n, s, a), position(p), department(d) {
    
    }
	void print() {
    
    
		cout << "Teacher:" << endl;
		cout << "Name: " << name << endl;
		cout << "Sex: " << sex << endl;
		cout << "Age: " << age << endl;
		cout << "Position: " << position << endl;
		cout << "Department: " << department << endl;
		cout << endl;
	}
};


class CGradOnWork :public CStudent, public CTeacher {
    
    
protected:
	string direction, tutor;
public:
	CGradOnWork(string n, string s, int a, string id, double g, string p, string d, string dir, string tu) :
		CPeople(n, s, a),
		CStudent(n, s, a, id, g),
		CTeacher(n, s, a, p, d),
		direction(dir),
		tutor(tu)
	{
    
    

	}

	void print() {
    
    
		cout << "GradOnWork:" << endl;
		cout << "Name: " << name << endl;
		cout << "Sex: " << sex << endl;
		cout << "Age: " << age << endl;
		cout << "No.: " << id << endl;
		cout << "Score: " << grade << endl;
		cout << "Position: " << position << endl;
		cout << "Department: " << department << endl;
		cout << "Direction: " << direction << endl;
		cout << "Tutor: " << tutor << endl;
		cout << endl;
	}

};


int main() {
    
    
	string s1, s2;
	int s3;
	string s4;
	double s5;
	string s6, s7, s8, s9;
	cin >> s1 >> s2 >> s3 >> s4 >> s5 >> s6 >> s7 >> s8 >> s9;
	CPeople(s1, s2, s3).print();
	CStudent(s1, s2, s3, s4, s5).print();
	CTeacher(s1, s2, s3, s6, s7).print();
	CGradOnWork c(s1, s2, s3, s4, s5, s6, s7, s8, s9);
	c.print();
	return 0;
}

B. Veículos (herança múltipla)

descrição do tópico

1. Crie a seguinte estrutura de herança de classe:

1) Uma classe de carro CVehicle como uma classe base, tem membros de dados como max_speed, velocidade, peso e funções de membro como display()

2) A classe bicicleta CBicycle é derivada da classe CVehicle, e o atributo é adicionado: altura

3) A classe de carro CMotocar é derivada da classe CVehicle, e o atributo é adicionado: o número de assentos seat_num

4) A classe motocicleta CMotocycle é derivada de CBicycle e CMotocar

2. Defina os construtores das classes acima, a exibição da função de saída e outras funções (se necessário).

3. Defina vários tipos de objetos na função principal, teste-os e chame a função de exibição por meio dos objetos para gerar a saída.

digitar

Linha 1: Velocidade Máxima Velocidade Peso Linha 2: Altura Linha 3: Número de Assentos

saída

A primeira linha: Veículo: A segunda linha e as linhas subseqüentes: consulte a amostra para o formato

Exemplo de entrada 1

100 60 20
28
2

amostra de saída 1

Veículo:
max_speed:100
velocidade:60
peso:20

Bicicleta:
max_speed:100
velocidade:60
peso:20
altura:28

Motocar:
max_speed:100
speed:60
weight:20
seat_num:2

Motocicleta:
max_speed:100
speed:60
peso:20
height:28
seat_num:2

código AC

#include<bits/stdc++.h>
using namespace std;

class CVehicle {
    
    
protected:
	int max_speed, speed, weight;
public:
	CVehicle(int ms, int sp, int we) :max_speed(ms), speed(sp), weight(we) {
    
    }


	void display() {
    
    
		cout << "Vehicle:" << endl;
		cout << "max_speed:" << max_speed << endl;
		cout << "speed:" << speed << endl;
		cout << "weight:" << weight << endl;
		cout << endl;
	}
};

class CBicycle :virtual public CVehicle {
    
    
protected:
	int height;
public:
	CBicycle(int ms, int sp, int we, int h) :
		CVehicle(ms, sp, we),
		height(h) {
    
    }



	void display() {
    
    
		cout << "Bicycle:" << endl;
		cout << "max_speed:" << max_speed << endl;
		cout << "speed:" << speed << endl;
		cout << "weight:" << weight << endl;
		cout << "height:" << height << endl;
		cout << endl;
	}
};

class CMotocar :virtual public CVehicle {
    
    
protected:
	int seat_num;
public:
	CMotocar(int ms, int sp, int we, int sn) :
		CVehicle(ms, sp, we),
		seat_num(sn) {
    
    }

	void display() {
    
    
		cout << "Motocar:" << endl;
		cout << "max_speed:" << max_speed << endl;
		cout << "speed:" << speed << endl;
		cout << "weight:" << weight << endl;
		cout << "seat_num:" << seat_num << endl;
		cout << endl;
	}
};

class CMotocycle :public CBicycle, public CMotocar {
    
    
public:
	CMotocycle(int ms, int sp, int we, int h, int sn) :
		CVehicle(ms, sp, we),
		CBicycle(ms, sp, we, h),
		CMotocar(ms, sp, we, sn) {
    
    }

	void display() {
    
    
		cout << "Motocycle:" << endl;
		cout << "max_speed:" << max_speed << endl;
		cout << "speed:" << speed << endl;
		cout << "weight:" << weight << endl;
		cout << "height:" << height << endl;
		cout << "seat_num:" << seat_num << endl;
		cout << endl;
	}
};

int main() {
    
    
	int a, b, c, d, e;
	cin >> a >> b >> c >> d >> e;
	CVehicle(a, b, c).display();
	CBicycle(a, b, c, d).display();
	CMotocar(a, b, c, e).display();
	CMotocycle(a,b,c,d,e).display();

	return 0;
}

C. Cartão de crédito para viagens de negócios (herança múltipla)

descrição do tópico

Um site de viagens (supondo que Journey.com) e um banco lançam um cartão de marca conjunta para serviços de viagens abrangentes - Cartão de Crédito Journey, que tem as funções de um cartão de associado Journey e um cartão de crédito bancário.
O cartão de sócio da viagem tem o número do cartão de sócio (int) e os pontos de viagem (int) As encomendas são efetuadas através do cartão de sócio, acumulando pontos de viagem de acordo com o valor da encomenda.
Para cartões de crédito, há número do cartão (int), nome (string), valor (int), valor da fatura (float) e pontos do cartão de crédito (int). ------Por favor, preste atenção ao tipo de dados.
Valor de consumo do cartão de crédito m, se somando o valor da fatura existente ultrapassar o limite, nenhuma operação será realizada, caso contrário, o valor da fatura + m, e os pontos do cartão de crédito serão acumulados de acordo com o valor do consumo.
Reembolso do cartão de crédito m, valor da conta - m, pontos do cartão de crédito menos valor do reembolso.
Se você fizer um pedido no Journey.com com um cartão de crédito Journey, ganhará pontos em dobro para pontos Journey e pontos de cartão de crédito (ou seja, pontos Journey e pontos de cartão de crédito serão adicionados ao mesmo tempo).
Os cartões de crédito de viagem podem converter pontos de cartão de crédito em pontos de viagem de acordo com a proporção de pontos de viagem: pontos de cartão de crédito = 1:2.
A suposição inicial é que os pontos do cartão de crédito, os pontos de viagem e o valor da conta são 0.
De acordo com o conteúdo acima, defina a classe de cartão de associação de viagem e a classe de cartão de crédito, obtenha a classe de cartão de crédito de viagem das duas e defina os construtores e outras funções necessárias das três classes.
Gere um objeto Journey Credit Card, insira informações do cartão e chame as funções do membro do objeto para concluir operações como fazer um pedido no Journey.com, passar um cartão de crédito, reembolsar um cartão de crédito e converter pontos de cartão de crédito em pontos de itinerário.

digitar

A primeira linha: Digite o número do cartão de membro da viagem, o número do cartão de crédito, o nome, o valor, a
segunda linha: o número de testes n,
a terceira linha até a linha n+2, cada linha: o valor da operação ou pontos
om (pedido em Journey.com, valor do pedido m)
cm (consumo do cartão de crédito, valor do consumo m)
qm (reembolso do cartão de crédito, valor do reembolso m)
tm (troca de pontos, m pontos do cartão de crédito convertidos em pontos de viagem)

saída

Saída de todas as informações do cartão de crédito da viagem após a operação:
número da viagem, pontos da viagem,
número do cartão de crédito, nome, valor da fatura, pontos do cartão de crédito

Exemplo de entrada 1

1000 2002 lili 3000
4
o 212,5
c 300
q 117,4
t 200

amostra de saída 1

1000 312
2002 lili 395,1 195

código AC

#include<bits/stdc++.h>
using namespace std;

class Member {
    
    
protected:
	int id;
	int score;
public:
	Member(int i, int s = 0) :id(i), score(s) {
    
    }
	void display() {
    
    
		cout << id << " " << score << endl;
	}
};


class Credit {
    
    
protected:
	int id;
	string name;
	int balance;//额度
	float value;//账单金额
	int score;
public:
	Credit(int i, string n, int b) :
		id(i),
		name(n),
		balance(b),
		value(0),
		score(0) {
    
    }

	void display() {
    
    
		cout << id << " " << name << " " << value << " " << score << endl;
	}
};


class MyClass :
	public Member,
	public Credit
{
    
    
public:
	MyClass(int mid, int cid, string name, int ba) :
		Member(mid),
		Credit(cid, name, ba) {
    
    }

	void o() {
    
    
		float m;
		cin >> m;
		if (m + value > balance)
			return;
		value += m;
		Member::score += (int)m;
		Credit::score += (int)m;
	}

	void c() {
    
    
		float m;
		cin >> m;
		if (m + value > balance)
			return;
		value += m;
		Credit::score += (int)m;
	}

	void q() {
    
    
		float m;
		cin >> m;
		Credit::score -= (int)m;
		value -= m;
	}

	void t() {
    
    
		float m;
		cin >> m;
		Credit::score -= m;
		Member::score += m / 2.0;
	}

	void display() {
    
    
		Member::display();
		Credit::display();
	}

};


int main() {
    
    
	int s1, s2, s4;
	string s3;
	cin >> s1 >> s2 >> s3 >> s4;
	MyClass mm(s1, s2, s3, s4);
	int n;
	cin >> n;
	while (n--) {
    
    
		char c;
		cin >> c;
		switch (c)
		{
    
    
		case 'o':
			mm.o();
			break;
		case 'c':
			mm.c();
			break;
		case 'q':
			mm.q();
			break;
		case 't':
			mm.t();
		default:
			break;
		}
	}
	mm.display();
}

D. Schedule (herança múltipla + função amigo)

descrição do tópico

Já existe uma classe de data Date, incluindo três dados de membros protegidos ano, mês, dia;

Há outra classe de tempo Time, incluindo três horas de dados de membros protegidos, minuto, segundo e sistema de 12 horas;

Agora é necessário organizar a sequência de frente e verso de acordo com a data e hora do cronograma de entrada. Para isso, uma classe de cronograma Schedule é estabelecida com base na classe Date e na classe Time, incluindo os seguintes novos membros:

int ID; // ID do agendamento

Define a função friend bool before(const Schedule & s1, const Schedule & s2);// Julga se o horário do agendamento s1 é anterior ao agendamento s2.

Escreva a função principal, crie um objeto de cronograma de acordo com as informações de cronograma de entrada, descubra o cronograma que precisa ser organizado antes (quando a data e a hora forem iguais, gere o cronograma criado anteriormente) e emita as informações do objeto de cronograma .

digitar

A entrada de teste contém vários agendamentos e cada agendamento ocupa uma linha (ID do agendamento, data, agendamento, hora).

Quando 0 é lido, a entrada termina e o resultado correspondente não é emitido.

saída

programação mais recente

Exemplo de entrada 1

1 2019 6 27 8 0 1
2 2019 6 28 8 0 1
3 2020 1 1 8 0 0
0

amostra de saída 1

O horário urgente é o nº 1: 2019/06/27 08:00:01

código AC

#include<bits/stdc++.h>
using namespace std;

class Date {
    
    
protected:
	int year, month, day;
public:
	Date(int y,int m,int d) {
    
    
		year = y;
		month = m;
		day = d;
	}

	void print()const {
    
    
		cout << setfill('0') << setw(2) << year << "/" << setfill('0') << setw(2) << month << "/" << setfill('0') << setw(2) << day;
	}
};

class Time {
    
    
protected:
	int hour, minute, second;
public:
	Time(int h,int m,int s) {
    
    
		hour = h;
		minute = m;
		second = s;
	}

	

	void print()const {
    
    
		cout << setfill('0') << setw(2) << hour << ":" << setfill('0') << setw(2) << minute << ":" << setfill('0') << setw(2) << second;
	}
};


class Schedule :
	public Date,
	public Time
{
    
    
	int id;



public:
	Schedule(int id,int y,int m,int d,int h,int min,int s):
		Date(y,m,d),
		Time(h,min,s)
	{
    
    
		this->id = id;
	}

	void print()const {
    
    
		cout << "The urgent schedule is No." << id << ": ";
		Date::print();
		cout << " ";
		Time::print();
		cout << endl;
	}


	bool operator < (const Schedule& s) const {
    
    
		if (year != s.year)
			return year < s.year;
		if (month != s.month)
			return month < s.month;
		if (day != s.day)
			return day < s.day;
		if (hour != s.hour)
			return hour < s.hour;
		if (minute != s.minute)
			return minute < s.minute;
		if (second != s.second)
			return second < s.second;
	}

	friend bool before(const Schedule& s1,const Schedule& s2) {
    
    
		return s1 < s2;
	}
};



int main() {
    
    
	string s;
	set<Schedule>ss;
	while (getline(cin, s)) {
    
    
		if (s[0] == '0')
			break;
		istringstream fin(s);
		int a, b, c, d, e, f, g;
		fin >> a >> b >> c >> d >> e >> f >> g;
		Schedule sss(a, b, c, d, e, f, g);
		ss.insert(sss);
	}

	(*ss.begin()).print();
	return 0;
}

E. Cálculo da renda da conta do bebê (herança múltipla)

descrição do tópico

Definir uma classe CPeople, com dois membros de dados de número de identidade (id, char[20]) e nome (name, char[10]), derivar a classe CInternetUser e a classe CBankCustomer da classe CPeople e, em seguida, derivar de CInternetUser e CBankCustomer Herança múltipla deriva a classe CInternetBankCustomer.

A classe CInternetUser tem um atributo de senha de login (password, char[20]) e registro de registro (definir id, nome e senha), login de login (julgando se o id de entrada e a senha são iguais aos registrados pelo objeto) funções de membro .

A classe CBankCustomer possui os atributos balance (saldo, duplo) e abertura de conta openAccount (definir nome e id do cliente), depósito depósito, retirada retirada e construtor padrão.

A classe CInternetBankCustomer inclui 5 membros de dados, incluindo saldo, saldo do dia anterior, receita do dia atual, receita de 10.000 yuans hoje e receita de 10.000 yuans do dia anterior. os mesmos dos usuários da Internet, e o nome de usuário e id herdados de CBankCustomer devem ser os mesmos herdados de CInternetUser). Os objetos da classe CInternetBankCustomer não calculam rendimentos para depósitos no mesmo dia, podendo calcular apenas rendimentos a partir do dia seguinte, não havendo rendimentos para saques no mesmo dia.

Você pode testar e projetar os dados de entrada com referência à função principal conforme mostrado abaixo:

void main()
{ int t, no_of_days, i; char i_xm[20], i_id[20], i_mm[20], b_xm[20], b_id[20], ib_id[20], ib_mm[20]; dinheiro duplo, juros; char op_code;



//Digite o número de casos de teste t
cin >> t;
while (t–)
{ //Digite o nome de usuário, id e senha de login dos usuários da Internet quando eles se registrarem cin >> i_xm >> i_id >> i_mm;

//Digite o nome de usuário de abertura de conta bancária, id
cin >> b_xm >> b_id;

//Digite o id quando o internauta fizer login e a senha de login
cin >> ib_id >> ib_mm;

CInternetBankCustomer ib_user;

ib_user.registerUser(i_xm, i_id, i_mm);
ib_user.openAccount(b_xm, b_id);

if (ib_user.login(ib_id, ib_mm) == 0) //Login do usuário da Internet, se o id não corresponder à senha; e o nome e id da conta bancária forem diferentes do nome e id da conta da Internet { cout << " Senha ou ID
incorreto " < < endl; continue; }


//Digite o número de dias
cin >> no_of_days;
for (i=0; i < no_of_days; i++)
{ //Digite o código da operação, valor, renda diária de 10.000 yuan cin >> op_code >> dinheiro >> juros; switch (op_code) { case 'S': //Depósito do banco para a conta financeira da Internet case 's': if (ib_user.deposit(money) == 0) { cout << “Saldo bancário insuficiente” << endl; continue; } break ; case 'T': //Transferência de internet finance para conta bancária case 't': if (ib_user.withdraw(money) == 0) { cout << “Internet bank balance not enough” << endl ; continue; } break; case 'D': //Deposite diretamente na conta bancária case 'd': ib_user.CBankCustomer::deposit(money);























break;
case 'W': //Retirar diretamente da conta bancária
case 'w':
if (ib_user.CBankCustomer::withdraw(money) == 0)
{ cout << “Bank balance not enough” << endl ; } break; default: cout << “Illegal input” << endl; continue; } ib_user.setInterest(interest); ib_user.calculateProfit(); //Saída nome de usuário, id //Saída saldo bancário //Saída Saldo da conta financeira da Internet ib_user.print(); } } }
















digitar

Digite o número de instâncias do usuário

Digite o nome de usuário, id e senha de login do primeiro usuário da Internet ao se registrar

Digite o nome de usuário de abertura da conta bancária do primeiro usuário, id

Digite o id e a senha do primeiro usuário da Internet ao fazer login

Insira os primeiros dias de operação do usuário

Insira circularmente o valor do código de operação (S, T, D, W), a renda diária de 10.000 yuan
...

saída

Gera o primeiro nome de usuário, id
Gera o saldo bancário do primeiro usuário
Gera o primeiro saldo da conta financeira da Internet
...

Exemplo de entrada 1

2
zhangsan 1234567890 222222
zhangsan 1234567890
1234567890 222222
4
D 15000 0
s 8000 1,5
T 3000 1,55
w 2000 0
lisi 2014150000 abcdef
lisi 20141 50000
2014150000 123456

amostra de saída 1

Nome: zhangsan ID: 1234567890
Saldo bancário: 15000
Saldo bancário na Internet: 0

Nome: zhangsan ID: 1234567890
Saldo bancário: 7000
Saldo bancário na Internet: 8000

Nome: zhangsan ID: 1234567890
Saldo bancário: 10000
Saldo bancário na Internet: 5001.2

Nome: zhangsan ID: 1234567890
Saldo bancário: 8000
Saldo bancário na Internet: 5001.98

Senha ou ID incorreto

código AC

#include<bits/stdc++.h>
using namespace std;

class CPeople {
    
    
protected:
	string id, name;
public:
	CPeople() {
    
    }
	CPeople(string id, string name) :
		id(id),
		name(name)
	{
    
    }

};


class CInternetUser :
	virtual public CPeople
{
    
    
protected:
	string password;
public:
	CInternetUser() {
    
    }
	CInternetUser(string name, string id, string password) :
		CPeople(id, name),
		password(password)
	{
    
    }

	bool login(string id, string passward) {
    
    
		return this->id == id && this->password == passward;
	}

	void registerUser(string name, string id, string password) {
    
    
		this->name = name;
		this->id = id;
		this->password = password;
	}


};

class CBankCustomer :
	virtual public CPeople
{
    
    
protected:
	double balance;
public:
	CBankCustomer() {
    
    
		balance = 0;
	}
	CBankCustomer(string name, string id, double balance) :
		CPeople(name, id),
		balance(balance)
	{
    
    }

	void openAccount(string name, string id) {
    
    
		this->name = name;
		this->id = id;
	}


	void deposit(double v) {
    
    
		balance += v;
	}

	bool withdraw(double v) {
    
    
		//这里需要判断?
		if (v > balance)
			return false;
		balance -= v;
		return true;
	}

};


class CInternetBankCustomer :
	public CInternetUser,
	public CBankCustomer
{
    
    
	double _balance;
	double yesBalance;//前一日余额
	double profit;//当日收益
	double profitW;//今日万元收益
	double yesprofitW;//上一日万元收益
	double vain;
public:
	CInternetBankCustomer() {
    
    
		vain = profit = yesBalance = _balance = 0;
	}

	//设置万元收益
	void setInterest(double interest) {
    
    
		profitW = interest / 10000.0;
	}

	void calculateProfit() {
    
    
		profit = yesBalance * yesprofitW;
		_balance += profit;
	}


	void print() {
    
    
		cout << "Name: " << name << " ID: " << id << endl;
		cout << "Bank balance: " << balance << endl;
		cout << "Internet bank balance: " << _balance << endl;
		cout << endl;
		yesBalance = _balance;
		yesprofitW = profitW;
	}

	// 银行 -> 互联网
	bool deposit(double v) {
    
    
		if (v > balance)
			return false;
		balance -= v;
		_balance += v;
		return true;
	}

	//互联网 -> 银行
	bool withdraw(double v) {
    
    
		if (v > _balance)
			return false;
		_balance -= v;
		balance += v;
		return true;
	}


};

int main()
{
    
    
	int t, no_of_days, i;
	string i_xm, i_id, i_mm, b_xm, b_id, ib_id, ib_mm;
	double money, interest;
	char op_code;

	//输入测试案例数t
	cin >> t;
	while (t--)
	{
    
    
		//输入互联网用户注册时的用户名,id,登陆密码
		cin >> i_xm >> i_id >> i_mm;

		//输入银行开户用户名,id
		cin >> b_xm >> b_id;

		//输入互联网用户登陆时的id,登陆密码
		cin >> ib_id >> ib_mm;

		CInternetBankCustomer ib_user;

		ib_user.registerUser(i_xm, i_id, i_mm);
		ib_user.openAccount(b_xm, b_id);

		if (ib_user.login(ib_id, ib_mm) == 0)  //互联网用户登陆,若id与密码不符;以及银行开户姓名和id与互联网开户姓名和id不同
		{
    
    
			cout << "Password or ID incorrect" << endl;
			continue;
		}

		//输入天数
		cin >> no_of_days;
		for (i = 0; i < no_of_days; i++)
		{
    
    
			//输入操作代码, 金额, 当日万元收益
			cin >> op_code >> money >> interest;
			switch (op_code)
			{
    
    
			case 'S':  //从银行向互联网金融帐户存入
			case 's':
				if (ib_user.deposit(money) == 0)
				{
    
    
					cout << "Bank balance not enough" << endl;
					continue;
				}
				break;
			case 'T':  //从互联网金融转入银行帐户
			case 't':
				if (ib_user.withdraw(money) == 0)
				{
    
    
					cout << "Internet bank balance not enough" << endl;
					continue;
				}
				break;
			case 'D':  //直接向银行帐户存款
			case 'd':
				ib_user.CBankCustomer::deposit(money);
				break;
			case 'W':  //直接从银行帐户取款
			case 'w':
				if (ib_user.CBankCustomer::withdraw(money) == 0)
				{
    
    
					cout << "Bank balance not enough" << endl;
					continue;
				}
				break;
			default:
				cout << "Illegal input" << endl;
				continue;
			}
			ib_user.setInterest(interest);
			ib_user.calculateProfit();
			//输出用户名,id
			//输出银行余额
			//输出互联网金融账户余额
			ib_user.print();
		}
	}
}

Acho que você gosta

Origin blog.csdn.net/weixin_46655675/article/details/129325665
Recomendado
Clasificación