//***************************************************************
//                      HEADER FILE USED IN PROJECT
//****************************************************************
#include<conio.h>
#include<stdio.h>
#include<process.h>
#include<fstream.h>
#include<iomanip.h>
//***************************************************************
//                      CLASS USED IN PROJECT
//****************************************************************
class student
        int rollno;
        char name[50];
        int p_marks,c_marks,m_marks,e_marks,cs_marks;
        float per;
        char grade;
        int std;
        void calculate()
                   per=(p_marks+c_marks+m_marks+e_marks+cs_marks)/5.0;
                   if(per>=60)
                       grade='A';
                  else if(per>=50 && per<60)
                         grade='B';
                  else if(per>=33 && per<50)
                         grade='C';
                  else
                         grade='F';
 public:
           void getdata()
                  cout<<"\nEnter The roll number of student ";
                  cin>>rollno;
                  cout<<"\n\nEnter The Name of student ";
                  gets(name);
                  cout<<"\nEnter The marks in physics out of 100 : ";
                  cin>>p_marks;
                  cout<<"\nEnter The marks in chemistry out of 100 : ";
                  cin>>c_marks;
                  cout<<"\nEnter The marks in maths out of 100 : ";
                  cin>>m_marks;
                  cout<<"\nEnter The marks in english out of 100 : ";
                  cin>>e_marks;
                  cout<<"\nEnter The marks in computer science out of 100 :
";
                  cin>>cs_marks;
                  calculate();
           }
        void showdata()
                 cout<<"\nRoll number of student : "<<rollno;
                 cout<<"\nName of student : "<<name;
                 cout<<"\nMarks in Physics : "<<p_marks;
                 cout<<"\nMarks in Chemistry : "<<c_marks;
                 cout<<"\nMarks in Maths : "<<m_marks;
                 cout<<"\nMarks in English : "<<e_marks;
                 cout<<"\nMarks in Computer Science :"<<cs_marks;
                 cout<<"\nPercentage of student
is   :"<<setprecision(2)<<per;
                 cout<<"\nGrade of student is :"<<grade;
        void show_tabular()
        cout<<rollno<<setw(12)<<name<<setw(10)<<p_marks<<setw(3)<<c_marks<
<setw(3)<<m_marks<<setw(3)<<
e_marks<<setw(3)<<cs_marks<<setw(6)<<setprecision(3)<<per<<"    "<<grade<<e
ndl;
        int   retrollno()
        {        return rollno;         }
};          //class ends here
//***************************************************************
//                global declaration for stream object, object
//****************************************************************
    fstream fp;
    student st;
//***************************************************************
//                function to write in file
//****************************************************************
void write_student()
           fp.open("student.dat",ios::out|ios::app);
           st.getdata();
           fp.write((char*)&st,sizeof(student));
           fp.close();
           cout<<"\n\nstudent record Has Been Created ";
           getch();
