You are on page 1of 61

A

Minor Project

ON

POOLING BUDDY
For the partial fulfillment of the award of

Degree of

Master of Computer Application (MCA)

Under the Guidance: Submitted By:

Mr. Pawan Jhajharia Abhishek Agarwal(18mcal086)


Assistant Professor Sohan lal Suthar(18mcal088)

DEPARTMENT OF INFORMATION TECHNOLOGY & COMPUTER APPLICATION

JECRC UNIVERSITY, JAIPUR


Candidate’s Declaration

I hereby declare that the project work, which is being presented in the Project

Report, entitled “Pooling Buddy” in partial fulfillment for the award of Degree of

“Master of Computer Application” in Deptt. of Information Technology , JECRC

University is a record of my own investigations carried under the Guidance of

Mr. Pawan Jhajriya.

I have not submitted the matter presented in this Project Report anywhere for the

award of any other Degree.

Name of Candidate:
Abhishek Agarwal(18MCAL086)

Sohan Lal Suthar (18MCAL088)

Name of Supervisor/Guide:

Mr. Pawan Jhajriya

Countersigned By : HoD-IT & CA


ACKNOWLEDGEMENT

It gives us a great sense of pleasure to present the report of the MCA Project
undertaken during MCA II Year. We owe special debt of gratitude to Mr. Pawan
Jhajriya for his constant support and guidance throughout the course of our work.
His sincerity, thoroughness and perseverance have been a constant source of
inspiration for us. It is only his cognizant efforts that our endeavors have seen
light of the day.

We also take the opportunity to acknowledge the contribution of Dr. Deepak


Dembla Head Department of COMPUTER APPLICATION for full support and
assistance during the development of the project.

We also do not like to miss the opportunity to acknowledge the contribution of all
faculty members of the department for their kind assistance and cooperation
during the development of our project. Last but not the least, we acknowledge
our friends for their contribution in the completion of the project.

Name: Abhishek Agarwal(18MCAL086)

Sohan Lal Suthar(18MCAL088)


ABSTRACT

My project is Pooling Buddy which is based on Android and java programming.


Pooling buddy is an android application. By which people will get help to go to the
place they want to go by simply pool a vehicle. The main benefit of this application
is, people does not want to make efforts to offer pool or get pool, they just have to
fill the starting and ending point and fill the time column. By this they can make a
pool offer.

The main beneficiary of this application is students who are living far from their
college and universities because in student life ,time is important and public
transport consumes lot of time to reach one place to another place.

It takes a parameter of destination distance by which application find a pool for


user that is the destination of both parties must be same or in between the route.

In our project student have to put some basic information. In order to gain an
overview about the report,
The purpose and scope of this document will be given and then an overall
description of this application is followed. In order to gain an overview about the
report. It contain and table of index to find page wise guide to the report and a
table of figure to understand the hierarchy of this application. Data flow diagram
and Entity relationship diagram is also given to describe how the flow of control
and data transfer are getting their route plan.

This System is intended to meet the following objectives in this project.


TABLE OF CONTENT
DESCRIPTION PAGE NO.
1. INTRODUCTION 1
2. PURPOSE 2
2.1 SCOPE 2
2.2 PRODUCT PURPOSE 2
2.3 PERFORMANCE REQUIRNMENT 3

3. FEASIBILITY STUDY 3
3.1 ABOUT PROJECT 3
4.SYSTEM REQUIREMENT 4
HARDWARE REQUIREMENTS 4
SOFTWARE REQUIREMENTS 4
5. DESIGN REQUIRNMENT 5
6. SYSTEM DESIGN 6
6.1 DATA FLOW DIAGRAM 6
6.2 ER DIAGRAM 9-12
6.3 UML DIAGRAMS 13-14
7.SRS 15-16
8.CODING 17
HOME ACTIVITY 17-19
KINVEY ACTIVITY 20
MAIN ACTIVITY 21
SEARCH ACTIVITY 22-19
ACTIVITY LOGIN 30-31
SEARCH ACTIVITY 32-39
ACTIVITY HOME 40-41
9.SYSTEM TESTING 42
WHITE BOX 42
UNIT TESTING 42
ALPHA TESTING 43
BETA TESTING 43
10.SNAP SHOTS 44-52
11.FUTURE SCOPE OF THE PROJECT 53
12.SYSTEM FEATURES 54
14.BIBLOGRAPHY 55
LIST OF FIGURES

FIGURE PAGE NO

1. Data Flow Diagram 8

2. E-R Diagram 11

3. UML 14

4. HOME PAGE 44

5. Email Validation Page 45

6. USER REGISTRATION 46

7. OFFER RIDE ACTIVITY 47

8. AVAILABLE RIDES 48

9. SEARCH LOCATION 49

10.CONFIRM LOCATION 50

11.RIDE SELECTION 51

12.EMAIL CONFIRMATION 52
1. INTRODUCTION

The Project entitled “Pooling Buddy” is to develop a software product that is used
in student’s life. The project on Intranet Module shall be a useful product for time
management. The product is developed to maintain the students details, and also
to get the information of the status of the students who is communicating.

