Created
February 18, 2021 10:04
-
-
Save mahmmoudkinawy/aa56c57bbbd063a61e9f6fccfa6a824d to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include<iostream> | |
#include<windows.h> | |
#include<conio.h> | |
#include<fstream> | |
#include<cstring> | |
#include<cstdio> | |
#include<cstdlib> | |
#include<iomanip> | |
using namespace std; | |
//global variable declaration | |
int k=7,r=0,flag=0; | |
COORD coord = {0, 0}; | |
void gotoxy(int x, int y) | |
{ | |
COORD coord; | |
coord.X = x; | |
coord.Y = y; | |
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord); | |
} | |
struct date | |
{ | |
int mm,dd,yy; | |
}; | |
ofstream fout; | |
ifstream fin; | |
class item | |
{ | |
int itemno; | |
char name[25]; | |
date d; | |
public: | |
void add() | |
{ | |
cout<<"\n\n\tItem No: "; | |
cin>>itemno; | |
cout<<"\n\n\tName of the item: "; | |
cin>>name; | |
//gets(name); | |
cout<<"\n\n\tManufacturing Date(dd-mm-yy): "; | |
cin>>d.mm>>d.dd>>d.yy; | |
} | |
void show() | |
{ | |
cout<<"\n\tItem No: "; | |
cout<<itemno; | |
cout<<"\n\n\tName of the item: "; | |
cout<<name; | |
cout<<"\n\n\tDate : "; | |
cout<<d.mm<<"-"<<d.dd<<"-"<<d.yy; | |
} | |
void report() | |
{ | |
gotoxy(3,k); | |
cout<<itemno; | |
gotoxy(13,k); | |
puts(name); | |
} | |
int retno() | |
{ | |
return(itemno); | |
} | |
}; | |
class amount: public item | |
{ | |
float price,qty,tax,gross,dis,netamt; | |
public: | |
void add(); | |
void show(); | |
void report(); | |
void calculate(); | |
void pay(); | |
float retnetamt() | |
{ | |
return(netamt); | |
} | |
} amt; | |
void amount::add() | |
{ | |
item::add(); | |
cout<<"\n\n\tPrice: "; | |
cin>>price; | |
cout<<"\n\n\tQuantity: "; | |
cin>>qty; | |
cout<<"\n\n\tTax percent: "; | |
cin>>tax; | |
cout<<"\n\n\tDiscount percent: "; | |
cin>>dis; | |
calculate(); | |
fout.write((char *)&amt,sizeof(amt)); | |
fout.close(); | |
} | |
void amount::calculate() | |
{ | |
gross=price+(price*(tax/100)); | |
netamt=qty*(gross-(gross*(dis/100))); | |
} | |
void amount::show() | |
{ | |
fin.open("itemstore.dat",ios::binary); | |
fin.read((char*)&amt,sizeof(amt)); | |
item::show(); | |
cout<<"\n\n\tNet amount: "; | |
cout<<netamt; | |
fin.close(); | |
} | |
void amount::report() | |
{ | |
item::report(); | |
gotoxy(23,k); | |
cout<<price; | |
gotoxy(33,k); | |
cout<<qty; | |
gotoxy(44,k); | |
cout<<tax; | |
gotoxy(52,k); | |
cout<<dis; | |
gotoxy(64,k); | |
cout<<netamt; | |
k=k+1; | |
if(k==50) | |
{ | |
gotoxy(25,50); | |
cout<<"PRESS ANY KEY TO CONTINUE..."; | |
getch(); | |
k=7; | |
system("cls"); | |
gotoxy(30,3); | |
cout<<" ITEM DETAILS "; | |
gotoxy(3,5); | |
cout<<"NUMBER"; | |
gotoxy(13,5); | |
cout<<"NAME"; | |
gotoxy(23,5); | |
cout<<"PRICE"; | |
gotoxy(33,5); | |
cout<<"QUANTITY"; | |
gotoxy(44,5); | |
cout<<"TAX"; | |
gotoxy(52,5); | |
cout<<"DEDUCTION"; | |
gotoxy(64,5); | |
cout<<"NET AMOUNT"; | |
} | |
} | |
void amount::pay() | |
{ | |
show(); | |
cout<<"\n\n\n\t\t*********************************************"; | |
cout<<"\n\t\t DETAILS "; | |
cout<<"\n\t\t*********************************************"; | |
cout<<"\n\n\t\tPRICE :"<<price; | |
cout<<"\n\n\t\tQUANTITY :"<<qty; | |
cout<<"\n\t\tTAX PERCENTAGE :"<<tax; | |
cout<<"\n\t\tDISCOUNT PERCENTAGE :"<<dis; | |
cout<<"\n\n\n\t\tNET AMOUNT :Rs."<<netamt; | |
cout<<"\n\t\t*********************************************"; | |
} | |
int main() | |
{ | |
cout.setf(ios::fixed); | |
cout.setf(ios::showpoint); | |
cout<<setprecision(2); | |
fstream tmp("temp.dat",ios::binary|ios::out); | |
menu: | |
system("cls"); | |
gotoxy(25,2); | |
cout<<"Super Market Billing "; | |
gotoxy(25,3); | |
cout<<"===========================\n\n"; | |
cout<<"\n\t\t1.Bill Report\n\n"; | |
cout<<"\t\t2.Add/Remove/Edit Item\n\n"; | |
cout<<"\t\t3.Show Item Details\n\n"; | |
cout<<"\t\t4.Exit\n\n"; | |
cout<<"\t\tPlease Enter Required Option: "; | |
int ch,ff; | |
float gtotal; | |
cin>>ch; | |
switch(ch) | |
{ | |
case 1: | |
ss: | |
system("cls"); | |
gotoxy(25,2); | |
cout<<"Bill Details"; | |
gotoxy(25,3); | |
cout<<"================\n\n"; | |
cout<<"\n\t\t1.All Items\n\n"; | |
cout<<"\t\t2.Back to Main menu\n\n"; | |
cout<<"\t\tPlease Enter Required Option: "; | |
int cho; | |
cin>>cho; | |
if(cho==1) | |
{ | |
system("cls"); | |
gotoxy(30,3); | |
cout<<" BILL DETAILS "; | |
gotoxy(3,5); | |
cout<<"ITEM NO"; | |
gotoxy(13,5); | |
cout<<"NAME"; | |
gotoxy(23,5); | |
cout<<"PRICE"; | |
gotoxy(33,5); | |
cout<<"QUANTITY"; | |
gotoxy(44,5); | |
cout<<"TAX %"; | |
gotoxy(52,5); | |
cout<<"DISCOUNT %"; | |
gotoxy(64,5); | |
cout<<"NET AMOUNT"; | |
fin.open("itemstore.dat",ios::binary); | |
if(!fin) | |
{ | |
cout<<"\n\nFile Not Found..."; | |
goto menu; | |
} | |
fin.seekg(0); | |
gtotal=0; | |
while(!fin.eof()) | |
{ | |
fin.read((char*)&amt,sizeof(amt)); | |
if(!fin.eof()) | |
{ | |
amt.report(); | |
gtotal+=amt.retnetamt(); | |
ff=0; | |
} | |
if(ff!=0) gtotal=0; | |
} | |
gotoxy(17,k); | |
cout<<"\n\n\n\t\t\tGrand Total="<<gtotal; | |
getch(); | |
fin.close(); | |
} | |
if(cho==2) | |
{ | |
goto menu; | |
} | |
goto ss; | |
case 2: | |
db: | |
system("cls"); | |
gotoxy(25,2); | |
cout<<"Bill Editor"; | |
gotoxy(25,3); | |
cout<<"=================\n\n"; | |
cout<<"\n\t\t1.Add Item Details\n\n"; | |
cout<<"\t\t2.Edit Item Details\n\n"; | |
cout<<"\t\t3.Delete Item Details\n\n"; | |
cout<<"\t\t4.Back to Main Menu "; | |
int apc; | |
cin>>apc; | |
switch(apc) | |
{ | |
case 1: | |
fout.open("itemstore.dat",ios::binary|ios::app); | |
amt.add(); | |
cout<<"\n\t\tItem Added Successfully!"; | |
getch(); | |
goto db; | |
case 2: | |
int ino; | |
flag=0; | |
cout<<"\n\n\tEnter Item Number to be Edited :"; | |
cin>>ino; | |
fin.open("itemstore.dat",ios::binary); | |
fout.open("itemstore.dat",ios::binary|ios::app); | |
if(!fin) | |
{ | |
cout<<"\n\nFile Not Found..."; | |
goto menu; | |
} | |
fin.seekg(0); | |
r=0; | |
while(!fin.eof()) | |
{ | |
fin.read((char*)&amt,sizeof(amt)); | |
if(!fin.eof()) | |
{ | |
int x=amt.item::retno(); | |
if(x==ino) | |
{ | |
flag=1; | |
fout.seekp(r*sizeof(amt)); | |
system("cls"); | |
cout<<"\n\t\tCurrent Details are\n"; | |
amt.show(); | |
cout<<"\n\n\t\tEnter New Details\n"; | |
amt.add(); | |
cout<<"\n\t\tItem Details editted"; | |
} | |
} | |
r++; | |
} | |
if(flag==0) | |
{ | |
cout<<"\n\t\tItem No does not exist...Please Retry!"; | |
getch(); | |
goto db; | |
} | |
fin.close(); | |
getch(); | |
goto db; | |
case 3: | |
flag=0; | |
cout<<"\n\n\tEnter Item Number to be deleted :"; | |
cin>>ino; | |
fin.open("itemstore.dat",ios::binary); | |
if(!fin) | |
{ | |
cout<<"\n\nFile Not Found..."; | |
goto menu; | |
} | |
//fstream tmp("temp.dat",ios::binary|ios::out); | |
fin.seekg(0); | |
while(fin.read((char*)&amt, sizeof(amt))) | |
{ | |
int x=amt.item::retno(); | |
if(x!=ino) | |
tmp.write((char*)&amt,sizeof(amt)); | |
else | |
{ | |
flag=1; | |
} | |
} | |
fin.close(); | |
tmp.close(); | |
fout.open("itemstore.dat",ios::trunc|ios::binary); | |
fout.seekp(0); | |
tmp.open("temp.dat",ios::binary|ios::in); | |
if(!tmp) | |
{ | |
cout<<"Error in File"; | |
goto db; | |
} | |
while(tmp.read((char*)&amt,sizeof(amt))) | |
fout.write((char*)&amt,sizeof(amt)); | |
tmp.close(); | |
fout.close(); | |
if(flag==1) | |
cout<<"\n\t\tItem Succesfully Deleted"; | |
else if (flag==0) | |
cout<<"\n\t\tItem does not Exist! Please Retry"; | |
getch(); | |
goto db; | |
case 4: | |
goto menu; | |
default: | |
cout<<"\n\n\t\tWrong Choice!!! Retry"; | |
getch(); | |
goto db; | |
} | |
case 3: | |
system("cls"); | |
flag=0; | |
int ino; | |
cout<<"\n\n\t\tEnter Item Number :"; | |
cin>>ino; | |
fin.open("itemstore.dat",ios::binary); | |
if(!fin) | |
{ | |
cout<<"\n\nFile Not Found...\nProgram Terminated!"; | |
goto menu; | |
} | |
fin.seekg(0); | |
while(fin.read((char*)&amt,sizeof(amt))) | |
{ | |
int x=amt.item::retno(); | |
if(x==ino) | |
{ | |
amt.pay(); | |
flag=1; | |
break; | |
} | |
} | |
if(flag==0) | |
cout<<"\n\t\tItem does not exist....Please Retry!"; | |
getch(); | |
fin.close(); | |
goto menu; | |
case 4: | |
system("cls"); | |
gotoxy(20,20); | |
cout<<"ARE YOU SURE, YOU WANT TO EXIT (Y/N)?"; | |
char yn; | |
cin>>yn; | |
if((yn=='Y')||(yn=='y')) | |
{ | |
gotoxy(12,20); | |
system("cls"); | |
cout<<"************************** THANKS **************************************"; | |
getch(); | |
exit(0); | |
} | |
else if((yn=='N')||(yn=='n')) | |
goto menu; | |
else | |
{ | |
goto menu; | |
} | |
default: | |
cout<<"\n\n\t\tWrong Choice....Please Retry!"; | |
getch(); | |
goto menu; | |
} | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment