0

Hello,
I just started C++ and I have this assignment to write. I started writing it but I can't seem to get this one thing and that is how to create a new contact and store it in a file.
I need to know if I used the structure correctly. Also I don't know how you create multiple contacts with a loop. I wouldn't necessarily need the answer from you guys. I just want to know what topics I need to learn to be able to do this.
What do I need to use? That's all I need. I can write the programs for myself.

Also if you guys can tell me how you search for and display a single contact. That would be helpful. Thanks for understanding.

pscha3

Here's the code:

//This is the term project by Chaitanya Pillalamarri. Class CS-102.
#include<iostream>
#include<iomanip>
#include<cmath>
#include<cstdlib>
#include<fstream>
using namespace std;

void Display();
void Delete();
void Create();
void Modify();
void Search();
void Quit(void);
void Restart(int);

int Choice=0;

int main()
{
	//The following output statements are the menu.
	cout<<""<<endl;
	cout<<"                         Welcome to Virtual Address Book                    "<<endl;
	cout<<"In this book, you have a variety of features to revolutionize your contact lists"<<endl;
	cout<<""<<endl;
	cout<<"Follow the directions below and chose appropriately from the menu."<<endl;
	cout<<""<<endl;
	
	//These are the choices.
	cout<<"Please type in the following number to perform the following task:"<<endl;
	cout<<" 1 - Display all your contacts\n";
	cout<<" 2 - Create a new contact\n";
	cout<<" 3 - Edit information for a contact\n";
	cout<<" 4 - Search for a contact\n";
	cout<<" 5 - Delete contact\n";
	cout<<" 6 - Quit this application\n";
	cout<<""<<endl;
	cout<<""<<endl;
	cout<<"If the application asks you to restart the program, just type in '7'."<<endl;
	cout<<" 7 - Restarts program"<<endl;
	cout<<""<<endl;
	
	//The user choice.
	cout<<"ENTER YOUR CHOICE:"<<endl;
	cin>>Choice;

	switch(Choice)
	{		
		case 1:
		{
			Display();
			break;
		}
		case 2:
		{
			Create();
			break;
		}
		case 3:
		{
			Modify();
			break;
		}
		case 4:
		{
			Search();
			break;
		}
		case 5:
		{
			Delete();
			break;
		}
		case 6:
		{
			Quit();
			break;
		}
		case 7:
		{
			Restart(Choice);
			break;
		}
	}
}

void Restart(int Choice)
{
	while(Choice==7)
		main();
}
void Quit(void)
{
	cout<<"Goodbye!"<<endl;
	exit(0);
}
void Create()
{
	char Name1;
	Name1=0;
	struct Contact
	{
		char Name;
		int Home;
		int Business;
		int Cell;
		int Other;
		char Email;
		char Address;
		int Zip;
		char City;
		char State;
		char Country;
		char Job;
		char Company;
	};
	Contact hi;
	ofstream Data;
	cout<<"This will let you create a new contact."<<endl;
	cout<<"Please provide the following information."<<endl;
	cout<<"When you do not want to give information for a certain field, just press enter to skip it."<<endl;
	
	//This is the place where the user enters the information.
	
	Data.open("Addressbook.txt",ios::out);
	cout<<"Name: "; 
	cin>>hi.Name;
	cout<<""<<endl;
	cout<<"Job title: "; 
	cin>>hi.Job;
	cout<<"Company: "; 
	cin>>hi.Company;
	cout<<""<<endl;
	cout<<"Address: "; 
	cin>>hi.Address;
	cout<<"City: "; 
	cin>>hi.City;
	cout<<"State: "; 
	cin>>hi.State;
	cout<<"Zip: "; 
	cin>>hi.Zip;
	cout<<"Country: "; 
	cin>>hi.Country;
	cout<<"E-mail: "; 
	cin>>hi.Email;
	cout<<"Home: "; 
	cin>>hi.Home;
	cout<<"Business: "; 
	cin>>hi.Business;
	cout<<"Cell: "; 
	cin>>hi.Cell;
	cout<<"Other: "; 
	cin>>hi.Other;
	Data.close();
}
void Display()

[edit]Code tags added. Learn how to use them before posting again. -Narue[/edit]

5
Contributors
5
Replies
7
Views
11 Years
Discussion Span
Last Post by adam1122
0

The use of ur structure seems fine...
To input multiple contacts just put an infinite while loop to enclose ur switch statment... so u will quit whenever u click quit.. that way u can get rid of the restart command..
For searching...
U should be storing ur contacts in an array of structures..now u r overwriting whenever the user says he wants to add a contact.. so just change that also.. so whenever u r supposed to search.. just ask for the field and find that entry that u require by a simple linear search...

0

Yea actually after an hour or so after my first post I totally knew how to do it. Read my book again. So yea. My only question is how do I get more memory for storing data. Since in my new program, here it is

//This is the term project by Chaitanya Pillalamarri. Class CS-102.
#include<iostream>
#include<iomanip>
#include<cmath>
#include<cstdlib>
#include<fstream>
#include<stdlib.h>
#include<stdio.h>
using namespace std;

void Display();
void Delete();
void Create();
void Modify();
void Search();
void Quit(void);
void Restart(int);

int Choice=0;
char ch;
fstream Data;
struct Contact
	{

		char Email[46];
		char Address[46];
		int Zip;
		char City[26];
		char State[26];
		char Job[46];
		char Company[46];
	};
char Name[41];
char Country[56];
int Home;
int Business;
int Cell;
int Other;
char Filename[101];
Contact hi;
int main()
{
	//The following output statements are the menu.
	cout<<""<<endl;
	cout<<"                         Welcome to Virtual Address Book                    "<<endl;
	cout<<"In this book, you have a variety of features to revolutionize your contact lists"<<endl;
	cout<<""<<endl;
	cout<<"Follow the directions below and chose appropriately from the menu."<<endl;
	cout<<""<<endl;
	
	//These are the choices.
	cout<<"Please type in the following number to perform the following task:"<<endl;
	cout<<" 1 - Display all your contacts\n";
	cout<<" 2 - Create a new contact\n";
	cout<<" 3 - Edit information for a contact\n";
	cout<<" 4 - Search for a contact\n";
	cout<<" 5 - Delete contact\n";
	cout<<" 6 - Quit\n";
	cout<<""<<endl;
	cout<<""<<endl;
	cout<<"If you want to return to this screen, just type in '7'."<<endl;
	cout<<" 7 - Returns to main menu"<<endl;
	cout<<""<<endl;
	
	//The user choice.
	cout<<"Enter your choice:"<<endl;
	cin>>Choice;

	switch(Choice)
	{		
		case 1:
		{
			Display();
			break;
		}
		case 2:
		{
			Create();
			break;
		}
		case 3:
		{
			Modify();
			break;
		}
		case 4:
		{
			Search();
			break;
		}
		case 5:
		{
			Delete();
			break;
		}
		case 6:
		{
			Quit();
			break;
		}
		case 7:
		{
			Restart(Choice);
			break;
		}
		default:
		{
			cout<<"**********************************************"<<endl;
			cout<<"* Error: You have entered a wrong choice     *"<<endl;
			cout<<"* Please follow menu instructions.           *"<<endl;
			cout<<"* The program will now restart.              *"<<endl;
			cout<<"**********************************************"<<endl;
			main();
		}
	}
}

