0% found this document useful (0 votes)
624 views52 pages

PERFUME STORE MANAGEMENT New SYSTEM

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
624 views52 pages

PERFUME STORE MANAGEMENT New SYSTEM

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 52

PERFUME STORE MANAGEMENT SYSTEM

A Project Report submitted to


Bishop Heber College (Autonomous), Tiruchirappalli
affiliated to Bharathidasan University, Tiruchirappalli – 620024
in partial fulfillment of the requirements for the award of the degree of

Bachelor of Vocation in Information Technology

By
V. DARANEEDARAN
(Register No: 225915111)

Under the guidance of


Ms. G. VANITHA, M.C.A, B.Ed., M.Phil., NET.,

Department of Information Technology


Bishop Heber College (Autonomous)
(Nationally Accredited with an ‘A++’ Grade by NAAC with a CGPA of 3.69 out of 4)
(Recognized by UGC as “College of Excellence”)
Tiruchirappalli – 620 017

APRIL 2024
Department of Information Technology
Bishop Heber College (Autonomous)
Tiruchirappalli – 620 017, Tamil Nadu,
India
Phone No. : 0431–277 0136

CERTIFICATE

This Viva-Voce examination for candidate V.Daraneedaran (Reg

No:225915111) was held on______________________

Signature of the HOD

Examiners:

1.

2.
Ms. G. VANITHA, M.C.A, B.Ed., M.Phil., NET.,
Associate Professor,
Department of Information Technology,
Bishop Heber College (Autonomous),
Tiruchirappalli – 620017.

Date: 6758458

CERTIFICATE

This is to certify that the project work entitled “PERFUME STORE


MANAGEMENT SYSTEM” is a bonafide work done under my supervision V.
DARANEEDARAN (Reg. No. 225915111) and submitted to Bishop Heber College
(Autonomous), Tiruchirappalli – 620 017 in partial fulfillment of the requirements for
the award of the degree of Bachelor of Vocation in Information Technology during the
odd semester of the academic year (2024 – 2025).

Signature of the Guide


DECLARATION

I hereby declare that the work presented in this project work report is the
work done by me under the guidance of Ms. G. VANITHA, M.C.A, B.Ed., M.Phil.,
NET. Associate Professor of Information Technology Bishop Heber College
(Autonomous), Tiruchirapalli-620 017and has not been included in any other
project work submitted for any other degree.

Name of the Candidate : V. DARANEEDARAN

Register Number :225915111

Semester : FOURTH

Academic year :2024-2025

Course Code : U21ITPJ4

Signature of the Candidate


ACKNOWLEDGEMENTS

First of all, I would thank ALMIGHTY GOD for giving abundant grace. Good
health and knowledge to do this Project.

I express my sincere gratitude to Dr. J. PRINCY MERLIN, M.Sc., SET.,


B.Ed., MPhil., Ph.D., PGDCA., Principal of Bishop Heber College (Autonomous),
Tiruchirappalli for providing me the opportunity to pursue my studies in this esteemed
institution.

I am highly indebted to thanks Dr. J. JOHN RAYBIN JOSE, M.Sc., M.Phil.


(Phys), M.Phil. (CS), MCA., PGDCSA., Ph.D., SET., Associate Professor and Head,
Department of Information Technology Bishop Heber College (Autonomous), Trichy
for his support during this project work

I am highly indebted to Ms. G. VANITHA, M.C.A, B.Ed., M.Phil., NET.,


Associate Professor of Information Technology, Bishop Heber College (Autonomous),
Tiruchirappalli for guiding me to successfully complete the project.

I record my gratitude to all the staff members of the Department of Information


Technology for their contributions to my academic endeavors and developments

I record my deep sense of gratitude to my beloved parents and my friends for


their encouragement and moral support extended during the period of my project.

DARANEEDARAN. V
ABSTRACT

The Perfume Store Management System has been meticulously crafted using
Java within the Android Studio environment. It offers a comprehensive set of modules
tailored to streamline shop operations. The system includes a secure login feature for
authorized access, enabling users to manage their details efficiently. Additionally, an
administrators can effortlessly add new products to the inventory, ensuring a dynamic
selection for customers. Moreover, the system features a user-friendly shopping page that
allows customers to browse and purchase accessories online, enhancing convenience and
accessibility The program's frontend is developed using Android Studio, providing an
intuitive user interface for seamless navigation and interaction. The backend is powered
by Firebase, offering robust cloud-based services for data storage, authentication, and
real-time updates, ensuring scalability, reliability, and security for our application. The
Perfume Store Management System automates product details, categories, and customer
orders. It minimizes manual efforts in inventory management and order processing,
ensuring streamlined operations. This system efficiently tracks customer details and
manages transactions, enhancing overall efficiency.
CONTENT

