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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2011, 19:15   #1
xdozorx
Пользователь
 
Регистрация: 09.06.2010
Сообщений: 15
По умолчанию Файлы, загрузка с файла

Есть два класса. нужно сохранить данные в базу и загрузить. Сохранение сделал. Подскажите как сделать загрузку с файла чтобы данные можно было просмотреть в методе show_manager();
Код:
class Manager
{
    private:
    char name[50];
    char fam[50];
    char year[50];
    char state[50];
    char login[50];
    char password[50];
        public:
    Manager();
    ~Manager() {}
    void Input();
    void Output();
        char *get_name(){return name;}
        char *get_fam(){return fam;}
        char *get_year(){return year;}
        char *get_state(){return state;}
        char *get_login(){return login;}
        char *get_passwod(){return password;}
};
class Cinema
{
    private:
        Manager *manager[50];
        int count_manager;
    public:
    Cinema();
    ~Cinema() {}
        void add_manager();
        void show_manager();
        void save_file();
        void load();
 };
void Manager::Input()
{
    system("cls");
        cout<<Rus("Введите имя ");
    cin.getline(name,sizeof(name));
        cout<<Rus("Введите фамилию ");
        cin.getline(fam,sizeof(fam));
    cout<<Rus("Введите год разждения ");
    cin.getline(year,sizeof(year));
    cout<<Rus("Введите статус ");
    cin.getline(state,sizeof(state));
    cout<<Rus("Введите логин ");
        cin.getline(login,sizeof(login));
    cout<<Rus("Введите пароль ");
        cin.getline(password,sizeof(password));
}
void Manager::Output()
{
        cout<<name<<" "<<fam<<" "<<year<<" "<<state<<" "<<login<<" "<<password<<" "<<endl;
}
void Cinema::add_manager()
{
        manager[count_manager]=new Manager();
        manager[count_manager]->Input();
        count_manager++;
}
void Cinema::show_manager()
{
        if(count_manager==0) cout<<Rus("База пуста");
        for(int i=0; i<count_manager; i++)
        {
                cout<<i+1<<" ";
                manager[i]->Output();
        }
}       
void Cinema::save_file()
{
        ofstream file("D:\\test.txt",ios::app);
        for (int i=0; i<count_manager; i++)
                file<<manager[i]->get_name()<<" "<<manager[i]->get_fam()<<" "<<
                manager[i]->get_year()<<" "<<manager[i]->get_state()<<" "<<
                manager[i]->get_login()<<" "<<manager[i]->get_passwod()<<endl;
        
}
Допустить в файле test.txt есть

денис семенов 1993 vip craft xxxxx
аднрей воробьев 1992 vip ssss pass
.................................
Ето нужно загрузить в базу чтобы выводило в методе show_manager()
xdozorx вне форума Ответить с цитированием
Старый 02.06.2011, 19:27   #2
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Как-то так. Поправите что-нибудь, если что:
Код:
class Manager
{
    private:
    char name[50];
    char fam[50];
    char year[50];
    char state[50];
    char login[50];
    char password[50];
        public:
    Manager();
    ~Manager() {}
    void Input();
    void Output();
        char *get_name(){return name;}
        char *get_fam(){return fam;}
        char *get_year(){return year;}
        char *get_state(){return state;}
        char *get_login(){return login;}
        char *get_passwod(){return password;}

    friend void Cinema::load_file();
};

\\ ........

void load_file()
{
   ifstream fin("D:\\test.txt");
   Manager manager;
   for(;;)
   {
      fin.getline(manger.name);
      fin.getline(manger.fam);
      // ...
      if(!fin)
          break;
       this->add_manger(manager);
   }
}
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума Ответить с цитированием
Старый 02.06.2011, 19:32   #3
xdozorx
Пользователь
 
Регистрация: 09.06.2010
Сообщений: 15
По умолчанию

спасибо, буду разбиратся. Сразу заметил add_manger(manager); у меня в классе етот метод не принимает параметров, мне надобудет его изменять?
xdozorx вне форума Ответить с цитированием
Старый 02.06.2011, 19:46   #4
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Цитата:
у меня в классе етот метод не принимает параметров, мне надобудет его изменять?
Нет, это я не заметил. Можете вместо вызыва функции поставить код:
Код:
manager[count_manger++] = new Manager(man);
И замените все слова manager в моей функции на man, чтобы проблем не было.
Короче, в итоге как-то так:
Код:
void load_file()
{
   ifstream fin("D:\\test.txt");
   Manager man;
   for(;;)
   {
      fin.getline(man.name, sizeof man.name, ' ');
      fin.getline(man.fam, sizeof man.fam, ' ');
      // ...
      if(!fin)
          break;
       manager[count_manger++] = new Manager(man);
   }
}
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."

Последний раз редактировалось Syuf; 02.06.2011 в 22:06.
Syuf вне форума Ответить с цитированием
Старый 02.06.2011, 20:29   #5
xdozorx
Пользователь
 
Регистрация: 09.06.2010
Сообщений: 15
По умолчанию

Делал делал, чето совсем не выходит
xdozorx вне форума Ответить с цитированием
Старый 02.06.2011, 22:06   #6
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Цитата:
Делал делал, чето совсем не выходит
Конкретнее?
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума Ответить с цитированием
Старый 02.06.2011, 22:21   #7
xdozorx
Пользователь
 
Регистрация: 09.06.2010
Сообщений: 15
По умолчанию

Выдает ошибки где fin.getline(man.name, sizeof man.name, ' '); пишет что name уже обьявлено в классе Manager.
а может можно тут както по другому типа
Код:
char temp[50];
while(file.eof())
{
   strcpy(temp, manager[count_manager]->name);
   strcpy(temp, manager[count_manager]->fam);
}
а сохранять в файл каждые данные с новой строки. но тут тоже такиеже ошибки, пишет что name,fam уже обьявлены в классе Managerю И еще там шото пишет , невозможно обратится к Private члену
xdozorx вне форума Ответить с цитированием
Старый 02.06.2011, 22:30   #8
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

А вы ту красную штуку из поста #2 вставили?
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума Ответить с цитированием
Старый 02.06.2011, 22:37   #9
xdozorx
Пользователь
 
Регистрация: 09.06.2010
Сообщений: 15
По умолчанию

Да, на той строчке пишет Cinema: не является именем класса или пространства имен,
ето наверно из за того что класс Cinema стоит ниже класса Manager, пишу на Visual Studio 2010
xdozorx вне форума Ответить с цитированием
Старый 02.06.2011, 22:43   #10
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Конечно. В самом верху добавьте такую вещь:
class Cinema;
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загрузка/Сохранение в текстовый и бинарный файлы. Kovy Помощь студентам 2 17.02.2011 12:04
Проблема такова: язык:Delphi7; сохранения файла; загрузка файла в String Grid lightdevil Общие вопросы Delphi 3 06.03.2009 23:10
загрузка из файла RAVAL)) Общие вопросы Delphi 2 04.03.2009 12:48
Загрузка из файла Raivolo Помощь студентам 3 05.02.2009 22:25
Загрузка файла AVer Работа с сетью в Delphi 0 11.02.2007 17:22