C++(07)

 avatar
user_9838728
c_cpp
5 months ago
3.7 kB
3
Indexable
#include <iostream>
#include<cstdlib>
#include<string>
#include <iomanip>
#include <vector>
#include<fstream>
#include <conio.h>
using namespace std;
string fileNameG = "Bank Accounts Data";

enum enMainMenue { showClientList = 1, add = 2, deleteC = 3, updateC = 4, findC = 5, exitm = 6 };

struct bankAccount
{
  string accountNumber{ 0 };
  string pinCode{ 0 };
  string name{ "not found" };
  string phoneNunber{ 0 };
  int balance{ 0 };
};

bankAccount readData()
{
  bankAccount client;
  //cin.ignore();
  cout << "enter your account accountNumber =>   ";
  getline(cin >> ws, client.accountNumber);
  cout << "-------------\n";

  cout << "enter account pine code =>   ";
  getline(cin, client.pinCode);
  cout << "-------------\n";

  cout << "enter your account name =>   ";
  getline(cin, client.name);
  cout << "-------------\n";

  cout << "enter your account phoneNunber =>   ";
  getline(cin, client.phoneNunber);
  cout << "-------------\n";

  cout << "enter account balance =>   ";
  cin >> client.balance;
  cout << "-------------\n";

  return client;
}

// => from struct to line
string convertOneRecordToLine(bankAccount client, string seperator = "#//#")
{
  string str{ "" };

  str += client.accountNumber + seperator;
  str += client.pinCode + seperator;
  str += client.name + seperator;
  str += client.phoneNunber + seperator;
  str += to_string(client.balance);

  return str;
}

// => from vector <struct> to vector <string>
vector<string> veStringConverAlleRecordToLine(vector<bankAccount> veClientsData)
{
  vector<string> clintsDataInLines;
  string newClient{ "" };
  for (bankAccount currentClient : veClientsData)
  {
    newClient = convertOneRecordToLine(currentClient);
    clintsDataInLines.push_back(newClient);
  }
  return clintsDataInLines;
}

// => string to vector as words and delete seperator
vector<string> SplitString(string str, string delim = "#//#")
{
  int wordLong{ 0 };
  string result = "";
  vector <string> veResult;
  while ((wordLong = str.find(delim)) != string::npos)
  {
    result = str.substr(0, wordLong);
    if (result != "")
      veResult.push_back(result);
    str.erase(0, wordLong + delim.length());
  }
  if (str != "")
    veResult.push_back(str);
  return veResult;
}

// display => one client data
void displayClientData(bankAccount client)
{
  cout << "====> client data <====\n\n";
  cout << "client accountNumber is : " << client.accountNumber << endl;
  cout << "client pinCode is       : " << client.pinCode << endl;
  cout << "client name is          : " << client.name << endl;
  cout << "client phoneNunber is   : " << client.phoneNunber << endl;
  cout << "client balance is       : " << client.balance << endl;
}

// => from line to struct
bankAccount ConvertLinetoRecord(string line)
{
  vector<string> clientData = SplitString(line);
  bankAccount client;
  client.accountNumber = clientData.at(0);
  client.pinCode = clientData.at(1);
  client.name = clientData.at(2);
  client.phoneNunber = clientData.at(3);
  client.balance = stoi(clientData.at(4));
  return client;
}

// = > save one line in file
void saveOneClientDataInFile(string fileName, string clientData)
{
  fstream dataFile;
  dataFile.open(fileName, ios::app);
  if (dataFile.is_open())
  {
    dataFile << clientData << endl;
    dataFile.close();
  }
}

// => save all data     from vector <string> to file
void saveClientDataInFile( string fileName ,vector<string> veClientsData)
{
  fstream dataFile;
  dataFile.open(fileName, ios::out);
  if (dataFile.is_open())
  {
    for (string& oneClientData : veClientsData)
    {
      saveOneClientDataInFile(fileName, oneClientData);
    }
    dataFile.close();
  }
}
Editor is loading...