S. No. TITLE PAGE. No

1 INTRODUCTION 1

2 SYSTEM STUDY 2

2.1 Project Description 2

2.1.1 Existing system 2

2.1.2 Proposed system 3

2.1.3 Module Description 3

2.2 Requirement Analysis 6

2.2.1 Hardware Requirements 6

2.2.2 Software Requirements 6

3 SYSTEM DESIGN 8

3.1 Logical design 8

3.2 Database Design 9

4 SYSTEM DEVELOPMENT 11

4.1 Program Code 11

5 SYSTEM TESTING 34

5.1 Project Testing 34

5.2 Unit Testing 34

5.3 Integration Testing 35

5.4 Validation Testing 36

6 SYSTEM IMPLEMENTATION 37

6.1 Software Demonstration 37

7 CONCLUSION 44

BIBLIOGRAPHY 45
1. INTRODUCTION

The "Perfume Store Management System" revolutionizes fragrance shopping


convenience by offering customers the ability to order perfumes through a dedicated
mobile application. This innovative system catalyzes business growth, creating job
opportunities for delivery personnel, establishing new market players, and boosting
sales for store owners. Customers register by providing their residential details,
including landmarks, and create login credentials.

A perfume store is a specialized retail destination offering a wide array of


fragrances essential for personal grooming and enhancing individual style. Within these
establishments, customers can find an extensive selection of perfumes ranging from
designer brands to niche scents. Additionally, perfume stores often carry
complementary products such as lotions, body washes, and gift sets.

These stores may provide fragrance consultations, sample testing, and gift-
wrapping services, catering to individuals seeking personalized scent experiences. With
knowledgeable staff and a curated selection of fragrances, perfume stores strive to meet
the diverse preferences and tastes of their clientele while ensuring an enjoyable
shopping experience.

1
2. SYSTEM STUDY

System study, also known as systems analysis, is a crucial process in the field
of information technology and management. It involves the detailed examination and
evaluation of an existing system or the planning and design of a new system to address
specific business or organizational needs. Here are some key aspects of system study.

2.1 PROJECT DESCRIPTION


The Perfume Store Management System revolutionizes fragrance retail,
boasting minimal device specifications for easy download and usage. Unlike traditional
setups, our system seamlessly integrates customer, vendor, and delivery functionalities
into a single, user-friendly platform, enhancing efficiency and accessibility. Ongoing
enhancements are planned to streamline operations and elevate the overall user
experience.

2.1.1 Existing System


In the current system of Perfume Store Management, data integration and
process management are handled manually, necessitating the use of multiple systems
to manage customer information effectively. This manual approach can lead to
challenges in searching for and tracking information efficiently. Additionally, manual
data maintenance and integration processes pose security risks, as they are susceptible
to errors and vulnerabilities.

DISADVANTAGES

v It is not portable, where the user can’t use anytime anywhere.


v User interface is not convenient for the users to handle several data at a time.
v Data are maintained using files system and hence the conveniences experienced
in a Database System is lacking.
v Lack of flexibility in report generation

2
2.1.2 Proposed System
Our Perfume Store Management System optimizes inventory management,
customer data maintenance, and order tracking, significantly reducing time
consumption and ensuring operational efficiency. Unlike manual methods that are
prone to dispersed and duplicated data, our system prioritizes clear and efficient
information management, thereby streamlining operations for perfume stores. By
enhancing productivity and user experience, it revolutionizes the management of
perfume retail establishments.

ADVANTAGES:

v It satisfies the user's requirement


v Be easy to understand by the user and operator
v Be easy to operate
v Be expandable

2.1.3 Module Description

1. User Login
Our user login page is meticulously crafted to provide a seamless and secure
entry point for accessing personalized accounts. It features a clean and intuitive design,
minimizing clutter and ensuring ease of navigation. Users are prompted to input their
registered email addresses and passwords, with optional assistance available through a
"Forgot Password" link for password recovery.

