This program is a small hospital management program. It works with C++ and uses binary files and classes. it is a simple prog that taken the input of patients details and saves in a binary file, and displays the patients details by searching regno.
The code does not run beyond : cin>>A1.PI.age; and starts printing endless loop of something.
PLEASE REPLY ME ON WHERE HAVE I GONE WRONG
here is the code:
#include<iostream.h>
#include<conio.h>
#include<fstream.h>
#include<string.h>
#include<stdlib.h>
class all
{ private:
struct address
{ int house;
  char street[30];
  char city[30];};
  struct patient_info
{ char name[40];
  address AD1;
  int age;
  int maritalstatus;
  int regno;
  char bldgrp[3];
  char sex;
}PI;
int task;
protected:
 void firstpinfo();
 void showpinfo();
 void enterpinfo();
public:
 void tasks();
 char ch;
 int serial;
}A1;
class date :public all
 { private :
   int day;
   int month;
   int year;
   public:
   void enterdate()
    {cout<<"enter day of date";
     cin>>day;
     cout<<"enter month";
     cin>>month;
     cout<<"enter year";
     cin>>year;
    }
   void showdate()
     { cout<<day<<"/"<<month<<"/"<<year;}
  }D1;
 //global variables
  int count,attempt;
void main()
{ count=0;
  cout<<"                                       HOSPITAL MANAGEMENT SOFTWARE                                      
  ";
  D1.enterdate();
  A1.tasks();
  getch();
  while(count==0)
   { A1.tasks();
     cout<<"press 0 to continue and 1 to exit";
     cin>> count;
   }
  getch();
 }
  void all::tasks()
 { attempt=0;
  D1.showdate();
  cout<<"select task"<<endl
  <<"1.show patient details"<<endl
  <<"2.enter details of a patient"<<endl
  <<"3.exit prog"<<endl;
  cin>>task;
  switch(task)
 {
    case 1: {cout<<"enter regno to display"<<endl;
    int search;
    cin>>search;
    fstream fon;
    fon.open("hospital.dat",ios::in|ios::binary);
    if(!fon)
     {cout<<"error in opening"<<endl;
      getch();
      exit(0);
      }
    else
     {fon.read((char*)&A1,sizeof(A1));
      if(A1.PI.regno==search)
       {cout<<"showing details";
       A1.showpinfo();}
      else
       {cout<<"regno not found";}
        fon.close();
        }
  break;}
case 2: {cout<<"adding a new patient";
  A1.enterpinfo();
  fstream fan;
  fan.open("hospital.dat",ios::in|ios::binary);
  if(fan)
  {fan.write((char*)&A1,sizeof(A1));}
  fan.close();
  break;}
 case 3: { cout<<"exiting...press any key";
   getch();
   exit(0);
   break;
   }
 default: {cout<<"error... press anykey to try again";
  getch();
  A1.tasks();
  };
 }}//END OF TASKS
 void all::showpinfo()
 {cout<<"patient regno\n"<<A1.PI.regno<<endl;
 cout<<"patient name\n"<<A1.PI.name<<endl;
 cout<<"address of patient\n"<<A1.PI.AD1.house<<" "<< PI.AD1.street<<" "<<PI.AD1.city<<endl;
 cout<<"blood group"<<A1.PI.bldgrp<<endl;
 cout<<"sex"<<A1.PI.sex<<endl;
 cout<<"data extracted";
 }
 void all:: enterpinfo()
 {
  cout<<"enter unique registration number";
  cin>>PI.regno;
  cout<<"enter patient name"<<endl;
  cin.getline(A1.PI.name,50);
  cout<<"enter address( house, street, city)"<<endl;
  cin>>A1.PI.AD1.house;
  cin.getline(A1.PI.AD1.street,30);
  cin.getline(A1.PI.AD1.city,30);
  cout<<"enter age in years"<<endl;
  cin>>A1.PI.age;
  cout<<"enter 1 for married and 0 for otherwise"<<endl;
  cin>>A1.PI.maritalstatus;
  cout<<"enter blood group"<<endl;
  cin>>A1.PI.bldgrp;
  cout<<"enter M for male and F for female";
  cin>>A1.PI.sex;
  }
 
    