cpp/CPP00/ex01/PhoneBook.cpp
2024-12-04 17:29:31 +01:00

108 lines
2.5 KiB
C++

#include "PhoneBook.hpp"
#include "Contact.hpp"
# include <iostream>
# include <string.h>
# include <cstdlib>
# include <iomanip>
PhoneBook::PhoneBook(void) {
size = 0;
index = 0;
std::cout << "New PhoneBook" << std::endl;
}
std::string write_read(std::string text)
{
std::string input;
while (input.size() == 0)
{
std::cout << text;
if (!std::getline(std::cin, input))
exit(0);
}
return (input);
}
void PhoneBook::add(void) {
std::string fname;
std::string lname;
std::string nname;
std::string phnbr;
std::string drksct;
fname = write_read("firstname:");
lname = write_read("lastname:");
nname = write_read("nickname:");
phnbr = write_read("phone number:");
drksct = write_read("darkest secret:");
Contact contact;
contact = Contact(fname, lname, nname, phnbr, drksct);
contact_list[index % 8] = contact;
index++;
if (size < 8)
size++;
std::cout << "The contact has been added." << std::endl;
}
bool isDigital(std::string str) {
for (unsigned long i = 0; i < str.size(); i++) {
if (!isdigit(str[i])) {
return false;
}
}
return true;
}
void PhoneBook::search(void) {
if (size == 0)
{
std::cout << "No contact" << std::endl;
return ;
}
for (int i = 0; i < size; i++) {
std::string info[3];
std::string list_info[3] = {contact_list[i].getFname(), contact_list[i].getLname(),
contact_list[i].getNname()};
for (int y = 0; y < 3; y++) {
info[y] = list_info[y].substr(0, 10);
if (list_info[y].size() > 10)
info[y][9] = '.';
}
std::cout << std::left << std::setw(10) << i;
std::cout << " | ";
std::cout << std::left << std::setw(10) << info[0];
std::cout << " | ";
std::cout << std::left << std::setw(10) << info[1];
std::cout << " | ";
std::cout << std::left << std::setw(10) << info[2];
std::cout << "\n";
}
std::string input;
while (input.size() == 0)
{
std::cout << "index:";
if (!std::getline(std::cin, input))
return ;
}
if (!isDigital(input))
{
std::cout << "Error index" << std::endl;
return ;
}
int index = std::atoi(input.c_str());
if (index > 7 || !contact_list[index].getInit())
{
std::cout << "Out of range" << std::endl;
return ;
}
std::cout << "lastname: " + contact_list[index].getFname() << std::endl;
std::cout << "lastname: " + contact_list[index].getLname() << std::endl;
std::cout << "nickname: " + contact_list[index].getNname() << std::endl;
std::cout << "phone number: " + contact_list[index].getPhnbr() << std::endl;
std::cout << "darkest secret: " + contact_list[index].getDrksct() << std::endl;
}