2.Admin Login
The Admin Login grants authorized access to our Perfume Store Management
System's administrative dashboard, enabling administrators to oversee crucial
operations such as inventory management and user account administration securely.
With exclusive privileges, administrators can ensure the efficient functioning of our
perfume store while maintaining the integrity and security of our system.

3
3.Category
Our Perfume Store Management System features a streamlined Category
Module, dividing fragrances into distinct categories for men and women. Customers
can easily navigate through a curated selection of scents tailored to their preferences.
From masculine, woody aromas to feminine, floral bouquets, our Category Module
ensures a personalized shopping experience for every individual.

4.Product Gallery
Our Perfume Store Management System includes gender-specific Product
Galleries, offering a wide range of fragrances for men and women. The men's gallery
features robust, woody scents, while the women's gallery showcases delicate florals and
sensual musks. With detailed descriptions and captivating visuals, customers can
effortlessly discover their perfect scent in a personalized shopping experience.

5.Cart
The Cart Module in our Perfume Store Management System simplifies the
shopping experience, allowing customers to effortlessly add desired fragrances. With
intuitive navigation and editing options, users can review and finalize their selections
with ease. Administrators benefit from streamlined order management tools, ensuring
efficient processing and fulfillment. From browsing to checkout, our Cart Module
enhances customer satisfaction and operational efficiency.

5.View Product Details


The View Product Details module in our Perfume Store Management System
offers administrators a comprehensive view of orders, including product ID, name,
quantity, customer name, phone number, and brand. This facilitates efficient order
tracking and management, ensuring accurate and timely fulfillment. With easy access
to essential details, administrators can address customer inquiries promptly, enhancing
satisfaction. Overall, this feature streamlines operations and supports seamless
functioning of the perfume store.

4
6.Add Customer Details
To add customer details, navigate to the designated section within the Perfume
Store Management System. Enter the required information, including name, contact
details, and any additional relevant data. Validate the input to ensure accuracy and
completeness. Save the details securely to the database for future reference and
streamline customer interactions. Finally, confirm the addition to complete the process
and maintain organized customer records.

7.View Customer Details


To view customer details, access the dedicated section in the Perfume Store
Management System. Browse through the list of customers to locate the desired profile.
Retrieve comprehensive information such as name, contact details, and purchase
history. Utilize search and filter options for efficient navigation. Ensure customer
privacy and data security while accessing and utilizing their details.

8.Payment
Our payment page is the final step in securing your fragrance selections with
ease and confidence. Once you've chosen your desired perfumes and provided
necessary details, you'll be directed to our secure payment gateway. Here, you can
select your preferred payment method and securely enter your billing information. With
industry-standard encryption protocols in place, you can trust that your financial details
are safeguarded.

5
2.2 REQUIREMENT SPECIFICATION
Requirements analysis involves frequent communication with system users to
determine specific feature expectations, resolution of conflict or ambiguity in
requirements as demanded by the various users or groups of users, avoidance of feature
creep, and documentation of all aspects of the project development process from start
to finish. Energy should be directed towards ensuring that the final system or product
conforms to client needs rather than attempting to user expectations to fit the
requirements. Requirements analysis is a team effort that demands a combination of
hardware, software, and human factors engineering expertise as well as skills in
dealing with people.

2.2.1 HARDWARE REQUIREMENT


The hardware specification of the laptop computer system available for
developing the project is given below

Processor : Intel Core I3


Hard disk : 500GB
RAM : 8GB
Keyboard : Standard QWERTY Keyboard
Mouse : Standard mouse with 2 buttons

2.2.2. SOFTWARE REQUIREMENTS


A software requirement specification (SRS) is a complete description of the
behavior of the system to be developed. It includes a set of use cases that describe all
the interactions the users will have with the software.

Front End : Java


Back End : Firebase
IDE : Android Studio

6
WINDOWS
An operating system is software that communicates with the hardware and
allows others to run. It comprises the system software and other utilities. The Operating
system used as the platform to develop this project is Windows 11. It is a multi-user
operating system.

