Hello,
I'm writing an abstract program that keeps a record of Names and Phone numbers. I've created a Record class that inherits a Name and Phone class. All the functions work great except for delete. The delete function is supposed to replace the record value with "DELETED". The program says the record is deleted but its value is not changed. Why is this happening?
Any help is appreciated. Thanks so much.
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
const string null = "";
class shortName {
string firstName;
string lastName;
public:
shortName();
shortName(string, string);
void setFirst(string First) { firstName = First;}
void setLast(string Last) { lastName = Last;}
string getFirst() { return firstName;}
string getLast() { return lastName;}
string toString();
};
shortName::shortName()
{
firstName = null;
lastName = null;
}
shortName::shortName(string First, string Last)
{
firstName = First;
lastName = Last;
}
string shortName::toString()
{
string Form;
Form = firstName + " " + lastName;
return Form;
}
class shortPhone {
string AreaCode;
string Prefix;
string Number;
public:
shortPhone();
shortPhone(string, string, string);
void setArea(string Area) { AreaCode = Area; }
void setPrefix(string Pref) { Prefix = Pref; }
void setNumber(string Num) { Number = Num; }
string getArea() { return AreaCode; }
string getPrefix() { return Prefix; }
string getNumber() { return Number; }
string toString();
};
shortPhone::shortPhone()
{
AreaCode = null;
Prefix = null;
Number = null;
}
shortPhone::shortPhone(string Area, string Pre, string Num)
{
AreaCode = Area;
Prefix = Pre;
Number = Num;
}
string shortPhone::toString()
{
string Form;
Form = "(" + AreaCode +") " + Prefix + "-" + Number;
return Form;
}
class Record {
shortName Name;
shortPhone Phone;
public:
Record();
void Menu();
int addRecord(Record*, int);
void showRecords(Record*, int);
void Delete(Record*, int, string);
void Find(Record*, int, string);
Record(shortName, shortPhone);
Record(string, string, string, string, string);
void setFirst(string First) { Name.setFirst(First); }
void setLast(string Last) { Name.setLast(Last); }
void setArea(string Area) { Phone.setArea(Area); }
void setPrefix(string Prefix) { Phone.setPrefix(Prefix); }
void setNumber(string Number) { Phone.setNumber(Number); }
string getFirst() { return Name.getFirst(); }
string getLast() { return Name.getLast(); }
string getArea() { return Phone.getArea(); }
string getPrefix() { return Phone.getPrefix(); }
string getNumber() { return Phone.getNumber(); }
string toString();
};
Record::Record()
{
;
}
Record::Record(shortName N, shortPhone P)
{
Name = N;
Phone = P;
}
string Record::toString()
{
string Form;
Form = "Name: \n" + Name.toString() + "\n" +
"Phone: \n" + Phone.toString() + "\n";
return Form;
}
int main()
{
Record List[25];
int Size, maxSize = 25;
string Command;
Record obj;
obj.Menu();
while(true) {
cout << "Enter Command: ";
cin >> Command;
if(Command == "Quit")
break;
else if(Command == "Help")
obj.Menu();
else if(Command == "Add")
Size = obj.addRecord(List, maxSize);
else if(Command == "Show")
obj.showRecords(List, Size);
else if(Command == "Find") {
string FindValue;
cout << "Enter Last Name: ";
cin >> FindValue;
obj.Find(List, Size, FindValue);
}
else if(Command == "Delete") {
string DeleteValue;
cout << "Enter Last Name: ";
cin >> DeleteValue;
obj.Delete(List, Size, DeleteValue);
}
else
cout << "Command not found. Enter Help to display Command List." <<endl;
cin.ignore(200, '\n');
}
}
void Record::Menu()
{
cout << endl;
cout << "Command List:" << endl;
cout << "============================================" << endl;
cout << "Add :Adds Records" << endl;
cout << "tDelete :Deletes Records" << endl;
cout << "tFind :Finds Records by Last Name" << endl;
cout << "Show :Shows Records" << endl;
cout << "Help :Displays Command List" << endl;
cout << "Quit :Ends Program" << endl;
cout << "============================================" << endl;
cout << endl;
}
int Record::addRecord(Record* List, int maxSize)
{
int K;
string First, Last, Area, Prefix, Number;
cout << "Enter Values Below, Stop To Quit" << endl;
for(K = 0 ; K < maxSize ; K++) {
cout << "First Name: ";
cin >> First;
if(First == "Stop")
break;
cout << "Last Name: ";
cin >> Last;
cout << "Area Code: ";
cin >> Area;
cout << "Prefix: ";
cin >> Prefix;
cout << "Number: ";
cin >> Number;
List[K].setFirst(First);
List[K].setLast(Last);
List[K].setArea(Area);
List[K].setPrefix(Prefix);
List[K].setNumber(Number);
cin.ignore(200, '\n');
}
return K;
}
void Record::Delete(Record* List, int Size, string DeleteValue)
{
int K;
for(K = 0 ; K < Size ; K++)
if(List[K].getLast() == DeleteValue) {
cout << endl;
cout << "==============================================" << endl;
cout << "\tTHIS RECORD HAS BEEN DELETED" << endl;
cout << endl;
cout << List[K].toString() << endl;
List[K].toString() = "DELETED";
cout << "==============================================" << endl;
cout << endl;
return;
}
else;
cout << "Record with Last Name: " <<DeleteValue << " was Not Found!" << endl;
}
void Record::Find(Record* List, int Size, string FindValue)
{
int K;
int NotFoundFlag = 0;
for(K = 0 ; K < Size ; K++)
if(List[K].getLast() == FindValue) {
cout << endl;
cout << "==============================================" << endl;
cout << "\tRecord with Last Name: "<< List[K].getLast() << endl;
cout << endl;
cout << List[K].toString() << endl;
cout << "==============================================" << endl;
cout << endl;
NotFoundFlag = 1;
}
if(NotFoundFlag == 0)
cout << "Record with Last Name: " << FindValue << " was Not Found!" << endl;
}
void Record::showRecords(Record* List, int Size)
{
for(int K = 0 ; K < Size ; K++)
{
cout << "======================" << endl;
cout << List[K].toString() << endl;
cout << "======================" << endl;
}
}