This computer project is useful for every one but was developed to solve the Project requirement of class –12 computer science student of CBSE school.
This project fullfil all the requirement of a class 12 computer project mainly : Classes, file handling and data structure.
The project use standard C++ library functions defined in standard header file along with some non standard header file, though fully supported by Turbo C++ but not a part of syllabus.
NOTE: This is a complete CPP project, Just copy the below code in any NOTPAD and save it with CPP extension. Compile it and run.
If you still have any problem using this project, Just drop your message and i will try to solve the problem as soon as possible.
//----------------------------------------------------------------------------
// Header Files Included
//----------------------------------------------------------------------------
#include<stdio.h>
#include<dos.h>
#include<string.h>
#include<fstream.h>
#include<ctype.h>
#include<graphics.h>
#include<conio.h>
//Function prototype declaration
void products_enter();
void members_enter();
void readp();
void readm();
void billing();
void sales();
void modifyp();
void modifym();
void instructions();
//----------------------------------------------------------------------------
// Function for GRAPHICS slide (cover page)
//----------------------------------------------------------------------------
int gmode,gdriver,r;
//----------------------------------------------------------------------------
// Structure for the products' records
//----------------------------------------------------------------------------
struct products_record
{
float rate;
int stock;
int no;
char name[20];
}; //end of structure
//Global variable
products_record ob1,ob2; //declaring objects of the structure
fstream pro1,pro2; //declaring a file stream
//----------------------------------------------------------------------------
// Structure for members' records
//----------------------------------------------------------------------------
struct members_record
{
int no;
char name[20];
char add[50];
long int tel;
long int card;
float amt ;
}; //end of structure
members_record m1,m2; //creating objects
fstream mem1,mem2; //declaring streams;
//----------------------------------------------------------------------------
//structure for store opertaions
//----------------------------------------------------------------------------
struct tables
{
int no;
int qty;
char name[20];
float rate;
float total;
};
tables n1,n2;
int i=0;
float discount=0.0;
//Welcome screen of computerized billing system
void welcome()
{
gdriver=DETECT; //request auto detection
initgraph(&gdriver,&gmode,"c:\\turboc3\\bgi"); //initialising graph
/* read result of initialization */
int errorcode = graphresult();
if (errorcode != grOk) /* an error occurred */
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
return;
}
setbkcolor(7);
setcolor(15);
settextstyle(SANS_SERIF_FONT,HORIZ_DIR,5);
settextstyle(7,HORIZ_DIR,7);
moveto(60,100);
outtext("COMPUTERISED");
moveto(160,210);
outtext("BILLING ");
moveto(160,320);
outtext("SYSTEM");
delay(1000);
setcolor(7);
int i=0;
while(i<=2*getmaxx()-460)
{
line(0,i,i,0);
i++;
delay(15);
}
setcolor(RED);
sound(1450);
delay(20);
sound(600);
for (r=150;r<230;r+=15)
{
circle (315,239,r);
sound(350+2*r);
delay(19);
sound(1250);
}
settextstyle(8,HORIZ_DIR,1);
setcolor(LIGHTGREEN);
sound(500);
delay(5);
moveto(245,160);
outtext("Copyright (C)");
sound(400);
delay(23);
moveto(185,180);
sound(350);
delay(50);
sound(100);
outtext("Reeta Sahoo");
moveto(240,200);
sound(250);
delay(40);
outtext("20006-2007 ");
moveto(210,220);
outtext("All Rights Reserved");
sound(400);
moveto(185,240);
outtext("Code by: Reeta Sahoo");
sound(450);
moveto(185,260);
delay(20);
sound(600);
delay(30);
outtext("Email: gbsahoo@yahoo.com");
nosound();
moveto(10,450);
cin.get();
closegraph(); //closing graphics screen
}
//----------------------------------------------------------------------------
// Function for screen setting
//----------------------------------------------------------------------------
void border()
{
clrscr();
textcolor(WHITE);
for (int i=2;i<80;i++) //drawing horizontal lines
{
gotoxy(i,3);
cprintf("-");
gotoxy(i,23);
cprintf("-");
}
for (i=4;i<23;i++) //drawing vertical lines
{
gotoxy(2,i);
cprintf("|");
gotoxy(79,i);
cprintf("|");
}
}
//----------------------------------------------------------------------------
// Main program
//----------------------------------------------------------------------------
void main()
{
clrscr();
void highvideo(); //setting the intensity of text charaters to high
welcome(); // calling the function for making the cover page
remove("sale.dat");
int n;
char l='y';
do
{
textcolor(LIGHTGREEN);
border(); //making the border of the screen
textcolor(LIGHTGREEN);
gotoxy(30,5);
cprintf("MAIN MENU");
for (int z=29;z<=40;z++)
{
gotoxy(z,6);
cprintf("-");
}
gotoxy(20,7);
cprintf("1:ADD NEW PRODUCTS");
gotoxy(20,8);
cprintf("2:ADD NEW MEMBERS");
gotoxy(20,9);
cprintf("3:VIEW AN EXISTING PRODUCT RECORD ");
gotoxy(20,10);
cprintf("4:VIEW AN EXISTING MEMBER'S RECORD ");
gotoxy(20,11);
cprintf("5:BILLING ");
gotoxy(20,12);
cprintf("6:TODAY'S SALES ");
gotoxy(20,13);
cprintf("7:MODIFY PRODUCT RECORD ");
gotoxy(20,14);
cprintf("8:MODIFY MEMBER'S RECORD ");
gotoxy(20,15);
cprintf("9:INSTRUCTIONS ");
gotoxy(20,16);
cprintf("0:EXIT");
gotoxy(20,19);
cprintf("Enter your choice:");
cin>>n;
switch(n)
{
case 1: products_enter();
break;
case 2: members_enter();
break;
case 3: readp();
break;
case 4: readm();
break;
case 5: billing();
break;
case 6: sales();
break;
case 7: modifyp();
break;
case 8: modifym();
break;
case 9: instructions();
break;
case 0: l='n';
}
} while (l=='y');
clrscr();
}
//----------------------------------------------------------------------------
// Function for getting the products' records
//----------------------------------------------------------------------------
void products_enter()
{
int q=0;
char l='y';
pro1.open("products.dat",ios::in); //opening file in stream
pro1.seekg(0,ios::end); //determining end of file
q=pro1.tellg()/sizeof(products_record); //finding size of file
q+=1255;
pro1.close();
pro1.open("products.dat" ,ios::app);
do
{
textcolor(LIGHTBLUE);
clrscr();
border();
textcolor(LIGHTBLUE);
gotoxy(28,2);
cprintf("ENTERING PRODUCT RECORDS ");
gotoxy(15,6);
cprintf("Name :");
gets(ob1.name);
if (!ob1.name[0]) //to undo entering if name is not entered
return;
gotoxy(15,7);
cprintf("Stock :");
cin>>ob1.stock;
gotoxy(15,8);
cprintf("Rate (Rs.):");
cin>>ob1.rate;
ob1.no = q++;
gotoxy(15,9);
cprintf("Number :");
cout<<ob1.no;
pro1.write((char*)&ob1,sizeof(products_record));
gotoxy(10,15);
cprintf("Do you want to enter more (Y/N) ");
l=getch();
} while (tolower(l)=='y');
pro1.close();
}
//--------------------------------------------------------------
//Function for searching in the file
//--------------------------------------------------------------
products_record products_search(int no)
{
fstream pro1; //declaring stream
pro1.open("products.dat" ,ios::in||ios::nocreate); //opening the file
while(pro1)
{
pro1.read((char*)&ob1,sizeof(products_record));
//reading from file
if (ob1.no==no)
return ob1; //returning the searched record
}
pro1.close();
ob1.no=0;
return ob1;
}
//----------------------------------------------------------------------------
//Function for modifying records
//----------------------------------------------------------------------------
void products_modify(int no)
{
ob2.no=0;
pro1.open("products.dat",ios::in); //opening the file
pro2.open("product1.dat",ios::app); //opening another file
pro1.seekg(0,ios::beg); //locating beggining of file
pro1.read((char*)&ob1,sizeof(products_record));
//reading from file
while (!pro1.eof() ) //testing for end of file
{
if (ob1.no!=no )
pro2.write((char*)&ob1,sizeof(products_record));
//writing in file
else
ob2=ob1;
pro1.read((char*)&ob1,sizeof(products_record));
//reading from file
}
//displaying previous reccords and entering new records
if (ob2.no)
{
gotoxy(13,7);
cprintf("CURRENT RECORDS ARE ");
gotoxy(15,8);
cprintf("NAME :");
puts(ob2.name);
gotoxy(15,9);
cprintf("RATE :(Rs.)");
cout<<ob2.rate;
gotoxy(15,10);
cprintf("STOCK :");
cprintf("%d",ob2.stock);
gotoxy(13,12);
cprintf("ENTER NEW PRODUCT RECORDS");
gotoxy(15,13);
cprintf("NAME :");
ob1.no=ob2.no;
gets(ob1.name);
if (!isalnum(ob1.name[0])) //testing for an entry
strcpy(ob1.name,ob2.name); //retaining previous name when no entry
gotoxy(15,14);
cprintf("RATE :(Rs.)");
cin>>ob1.rate;
if (!ob1.rate)
ob1.rate=ob2.rate;
gotoxy(15,15);
cprintf("STOCK :");
cin>>ob1.stock;
if (!ob1.stock)
ob1.stock=ob2.stock;
pro2.write((char*)&ob1,sizeof(products_record)); //writing in file
}
else
{
gotoxy(20,9);
cprintf("NO ENTRY\a");
}
pro1.close(); //closing file
pro2.close(); //closing file
remove ("products.dat"); //deleting file
rename ("product1.dat","products.dat"); //renaming file
}
//----------------------------------------------------------------------------
// Function to enter members' records
//----------------------------------------------------------------------------
void members_enter()
{
int m;
char l='y';
//determining number of enteries in the file
mem1.open("members.dat",ios::in);
mem1.seekg(0,ios::end);
m=mem1.tellg()/sizeof(members_record);
mem1.close();
m+=10;
clrscr();
mem1.open("members.dat",ios::app); //opening file
do
{
textcolor(LIGHTCYAN);
clrscr();
border();
textcolor(LIGHTCYAN);
gotoxy(28,2);
cprintf("ENTERING MEMBER RECORDS ");
gotoxy(15,6);
cprintf("Name :");
gets(m1.name);
if (!m1.name[0])
return; //undo entering when no name is entered
gotoxy(15,7);
cprintf("Card number :");
cin>>m1.card;
gotoxy(15,8);
cprintf("Address :");
gets(m1.add);
gotoxy(15,9);
cprintf("Tel. :");
cin>>m1.tel;
gotoxy(15,10);
cprintf("Amount Deposited (Rs.):");
cin>>m1.amt;
if (m1.amt<=100)
{
gotoxy(15,11);
cprintf("Amount less\a");
gotoxy(15,12);
cprintf("Try Again");
goto end;
}
m1.no = m++;
gotoxy(15,11);
cprintf("Membership number :");
cout<<m1.no;
mem1.write((char*)&m1,sizeof(members_record)); //writing in file
end:
gotoxy(10,15);
cprintf("Do you want to enter more (Y/N) ");
l=getch();
} while (tolower(l)=='y');
mem1.close();
}
//----------------------------------------------------------------------------
// Function for searching in the file
//----------------------------------------------------------------------------
members_record members_search(int no)
{
fstream mem2; //declaring stream
mem2.open("members.dat",ios::in); //opening file
while (mem2)
{
mem2.read((char*)&m1,sizeof(members_record)); //reading from file
if (m1.no==no)
return m1; //returning the searched record
}
mem2.close();
m1.no=0;
return m1;
}
//----------------------------------------------------------------------------
// Function to modify members' records
//----------------------------------------------------------------------------
void members_modify(int no)
{
m2.no=0;
mem1.open("members.dat",ios::in); //opening a file
mem2.open("member1.dat",ios::app); //opening another file
mem1.seekg(0,ios::beg);
mem1.read((char*)&m1,sizeof(members_record));
while (!mem1.eof()) //testing for end of file
{
if (m1.no!=no)
mem2.write((char*)&m1,sizeof(members_record));
else
m2=m1;
mem1.read((char*)&m1,sizeof(members_record));
}
//displaying current records and entering new records
if (m2.no)
{
gotoxy(13,7);
cprintf("CURRENT RECORDS ARE ");
gotoxy(15,8);
cprintf("NAME :");
puts(m2.name);
gotoxy(15,9);
cprintf("CARD NUMBER :");
cout<<m2.card;
gotoxy(15,10);
cprintf("ADDRESS :");
puts(m2.add);
gotoxy(15,11);
cprintf("TELEPHONE :");
cout<<m2.tel;
gotoxy(15,12);
cprintf("AMOUNT :(Rs.)");
cout<<m2.amt;
gotoxy(13,14);
cprintf("ENTER NEW RECORDS");
gotoxy(15,15);
cprintf("NAME :");
m1.no=m2.no;
gets(m1.name);
if (!m1.name[0])
strcpy(m1.name,m2.name);
gotoxy(15,16);
cprintf("ADDRESS :");
gets(m1.add);
if (!m1.add[0])
strcpy(m1.add,m2.add);
gotoxy(15,17);
cprintf("CARD NUMBER :");
cin>>m1.card;
if (!m1.card)
m1.card=m2.card;
gotoxy(15,18);
cprintf("TELEPHONE :");
cin>>m1.tel;
if (!m1.tel)
m1.tel=m2.tel;
gotoxy(15,19);
cprintf("AMOUNT ADDED :(Rs.)");
cin>>m1.amt;
m1.amt+=m2.amt;
mem2.write((char*)&m1,sizeof(members_record));
}
else
{
gotoxy(20,10);
cprintf("NO ENTRY\a");
}
mem1.close(); //closing file
mem2.close(); //closing file
remove ("members.dat"); //removing file
rename ("member1.dat","members.dat"); //renaming file
}
//----------------------------------------------------------------------------
// Function for reading product records
//----------------------------------------------------------------------------
void readp()
{
char l='y';
do
{
textcolor(LIGHTBLUE);
clrscr();
border();
textcolor(LIGHTBLUE);
gotoxy(28,2);
cprintf("VIEWING PRODUCT RECORDS ");
gotoxy(15,6);
cprintf("Enter product number:");
int no;
cin>>no;
ob1=products_search(no); //calling for search in the file
// displaying records
if (ob1.no)
{
gotoxy(18,9);
cprintf("The record is");
gotoxy(20,10);
cprintf(" Number :");
cout<<ob1.no;
gotoxy(20,11);
cprintf(" Stock :");
cout<<ob1.stock;
gotoxy(20,12);
cprintf(" Name : ");
puts(ob1.name);
gotoxy(20,13);
cprintf(" Rate :(Rs.)");
cout<<ob1.rate;
}
else
{
gotoxy(20,10);
cprintf("NO ENTRY \a");
}
gotoxy(15,16);
cprintf("Any more records desired (Y/N)");
l=getch();
} while(tolower(l)=='y');
}
//----------------------------------------------------------------------------
// Function to pruduce screen for 'modify product records'
//----------------------------------------------------------------------------
void modifyp()
{
char l='y';
do
{
textcolor(LIGHTBLUE);
clrscr();
border();
textcolor(LIGHTBLUE);
gotoxy(25,2);
cprintf("MODIFYING A PRODUCT RECORD");
gotoxy(15,5);
cprintf("Enter the product number:");
int no;
cin>>no;
products_modify(no); //calling for modifications
gotoxy(13,20);
cprintf("Any more modifications desired(Y/N)");
l=getch();
} while (tolower(l)=='y');
}
//----------------------------------------------------------------------------
// Function to read members' records
//----------------------------------------------------------------------------
void readm()
{
char l='y';
do
{
textcolor(LIGHTCYAN);
clrscr();
border();
textcolor(LIGHTCYAN);
gotoxy(25,2);
cprintf("VIEWING A MEMBER'S RECORD ");
gotoxy(15,6);
cprintf("Enter membership number:");
int no;
cin>>no;
m1=members_search(no); //calling for search
//displaying records
if (m1.no)
{
gotoxy(18,9);
cprintf("The record is");
gotoxy(20,10);
cprintf("Number :");
cout<<m1.no;
gotoxy(20,11);
cprintf("Name :");
puts(m1.name);
gotoxy(20,12);
cprintf("Card number :");
cout<<m1.card;
gotoxy(20,13);
cprintf("Address :");
puts(m1.add);
gotoxy(20,14);
cprintf("Telephone :");
cout<<m1.tel;
gotoxy(20,15);
cout<<"Amount :(Rs.)"<<m1.amt;
}
else
{
gotoxy(17,12);
cprintf("NO ENTRY\a ");
}
gotoxy(15,18);
cprintf("Any more records desired (Y/N)");
l=getch();
} while(tolower(l)=='y');
}
//----------------------------------------------------------------------------
// Function to display screen for 'modify members' records
//----------------------------------------------------------------------------
void modifym()
{
char l='y';
do
{
textcolor(LIGHTCYAN);
clrscr();
border();
gotoxy(25,2);
cprintf("MODIFYING MEMBER'S RECORDS ");
gotoxy(15,5);
cprintf("Enter the membership number:");
int no;
cin>>no;
members_modify(no); //calling for modifications
gotoxy(13,22);
cprintf("Any more modifications desired(Y/N)");
l=getch();
} while(tolower(l)=='y');
}
//----------------------------------------------------------------------------
// Function for creating 'sale.dat'
//----------------------------------------------------------------------------
// Function for billing
//----------------------------------------------------------------------------
void billing()
{
textcolor(LIGHTRED);
clrscr();
border();
textcolor(LIGHTRED);
fstream b1; //declaring stream
b1.open("sale.dat",ios::app); //opening file
gotoxy(30,2);
cprintf("BILLING ");
gotoxy(15,7);
cprintf("Are you a member(Y/N):");
float less=1.0;
char m;
int no;
long card;
m=getche();
if (tolower(m)=='y')
{
gotoxy(18,9);
cprintf("Enter membership number:");
cin>>no;
gotoxy(18,10);
cprintf("Enter card number:");
cin>>card;
m1=members_search(no);
if (card!=m1.card) //checking for authenticity of the details
{
gotoxy(20,12);
cprintf("Incorrect \a");
getch();
return; //undoing billing process
}
else
if (m1.amt>100)
{
less=0.95;
m1.amt-=5;
}
else
{
gotoxy(20,12);
cprintf("Amount Less\a");
gotoxy(15,15);
cprintf("Continue with normal billing(Y/N)");
m=getch();
if (tolower(m)=='n')
return;
}
//decreasing the members' amount if the details are correct
fstream t3,t4;
t3.open("members.dat",ios::in);
t4.open("member1.dat",ios::app);
t3.seekg(0,ios::beg);
t3.read((char*)&m2,sizeof(members_record));
while (!t3.eof())
{
if (m2.no!=m1.no)
t4.write((char*)&m2,sizeof(members_record));
else
t4.write((char*)&m1,sizeof(members_record));
t3.read((char*)&m2,sizeof(members_record));
}
t3.close();
t4.close();
remove("members.dat");
rename("member1.dat","members.dat");
}
clrscr();
float total=0.0;
textcolor(LIGHTGREEN);
gotoxy(60,1);
cprintf("p.no.= 0:Exit Billing");
textcolor(LIGHTRED);
gotoxy(30,1);
cprintf("BILLING");
i=0;
void table1(); //function declaration for making table
beg: //giving line a name for further reference
table1(); //calling function for making table
gotoxy(4,6+i);
cin>>n1.no;
ob1=products_search(n1.no); //searching for product record
gotoxy(56,6+i);
float output1(products_record); //declaring a nested function
if (n1.no>0)
{
if(ob1.no>0)
{
cin>>n1.qty;
strcpy(n1.name,ob1.name);
n1.rate=ob1.rate;
n1.total=output1(ob1);
total+=n1.total;
fstream t3,t4;
t3.open("sale.dat",ios::in);
t4.open("sale1.dat",ios::app);
t3.seekg(0,ios::beg);
int qty=n1.qty;
n1.qty=n1.total/n1.rate;
char test='y';
t3.read((char*)&n2,sizeof(tables));
while (!t3.eof())
{
if (n1.no==n2.no)
{
n2.qty+=n1.qty;
n2.total+=n1.total;
test='n';
}
t4.write((char*)&n2,sizeof(tables));
t3.read((char*)&n2,sizeof(tables));
}
if (test=='y')
{
t4.seekg(0,ios::end);
t4.write((char*)&n1,sizeof(tables));
}
t3.close();
t4.close();
remove("sale.dat");
rename("sale1.dat","sale.dat");
n1.qty=qty;
if (n1.total)
{
//reducing the products' stock
fstream temp3,temp4;
temp3.open("products.dat",ios::in);
temp4.open("product1.dat",ios::app);
temp3.seekg(0,ios::beg);
temp3.read((char*)&ob1,sizeof(products_record));
while (!temp3.eof())
{
if (ob1.no==n1.no)
ob1.stock-=n1.qty;
temp4.write((char*)&ob1,sizeof(products_record));
temp3.read((char*)&ob1,sizeof(products_record));
}
temp3.close();
temp4.close();
remove("products.dat");
rename("product1.dat","products.dat");
}
i++;
goto beg;
}
else
if (ob1.no==0)
{
gotoxy(10,6+i);
cprintf("No entry\a");
i++;
goto beg;
}
}
else
if (n1.no==0)
{
textcolor(WHITE);
for (int j=0;j<81;j++) //ending table
{
gotoxy(j,6+i);
cprintf("-");
}
}
textcolor(LIGHTRED);
gotoxy(5,9+i);
cprintf("Number of items = ");
cout<<i;
gotoxy(5,10+i);
cprintf("Grand total = Rs.");
cout<<total;
//giving discount
if (less!=1)
{
discount+=0.05*total;
gotoxy(5,12+i);
cprintf("Discount = Rs.");
cout<<0.05*total;
gotoxy(5,13+i);
cprintf("Net total = Rs.");
cout<<less*total;
}
b1.close();
getch();
}
//----------------------------------------------------------------------------
// nested function of 'billing'
//----------------------------------------------------------------------------
float output1(products_record ob1)
{
if (ob1.no==0) //if no entry then return to billing
return 0;
float stotal;
stotal=ob1.rate*n1.qty; //determining the cost of the particular item
//putting the values on the screen
gotoxy(4,6+i);
cout<<ob1.no;
gotoxy(10,6+i);
puts(ob1.name);
gotoxy(38,6+i);
cout<<ob1.rate;
gotoxy(43,6+i);
cout<<" ";
gotoxy(56,6+i);
if (n1.qty>ob1.stock) //checking for the item being in stock
{
gotoxy(50,6+i);
cprintf("Out of stock\a");
return 0;
}
cout<<n1.qty;
gotoxy(68,6+i);
cout<<stotal;
gotoxy(74,6+i);
cout<<" ";
return stotal;
}
//----------------------------------------------------------------------------
// Function for making table
//----------------------------------------------------------------------------
void table1()
{
textcolor(WHITE);
//drawing vertical lines
for (int a=1;a<=80;a++)
{
gotoxy(a,2);
cprintf("_");
gotoxy(a,5);
cprintf("-");
}
//drawing horizontal lines(always)
for (a=3;a<=5;a++)
{
gotoxy(1,a);
cprintf("|");
gotoxy(9,a);
cprintf("|");
gotoxy(31,a);
cprintf("|");
gotoxy(49,a);
cprintf("|");
gotoxy(64,a);
cprintf("|");
gotoxy(80,a);
cprintf("|");
}
/* drawing horizontal lines
(depending upon the s.no. of item in purchase list)*/
gotoxy(1,6+i);
cprintf("|");
gotoxy(9,6+i);
cprintf("|");
gotoxy(31,6+i);
cprintf("|");
gotoxy(49,6+i);
cprintf("|");
gotoxy(64,6+i);
cprintf("|");
gotoxy(80,6+i);
cprintf("|");
textcolor(LIGHTRED);
//giving column titles
gotoxy(2,3);
cprintf("Product");
gotoxy(14,3);
cprintf("Product name ");
gotoxy(35,3);
cprintf("Rate (Rs.)");
gotoxy(53,3);
cprintf("Quantity");
gotoxy(67,3);
cprintf("Total (Rs.)");
gotoxy(2,4);
cprintf("number");
gotoxy(53,4);
cprintf("(Kgs/pcs)");
}
//----------------------------------------------------------------------------
// Function for viewing the day's sale
//----------------------------------------------------------------------------
void sales()
{
textcolor(LIGHTRED);
clrscr();
textcolor(LIGHTRED);
gotoxy(28,1);
cprintf("TODAY'S SALES");
float sales=0.0;
fstream sal1;
sal1.open("sale.dat",ios::in);
i=0;
sal1.read((char*)&n1,sizeof(n1));
while(!sal1.eof() && n2.no!=n1.no)
{
table1();
gotoxy(4,6+i);
cout<<n1.no;
gotoxy(10,6+i);
puts(n1.name);
gotoxy(38,6+i);
cout<<n1.rate;
gotoxy(43,6+i);
cout<<" ";
gotoxy(56,6+i);
cout<<n1.qty;
gotoxy(68,6+i);
cout<<n1.total;
sales+=n1.total;
gotoxy(74,6+i);
cout<<" ";
i++;
n2.no=n1.no;
sal1.read((char*)&n1,sizeof(n1));
}
textcolor(WHITE);
gotoxy(1,6+i);
for(int n=1;n<=80;n++)
cprintf("-");
textcolor(LIGHTRED);
gotoxy(5,8+i);
cprintf("Grand total = Rs.");
cout<<sales;
gotoxy(5,10+i);
cprintf("Discount = Rs.");
cout<<discount;
gotoxy(5,11+i);
cprintf("Net total = Rs.");
cout<<(sales-discount);
getch();
}
//----------------------------------------------------------------------------
// Instructions
//----------------------------------------------------------------------------
// Function for help on entering records
void enter()
{
border();
gotoxy(5,1);
cprintf("Entering Records");
gotoxy(5,7);
textcolor(11);
cprintf("For Products");
textcolor(13);
gotoxy(5,10);
cprintf("This part of the program helps the store management to ");
cprintf("add more");
gotoxy(5,9);
cprintf("products to their store. The existing product records are");
cprintf(" not ");
gotoxy(5,10);
cprintf("affected by this option. The new record(s) are appended at");
cprintf(" the end");
gotoxy(5,11);
cprintf("of the file containing such records namely ");
textcolor(12);
cprintf("'products.dat'");
textcolor(13);
cprintf(". This");
gotoxy(5,12);
cprintf("option automatically assigns a product number to the product");
cprintf(" which");
gotoxy(5,13);
cprintf("must be remembered for any product reference.");
gotoxy(5,15);
textcolor(11);
cprintf("For members");
textcolor(13);
gotoxy(5,17);
cprintf("This option works just like its counterpart for products. It");
cprintf(" stores");
gotoxy(5,18);
cprintf("records in the file ");
textcolor(12);
cprintf("'members.dat'");
textcolor(13);
cprintf(" and assigns a membership number ");
gotoxy(5,19);
cprintf("for every new entry. For further details see the help section");
cprintf(" on ");
textcolor(12);
gotoxy(5,20);
cprintf("'Membership Rules'.");
textcolor(13);
getch();
}
//Function for help on viewing records
void view()
{
border();
gotoxy(30,5);
cprintf("Viewing Records");
gotoxy(10,7);
cprintf("This option enables the user to view the latest records of ");
gotoxy(10,8);
cprintf("either products or members. It helps in operations like ");
gotoxy(10,9);
cprintf("stock checking and member verification. The viewing is");
gotoxy(10,10);
cprintf("only possible with the product/membership numbers.");
getch();
}
//Function for help on modifying records
void modify()
{
border();
gotoxy(30,5);
cprintf("Modifying Records");
gotoxy(10,7);
cprintf("This option helps in altering the records in the files.");
gotoxy(10,8);
cprintf("It can be used for deleting the entries as well. In ");
gotoxy(10,9);
cprintf("case of products either the record could be changed to");
gotoxy(10,10);
cprintf("some new entry or its stock could be made zero. For members");
gotoxy(10,11);
cprintf("deletion is only possible by overwriting with a new entry.");
getch();
}
// Function for help on billing process
void procedure()
{
border();
gotoxy(30,5);
cprintf("Billing Procedure");
gotoxy(10,7);
cprintf("The actual billing procedure consists of two sections.");
gotoxy(10,8);
cprintf("One checks if the buyer is a member or not and accordingly");
gotoxy(10,9);
cprintf("performs the necessary tasks. The other section consists of ");
gotoxy(10,10);
cprintf("billing. The user is asked to enter the product number and the ");
gotoxy(10,11);
cprintf("quantity bought. The computer calculates the total itself and ");
gotoxy(10,12);
cprintf("also the discount if necessary. In order to exit the procedure");
gotoxy(10,13);
cprintf("and view the final total, the user should enter the product number");
gotoxy(10,14);
cprintf("as '0'.");
getch();
}
// Function for help on Membership details
void rules()
{
border();
gotoxy(30,5);
cprintf("Membership Rules");
gotoxy(5,7);
cprintf("The program lets its subscribers (stores) maintain a");
cprintf(" member's list");
gotoxy(5,8);
cprintf("in order to help them in increasing their sales for a");
cprintf(" marginal cut");
gotoxy(5,9);
cprintf("in their profits. The program sets minimum membership ");
cprintf("amount as Rs.100");
gotoxy(5,10);
cprintf("which must be paid at the time of registration. The member");
cprintf(" will be ");
gotoxy(5,11);
cprintf("given a membership number and a membership card (to be");
cprintf("collected ");
gotoxy(5,12);
cprintf("after a week by reference to the membership number and ");
cprintf("other");
gotoxy(5,13);
cprintf("particulars). In case a member loses the membership card ");
cprintf(", he/she ");
gotoxy(5,14);
cprintf("must register a complaint with the store by submitting a");
cprintf(" written");
gotoxy(5,15);
cprintf("application with all the particulars. He/She can collect ");
cprintf("his/her ");
gotoxy(5,16);
cprintf("remaining money by showing proofs of the particulars.");
gotoxy(5,17);
cprintf("The membership allows a person to avail a special discount");
cprintf(" of 5%");
gotoxy(5,18);
cprintf("over every purchase. Rs.5 will be subtracted from the ");
cprintf("member's account");
gotoxy(5,19);
cprintf("over every purchase. The account will be rendered ");
cprintf("inaccessible if the ");
gotoxy(5,20);
cprintf("amount will be less than Rs.100 and the member would be");
cprintf(" expected to ");
gotoxy(5,21);
cprintf("deposit more money for continuing the membership. The store");
cprintf(" will also");
gotoxy(5,22);
cprintf("give away attractive gifts to a lucky member once every year.");
getch();
}
// Functiom for help on today's sales
void today()
{
border();
gotoxy(30,5);
cprintf("Today's sales");
gotoxy(10,7);
cprintf("This option shows the total sales in terms of both quantity");
gotoxy(10,8);
cprintf("and amount per item. This is stored in a file namely ");
gotoxy(10,9);
cprintf("'sale.dat' which is modified after every buying during the");
gotoxy(10,10);
cprintf("billing process.");
getch();
}
//Function for displaying help index
void instructions()
{
clrscr();
int n;
char l='y';
do
{
textcolor(13);
border();
textcolor(13);
gotoxy(30,5);
cprintf("HELP INDEX");
for (int z=29;z<=39;z++)
{
gotoxy(z,6);
cprintf("-");
}
gotoxy(20,7);
cprintf("1:ADD RECORDS");
gotoxy(20,8);
cprintf("2:VIEWING RECORDS ");
gotoxy(20,9);
cprintf("3:MODIFYING RECORDS");
gotoxy(20,10);
cprintf("4:BILLING PROCEDURE");
gotoxy(20,11);
cprintf("5:TODAY'S SALES ");
gotoxy(20,12);
cprintf("6:MEMBERSHIP DETAILS");
gotoxy(20,13);
cprintf("0:BACK TO MAIN MENU");
gotoxy(21,16);
cprintf("Enter your choice:");
cin>>n;
switch(n)
{
case 1: enter();
break;
case 2: view();
break;
case 3: modify();
break;
case 4: procedure();
break;
case 5: today();
break;
case 6: rules();
break;
case 0: l='n';
}
} while (l=='y');
}
//---------------------------------------------------------------------------
// Function for ending screen
//----------------------------------------------------------------------------
void end()
{
gdriver=DETECT; //request auto detection
initgraph(&gdriver,&gmode,"..\bgi"); //initialising graph
/* read result of initialization */
int errorcode = graphresult();
if (errorcode != grOk) /* an error occurred */
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
return;
}
setcolor(BROWN);
setbkcolor(WHITE);
rectangle(10,10,getmaxx()-10,getmaxy()-10);
rectangle(15,15,getmaxx()-15,getmaxy()-15);
settextstyle(7,0,8);
moveto(90,75);
outtext("THANK YOU");
closegraph();
}