ANDROID STUDIO
Android Studio is the official Integrated Development Environment (IDE) for
Android application development. Android Studio provides more features that enhance
our productivity while building Android apps. Android Studio was announced on 16th
May 2013 at the Google I/O conference as an official IDE for Android app
development. It started its early access preview from version 0.1 in May 2013. The first
stable built version was released in December 2014, starting from version 1.0. Since
7th May 2019, Kotlin is Google's preferred language for Android application
development. Besides this, other programming languages are supported by Android
Studio.

FIREBASE
Firebase is a Backend-as-a-Service (Baas). It provides developers with a variety
of tools and services to help them develop quality apps, grow their user base, and earn
profit. It is built on Google’s infrastructure. Firebase is categorized as a NoSQL
database program, which stores data in JSON-like documents.

7
3. SYSTEM DESIGN

Systems design defines the architecture, components, modules, interfaces, and


data for a system to satisfy specified requirements. Systems design could be seen as the
application of systems theory to product development.

3.1. LOGICAL DESIGN


Logical design is an abstract concept in computer programming by which
programmers arrange data in a series of logical relationships known as attributes or
entities. An entity refers to a chunk of information, whereas an attribute defines the
unique properties of an entity.

Perfume Store Management


System

USER ADMINISTRATOR

VIEW
CATEGORY CUSTOMER
DETAILS

ADD
CUSTOMER
GALLERY DETAILS

ADD CART

VIEW
BILLING
DETAILS

ABOUT US

Fig.3.1 Logical Design For Perfume Store Management System

8
3.2 DATABASE DESIGN
Database design is the process of producing a detailed data model of database.
This data model contains all the needed logical and physical design choices and
physical storage parameters needed to generate a design in a data definition language,
which can then be used to create a database. A fully attributed data model contains
detailed attributes for each entity. A good database design is important in ensuring
consistent data, elimination of data redundancy, efficient execution of queries and high-
performance application. Taking the time to design a database saves time and
frustration during development, and a well-designed database ensures ease of access
and retrieval of information.

Admin Login

FIELD DATA CONSTRAINTS


Username Varchar (20) NOT NULL
Password Varchar (25) NOT NULL

User Login

FIELD DATA CONSTRAINTS


Username Varchar (20) NOT NULL
Password Varchar (25) NOT NULL

Customer Details

FIELD TYPE CONTRAINTS


Id Int (10) NOT NULL
Name Varchar (55) NOT NULL
Email Varchar (50) NOT NULL
Phoneno Int (10) NOT NULL
Address Varchar (50) NOT NULL

9
Product Information

FIELD TYPE CONTRAINTS KEY


Product id Int (50) NOT NULL Primary key
Product name Varchar (55) NOT NULL
Brand Varchar (50) NOT NULL
Product Price Int (10) NOT NULL
Quantity Varchar (50) NOT NULL
Customer Name Varchar (50) NOT NULL
Customer Phone no Int (10) NOT NULL

Payment

FIELD TYPE CONTRAINTS KEY


id Int (50) NOT NULL Primary key
Pid Varchar (55) NOT NULL
U id Varchar (50) NOT NULL
Name Int (10) NOT NULL
Pay type Varchar (50) NOT NULL
Rupee Varchar (50) NOT NULL
Bank Int (10) NOT NULL
Card Varchar (50) NOT NULL
C no Int (10) NOT NULL
Cvv Int (10) NOT NULL

10
4. SYSTEM DEVELOPMENT

System development is the process of code construction. It includes in the


internal development of customized systems, the creation of database systems, or the
acquisition of third party developed software.

4.1. PROGRAM CODE

Android Manifest:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">

<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.Test3"
tools:targetApi="31">
<activity
android:name=".viewproducts"
android:exported="false" />
<activity
android:name=".aboutuspage"
android:exported="false" />
<activity
android:name=".cart"
android:exported="false" />
<activity

11
android:name=".womenpage"
android:exported="false" />
<activity
android:name=".menpage"
android:exported="false" />
<activity
android:name=".categorypage"
android:exported="false" />
<activity
android:name=".nextpage"
android:exported="false" />
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />


</intent-filter>
</activity>

<meta-data
android:name="preloaded_fonts"
android:resource="@array/preloaded_fonts" />
</application>

</manifest>

12
Adminlogin.java
package com.example.perfumestore;

import androidx.appcompat.app.AppCompatActivity;

