// cdogs.cpp
//


#include <iostream.h>
#include <string.h>
#include <stdio.h>              
              
#define MAX 30
#define MAXSIZE 20
              
              
class dog {
	
	char* 	name;
	int		weight;

public:
                                 
	 dog(char* newname,int newweight)
	 {	name = new char[MAXSIZE];
        strcpy(name,newname);
     	weight = newweight;   
	 }
                                         
    char* getname(){return name;}
	int getweight(){return weight;}

};   

class dogs {
		
	    dog* doglist[MAX];
	    int numdog;
	     
public:
 		dogs(){numdog=0;}
 		int getnum(){return numdog;}
 		void adddog(char* name,int weight)
 		{
 			dog* newdog = new dog(name,weight);
 			doglist[numdog++] = newdog;
		}
		dog* getdognumber(int dognum){return doglist[dognum];}
		dog* finddog(char* dogname)
		{
		 	 int i;
		 	 char* tempstring;
		 	 for(i=0;i<numdog;i++)
		 	 {
		 	  	tempstring=doglist[i]->getname();
		 	  	if(strcmp(tempstring,dogname)==0)
		 	  	{
		 	  	 	return doglist[i];
		 	  	}
		 	  	
		 	 }
		     return 0;
		}              
		void deletedog(char* doggonename)
		{
		 	 int i,j;
		 	 char* tempstring;
		 	 for(i=0;i<numdog;i++)
		 	 {
		 	  	tempstring=doglist[i]->getname();
		 	  	if(strcmp(tempstring,doggonename)==0)
		 	  	{
		 	  	 	numdog--;
		 	  	 	for(j=i;j<numdog;j++)
		 	  	 	{
		 	  	 	 	doglist[j]=doglist[j+1];
		 	  	 	
		 	  	 	}
		 	  	 	
		 	  	}
		 	  	
		 	 }
			
		}    
		
 
};	

int main(int argc, char* argv[])
{
	char	cmd='0';
	dogs* 	mydogs = new dogs;
	dog*	adog = new dog("Not Found",0);	
	char*	newname;
	int		newweight,number,i;
	FILE	*ifp;
	

	while(cmd !='X') {
	cout<<"\n\n Enter Command \n";
	cout<<"L Load data from text file \n";
	cout<<"S Save data to text file \n";
	cout<<"A Add dog and weight \n";
	cout<<"D Delete a dog \n";
	cout<<"C Choose a dog \n";
	cout<<"X Exit \n" <<endl;
	
	cin>>cmd;
	
	switch (cmd) {
	
	case 'L':
			fflush(stdin);
			ifp = fopen("ddatin.txt", "r");
			fflush( ifp );
			fscanf(ifp, "%d", &number);
			while(fscanf(ifp, "%s", &newname) == 1)
			{
			 	fscanf(ifp, "%d", &newweight);
			 	mydogs->adddog(newname,newweight);
			}
			fclose(ifp);
			break;

	case 'S':
			fflush(stdout);
			ifp = fopen("ddatout.txt", "w");
			fprintf(ifp, "%d\n", mydogs->getnum());
			for(i=0;i<(mydogs->getnum());i++)
			{
			 	fprintf(ifp, "%s\n", mydogs->getdognumber(i)->getname());
			 	fprintf(ifp, "%d\n", mydogs->getdognumber(i)->getweight());
			 	
			}
			fflush(ifp);
			fclose(ifp);
			break;

	case 'A':
			cout<<"new dog name? \n";
			cin>>newname;
			cout<<"new dog weight? \n";
			cin>>newweight;
			mydogs->adddog(newname,newweight);
			break;

	case 'D':
			cout<<"dog name to delete?";
			cin>>newname;
			mydogs->deletedog(newname);
			break;

	case 'C':
			cout<<mydogs->getnum()<<endl;
			cout<<"dog name to select?";
			cin>>newname;
			adog = mydogs->finddog(newname);
			cout<<"Name: " << adog->getname() << "\n";
			cout<<"Weight: " << adog->getweight() << "\n";
			break;

	case 'X':
			
			break;
		
	} //end switch
	
	} //end while
	         
/*	cout<<"new dog name? \n";
	cin>>newname;
	cout<<"new dog weight? \n";
	cin>>newweight;
		              
	mydogs->adddog(newname,newweight);
	adog = mydogs->finddog(newname);
	cout<<adog->getname() << "\n";
	cout<<adog->getweight() << "\n";
	mydogs->deletedog(newname);
	cout<<"done." << endl;
*/		              
    return 0;

}
