How can I search by name or Birthday from the file and not from the compiler . Thanks. To understand my question the best to try it by compiler and press 3 or 4. and then enter Name Helena for exampel and the output is not found and there Helena in the file. ContactsBook.txt: Name: Adam Date of Birth: 671231 Address Göteborg Email: gadfl@outlook.com Phone Number: 765432 Name: Josef Date of Birth: 960607 Address Skövde
Case 3 and 4 : How can I search by name or Birthday from the file and not from the compiler . Thanks.
To understand my question the best to try it by compiler and press 3 or 4. and then enter Name Helena for exampel and the output is not found and there Helena in the file.
ContactsBook.txt:
Name: Adam
Date of Birth: 671231
Address Göteborg
Email: gadfl@outlook.com
Phone Number: 765432
Name: Josef
Date of Birth: 960607
Address Skövde
Email: hbcs@gmail.com
Phone Number: 7230173
Name: Helena
Date of Birth: 560124
Address Halmstad
Email: helena@outlook.com
Phone Number: 7321745
The program:
#include<iostream>
#include <fstream>
#include<string>
using namespace std;
#define M 100
int count=0;
struct AddressBook{
string FullName;
int Birthday;
string Address;
string Email;
int PhoneNumber;
}
Person [M];
void WriteToFile();
void add();
void browse();
void searchByName();
void searchByBirthday();
void removeContact();
void order();
int main(){
fstream file;
file.open("Contact'sBook.txt");
int choice;
do{
cout << "Please Enter Your Choise: \n";
cout << " 1- Add New Person\n 2- Browse\n 3- Search By Full Name \n 4-Search By Birthday \n 5-Remove a Person" << "\n 6- Alphabetical Order \n 7- Exit\n";
cin >> choice;
switch(choice){
case 1: add(); break;
case 2: browse();break;
case 3: searchByName();break;
case 4: searchByBirthday();break;
case 5: removeContact();break;
case 6: order(); break;
case 7: return 0;
}
}
while (count < M );
return 0;
}
void WriteToFile(string FullName, int Birthday, string Address, int PhoneNumber, string Email){
ofstream contactFile ("Contact'sBook.txt", std::ios_base::app);
if(contactFile.is_open()){
contactFile << "Name: " << FullName << "\n";
contactFile << "Date of Birth: " << Birthday << "\n";
contactFile << "Address " << Address << "\n";
contactFile << "Email: " << Email << "\n";
contactFile << "Phone Number: " << PhoneNumber << "\n";
}
else{
cout << "Error 23 Contact your Administrator :D." << endl;
}
//return 0;
}
void add(){
cout << "Person's Name:";cin>> Person[count].FullName;
cout << "Person's Birthday:";cin>>Person[count].Birthday;
cout << "Person's Address:";cin>>Person[count].Address;
cout << "Person's Email:";cin>>Person[count].Email;
cout << "Person's Phone Number:";cin>>Person[count].PhoneNumber;
cout<<"\n";
WriteToFile(Person[count].FullName,Person[count].Birthday,Person[count].Address,Person[count].PhoneNumber,Person[count].Email);
count++;
}
void browse(){
for(int i =0; i < count;i++)
cout << Person[i].FullName<<"\t"<< Person[i].Birthday<<"\t"<<Person[i].Address<<"\t"<<Person[i].Email<<"\t"<<Person[i].PhoneNumber<<"\t" <<"\n";
cout<<"\n";
}
void searchByName(){
string FullName;
bool found = false;
int i;
cout << "Enter name: ";cin >> FullName;
for(i=0;i<count; i++){
if (FullName == Person[i].FullName){
cout << Person[i].FullName<<"\t"<< Person[i].Birthday<<"\t"<<Person[i].Address<<"\t"<<Person[i].Email<<"\t"<<Person[i].PhoneNumber<<"\t" <<"\n";
found = true;
}
}
if(!found){
cout << FullName << " was not found \n";
}
}
void searchByBirthday() {
int B;
bool found = false;
int i ;
cout << " Enter Person's Birthday: "; cin >> B;
for (i=0; i<count; i++){
if (Person[i].Birthday==B){
cout << Person[i].FullName<<"\t"<< Person[i].Birthday<<"\t"<<Person[i].Address<<"\t"<<Person[i].Email<<"\t"<<Person[i].PhoneNumber<<"\t" <<"\n";
found = true;
}
}
cout << "\n";
if(!found){
cout << "No result\n";
}
}
void removeContact(){
browse();
int delChoice;
cout << "Enter Contact to be deleted by index no"<< endl;
cin >> delChoice;
for(int i =delChoice-1; i < count-1;i++){
Person[i].FullName = Person[i+1].FullName;
Person[i].Birthday =Person[i+1].Birthday;
Person[i].Address = Person[i+1].Address;
Person[i].Email= Person[i+1].Email;
Person[i].PhoneNumber = Person[i+1].PhoneNumber;
}
count--;
cout<< "AddressBook after deletion is " <<endl;
browse();
}
void order(){
int i,j;
AddressBook temp;
if(count < 2) ;
for(i=0; i<count; i++){
for (j=0; j<count -1; j++){
if(Person[j].FullName > Person[j+1].FullName){
temp=Person[j];
Person[j]=Person[j+1];
Person[j+1]= temp;
}
}
}
cout << "\n";
browse();
}
Trending now
This is a popular solution!
Step by step
Solved in 2 steps