import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import java.io.DataInputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class AdminLogin extends AppCompatActivity {


Button dl;
EditText dlt,dlp;
ProgressDialog pDialog;

SharedPreferences sp1;
public static final String SHARED_PREFS1 = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_admin_login);
sp1 = getSharedPreferences(SHARED_PREFS1, Context.MODE_PRIVATE);
dlt = (EditText) findViewById(R.id.entaad1);

13
dlp =(EditText) findViewById(R.id.entappp1);
dl= (Button) findViewById(R.id.ok1);

dl.setOnClickListener(v -> new dlogin().execute());

public class dlogin extends AsyncTask<String, String, String> {

final String duname = dlt.getText().toString();


final String dpwd = dlp.getText().toString();

// String gender = selected_gender.getText().toString();


@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(AdminLogin.this);
pDialog.setMessage("Requesting " + duname + "...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
}

@SuppressWarnings("deprecation")

protected String doInBackground(String... args) {

String txt = "";


try {
String ur = "http://"+MainActivity.serverip

14
+"/Android/perfume/adminlogin.php?username=" +duname+"&password="+dpwd;
Log.i("URL", ur);
URL url = new URL(ur);
HttpURLConnection uc = (HttpURLConnection) url.openConnection();
DataInputStream dis = new DataInputStream(uc.getInputStream());
String t = "";

while ((t = dis.readLine()) != null) {


txt += t;
}
Log.i("Read", txt);
dis.close();

} catch (Exception e) {
Log.i("Login Ex", e.getMessage());
}
return txt;
}

protected void onPostExecute(String file_url) {


String ss= file_url.trim();
Toast.makeText(getApplicationContext(), ss,
Toast.LENGTH_LONG).show();

if (file_url.trim().equals("Success")) {

Toast.makeText(getApplicationContext(), "Login Success!",


Toast.LENGTH_LONG).show();
Intent in = new Intent(AdminLogin.this, AdminHome.class);
SharedPreferences.Editor editor = sp1.edit();
editor.putString("EMAIL_KEY1",duname);
editor.putString("AID",duname);
editor.commit();

15
in.putExtra("dun",duname);
startActivity(in);

else if(file_url.trim().equals("failed")) {
Toast.makeText(getApplicationContext(), "User name and password
wrong", Toast.LENGTH_LONG).show();

dlt.setText("");
dlp.setText("");

}
else
{ Toast.makeText(getApplicationContext(), "Connet error",
Toast.LENGTH_LONG).show();}

pDialog.dismiss();
}
}

Userlogin.java
package com.example.perfumestore;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.os.Message;

16
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;

public class MainActivity extends AppCompatActivity {


EditText Username, Password;
Button buttonLogin;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Username = findViewById(R.id.Username);
Password = findViewById(R.id.Password);
buttonLogin = findViewById(R.id.button);
buttonLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String username = Username.getText().toString();
String password = Password.getText().toString();

if (username.equals("test") && password.equals("123")) {


Toast.makeText(MainActivity.this, "Login successful",

17
Toast.LENGTH_SHORT).show();
startActivity(new Intent(MainActivity.this, nextpage.class));
} else {
Toast.makeText(MainActivity.this, "Login unsuccessful",
Toast.LENGTH_SHORT).show();

}
}
});
}
}

Gallery.java
package com.example.perfumestore;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import java.util.List;

public class ProductAdapter extends


RecyclerView.Adapter<ProductAdapter.ProductViewHolder> {

private Context mContext;


private List<Product> mProductList;

public ProductAdapter(Context context, List<Product> productList) {


mContext = context;

18
mProductList = productList;
}

@NonNull
@Override
public ProductViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int
viewType) {
View view = LayoutInflater.from(mContext).inflate(R.layout.item_product,
parent, false);
return new ProductViewHolder(view);
}

@Override
public void onBindViewHolder(@NonNull ProductViewHolder holder, int position)
{
Product product = mProductList.get(position);
holder.textViewProductName.setText(product.getName());
holder.textViewProductDescription.setText(product.getDescription());
// Set other product details as needed
}

@Override
public int getItemCount() {
return mProductList.size();
}

public static class ProductViewHolder extends RecyclerView.ViewHolder {

TextView textViewProductName, textViewProductDescription;

public ProductViewHolder(@NonNull View itemView) {


super(itemView);
textViewProductName =
itemView.findViewById(R.id.textViewProductName);

19
textViewProductDescription =
itemView.findViewById(R.id.textViewProductDescription);
}
}
}
Addcart.java
package com.example.perfumestore

