15.09.2010, 16:16
общий
это ответ
Здравствуйте, Barka.
Вот решение вашей задачи:
Приложение:
#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
using namespace std;
class student // основная структура
{
public:
char surname[20], city[15], university[10], date[15]; // фамилия, город, университет, дата поступления
void GetInfo(); // заполнение информации о студенте
void DrawInfo(); // вывод нформации о студенте
void FindData(); // поиск информации
};
void student::GetInfo()
{
cout << "Пожалуйста, введите следующие данные о студенте:" << endl;
cout << "Фамилия: ";
cin >> surname;
cout << "Город: ";
cin >> city;
cout << "Институт: ";
cin >> university;
cout << "Дата поступления: ";
cin >> date;
}
void student::DrawInfo()
{
cout << "Фамилия: " << surname << endl;
cout << "Город: " << city << endl;
cout << "Институт: " << university << endl;
cout << "Дата поступления: " << date << endl;
}
void student::FindData()
{
string find_str, temp;
int count = 0;
cout << "Пожалуйста, введите строку для поиска: ";
cin >> find_str;
temp = surname; // ищем в фамилии...
if(temp.find(find_str) != string::npos)
{
cout << temp << endl;
count++;
}
temp = city; // в городе...
if(temp.find(find_str) != string::npos)
{
cout << temp << endl;
count++;
}
temp = university; // в университете...
if(temp.find(find_str) != string::npos)
{
cout << temp << endl;
count++;
}
temp = date; // и в дате поступления.
if(temp.find(find_str) != string::npos)
{
cout << temp << endl;
count++;
}
if(count)
cout << "Строка найдена " << count << " раз" << endl;
else
cout << "Ничего не найдено" << endl;
}
int main()
{
ifstream in;
ofstream out;
string file; // имя файла
student student1; // наш студент
bool exit = false, exit1 = false; // выход из основного цикла и из цикла поиска
setlocale(LC_ALL, "rus");
while(!exit)
{
cout << "1)Открыть файл\n2)Новый файл\n3)Выход\n";
switch(cin.get() - '0')
{
case 1:
{
cout << "Введите имя файла: ";
cin >> file;
in.open(file, ios::in | ios::binary); // открываем файл
in.read((char*) &student1, sizeof student1); // считываем информацию
student1.DrawInfo();
in.close(); // закрываем фйл
cin.ignore(256, '\n'); // очищаем входящий поток
while(!exit1)
{
cout << "1)Поиск\n2)Назад\n";
switch(cin.get() - '0')
{
case 1:
{
student1.FindData();
system("pause");
system("cls");
student1.DrawInfo();
cin.ignore(256, '\n');
break;
}
default:
{
exit1 = true;
break;
}
}
}
break;
}
case 2:
{
cout << "Введите имя файла: ";
cin >> file;
out.open(file, ios::out | ios::binary);
student1.GetInfo();
out.write((char*) &student1, sizeof(student1)); // заполняем файл информацией
//out << 'EOF';
cout << "Информация успешно записана в файл." << endl;
system("pause");
out.close();
break;
}
case 3:
exit = true;
default:
break;
}
system("cls");
exit1 = false;
}
system("pause");
return 0;
}
5
Огромное спасибо за помощь!!!