void Restart(int Choice)
{
	while(Choice==7)
		main();
}
void Quit(void)
{
	cout<<"Goodbye!"<<endl;
	exit(0);
}
void Create()
{
	cout<<""<<endl;
	cout<<"*This will let you create a new contact*"<<endl;
	cout<<"*Please provide the following information*"<<endl;
	cout<<"*When you want to skip a filed, just press enter*"<<endl;
	cout<<""<<endl;
	cout<<"Please enter a file name for the contact."<<endl;
	cout<<"We recommend using the person's name."<<endl;
	cin>>Filename;
	cout<<""<<endl;
	cout<<"Creating..."<<endl;
	cout<<""<<endl;
	
	//This is the place where the user enters the information.
	Data.open(Filename,ios::out);
	cout<<"Name: "; 
	cin.getline(Name,40);
	cout<<""<<endl;
	cout<<"Job title: "; 
	cin.getline(hi.Job,45);
	cout<<"Company: "; 
	cin.getline(hi.Company,45);
	cout<<""<<endl;
	cout<<"Address: "; 
	cin.getline(hi.Address,45);
	cout<<"City: "; 
	cin.getline(hi.City,25);
	cout<<"State: "; 
	cin.getline(hi.State,25);
	cout<<"Zip: "; 
	cin>>hi.Zip;
	cout<<"Country: "; 
	cin.getline(Country,50);
	cout<<"E-mail: "; 
	cin.getline(hi.Email,45);
	cout<<"Home: "; 
	cin>>Home;
	cout<<"Business: "; 
	cin>>Business;
	cout<<"Cell: "; 
	cin>>Cell;
	cout<<"Other: "; 
	cin>>Other;

	Data<<""<<endl;
	Data<<"Name: "<<Name<<endl;
	Data<<""<<endl;
	Data<<"Job title: "<<hi.Job<<endl;
	Data<<"Company: "<<hi.Company<<endl;
	Data<<""<<endl;
	Data<<"Address: "<<hi.Address<<endl;
	Data<<"City: "<<hi.City<<endl;
	Data<<"State: "<<hi.State<<endl;
	Data<<"Zip: "<<hi.Zip<<endl;
	Data<<"Country: "<<Country<<endl;
	Data<<""<<endl;
	Data<<"E-mail: "<<hi.Email<<endl;
	Data<<""<<endl;
	Data<<"Home: "<<Home<<endl;
	Data<<"Business: "<<Business<<endl;
	Data<<"Cell: "<<Cell<<endl;
	Data<<"Other: "<<Other<<endl;
	Data<<""<<endl;
	Data.close();

	cout<<"Do you want to return to the main menu?(7=restart,6=Exit)"<<endl;
	cin>>Choice;
	if(Choice==7)
		main();
	else
		return;
}
void Display()
{
  char ch;
  
  Data.open(Filename,ios::in);    
  
  if(Data.fail())
  {
    cout << "Error: Unable to open file."<<endl;
    exit(1);
  }
  Data.get(ch);                    
  while(!Data.eof())
  {
    cout << ch;                 
    Data.get(ch);                
  }
  
  Data.close();                  
}
void Modify()
{

}
void Search()
{
	cout<<""<<endl;
	cout<<"To start searching the directory follow the instructions."<<endl;
	cout<<"Please enter a file name."<<endl;
	cin>>Filename;

	Data.open(Filename,ios::in);
	cout<<"Searching...."<<endl;
	cout<<""<<endl;
	if(!Data)
	{
		cout<<Filename<<" could not be opened."<<endl;
		cout<<"Please check your spelling and try again."<<endl;
		Search();
	}
	Data.get(ch);
	while(!Data.eof())
	{
		cout<<ch;
		Data.get(ch);
	}
	Data.close();

	cout<<"Do you want to search for another contact?(0 for yes)"<<endl;
	cout<<"Or go back to the main menu?(7 for main menu)"<<endl;
	cin>>Choice;
	if(Choice==7)
		main();
	else if(Choice==0||Choice==0)
		Search();
}
void Delete()
{
}

When i create a new contact, it skips the first field which is Name. And it overwrites a lot of time. Like if I want to put in a phone number, If I put like more than three numbers it skips all the other fields and goes directly to the end.

0

ok for your first issue the Inabillity to Name your new contact after creating the file i added another "cin.getline(Name,40);"
to the code just before the action is requested by the programme now the stage being skiped is no one of no importance

void Create()
{
	cout<<""<<endl;
	cout<<"*This will let you create a new contact*"<<endl;
	cout<<"*Please provide the following information*"<<endl;
	cout<<"*When you want to skip a filed, just press enter*"<<endl;
	cout<<""<<endl;
	cout<<"Please enter a file name for the contact."<<endl;
	cout<<"We recommend using the person's name."<<endl;
	cin>>Filename;
	cout<<""<<endl;
	cout<<"Creating..."<<endl;
	cout<<""<<endl;
	
	//This is the place where the user enters the information.
	Data.open(Filename,ios::out);
       cin.getline(Name,40);
	cout<<"Name: "; 
	cin.getline(Name,40);
	cout<<""<<endl;

Also the other problem you had of telephone numbers crashing/reseting the programme if more that a few numbers are used ... I have no idea why that is happening but if you can afford to .. redefine the Telephone numbers as Char's
like this

char Home[12];
char Business[12];
char Cell[12];
char Other[12];

or as strings

stringHome;
stringBusiness;
stringCell;
stringOther;

or you could use plain simple strings it all depends and what you are goin to be doing with the data after if has been created

0

If they are still working on this more than 3.5 years later, there is something very wrong. ;)

I suppose it could still be of use to someone that comes across this searching for help with their own problem.

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.