import androidx.appcompat.app.AppCompatActivity;

import android.app.Activity;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import java.util.HashMap;

public class cart extends AppCompatActivity {


DatabaseReference databaseUsers;

20
EditText id,name,brand,price,customername,phone;
Button btninsert,btnview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cart);

btninsert=findViewById(R.id.buttonSubmit);
btnview=findViewById(R.id.btnshow);
id=findViewById(R.id.Productid);
name=findViewById(R.id.ProductName);
brand=findViewById(R.id.Brand);
customername=findViewById(R.id.Customername);
phone=findViewById(R.id.CustomerPhoneno);
price=findViewById(R.id.ProductPrice);
databaseUsers = FirebaseDatabase.getInstance().getReference();

btninsert.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
InsertData();

Toast.makeText(cart.this, "RECORD INSERTED",


Toast.LENGTH_SHORT).show();
}
});
btnview.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity((new Intent(cart.this, viewproducts.class)));
finish();

21
}
});
}

private void InsertData() {


String productid = id.getText().toString();
String productname = name.getText().toString();
String productbrand = brand.getText().toString();
String productprice = price.getText().toString();
String Customername = customername.getText().toString();
String Customerphno =phone .getText().toString();
String head = databaseUsers.push().getKey();

User user = new


User(productid,productname,productbrand,productprice,Customername,Customerphn
o);

databaseUsers.child("Products").child(head).setValue(user).addOnCompleteListener(
new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()){
Toast.makeText(cart.this, "Product Details Insered",
Toast.LENGTH_SHORT).show();
}

}
});

}
}

22
Addcustomerdetails.java
package com.example.perfumestore;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;

import java.util.HashMap;

public class customer extends AppCompatActivity {

FirebaseDatabase db = FirebaseDatabase.getInstance();
DatabaseReference root = db.getReference().child("Customers");
EditText id,name,email,mobile,address;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_customer);

23
id=findViewById(R.id.cusid);
name=findViewById(R.id.cusname);
email=findViewById(R.id.cusemail);
mobile=findViewById(R.id.cusmobile);
address=findViewById(R.id.cusaddress);
Button btn = findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (TextUtils.isEmpty(id.getText().toString())){
id.setError("Please enter a customer ID");
return;}
if (TextUtils.isEmpty(name.getText().toString())){
name.setError("Customer Name is Must");
return;}
if (TextUtils.isEmpty(email.getText().toString())){
email.setError("Email is Compulsary");
return;}
if (TextUtils.isEmpty(mobile.getText().toString())){
mobile.setError("Mobile Number is Must");
return;}

String cusid = id.getText().toString();


String cusname = name.getText().toString();
String cusemail = email.getText().toString();
String cusmobile = mobile.getText().toString();
String cusaddress = address.getText().toString();

HashMap<String,String> customermap = new HashMap<>();

customermap.put("customerid" , cusid);
customermap.put("customername" , cusname);

24
customermap.put("emailid" , cusemail);
customermap.put("mobilenumber" , cusmobile);
customermap.put("address" , cusaddress);

root.push().setValue(customermap).addOnCompleteListener(new
OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
Toast.makeText(customer.this, "RECORD SAVED",
Toast.LENGTH_SHORT).show();

});
Button showup=findViewById(R.id.show);
showup.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(customer.this, viewcustomer.class));
}
});

}
});
}
}

25
Viewcustomerdetails.java
package com.example.perfumestore;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;

import java.util.HashMap;

public class customer extends AppCompatActivity {

FirebaseDatabase db = FirebaseDatabase.getInstance();
DatabaseReference root = db.getReference().child("Customers");
EditText id,name,email,mobile,address;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_customer);

26
id=findViewById(R.id.cusid);
name=findViewById(R.id.cusname);
email=findViewById(R.id.cusemail);
mobile=findViewById(R.id.cusmobile);
address=findViewById(R.id.cusaddress);
Button btn = findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (TextUtils.isEmpty(id.getText().toString())){
id.setError("Please enter a customer ID");
return;}
if (TextUtils.isEmpty(name.getText().toString())){
name.setError("Customer Name is Must");
return;}
if (TextUtils.isEmpty(email.getText().toString())){
email.setError("Email is Compulsary");
return;}
if (TextUtils.isEmpty(mobile.getText().toString())){
mobile.setError("Mobile Number is Must");
return;}
String cusid = id.getText().toString();
String cusname = name.getText().toString();
String cusemail = email.getText().toString();
String cusmobile = mobile.getText().toString();
String cusaddress = address.getText().toString();

