A telephone directory, also known as a telephone book, telephone address book, phone book, or the white/yellow pages, is a listing of telephone subscribers in a geographical area or subscribers to services provided by the organization that publishes the directory. Its purpose is to allow the telephone number of a subscriber identified by name and address to be found.
This is a simple Telephone directory program written using the C++ programming. It uses very simple file handling operations to make up the whole project; these include adding, deleting, searching, listing and modifying records, to or from file.
#include<iostream>
#include<fstream>
#include<iomanip>
using namespace std;
class telephone
{
char name[20];
char address[20];
int ph_no;
public:
void get(void);
void show(void);
int getph_no();
};
void telephone::get(void)
{
cout << "\nEnter Name: ";
cin.ignore();
cin.getline(name, 20);
cout << "Enter Address: ";
cin.ignore();
cin.getline(address, 20);
cout << "\nEnter Phone Number: ";
cin >> ph_no;
}
void telephone::show()
{
cout << "\nName: " << name;
cout << "\nAddress: " << address;
cout << "\nPhone Number: " << ph_no;
}
int telephone::getph_no()
{
return ph_no;
}
void write_telephone()
{
telephone tel;
ofstream outFile;
outFile.open("telephone.dat", ios::binary | ios::app);
tel.get();
outFile.write(reinterpret_cast<char *> (&tel), sizeof(telephone));
outFile.close();
cout << "\n\nTelephone Directory Has Been Created...";
cin.ignore();
cin.get();
}
void display_all()
{
telephone tel;
ifstream inFile;
inFile.open("telephone.dat", ios::binary);
if (!inFile)
{
cout << "File could not be open !! Press any Key...";
cin.ignore();
cin.get();
return;
}
cout << "\n\n\n\t\tDISPLAY ALL RECORD !!!\n\n";
while (inFile.read(reinterpret_cast<char *> (&tel), sizeof(telephone)))
{
tel.show();
cout << "\n\n====================================\n";
}
inFile.close();
cin.ignore();
cin.get();
}
void display_sp(int n)
{
telephone tel;
ifstream inFile;
inFile.open("telephone.dat", ios::binary);
if (!inFile)
{
cout << "File could not be open !! Press any Key...";
cin.ignore();
cin.get();
return;
}
bool flag = false;
while (inFile.read(reinterpret_cast<char *> (&tel), sizeof(telephone)))
{
if (tel.getph_no() == n)
{
tel.show();
flag = true;
}
}
inFile.close();
if (flag == false)
cout << "\n\nrecord not exist";
cin.ignore();
cin.get();
}
void modify_telephone(int n)
{
bool found = false;
telephone tel;
fstream File;
File.open("telephone.dat", ios::binary | ios::in | ios::out);
if (!File)
{
cout << "File could not be open !! Press any Key...";
cin.ignore();
cin.get();
return;
}
while (!File.eof() && found == false)
{
File.read(reinterpret_cast<char *> (&tel), sizeof(telephone));
if (tel.getph_no() == n)
{
tel.show();
cout << "\n\nPlease Enter The New Details" << endl;
tel.get();
int pos = (-1)*static_cast<int>(sizeof(tel));
File.seekp(pos, ios::cur);
File.write(reinterpret_cast<char *> (&tel), sizeof(telephone));
cout << "\n\n\t Record Updated";
found = true;
}
}
File.close();
if (found == false)
cout << "\n\n Record Not Found ";
cin.ignore();
cin.get();
}
void delete_telephone(int n)
{
telephone tel;
ifstream inFile;
inFile.open("telephone.dat", ios::binary);
if (!inFile)
{
cout << "File could not be open !! Press any Key...";
cin.ignore();
cin.get();
return;
}
ofstream outFile;
outFile.open("Temp.dat", ios::out);
inFile.seekg(0, ios::beg);
while (inFile.read(reinterpret_cast<char *> (&tel), sizeof(telephone)))
{
if (tel.getph_no() != n)
{
outFile.write(reinterpret_cast<char *> (&tel), sizeof(telephone));
}
}
outFile.close();
inFile.close();
remove("telephone.dat");
rename("Temp.dat", "telephone.dat");
cout << "\n\n\tRecord Deleted ..";
cin.ignore();
cin.get();
}
int main()
{
char ch;
int num;
cout.setf(ios::fixed | ios::showpoint);
cout << setprecision(2);
do
{
system("cls");
cout << "\t\t\t\t**\t**";
cout << "\t\t\t\t***\t***";
cout << "\t\t\t\t****\t****";
cout << "\t\t\t\t*****\t*****";
cout << "\t\t\t\t******\t******";
cout << "\t\t\t\t*******\t*******";
cout << "\t\t\t\t*******\t*******";
cout << "\t\t\t\t******\t******";
cout << "\t\t\t\t*****\t*****";
cout << "\t\t\t\t****\t****";
cout << "\t\t\t\t***\t***";
cout << "\t\t\t\t**\t**";
cout << "\t\t\t\t*\t*";
cout << "\n\t\t@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@";
cout << "\n\t\t1. Add Telephone Record";
cout << "\n\t\t2. Show Records";
cout << "\n\t\t3. Search Telephone Records";
cout << "\n\t\t4. Modify Record";
cout << "\n\t\t5. Delete Record";
cout << "\n\t\t6. EXIT";
cout << "\n\t\t@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@";
cout << "\n\t\tPlease Enter Your Choice (1-6): ";
cin >> ch;
system("cls");
switch (ch)
{
case '1': write_telephone(); break;
case '2': display_all(); break;
case '3': cout << "\n\tPlease Enter Phone Number: "; cin >> num;
display_sp(num); break;
case '4': cout << "\n\tPlease Enter Phone Number: "; cin >> num;
modify_telephone(num); break;
case '5': cout << "\n\tPlease Enter Phone Number: "; cin >> num;
delete_telephone(num); break;
case '6': exit(0);
default: cout << "\a";
}
} while (ch != '7');
return 0;
}