It Uses Android and Java .The main benefit of this project is that it facilitate user to
communicate in a faster manner in comparison of manual system. Through this
system A student can identify nearest student from same college. It can be known
easily whereas in manual system it is a difficult task.

The Administrator department has all rights to provide or restrict to any student
which misbehaves and disagree the terms and conditions. Students will enter
the information about colleges, residence and Contact information in the given
forms.
The aim of this project is to develop a “Pooling buddy” which is easily accessible
to the Students.

This entails the students day to day activities of pooling procedure including
meeting, pickup and drop .This tool will also provide suggestions to the nearest
person .

Pooling Buddy is using multiple tools to manage their client relationships and
stored the most Information and others are managed through firebase and kinvey.

1
2.Purpose

The SRS is needed to evolve as the development of the software product


processes. The purpose of this document is to give a complete description about
how Pooling Buddy can be developed. This document is to provide information
about what the software product is to do to customer and establish an agreement
between customer and employees and also become helpful for development. In
addition to these, it provides a basis for validation and verification.

2.1 SCOPE

This project is aimed at developing a “Pooling buddy”. It is a system Meant to


maintain all the details regarding interested students, All details which includes
Student’s details, place details, college details and Vehicle details, Retrieval of all
data’s from database just by giving the Student unique details like phone no. etc.
We have developed it using Android and Java. It is designed and developed
using XML, kinvey and firebase. which is used for creating a dynamic content for
application Pooling buddy. The following is the code developed by us for the
“Pooling Buddy”.

2.2 PRODUCT PURPOSE:

Pooling Buddy is CRM enables businesses of any size to manage every aspect
of the customer lifecycle. Keep track students, prospects and details is a huge
challenge
For any Students today. Many will develop complex mechanisms using files
and spreadsheets and databases and dozens of other tools. When it comes
down to it, one of the best ways to keep your leads and student’s organized
effectively is to look
for tracking software specifically designed for students. With a well designed
student tracking System. You can track leads and prospects and review and
report on your rides.

2
2.3 PERFORMANCE REQUIRNMENT:

 When you offer a pool vehicle then you have to give your route also.
 Pooling Buddy is a initiate to pool vehicles, by this fuel, time and energy are
saved.
 By pool your vehicle you have to manage route plan and efficiency also but you
can make new contacts and new friend also that is way of living.
 Introverts does not have to contact anyone they just dial a call or drop a
massage.
 It’s sophisticated technology and usually comes as standard if you want to pool
then other companies are offering taxi services but this application provides you
your ownership.

3. FEASIBILITY STUDY
 Technical feasibility: Technical feasibility centers on the existing computer
system i.e. Hardware, Software etc. Bank requires SQL database management
that are all easily available with extensive development support through manuals
and blogs.

 Economical feasibility: Economic Feasibility is the most frequently used


method for evaluating the effectiveness of a candidate system. More commonly
known as Cost/ Benefit analysis, the procedure is to determine the benefits and
savings that are expected from the candidate system and compare them with
costs. If the benefits outweigh costs, then the decision is made to design and
implement the system.

3.1 About Project:


The Project entitled “Pooling Buddy” is to develop a software product that is used
in student’s life to maintain their details systematically. The project on Intranet
Module shall be a useful product for managing the precious time for a student.
The product is developed to maintain the student who pickup and the student
who is going to pickup details, and also to get the information of the status of
both the students.

It Uses XML and AWT as Front End and Android and Java as Back End. The
main benefit of this project is that it facilitate user to communicate in a faster
manner in comparison of manual system. Through this system the current status
of the students can be known easily whereas in manual system it is a difficult
task.

Students will enter the information about colleges, residence and Contact
information in the given forms.
3
4.System Requirement

 Hardware Requirements
 RAM: 4 GB
 HDD: 22 GB or more (Free space excluding data size)
 Processor: i3 or onwards
 Android Device (For debugging)

 Software Requirements
 Android Studio 3.5
 Software Development Kit
 Java 1.8
 Gradle version 5
 Android Emulator
 Virtual Machine
 Kinvey Plug-in
 Google Application Program Interface(API)

4
5. DESIGN REQUIRNMENT:

The main object of this project is to design and develop computerized application
for pooling system, which would be helpful to carry out the medicinal plants in the
easy manner. The newly proposed system eliminates the manual problems and tie
consumption, There is no chance of errors while retrieving records using this
proposed systems and anyone can easily use this in there defined states anywhere

In this third phase, the system and software design documents are prepared as per
the requirement specification document. This helps define overall system
architecture.
This design phase serves as input for the next phase of the model. There are two
kinds of design documents developed in this phase:

 High-Level Design (HLD)-

Brief description and name of each module. An outline about the functionality of
every module Interface relationship and dependencies between modules Database
tables identified along with their key elements Complete architecture diagrams
along with technology details

 Low-Level Design(LLD)-

(LLD) is a component-level design process that follows a step-by-


step refinement process. This process can be used for designing data structures,
required software architecture, source code and ultimately, performance algorithms.
Overall, the data organization may be defined during requirement analysis and then
refined during data design work. Post-build, each component is specified in detail. [1]
The LLD phase is the stage where the actual software components are designed.