HashMap<String,String> customermap = new HashMap<>();

customermap.put("customerid" , cusid);
customermap.put("customername" , cusname);
customermap.put("emailid" , cusemail);
customermap.put("mobilenumber" , cusmobile);
customermap.put("address" , cusaddress);

27
root.push().setValue(customermap).addOnCompleteListener(new
OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
Toast.makeText(customer.this, "RECORD SAVED",
Toast.LENGTH_SHORT).show();

});
Button showup=findViewById(R.id.show);
showup.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(customer.this, viewcustomer.class));
}
});

}
});
}
}

28
Viewproductdetails.java
package com.example.perfumestore;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.content.Intent;
import android.os.Bundle;

import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;

import java.util.ArrayList;
import java.util.List;

public class viewproduct extends AppCompatActivity {


RecyclerView recyclerView;
ArrayList<User>list;
DatabaseReference databaseReference;
NandhaAdapter adapter;

@Override
public void onBackPressed() {
super.onBackPressed();
startActivity(new Intent(viewproduct.this, addcart.class));
finish();
}

29
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_viewproduct);
recyclerView = findViewById(R.id.recycleview);
databaseReference = FirebaseDatabase.getInstance().getReference("Products");
list = new ArrayList<>();
recyclerView.setLayoutManager(new LinearLayoutManager(this));
adapter = new NandhaAdapter(this,list);
recyclerView.setAdapter(adapter);

databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
for( DataSnapshot dataSnapshot :snapshot.getChildren())
{
User user = dataSnapshot.getValue(User.class);
list.add(user);
}
adapter.notifyDataSetChanged();

@Override
public void onCancelled(@NonNull DatabaseError error) {

}
});

}
}

30
Payment.java
package com.jo.perfumestore;

import androidx.appcompat.app.AppCompatActivity;

import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import java.net.URLEncoder;

public class Payment extends AppCompatActivity {


EditText e1,e2,e3,e4,e5;
TextView t1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_payment);
e1=findViewById(R.id.bname);
e2=findViewById(R.id.ctype);
e3=findViewById(R.id.cnum);
e4=findViewById(R.id.cvv);
e5=findViewById(R.id.cname);
t1=findViewById(R.id.btotal);

Intent is = getIntent();

31
String rupee =is.getStringExtra("rupee");
t1.setText("Total : \u20B9"+rupee);

Button b=findViewById(R.id.bpays);
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String pid=is.getStringExtra("pid");
String uid =is.getStringExtra("uid");
String pname =is.getStringExtra("pname");
String count =is.getStringExtra("count");
String rupee =is.getStringExtra("rupee");
String pimg =is.getStringExtra("pimg");

UploadToServer uploadT = new UploadToServer();

uploadT.doDataUpload("http://"+MainActivity.serverip+"/Android/moviebooking/pa
yment.php?" +
"pid="+ URLEncoder.encode(pid)
+"&uid="+URLEncoder.encode(uid)+
"&quantity="+URLEncoder.encode(pname)+
"&count="+URLEncoder.encode(count)+
"&paytype="+URLEncoder.encode("Online Payment")+
"&rupee="+ URLEncoder.encode(rupee)+
"&bank="+URLEncoder.encode(e1.getText().toString())+
"&card="+URLEncoder.encode(e2.getText().toString())+
"&cno="+URLEncoder.encode(e3.getText().toString())+
"&cvv="+URLEncoder.encode(e4.getText().toString())+
"&choldername="+URLEncoder.encode(e5.getText().toString())
+
"&pimg="+ URLEncoder.encode(pimg),handler);
}

