0% found this document useful (0 votes)
62 views30 pages

Sales Management System

The document contains code for a sales management system that defines classes for items and sales. The item class stores item details like code, name, rate, quantity. It has functions to add/update items, validate availability. The sales class stores cash memo details. It has functions to generate memo number, add sales record to file, generate daily report. Functions in both classes interact with their respective data files to add, update and retrieve records.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
62 views30 pages

Sales Management System

The document contains code for a sales management system that defines classes for items and sales. The item class stores item details like code, name, rate, quantity. It has functions to add/update items, validate availability. The sales class stores cash memo details. It has functions to generate memo number, add sales record to file, generate daily report. Functions in both classes interact with their respective data files to add, update and retrieve records.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 30

/* ****************************

* SALES MANAGEMENT SYSTEM *


- BY A KAMESH, ADITHYA NARAYAN M K, ASHISH KUMAR SHAH

****************************

*/

#include<fstream .h>

#include<stdio .h>

#include<conio .h>

#include<string .h>

#include<dos .h>

#include<iomanip .h>

#include<ctype .h>

#include<stdlib .h>

struct date_rec // record to get date

short int day;

short int month;

int year;

}current_date;

struct node // structure to make an index of the record nos.

int rec_no;

node *link;
};

node *start,*ptr;

// DECLAIRING CLASS HERE

// this class defines data related to items

class item_list

private:

int item_code,qty_in_stock; //item code and quantity in stock

char item_name[30];

float item_rate;

public:

item_list() //no argument constructor

item_code=0;

memset(item_name,0,30);

item_rate=0.0;

qty_in_stock=0;

void get_item(); //this function reads the private member of item file

int vallidate(int item_code,int qty);

//this function verifies item code correponding qty in stock

float update_on_sale(int ic1,int ic2,int ic3,int ic4,int ic5,

int iq1,int iq2,int iq3,int iq4,int iq5);


//this function updates the qty whenever item is purchased

void update_on_purchase(item_list temp_item);

void purchase_order();

//to generate purchase order list if stock is less than 20

node* create_list(); //create an index of objects

void items_available(); //display the item available

}item; //object list

// this class defines the data and member function related to

// sales of an item.

class sales_list

private:

int cash_memo_num;

date_rec cash_memo_date;

int item_code1,i_qty1;

int item_code2,i_qty2;

int item_code3,i_qty3;

int item_code4,i_qty4;

int item_code5,i_qty5;

float total_amount;
public:

char ch;

sales_list() // constructor

item_code1=i_qty1=0;

item_code2=i_qty2=0;

item_code3=i_qty3=0;

item_code4=i_qty4=0;

item_code5=i_qty5=0;

total_amount=0.0;

// this function checks for availability of an item and its quantity

int vallidate_item(int item_code,int qty);

// this function generates record number automatically

int get_memo_no(struct date_rec current_date);

// this function collects information to prepare cash memo

void get_chmo_info();

void show_data(); // this function displays data

// this function adds a record to the master file

void update_sales_file(int memo_num,int ic1,int ic2,int ic3,int ic4,int ic5,

int iq1,int iq2,int iq3,int iq4,int iq5,float amount);

void daily_sales_report(struct date_rec current_date);


}cash_memo; // object list

// DECLARING MEMBER FUNCTIONS HERE

// this member function reads the private members of class itemfile

void item_list::get_item()

gotoxy(20,5);

cout<<"ENTER THE ITEM CODE ------------>";

cin>>item_code;

gotoxy(20,6);

cout<<"ENTER THE ITEM NAME ------------>";

gets(item_name);

gotoxy(20,7);

cout<<"ENTER THE ITEM RATE ------------>";

cin>>item_rate;

gotoxy(20,8);

cout<<"ENTER THE QUANTITY ------------->";

cin>>qty_in_stock;

// this member function enters a new item in itemfile, calls get_item();

void item_list::update_on_purchase(item_list temp_item)

