Você está na página 1de 14

UNIVERSIDADE PEDAGÓGICA DE MAPUTO

Relatório do trabalho da cadeira de Laboratorio C++

Tema: Sistema bancário

Estudante:Stélio Samuel Monjane

Docente:Mestre Geraldo Carlos Nhadumbuque


1.0-Introdução

Desenvolver um sistema bancário em C++ é um desafio empolgante que envolve a utilização de


conceitos avançados de programação orientada a objetos. Neste projeto, explorarei a
implementação de um sistema bancário que faz uso de arrays de objetos para armazenar
informações de contas bancárias. Além disso, iremos aplicar sobrecarga de construtores para
criar instâncias de objetos com diferentes parâmetros, bem como utilizar métodos e atributos
estáticos para compartilhar dados entre as instâncias da classe.

Através da definição de métodos, atributos e classes privadas, tive a oportunidade de encapsular


e organizar a lógica do sistema de forma eficiente, garantindo a segurança e integridade dos
dados.

2
1.2-Desenvolvimento
▪ Definição da classe ContaBancaria
A classe ContaBancaria representa uma conta bancária e possui membros privados e públicos
para armazenar informações sobre o titular da conta, número da conta, tipo de conta, saldo e
comissão.

Os métodos públicos permitem realizar operações como depósito, levantamento e exibição de


informações da conta.

▪ Métodos e atributos estáticos:


A classe ContaBancaria possui um atributo estático comissao, que armazena o valor da comissão
a ser aplicada a contas do tipo "corrente".

O método estático definirComissao permite definir o valor da comissão para todas as contas
correntes.

▪ Construtores:
A classe ContaBancaria possui dois construtores: um construtor padrão e um construtor
parametrizado, que inicializa os membros da classe com os valores passados como argumentos.

▪ Métodos de operação da conta:


Os métodos deposito, levantamento e exibirNomeESaldo realizam operações de depósito,
levantamento e exibição de informações da conta, respectivamente.

▪ Método getNumeroConta():
Este método retorna o número da conta, permitindo que seja acessado de forma segura por outras
partes do código.

▪ Função main():
A função main() é o ponto de entrada do programa.

Nela, o usuário informa o número de contas bancárias a serem registradas e, em seguida, interage
com o sistema por meio de um menu de opções.

As opções incluem registrar uma nova conta, depositar em uma conta existente, levantar fundos
de uma conta e exibir o nome e saldo de uma conta.

3
O loop do-while permite que o usuário realize múltiplas operações até escolher a opção de sair
do programa.

2.0-Codigo do projecto

private:

string nomeDepositante;

string numeroConta;

string tipoConta;

float saldo;

static float comissao;

public:

ContaBancaria() : saldo(0) {}

