//PhoneBook02.cpp
#include <iostream.h>
#include <string.h>
int const MAX_LEN = 10;
const char *testNames[] =
{"Bob", "Tom", "Ann", "Ron", "Ben", "Ken", "Rob",
"Sam", "Don", "Dan", "Tim"};
const int MAX_NAMES = sizeof(testNames)/sizeof(testNames[0]);
const char *testPhones[] =
{"111-1111", "222-2222", "333-3333", "444-4444"};
const int MAX_PHONES = sizeof(testPhones)/sizeof(testPhones[0]);
const char *testGroups[] =
{"111-1111", "222-2222", "333-3333", "444-4444"};
const int MAX_GROUPS = sizeof(testGroups)/sizeof(testGroups[0]);
struct CPhoneEntry
{
char name[MAX_LEN+1];
char phone[14+1];
char group[10+1];
int key;
CPhoneEntry *next;
};
class CPhoneBook
{
private:
CPhoneEntry *first;
CPhoneEntry *last;
int count;
public:
CPhoneBook(void);
bool insertAtEnd(char name[], char phone[], char group[], int key);
void display(void);
void deleteAll(void);
~CPhoneBook(void);
CPhoneBook(char ch);
CPhoneEntry * searchByName(char name[]);
void sortByName(void);
bool insert(CPhoneEntry entry);
bool modifyPhone(char name[], char newPhone[]);
};
//'r' random elements
//'u' distinct random elements
//'s' sorted list
//'i' enter from the keyboard
CPhoneBook::CPhoneBook(char ch)
{
}
CPhoneBook::~CPhoneBook(void)
{
cout << "destructor called\n";
deleteAll();
}
//void CPhoneBook::deleteAll(void)
//deletes all the nodes from the linked list
void CPhoneBook::deleteAll(void)
{
while (first != NULL)
{
last = first->next;
delete first;
first = last;
}
count = 0;
}
void CPhoneBook::display(void)
{
CPhoneEntry *p;
cout << "Phone Book[" << count << "]\n";
p = first;
while (p != NULL)
{
cout << p->name << endl;
cout << p->phone << endl;
cout << p->group << endl;
cout << p->key << endl;
cout << "--------\n";
p = p->next;
};
}
bool CPhoneBook::insertAtEnd(char name[], char phone[], char group[], int key)
{
CPhoneEntry *p;
p = new CPhoneEntry;
if (NULL == p)
return false;
strcpy(p->name, name);
strcpy(p->phone, phone);
strcpy(p->group, group);
p->key = key;
p->next = NULL;
if (NULL == first)
{
first = p;
last = p;
}
else
{
last->next = p;
last = p;
}
count++;
return true;
}
void testInsertAtEnd(void)
{
{
CPhoneBook myBook;
myBook.display();
myBook.insertAtEnd("John", "231-7000", "friend", 1);
myBook.display();
myBook.insertAtEnd("Tom", "231-7001", "enemy", 1);
myBook.display();
}
{
CPhoneBook yourBook;
yourBook.display();
}
}
CPhoneBook::CPhoneBook(void)
{
cout << "constructor called\n";
count = 0;
first = NULL;
last = NULL;
}
void main(void)
{
testInsertAtEnd();
}
|