{
fstream item_file;

//item.get_item();

item_file.open("itemfile.dat",ios::app | ios::in | ios::out);

// open file in append mode

int found=0;

item_file.seekg(0);

item_file.read((char*)&item,sizeof(item));

int n=item_file.tellg();

while(!item_file.eof())

if(item.item_code==temp_item.item_code)

item.item_rate=temp_item.item_rate;

item.qty_in_stock=item.qty_in_stock+temp_item.qty_in_stock;

item_file.seekg(n-sizeof(item));

item_file.write((char*)&item,sizeof(item));

found=1;

item_file.read((char*)&item,sizeof(item)); // write in the file

n=item_file.tellg();

item_file.close();

if(found==0)

item_file.open("itemfile.dat",ios::app,ios::out);
item_file.seekg(0,ios::end);

item_file.write((char*)&temp_item,sizeof(temp_item));

item_file.close();

// this member function checks for the availability of item and quantity

int item_list::vallidate(int i_code,int i_qty)

item_list temp_item;

fstream item_file;

int ret=0;

item_file.open("itemfile.dat",ios::in);

item_file.seekg(0);

item_file.read((char*)&temp_item,sizeof(temp_item));

while(!item_file.eof())

if(temp_item.item_code==i_code&&temp_item.qty_in_stock>=i_qty)

ret=1;

item_file.read((char*)&temp_item,sizeof(temp_item));

item_file.close();

return ret;

}
float item_list::update_on_sale(int ic1,int ic2,int ic3,int ic4,int ic5,

int iq1,int iq2,int iq3,int iq4,int iq5)

fstream item_file;

float amount=0;

item_file.open("itemfile.dat",ios::in);

item_file.seekg(0);//set file pointer to the begining of the file

item_file.read((char*)&item,sizeof(item));

int n=item_file.tellg();

while(!item_file.eof())

if(item.item_code==ic1)

if(item.vallidate(ic1,iq1))

gotoxy(59,9);

cout<<setiosflags(ios::fixed) //fixed

<<setiosflags(ios::showpoint) //always show point

<<setprecision(2) //two decimal places

<<item.item_rate;

item.qty_in_stock=item.qty_in_stock-iq1;

if(item.qty_in_stock<=0)

item.qty_in_stock=0;

amount=amount+(item.item_rate*iq1);
item_file.seekg(n-sizeof(item));

item_file.write((char*)&item,sizeof(item));

else

gotoxy(59,9);

cout<<"NOT AVAILABLE";

if(item.item_code==ic2)

if(item.vallidate(ic2,iq2))

gotoxy(59,10);

cout<<setiosflags(ios::fixed)

<<setiosflags(ios::showpoint)<<setprecision(2)<<item.item_rate;

item.qty_in_stock=item.qty_in_stock-iq2;

if(item.qty_in_stock<=0)

item.qty_in_stock=0;

amount=amount+(item.item_rate*iq2);

item_file.seekg(n-sizeof(item));

item_file.write((char*)&item,sizeof(item));

else