ContaBancaria(const string &nome, const string &numero, const string &tipo, float saldoInicial) {

nomeDepositante = nome;

numeroConta = numero;

tipoConta = tipo;

saldo = saldoInicial;

void deposito(float valor) {

if (valor > 0) {

saldo += valor;

4
cout << "Depósito de " << valor << " MT realizado com sucesso.\n";

} else {

cout << "Valor de depósito inválido.\n";

void levantamento(float valor) {

if (valor > 0 && saldo - valor >= 0) {

if (tipoConta == "poupanca" && saldo - valor < 1000) {

cout << "Saldo insuficiente para efetuar o levantamento de " << valor << " MT.\n";

} else {

saldo -= valor;

cout << "Levantamento de " << valor << " MT realizado com sucesso.\n";

aplicarComissao();

} else {

cout << "Valor de levantamento inválido ou saldo insuficiente.\n";

void exibirNomeESaldo() const {

cout << "Nome do depositante: " << nomeDepositante << "\nSaldo: " << saldo << " MT\n";

static void definirComissao(float valor) {

comissao = valor;

5
}

const string& getNumeroConta() const {

return numeroConta;

private:

void aplicarComissao() {

if (tipoConta == "corrente") {

saldo -= comissao;

cout << "Comissão de " << comissao << " MT aplicada.\n";

};

float ContaBancaria::comissao = 0; // Inicialização do membro estático

int main() {

int tamanhoArray;

cout << "Digite o número de contas bancárias a serem registradas: ";

cin >> tamanhoArray;

ContaBancaria *contas = new ContaBancaria[tamanhoArray];

// Definir a comissão para contas correntes

ContaBancaria::definirComissao(20); // Definir a comissão como 20 MT

6
int opcao;

do {

cout << "\nMenu:\n";

cout << "1. Registrar nova conta bancária\n";

cout << "2. Depositar em uma conta bancária\n";

cout << "3. Levantar de uma conta bancária\n";

cout << "4. Exibir nome e saldo de uma conta bancária\n";

cout << "0. Sair\n";

cout << "Opção: ";

cin >> opcao;

switch (opcao) {

case 1: {

string nome, numero, tipo;

float saldoInicial;

cout << "Digite o nome do titular da conta: ";

cin >> nome;

cout << "Digite o número da conta: ";

cin >> numero;

cout << "Digite o tipo de conta (corrente ou poupanca): ";

cin >> tipo;

cout << "Digite o saldo inicial: ";

cin >> saldoInicial;

for (int i = 0; i < tamanhoArray; ++i) {

if (contas[i].getNumeroConta().empty()) {

7
contas[i] = ContaBancaria(nome, numero, tipo, saldoInicial);

break;

break;

case 2: {

string numeroConta;

float valorDeposito;

cout << "Digite o número da conta para depositar: ";

cin >> numeroConta;

cout << "Digite o valor do depósito: ";

cin >> valorDeposito;

for (int i = 0; i < tamanhoArray; ++i) {

if (contas[i].getNumeroConta() == numeroConta) {

contas[i].deposito(valorDeposito);

break;

break;

case 3: {

string numeroConta;

float valorLevantamento;

cout << "Digite o número da conta para levantar: ";

cin >> numeroConta;

8
cout << "Digite o valor do levantamento: ";

cin >> valorLevantamento;

for (int i = 0; i < tamanhoArray; ++i)

if (contas[i].getNumeroConta() == numeroConta) {

contas[i].levantamento(valorLevantamento);

break;

break;

case 4: {

string numeroConta;

cout << "Digite o número da conta para exibir nome e saldo: ";

cin >> numeroConta;

for (int i = 0; i < tamanhoArray; ++i) {

if (contas[i].getNumeroConta() == numeroConta) {

contas[i].exibirNomeESaldo();

break;

break;

case 0:

cout << "Encerrando o programa. Até mais!\n";

break;

default:

9
cout << "Opção inválida. Tente novamente.\n";

} while (opcao != 0);delete[] contas;

return 0;

3.1-Ilustração prática
A imagem abaixo ilustra os menu do nosso sistema bancario

10
A imagem abaixo ilustra o cadastro da conta bancaria

A imagem abaixo ilustra o deposito na conta bancaria

11
A imagem abaixo ilustra ou visualiza os dados depois do deposito na conta bancária

A imagem abaixo ilustra o levantamento na conta bancaria

12
A imagem abaixo ilustra como os dados da conta ficaram depois do levantamento

13
4.0-Conclusão
O desenvolvimento deste sistema bancário em C++ que incorporou array de objetos, sobrecarga
de construtores, métodos e atributos estáticos, e métodos, atributos e classes privadas é
fundamental para a eficiência e segurança das operações bancárias. A utilização de arrays de
objetos permite a manipulação de múltiplas instâncias de classes de forma organizada e eficiente.
A sobrecarga de construtores e métodos proporciona flexibilidade no uso das classes, permitindo
a adaptação a diferentes situações. A implementação de atributos e métodos estáticos é crucial
para o compartilhamento de dados e funcionalidades entre as instâncias de uma classe. Além
disso, a utilização de métodos, atributos e classes privadas garante a encapsulação e segurança
das informações, prevenindo acessos não autorizados e garantindo a integridade dos dados.

14

Você também pode gostar