данные записываются в файл только через несколько шагов

0

код

#include<iostream>
#include<fstream>
#include<conio.h>
#include<string>

using namespace std;
class student
{
            int admno;
           char name[20];
          // char address[20];
           //string name;
public:
          void getdata()
          {
                     cout<<"\n\nEnter The Name of The Student ";
                     //gets(name);
                     //cin.ignore();
                     cin>>name;

                     cout<<"\nEnter The admission no. ";
                     cin>>admno;


                     // getch();
          }
          void showdata()
          {
                     cout<<"\nAdmission no. : "<<admno;
                     cout<<"\nStudent Name : "<<name<<endl;

                     //puts(name);

          }


          void display()
      {
          //student obj;
          ifstream fp1;
          fp1.open("student.dat",ios::binary);
          while(fp1.read((char*)this,sizeof(*this)))
          {
                     this->showdata();
                     fp1.read((char*)this,sizeof(*this));
          }

          fp1.close();
      }

          void add()
          {
          ofstream fp2;
          fp2.open("student.dat",ios::binary|ios::app);
          this->getdata();
          fp2.write((char*)this,sizeof(*this));
           fp2.close();
          }



};


int main()
{
     student obj;
    //system("cls");
    cout<<"\n1. Add new student";
    cout<<"\n2. View all student";
    cout<<"\n3. Search student";
    cout<<"\n4. modify student";
    cout<<"\n5. delete student";
    cout<<"\n6. Exit";
    cout<<"\n\nEnter your choice";
    int ch;
    cin>>ch;
     switch(ch)
           {
                     case 1:

                            obj.add();
                            break;                        
                     case 2:
                           obj.display();
                            //b.viewbook();
                            break;

                     default:
                            cout<<"Enter Valid choice";
           }





return 0;
}

проблема:

когда я ввожу данные в файл, данные записываются в файл только на альтернативных шагах. при первом запуске и введите данные в порядке, а во втором - добавить ученика, данные не записаны в файл и снова на следующем шаге, который он правильно пишет, и он продолжает давать правильный вывод в альтернативном дополнении.

Теги:
visual-c++

1 ответ

0

Вы должны поместить свой switch в цикл:

bool exitLoop = false;
while(!exitLoop) {
     int ch;
     cin>>ch;
     switch(ch) {
         case '1':
             obj.add();
             break;                        
         case '2':
             obj.display();
             //b.viewbook();
             break;
         case '6':
             exitLoop = true;
             break;
         default:
             cout<<"Enter Valid choice";
     }
}

Также обратите внимание, как обрабатывать ввод символов: 1 != '1'

Ещё вопросы

Сообщество Overcoder
Наверх
Меню