Caleb Pradhan

Official Webpage of 

C++ SOURCE CODES SELF COMPILED

C++ SOURCE CODES
 

by Caleb Pradhan

DEFENCE ARMAMENT DATABASE MANAGEMENT

(Project compiled as part of CBSE AISSCE 2013) 

The source code:

 

//HEADER FILE USED IN PROJECT

 

 

#include<fstream.h>

#include<conio.h>

#include<stdio.h>

#include<process.h>

#include<string.h>

#include<iomanip.h>

 

 

//CLASS USED IN PROJECT

 

class armoury

{

 char arm_no[6];

 char arm_name[50];

 char arm_lncode[20];

 char arm_divuse[20];

 char arm_manfct[20];

 char arm_type[20];

 public:

   void create_armoury()

   {

 cout<<"\n***************NEW ARMAMENT ENTRY***************\n";

 cout<<"\nEnter The Armoury no(4-DIGIT)------------->>";

 cin>>arm_no;

 cout<<"\n\nEnter The Name of The Armoury------------->> ";

 gets(arm_name);

 cout<<"\n\nEnter The Licensee Code of The Armoury------------->> ";

 gets(arm_lncode);

 cout<<"\n\nEnter The Manufacturer of The Armoury------------->> ";

 gets(arm_manfct);

 cout<<"\n\nEnter The type of The Armoury------------->> ";

 gets(arm_type);

 cout<<"\n\nEnter The Division For Usage(ARMY/IAF/NAVY)------------->> ";

 gets(arm_divuse);

 cout<<"\n\n\nARMAMENT Created..............";               

   }

 

   void show_armoury()

{  cout<<"\n\n";

 cout<<"================================================================================";

 cout<<"\n***************ARMOURY NO*************** : "<<arm_no;

 cout<<"\n\nName of The Armoury------------->> ";

 puts(arm_name);

 cout<<"\n\nLicensee Code of The Armoury------------->> ";

 puts(arm_lncode);

 cout<<"\n\nManufacturer of The Armoury------------->> ";

 puts(arm_manfct);

 cout<<"\n\ntype of The Armoury------------->> ";

 puts(arm_type);

 cout<<"\n\nDivision For Usage(ARMY/IAF/NAVY)------------->> ";

 puts(arm_divuse);

 cout<<"\n\n";

 cout<<"================================================================================";

}

 

 void modify_armoury()

{

cout<<"\n***************CURRENT  ARMOURY  NO*************** : "<<arm_no;

cout<<"\n\nModify Armoury Name------------->> ";

gets(arm_name);

cout<<"\n\nModify Licensee Code of The Armoury------------->> ";

gets(arm_lncode);

cout<<"\n\nModify Manufacturer of The Armoury------------->> ";

gets(arm_manfct);

cout<<"\n\nModify type of The Armoury------------->> ";

gets(arm_type);

cout<<"\n\nModify Division For Usage(ARMY/IAF/NAVY)------------->> ";

gets(arm_divuse);

}

 

char* retarm_no()

{

return arm_no;

}

 

void report()

{cout<<arm_no<<setw(10)<<arm_name<<setw(12)<<arm_lncode<<setw(14)<<arm_manfct<<setw(16)<<arm_type<<setw(18)<<arm_divuse<<endl;}

};

//class ends here

 

class defence_pers

{

 char dpentry_code[6];

 char dp_name[20];

 char dpdiv[10];

 char dp_rank[20];

 char dp_branch[10];

 char dp_command[10];

 char dp_station[20];

 char dp_trade[20];

 char defparm_no[10];

 int token;

public:

 void create_defence_pers()

 {

 clrscr();

 cout<<"\n***************NEW DEFENCE PERSONNEL ENTRY*************\n";

 cout<<"\n\nEnter The Defence Personnel's Entry Code(5-DIGIT)------------->> ";

 cin>>dpentry_code;

 cout<<"\nEnter The Name of The Defence Personnel------------->> ";

 gets(dp_name);

 cout<<"\nEnter The Division of The Defence Personnel(Army/IAF/Navy)------------->> ";

 gets(dpdiv);

 cout<<"\nEnter The Rank of The Defence Personnel------------->> ";

 gets(dp_rank);

cout<<"\nEnter The Branch of The Defence Personnel(tech/NT/FLYING/GROUND)------------->> ";

 gets(dp_branch);

cout<<"\nEnter The Command where Defence Personnel POSTED(N/E/W/S)------------->> ";

 gets(dp_command);

cout<<"\nEnter The STATION/BASE/FRONT where Defence Personnel posted------------->> ";

 gets(dp_station);

 cout<<"\nEnter The Trade of The Defence Personnel------------->> ";

 gets(dp_trade);

 

 token=0;

 defparm_no[0]='/0';//TAKING INITIAL POS AS NULL

 cout<<"\n\nDefence Personnel Record Created...............";

 }

 

 void show_defence_pers()

 {  cout<<"\n\n";

cout<<"================================================================================";

cout<<"\nDefence Personnel Entry code(5-DIGIT)------------->>  "<<dpentry_code;

cout<<"\nName of The Defence Personnel------------->> ";

puts(dp_name);

cout<<"\nDivision of The Defence Personnel(Army/IAF/Navy)------------->> ";

puts(dpdiv);

cout<<"\nRank of The Defence Personnel------------->> ";

puts(dp_rank);

cout<<"\nBranch of The Defence Personnel(tech/NT/FLYING/GROUND)------------->> ";

puts(dp_branch);

cout<<"\nCommand where Defence Personnel POSTED(N/E/W/S)------------->> ";

puts(dp_command);

cout<<"\nSTATION/BASE/FRONT where Defence Personnel posted------------->> ";

puts(dp_station);

cout<<"\nTrade of The Defence Personnel------------->> ";

puts(dp_trade);

 

cout<<"\nNo of Armament issued------------->>  "<<token;

 if(token==1)

 cout<<"\nIssued armoury No------------->> "<<defparm_no;

  cout<<"\n\n";

cout<<"================================================================================";

}

 

void modify_defence_pers()

{

 cout<<"\n************CURRENT  DEFENCE PERSONNEL ENTRY CODE********** : "<<dpentry_code;

 cout<<"\n\nModify Defence Personnel Name.------------->> ";

 gets(dp_name);

 cout<<"\nModify Division of The Defence Personnel(Army/IAF/Navy)------------->> ";

 gets(dpdiv);

 cout<<"\nModify Rank of The Defence Personnel------------->> ";

 gets(dp_rank);

 cout<<"\nModify Branch of The Defence Personnel(tech/NT/FLYING/GROUND)------------->> ";

 gets(dp_branch);

 cout<<"\nModify Command where Defence Personnel POSTED(N/E/W/S)------------->> ";

 gets(dp_command);

 cout<<"\nModify STATION/BASE/FRONT where Defence Personnel posted------------->> ";

 gets(dp_station);

 cout<<"\nModify Trade of The Defence Personnel------------->> ";

 gets(dp_trade);

 }

 

 char* retdpentry_code()

 {

 return dpentry_code;

 }

 char* retdefparm_no()

 {

 return defparm_no;

 }

 int rettoken()

 {

 return token;

 }

 void addtoken()

 {token=1;}

 void resettoken()

 {token=0;}

 void getdefparm_no(char t[])

 {

 strcpy(defparm_no,t);

 }

 

 void report()

 {cout<<setw(5)<<dpentry_code<<setw(9)<<dp_name<<setw(6)<<dpdiv<<setw(16) <<dp_rank<<setw(6)<<dp_branch<<setw(4)<<dp_command<<setw(14)<<dp_station<<setw(8) <<dp_trade<<setw(4)<<token<<endl;

 }

};      //class ends here

 

//            global declaration for stream object, object

 

fstream fp,fp1;

armoury arm;

defence_pers defp;

 

//            function to write in file

 

void write_armoury()

{

 char ch;

 fp.open("armoury.dat",ios::out|ios::app);

  do

  {

  clrscr();

  arm.create_armoury();

  fp.write((char*)&arm,sizeof(armoury));

  cout<<"\n\nDo you want to add more ARMOURY record??????????(y/n?)";

  cin>>ch;

  }

  while(ch=='y'||ch=='Y');

  fp.close();

}

 

void write_defence_pers()

{

 char ch;

 fp.open("defence_pers.dat",ios::out|ios::app);

 do

 {

  defp.create_defence_pers();

  fp.write((char*)&defp,sizeof(defence_pers));

  cout<<"\n\ndo you want to add more record????????(y/n?)";

  cin>>ch;

  }

  while(ch=='y'||ch=='Y');

  fp.close();

}

 

//            function to read specific record from file

 

void display_sparm(char n[])

{

 cout<<"\n*************ARMOURY DETAILS*************\n";

 int flag=0;

 fp.open("armoury.dat",ios::in);

 while(fp.read((char*)&arm,sizeof(armoury)))

 {

  if(strcmpi(arm.retarm_no(),n)==0)

  {

   arm.show_armoury();

   flag=1;

  }

 }

 fp.close();

 if(flag==0)

 cout<<"\n\nArmoury does not exist!!!!!!!!!!!!!";

 getch();

}

 

void display_spdefp(char n[])

{

 cout<<"\n*************DEFENCE PERSONNEL DETAILS*************\n";

 int flag=0;

 fp.open("defence_pers.dat",ios::in);

 while(fp.read((char*)&defp,sizeof(defence_pers)))

 {

 if((strcmpi(defp.retdpentry_code(),n)==0))

 {

 defp.show_defence_pers();

 flag=1;

 }

}

 fp.close();

 if(flag==0)

 cout<<"\n\nDefence Personnel does not exist????????????";

 getch();

}

 

//            function to modify record of file

 

void modify_armoury()

{

 char n[6];

 int found=0;

 clrscr();

 cout<<"\n\n\t***************MODIFY ARMOURY RECORD************** ";

 cout<<"\n\n\tEnter The armoury no.of armoury to be modified-------------->>";

 cin>>n;

 fp.open("armoury.dat",ios::in|ios::out);

  while(fp.read((char*)&arm,sizeof(armoury)) && found==0)

  {

 if(strcmpi(arm.retarm_no(),n)==0)

   {

   arm.show_armoury();

   cout<<"\n**********ENTER NEW DETAILS OF ARMOURY*********"<<endl;

   arm.modify_armoury();

   int pos=-1*sizeof(arm);

   fp.seekp(pos,ios::cur);

   fp.write((char*)&arm,sizeof(armoury));

   cout<<"\n\n\t Record Updated.............";

                found=1;

  }

}

 fp.close();

 if(found==0)

 cout<<"\n\n Record Not Found?????????????? ";

 getch();

}

 

void modify_defence_pers()

