Straightaway prior brushing up knowledge of the language and file handling is required. So let us do discuss C++ Language concepts in File Handling and loops. Straight we know that for compiling the code, an IDE for compiling C++ language is required such as Code Block, Visual Studio Code, Dev C++, etc is required to run our program.
This software aims to cream a contact book in C++ using File Handling. In C++, files are mainly dealt with by using three classes fstream, ifstream, ofstream available in the fstream header file.
- ofstream: Stream class to write on files
- ifstream: Stream class to read from files
- fstream: Stream class to both read and write from/to files.
Implementation:
The contacts will be saved to a file. Contact Book will be providing the following features to the user:
1. Add contact. 2. Search Contact. 3. Help. 4. Exit.
Details of contact that will be saved are as follows:
1. First name. 2. Last name. 3. Phone Number.
Example
// Importing input output operations file #include <iostream> // Importing file class #include <fstream> // Importing standard library file #include <stdlib.h> using namespace std;
// Variables declared outside any function // hence scope is global, hence global variables string fname, lname, phone_num; // Methods // Helper Methods followed by // Main driver method void addContact();
void searchContact();
void help();
void self_exit();
bool check_digits(string);
bool check_numbers(string);
// Method 1 // Helper method void self_exit()
{ system ( "cls" );
cout << "\n\n\n\t\tThank You for using Contact-Saver!" ;
exit (1);
} // Method 2 // Helper method void help()
{ cout << "Help Center" ;
cout << endl << endl;
system ( "pause" );
system ( "cls" );
} // Method 3 // Helper method void addContact()
{ ofstream phone( "number.txt" , ios::app);
system ( "cls" );
cout << "\n\n\tEnter First Name : " ;
cin >> fname;
cout << "\n\tEnter Last Name : " ;
cin >> lname;
cout << "\n\tEnter Phone Number : " ;
cin >> phone_num;
if (check_digits(phone_num) == true ) {
if (check_numbers(phone_num) == true ) {
if (phone.is_open()) {
phone << fname << " " << lname << " "
<< phone_num << endl;
cout << "\n\tContact saved successfully !" ;
}
else {
cout << "\n\tError in opening record!" ;
}
}
else {
cout << "\n\tOnly numbers are allowed!" ;
}
}
else {
cout << "\n\tPhone number should be of 10 digits "
"only." ;
}
cout << endl << endl;
system ( "pause" );
system ( "cls" );
phone.close();
} // Method 4 // Helper method void searchContact()
{ bool found = false ;
ifstream myfile( "number.txt" );
string keyword;
cout << "\n\tEnter Name to search : " ;
cin >> keyword;
while (myfile >> fname >> lname >> phone_num) {
if (keyword == fname || keyword == lname) {
system ( "cls" );
cout << "\n\n\n\t\tCONTACT DETAILS" ;
cout << "\n\nFirst Name : " << fname;
cout << "\nLast Name : " << lname;
cout << "\nPhone Number : " << phone_num;
found = true ;
break ;
}
}
if (found == false )
cout << "\nNo such contact is found!" ;
cout << endl << endl;
system ( "pause" );
system ( "cls" );
} // Method 5 // Helper method bool check_digits(string x)
{ if (x.length() == 10)
return true ;
else
return false ;
} // Method 6 // Helper method bool check_numbers(string x)
{ bool check = true ;
for ( int i = 0; i < x.length(); i++) {
if (!( int (x[i]) >= 48 && int (x[i]) <= 57)) {
check = false ;
break ;
}
}
if (check == true )
return true ;
if (check == false )
return false ;
cout << endl << endl;
system ( "pause" );
system ( "cls" );
} // Method 7 // Main driver method int main()
{ int choice;
system ( "cls" );
system ( "color 0A" );
while (1) {
cout << "\n\n\n\t\t\tCONTACT SAVER" ;
cout << "\n\n\t1. Add Contact\n\t2. Search "
"Contact\n\t3. Help\n\t4. Exit\n\t> " ;
cin >> choice;
// Switch case
switch (choice) {
case 1:
addContact();
break ;
case 2:
searchContact();
break ;
case 3:
help();
break ;
case 4:
self_exit();
break ;
default :
cout << "\n\n\tInvalid Input!" ;
}
}
return 0;
} |
Output