108 lines
2.5 KiB
C++
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;
|
|
}
|