{

 char n[6];

 int found=0;

 clrscr();

 cout<<"\n\n\t**************MODIFY DEFENCE PERSONNEL RECORD************* ";

 cout<<"\n\n\tEnter Entry Code of defence personnel to be modified----------->>";

 cin>>n;

 fp.open("defence_pers.dat",ios::in|ios::out);

 while(fp.read((char*)&defp,sizeof(defence_pers)) && found==0)

 {

 if(strcmpi(defp.retdpentry_code(),n)==0)

  {

  defp.show_defence_pers();

 cout<<"\n*********ENTER NEW DETAILS OF DEFENCE PERSONNEL*********"<<endl;

 defp.modify_defence_pers();

 int pos=-1*sizeof(defp);

 fp.seekp(pos,ios::cur);

 fp.write((char*)&defp,sizeof(defence_pers));

 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_defence_pers()

{

 char n[7];

 int flag=0;

 clrscr();

 cout<<"\n\n\n\t***********DELETE DEFENCE PERSONNEL************";

 cout<<"\n\nEnter The Entry Code of the Defence Personnel You Want To Delete------------>> \n";

 cin>>n;

 fp.open("defence_pers.dat",ios::in|ios::out);

 fstream fp2;

 fp2.open("Temp.dat",ios::out);

 fp.seekg(0,ios::beg);

 while(fp.read((char*)&defp,sizeof(defence_pers)))

 {

 if(strcmpi(defp.retdpentry_code(),n)!=0)

 fp2.write((char*)&defp,sizeof(defence_pers));

 else

 flag=1;

}

 fp2.close();

 fp.close();

 remove("defence_pers.dat");

 rename("Temp.dat","defence_pers.dat");

   if(flag==1)

 cout<<"\n\n\tRecord Deleted ................";

                else

 cout<<"\n\nRecord not found!!!!!!!!!!";

                getch();

}

 

void delete_armoury()

{

 char n[6];

 int flag=0;

 clrscr();

 cout<<"\n\n\n\t**************DELETE ARMOURY****************...";

 cout<<"\n\nEnter The armoury no. of the armoury You Want To Delete------------->> ";

 cin>>n;

 fp.open("armoury.dat",ios::in|ios::out);

 fstream fp2;

 fp2.open("Temp.dat",ios::out);

 fp.seekg(0,ios::beg);

  while(fp.read((char*)&arm,sizeof(armoury)))

 {

  if(strcmpi(arm.retarm_no(),n)!=0)

  fp2.write((char*)&arm,sizeof(armoury));

    else

 flag=1;

 }

 fp2.close();

 fp.close();

 remove("armoury.dat");

 rename("Temp.dat","armoury.dat");

   if(flag==1)

 cout<<"\n\n\tRecord Deleted ................";

     else

 cout<<"\n\nRecord not found!!!!!!!!!!";

 getch();

}

 

//            function to display all defence_perss list

 

void display_alls()

{

 clrscr();

 fp.open("defence_pers.dat",ios::in);

 if(!fp)

 {

 cout<<"ERROR!!! FILE COULD NOT BE OPEN???????????????? ";

                getch();

                return;

 }

cout<<"\n\n\t****************ALL DEFENCE PERSONNEL LIST****************\n\n";

cout<<"================================================================================\n";

cout<<"ENTRY CODE.|"<<setw(5)<<"Name|"<<setw(5)<<"DIVISION|"<<setw(5)<<"  RANK|"<<setw(5)<<" BRANCH|"<<setw(5)<<" COMMAND|"<<setw(5)<<" STATION|"<<setw(5)<<"   TRADE|"<<"armoury Issued\n";

cout<<"================================================================================\n";

 while(fp.read((char*)&defp,sizeof(defence_pers)))

 {

 defp.report();

 }

 fp.close();

 getch();

}

 

//            function to display armourys list

 

void display_allb()

{

 clrscr();

 fp.open("armoury.dat",ios::in);

 if(!fp)

 {

 cout<<"ERROR!!! FILE COULD NOT BE OPEN????????????? ";

                getch();

                return;

 }

cout<<"\n\n\t\t****************ALL armoury LIST****************\n\n";

cout<<"================================================================================\n";

cout<<"armoury NO."<<setw(5)<<"   armoury Name"<<setw(5)<<"   ARM LICENSEE  CODE"<<setw(5)<<"  MANUFACTURER"<<setw(5)<<"  arm type"<<setw(5)<<"  DIV USED\n";

cout<<"================================================================================\n";

 

 while(fp.read((char*)&arm,sizeof(armoury)))

 {

 arm.report();

 }

 fp.close();

 getch();

}

 

//            function to issue armoury

 

void armoury_issue()

{

 char dpn[6],armn[6];

 int found=0,flag=0;

 clrscr();

 cout<<"\n\n\t**************ARMOURY ISSUE*************** ";

 cout<<"\n\n\Enter The defence_personnel's ENTRY CODE.------------>>";

 cin>>dpn;

 fp.open("defence_pers.dat",ios::in|ios::out);

 fp1.open("armoury.dat",ios::in|ios::out);

 while(fp.read((char*)&defp,sizeof(defence_pers)) && found==0)

 {

  if(strcmpi(defp.retdpentry_code(),dpn)==0)

  {

  found=1;

  if(defp.rettoken()==0)

 {

 cout<<"\n\n\tEnter the armoury no.------------>> ";

 cin>>armn;

 while(fp1.read((char*)&arm,sizeof(armoury))&& flag==0)

 {

 if(strcmpi(arm.retarm_no(),armn)==0)

 {

 arm.show_armoury();

 flag=1;

 defp.addtoken();

 defp.getdefparm_no(arm.retarm_no());

 int pos=-1*sizeof(defp);

 fp.seekp(pos,ios::cur);

 fp.write((char*)&defp,sizeof(defence_pers));

 cout<<"\n\n\t CONGRATULATIONS!!!!!\n\narmoury issued successfully\n\nPlease Note: Write the current date\nin backside of your armoury and submit within 50 days fine Rs. 100 for each day \nafter 50 days period";

 }

}

 if(flag==0)

 cout<<"\narmoury no does not exist!!!!!!!!!!!!";

 }

 else

cout<<"\nYou have not returned the last armoury!!!!!!!!!!!!";

}

 }

 if(found==0)

 cout<<"\nDefence Personnel record not exist?????????????????????";

 getch();

 fp.close();

 fp1.close();

}

 

//            function to deposit armoury

 

void armoury_deposit()

{

 char dpn[6],armn[6];

 int found=0,flag=0,day;

 

 unsigned short fine;               //range 0-65,535

 clrscr();

 cout<<"\n\n\t************ARMOURY DEPOSIT************";

 cout<<"\n\n\Enter The defence_personnel's ENTRY CODE.----------------->>>>>> ";

 cin>>dpn;

 fp.open("defence_pers.dat",ios::in|ios::out);

 fp1.open("armoury.dat",ios::in|ios::out);

  while(fp.read((char*)&defp,sizeof(defence_pers)) && found==0)

  {

  if(strcmpi(defp.retdpentry_code(),dpn)==0)

    {

    found=1;

  if(defp.rettoken()==1)

    {

  while(fp1.read((char*)&arm,sizeof(armoury))&& flag==0)

  {

  if(strcmpi(arm.retarm_no(),defp.retdefparm_no())==0)

    {

    arm.show_armoury();

    flag=1;

 cout<<"\n\nEnter armoury deposited in no. of days-------->> ";

 cin>>day;

 if(day>50)

 {

 fine=(day-50)*100;

 cout<<"\n\nFine has to deposited Rs.-------->> "<<fine;

 }

 defp.resettoken();

 int pos=-1*sizeof(defp);

 fp.seekp(pos,ios::cur);

 fp.write((char*)&defp,sizeof(defence_pers));

 cout<<"\n\n\t armoury deposited successfully";

 }

}

if(flag==0)

 cout<<"\narmoury no does not exist?????????????????";

 }

 else

 cout<<"\nNo such armoury is issued..please check!!!!!!!!!!!!!";

 }

}

 if(found==0)

 cout<<"\n Defence Personnel record not exist??????????????";

 getch();

 fp.close();

 fp1.close();

 }

 

//            INTRODUCTION FUNCTION

 

 

void intro()

{

clrscr();

cout<<"\n";

cout<<"================================================================================";

cout<<"\n\t_____________________________________________________________________";

cout<<"\n\n\t     DEFENCE        ARMAMENT        MANAGEMENT         SYSTEM";

cout<<"\n\t_____________________________________________________________________";

cout<<"\n\n";

gotoxy(18,10);

cout<<" developed by MASTER CALEB PRADHAN & NIKHIL KUMAR \n";

gotoxy(37,12);

cout<<" OF\n";

gotoxy(28,13);

cout<<" CLASS XII-'B'(COMP.SC)\n";

gotoxy(24,14);

cout<<"KENDRIYA VIDYALAYA NO.2 KHARAGPUR\n";

gotoxy(20,16);

cout<<" guided  by  MRS NANDINI DAS(PGT COMP.SC)\n";

cout<<"\n\n\n================================================================================";

gotoxy(23,23);

cout<<"PRESS ANY KEY TO CONTINUE!!!!!!!!!!!!";

 

getch();

}

//      DEFENCE ADMINISTRATOR MENU FUNCTION

 

void admin_menu()

{

 clrscr();

 int ch2;

 cout<<"\n\n\n";

 cout<<"================================================================================";

 cout<<"\n\t...................DEFENCE ADMINISTRATOR MENU..................";

 cout<<"\n\n\tPRESS 1 TO CREATE DEFENCE PERSONNEL RECORD----------------";

 cout<<"\n\tPRESS 2 TO DISPLAY ALL DEFENCE PERSONNELS RECORD----------";

 cout<<"\n\tPRESS 3 TO SEARCH & DISPLAY SPECIFIC DEFENCE PERSONNEL RECORD-------- ";

 cout<<"\n\tPRESS 4 TO MODIFY SPECIFIC DEFENCE PERSONNEL RECORD-------------";

 cout<<"\n\tPRESS 5 TO DELETE SPECIFIC DEFENCE PERSONNEL RECORD-------------";

 cout<<"\n\tPRESS 6 TO CREATE ARMOURY-------------- ";

 cout<<"\n\tPRESS 7 TO DISPLAY ALL ARMAMENTS------------- ";

 cout<<"\n\tPRESS 8 TO SEARCH & DISPLAY SPECIFIC ARMOURY------------- ";

 cout<<"\n\tPRESS 9 TO MODIFY ARMAMENT------------ ";

 cout<<"\n\tPRESS 10 TO DELETE ARMAMENT------------- ";

 cout<<"\n\tPRESS 11 TO GO BACK TO MAIN MENU???????????";

 cout<<"\n\n";

 cout<<"================================================================================";

 cout<<"\n\t Please Enter Your Choice (1-11)---------------->>>>> ";

 cin>>ch2;

 switch(ch2)

 {

 case 1: clrscr();

                 write_defence_pers();

                 break;

 case 2: display_alls();

         break;

 case 3:

                char num[6];

                clrscr();

                cout<<"\n\n\t********SEARCH RECORD OF SPECIFIC DEFENCE PERSONNEL*********** ";

                cout<<"\n\n\tEnter The defence_personnel's ENTRY CODE:------------->> ";

                cin>>num;

                display_spdefp(num);

                break;

 case 4: modify_defence_pers();

        break;

 case 5: delete_defence_pers();

        break;

 case 6: clrscr();

                write_armoury();

        break;

 case 7: display_allb();

         break;

 case 8: {

                char num[6];

                clrscr();

        cout<<"\n\n\t********SEARCH RECORD OF SPECIFIC ARMOURY*********** ";

                cout<<"\n\n\tPlease Enter The armoury No.------------->> ";

                cin>>num;

                display_sparm(num);

                break;

                }

 case 9: modify_armoury();

         break;

 case 10: delete_armoury();

                 break;

 case 11: return;

                 default:cout<<"\a";

 }

 

admin_menu();

}

 

 

 

//    THE MAIN FUNCTION OF PROGRAM

 

void main()

{

 char ch;

 intro();

 do

 {

 clrscr();

 cout<<"\n";

 cout<<"================================================================================";

 cout<<"\n\n\n\t\t\tM A I N     M E N U";

 cout<<"\n\n\n\tPRESS 1 FOR ARMOURY ISSUE............";

 cout<<"\n\n\tPRESS 2 FOR ARMOURY DEPOSIT............";

 cout<<"\n\n\tPRESS 3 FOR DEFENCE ADMINISTRATOR MENU.........";

 cout<<"\n\n\tPRESS 4 FOR EXITING............";

 cout<<"\n\n\n";

 cout<<"================================================================================";

 cout<<"\n\n\tPlease Select Your Option (1-4)-------------->> ";

 ch=getche();

 

   switch(ch)

    {

      case '1':clrscr();

                       armoury_issue();

                       break;

      case '2':armoury_deposit();

                       break;

      case '3':admin_menu();

                       break;

      case '4':exit(0);

                       default :cout<<"\a";

    }

      }while(ch!='4');

}

 

 

//   END OF PROJECT

 

THE DUMPS OF FEW OUTPUT SCREENS 

 

 

 


//HEADER FILE USED IN PROJECT


#include<fstream.h>
#include<conio.h>
#include<stdio.h>
#include<process.h>
#include<string.h>
#include<iomanip.h>


//CLASS USED IN PROJECT

class armoury
{
 char arm_no[6];
 char arm_name[50];
 char arm_lncode[20];
 char arm_divuse[20];
 char arm_manfct[20];
 char arm_type[20];
 public:
   void create_armoury()
   {
 cout<<"\n***************NEW ARMAMENT ENTRY***************\n";
 cout<<"\nEnter The Armoury no(4-DIGIT)------------->>";
 cin>>arm_no;
 cout<<"\n\nEnter The Name of The Armoury------------->> ";
 gets(arm_name);
 cout<<"\n\nEnter The Licensee Code of The Armoury------------->> ";
 gets(arm_lncode);
 cout<<"\n\nEnter The Manufacturer of The Armoury------------->> ";
 gets(arm_manfct);
 cout<<"\n\nEnter The type of The Armoury------------->> ";
 gets(arm_type);
 cout<<"\n\nEnter The Division For Usage(ARMY/IAF/NAVY)------------->> ";
 gets(arm_divuse);
 cout<<"\n\n\nARMAMENT Created..............";
   }

   void show_armoury()
{  cout<<"\n\n";
 cout<<"================================================================================";
 cout<<"\n***************ARMOURY NO*************** : "<<arm_no;
 cout<<"\n\nName of The Armoury------------->> ";
 puts(arm_name);
 cout<<"\n\nLicensee Code of The Armoury------------->> ";
 puts(arm_lncode);
 cout<<"\n\nManufacturer of The Armoury------------->> ";
 puts(arm_manfct);
 cout<<"\n\ntype of The Armoury------------->> ";
 puts(arm_type);
 cout<<"\n\nDivision For Usage(ARMY/IAF/NAVY)------------->> ";
 puts(arm_divuse);
 cout<<"\n\n";
 cout<<"================================================================================";
}

 void modify_armoury()
{
cout<<"\n***************CURRENT  ARMOURY  NO*************** : "<<arm_no;
cout<<"\n\nModify Armoury Name------------->> ";
gets(arm_name);
cout<<"\n\nModify Licensee Code of The Armoury------------->> ";
gets(arm_lncode);
cout<<"\n\nModify Manufacturer of The Armoury------------->> ";
gets(arm_manfct);
cout<<"\n\nModify type of The Armoury------------->> ";
gets(arm_type);
cout<<"\n\nModify Division For Usage(ARMY/IAF/NAVY)------------->> ";
gets(arm_divuse);
}

char* retarm_no()
{
return arm_no;
}

void report()
{cout<<arm_no<<setw(10)<<arm_name<<setw(12)<<arm_lncode<<setw(14)<<arm_manfct<<setw(16)<<arm_type<<setw(18)<<arm_divuse<<endl;}
}; 
//class ends here

class defence_pers
{
 char dpentry_code[6];
 char dp_name[20];
 char dpdiv[10];
 char dp_rank[20];
 char dp_branch[10];
 char dp_command[10];
 char dp_station[20];
 char dp_trade[20];
 char defparm_no[10];
 int token;
public:
 void create_defence_pers()
 {
 clrscr();
 cout<<"\n***************NEW DEFENCE PERSONNEL ENTRY*************\n";
 cout<<"\n\nEnter The Defence Personnel's Entry Code(5-DIGIT)------------->> ";
 cin>>dpentry_code;
 cout<<"\nEnter The Name of The Defence Personnel------------->> ";
 gets(dp_name);
 cout<<"\nEnter The Division of The Defence Personnel(Army/IAF/Navy)------------->> ";
 gets(dpdiv);
 cout<<"\nEnter The Rank of The Defence Personnel------------->> ";
 gets(dp_rank);
cout<<"\nEnter The Branch of The Defence Personnel(tech/NT/FLYING/GROUND)------------->> ";
 gets(dp_branch);
cout<<"\nEnter The Command where Defence Personnel POSTED(N/E/W/S)------------->> ";
 gets(dp_command);
cout<<"\nEnter The STATION/BASE/FRONT where Defence Personnel posted------------->> ";
 gets(dp_station);
 cout<<"\nEnter The Trade of The Defence Personnel------------->> ";
 gets(dp_trade);

 token=0;
 defparm_no[0]='/0';//TAKING INITIAL POS AS NULL
 cout<<"\n\nDefence Personnel Record Created...............";
 }
 
 void show_defence_pers()
 {  cout<<"\n\n";
cout<<"================================================================================";
cout<<"\nDefence Personnel Entry code(5-DIGIT)------------->>  "<<dpentry_code;
cout<<"\nName of The Defence Personnel------------->> ";
puts(dp_name);
cout<<"\nDivision of The Defence Personnel(Army/IAF/Navy)------------->> ";
puts(dpdiv);
cout<<"\nRank of The Defence Personnel------------->> ";
puts(dp_rank);
cout<<"\nBranch of The Defence Personnel(tech/NT/FLYING/GROUND)------------->> ";
puts(dp_branch);
cout<<"\nCommand where Defence Personnel POSTED(N/E/W/S)------------->> ";
puts(dp_command);
cout<<"\nSTATION/BASE/FRONT where Defence Personnel posted------------->> ";
puts(dp_station);
cout<<"\nTrade of The Defence Personnel------------->> ";
puts(dp_trade);

cout<<"\nNo of Armament issued------------->>  "<<token;
 if(token==1)
 cout<<"\nIssued armoury No------------->> "<<defparm_no;
  cout<<"\n\n";
cout<<"================================================================================";
}

void modify_defence_pers()
{
 cout<<"\n************CURRENT  DEFENCE PERSONNEL ENTRY CODE********** : "<<dpentry_code;
 cout<<"\n\nModify Defence Personnel Name.------------->> ";
 gets(dp_name);
 cout<<"\nModify Division of The Defence Personnel(Army/IAF/Navy)------------->> ";
 gets(dpdiv);
 cout<<"\nModify Rank of The Defence Personnel------------->> ";
 gets(dp_rank);
 cout<<"\nModify Branch of The Defence Personnel(tech/NT/FLYING/GROUND)------------->> ";
 gets(dp_branch);
 cout<<"\nModify Command where Defence Personnel POSTED(N/E/W/S)------------->> ";
 gets(dp_command);
 cout<<"\nModify STATION/BASE/FRONT where Defence Personnel posted------------->> ";
 gets(dp_station);
 cout<<"\nModify Trade of The Defence Personnel------------->> ";
 gets(dp_trade);
 }

 char* retdpentry_code()
 {
 return dpentry_code;
 }
 char* retdefparm_no()
 {
 return defparm_no;
 }
 int rettoken()
 {
 return token;
 }
 void addtoken()
 {token=1;}
 void resettoken()
 {token=0;}
 void getdefparm_no(char t[])
 {
 strcpy(defparm_no,t);
 }

 void report()
 {cout<<setw(5)<<dpentry_code<<setw(9)<<dp_name<<setw(6)<<dpdiv<<setw(16) <<dp_rank<<setw(6)<<dp_branch<<setw(4)<<dp_command<<setw(14)<<dp_station<<setw(8) <<dp_trade<<setw(4)<<token<<endl;
 }
};      //class ends here

//     global declaration for stream object, object

fstream fp,fp1;
armoury arm;
defence_pers defp;

//     function to write in file

void write_armoury()
{
 char ch;
 fp.open("armoury.dat",ios::out|ios::app);
  do
  {
  clrscr();
  arm.create_armoury();
  fp.write((char*)&arm,sizeof(armoury));
  cout<<"\n\nDo you want to add more ARMOURY record??????????(y/n?)";
  cin>>ch;
  }
  while(ch=='y'||ch=='Y');
  fp.close();
}

void write_defence_pers()
{
 char ch;
 fp.open("defence_pers.dat",ios::out|ios::app);
 do
 {
  defp.create_defence_pers();
  fp.write((char*)&defp,sizeof(defence_pers));
  cout<<"\n\ndo you want to add more record????????(y/n?)";
  cin>>ch;
  }
  while(ch=='y'||ch=='Y');
  fp.close();
}

//     function to read specific record from file

void display_sparm(char n[])
{
 cout<<"\n*************ARMOURY DETAILS*************\n";
 int flag=0;
 fp.open("armoury.dat",ios::in);
 while(fp.read((char*)&arm,sizeof(armoury)))
 {
  if(strcmpi(arm.retarm_no(),n)==0)
  {
   arm.show_armoury();
   flag=1;
  }
 }
 fp.close();
 if(flag==0)
 cout<<"\n\nArmoury does not exist!!!!!!!!!!!!!";
 getch();
}

void display_spdefp(char n[])
{
 cout<<"\n*************DEFENCE PERSONNEL DETAILS*************\n";
 int flag=0;
 fp.open("defence_pers.dat",ios::in);
 while(fp.read((char*)&defp,sizeof(defence_pers)))
 {
 if((strcmpi(defp.retdpentry_code(),n)==0))
 {
 defp.show_defence_pers();
 flag=1;
 }
}
 fp.close();
 if(flag==0)
 cout<<"\n\nDefence Personnel does not exist????????????";
 getch();
}

//     function to modify record of file

void modify_armoury()
{
 char n[6];
 int found=0;
 clrscr();
 cout<<"\n\n\t***************MODIFY ARMOURY RECORD************** ";
 cout<<"\n\n\tEnter The armoury no.of armoury to be modified-------------->>";
 cin>>n;
 fp.open("armoury.dat",ios::in|ios::out);
  while(fp.read((char*)&arm,sizeof(armoury)) && found==0)
  {
 if(strcmpi(arm.retarm_no(),n)==0)
   {
   arm.show_armoury();
   cout<<"\n**********ENTER NEW DETAILS OF ARMOURY*********"<<endl;
   arm.modify_armoury();
   int pos=-1*sizeof(arm);
   fp.seekp(pos,ios::cur);
   fp.write((char*)&arm,sizeof(armoury));
   cout<<"\n\n\t Record Updated.............";
found=1;
  }
}
 fp.close();
 if(found==0)
 cout<<"\n\n Record Not Found?????????????? ";
 getch();
}

void modify_defence_pers()
{
 char n[6];
 int found=0;
 clrscr();
 cout<<"\n\n\t**************MODIFY DEFENCE PERSONNEL RECORD************* ";
 cout<<"\n\n\tEnter Entry Code of defence personnel to be modified----------->>";
 cin>>n;
 fp.open("defence_pers.dat",ios::in|ios::out);
 while(fp.read((char*)&defp,sizeof(defence_pers)) && found==0)
 {
 if(strcmpi(defp.retdpentry_code(),n)==0)
  {
  defp.show_defence_pers();
 cout<<"\n*********ENTER NEW DETAILS OF DEFENCE PERSONNEL*********"<<endl;
 defp.modify_defence_pers();
 int pos=-1*sizeof(defp);
 fp.seekp(pos,ios::cur);
 fp.write((char*)&defp,sizeof(defence_pers));
 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_defence_pers()
{
 char n[7];
 int flag=0;
 clrscr();
 cout<<"\n\n\n\t***********DELETE DEFENCE PERSONNEL************";
 cout<<"\n\nEnter The Entry Code of the Defence Personnel You Want To Delete------------>> \n";
 cin>>n;
 fp.open("defence_pers.dat",ios::in|ios::out);
 fstream fp2;
 fp2.open("Temp.dat",ios::out);
 fp.seekg(0,ios::beg);
 while(fp.read((char*)&defp,sizeof(defence_pers)))
 {
 if(strcmpi(defp.retdpentry_code(),n)!=0)
 fp2.write((char*)&defp,sizeof(defence_pers));
 else
 flag=1;
}
 fp2.close();
 fp.close();
 remove("defence_pers.dat");
 rename("Temp.dat","defence_pers.dat");
   if(flag==1)
 cout<<"\n\n\tRecord Deleted ................";
else
 cout<<"\n\nRecord not found!!!!!!!!!!";
getch();
}

void delete_armoury()
{
 char n[6];
 int flag=0;
 clrscr();
 cout<<"\n\n\n\t**************DELETE ARMOURY****************...";
 cout<<"\n\nEnter The armoury no. of the armoury You Want To Delete------------->> ";
 cin>>n;
 fp.open("armoury.dat",ios::in|ios::out);
 fstream fp2;
 fp2.open("Temp.dat",ios::out);
 fp.seekg(0,ios::beg);
  while(fp.read((char*)&arm,sizeof(armoury)))
 {
  if(strcmpi(arm.retarm_no(),n)!=0)
  fp2.write((char*)&arm,sizeof(armoury));
    else
 flag=1;
 }
 fp2.close();
 fp.close();
 remove("armoury.dat");
 rename("Temp.dat","armoury.dat");
   if(flag==1)
 cout<<"\n\n\tRecord Deleted ................";
     else
 cout<<"\n\nRecord not found!!!!!!!!!!";
 getch();
}

//     function to display all defence_perss list

void display_alls()
{
 clrscr();
 fp.open("defence_pers.dat",ios::in);
 if(!fp)
 {
 cout<<"ERROR!!! FILE COULD NOT BE OPEN???????????????? ";
getch();
return;
 }
cout<<"\n\n\t****************ALL DEFENCE PERSONNEL LIST****************\n\n";
cout<<"================================================================================\n";
cout<<"ENTRY CODE.|"<<setw(5)<<"Name|"<<setw(5)<<"DIVISION|"<<setw(5)<<"  RANK|"<<setw(5)<<" BRANCH|"<<setw(5)<<" COMMAND|"<<setw(5)<<" STATION|"<<setw(5)<<"   TRADE|"<<"armoury Issued\n";
cout<<"================================================================================\n";
 while(fp.read((char*)&defp,sizeof(defence_pers)))
 {
 defp.report();
 }
 fp.close();
 getch();
}

//     function to display armourys list

void display_allb()
{
 clrscr();
 fp.open("armoury.dat",ios::in);
 if(!fp)
 {
 cout<<"ERROR!!! FILE COULD NOT BE OPEN????????????? ";
getch();
return;
 }
cout<<"\n\n\t\t****************ALL armoury LIST****************\n\n";
cout<<"================================================================================\n";
cout<<"armoury NO."<<setw(5)<<"   armoury Name"<<setw(5)<<"   ARM LICENSEE  CODE"<<setw(5)<<"  MANUFACTURER"<<setw(5)<<"  arm type"<<setw(5)<<"  DIV USED\n";
cout<<"================================================================================\n";

 while(fp.read((char*)&arm,sizeof(armoury)))
 {
 arm.report();
 }
 fp.close();
 getch();
}

//     function to issue armoury

void armoury_issue()
{
 char dpn[6],armn[6];
 int found=0,flag=0;
 clrscr();
 cout<<"\n\n\t**************ARMOURY ISSUE*************** ";
 cout<<"\n\n\Enter The defence_personnel's ENTRY CODE.------------>>";
 cin>>dpn;
 fp.open("defence_pers.dat",ios::in|ios::out);
 fp1.open("armoury.dat",ios::in|ios::out);
 while(fp.read((char*)&defp,sizeof(defence_pers)) && found==0)
 {
  if(strcmpi(defp.retdpentry_code(),dpn)==0)
  {
  found=1;
  if(defp.rettoken()==0)
 {
 cout<<"\n\n\tEnter the armoury no.------------>> ";
 cin>>armn;
 while(fp1.read((char*)&arm,sizeof(armoury))&& flag==0)
 {
 if(strcmpi(arm.retarm_no(),armn)==0)
 {
 arm.show_armoury();
 flag=1;
 defp.addtoken();
 defp.getdefparm_no(arm.retarm_no());
 int pos=-1*sizeof(defp);
 fp.seekp(pos,ios::cur);
 fp.write((char*)&defp,sizeof(defence_pers));
 cout<<"\n\n\t CONGRATULATIONS!!!!!\n\narmoury issued successfully\n\nPlease Note: Write the current date\nin backside of your armoury and submit within 50 days fine Rs. 100 for each day \nafter 50 days period";
 }
}
 if(flag==0)
 cout<<"\narmoury no does not exist!!!!!!!!!!!!";
 }
 else
cout<<"\nYou have not returned the last armoury!!!!!!!!!!!!";
}
 }
 if(found==0)
 cout<<"\nDefence Personnel record not exist?????????????????????";
 getch();
 fp.close();
 fp1.close();
}

//     function to deposit armoury

void armoury_deposit()
{
 char dpn[6],armn[6];
 int found=0,flag=0,day;

 unsigned short fine;               //range 0-65,535
 clrscr();
 cout<<"\n\n\t************ARMOURY DEPOSIT************";
 cout<<"\n\n\Enter The defence_personnel's ENTRY CODE.----------------->>>>>> ";
 cin>>dpn;
 fp.open("defence_pers.dat",ios::in|ios::out);
 fp1.open("armoury.dat",ios::in|ios::out);
  while(fp.read((char*)&defp,sizeof(defence_pers)) && found==0)
  {
  if(strcmpi(defp.retdpentry_code(),dpn)==0)
    {
    found=1;
  if(defp.rettoken()==1)
    {
  while(fp1.read((char*)&arm,sizeof(armoury))&& flag==0)
  {
  if(strcmpi(arm.retarm_no(),defp.retdefparm_no())==0)
    {
    arm.show_armoury();
    flag=1;
 cout<<"\n\nEnter armoury deposited in no. of days-------->> ";
 cin>>day;
 if(day>50)
 {
 fine=(day-50)*100;
 cout<<"\n\nFine has to deposited Rs.-------->> "<<fine;
 }
 defp.resettoken();
 int pos=-1*sizeof(defp);
 fp.seekp(pos,ios::cur);
 fp.write((char*)&defp,sizeof(defence_pers));
 cout<<"\n\n\t armoury deposited successfully";
 }
}
if(flag==0)
 cout<<"\narmoury no does not exist?????????????????";
 }
 else
 cout<<"\nNo such armoury is issued..please check!!!!!!!!!!!!!";
 }
}
 if(found==0)
 cout<<"\n Defence Personnel record not exist??????????????";
 getch();
 fp.close();
 fp1.close();
 }

//     INTRODUCTION FUNCTION


void intro()
{
clrscr();
cout<<"\n";
cout<<"================================================================================";
cout<<"\n\t_____________________________________________________________________";
cout<<"\n\n\t     DEFENCE        ARMAMENT        MANAGEMENT         SYSTEM";
cout<<"\n\t_____________________________________________________________________";
cout<<"\n\n";
gotoxy(18,10);
cout<<" developed by MASTER CALEB PRADHAN & NIKHIL KUMAR \n";
gotoxy(37,12);
cout<<" OF\n";
gotoxy(28,13);
cout<<" CLASS XII-'B'(COMP.SC)\n";
gotoxy(24,14);
cout<<"KENDRIYA VIDYALAYA NO.2 KHARAGPUR\n";
gotoxy(20,16);
cout<<" guided  by  MRS NANDINI DAS(PGT COMP.SC)\n";
cout<<"\n\n\n================================================================================";
gotoxy(23,23);
cout<<"PRESS ANY KEY TO CONTINUE!!!!!!!!!!!!";

getch();
}
//      DEFENCE ADMINISTRATOR MENU FUNCTION

void admin_menu()
{
 clrscr();
 int ch2;
 cout<<"\n\n\n";
 cout<<"================================================================================";
 cout<<"\n\t...................DEFENCE ADMINISTRATOR MENU..................";
 cout<<"\n\n\tPRESS 1 TO CREATE DEFENCE PERSONNEL RECORD----------------";
 cout<<"\n\tPRESS 2 TO DISPLAY ALL DEFENCE PERSONNELS RECORD----------";
 cout<<"\n\tPRESS 3 TO SEARCH & DISPLAY SPECIFIC DEFENCE PERSONNEL RECORD-------- ";
 cout<<"\n\tPRESS 4 TO MODIFY SPECIFIC DEFENCE PERSONNEL RECORD-------------";
 cout<<"\n\tPRESS 5 TO DELETE SPECIFIC DEFENCE PERSONNEL RECORD-------------";
 cout<<"\n\tPRESS 6 TO CREATE ARMOURY-------------- ";
 cout<<"\n\tPRESS 7 TO DISPLAY ALL ARMAMENTS------------- ";
 cout<<"\n\tPRESS 8 TO SEARCH & DISPLAY SPECIFIC ARMOURY------------- ";
 cout<<"\n\tPRESS 9 TO MODIFY ARMAMENT------------ ";
 cout<<"\n\tPRESS 10 TO DELETE ARMAMENT------------- ";
 cout<<"\n\tPRESS 11 TO GO BACK TO MAIN MENU???????????";
 cout<<"\n\n";
 cout<<"================================================================================";
 cout<<"\n\t Please Enter Your Choice (1-11)---------------->>>>> ";
 cin>>ch2;
 switch(ch2)
 {
 case 1: clrscr();
write_defence_pers();
break;
 case 2: display_alls();
         break;
 case 3:
char num[6];
clrscr();
cout<<"\n\n\t********SEARCH RECORD OF SPECIFIC DEFENCE PERSONNEL*********** ";
cout<<"\n\n\tEnter The defence_personnel's ENTRY CODE:------------->> ";
cin>>num;
display_spdefp(num);
break;
 case 4: modify_defence_pers();
        break;
 case 5: delete_defence_pers();
        break;
 case 6: clrscr();
write_armoury();
        break;
 case 7: display_allb();
         break;
 case 8: {
char num[6];
clrscr();
        cout<<"\n\n\t********SEARCH RECORD OF SPECIFIC ARMOURY*********** ";
cout<<"\n\n\tPlease Enter The armoury No.------------->> ";
cin>>num;
display_sparm(num);
break;
}
 case 9: modify_armoury();
         break;
 case 10: delete_armoury();
break;
 case 11: return;
default:cout<<"\a";
 }

admin_menu();
}



//    THE MAIN FUNCTION OF PROGRAM

void main()
{
 char ch;
 intro();
 do
 {
 clrscr();
 cout<<"\n";
 cout<<"================================================================================";
 cout<<"\n\n\n\t\t\tM A I N     M E N U";
 cout<<"\n\n\n\tPRESS 1 FOR ARMOURY ISSUE............";
 cout<<"\n\n\tPRESS 2 FOR ARMOURY DEPOSIT............";
 cout<<"\n\n\tPRESS 3 FOR DEFENCE ADMINISTRATOR MENU.........";
 cout<<"\n\n\tPRESS 4 FOR EXITING............";
 cout<<"\n\n\n";
 cout<<"================================================================================";
 cout<<"\n\n\tPlease Select Your Option (1-4)-------------->> ";
 ch=getche();

   switch(ch)
    {
      case '1':clrscr();
      armoury_issue();
      break;
      case '2':armoury_deposit();
      break;
      case '3':admin_menu();
      break;
      case '4':exit(0);
      default :cout<<"\a";
    }
      }while(ch!='4');
}


//   END OF PROJECT


//HEADER FILE USED IN PROJECT


#include<fstream.h>
#include<conio.h>
#include<stdio.h>
#include<process.h>
#include<string.h>
#include<iomanip.h>


//CLASS USED IN PROJECT

class armoury
{
 char arm_no[6];
 char arm_name[50];
 char arm_lncode[20];
 char arm_divuse[20];
 char arm_manfct[20];
 char arm_type[20];
 public:
   void create_armoury()
   {
 cout<<"\n***************NEW ARMAMENT ENTRY***************\n";
 cout<<"\nEnter The Armoury no(4-DIGIT)------------->>";
 cin>>arm_no;
 cout<<"\n\nEnter The Name of The Armoury------------->> ";
 gets(arm_name);
 cout<<"\n\nEnter The Licensee Code of The Armoury------------->> ";
 gets(arm_lncode);
 cout<<"\n\nEnter The Manufacturer of The Armoury------------->> ";
 gets(arm_manfct);
 cout<<"\n\nEnter The type of The Armoury------------->> ";
 gets(arm_type);
 cout<<"\n\nEnter The Division For Usage(ARMY/IAF/NAVY)------------->> ";
 gets(arm_divuse);
 cout<<"\n\n\nARMAMENT Created..............";
   }

   void show_armoury()
{  cout<<"\n\n";
 cout<<"================================================================================";
 cout<<"\n***************ARMOURY NO*************** : "<<arm_no;
 cout<<"\n\nName of The Armoury------------->> ";
 puts(arm_name);
 cout<<"\n\nLicensee Code of The Armoury------------->> ";
 puts(arm_lncode);
 cout<<"\n\nManufacturer of The Armoury------------->> ";
 puts(arm_manfct);
 cout<<"\n\ntype of The Armoury------------->> ";
 puts(arm_type);
 cout<<"\n\nDivision For Usage(ARMY/IAF/NAVY)------------->> ";
 puts(arm_divuse);
 cout<<"\n\n";
 cout<<"================================================================================";
}

 void modify_armoury()
{
cout<<"\n***************CURRENT  ARMOURY  NO*************** : "<<arm_no;
cout<<"\n\nModify Armoury Name------------->> ";
gets(arm_name);
cout<<"\n\nModify Licensee Code of The Armoury------------->> ";
gets(arm_lncode);
cout<<"\n\nModify Manufacturer of The Armoury------------->> ";
gets(arm_manfct);
cout<<"\n\nModify type of The Armoury------------->> ";
gets(arm_type);
cout<<"\n\nModify Division For Usage(ARMY/IAF/NAVY)------------->> ";
gets(arm_divuse);
}

char* retarm_no()
{
return arm_no;
}

void report()
{cout<<arm_no<<setw(10)<<arm_name<<setw(12)<<arm_lncode<<setw(14)<<arm_manfct<<setw(16)<<arm_type<<setw(18)<<arm_divuse<<endl;}
}; 
//class ends here

class defence_pers
{
 char dpentry_code[6];
 char dp_name[20];
 char dpdiv[10];
 char dp_rank[20];
 char dp_branch[10];
 char dp_command[10];
 char dp_station[20];
 char dp_trade[20];
 char defparm_no[10];
 int token;
public:
 void create_defence_pers()
 {
 clrscr();
 cout<<"\n***************NEW DEFENCE PERSONNEL ENTRY*************\n";
 cout<<"\n\nEnter The Defence Personnel's Entry Code(5-DIGIT)------------->> ";
 cin>>dpentry_code;
 cout<<"\nEnter The Name of The Defence Personnel------------->> ";
 gets(dp_name);
 cout<<"\nEnter The Division of The Defence Personnel(Army/IAF/Navy)------------->> ";
 gets(dpdiv);
 cout<<"\nEnter The Rank of The Defence Personnel------------->> ";
 gets(dp_rank);
cout<<"\nEnter The Branch of The Defence Personnel(tech/NT/FLYING/GROUND)------------->> ";
 gets(dp_branch);
cout<<"\nEnter The Command where Defence Personnel POSTED(N/E/W/S)------------->> ";
 gets(dp_command);
cout<<"\nEnter The STATION/BASE/FRONT where Defence Personnel posted------------->> ";
 gets(dp_station);
 cout<<"\nEnter The Trade of The Defence Personnel------------->> ";
 gets(dp_trade);

 token=0;
 defparm_no[0]='/0';//TAKING INITIAL POS AS NULL
 cout<<"\n\nDefence Personnel Record Created...............";
 }
 
 void show_defence_pers()
 {  cout<<"\n\n";
cout<<"================================================================================";
cout<<"\nDefence Personnel Entry code(5-DIGIT)------------->>  "<<dpentry_code;
cout<<"\nName of The Defence Personnel------------->> ";
puts(dp_name);
cout<<"\nDivision of The Defence Personnel(Army/IAF/Navy)------------->> ";
puts(dpdiv);
cout<<"\nRank of The Defence Personnel------------->> ";
puts(dp_rank);
cout<<"\nBranch of The Defence Personnel(tech/NT/FLYING/GROUND)------------->> ";
puts(dp_branch);
cout<<"\nCommand where Defence Personnel POSTED(N/E/W/S)------------->> ";
puts(dp_command);
cout<<"\nSTATION/BASE/FRONT where Defence Personnel posted------------->> ";
puts(dp_station);
cout<<"\nTrade of The Defence Personnel------------->> ";
puts(dp_trade);

cout<<"\nNo of Armament issued------------->>  "<<token;
 if(token==1)
 cout<<"\nIssued armoury No------------->> "<<defparm_no;
  cout<<"\n\n";
cout<<"================================================================================";
}

void modify_defence_pers()
{
 cout<<"\n************CURRENT  DEFENCE PERSONNEL ENTRY CODE********** : "<<dpentry_code;
 cout<<"\n\nModify Defence Personnel Name.------------->> ";
 gets(dp_name);
 cout<<"\nModify Division of The Defence Personnel(Army/IAF/Navy)------------->> ";
 gets(dpdiv);
 cout<<"\nModify Rank of The Defence Personnel------------->> ";
 gets(dp_rank);
 cout<<"\nModify Branch of The Defence Personnel(tech/NT/FLYING/GROUND)------------->> ";
 gets(dp_branch);
 cout<<"\nModify Command where Defence Personnel POSTED(N/E/W/S)------------->> ";
 gets(dp_command);
 cout<<"\nModify STATION/BASE/FRONT where Defence Personnel posted------------->> ";
 gets(dp_station);
 cout<<"\nModify Trade of The Defence Personnel------------->> ";
 gets(dp_trade);
 }

 char* retdpentry_code()
 {
 return dpentry_code;
 }
 char* retdefparm_no()
 {
 return defparm_no;
 }
 int rettoken()
 {
 return token;
 }
 void addtoken()
 {token=1;}
 void resettoken()
 {token=0;}
 void getdefparm_no(char t[])
 {
 strcpy(defparm_no,t);
 }

 void report()
 {cout<<setw(5)<<dpentry_code<<setw(9)<<dp_name<<setw(6)<<dpdiv<<setw(16) <<dp_rank<<setw(6)<<dp_branch<<setw(4)<<dp_command<<setw(14)<<dp_station<<setw(8) <<dp_trade<<setw(4)<<token<<endl;
 }
};      //class ends here

//     global declaration for stream object, object

fstream fp,fp1;
armoury arm;
defence_pers defp;

//     function to write in file

void write_armoury()
{
 char ch;
 fp.open("armoury.dat",ios::out|ios::app);
  do
  {
  clrscr();
  arm.create_armoury();
  fp.write((char*)&arm,sizeof(armoury));
  cout<<"\n\nDo you want to add more ARMOURY record??????????(y/n?)";
  cin>>ch;
  }
  while(ch=='y'||ch=='Y');
  fp.close();
}

void write_defence_pers()
{
 char ch;
 fp.open("defence_pers.dat",ios::out|ios::app);
 do
 {
  defp.create_defence_pers();
  fp.write((char*)&defp,sizeof(defence_pers));
  cout<<"\n\ndo you want to add more record????????(y/n?)";
  cin>>ch;
  }
  while(ch=='y'||ch=='Y');
  fp.close();
}

//     function to read specific record from file

void display_sparm(char n[])
{
 cout<<"\n*************ARMOURY DETAILS*************\n";
 int flag=0;
 fp.open("armoury.dat",ios::in);
 while(fp.read((char*)&arm,sizeof(armoury)))
 {
  if(strcmpi(arm.retarm_no(),n)==0)
  {
   arm.show_armoury();
   flag=1;
  }
 }
 fp.close();
 if(flag==0)
 cout<<"\n\nArmoury does not exist!!!!!!!!!!!!!";
 getch();
}

void display_spdefp(char n[])
{
 cout<<"\n*************DEFENCE PERSONNEL DETAILS*************\n";
 int flag=0;
 fp.open("defence_pers.dat",ios::in);
 while(fp.read((char*)&defp,sizeof(defence_pers)))
 {
 if((strcmpi(defp.retdpentry_code(),n)==0))
 {
 defp.show_defence_pers();
 flag=1;
 }
}
 fp.close();
 if(flag==0)
 cout<<"\n\nDefence Personnel does not exist????????????";
 getch();
}

//     function to modify record of file

void modify_armoury()
{
 char n[6];
 int found=0;
 clrscr();
 cout<<"\n\n\t***************MODIFY ARMOURY RECORD************** ";
 cout<<"\n\n\tEnter The armoury no.of armoury to be modified-------------->>";
 cin>>n;
 fp.open("armoury.dat",ios::in|ios::out);
  while(fp.read((char*)&arm,sizeof(armoury)) && found==0)
  {
 if(strcmpi(arm.retarm_no(),n)==0)
   {
   arm.show_armoury();
   cout<<"\n**********ENTER NEW DETAILS OF ARMOURY*********"<<endl;
   arm.modify_armoury();
   int pos=-1*sizeof(arm);
   fp.seekp(pos,ios::cur);
   fp.write((char*)&arm,sizeof(armoury));
   cout<<"\n\n\t Record Updated.............";
found=1;
  }
}
 fp.close();
 if(found==0)
 cout<<"\n\n Record Not Found?????????????? ";
 getch();
}

void modify_defence_pers()
{
 char n[6];
 int found=0;
 clrscr();
 cout<<"\n\n\t**************MODIFY DEFENCE PERSONNEL RECORD************* ";
 cout<<"\n\n\tEnter Entry Code of defence personnel to be modified----------->>";
 cin>>n;
 fp.open("defence_pers.dat",ios::in|ios::out);
 while(fp.read((char*)&defp,sizeof(defence_pers)) && found==0)
 {
 if(strcmpi(defp.retdpentry_code(),n)==0)
  {
  defp.show_defence_pers();
 cout<<"\n*********ENTER NEW DETAILS OF DEFENCE PERSONNEL*********"<<endl;
 defp.modify_defence_pers();
 int pos=-1*sizeof(defp);
 fp.seekp(pos,ios::cur);
 fp.write((char*)&defp,sizeof(defence_pers));
 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_defence_pers()
{
 char n[7];
 int flag=0;
 clrscr();
 cout<<"\n\n\n\t***********DELETE DEFENCE PERSONNEL************";
 cout<<"\n\nEnter The Entry Code of the Defence Personnel You Want To Delete------------>> \n";
 cin>>n;
 fp.open("defence_pers.dat",ios::in|ios::out);
 fstream fp2;
 fp2.open("Temp.dat",ios::out);
 fp.seekg(0,ios::beg);
 while(fp.read((char*)&defp,sizeof(defence_pers)))
 {
 if(strcmpi(defp.retdpentry_code(),n)!=0)
 fp2.write((char*)&defp,sizeof(defence_pers));
 else
 flag=1;
}
 fp2.close();
 fp.close();
 remove("defence_pers.dat");
 rename("Temp.dat","defence_pers.dat");
   if(flag==1)
 cout<<"\n\n\tRecord Deleted ................";
else
 cout<<"\n\nRecord not found!!!!!!!!!!";
getch();
}

void delete_armoury()
{
 char n[6];
 int flag=0;
 clrscr();
 cout<<"\n\n\n\t**************DELETE ARMOURY****************...";
 cout<<"\n\nEnter The armoury no. of the armoury You Want To Delete------------->> ";
 cin>>n;
 fp.open("armoury.dat",ios::in|ios::out);
 fstream fp2;
 fp2.open("Temp.dat",ios::out);
 fp.seekg(0,ios::beg);
  while(fp.read((char*)&arm,sizeof(armoury)))
 {
  if(strcmpi(arm.retarm_no(),n)!=0)
  fp2.write((char*)&arm,sizeof(armoury));
    else
 flag=1;
 }
 fp2.close();
 fp.close();
 remove("armoury.dat");
 rename("Temp.dat","armoury.dat");
   if(flag==1)
 cout<<"\n\n\tRecord Deleted ................";
     else
 cout<<"\n\nRecord not found!!!!!!!!!!";
 getch();
}

//     function to display all defence_perss list

void display_alls()
{
 clrscr();
 fp.open("defence_pers.dat",ios::in);
 if(!fp)
 {
 cout<<"ERROR!!! FILE COULD NOT BE OPEN???????????????? ";
getch();
return;
 }
cout<<"\n\n\t****************ALL DEFENCE PERSONNEL LIST****************\n\n";
cout<<"================================================================================\n";
cout<<"ENTRY CODE.|"<<setw(5)<<"Name|"<<setw(5)<<"DIVISION|"<<setw(5)<<"  RANK|"<<setw(5)<<" BRANCH|"<<setw(5)<<" COMMAND|"<<setw(5)<<" STATION|"<<setw(5)<<"   TRADE|"<<"armoury Issued\n";
cout<<"================================================================================\n";
 while(fp.read((char*)&defp,sizeof(defence_pers)))
 {
 defp.report();
 }
 fp.close();
 getch();
}

//     function to display armourys list

void display_allb()
{
 clrscr();
 fp.open("armoury.dat",ios::in);
 if(!fp)
 {
 cout<<"ERROR!!! FILE COULD NOT BE OPEN????????????? ";
getch();
return;
 }
cout<<"\n\n\t\t****************ALL armoury LIST****************\n\n";
cout<<"================================================================================\n";
cout<<"armoury NO."<<setw(5)<<"   armoury Name"<<setw(5)<<"   ARM LICENSEE  CODE"<<setw(5)<<"  MANUFACTURER"<<setw(5)<<"  arm type"<<setw(5)<<"  DIV USED\n";
cout<<"================================================================================\n";

 while(fp.read((char*)&arm,sizeof(armoury)))
 {
 arm.report();
 }
 fp.close();
 getch();
}

//     function to issue armoury

void armoury_issue()
{
 char dpn[6],armn[6];
 int found=0,flag=0;
 clrscr();
 cout<<"\n\n\t**************ARMOURY ISSUE*************** ";
 cout<<"\n\n\Enter The defence_personnel's ENTRY CODE.------------>>";
 cin>>dpn;
 fp.open("defence_pers.dat",ios::in|ios::out);
 fp1.open("armoury.dat",ios::in|ios::out);
 while(fp.read((char*)&defp,sizeof(defence_pers)) && found==0)
 {
  if(strcmpi(defp.retdpentry_code(),dpn)==0)
  {
  found=1;
  if(defp.rettoken()==0)
 {
 cout<<"\n\n\tEnter the armoury no.------------>> ";
 cin>>armn;
 while(fp1.read((char*)&arm,sizeof(armoury))&& flag==0)
 {
 if(strcmpi(arm.retarm_no(),armn)==0)
 {
 arm.show_armoury();
 flag=1;
 defp.addtoken();
 defp.getdefparm_no(arm.retarm_no());
 int pos=-1*sizeof(defp);
 fp.seekp(pos,ios::cur);
 fp.write((char*)&defp,sizeof(defence_pers));
 cout<<"\n\n\t CONGRATULATIONS!!!!!\n\narmoury issued successfully\n\nPlease Note: Write the current date\nin backside of your armoury and submit within 50 days fine Rs. 100 for each day \nafter 50 days period";
 }
}
 if(flag==0)
 cout<<"\narmoury no does not exist!!!!!!!!!!!!";
 }
 else
cout<<"\nYou have not returned the last armoury!!!!!!!!!!!!";
}
 }
 if(found==0)
 cout<<"\nDefence Personnel record not exist?????????????????????";
 getch();
 fp.close();
 fp1.close();
}

//     function to deposit armoury

void armoury_deposit()
{
 char dpn[6],armn[6];
 int found=0,flag=0,day;

 unsigned short fine;               //range 0-65,535
 clrscr();
 cout<<"\n\n\t************ARMOURY DEPOSIT************";
 cout<<"\n\n\Enter The defence_personnel's ENTRY CODE.----------------->>>>>> ";
 cin>>dpn;
 fp.open("defence_pers.dat",ios::in|ios::out);
 fp1.open("armoury.dat",ios::in|ios::out);
  while(fp.read((char*)&defp,sizeof(defence_pers)) && found==0)
  {
  if(strcmpi(defp.retdpentry_code(),dpn)==0)
    {
    found=1;
  if(defp.rettoken()==1)
    {
  while(fp1.read((char*)&arm,sizeof(armoury))&& flag==0)
  {
  if(strcmpi(arm.retarm_no(),defp.retdefparm_no())==0)
    {
    arm.show_armoury();
    flag=1;
 cout<<"\n\nEnter armoury deposited in no. of days-------->> ";
 cin>>day;
 if(day>50)
 {
 fine=(day-50)*100;
 cout<<"\n\nFine has to deposited Rs.-------->> "<<fine;
 }
 defp.resettoken();
 int pos=-1*sizeof(defp);
 fp.seekp(pos,ios::cur);
 fp.write((char*)&defp,sizeof(defence_pers));
 cout<<"\n\n\t armoury deposited successfully";
 }
}
if(flag==0)
 cout<<"\narmoury no does not exist?????????????????";
 }
 else
 cout<<"\nNo such armoury is issued..please check!!!!!!!!!!!!!";
 }
}
 if(found==0)
 cout<<"\n Defence Personnel record not exist??????????????";
 getch();
 fp.close();
 fp1.close();
 }

//     INTRODUCTION FUNCTION


void intro()
{
clrscr();
cout<<"\n";
cout<<"================================================================================";
cout<<"\n\t_____________________________________________________________________";
cout<<"\n\n\t     DEFENCE        ARMAMENT        MANAGEMENT         SYSTEM";
cout<<"\n\t_____________________________________________________________________";
cout<<"\n\n";
gotoxy(18,10);
cout<<" developed by MASTER CALEB PRADHAN & NIKHIL KUMAR \n";
gotoxy(37,12);
cout<<" OF\n";
gotoxy(28,13);
cout<<" CLASS XII-'B'(COMP.SC)\n";
gotoxy(24,14);
cout<<"KENDRIYA VIDYALAYA NO.2 KHARAGPUR\n";
gotoxy(20,16);
cout<<" guided  by  MRS NANDINI DAS(PGT COMP.SC)\n";
cout<<"\n\n\n================================================================================";
gotoxy(23,23);
cout<<"PRESS ANY KEY TO CONTINUE!!!!!!!!!!!!";

getch();
}
//      DEFENCE ADMINISTRATOR MENU FUNCTION

void admin_menu()
{
 clrscr();
 int ch2;
 cout<<"\n\n\n";
 cout<<"================================================================================";
 cout<<"\n\t...................DEFENCE ADMINISTRATOR MENU..................";
 cout<<"\n\n\tPRESS 1 TO CREATE DEFENCE PERSONNEL RECORD----------------";
 cout<<"\n\tPRESS 2 TO DISPLAY ALL DEFENCE PERSONNELS RECORD----------";
 cout<<"\n\tPRESS 3 TO SEARCH & DISPLAY SPECIFIC DEFENCE PERSONNEL RECORD-------- ";
 cout<<"\n\tPRESS 4 TO MODIFY SPECIFIC DEFENCE PERSONNEL RECORD-------------";
 cout<<"\n\tPRESS 5 TO DELETE SPECIFIC DEFENCE PERSONNEL RECORD-------------";
 cout<<"\n\tPRESS 6 TO CREATE ARMOURY-------------- ";
 cout<<"\n\tPRESS 7 TO DISPLAY ALL ARMAMENTS------------- ";
 cout<<"\n\tPRESS 8 TO SEARCH & DISPLAY SPECIFIC ARMOURY------------- ";
 cout<<"\n\tPRESS 9 TO MODIFY ARMAMENT------------ ";
 cout<<"\n\tPRESS 10 TO DELETE ARMAMENT------------- ";
 cout<<"\n\tPRESS 11 TO GO BACK TO MAIN MENU???????????";
 cout<<"\n\n";
 cout<<"================================================================================";
 cout<<"\n\t Please Enter Your Choice (1-11)---------------->>>>> ";
 cin>>ch2;
 switch(ch2)
 {
 case 1: clrscr();
write_defence_pers();
break;
 case 2: display_alls();
         break;
 case 3:
char num[6];
clrscr();
cout<<"\n\n\t********SEARCH RECORD OF SPECIFIC DEFENCE PERSONNEL*********** ";
cout<<"\n\n\tEnter The defence_personnel's ENTRY CODE:------------->> ";
cin>>num;
display_spdefp(num);
break;
 case 4: modify_defence_pers();
        break;
 case 5: delete_defence_pers();
        break;
 case 6: clrscr();
write_armoury();
        break;
 case 7: display_allb();
         break;
 case 8: {
char num[6];
clrscr();
        cout<<"\n\n\t********SEARCH RECORD OF SPECIFIC ARMOURY*********** ";
cout<<"\n\n\tPlease Enter The armoury No.------------->> ";
cin>>num;
display_sparm(num);
break;
}
 case 9: modify_armoury();
         break;
 case 10: delete_armoury();
break;
 case 11: return;
default:cout<<"\a";
 }

admin_menu();
}



//    THE MAIN FUNCTION OF PROGRAM

void main()
{
 char ch;
 intro();
 do
 {
 clrscr();
 cout<<"\n";
 cout<<"================================================================================";
 cout<<"\n\n\n\t\t\tM A I N     M E N U";
 cout<<"\n\n\n\tPRESS 1 FOR ARMOURY ISSUE............";
 cout<<"\n\n\tPRESS 2 FOR ARMOURY DEPOSIT............";
 cout<<"\n\n\tPRESS 3 FOR DEFENCE ADMINISTRATOR MENU.........";
 cout<<"\n\n\tPRESS 4 FOR EXITING............";
 cout<<"\n\n\n";
 cout<<"================================================================================";
 cout<<"\n\n\tPlease Select Your Option (1-4)-------------->> ";
 ch=getche();

   switch(ch)
    {
      case '1':clrscr();
      armoury_issue();
      break;
      case '2':armoury_deposit();
      break;
      case '3':admin_menu();
      break;
      case '4':exit(0);
      default :cout<<"\a";
    }
      }while(ch!='4');
}


//   END OF PROJECT

//HEADER FILE USED IN PROJECT


#include<fstream.h>
#include<conio.h>
#include<stdio.h>
#include<process.h>
#include<string.h>
#include<iomanip.h>


//CLASS USED IN PROJECT

class armoury
{
 char arm_no[6];
 char arm_name[50];
 char arm_lncode[20];
 char arm_divuse[20];
 char arm_manfct[20];
 char arm_type[20];
 public:
   void create_armoury()
   {
 cout<<"\n***************NEW ARMAMENT ENTRY***************\n";
 cout<<"\nEnter The Armoury no(4-DIGIT)------------->>";
 cin>>arm_no;
 cout<<"\n\nEnter The Name of The Armoury------------->> ";
 gets(arm_name);
 cout<<"\n\nEnter The Licensee Code of The Armoury------------->> ";
 gets(arm_lncode);
 cout<<"\n\nEnter The Manufacturer of The Armoury------------->> ";
 gets(arm_manfct);
 cout<<"\n\nEnter The type of The Armoury------------->> ";
 gets(arm_type);
 cout<<"\n\nEnter The Division For Usage(ARMY/IAF/NAVY)------------->> ";
 gets(arm_divuse);
 cout<<"\n\n\nARMAMENT Created..............";
   }

   void show_armoury()
{  cout<<"\n\n";
 cout<<"================================================================================";
 cout<<"\n***************ARMOURY NO*************** : "<<arm_no;
 cout<<"\n\nName of The Armoury------------->> ";
 puts(arm_name);
 cout<<"\n\nLicensee Code of The Armoury------------->> ";
 puts(arm_lncode);
 cout<<"\n\nManufacturer of The Armoury------------->> ";
 puts(arm_manfct);
 cout<<"\n\ntype of The Armoury------------->> ";
 puts(arm_type);
 cout<<"\n\nDivision For Usage(ARMY/IAF/NAVY)------------->> ";
 puts(arm_divuse);
 cout<<"\n\n";
 cout<<"================================================================================";
}

 void modify_armoury()
{
cout<<"\n***************CURRENT  ARMOURY  NO*************** : "<<arm_no;
cout<<"\n\nModify Armoury Name------------->> ";
gets(arm_name);
cout<<"\n\nModify Licensee Code of The Armoury------------->> ";
gets(arm_lncode);
cout<<"\n\nModify Manufacturer of The Armoury------------->> ";
gets(arm_manfct);
cout<<"\n\nModify type of The Armoury------------->> ";
gets(arm_type);
cout<<"\n\nModify Division For Usage(ARMY/IAF/NAVY)------------->> ";
gets(arm_divuse);
}

char* retarm_no()
{
return arm_no;
}

void report()
{cout<<arm_no<<setw(10)<<arm_name<<setw(12)<<arm_lncode<<setw(14)<<arm_manfct<<setw(16)<<arm_type<<setw(18)<<arm_divuse<<endl;}
}; 
//class ends here

class defence_pers
{
 char dpentry_code[6];
 char dp_name[20];
 char dpdiv[10];
 char dp_rank[20];
 char dp_branch[10];
 char dp_command[10];
 char dp_station[20];
 char dp_trade[20];
 char defparm_no[10];
 int token;
public:
 void create_defence_pers()
 {
 clrscr();
 cout<<"\n***************NEW DEFENCE PERSONNEL ENTRY*************\n";
 cout<<"\n\nEnter The Defence Personnel's Entry Code(5-DIGIT)------------->> ";
 cin>>dpentry_code;
 cout<<"\nEnter The Name of The Defence Personnel------------->> ";
 gets(dp_name);
 cout<<"\nEnter The Division of The Defence Personnel(Army/IAF/Navy)------------->> ";
 gets(dpdiv);
 cout<<"\nEnter The Rank of The Defence Personnel------------->> ";
 gets(dp_rank);
cout<<"\nEnter The Branch of The Defence Personnel(tech/NT/FLYING/GROUND)------------->> ";
 gets(dp_branch);
cout<<"\nEnter The Command where Defence Personnel POSTED(N/E/W/S)------------->> ";
 gets(dp_command);
cout<<"\nEnter The STATION/BASE/FRONT where Defence Personnel posted------------->> ";
 gets(dp_station);
 cout<<"\nEnter The Trade of The Defence Personnel------------->> ";
 gets(dp_trade);

 token=0;
 defparm_no[0]='/0';//TAKING INITIAL POS AS NULL
 cout<<"\n\nDefence Personnel Record Created...............";
 }
 
 void show_defence_pers()
 {  cout<<"\n\n";
cout<<"================================================================================";
cout<<"\nDefence Personnel Entry code(5-DIGIT)------------->>  "<<dpentry_code;
cout<<"\nName of The Defence Personnel------------->> ";
puts(dp_name);
cout<<"\nDivision of The Defence Personnel(Army/IAF/Navy)------------->> ";
puts(dpdiv);
cout<<"\nRank of The Defence Personnel------------->> ";
puts(dp_rank);
cout<<"\nBranch of The Defence Personnel(tech/NT/FLYING/GROUND)------------->> ";
puts(dp_branch);
cout<<"\nCommand where Defence Personnel POSTED(N/E/W/S)------------->> ";
puts(dp_command);
cout<<"\nSTATION/BASE/FRONT where Defence Personnel posted------------->> ";
puts(dp_station);
cout<<"\nTrade of The Defence Personnel------------->> ";
puts(dp_trade);

cout<<"\nNo of Armament issued------------->>  "<<token;
 if(token==1)
 cout<<"\nIssued armoury No------------->> "<<defparm_no;
  cout<<"\n\n";
cout<<"================================================================================";
}

void modify_defence_pers()
{
 cout<<"\n************CURRENT  DEFENCE PERSONNEL ENTRY CODE********** : "<<dpentry_code;
 cout<<"\n\nModify Defence Personnel Name.------------->> ";
 gets(dp_name);
 cout<<"\nModify Division of The Defence Personnel(Army/IAF/Navy)------------->> ";
 gets(dpdiv);
 cout<<"\nModify Rank of The Defence Personnel------------->> ";
 gets(dp_rank);
 cout<<"\nModify Branch of The Defence Personnel(tech/NT/FLYING/GROUND)------------->> ";
 gets(dp_branch);
 cout<<"\nModify Command where Defence Personnel POSTED(N/E/W/S)------------->> ";
 gets(dp_command);
 cout<<"\nModify STATION/BASE/FRONT where Defence Personnel posted------------->> ";
 gets(dp_station);
 cout<<"\nModify Trade of The Defence Personnel------------->> ";
 gets(dp_trade);
 }

 char* retdpentry_code()
 {
 return dpentry_code;
 }
 char* retdefparm_no()
 {
 return defparm_no;
 }
 int rettoken()
 {
 return token;
 }
 void addtoken()
 {token=1;}
 void resettoken()
 {token=0;}
 void getdefparm_no(char t[])
 {
 strcpy(defparm_no,t);
 }

 void report()
 {cout<<setw(5)<<dpentry_code<<setw(9)<<dp_name<<setw(6)<<dpdiv<<setw(16) <<dp_rank<<setw(6)<<dp_branch<<setw(4)<<dp_command<<setw(14)<<dp_station<<setw(8) <<dp_trade<<setw(4)<<token<<endl;
 }
};      //class ends here

//     global declaration for stream object, object

fstream fp,fp1;
armoury arm;
defence_pers defp;

//     function to write in file

void write_armoury()
{
 char ch;
 fp.open("armoury.dat",ios::out|ios::app);
  do
  {
  clrscr();
  arm.create_armoury();
  fp.write((char*)&arm,sizeof(armoury));
  cout<<"\n\nDo you want to add more ARMOURY record??????????(y/n?)";
  cin>>ch;
  }
  while(ch=='y'||ch=='Y');
  fp.close();
}

void write_defence_pers()
{
 char ch;
 fp.open("defence_pers.dat",ios::out|ios::app);
 do
 {
  defp.create_defence_pers();
  fp.write((char*)&defp,sizeof(defence_pers));
  cout<<"\n\ndo you want to add more record????????(y/n?)";
  cin>>ch;
  }
  while(ch=='y'||ch=='Y');
  fp.close();
}

//     function to read specific record from file

void display_sparm(char n[])
{
 cout<<"\n*************ARMOURY DETAILS*************\n";
 int flag=0;
 fp.open("armoury.dat",ios::in);
 while(fp.read((char*)&arm,sizeof(armoury)))
 {
  if(strcmpi(arm.retarm_no(),n)==0)
  {
   arm.show_armoury();
   flag=1;
  }
 }
 fp.close();
 if(flag==0)
 cout<<"\n\nArmoury does not exist!!!!!!!!!!!!!";
 getch();
}

void display_spdefp(char n[])
{
 cout<<"\n*************DEFENCE PERSONNEL DETAILS*************\n";
 int flag=0;
 fp.open("defence_pers.dat",ios::in);
 while(fp.read((char*)&defp,sizeof(defence_pers)))
 {
 if((strcmpi(defp.retdpentry_code(),n)==0))
 {
 defp.show_defence_pers();
 flag=1;
 }
}
 fp.close();
 if(flag==0)
 cout<<"\n\nDefence Personnel does not exist????????????";
 getch();
}

//     function to modify record of file

void modify_armoury()
{
 char n[6];
 int found=0;
 clrscr();
 cout<<"\n\n\t***************MODIFY ARMOURY RECORD************** ";
 cout<<"\n\n\tEnter The armoury no.of armoury to be modified-------------->>";
 cin>>n;
 fp.open("armoury.dat",ios::in|ios::out);
  while(fp.read((char*)&arm,sizeof(armoury)) && found==0)
  {
 if(strcmpi(arm.retarm_no(),n)==0)
   {
   arm.show_armoury();
   cout<<"\n**********ENTER NEW DETAILS OF ARMOURY*********"<<endl;
   arm.modify_armoury();
   int pos=-1*sizeof(arm);
   fp.seekp(pos,ios::cur);
   fp.write((char*)&arm,sizeof(armoury));
   cout<<"\n\n\t Record Updated.............";
found=1;
  }
}
 fp.close();
 if(found==0)
 cout<<"\n\n Record Not Found?????????????? ";
 getch();
}

void modify_defence_pers()
{
 char n[6];
 int found=0;
 clrscr();
 cout<<"\n\n\t**************MODIFY DEFENCE PERSONNEL RECORD************* ";
 cout<<"\n\n\tEnter Entry Code of defence personnel to be modified----------->>";
 cin>>n;
 fp.open("defence_pers.dat",ios::in|ios::out);
 while(fp.read((char*)&defp,sizeof(defence_pers)) && found==0)
 {
 if(strcmpi(defp.retdpentry_code(),n)==0)
  {
  defp.show_defence_pers();
 cout<<"\n*********ENTER NEW DETAILS OF DEFENCE PERSONNEL*********"<<endl;
 defp.modify_defence_pers();
 int pos=-1*sizeof(defp);
 fp.seekp(pos,ios::cur);
 fp.write((char*)&defp,sizeof(defence_pers));
 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_defence_pers()
{
 char n[7];
 int flag=0;
 clrscr();
 cout<<"\n\n\n\t***********DELETE DEFENCE PERSONNEL************";
 cout<<"\n\nEnter The Entry Code of the Defence Personnel You Want To Delete------------>> \n";
 cin>>n;
 fp.open("defence_pers.dat",ios::in|ios::out);
 fstream fp2;
 fp2.open("Temp.dat",ios::out);
 fp.seekg(0,ios::beg);
 while(fp.read((char*)&defp,sizeof(defence_pers)))
 {
 if(strcmpi(defp.retdpentry_code(),n)!=0)
 fp2.write((char*)&defp,sizeof(defence_pers));
 else
 flag=1;
}
 fp2.close();
 fp.close();
 remove("defence_pers.dat");
 rename("Temp.dat","defence_pers.dat");
   if(flag==1)
 cout<<"\n\n\tRecord Deleted ................";
else
 cout<<"\n\nRecord not found!!!!!!!!!!";
getch();
}

void delete_armoury()
{
 char n[6];
 int flag=0;
 clrscr();
 cout<<"\n\n\n\t**************DELETE ARMOURY****************...";
 cout<<"\n\nEnter The armoury no. of the armoury You Want To Delete------------->> ";
 cin>>n;
 fp.open("armoury.dat",ios::in|ios::out);
 fstream fp2;
 fp2.open("Temp.dat",ios::out);
 fp.seekg(0,ios::beg);
  while(fp.read((char*)&arm,sizeof(armoury)))
 {
  if(strcmpi(arm.retarm_no(),n)!=0)
  fp2.write((char*)&arm,sizeof(armoury));
    else
 flag=1;
 }
 fp2.close();
 fp.close();
 remove("armoury.dat");
 rename("Temp.dat","armoury.dat");
   if(flag==1)
 cout<<"\n\n\tRecord Deleted ................";
     else
 cout<<"\n\nRecord not found!!!!!!!!!!";
 getch();
}

//     function to display all defence_perss list

void display_alls()
{
 clrscr();
 fp.open("defence_pers.dat",ios::in);
 if(!fp)
 {
 cout<<"ERROR!!! FILE COULD NOT BE OPEN???????????????? ";
getch();
return;
 }
cout<<"\n\n\t****************ALL DEFENCE PERSONNEL LIST****************\n\n";
cout<<"================================================================================\n";
cout<<"ENTRY CODE.|"<<setw(5)<<"Name|"<<setw(5)<<"DIVISION|"<<setw(5)<<"  RANK|"<<setw(5)<<" BRANCH|"<<setw(5)<<" COMMAND|"<<setw(5)<<" STATION|"<<setw(5)<<"   TRADE|"<<"armoury Issued\n";
cout<<"================================================================================\n";
 while(fp.read((char*)&defp,sizeof(defence_pers)))
 {
 defp.report();
 }
 fp.close();
 getch();
}

//     function to display armourys list

void display_allb()
{
 clrscr();
 fp.open("armoury.dat",ios::in);
 if(!fp)
 {
 cout<<"ERROR!!! FILE COULD NOT BE OPEN????????????? ";
getch();
return;
 }
cout<<"\n\n\t\t****************ALL armoury LIST****************\n\n";
cout<<"================================================================================\n";
cout<<"armoury NO."<<setw(5)<<"   armoury Name"<<setw(5)<<"   ARM LICENSEE  CODE"<<setw(5)<<"  MANUFACTURER"<<setw(5)<<"  arm type"<<setw(5)<<"  DIV USED\n";
cout<<"================================================================================\n";

 while(fp.read((char*)&arm,sizeof(armoury)))
 {
 arm.report();
 }
 fp.close();
 getch();
}

//     function to issue armoury

void armoury_issue()
{
 char dpn[6],armn[6];
 int found=0,flag=0;
 clrscr();
 cout<<"\n\n\t**************ARMOURY ISSUE*************** ";
 cout<<"\n\n\Enter The defence_personnel's ENTRY CODE.------------>>";
 cin>>dpn;
 fp.open("defence_pers.dat",ios::in|ios::out);
 fp1.open("armoury.dat",ios::in|ios::out);
 while(fp.read((char*)&defp,sizeof(defence_pers)) && found==0)
 {
  if(strcmpi(defp.retdpentry_code(),dpn)==0)
  {
  found=1;
  if(defp.rettoken()==0)
 {
 cout<<"\n\n\tEnter the armoury no.------------>> ";
 cin>>armn;
 while(fp1.read((char*)&arm,sizeof(armoury))&& flag==0)
 {
 if(strcmpi(arm.retarm_no(),armn)==0)
 {
 arm.show_armoury();
 flag=1;
 defp.addtoken();
 defp.getdefparm_no(arm.retarm_no());
 int pos=-1*sizeof(defp);
 fp.seekp(pos,ios::cur);
 fp.write((char*)&defp,sizeof(defence_pers));
 cout<<"\n\n\t CONGRATULATIONS!!!!!\n\narmoury issued successfully\n\nPlease Note: Write the current date\nin backside of your armoury and submit within 50 days fine Rs. 100 for each day \nafter 50 days period";
 }
}
 if(flag==0)
 cout<<"\narmoury no does not exist!!!!!!!!!!!!";
 }
 else
cout<<"\nYou have not returned the last armoury!!!!!!!!!!!!";
}
 }
 if(found==0)
 cout<<"\nDefence Personnel record not exist?????????????????????";
 getch();
 fp.close();
 fp1.close();
}

//     function to deposit armoury

void armoury_deposit()
{
 char dpn[6],armn[6];
 int found=0,flag=0,day;

 unsigned short fine;               //range 0-65,535
 clrscr();
 cout<<"\n\n\t************ARMOURY DEPOSIT************";
 cout<<"\n\n\Enter The defence_personnel's ENTRY CODE.----------------->>>>>> ";
 cin>>dpn;
 fp.open("defence_pers.dat",ios::in|ios::out);
 fp1.open("armoury.dat",ios::in|ios::out);
  while(fp.read((char*)&defp,sizeof(defence_pers)) && found==0)
  {
  if(strcmpi(defp.retdpentry_code(),dpn)==0)
    {
    found=1;
  if(defp.rettoken()==1)
    {
  while(fp1.read((char*)&arm,sizeof(armoury))&& flag==0)
  {
  if(strcmpi(arm.retarm_no(),defp.retdefparm_no())==0)
    {
    arm.show_armoury();
    flag=1;
 cout<<"\n\nEnter armoury deposited in no. of days-------->> ";
 cin>>day;
 if(day>50)
 {
 fine=(day-50)*100;
 cout<<"\n\nFine has to deposited Rs.-------->> "<<fine;
 }
 defp.resettoken();
 int pos=-1*sizeof(defp);
 fp.seekp(pos,ios::cur);
 fp.write((char*)&defp,sizeof(defence_pers));
 cout<<"\n\n\t armoury deposited successfully";
 }
}
if(flag==0)
 cout<<"\narmoury no does not exist?????????????????";
 }
 else
 cout<<"\nNo such armoury is issued..please check!!!!!!!!!!!!!";
 }
}
 if(found==0)
 cout<<"\n Defence Personnel record not exist??????????????";
 getch();
 fp.close();
 fp1.close();
 }

//     INTRODUCTION FUNCTION


void intro()
{
clrscr();
cout<<"\n";
cout<<"================================================================================";
cout<<"\n\t_____________________________________________________________________";
cout<<"\n\n\t     DEFENCE        ARMAMENT        MANAGEMENT         SYSTEM";
cout<<"\n\t_____________________________________________________________________";
cout<<"\n\n";
gotoxy(18,10);
cout<<" developed by MASTER CALEB PRADHAN & NIKHIL KUMAR \n";
gotoxy(37,12);
cout<<" OF\n";
gotoxy(28,13);
cout<<" CLASS XII-'B'(COMP.SC)\n";
gotoxy(24,14);
cout<<"KENDRIYA VIDYALAYA NO.2 KHARAGPUR\n";
gotoxy(20,16);
cout<<" guided  by  MRS NANDINI DAS(PGT COMP.SC)\n";
cout<<"\n\n\n================================================================================";
gotoxy(23,23);
cout<<"PRESS ANY KEY TO CONTINUE!!!!!!!!!!!!";

getch();
}
//      DEFENCE ADMINISTRATOR MENU FUNCTION

void admin_menu()
{
 clrscr();
 int ch2;
 cout<<"\n\n\n";
 cout<<"================================================================================";
 cout<<"\n\t...................DEFENCE ADMINISTRATOR MENU..................";
 cout<<"\n\n\tPRESS 1 TO CREATE DEFENCE PERSONNEL RECORD----------------";
 cout<<"\n\tPRESS 2 TO DISPLAY ALL DEFENCE PERSONNELS RECORD----------";
 cout<<"\n\tPRESS 3 TO SEARCH & DISPLAY SPECIFIC DEFENCE PERSONNEL RECORD-------- ";
 cout<<"\n\tPRESS 4 TO MODIFY SPECIFIC DEFENCE PERSONNEL RECORD-------------";
 cout<<"\n\tPRESS 5 TO DELETE SPECIFIC DEFENCE PERSONNEL RECORD-------------";
 cout<<"\n\tPRESS 6 TO CREATE ARMOURY-------------- ";
 cout<<"\n\tPRESS 7 TO DISPLAY ALL ARMAMENTS------------- ";
 cout<<"\n\tPRESS 8 TO SEARCH & DISPLAY SPECIFIC ARMOURY------------- ";
 cout<<"\n\tPRESS 9 TO MODIFY ARMAMENT------------ ";
 cout<<"\n\tPRESS 10 TO DELETE ARMAMENT------------- ";
 cout<<"\n\tPRESS 11 TO GO BACK TO MAIN MENU???????????";
 cout<<"\n\n";
 cout<<"================================================================================";
 cout<<"\n\t Please Enter Your Choice (1-11)---------------->>>>> ";
 cin>>ch2;
 switch(ch2)
 {
 case 1: clrscr();
write_defence_pers();
break;
 case 2: display_alls();
         break;
 case 3:
char num[6];
clrscr();
cout<<"\n\n\t********SEARCH RECORD OF SPECIFIC DEFENCE PERSONNEL*********** ";
cout<<"\n\n\tEnter The defence_personnel's ENTRY CODE:------------->> ";
cin>>num;
display_spdefp(num);
break;
 case 4: modify_defence_pers();
        break;
 case 5: delete_defence_pers();
        break;
 case 6: clrscr();
write_armoury();
        break;
 case 7: display_allb();
         break;
 case 8: {
char num[6];
clrscr();
        cout<<"\n\n\t********SEARCH RECORD OF SPECIFIC ARMOURY*********** ";
cout<<"\n\n\tPlease Enter The armoury No.------------->> ";
cin>>num;
display_sparm(num);
break;
}
 case 9: modify_armoury();
         break;
 case 10: delete_armoury();
break;
 case 11: return;
default:cout<<"\a";
 }

admin_menu();
}



//    THE MAIN FUNCTION OF PROGRAM

void main()
{
 char ch;
 intro();
 do
 {
 clrscr();
 cout<<"\n";
 cout<<"================================================================================";
 cout<<"\n\n\n\t\t\tM A I N     M E N U";
 cout<<"\n\n\n\tPRESS 1 FOR ARMOURY ISSUE............";
 cout<<"\n\n\tPRESS 2 FOR ARMOURY DEPOSIT............";
 cout<<"\n\n\tPRESS 3 FOR DEFENCE ADMINISTRATOR MENU.........";
 cout<<"\n\n\tPRESS 4 FOR EXITING............";
 cout<<"\n\n\n";
 cout<<"================================================================================";
 cout<<"\n\n\tPlease Select Your Option (1-4)-------------->> ";
 ch=getche();

   switch(ch)
    {
      case '1':clrscr();
      armoury_issue();
      break;
      case '2':armoury_deposit();
      break;
      case '3':admin_menu();
      break;
      case '4':exit(0);
      default :cout<<"\a";
    }
      }while(ch!='4');
}


//   END OF PROJECT

 


//HEADER FILE USED IN PROJECT


#include<fstream.h>
#include<conio.h>
#include<stdio.h>
#include<process.h>
#include<string.h>
#include<iomanip.h>


//CLASS USED IN PROJECT

class armoury
{
 char arm_no[6];
 char arm_name[50];
 char arm_lncode[20];
 char arm_divuse[20];
 char arm_manfct[20];
 char arm_type[20];
 public:
   void create_armoury()
   {
 cout<<"\n***************NEW ARMAMENT ENTRY***************\n";
 cout<<"\nEnter The Armoury no(4-DIGIT)------------->>";
 cin>>arm_no;
 cout<<"\n\nEnter The Name of The Armoury------------->> ";
 gets(arm_name);
 cout<<"\n\nEnter The Licensee Code of The Armoury------------->> ";
 gets(arm_lncode);
 cout<<"\n\nEnter The Manufacturer of The Armoury------------->> ";
 gets(arm_manfct);
 cout<<"\n\nEnter The type of The Armoury------------->> ";
 gets(arm_type);
 cout<<"\n\nEnter The Division For Usage(ARMY/IAF/NAVY)------------->> ";
 gets(arm_divuse);
 cout<<"\n\n\nARMAMENT Created..............";
   }

   void show_armoury()
{  cout<<"\n\n";
 cout<<"================================================================================";
 cout<<"\n***************ARMOURY NO*************** : "<<arm_no;
 cout<<"\n\nName of The Armoury------------->> ";
 puts(arm_name);
 cout<<"\n\nLicensee Code of The Armoury------------->> ";
 puts(arm_lncode);
 cout<<"\n\nManufacturer of The Armoury------------->> ";
 puts(arm_manfct);
 cout<<"\n\ntype of The Armoury------------->> ";
 puts(arm_type);
 cout<<"\n\nDivision For Usage(ARMY/IAF/NAVY)------------->> ";
 puts(arm_divuse);
 cout<<"\n\n";
 cout<<"================================================================================";
}

 void modify_armoury()
{
cout<<"\n***************CURRENT  ARMOURY  NO*************** : "<<arm_no;
cout<<"\n\nModify Armoury Name------------->> ";
gets(arm_name);
cout<<"\n\nModify Licensee Code of The Armoury------------->> ";
gets(arm_lncode);
cout<<"\n\nModify Manufacturer of The Armoury------------->> ";
gets(arm_manfct);
cout<<"\n\nModify type of The Armoury------------->> ";
gets(arm_type);
cout<<"\n\nModify Division For Usage(ARMY/IAF/NAVY)------------->> ";
gets(arm_divuse);
}

char* retarm_no()
{
return arm_no;
}

void report()
{cout<<arm_no<<setw(10)<<arm_name<<setw(12)<<arm_lncode<<setw(14)<<arm_manfct<<setw(16)<<arm_type<<setw(18)<<arm_divuse<<endl;}
}; 
//class ends here

class defence_pers
{
 char dpentry_code[6];
 char dp_name[20];
 char dpdiv[10];
 char dp_rank[20];
 char dp_branch[10];
 char dp_command[10];
 char dp_station[20];
 char dp_trade[20];
 char defparm_no[10];
 int token;
public:
 void create_defence_pers()
 {
 clrscr();
 cout<<"\n***************NEW DEFENCE PERSONNEL ENTRY*************\n";
 cout<<"\n\nEnter The Defence Personnel's Entry Code(5-DIGIT)------------->> ";
 cin>>dpentry_code;
 cout<<"\nEnter The Name of The Defence Personnel------------->> ";
 gets(dp_name);
 cout<<"\nEnter The Division of The Defence Personnel(Army/IAF/Navy)------------->> ";
 gets(dpdiv);
 cout<<"\nEnter The Rank of The Defence Personnel------------->> ";
 gets(dp_rank);
cout<<"\nEnter The Branch of The Defence Personnel(tech/NT/FLYING/GROUND)------------->> ";
 gets(dp_branch);
cout<<"\nEnter The Command where Defence Personnel POSTED(N/E/W/S)------------->> ";
 gets(dp_command);
cout<<"\nEnter The STATION/BASE/FRONT where Defence Personnel posted------------->> ";
 gets(dp_station);
 cout<<"\nEnter The Trade of The Defence Personnel------------->> ";
 gets(dp_trade);

 token=0;
 defparm_no[0]='/0';//TAKING INITIAL POS AS NULL
 cout<<"\n\nDefence Personnel Record Created...............";
 }
 
 void show_defence_pers()
 {  cout<<"\n\n";
cout<<"================================================================================";
cout<<"\nDefence Personnel Entry code(5-DIGIT)------------->>  "<<dpentry_code;
cout<<"\nName of The Defence Personnel------------->> ";
puts(dp_name);
cout<<"\nDivision of The Defence Personnel(Army/IAF/Navy)------------->> ";
puts(dpdiv);
cout<<"\nRank of The Defence Personnel------------->> ";
puts(dp_rank);
cout<<"\nBranch of The Defence Personnel(tech/NT/FLYING/GROUND)------------->> ";
puts(dp_branch);
cout<<"\nCommand where Defence Personnel POSTED(N/E/W/S)------------->> ";
puts(dp_command);
cout<<"\nSTATION/BASE/FRONT where Defence Personnel posted------------->> ";
puts(dp_station);
cout<<"\nTrade of The Defence Personnel------------->> ";
puts(dp_trade);

cout<<"\nNo of Armament issued------------->>  "<<token;
 if(token==1)
 cout<<"\nIssued armoury No------------->> "<<defparm_no;
  cout<<"\n\n";
cout<<"================================================================================";
}

void modify_defence_pers()
{
 cout<<"\n************CURRENT  DEFENCE PERSONNEL ENTRY CODE********** : "<<dpentry_code;
 cout<<"\n\nModify Defence Personnel Name.------------->> ";
 gets(dp_name);
 cout<<"\nModify Division of The Defence Personnel(Army/IAF/Navy)------------->> ";
 gets(dpdiv);
 cout<<"\nModify Rank of The Defence Personnel------------->> ";
 gets(dp_rank);
 cout<<"\nModify Branch of The Defence Personnel(tech/NT/FLYING/GROUND)------------->> ";
 gets(dp_branch);
 cout<<"\nModify Command where Defence Personnel POSTED(N/E/W/S)------------->> ";
 gets(dp_command);
 cout<<"\nModify STATION/BASE/FRONT where Defence Personnel posted------------->> ";
 gets(dp_station);
 cout<<"\nModify Trade of The Defence Personnel------------->> ";
 gets(dp_trade);
 }

 char* retdpentry_code()
 {
 return dpentry_code;
 }
 char* retdefparm_no()
 {
 return defparm_no;
 }
 int rettoken()
 {
 return token;
 }
 void addtoken()
 {token=1;}
 void resettoken()
 {token=0;}
 void getdefparm_no(char t[])
 {
 strcpy(defparm_no,t);
 }

 void report()
 {cout<<setw(5)<<dpentry_code<<setw(9)<<dp_name<<setw(6)<<dpdiv<<setw(16) <<dp_rank<<setw(6)<<dp_branch<<setw(4)<<dp_command<<setw(14)<<dp_station<<setw(8) <<dp_trade<<setw(4)<<token<<endl;
 }
};      //class ends here

//     global declaration for stream object, object

fstream fp,fp1;
armoury arm;
defence_pers defp;

//     function to write in file

void write_armoury()
{
 char ch;
 fp.open("armoury.dat",ios::out|ios::app);
  do
  {
  clrscr();
  arm.create_armoury();
  fp.write((char*)&arm,sizeof(armoury));
  cout<<"\n\nDo you want to add more ARMOURY record??????????(y/n?)";
  cin>>ch;
  }
  while(ch=='y'||ch=='Y');
  fp.close();
}

void write_defence_pers()
{
 char ch;
 fp.open("defence_pers.dat",ios::out|ios::app);
 do
 {
  defp.create_defence_pers();
  fp.write((char*)&defp,sizeof(defence_pers));
  cout<<"\n\ndo you want to add more record????????(y/n?)";
  cin>>ch;
  }
  while(ch=='y'||ch=='Y');
  fp.close();
}

//     function to read specific record from file

void display_sparm(char n[])
{
 cout<<"\n*************ARMOURY DETAILS*************\n";
 int flag=0;
 fp.open("armoury.dat",ios::in);
 while(fp.read((char*)&arm,sizeof(armoury)))
 {
  if(strcmpi(arm.retarm_no(),n)==0)
  {
   arm.show_armoury();
   flag=1;
  }
 }
 fp.close();
 if(flag==0)
 cout<<"\n\nArmoury does not exist!!!!!!!!!!!!!";
 getch();
}

void display_spdefp(char n[])
{
 cout<<"\n*************DEFENCE PERSONNEL DETAILS*************\n";
 int flag=0;
 fp.open("defence_pers.dat",ios::in);
 while(fp.read((char*)&defp,sizeof(defence_pers)))
 {
 if((strcmpi(defp.retdpentry_code(),n)==0))
 {
 defp.show_defence_pers();
 flag=1;
 }
}
 fp.close();
 if(flag==0)
 cout<<"\n\nDefence Personnel does not exist????????????";
 getch();
}

//     function to modify record of file

void modify_armoury()
{
 char n[6];
 int found=0;
 clrscr();
 cout<<"\n\n\t***************MODIFY ARMOURY RECORD************** ";
 cout<<"\n\n\tEnter The armoury no.of armoury to be modified-------------->>";
 cin>>n;
 fp.open("armoury.dat",ios::in|ios::out);
  while(fp.read((char*)&arm,sizeof(armoury)) && found==0)
  {
 if(strcmpi(arm.retarm_no(),n)==0)
   {
   arm.show_armoury();
   cout<<"\n**********ENTER NEW DETAILS OF ARMOURY*********"<<endl;
   arm.modify_armoury();
   int pos=-1*sizeof(arm);
   fp.seekp(pos,ios::cur);
   fp.write((char*)&arm,sizeof(armoury));
   cout<<"\n\n\t Record Updated.............";
found=1;
  }
}
 fp.close();
 if(found==0)
 cout<<"\n\n Record Not Found?????????????? ";
 getch();
}

void modify_defence_pers()
{
 char n[6];
 int found=0;
 clrscr();
 cout<<"\n\n\t**************MODIFY DEFENCE PERSONNEL RECORD************* ";
 cout<<"\n\n\tEnter Entry Code of defence personnel to be modified----------->>";
 cin>>n;
 fp.open("defence_pers.dat",ios::in|ios::out);
 while(fp.read((char*)&defp,sizeof(defence_pers)) && found==0)
 {
 if(strcmpi(defp.retdpentry_code(),n)==0)
  {
  defp.show_defence_pers();
 cout<<"\n*********ENTER NEW DETAILS OF DEFENCE PERSONNEL*********"<<endl;
 defp.modify_defence_pers();
 int pos=-1*sizeof(defp);
 fp.seekp(pos,ios::cur);
 fp.write((char*)&defp,sizeof(defence_pers));
 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_defence_pers()
{
 char n[7];
 int flag=0;
 clrscr();
 cout<<"\n\n\n\t***********DELETE DEFENCE PERSONNEL************";
 cout<<"\n\nEnter The Entry Code of the Defence Personnel You Want To Delete------------>> \n";
 cin>>n;
 fp.open("defence_pers.dat",ios::in|ios::out);
 fstream fp2;
 fp2.open("Temp.dat",ios::out);
 fp.seekg(0,ios::beg);
 while(fp.read((char*)&defp,sizeof(defence_pers)))
 {
 if(strcmpi(defp.retdpentry_code(),n)!=0)
 fp2.write((char*)&defp,sizeof(defence_pers));
 else
 flag=1;
}
 fp2.close();
 fp.close();
 remove("defence_pers.dat");
 rename("Temp.dat","defence_pers.dat");
   if(flag==1)
 cout<<"\n\n\tRecord Deleted ................";
else
 cout<<"\n\nRecord not found!!!!!!!!!!";
getch();
}

void delete_armoury()
{
 char n[6];
 int flag=0;
 clrscr();
 cout<<"\n\n\n\t**************DELETE ARMOURY****************...";
 cout<<"\n\nEnter The armoury no. of the armoury You Want To Delete------------->> ";
 cin>>n;
 fp.open("armoury.dat",ios::in|ios::out);
 fstream fp2;
 fp2.open("Temp.dat",ios::out);
 fp.seekg(0,ios::beg);
  while(fp.read((char*)&arm,sizeof(armoury)))
 {
  if(strcmpi(arm.retarm_no(),n)!=0)
  fp2.write((char*)&arm,sizeof(armoury));
    else
 flag=1;
 }
 fp2.close();
 fp.close();
 remove("armoury.dat");
 rename("Temp.dat","armoury.dat");
   if(flag==1)
 cout<<"\n\n\tRecord Deleted ................";
     else
 cout<<"\n\nRecord not found!!!!!!!!!!";
 getch();
}

//     function to display all defence_perss list

void display_alls()
{
 clrscr();
 fp.open("defence_pers.dat",ios::in);
 if(!fp)
 {
 cout<<"ERROR!!! FILE COULD NOT BE OPEN???????????????? ";
getch();
return;
 }
cout<<"\n\n\t****************ALL DEFENCE PERSONNEL LIST****************\n\n";
cout<<"================================================================================\n";
cout<<"ENTRY CODE.|"<<setw(5)<<"Name|"<<setw(5)<<"DIVISION|"<<setw(5)<<"  RANK|"<<setw(5)<<" BRANCH|"<<setw(5)<<" COMMAND|"<<setw(5)<<" STATION|"<<setw(5)<<"   TRADE|"<<"armoury Issued\n";
cout<<"================================================================================\n";
 while(fp.read((char*)&defp,sizeof(defence_pers)))
 {
 defp.report();
 }
 fp.close();
 getch();
}

//     function to display armourys list

void display_allb()
{
 clrscr();
 fp.open("armoury.dat",ios::in);
 if(!fp)
 {
 cout<<"ERROR!!! FILE COULD NOT BE OPEN????????????? ";
getch();
return;
 }
cout<<"\n\n\t\t****************ALL armoury LIST****************\n\n";
cout<<"================================================================================\n";
cout<<"armoury NO."<<setw(5)<<"   armoury Name"<<setw(5)<<"   ARM LICENSEE  CODE"<<setw(5)<<"  MANUFACTURER"<<setw(5)<<"  arm type"<<setw(5)<<"  DIV USED\n";
cout<<"================================================================================\n";

 while(fp.read((char*)&arm,sizeof(armoury)))
 {
 arm.report();
 }
 fp.close();
 getch();
}

//     function to issue armoury

void armoury_issue()
{
 char dpn[6],armn[6];
 int found=0,flag=0;
 clrscr();
 cout<<"\n\n\t**************ARMOURY ISSUE*************** ";
 cout<<"\n\n\Enter The defence_personnel's ENTRY CODE.------------>>";
 cin>>dpn;
 fp.open("defence_pers.dat",ios::in|ios::out);
 fp1.open("armoury.dat",ios::in|ios::out);
 while(fp.read((char*)&defp,sizeof(defence_pers)) && found==0)
 {
  if(strcmpi(defp.retdpentry_code(),dpn)==0)
  {
  found=1;
  if(defp.rettoken()==0)
 {
 cout<<"\n\n\tEnter the armoury no.------------>> ";
 cin>>armn;
 while(fp1.read((char*)&arm,sizeof(armoury))&& flag==0)
 {
 if(strcmpi(arm.retarm_no(),armn)==0)
 {
 arm.show_armoury();
 flag=1;
 defp.addtoken();
 defp.getdefparm_no(arm.retarm_no());
 int pos=-1*sizeof(defp);
 fp.seekp(pos,ios::cur);
 fp.write((char*)&defp,sizeof(defence_pers));
 cout<<"\n\n\t CONGRATULATIONS!!!!!\n\narmoury issued successfully\n\nPlease Note: Write the current date\nin backside of your armoury and submit within 50 days fine Rs. 100 for each day \nafter 50 days period";
 }
}
 if(flag==0)
 cout<<"\narmoury no does not exist!!!!!!!!!!!!";
 }
 else
cout<<"\nYou have not returned the last armoury!!!!!!!!!!!!";
}
 }
 if(found==0)
 cout<<"\nDefence Personnel record not exist?????????????????????";
 getch();
 fp.close();
 fp1.close();
}

//     function to deposit armoury

void armoury_deposit()
{
 char dpn[6],armn[6];
 int found=0,flag=0,day;

 unsigned short fine;               //range 0-65,535
 clrscr();
 cout<<"\n\n\t************ARMOURY DEPOSIT************";
 cout<<"\n\n\Enter The defence_personnel's ENTRY CODE.----------------->>>>>> ";
 cin>>dpn;
 fp.open("defence_pers.dat",ios::in|ios::out);
 fp1.open("armoury.dat",ios::in|ios::out);
  while(fp.read((char*)&defp,sizeof(defence_pers)) && found==0)
  {
  if(strcmpi(defp.retdpentry_code(),dpn)==0)
    {
    found=1;
  if(defp.rettoken()==1)
    {
  while(fp1.read((char*)&arm,sizeof(armoury))&& flag==0)
  {
  if(strcmpi(arm.retarm_no(),defp.retdefparm_no())==0)
    {
    arm.show_armoury();
    flag=1;
 cout<<"\n\nEnter armoury deposited in no. of days-------->> ";
 cin>>day;
 if(day>50)
 {
 fine=(day-50)*100;
 cout<<"\n\nFine has to deposited Rs.-------->> "<<fine;
 }
 defp.resettoken();
 int pos=-1*sizeof(defp);
 fp.seekp(pos,ios::cur);
 fp.write((char*)&defp,sizeof(defence_pers));
 cout<<"\n\n\t armoury deposited successfully";
 }
}
if(flag==0)
 cout<<"\narmoury no does not exist?????????????????";
 }
 else
 cout<<"\nNo such armoury is issued..please check!!!!!!!!!!!!!";
 }
}
 if(found==0)
 cout<<"\n Defence Personnel record not exist??????????????";
 getch();
 fp.close();
 fp1.close();
 }

//     INTRODUCTION FUNCTION


void intro()
{
clrscr();
cout<<"\n";
cout<<"================================================================================";
cout<<"\n\t_____________________________________________________________________";
cout<<"\n\n\t     DEFENCE        ARMAMENT        MANAGEMENT         SYSTEM";
cout<<"\n\t_____________________________________________________________________";
cout<<"\n\n";
gotoxy(18,10);
cout<<" developed by MASTER CALEB PRADHAN & NIKHIL KUMAR \n";
gotoxy(37,12);
cout<<" OF\n";
gotoxy(28,13);
cout<<" CLASS XII-'B'(COMP.SC)\n";
gotoxy(24,14);
cout<<"KENDRIYA VIDYALAYA NO.2 KHARAGPUR\n";
gotoxy(20,16);
cout<<" guided  by  MRS NANDINI DAS(PGT COMP.SC)\n";
cout<<"\n\n\n================================================================================";
gotoxy(23,23);
cout<<"PRESS ANY KEY TO CONTINUE!!!!!!!!!!!!";

getch();
}
//      DEFENCE ADMINISTRATOR MENU FUNCTION

void admin_menu()
{
 clrscr();
 int ch2;
 cout<<"\n\n\n";
 cout<<"================================================================================";
 cout<<"\n\t...................DEFENCE ADMINISTRATOR MENU..................";
 cout<<"\n\n\tPRESS 1 TO CREATE DEFENCE PERSONNEL RECORD----------------";
 cout<<"\n\tPRESS 2 TO DISPLAY ALL DEFENCE PERSONNELS RECORD----------";
 cout<<"\n\tPRESS 3 TO SEARCH & DISPLAY SPECIFIC DEFENCE PERSONNEL RECORD-------- ";
 cout<<"\n\tPRESS 4 TO MODIFY SPECIFIC DEFENCE PERSONNEL RECORD-------------";
 cout<<"\n\tPRESS 5 TO DELETE SPECIFIC DEFENCE PERSONNEL RECORD-------------";
 cout<<"\n\tPRESS 6 TO CREATE ARMOURY-------------- ";
 cout<<"\n\tPRESS 7 TO DISPLAY ALL ARMAMENTS------------- ";
 cout<<"\n\tPRESS 8 TO SEARCH & DISPLAY SPECIFIC ARMOURY------------- ";
 cout<<"\n\tPRESS 9 TO MODIFY ARMAMENT------------ ";
 cout<<"\n\tPRESS 10 TO DELETE ARMAMENT------------- ";
 cout<<"\n\tPRESS 11 TO GO BACK TO MAIN MENU???????????";
 cout<<"\n\n";
 cout<<"================================================================================";
 cout<<"\n\t Please Enter Your Choice (1-11)---------------->>>>> ";
 cin>>ch2;
 switch(ch2)
 {
 case 1: clrscr();
write_defence_pers();
break;
 case 2: display_alls();
         break;
 case 3:
char num[6];
clrscr();
cout<<"\n\n\t********SEARCH RECORD OF SPECIFIC DEFENCE PERSONNEL*********** ";
cout<<"\n\n\tEnter The defence_personnel's ENTRY CODE:------------->> ";
cin>>num;
display_spdefp(num);
break;
 case 4: modify_defence_pers();
        break;
 case 5: delete_defence_pers();
        break;
 case 6: clrscr();
write_armoury();
        break;
 case 7: display_allb();
         break;
 case 8: {
char num[6];
clrscr();
        cout<<"\n\n\t********SEARCH RECORD OF SPECIFIC ARMOURY*********** ";
cout<<"\n\n\tPlease Enter The armoury No.------------->> ";
cin>>num;
display_sparm(num);
break;
}
 case 9: modify_armoury();
         break;
 case 10: delete_armoury();
break;
 case 11: return;
default:cout<<"\a";
 }

admin_menu();
}



//    THE MAIN FUNCTION OF PROGRAM

void main()
{
 char ch;
 intro();
 do
 {
 clrscr();
 cout<<"\n";
 cout<<"================================================================================";
 cout<<"\n\n\n\t\t\tM A I N     M E N U";
 cout<<"\n\n\n\tPRESS 1 FOR ARMOURY ISSUE............";
 cout<<"\n\n\tPRESS 2 FOR ARMOURY DEPOSIT............";
 cout<<"\n\n\tPRESS 3 FOR DEFENCE ADMINISTRATOR MENU.........";
 cout<<"\n\n\tPRESS 4 FOR EXITING............";
 cout<<"\n\n\n";
 cout<<"================================================================================";
 cout<<"\n\n\tPlease Select Your Option (1-4)-------------->> ";
 ch=getche();

   switch(ch)
    {
      case '1':clrscr();
      armoury_issue();
      break;
      case '2':armoury_deposit();
      break;
      case '3':admin_menu();
      break;
      case '4':exit(0);
      default :cout<<"\a";
    }
      }while(ch!='4');
}


//   END OF PROJECT