#include "stdafx.h"
#include "iostream"
#include "fstream.h"
#include "iomanip.h"
#include "stdlib.h"
#include "conio.h"
#include "windows.h"

struct clientData
{
int accnum;
char lastname[255];
char firstname[255];
char balance[255];
};
int enterChoice(void);
void writeFile(fstream&);
void readFile(fstream&);
void FindFile(char, char*);
void outputLine(char*, char*,char*);

main()
{
    fstream inOutCredit("muvie.kurs", ios::in | ios::out);
     if(! inOutCredit)
	 {
      char fnf[30];
      CharToOem("справочный файл не найден!",fnf);
      cerr<<fnf<<endl;
      exit(1);
     }

int choice;
char p;
			 char par[20];
while ((choice=enterChoice())!=4)
{
     switch (choice)
     {
     case 1:
          readFile(inOutCredit);
           break;
     case 2:
          writeFile(inOutCredit);
           break;
     case 3:
	 system("cls"); 
	 char H[40];
	 printf("**************************************************************\n");
	 CharToOem("Поиск", H);
	 printf(H);
	 printf("\n");
	 printf("\n**************************************************************");
	 printf("\n1. ");
	 char J[40];
	 CharToOem("По названию", J);
	 printf(J);
	 printf("\n2. ");
	 char K[40]; 
	 CharToOem("По жанру", K);
	 printf(K);
	 printf("\n3. ");
	 char L[40];
	 CharToOem("По году выпуска", L);
	 printf(L);	
	 printf("\n**************************************************************");
	 printf("\n");
	 char M[40]; 
	 CharToOem("Строка поиска: ", M);
	 p='0'; 
	 while((p<'1')||(p>'7'))
     p=getch(); 
	 printf("%c",p);
	 switch(p)
		   {
           case '1':
			   printf("\n");
			   printf(M); 
			   cin>>par; 
			   FindFile(p,par); 
			   break;
           case '2': 
			   printf("\n");
			   printf(M); 
			   cin>>par; 
			   FindFile(p,par);
			   break;
           case '3': 
			   printf("\n");
			   printf(M); 
			   cin>>par; 
			   FindFile(p,par);
			   break;		           
		   
	       break;
     default:
char err[30];
printf("\n");
CharToOem("Некорректное действие!!!",err);
          cerr<<err<<endl;
          break;
     }
	 }
     inOutCredit. clear( );
}
return 0;

}
//-------------------------------------------------------------------------------
int enterChoice(void)
{
 char menu[256];
char* str="**************************************************************";
CharToOem("Введите одно из действий(1-4):\n 1 - Чтение данных из базы;\n 2 - Запись данных в базу;\n 3 - Поиск;\n 4 - Выход",menu);
cout<<endl<<str<<endl<<menu<<endl<<str<<endl;
     int menuChoice;
     cin>>menuChoice;
     return menuChoice;
}
//-----------------Чтение из файла и вывод ------------------------
void readFile(fstream&)
{
     ifstream inClientFile("muvie.kurs",ios::in);
     if (! inClientFile)
	 {
     char fnf[30];
     CharToOem("Файл справочника не найден",fnf);
     cerr<<fnf<<endl;
     exit(1);
     }
	 system("cls");
     char oblast[255];
     char ploshad[255];
     char naselenie[255];
	 char obl[20],pls[20],nas[20];
CharToOem("Название",obl);
CharToOem("Жанр",pls);
CharToOem("Год выпуска",nas);
	 printf("\n**************************************************************\n");
     cout<<setiosflags(ios::left)<<setw(10)<<obl<<setw(15)<<pls<<setw(10)<<nas<<endl;
     while (inClientFile>>oblast>>ploshad>>naselenie)
          outputLine(oblast,ploshad,naselenie);	 
}

 void outputLine(char* acct,char* name,char* bal)
{

     cout<<setiosflags(ios::left)<<setw(13)<<acct<<setw(14)<<name<<setw(15)<<bal<<endl;
}

//---------------- Вставить в файл ----------------------------
void writeFile(fstream&)
{ 
  ofstream outClientFile("muvie.kurs",ios::out | ios::app);
  if (! outClientFile)
  { 
  char fnf[30];
  CharToOem("Файл справочника не найден",fnf);
  cerr<<fnf<<endl;
  exit(1);
  }
system("cls");
char newrec[35];
printf("\n**************************************************************\n");
CharToOem("Введи следуюшие значения новой записи:",newrec);
cout<<newrec<<endl;
	 char oblast[255];
     char ploshad[255];
     char naselenie[255];
     char obl[30];
	 char pls[30];
	 char nas[30];
	CharToOem("Название: ",obl);
	cout<<obl;  
	cin >> oblast;
	CharToOem("Жанр: ",pls);
	cout<<pls;  
	cin>> ploshad;
	CharToOem("Год выпуска: ",nas);
	cout<<nas; 
	cin>> naselenie;
    outClientFile<<oblast<<" "<<ploshad<<" "<<naselenie<<endl;
}
//--------------------Поиск-------------------------------------

void FindFile(char c, char tpar[40])
{
 system("cls"); 
 char f[40];
 CharToOem("Результат поиска: ", f);
 printf(f);
 printf("\n\n");
 ifstream inClientFile("muvie.kurs", ios::in); 
 char acct[20], name[20],bal[20];
 char obl[20],pls[20],nas[20];
CharToOem("Название",obl);
CharToOem("Жанр",pls);
CharToOem("Год выпуска",nas);
     cout<<setiosflags(ios::left)<<setw(10)<<obl<<setw(15)<<pls<<setw(10)<<nas<<endl;
   while(inClientFile>>acct>>name>>bal)
 {
  switch(c)
  {
  case '1': 
	  if(!strcmp(tpar,acct))
	  outputLine(acct,name,bal);
	  break;
  case '2': 
	  if(!strcmp(tpar,name))
	  outputLine(acct,name,bal);
	  break;
  case '3': 
	  if(!strcmp(tpar,bal))
outputLine(acct,name,bal);
break;  
  }  
 }
}