{
gotoxy(59,10);

cout<<"NOT AVAILABLE";

if(item.item_code==ic3)

if(item.vallidate(ic3,iq3))

gotoxy(59,11);

cout<<setiosflags(ios::fixed)

<<setiosflags(ios::showpoint)<<setprecision(2)<<item.item_rate;

item.qty_in_stock=item.qty_in_stock-iq3;

if(item.qty_in_stock<=0)

item.qty_in_stock=0;

amount=amount+(item.item_rate*iq3);

item_file.seekg(n-sizeof(item));

item_file.write((char*)&item,sizeof(item));

else

gotoxy(59,11);

cout<<"NOT AVAILABLE";

if(item.item_code==ic4)
{

if(item.vallidate(ic4,iq4))

gotoxy(59,12);

cout<<setiosflags(ios::fixed) //fixed

<<setiosflags(ios::showpoint)//always show point

<<setprecision(2)//two decimal places

<<item.item_rate;

item.qty_in_stock=item.qty_in_stock-iq4;

if(item.qty_in_stock<=0)

item.qty_in_stock=0;

amount=amount+(item.item_rate*iq4);

item_file.seekg(n-sizeof(item));

item_file.write((char*)&item,sizeof(item));

else

gotoxy(59,12);

cout<<"NOT AVAILABLE";

if(item.item_code==ic5)

if(item.vallidate(ic5,iq5))

{
gotoxy(59,13);

cout<<setiosflags(ios::fixed)

<<setiosflags(ios::showpoint)

<<setprecision(2)

<<item.item_rate;

item.qty_in_stock=item.qty_in_stock-iq5;

if(item.qty_in_stock<=0)

item.qty_in_stock=0;

amount=amount+(item.item_rate*iq5);

item_file.seekg(n-sizeof(item));

item_file.write((char*)&item,sizeof(item));

else

gotoxy(59,13);

cout<<"NOT AVAILABLE";

item_file.read((char*)&item,sizeof(item));

n=item_file.tellg();

item_file.close();

return amount;

void item_list::purchase_order()
{

fstream item_file;

int found=0;

gotoxy(20,2);

cout<<"PURCHASE ORDER LIST ON:"<<current_date.day<<"-"<<

current_date.month<<"-"<<current_date.year;

gotoxy(20,3);

cout<<"--------------------------------------";

gotoxy(22,5);

cout<<"ITEM CODE";

gotoxy(22,6);

cout<<"--------------------";

gotoxy(40,5);

cout<<"CURRENT STOCK";

gotoxy(40,6);

cout<<"--------------------";

int y=7;

item_file.open("itemfile.date",ios::in);

item_file.seekg(0);

item_file.read((char*)&item,sizeof(item));

while(!item_file.eof())

if(item.qty_in_stock<20)

gotoxy(25,y);
cout<<item.item_code;

gotoxy(43,y);

cout<<item.qty_in_stock;

y++;

found=1;

item_file.read((char*)&item,sizeof(item));

item_file.close();

if(found==0)

gotoxy(15,15);

cout<<"NONE OF THE ITEMS ARE LESS THAN 20 IN STOCK";

gotoxy(20,16);

cout<<"NO PURCHASE ORDER";

node*item_list::create_list()

fstream item_file;

item_file.open("itemfile.dat",ios::in); //open file in input mode

item_file.seekg(0); //set the pointer to the begining of the file

start=ptr=new node; //get new node from operating system

item_file.read((char*)&item,sizeof(item)); //read first record

while(!item_file.eof())
{

ptr->rec_no=item.item_code; //save record no. in the index

ptr->link=new node; //get new node for the record

ptr=ptr->link;

item_file.read((char*)&item,sizeof(item)); //read the next record

ptr->link=NULL; //end of the list

item_file.close();

return start;

void item_list::items_available()

fstream item_file;

clrscr();

gotoxy(20,2);

cout<<"ITEM AVAILABLE";

gotoxy(20,3);

cout<<"--------------";

gotoxy(10,5);

cout<<"ITEM CODE";

gotoxy(10,6);

cout<<"---------";

gotoxy(20,5);

cout<<"STOCK";

gotoxy(20,6);
cout<<"-----";

gotoxy(30,5);

cout<<"ITEM NAME";

gotoxy(30,6);

cout<<"---------";

gotoxy(40,5);

cout<<"ITEM RATE";

gotoxy(40,6);

cout<<"---------";

int y=7;

item_file.open("itemfile.dat",ios::in);

item_file.seekg(0);

item_file.read((char*)&item,sizeof(item));

while(!item_file.eof())

gotoxy(10,y);

cout<<item.item_code;

gotoxy(20,y);

cout<<item.qty_in_stock;

gotoxy(30,y);

cout<<item.item_name;

gotoxy(40,y);

cout<<item.item_rate;

y++;

item_file.read((char*)&item,sizeof(item));
}

item_file.close();

int sales_list::get_memo_no(date_rec current_date)

fstream sales_file;

int num;

sales_file.open("cashmemo.dat",ios::in);

sales_file.seekg(-sizeof(cash_memo),ios::end);

sales_file.read((char*)&cash_memo,sizeof(cash_memo));

if (cash_memo.cash_memo_date.day==current_date.day

&&cash_memo.cash_memo_date.month==current_date.month

&&cash_memo.cash_memo_date.year==current_date.year)

num=cash_memo_num+1;

else

num=1;

sales_file.close();

return num;

//this function enters an new item into a itemfile, calls gets_item()

void sales_list::update_sales_file(int memo_num,int ic1,int ic2,

int ic3,int ic4,int ic5,int iq1,int iq2,int iq3,int iq4,int iq5,float amount)

fstream sales_file;

cash_memo.cash_memo_num=memo_num;
cash_memo.cash_memo_date=current_date;

cash_memo.item_code1=ic1;

cash_memo.item_code2=ic2;

cash_memo.item_code3=ic3;

cash_memo.item_code4=ic4;

cash_memo.item_code5=ic5;

cash_memo.i_qty1=iq1;

cash_memo.i_qty2=iq2;

cash_memo.i_qty3=iq3;

cash_memo.i_qty4=iq4;

cash_memo.i_qty5=iq5;

cash_memo.total_amount=amount;

sales_file.open("cashmemo.dat",ios::out | ios::app);

//open file in attend mode

sales_file.seekg(0,ios::end);

sales_file.write((char*)&cash_memo,sizeof(cash_memo));

//write in the file

sales_file.close(); //close file

void sales_list::daily_sales_report(struct date_rec current_date)

fstream sales_file;

gotoxy(20,2);

cout<<"------------------";
gotoxy(20,3);

cout<<"SALES ON:"<<current_date.day<<"-"<<current_date.month<<" -"

<<current_date.year;

gotoxy(20,4);

cout<<"---------------------------";

gotoxy(20,6);

cout<<"ITEM CODE";

gotoxy(20,7);

cout<<"-----------";

gotoxy(40,6);

cout<<"QUANTITY SOLD";

gotoxy(40,7);

cout<<"---------------";

int y=8;

//sales_file.open("cashmemo.dat",ios::in);

ptr=start;

while(ptr->link!=NULL)

int qty=0;

sales_file.open("cashmemo.dat",ios::in);

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

sales_file.read((char*)&cash_memo,sizeof(cash_memo));

while(!sales_file.eof())

if(current_date.day==cash_memo_date.day&&current_date.month==
cash_memo_date.month&&current_date.year==cash_memo_date.year)

if(ptr->rec_no==cash_memo.item_code1)

qty=qty+cash_memo.i_qty1;

if (ptr->rec_no==cash_memo.item_code2)

qty=qty+cash_memo.i_qty2;

if(ptr->rec_no==cash_memo.item_code3)

qty=qty+cash_memo.i_qty3;

if (ptr->rec_no==cash_memo.item_code4)

qty=qty+cash_memo.i_qty4;

if(ptr->rec_no==cash_memo.item_code5)

qty=qty+cash_memo.i_qty5;

sales_file.read((char*)&cash_memo,sizeof(cash_memo));

sales_file.close();

gotoxy(20,y);

cout<<ptr->rec_no;

gotoxy(40,y);

cout<<qty;

y++;

ptr=ptr->link;

//sales_file.close();

}
// MAIN FUNCTION

void main()

char ch;

int key,main_choice,valid=0;

do

clrscr(); //clear screen

if (valid!=0)

gotoxy(25,11);

cout<<"INVALID DATE";

gotoxy(25,12);

cout<<"PRESS ANY KEY TO TRY AGAIN";

getch();

clrscr();

gotoxy(22,10);

cout<<"ENTER CURRENT DATE(dd/mm/yyyy)";

gotoxy(25,11);

cin>>current_date.day>>ch>>current_date.month>>

ch>>current_date.year;

valid=(current_date.day<0)||(current_date.day>31)
||(current_date.month>12)||(current_date.month<=0)

||(current_date.year<1998); //validate date

}while(valid !=0);

do

clrscr();

gotoxy(20,5);

cout<<"ABC DEPARTMENTAL STORE";

gotoxy(20,7);

cout<<"----------------";

gotoxy(20,7);

cout<<"-----------------";

gotoxy(22,10);

cout<<"SUPERVISOR ..........S";

gotoxy(22,12);

cout<<"CASHMEMO ...........C";

gotoxy(22,14);

cout<<"QUIT ...........Q";

main_choice=toupper(getch());

switch(main_choice)

case 'S':int s_choice;

do

{
clrscr();

gotoxy(28,2);

cout<<"---------------";

gotoxy(28,3);

cout<<"SUPERVISOR MODE";

gotoxy(28,4);

cout<<"----------------";

gotoxy(20,6);

cout<<"UPDATE STOCK ON PURCHASE .....1";

gotoxy(20,8);

cout<<"TODAY'S SALES REPORT .....2";

gotoxy(20,10);

cout<<"LIST OF ITEM AVAILABLE .....3";

gotoxy(20,12);

cout<<"PURCHASE ORDER LIST .....4";

gotoxy(20,14);

cout<<"EXIT SUPERVISOR MODE .....5";

gotoxy(20,16);

cout<<"ENTER YOUR CHOICE ----------------->";

cin>>s_choice;

switch(s_choice)

case 1:int key;

do

{
item_list temp_item;

clrscr();

temp_item.get_item();

temp_item.update_on_purchase(temp_item);

gotoxy(18,24);

cout<<"CONTINUE:C QUIT:Q";

key=toupper(getch());

while(key!='Q');

break;

case 2: clrscr();

item.create_list();

cash_memo.daily_sales_report(current_date);

getch();

break;

case 3: item.items_available();

getch();

break;

case 4: clrscr();

item.purchase_order();

getch();

break;

case 5: break;

}
while(s_choice !=5);

break;

case 'C': do

int memo_num;

memo_num=cash_memo.get_memo_no(current_date);

clrscr();

gotoxy(24,1);

cout<<"------------------------------";

gotoxy(24,2);

cout<<"ABC DEPARTMENTAL STORE";

gotoxy(24,3);

cout<<"------------------------------";

gotoxy(30,5);

cout<<"CASHMEMO";

gotoxy(30,6);

cout<<"--------------------------------";

gotoxy(10,7);

textbackground(RED+BLINK);

cprintf("DATE:");

cout<<current_date.day<<"/"<<current_date.month<<"/"

<<current_date.year;

gotoxy(52,7);

cout<<"NO:"<<memo_num;

gotoxy(10,9);
cout<<"ITEM CODE 1:";

gotoxy(35,9);

cout<<"QTY:";

gotoxy(52,9);

cout<<"RATE";

gotoxy(10,10);

cout<<"ITEM CODE 2:";

gotoxy(35,10);

cout<<"QTY:";

gotoxy(52,10);

cout<<"RATE";

gotoxy(10,11);

cout<<"ITEM CODE 3:";

gotoxy(35,11);

cout<<"QTY:";

gotoxy(52,11);

cout<<"RATE:";

gotoxy(10,12);

cout<<"ITEM CODE 4:";

gotoxy(35,12);

cout<<"QTY:";

gotoxy(52,12);

cout<<"RATE:";

gotoxy(10,13);

cout<<"ITEM CODE 5:";


gotoxy(35,13);

cout<<"QTY:";

gotoxy(52,13);

cout<<"RATE:";

gotoxy(10,15);

cout<<"TOTAL AMOUNT:";

int ic1,ic2,ic3,ic4,ic5;

int iq1,iq2,iq3,iq4,iq5;

ic1=ic2=ic3=ic4=ic5=0;

iq1=iq2=iq3=iq4=iq5=0;

gotoxy(24,9);

cin>>ic1;

gotoxy(41,9);

cin>>iq1;

gotoxy(24,10);

cin>>ic2;

gotoxy(41,10);

cin>>iq2;

gotoxy(24,11);

cin>>ic3;

gotoxy(41,11);

cin>>iq3;

gotoxy(24,12);

cin>>ic4;

gotoxy(41,12);
cin>>iq4;

gotoxy(24,13);

cin>>ic5;

gotoxy(41,13);

cin>>iq5;

float total_amount=0;

total_amount=

total_amount=item.update_on_sale(ic1,ic2,ic3,ic4,ic5,

iq1,iq2,iq3,iq4,iq5);

gotoxy(25,15);

cout<<setiosflags(ios::fixed)

<<setiosflags(ios::showpoint)

<<setprecision(2)<<total_amount;

cash_memo.update_sales_file(memo_num,ic1,ic2,ic3,ic4,

ic5,iq1,iq2,iq3,iq4,iq5,total_amount);

gotoxy(22,24);

cout<<"QUIT CASHMEMO:Q CONTINUE:C";

key=toupper(getch());

while(key!='Q');

break;

case'Q': exit(0);

break;

}
while(main_choice!='Q');

getch();

OUTPUT:
ABC DEPARTMENTAL STORE

-----------------

SUPERVISOR ..........S

CASHMEMO ...........C

QUIT ...........Q

---------------

SUPERVISOR MODE

----------------

UPDATE STOCK ON PURCHASE .....1

TODAY'S SALES REPORT .....2

LIST OF ITEM AVAILABLE .....3

PURCHASE ORDER LIST .....4

EXIT SUPERVISOR MODE .....5

ENTER YOUR CHOICE -----------------> 1

ENTER THE ITEM CODE ------------>567

ENTER THE ITEM NAME ------------>hjkiu

ENTER THE ITEM RATE ------------>670

ENTER THE QUANTITY ------------->45


CONTINUE:C QUIT:Q

ENTER THE ITEM CODE ------------>543

ENTER THE ITEM NAME ------------>bgtfr

ENTER THE ITEM RATE ------------>560

ENTER THE QUANTITY ------------->23

CONTINUE:C QUIT:Q

ITEM AVAILABLE

--------------

ITEM CODE STOCK ITEM NAME ITEM RATE

--------- ----- --------- ---------

123 500 bolt 56

234 200 screw 20

345 50 dghgj 450

543 50 rtyuu 340

567 45 hjkiu 670

543 73 rtyuu 560

789 34 hjjjjjjj 560

PURCHASE ORDER LIST ON:21-11-2019

--------------------------------------

ITEM CODE CURRENT STOCK

--------------------------------------

NONE OF THE ITEMS ARE LESS THAN 20 IN STOCK

NO PURCHASE ORDER

You might also like