почему файл не создается потоком f или даже если он выводит только значения мусора? - PullRequest
0 голосов
/ 18 октября 2018

Мне пришлось разработать базовую систему управления больницей с использованием Turbo C ++.кажется, все работает нормально, включая функцию добавления записи, но когда я выбираю просмотр записей, которые были введены (через главное меню, созданное с помощью той же программы), функция просто начинает отображать бесконечный цикл случайных символов.Более того, я не могу найти файл, который был создан в C: \ TurboC ++ \ Disk \ TurboC3 \ BIN.

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

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

class hospital {
  int bill,
  ref,
  age;
  char disease[30],
  name[20],
  doctor[20],
  address[50],
  sex;
  public : void getdata() {
    cout<<"ENTER THE NAME OF THE PATIENT"<<endl;
    gets(name);
    cout<<endl<<"ENTER THE ADDRESS OF THE PATIENT"<<endl;
    gets(address);
    cout<<endl<<"ENTER THE NAME OF THE DIESEASE(S) OF THE PATIENT"<<endl;
    gets(disease);
    cout<<endl<<"ENTER THE SEX OF THE PATIENT(f/m)"<<endl;
    cin>>sex;
    cout<<endl<<"ENTER THE NAME OF THE DOCTOR"<<endl;
    gets(doctor);
    cout<<endl<<"ENTER THE PRESCRIPTION/REFERENCE no."<<endl;
    cin>>ref;
    cout<<endl<<"ENTER THE AGE OF THE PATIENT"<<endl;
    cin>>age;
    cout<<endl<<"ENTER THE BILL OF THE PATIENT"<<endl;
    cin>>bill;
  }
  void display() {
    cout<<endl<<"THE DETAILS OF THE PATIENT ARE AS FOLLOWS:"<<endl;
    cout<<"AGE:"<<age<<"\tREFERENCE/PRESCRIPTION no.:"<<ref;
    cout<<"\tTHE NAME OF PATIENT:";
    puts(name);
    cout<<endl<<"\tTHE NAME OF THE DOCTOR:";
    puts(doctor);
    cout<<endl<<"\tTHE DIAGNOSED/TESTED FOR DISEASE(S) IS/ARE :"<<endl;
    puts(disease);
    cout<<endl<<"THE SEX OF THE PATIENT IS "<<sex<<endl;
    cout<<endl<<"THE BILL OF THE PATIENT IS "<<bill<<endl;
    cout<<endl<<"THE ADDRESS OF THE PATIENT IS: "<<endl;
    puts(address);
  }
  int retref() {
    return ref;
  }
}

;
void main() {
  clrscr();
  hospital h;
  cout<<endl<<"\n\n\t\t\tLOADING...\n\t\tPLEASE WAIT..\n";
  system("pause");
  clrscr();
  cout<<endl<<"\tWELCOME TO THE HOSPITAL MANAGEMENT SYSTEM"<<endl;
  displayrec();
  getch();
}

Это функция для просмотра всех записей, которые были сохранены

void displayrec()
{
  hospital h;
  ifstream fin;
  fin.open("hospitalrecords.dat", ios: :binary);
  while(!fin.eof()) {
    h.display();
    if(fin.eof()) break;
  }
}

1 Ответ

0 голосов
/ 18 октября 2018

Вы ничего не читаете из файла, поэтому eof() будет всегда ложным, что приведет к бесконечному циклу.

На самом деле вам нужно прочитать что-то в цикле, и инициализируйте h данными, которые вы прочитали.

...