Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.10.2011, 08:45   #1
Вячеслав1977
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 1
По умолчанию Работа с файлами в С++

Доброе утро!
Такая задачка.. Написать программу по созданию базы данных ( например: имя, фамилия, возраст).
Программа создает эту базу и работает с ней ( поиск,
добавление и т.д. ).
Эту часть задания сделал успешно. Не смог только сделать удаление.
Теперь код программы надо изменить под работу с файлом.
То есть, база хранится в файле, считывается оттуда программой и после работы, если в базе произошли изменения, файл перезаписывается.
Пропустил урок по работе с файлами, а сам разобраться не могу...
Вот код программы. Помогите изменить его под работу с файлами, плиз...
И, если можно, с удалением помогите разобраться...
Всю ночь бился - не получается...
Код:
#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;
}
Вячеслав1977 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с БД и файлами neonex БД в Delphi 2 31.05.2011 12:05
Работа с файлами kop Общие вопросы C/C++ 3 30.05.2011 20:07
Работа с файлами на С# Darh Помощь студентам 6 11.06.2010 03:00
С++ю Работа с файлами maloy-rom Помощь студентам 1 03.06.2009 16:18
Работа с файлами Cpluser Общие вопросы C/C++ 2 16.02.2009 23:22