Доброе утро!
Такая задачка.. Написать программу по созданию базы данных ( например: имя, фамилия, возраст).
Программа создает эту базу и работает с ней ( поиск,
добавление и т.д. ).
Эту часть задания сделал успешно. Не смог только сделать удаление.
Теперь код программы надо изменить под работу с файлом.
То есть, база хранится в файле, считывается оттуда программой и после работы, если в базе произошли изменения, файл перезаписывается.
Пропустил урок по работе с файлами, а сам разобраться не могу...
Вот код программы. Помогите изменить его под работу с файлами, плиз...
И, если можно, с удалением помогите разобраться...
Всю ночь бился - не получается...
Код:
#include <cstdlib>
#include <iostream>
#include <iomanip>
#include<cctype>
#include<cstring>
using namespace std;
struct human{
char first_name[20];//имя
char last_name[25];//фамилия
int age;//возраст
};
void Fill(human *,int);//заполнение базы данных
void Show(human *,int);//показ базы на экран
human* Zam(human *,int);//добавление новой учетной записи
void Poisk(human *,int);//поиск по имени
void Poisk_2(human *,int);//поиск по фамилии
void Poisk_3(human *,int);//поиск по возрасту
int main()
{
cout<<"Enter N: ";
int N;
cin>>N;
cout<<endl;
human*h=new human[N];
Fill(h,N);
cout<<"\n\n";
Show(h,N);
int x;
do
{
cout<<"Dlya dobavleniya novoy zapisi enter '0', dlya vuhoda druguyu zifru: ";
cin>>x;
if(x==0)
{
N++;
h=Zam(h,N);
Show(h,N);
}
}while(x==0);
do
{
cout<<"Dlya poiska po:\n Imeni: enter '0'\nFamiliy: enter '1'\nVozrastu: enter '2'\n Dlya vuhoda druguyu zifru: ";
cin>>x;
if(x==0)
{
Poisk(h,N);
}
else if(x==1)
{
Poisk_2(h,N);
}
else if(x==2)
{
Poisk_3(h,N);
}
}while(x==0||x==1||x==2);
cout<<endl;
system("pause");
delete[]h;
return 0;
}
void Fill(human*h,int N)
{
for(int i=0; i<N; i++)
{
cout<<"Enter First Name: ";
cin>>h[i].first_name;
cout<<"Enter Last Name: ";
cin>>h[i].last_name;
cout<<"Enter age: ";
cin>> h[i].age;
cout<<endl;
}
}
void Show(human*h,int N)
{
for(int i=0;i<N;i++)
{
cout<<"-----------------------------\n";
cout<<"First Name: "<<h[i].first_name<<endl;
cout<<" Last Name: "<<h[i].last_name<<endl;
cout<<" Age: "<<h[i].age<<endl;
cout<<"-----------------------------\n";
}
cout<<endl;
}
human* Zam(human *h,int N)
{
human*f=new human[N];
for(int i=0;i<N-1;i++)
{
strcpy(f[i].first_name,h[i].first_name);
strcpy(f[i].last_name,h[i].last_name);
f[i].age=h[i].age;
}
cout<<"Enter First Name: ";
cin>>f[N-1].first_name;
cout<<"Enter Last Name: ";
cin>>f[N-1].last_name;
cout<<"Enter age: ";
cin>> f[N-1].age;
cout<<endl;
delete[]h;
return f;
}
void Poisk(human *h,int N)
{
char imya[20];
cout<<"Enter imya: ";
cin>>imya;
for(int i=0;i<N;i++)
{
if(stricmp(h[i].first_name,imya)==0)
{
cout<<"-----------------------------\n";
cout<<"First Name: "<<h[i].first_name<<endl;
cout<<" Last Name: "<<h[i].last_name<<endl;
cout<<" Age: "<<h[i].age<<endl;
cout<<"-----------------------------\n";
}
}
cout<<endl;
}
void Poisk_2(human *h,int N)
{
char family[25];
cout<<"Enter family: ";
cin>>family;
for(int i=0;i<N;i++)
{
if(stricmp(h[i].last_name,family)==0)
{
cout<<"-----------------------------\n";
cout<<"First Name: "<<h[i].first_name<<endl;
cout<<" Last Name: "<<h[i].last_name<<endl;
cout<<" Age: "<<h[i].age<<endl;
cout<<"-----------------------------\n";
}
}
cout<<endl;
}
void Poisk_3(human *h,int N)
{
int vozrast;
cout<<"Enter vozrast: ";
cin>>vozrast;
for(int i=0;i<N;i++)
{
if(h[i].age==vozrast)
{
cout<<"-----------------------------\n";
cout<<"First Name: "<<h[i].first_name<<endl;
cout<<" Last Name: "<<h[i].last_name<<endl;
cout<<" Age: "<<h[i].age<<endl;
cout<<"-----------------------------\n";
}
}
cout<<endl;
}