Functional logic of the modules, Database tables, which include type and size
Complete detail of the interface ,Addresses all types of dependency issues

5
6.SYSTEM DESIGN

6.1 DATA FLOW DIAGRAM:

A data flow diagram (DFD) is a graphical representation that depicts the information
flow and the transforms that are applied as data moves from input to output.

 Symbols and notations in DFD-

 External Entity-

An external entity can represent a human, system or subsystem. It is where


certain data comes from or goes to. It is external to the system we study, in
terms of the business process. For this reason, people used to draw external
entities on the edge of a diagram.

 Process-

A process is a business activity or function where the manipulation and


transformation of data takes place. A process can be decomposed to finer
level of details, for representing how data is being processed within the
process.

 Data Store-

A data store represents the storage of persistent data required and/or


produced by the process. Here are some examples of data stores:
membership forms, database tables, etc.

6
 Data Flow

A data flow represents the flow of information, with its direction represented by
an arrow head that shows at the end(s) of flow connector.

 Levels of DFD-

 0-level-DFD-
It is also known as context diagram. It’s designed to be an abstraction view,
showing the system as a single process with its relationship to external
entities. It represent the entire system as single bubble with input and output
data indicated by incoming/outgoing arrows.

 1-level DFD-

In 1-level DFD, context diagram is decomposed into multiple


bubbles/processes. in this level we highlight the main functions of the system
and breakdown the high level process of 0-level DFD into sub processes.

 2-level-DFD-

2-level DFD goes one step deeper into parts of 1-level DFD.It can be used to
plan or record the specific/necessary detail about the system’s functioning.

7
8
6.2 ER DIAGRAM:

 An entity relationship diagram (ERD) shows the relationships of entity sets


stored in a database. An entity in this context is an object, a component of
data. An entity set is a collection of similar entities. These entities can have
attributes that define its properties.
 By defining the entities, their attributes, and showing the relationships
between them, an ER diagram illustrates the logical structure of databases.
 ER diagrams are used to sketch out the design of a database.
 There are two reasons to create a database diagram. You're either designing
a new schema or you need to document your existing structure.
 If you have an existing database you need to document, you create a
database diagram using data directly from your database. You can export
your database structure as a CSV file, then have a program generate the
ERD automatically.
 This will be the most accurate portrait of your database and will require no
drawing on your part.

 Common Entity Relationship Diagram Symbols :

 An ER diagram is a means of visualizing how the information a


system produces is related. There are five main components of an
ERD:

 Entities, which are represented by rectangles. An entity is an object


or concept about which you want to store information.

 A weak entity is an entity that must defined by a foreign key


relationship with another entity as it cannot be uniquely identified by
its own attributes alone.

9
 Actions, which are represented by diamond shapes, show how two
entities share information in the database.

 In some cases, entities can be self-linked. For example, employees


can supervise other employees.

 Attributes, which are represented by ovals. A key attribute is the


unique, distinguishing characteristic of the entity. For example, an
employee's social security number might be the employee's key
attribute.

10
 A multivalve attribute can have more than one value. For example, an
employee entity can have multiple skill values.

 A derived attribute is based on another attribute. For example, an


employee's monthly salary is based on the employee's annual salary.

 Connecting lines, solid lines that connect attributes to show the relationships
of entities in the diagram.

11
 ER DIAGRAM FOR POOLING BUDDY

12
6.3 UML DIAGRAMS:
In software and systems engineering, a use case is a list of actions or event steps,
typically defining the interactions between a role (known in the Unified Modeling
Language as an actor) and a system, to achieve a goal. The actor can be a human,
an external system, or time. In systems engineering, use cases are used at a higher
level than within software engineering, often representing missions or stakeholder
goals. Another way to look at it is a use case describes a way in which a real-world
actor interacts with the system. In a system use case you include high-level
implementation decisions. System use cases can be written in both an informal
manner and a formal manner. Use cases have been used extensively over the past
few decades. The advantages of Use cases includes:

 The list of goal names provides the shortest summary of what the system will
offer
 It gives an overview of the roles of each and every component in the system.
It will help us in defining the role of users, administrators etc.
 It helps us in extensively defining the user’s need and exploring it as to how
it will work.
 It provides solutions and answers to many questions that might pop up if we
start a project unplanned.
 Following example will illustrate on how to plan use cases:

 Use Case: What is the main objective of this use case. For eg. Adding a
software component, adding certain functionality etc.

 Primary Actor: Who will have the access to this use case. In the above
examples, administrators will have the access.

 Scope: Scope of the use case

 Level: At what level the implementation of the use case be.

 Flow: What will be the flow of the functionality that needs to be there. More
precisely, the work flow of the use case.

13
 UML DIAGRAMS FOR POOLING BUDDY

14
7.SRS

 The purpose of SRS (Software Requirement Specification) document is to


describe the external

 Behavior of the app based library system. It defines the operations,


performance and interfaces

 Quality assurance requirement of the app based newspaper. The complete


software requirements

 Without purporting to know the specifics of their two individual situations, one
starts by discovering the REAL, business requirements deliverable what that
provide value when met by the product/system/software.

 An SRS is basically an organization’s understanding (in writing) of a


