Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для virus8

Пользователь


Сообщения: 63
Благодарности: 4

Профиль | Отправить PM | Цитировать


Ferget спасибо большое за помощь разобрался ))))
Только сделал поиск через strstr!!!
кому нужно код:

читать дальше »
Код: Выделить весь код
файл kniga.h

#ifndef KNIGA_H
#define KNIGA_H


class Tkniga
{
	static int num;
	char name[80];
	long phone;
	char addres[80];
	char file[20];
public:
	Tkniga();
	void Print() const;
	void Add();
	//void Delete(Tkniga f);
	void Search();
};

#endif

файл opis.cpp

#include "kniga.h"
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;

int Tkniga::num = 0;

Tkniga::Tkniga()
{
	strcpy(name, "None");
	phone = 0;
	strcpy(addres, "None");
}

void Tkniga::Print()const
{
	ifstream fin("database.txt", ios_base::in);
	char ch;
	while(fin.get(ch) )
		cout << ch;
	/*cout << "Name: " << name << endl
		<< "Addres: " << addres << endl
		<< "Phone: " << phone << endl;*/
}

void Tkniga::Add()
{
	num++;
	
	ofstream fout("database.txt", ios_base::out|ios_base::app);
	cout << "Enter name: ";
	cin.ignore(numeric_limits<streamsize>::max(), '\n');
	cin.getline(name, 80);
	cout << "Enter addres: ";
	cin.getline(addres, 80);
	cout << "Enter phone: ";
	cin >> phone;
	fout << num << ": " << "name: " << name << "; Addres: " << addres << "; Phone: " << phone << endl; 
}

void Tkniga::Search()             // ------ вот тут траблы не могу вьехать как передать файл для поиска
{
	ifstream fin("database.txt", ios_base::in);
	cout << "enter name: ";
	char Name[80];
	cin.ignore(numeric_limits<streamsize>::max(), '\n');
	cin.getline(Name, 80);
	//делаете временную переменную
         char forsearch[80];
        //считываете файл построчно
         while(!fin.eof())
	{ 
		fin.getline(forsearch,80);
		//здесь сравниваете forsearch и Name
		 if(strstr(forsearch, Name) != NULL)
		{
			cout << forsearch << endl;
		}
	}
}

файл usekniga.cpp

#include "kniga.h"
#include <iostream>
using namespace std;

int main()
{
	Tkniga abon;
	
	char ch;
	do
	{
		cout << "Menu\n";
		cout << "1) Dlya vvoda abonenta\n"
			<< "2) Dlya prosmotra vsex abonentov\n"
			<< "3) Dlya poiska po imeni\n";
		cin >> ch;
	}while(ch != '1' && ch != '2' && ch != '3');

	if(ch == '1')
	{
		abon.Add();
	}

	if(ch == '2')
	{
		abon.Print();
	}

	if(ch == '3')
		abon.Search();
	return 0;
}


И такой ещё вопрос у меня в классе реализована статическая переменная num она при работе программы добавляет число в новую строку. Вопрос в том, что эта переменная сбивается после закрытия программы и начинает всё с единицы писать. Можно ли сделать так, чтоб она считывала последний результат? Допустим последний абонент номер 5 и при добавлении она пишет уже 6 абонент.
Это сообщение посчитали полезным следующие участники:

Отправлено: 07:33, 05-04-2012 | #7