//***************************************************************
//                function to read all records from file
//****************************************************************
void display_all()
{
        clrscr();
        cout<<"\n\n\n\t\tDISPLAY ALL RECORD !!!\n\n";
        fp.open("student.dat",ios::in);
        while(fp.read((char*)&st,sizeof(student)))
                st.showdata();
                cout<<"\n\n====================================\n";
                 getch();
            fp.close();
            getch();
//***************************************************************
//            function to read specific record from file
//****************************************************************
void display_sp(int n)
        int flag=0;
        fp.open("student.dat",ios::in);
        while(fp.read((char*)&st,sizeof(student)))
                if(st.retrollno()==n)
                   {
                       clrscr();
                       st.showdata();
                       flag=1;
        fp.close();
        if(flag==0)
                   cout<<"\n\nrecord not exist";
        getch();
//***************************************************************
//            function to modify record of file
//****************************************************************
void modify_student()
        int no,found=0;
        clrscr();
        cout<<"\n\n\tTo Modify ";
        cout<<"\n\n\tPlease Enter The roll number of student";
        cin>>no;
        fp.open("student.dat",ios::in|ios::out);
        while(fp.read((char*)&st,sizeof(student)) && found==0)
        {
                  if(st.retrollno()==no)
                       st.showdata();
                       cout<<"\nPlease Enter The New Details of
student"<<endl;
                       st.getdata();
                       int pos=-1*sizeof(st);
                       fp.seekp(pos,ios::cur);
                       fp.write((char*)&st,sizeof(student));
                       cout<<"\n\n\t Record Updated";
                       found=1;
            fp.close();
            if(found==0)
                  cout<<"\n\n Record Not Found ";
            getch();
//***************************************************************
//            function to delete record of file
//****************************************************************
void delete_student()
{
           int no;
           clrscr();
               cout<<"\n\n\n\tDelete Record";
               cout<<"\n\nPlease Enter The roll number of student You Want To
Delete";
               cin>>no;
               fp.open("student.dat",ios::in|ios::out);
               fstream fp2;
               fp2.open("Temp.dat",ios::out);
               fp.seekg(0,ios::beg);
               while(fp.read((char*)&st,sizeof(student)))
                     if(st.retrollno()!=no)
                          fp2.write((char*)&st,sizeof(student));
               fp2.close();
               fp.close();
               remove("student.dat");
               rename("Temp.dat","student.dat");
               cout<<"\n\n\tRecord Deleted ..";
               getch();
//***************************************************************
//               function to display all students grade report
//****************************************************************
void class_result()
        clrscr();
        fp.open("student.dat",ios::in);
             if(!fp)
                cout<<"ERROR!!! FILE COULD NOT BE OPEN\n\n\n Go To Entry
Menu to create File";
                cout<<"\n\n\n Program is closing ....";
                getch();
                exit(0);
        cout<<"\n\n\t\tALL STUDENTS RESULT \n\n";
        cout<<"====================================================\n";
        cout<<"Roll No. Name          P   C   M   E   CS   %age Grade\n";
        cout<<"====================================================\n";
        while(fp.read((char*)&st,sizeof(student)))
                st.show_tabular();
             fp.close();
             getch();
//***************************************************************
//            function to display result menu
//****************************************************************
void result()
           int ans,rno;
           char ch;
               clrscr();
               cout<<"\n\n\nRESULT MENU";
            cout<<"\n\n\n1. Class Result\n\n2. Student Report
Card\n\n3.Back to Main Menu";
               cout<<"\n\n\nEnter Choice (1/2)? ";
               cin>>ans;
               switch(ans)
                      case 1 : class_result();break;
                      case 2 : {
                             do{
                                   clrscr();
                                   char ans;
                                   cout<<"\n\nEnter Roll Number Of Student : ";
                                   cin>>rno;
                                   display_sp(rno);
                                   cout<<"\n\nDo you want to See More Result
(y/n)?";
                                   cin>>ans;
                               }while(ans=='y'||ans=='Y');
                             break;
                                      }
                case 3: break;
                default:    cout<<"\a";
//***************************************************************
//             INTRODUCTION FUNCTION
//****************************************************************
void intro()
        clrscr();
         gotoxy(35,11);
         cout<<"STUDENT";
         gotoxy(33,14);
         cout<<"REPORT CARD";
         gotoxy(35,17);
         cout<<"PROJECT";
         cout<<"\n\nMADE BY : SULABH AGRAWAL";
         cout<<"\n\nSCHOOL : CAMBRIDGE SCHOOL";
         getch();
//***************************************************************
//             ENTRY / EDIT MENU FUNCTION
//****************************************************************
void entry_menu()
            clrscr();
        char ch2;
            cout<<"\n\n\n\tENTRY MENU";
            cout<<"\n\n\t1.CREATE STUDENT RECORD";
            cout<<"\n\n\t2.DISPLAY ALL STUDENTS RECORDS";
            cout<<"\n\n\t3.SEARCH STUDENT RECORD ";
            cout<<"\n\n\t4.MODIFY STUDENT RECORD";
            cout<<"\n\n\t5.DELETE STUDENT RECORD";
            cout<<"\n\n\t6.BACK TO MAIN MENU";
            cout<<"\n\n\tPlease Enter Your Choice (1-6) ";
            ch2=getche();
            switch(ch2)
                 case '1': clrscr();
                               write_student();
                               break;
                 case '2': display_all();break;
                 case '3':
                                 int num;
                                 clrscr();
                                 cout<<"\n\n\tPlease Enter The roll number
";
                                 cin>>num;
                                 display_sp(num);
                                 break;
                 case '4': modify_student();break;
                   case '5': delete_student();break;
                   case '6': break;
                   default:cout<<"\a";entry_menu();
//***************************************************************
//      THE MAIN FUNCTION OF PROGRAM
//****************************************************************
void main()
        char ch;
             intro();
        do
                   clrscr();
                        cout<<"\n\n\n\tMAIN MENU";
                        cout<<"\n\n\t01. RESULT MENU";
                        cout<<"\n\n\t02. ENTRY/EDIT MENU";
                        cout<<"\n\n\t03. EXIT";
                        cout<<"\n\n\tPlease Select Your Option (1-3) ";
                        ch=getche();
                        switch(ch)
                        {
                    case '1': clrscr();
                            result();
                               break;
                      case '2': entry_menu();
                                break;
                      case '3':exit(0);
                      default :cout<<"\a";
            }while(ch!='3');
//***************************************************************
//                  END OF PROJECT
//***************************************************************
//************************************************************
***
//                   HEADER FILE USED IN PROJECT
//************************************************************
****
#include<fstream.h>
#include<iomanip.h>
#include<stdio.h>
#include<conio.h>
//************************************************************
***
//                   CLASS USED IN PROJECT
//************************************************************
****
class student
{
      int rollno;
      char name[50];
      int p_marks, c_marks, m_marks, e_marks, cs_marks;
      float per;
      char grade;
      void calculate(); //function to calculate grade
public:
      void getdata();         //function to accept data from
user
      void showdata(); //function to show data on screen
      void show_tabular();
      int retrollno();
}; //class ends here
void student::calculate()
{
      per=(p_marks+c_marks+m_marks+e_marks+cs_marks)/5.0;
      if(per>=60)
            grade='A';
      else if(per>=50)
            grade='B';
      else if(per>=33)
            grade='C';
      else
            grade='F';
}
void student::getdata()
{
      cout<<"\nEnter The roll number of student ";
      cin>>rollno;
      cout<<"\n\nEnter The Name of student ";
      gets(name);
      cout<<"\nEnter The marks in physics out of 100 : ";
      cin>>p_marks;
      cout<<"\nEnter The marks in chemistry out of 100 : ";
      cin>>c_marks;
      cout<<"\nEnter The marks in maths out of 100 : ";
      cin>>m_marks;
      cout<<"\nEnter The marks in english out of 100 : ";
      cin>>e_marks;
      cout<<"\nEnter The marks in computer science out of 100
: ";
      cin>>cs_marks;
      calculate();
}
void student::showdata()
{
      cout<<"\nRoll number of student : "<<rollno;
      cout<<"\nName of student : "<<name;
      cout<<"\nMarks in Physics : "<<p_marks;
      cout<<"\nMarks in Chemistry : "<<c_marks;
      cout<<"\nMarks in Maths : "<<m_marks;
      cout<<"\nMarks in English : "<<e_marks;
      cout<<"\nMarks in Computer Science :"<<cs_marks;
      cout<<"\nPercentage of student is :"<<per;
      cout<<"\nGrade of student is :"<<grade;
}
void student::show_tabular()
{
      cout<<rollno<<setw(6)<<"
"<<name<<setw(10)<<p_marks<<setw(4)<<c_marks<<setw(4)<<m_marks
<<setw(4)
      <<e_marks<<setw(4)<<cs_marks<<setw(6)<<per<<setw(6)<<"
"<<grade<<endl;
}
int   student::retrollno()
{
       return rollno;
}
//************************************************************
***
//    function declaration
//************************************************************
****
void write_student();    //write the record in binary file
void display_all();      //read all records from binary file
void display_sp(int);    //accept rollno and read record from
binary file
void modify_student(int);      //accept rollno and update
record of binary file
void delete_student(int);      //accept rollno and delete
selected records from binary file
void class_result();     //display all records in tabular
format from binary file
void result();           //display result menu
void intro();            //display welcome screen
void entry_menu(); //display entry menu on screen
//************************************************************
***
//    THE MAIN FUNCTION OF PROGRAM
//************************************************************
****
int main()
{
      char ch;
      cout.setf(ios::fixed|ios::showpoint);
      cout<<setprecision(2); // program outputs decimal number
to two decimal places
      clrscr();
      intro();
      do
      {
            clrscr();
            cout<<"\n\n\n\tMAIN MENU";
            cout<<"\n\n\t01. RESULT MENU";
            cout<<"\n\n\t02. ENTRY/EDIT MENU";
            cout<<"\n\n\t03. EXIT";
            cout<<"\n\n\tPlease Select Your Option (1-3) ";
            cin>>ch;
            clrscr();
            switch(ch)
            {
                  case '1': result();
                        break;
                  case '2': entry_menu();
                        break;
                  case '3':
                        break;
                  default :cout<<"\a";
            }
      }while(ch!='3');
      return 0;
}
//************************************************************
***
//    function to write in file
//************************************************************
****
void write_student()
{
      student st;
      ofstream outFile;
      outFile.open("student.dat",ios::binary|ios::app);
      st.getdata();
      outFile.write((char *) &st, sizeof(student));
      outFile.close();
      cout<<"\n\nStudent record Has Been Created ";
      cin.ignore();
      getch();
}
//************************************************************
***
//    function to read all records from file
//************************************************************
****
void display_all()
{
      student st;
      ifstream inFile;
      inFile.open("student.dat",ios::binary);
      if(!inFile)
      {
            cout<<"File could not be open !! Press any
Key...";
            getch();
            return;
      }
      cout<<"\n\n\n\t\tDISPLAY ALL RECORD !!!\n\n";
      while(inFile.read((char *) &st, sizeof(student)))
      {
            st.showdata();
      cout<<"\n\n====================================\n";
      }
      inFile.close();
      getch();
}
//************************************************************
***
//    function to read specific record from file
//************************************************************
****
void display_sp(int n)
{
      student st;
      ifstream inFile;
      inFile.open("student.dat",ios::binary);
      if(!inFile)
      {
            cout<<"File could not be open !! Press any
Key...";
            getch();
            return;
      }
      int flag=0;
      while(inFile.read((char *) &st, sizeof(student)))
      {
            if(st.retrollno()==n)
            {
                   st.showdata();
                   flag=1;
            }
      }
      inFile.close();
      if(flag==0)
            cout<<"\n\nrecord not exist";
      getch();
}
//************************************************************
***
//    function to modify record of file
//************************************************************
****
void modify_student(int n)
{
      int found=0;
      student st;
      fstream File;
      File.open("student.dat",ios::binary|ios::in|ios::out);
      if(!File)
      {
            cout<<"File could not be open !! Press any
Key...";
            getch();
            return;
      }
      while(File.read((char *) &st, sizeof(student)) &&
found==0)
      {
            if(st.retrollno()==n)
            {
                   st.showdata();
                   cout<<"\n\nPlease Enter The New Details of
student"<<endl;
                   st.getdata();
                   int pos=(-1)*sizeof(st);
                  File.seekp(pos,ios::cur);
                  File.write((char *) &st, sizeof(student));
                  cout<<"\n\n\t Record Updated";
                  found=1;
            }
      }
      File.close();
      if(found==0)
            cout<<"\n\n Record Not Found ";
      getch();
}
//************************************************************
***
//    function to delete record of file
//************************************************************
****
void delete_student(int n)
{
      student st;
      ifstream inFile;
      inFile.open("student.dat",ios::binary);
      if(!inFile)
      {
            cout<<"File could not be open !! Press any
Key...";
            getch();
            return;
      }
      ofstream outFile;
      outFile.open("Temp.dat",ios::out);
      inFile.seekg(0,ios::beg);
      while(inFile.read((char *) &st, sizeof(student)))
      {
            if(st.retrollno()!=n)
            {
                  outFile.write((char *) &st,
sizeof(student));
            }
      }
      outFile.close();
      inFile.close();
      remove("student.dat");
      rename("Temp.dat","student.dat");
      cout<<"\n\n\tRecord Deleted ..";
      getch();
}
//************************************************************
***
//    function to display all students grade report
//************************************************************
****
void class_result()
{
      student st;
      ifstream inFile;
      inFile.open("student.dat",ios::binary);
      if(!inFile)
      {
            cout<<"File could not be open !! Press any
Key...";
            getch();
            return;
      }
      cout<<"\n\n\t\tALL STUDENTS RESULT \n\n";
      cout<<"=================================================
=========\n";
      cout<<"R.No       Name        P   C   M   E   CS   %age
Grade"<<endl;
      cout<<"=================================================
=========\n";
      while(inFile.read((char *) &st, sizeof(student)))
      {
            st.show_tabular();
      }
      getch();
      inFile.close();
}
//************************************************************
***
//    function to display result menu
//************************************************************
****
void result()
{
      char ch;
      int rno;
      cout<<"\n\n\n\tRESULT MENU";
      cout<<"\n\n\n\t1. Class Result";
      cout<<"\n\n\t2. Student Report Card";
      cout<<"\n\n\t3. Back to Main Menu";
      cout<<"\n\n\n\tEnter Choice (1/2/3)? ";
      cin>>ch;
      clrscr();
      switch(ch)
      {
      case '1' :class_result(); break;
      case '2' :cout<<"\n\n\tEnter Roll Number Of Student : ";
               cin>>rno;
               display_sp(rno); break;
      case '3' :break;
      default :cout<<"\a";
      }
}
//************************************************************
***
//    INTRODUCTION FUNCTION
//************************************************************
****
void intro()
{
      cout<<"\n\n\n\t\t STUDENT";
      cout<<"\n\n\t\tREPORT CARD";
      cout<<"\n\n\t\t PROJECT";
      cout<<"\n\n\n\tMADE BY : SULABH AGRAWAL";
      cout<<"\n\tSCHOOL : CAMBRIDGE SCHOOL";
      getch();
}
//************************************************************
***
//    ENTRY / EDIT MENU FUNCTION
//************************************************************
****
void entry_menu()
{
      char ch;
      int num;
      clrscr();
      cout<<"\n\n\n\tENTRY MENU";
      cout<<"\n\n\t1.CREATE STUDENT RECORD";
      cout<<"\n\n\t2.DISPLAY ALL STUDENTS RECORDS";
      cout<<"\n\n\t3.SEARCH STUDENT RECORD ";
      cout<<"\n\n\t4.MODIFY STUDENT RECORD";
      cout<<"\n\n\t5.DELETE STUDENT RECORD";
      cout<<"\n\n\t6.BACK TO MAIN MENU";
      cout<<"\n\n\tPlease Enter Your Choice (1-6) ";
      cin>>ch;
      clrscr();
      switch(ch)
      {
      case '1':   write_student(); break;
      case '2':   display_all(); break;
      case '3':   cout<<"\n\n\tPlease Enter The roll number ";
cin>>num;
                  display_sp(num); break;
      case '4':   cout<<"\n\n\tPlease Enter The roll number ";
cin>>num;
                  modify_student(num);break;
      case '5':   cout<<"\n\n\tPlease Enter The roll number ";
cin>>num;
                  delete_student(num);break;
      case '6':   break;
      default:    cout<<"\a"; entry_menu();
      }
}
//************************************************************
***
//                END OF PROJECT
//************************************************************
***