customer or potential client’s system requirements and dependencies at a
particular point in time (usually) prior to any actual design or development
work. It’s a two-way insurance policy that assures that both the client and the
organization understand the other’s requirements from that perspective at a
given point in time.

 The SRS document itself states in precise and explicit language those
functions and capabilities a software system (i.e., a software application, an
ecommerce Web site, and so on) must provide, as well as states any
required constraints by which the system must abide. The SRS also
functions as a blueprint for completing a project with as little cost growth as
possible. The SRS is often referred to as the “parent” document because all
subsequent project management documents, such as design specifications,
statements of work, software architecture specifications, testing and
validation plans, and documentation plans, are related to it.

 It’s important to note that an SRS contains functional and nonfunctional


requirements only; it doesn’t offer design suggestions, possible solutions to
technology or business issues, or any other information other than what the
development team understands the customer’s system requirements to be.

 A well-designed, well-written SRS accomplishes four major goals:

 It provides feedback to the customer. An SRS is the customer’s


assurance that the development organization understands the issues or

15
problems to be solved and
 the software behavior necessary to address those problems. Therefore, the
SRS should be written in natural language (versus a formal language,
explained later in this article), in an unambiguous manner that may also
include charts, tables, data flow diagrams, decision tables, and so on.

 It decomposes the problem into component parts. The simple act of


writing down software requirements in a well-designed format organizes
information, places
 borders around the problem, solidifies ideas, and helps break down the
problem into its component parts in an orderly fashion.

 It serves as an input to the design specification. As mentioned


previously, the SRS serves as the parent document to subsequent
documents, such as the software design specification and statement of
work. Therefore, the SRS must contain sufficient detail in the functional
system requirements so that a design solution can be devised. It serves as a
product validation check.

 It serves as the parent document for testing and validation strategies that
will be applied to the requirements for verification.

 Several standards organizations (including the IEEE) have identified nine


topics that must be addressed when designing and writing an SRS:

 Interfaces

 Functional Capabilities

 Performance Levels

 Data Structures/Elements

 Safety

 Reliability

 Securit

16
8.Coding:
Once the system design phase is over, the next phase is coding. In this phase, developers
start build the entire system by writing code using the chosen programming language. In
the coding phase, tasks are divided into units or modules and assigned to the various
developers. It is the longest phase of the Software Development Life Cycle process.
In this phase, Developer needs to follow certain predefined coding guidelines. They also
need to use programming tools like compiler, interpreters, debugger to generate and
implement the code

 HOME ACTIVITY

package
com.slsuthar.carpool;
importandroid.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import
android.widget.Button;

/**

* This class is used to display home screen of car pool application


* All the main navigating functionalities of search a ride , book a ride ,
update ride are handled through this class
*/

public class HomeActivity extends AppCompatActivity { private


Button search;
private Button ofrRide;
private Button logout;
private Button update;

17
/**

* This function is used to set home layout screen and handle button click for
update , search and book ride

* @param savedInstanceState
*/
@Over
ride
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);

search = (Button)findViewById(R.id.btn_search); ofrRide


=(Button)findViewById(R.id.btn_ofrRide); update
=(Button)findViewById(R.id.btn_Update); logout =
(Button)findViewById(R.id.btn_Logout);
search.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {


Intent myIntent = new Intent(v.getContext(),
SearchActivity.class);
startActivityForResult(myIntent, 0); finish();
}

});

ofrRide.setOnClickListener(new View.OnClickListener() {

18
@Override
public void onClick(View v) {

Intent myIntent = new Intent(v.getContext(),


OfferActivity.class);
startActivityForResult(myIntent, 0); finish();
}

});

update.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent myIntent = new Intent(v.getContext(),
UpdateActivity.class);

startActivityForResult(myIntent, 0); finish();


}

});

logout.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {


Intent myIntent = new Intent(v.getContext(), LoginActivity.class);

startActivityForResult(myIntent, 0); finish();


}

});

}
}

19
 KINVEY ACTIVITY

package com.slsuthar.carpool; import android.os.Bundle;