32
});
}
Handler handler = new Handler() {
@SuppressLint("HandlerLeak")
@Override
public void handleMessage(Message msg) {
// Log.i(TAG, "Handler " + msg.what);
if (msg.what == 1) {

Toast.makeText(getApplicationContext(), "Payment Success",


Toast.LENGTH_SHORT).show();
finish();
Intent ii= new Intent(Payment.this,HomePage
.class);

startActivity(ii);
} else
Toast.makeText(getApplicationContext(), "Error",
Toast.LENGTH_SHORT).show();

};

33
5. SYSTEM TESTING

System testing of software or hardware is testing conducted on a complete,


integrated system to evaluate the system’s compliance with its specified requirements.
System testing is carried out by specialist testers or independent testers. The system
testing should investigate both functional and non-functional requirements of the
testing

5.1. PROJECT TESTING


The project testing is used to test the whole project by using different testing
techniques. Testing is a series of different tests whose primary purpose is to fully
exercise the computer-based system.

5.2. UNIT TESTING:

Testing of individual software components or modules. Typically done by the


programmer and not by testers, as it requires detailed knowledge of the internal program
design and code. may require developing test driver modules or test harnesses.

Fig.5.1 Unit Testing on User Page

34
5.3. INTEGRATION TESTING:
Testing of integrated modules to verify combined functionality after integration.
Modules are typically code modules, individual applications, client and server
applications on a network, etc. This type of testing is especially relevant to client/server
and distributed system.

Fig.5.2 Integration Testing on Add Customer details page

Fig.5.3 Integration Testing on View Product Gallery Page

35
5.4. VALIDATION TESTING
This model of testing is extremely important especially if someone wants to be
one of the best software testers. The software verification and validation testing are the
process after the validation testing stage is secondary to verification testing.

Fig.5.4 Validation Testing on User page

36
6. SYSTEM IMPLEMENTATION

System Implementation is the stage of the project when the theoretical design
is turned out into a working system. Thus, it can be consider being the most critical
stage in achieving a successful new system and in giving the user, confidence that the
new system will work and be effective.

6.1 SOFTWARE DEMONSTRATION

Demo software is a trial version of a software program which allows people to


use it for free while they decide whether or not to buy it. For example, a program may
not allow people to save files, meaning that people can use the program to see how it
feels, but they cannot save the work they produce.

6.2.1 User Page


This page includes the User’s name and admin page which takes user to the
respective page

Fig.6.1 User Page

37
6.2.2 Admin Login Page
This admin login page is used for logging into the admin module

Fig.6.2.2 Admin Login Page

6.2.3 User Login Page


This User login page is used for logging into the User module

Fig.6.2.3 User Login Page

38
6.2.4 Home Screen Page
This home screen page is used to access the various pages in this app.

Fig.6.2.4 Home Screen Page

6.2.5 Category Page


In this page shows the Perfume is Categorized by the Gender.

Fig.6.2.5 Category Page

39
6.2.6 Men Perfume Gallery Page
In this page shows the Perfume Gallery of Men.

Fig.6.2.6 Men Perfume Gallery Page

6.2.7 Women Perfume Gallery Page


In this page shows the Perfume Gallery of Women.

Fig.6.2.7 Women Perfume Gallery Page

40
6.2.8 Customer details entry Page
In this page used to add the customer details.

Fig.6.2.8 Customer details entry Page

6.2.9 Billing and Payment Details Page


In this page you can see the billing and payment details.

Fig.6.2.9 Billing and Payment Details Page

41
REPORT:

Payment Details

42
User and Password Page

Customer Details Page

43
7.CONCLUSION

In conclusion, the development of the "Perfume Store Management System"


offers a comprehensive platform for streamlining operations and enhancing user
experience in the perfume retail industry. By providing tools for inventory
management, sales tracking, customer relationship management, and more, this system
enables perfume store owners to efficiently manage their businesses. Through seamless
integration and innovative features tailored to the perfume industry, this system
contributes to greater efficiency, accuracy, and customer satisfaction. With continued
advancements in technology and tailored functionalities, the future of perfume store
management systems promises even greater possibilities for optimizing operations and
maximizing profitability in the fragrance retail sector.

44
BIBLIOGRAPHY

Books References:

1. Barry A. Burd, “Android Application Development”,2020.

2. Lauren Darcey, “Introduction to Android Application”,2013

Web References:

1.https://www.instructables.com/How-To-Create-An-Android-App-With-Android-
Studio/

2. https://www.wikihow.com/Create-an-App-with-Android-Studio

3. https://www.geeksforgeeks.org/android-studio-tutorial/

45

You might also like