import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity; import
com.kinvey.android.Client;
/**
This class is used to create connection with Kinvey database and get details
of currently logged in user
*/
public class KinveyActivity extends AppCompatActivity {
/**
This method is used to get client details of currently logged in user
@param savedInstanceState
*/ @Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
/**
This method is used to get client details of currently logged in user
@return client details
*/
public Client getClient(){
return ((MainApplication)getApplication()).getClient();

20
 MAIN ACTIVITY

package com.slsuthar.carpool;

import android.support.v7.app.AppCompatActivity; import android.os.Bundle;


/**

* This class provides display for main screen

*/

public class MainActivity extends AppCompatActivity {

/**

* This method is used to display main screen

* @param savedInstanceState

*/ @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

21
 SEARCH ACTIVITY

package com.slsuthar.carpool;

import android.app.DownloadManager; import android.content.Intent;

import android.support.v7.app.AppCompatActivity; import

android.os.Bundle;

import android.util.Log; import android.view.View;

import android.view.ViewGroup; import android.widget.Button; import

android.widget.EditText; import android.widget.LinearLayout; import

android.widget.RadioButton; import android.widget.RadioGroup;

import android.widget.RelativeLayout; import android.widget.TextView;

import android.widget.Toast;

import

com.google.android.gms.common.GooglePlayServicesNotAvailableExcepti

o n;

import

com.google.android.gms.common.GooglePlayServicesRepairableException

import com.google.android.gms.location.places.Place;

import com.google.android.gms.location.places.ui.PlacePicker; import

com.kinvey.android.AsyncAppData;

import com.kinvey.android.Client;

import com.kinvey.android.callback.KinveyListCallback;

import com.kinvey.java.Query;

22
import com.kinvey.java.core.KinveyClientCallback;

/**

* This class is used to search rides available to specific destination

* It takes the current location details and allows user to book selected

ride

*/

public class SearchActivity extends KinveyActivity { private TextView

get_place;

String address;

int PLACE_PICKER_REQUEST =1;

/**

* This method is used to set layout for search screen to be displayed

* It displays all the available ride to destination

* It allows users to set pickup location

* It allows user to book ride

* @param savedInstanceState

*/ @Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_search);

23
final Button pickLocation = (Button)findViewById(R.id.btn_pick); final

EditText Destination = (EditText) findViewById(R.id.edit_Dest);

final Button SearchRide = (Button) findViewById(R.id.btn_Search); final

Button BookRide = (Button) findViewById(R.id.bookBtn);

// BookRide.setVisibility(BookRide.GONE);

final Button cancel = (Button)findViewById(R.id.btn_SCancel);

cancel.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Intent myIntent = new Intent(v.getContext(), HomeActivity.class);

startActivityForResult(myIntent, 0);

finish();

});

pickLocation.setOnClickListener(new View.OnClickListener() { @Override

public void onClick(View v) { displayMap();

});

assert SearchRide != null; SearchRide.setOnClickListener(new

View.OnClickListener() {

@Override

24
public void onClick(final View v) { RideInfo ride = new RideInfo(); Query

myQuery = getClient().query();

myQuery.equals("RideStatus","Available");

myQuery.equals("Destination",Destination.getText().toString());

AsyncAppData<RideInfo> myData = getClient().appData("RideInfo",

RideInfo.class);

myData.get(myQuery, new KinveyListCallback<RideInfo>() { @Override

public void onSuccess(RideInfo[] rideInfos) { Log.v("TAG", "received " +


rideInfos.length + " events"); addRadioButton(rideInfos);
BookRide.setVisibility(BookRide.VISIBLE);
// RadioGroup rg1 = new RadioGroup();

@Override

public void onFailure(Throwable throwable) { Log.v("TAG","Failed");

});
}

});

BookRide.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) { displayConfirmation();


}

});}

/**

25
* This method is used to display maps and show current pickup location
on screen

*/

private void displayMap(){

get_place = (TextView)findViewById(R.id.textView9);
get_place.setOnClickListener(new View.OnClickListener() {
@Override

public void onClick(View v) {

PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder();

Intent intent; try {


intent = builder.build(getApplicationContext());
startActivityForResult(intent,PLACE_PICKER_REQUEST);
} catch (GooglePlayServicesRepairableException e) { e.printStackTrace();
} catch (GooglePlayServicesNotAvailableException e) { e.printStackTrace();
}

});

/**

* This method is used to set address of pickup location

* @param address address of pick up location

*/

public void setAddress(String address){ this.address = address;


}

/**

* This method is used to get address of pick up location

* @return address

*/

26
public String getAddress(){ return address;
}

/**

* This method is used to get lpickup location from maps and set it to
address

* @param requestCode request code

* @param resultCode result code

* @param data data fetched

*/

public void onActivityResult(int requestCode,int resultCode, Intent data){


if(requestCode == PLACE_PICKER_REQUEST)
{

if(resultCode==RESULT_OK){
Place place = PlacePicker.getPlace(data, this);

address = String.format("Pickup Location: %s", place.getAddress());

get_place.setText(address); setAddress(address);

/**

* This method is used to select ride that are available to specific


destination in the form of radio buttons

*/

private void displayConfirmation(){

27
RadioGroup radioGroup= (RadioGroup)
findViewById(R.id.RadioButtonGroup);
if(radioGroup.getChildCount()>0) { RadioButton radioButton = (RadioButton)
findViewById(radioGroup.getCheckedRadioButtonId());
String selectedtext = radioButton.getText().toString();
Toast.makeText(SearchActivity.this, selectedtext,
Toast.LENGTH_SHORT).show();

//Toast.makeText(SearchActivity.this, text[5],
Toast.LENGTH_SHORT).show();

Intent myIntent = new Intent(this, RideConfirmation.class);


myIntent.putExtra("RideDetails",selectedtext);
myIntent.putExtra("PickupLocation",address);
startActivityForResult(myIntent, 0);
finish();

else

Toast.makeText(SearchActivity.this, "No Rides available to book..


Please try again", Toast.LENGTH_SHORT).show();

/**

* This method is used to display all the rides available to specific


destination

* @param rideInfos all the rides that are available

*/

private void addRadioButton(RideInfo[] rideInfos) {

28
RadioGroup radioGroup= (RadioGroup)
findViewById(R.id.RadioButtonGroup);

RadioGroup.LayoutParams rprms; radioGroup.removeAllViews();

if(rideInfos.length>0)

for(int i=0;i<(rideInfos.length);i++){
RadioButton radioButton = new RadioButton(this);

radioButton.setText("CAR NO- " + rideInfos[i].getCar_Num() + " - Source- "


+ rideInfos[i].getSource() + " -Destination- " + rideInfos[i].getDestination() + "
-Time- " + rideInfos[i].getRideTime());
radioButton.setId(i); rprms= new
RadioGroup.LayoutParams(RadioGroup.LayoutParams.WRAP_CONTENT,
RadioGroup.LayoutParams.WRAP_CONTENT);
radioGroup.addView(radioButton, rprms);
}

else

Toast.makeText(SearchActivity.this, "No Rides available to destination..


Please try again", Toast.LENGTH_SHORT).show();

29
 ACTIVITY LOGIN

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" android:gravity="center_horizontal"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.slsuthar.carpool.LoginActivity1">

<!-- Login progress -->

<ProgressBar android:id="@+id/login_progress"
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="8dp" android:visibility="gone" />

<ScrollView android:id="@+id/login_form"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayoutandroid:id="@+id/email_login_form"
android:layout_width="match_parent" android:layout_height="wrap_content"
android:orientation="vertical">

<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">

<AutoCompleteTextView android:id="@+id/email"
android:layout_width="match_parent" android:layout_height="wrap_content"
android:hint="@string/prompt_email" android:inputType="textEmailAddress"
android:maxLines="1" android:singleLine="true" />

</android.support.design.widget.TextInputLayout>

<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"

30
android:layout_height="wrap_content">

<EditText android:id="@+id/password"
android:layout_width="match_parent" android:layout_height="wrap_content"
android:hint="@string/prompt_password" android:imeActionId="@+id/login"
android:imeActionLabel="@string/action_sign_in_short"
android:imeOptions="actionUnspecified" android:inputType="textPassword"
android:maxLines="1"
android:singleLine="true" />

</android.support.design.widget.TextInputLayout>

<Button

android:id="@+id/email_sign_in_button"
style="?android:textAppearanceSmall"
android:layout_width="match_parent" android:layout_height="wrap_content"
android:layout_marginTop="16dp" android:text="@string/action_sign_in"
android:textStyle="bold" />

</LinearLayout>

</ScrollView>

</LinearLayout>

31
 SEARCH ACTIVITY

package com.slsuthar.carpool;

import android.app.DownloadManager; import android.content.Intent;


import android.support.v7.app.AppCompatActivity; import android.os.Bundle;
import android.util.Log; import android.view.View;
import android.view.ViewGroup; import android.widget.Button; import
android.widget.EditText; import android.widget.LinearLayout; import
android.widget.RadioButton; import android.widget.RadioGroup;
import android.widget.RelativeLayout; import android.widget.TextView; import
android.widget.Toast;

import
com.google.android.gms.common.GooglePlayServicesNotAvailableExceptio
n;

import
com.google.android.gms.common.GooglePlayServicesRepairableException;

import com.google.android.gms.location.places.Place;

import com.google.android.gms.location.places.ui.PlacePicker; import


com.kinvey.android.AsyncAppData;
import com.kinvey.android.Client;

import com.kinvey.android.callback.KinveyListCallback;
import com.kinvey.java.Query;

import com.kinvey.java.core.KinveyClientCallback;

/**

* This class is used to search rides available to specific destination

* It takes the current location details and allows user to book selected ride

*/

public class SearchActivity extends KinveyActivity { private TextView


get_place;
String address;

int PLACE_PICKER_REQUEST =1;

32
/**

* This method is used to set layout for search screen to be displayed

* It displays all the available ride to destination

* It allows users to set pickup location

* It allows user to book ride

* @param savedInstanceState

*/ @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search);
final Button pickLocation = (Button)findViewById(R.id.btn_pick); final EditText
Destination = (EditText) findViewById(R.id.edit_Dest);
final Button SearchRide = (Button) findViewById(R.id.btn_Search); final
Button BookRide = (Button) findViewById(R.id.bookBtn);
// BookRide.setVisibility(BookRide.GONE);

final Button cancel = (Button)findViewById(R.id.btn_SCancel);

cancel.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Intent myIntent = new Intent(v.getContext(), HomeActivity.class);


startActivityForResult(myIntent, 0);
finish();

});

33
pickLocation.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View v) { displayMap();
}
});
assert SearchRide != null;
SearchRide.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(final View v) { RideInfo ride = new RideInfo(); Query


myQuery = getClient().query();
myQuery.equals("RideStatus","Available");
myQuery.equals("Destination",Destination.getText().toString());
AsyncAppData<RideInfo> myData = getClient().appData("RideInfo",
RideInfo.class);

myData.get(myQuery, new KinveyListCallback<RideInfo>() { @Override


public void onSuccess(RideInfo[] rideInfos) { Log.v("TAG", "received " +
rideInfos.length + " events"); addRadioButton(rideInfos);
BookRide.setVisibility(BookRide.VISIBLE);
// RadioGroup rg1 = new RadioGroup();

@Override

public void onFailure(Throwable throwable) { Log.v("TAG","Failed");


}

})
}

}
)
;

34
BookRide.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) { displayConfirmation();


}

});

/**

* This method is used to display maps and show current pickup location
on screen

*/

private void displayMap(){

get_place = (TextView)findViewById(R.id.textView9);
get_place.setOnClickListener(new View.OnClickListener() {
@Override

public void onClick(View v) {

PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder();

Intent intent; try {


intent = builder.build(getApplicationContext());
startActivityForResult(intent,PLACE_PICKER_REQUEST);
} catch (GooglePlayServicesRepairableException e) { e.printStackTrace();

35
} catch (GooglePlayServicesNotAvailableException e) { e.printStackTrace();
}

});

/**

* This method is used to set address of pickup location

* @param address address of pick up location

*/

public void setAddress(String address){ this.address = address;


}

/**

* This method is used to get address of pick up location

* @return address

*/

public String getAddress(){ return address;


}

/**

* This method is used to get lpickup location from maps and set it to
address

* @param requestCode request code

36
* @param resultCode result code

* @param data data fetched

*/

public void onActivityResult(int requestCode,int resultCode, Intent data){


if(requestCode == PLACE_PICKER_REQUEST)
{

if(resultCode==RESULT_OK){
Place place = PlacePicker.getPlace(data, this); address =
String.format("Pickup Location: %s",
place.getAddress());

get_place.setText(address); setAddress(address);

/**

* This method is used to select ride that are available to specific


destination in the form of radio buttons

*/

private void displayConfirmation(){

RadioGroup radioGroup= (RadioGroup)


findViewById(R.id.RadioButtonGroup);
if(radioGroup.getChildCount()>0) { RadioButton radioButton = (RadioButton)
findViewById(radioGroup.getCheckedRadioButtonId());

37
String selectedtext = radioButton.getText().toString();

Toast.makeText(SearchActivity.this, selectedtext,
Toast.LENGTH_SHORT).show();

//Toast.makeText(SearchActivity.this, text[5],
Toast.LENGTH_SHORT).show();

Intent myIntent = new Intent(this, RideConfirmation.class);


myIntent.putExtra("RideDetails",selectedtext);
myIntent.putExtra("PickupLocation",address); startActivityForResult(myIntent,
0);
finish();

else

Toast.makeText(SearchActivity.this, "No Rides available to book..


Please try again", Toast.LENGTH_SHORT).show();

/**

* This method is used to display all the rides available to specific


destination

* @param rideInfos all the rides that are available

*/

private void addRadioButton(RideInfo[] rideInfos) {

38
RadioGroup radioGroup= (RadioGroup)
findViewById(R.id.RadioButtonGroup);

RadioGroup.LayoutParams rprms; radioGroup.removeAllViews();

if(rideInfos.length>0)

for(int i=0;i<(rideInfos.length);i++){
RadioButton radioButton = new RadioButton(this); radioButton.setText("CAR
NO- " + rideInfos[i].getCar_Num() + " -
Source- " + rideInfos[i].getSource() + " -Destination- " +
rideInfos[i].getDestination() + " -Time- " + rideInfos[i].getRideTime());
radioButton.setId(i); rprms= new
RadioGroup.LayoutParams(RadioGroup.LayoutParams.WRAP_CONTENT,
RadioGroup.LayoutParams.WRAP_CONTENT);

radioGroup.addView(radioButton, rprms);

else

Toast.makeText(SearchActivity.this, "No Rides available to destination..


Please try again", Toast.LENGTH_SHORT).show();

39
 ACTIVITY HOME

<?xml version="1.0" encoding="utf-8"?>


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"

android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.example.sriharsha.carpool.HomeActivity"
android:background="#d9ffb3">

<Button

android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="Search Ride" android:id="@+id/btn_search"
android:layout_alignParentTop="true" android:layout_centerHorizontal="true"
android:layout_marginTop="96dp" />

<Button

android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="Offer Ride"android:id="@+id/btn_ofrRide"
android:layout_below="@+id/btn_search" android:layout_marginTop="36dp"
android:layout_alignLeft="@+id/btn_search"
android:layout_alignStart="@+id/btn_search"
android:layout_alignRight="@+id/btn_search"
android:layout_alignEnd="@+id/btn_search" />

<Button

android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="Log Out" android:id="@+id/btn_Logout"
android:layout_alignParentBottom="true"
android:layout_toRightOf="@+id/btn_ofrRide"
android:layout_toEndOf="@+id/btn_ofrRide"
android:layout_marginBottom="65dp" />

<Button
40
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="Update Profile" android:id="@+id/btn_Update"
android:layout_marginTop="33dp" android:layout_below="@+id/btn_ofrRide"
android:layout_centerHorizontal="true" />
</RelativeLayout>

41
9.SYSTEM TESTING:
This section introduces the concept of testing and how important is, for the
successful implementation of the project. Different of testing are along with the
level of testing incorporated in this particular project. Testing is vital to the
success of any system. Testing is done at different stage within the phase
.System testing makes a logical assumption that if all phases of the system are
correct, the goals will be achieved successfully. System provide the Functionality
that was expected.

System testing contain of the following steps:-

 Black box-

The technique of testing without having any knowledge of the interior workings of
the application is called black-box testing. The tester is oblivious to the system
architecture and does not have access to the source code. Typically, while
performing a black-box test, a tester will interact with the system's user interface
by providing inputs and examining outputs without knowing how and where the
inputs are worked upon.

 White box-

White-box testing is the detailed investigation of internal logic and structure of the
code.
White-box testing is also called glass testing or open-box testing. In order to
perform white-box testing on an application, a tester needs to know the internal
workings of the code.The tester needs to have a look inside the source code and
find out which unit/chunk of the code is behaving inappropriately.

 Unit Testing-

This type of testing is performed by developers before the setup is handed over
to the testing team to formally execute the test cases. Unit testing is performed
by the respective developers on the individual units of source code assigned
areas. The developers use test data that is different from the test data of the
quality assurance team.The goal of unit testing is to isolate each part of the
program and show that individual parts are correct in terms of requirements and
functionality.

42
 Alpha Testing-

This test is the first stage of testing and will be performed amongst the teams
(developer and QA teams). Unit testing, integration testing and system testing
when combined together is known as alpha testing. During this phase, the
following aspects will be tested in the application –
Spelling Mistakes Broken Links Cloudy Directions
The Application will be tested on machines with the lowest specification to test
loading times and any latency problems.

 Beta Testing-

This test is performed after alpha testing has been successfully performed. In
beta testing, a sample of the intended audience tests the application. Beta testing
is also known as pre- release testing. Beta test versions of software are ideally
distributed to a wide audience on the Web, partly to give the program a "real-
world" test and partly to provide a preview of the next release. In this phase, the
audience will be testing the following –
Users will install, run the application and send their feedback to the project team.
Typographical errors, confusing application flow, and even crashes.
Getting the feedback, the project team can fix the problems before releasing the
software to the actual users.
The more issues you fix that solve real user problems, the higher the quality of
your application will be.
Having a higher-quality application when you release it to the general public will
increase customer satisfaction.

43
10.SNAP SHOTS:
First of all the login column of the homepage was developed, which looks as
shown below:

 HOME PAGE:

44
 Email Validation Page

45
USER REGISTRATION

46
 OFFER RIDE ACTIVITY

47
 AVAILABLE RIDES

48
 SEARCH LOCATION

49
 CONFIRM LOCATION

50
 RIDE SELECTION

51
 EMAIL CONFIRMATION

52
11.FUTURE SCOPE OF THE PROJECT:

Nothing is perfect in this world. So, we are also no exception. Although, we have
tried our best to present the information effectively, yet, there can be further
enhancement in the Application. We have taken care of all the critical aspects,
which need to take care ofduring the development of the Project. Like the things
this project also has some limitations and can further be enhances by someone,
because there are certain drawbacks that do not permit the system to be 100%
accurate. The scope of this project is wholly on selecting the best possible system
for Pooling Buddy.

This Document plays a vital role in the development life cycle (SDLC) and it
describes the complete requirement of the system. It is meant for use by the
developers and will be the basic during testing phase. Any changes made to the
requirements in the future will have to go through formal change approval process.

 Extensibility:-This application is extendable in ways that its original


developers may not expect. The following principle enhances extensibility
like hide data structure, avoid traversing multiple links or methods, avoid
case statements on object type and distinguish public and private
operations.

 Reusability: Reusability is possible as and when require in this application.


We can update it next version. Reusable application reduces design, coding
and testing cost by amortizing effort over several designs. Reducing the
amount of code also simplifies understanding, which increases the
likelihood that the code is correct. We follow up both types of reusability:
Sharing of newly written code within a project and reuse of previously
written code on new project

 Understandability: A method is understandable if someone other than the


creator of the method can understand the code (as well as the creator after
a time lapse). We use the method, which small and coherent helps to
accomplish this.

 Cost-effectiveness: Its cost is under the budget and make within given
time period. It is desirable to aim for a system with a minimum cost subject
to the condition that it must satisfy the entire requirement.

53
12.SYSTEM FEATURES:

 The Pooling Buddy project using to provides pool vehicles to user.


 This project mainly creates for those people who has a thinking of save money
and aware about pooling .
 This project to maintain the decorum between 2 persons .
 The provides a facility to offer pool. By this shy people or introvert people has an
option to express their pool desire and they just can make some new buddies.

13.CONCLUSION:

This project will handle all the activity for Pooling . it can manage by admins works
like update in rides, update in students list etc.

Users can see there all activity about rides. They can see there live status of rides
which is going to start till destination.

Main purpose of this project is to provide better user interface to user so they can manage
everything about rides they want to take by our online platform.

All the objectives that had been charted out in the initial phases were achieved
successfully.

54
14.BIBLOGRAPHY:

o www.google.com

o www.wikipedia.org

o www.codeproject.com

o W3school.com

o https://developer.android.com

o https://stackoverflow.com

55

You might also like