Blackbook Final Report VVV
Blackbook Final Report VVV
PROJECT REPORT
ON
“PROJECT DEALING APLLICATION”
is a fulfillment of the Diploma in Computer Engineering department of Maharashtra
State Board of Technical Education, Mumbai during the academic year 2023-2024
By
1) Khedkar Vaishanvi Sudhakar
Enrollment no- 2007110620
Guided by:
Mrs.N.A.Inamadar
CERTIFICATE
This is to certify that, Khedkar Vaishanvi Sudhakar: (2007110620), Aade Pratiksha Dilip:
(2007110118) , Karuna Suresh adsule:(2107110453), Prajakta Yashvant
dodatale:(2107110686) are studying in Diploma in Computer Engineering and they have
successfully completed and submitted the Project entitled “PROJECT DEALING
APLLICATION”. This study is afulfillment of the Diploma in Computer Engineering of
Maharashtra State Board of TechnicalEducation, Mumbai during the academic year 2023-
2024.
(External Examiner)
ACKNOWLEDGEMENT
This has been the light of the day due to invaluable contribution of certain
individuals whose constant guidance, support and encouragement resulted in the realization
of our project.
S.A.Kaulage, Vice principal and Head of Computer Department, Mr. M. S. Kalbande for
providing us the necessary help and encouragement whenever we needed, which has
We would also like to thank all the staff members of our department without
whose constructive suggestions and valuable advice, the simple idea, which had born by us,
would not have been able to blossom forth to give such a beautiful bloom. Last but not the
least we are grateful to all our friends, and our parents for their direct or indirect constant moral
1 INTRODUCTION
1
2 LITERATURE SURVEY
2
3 SCOPE OF PROJECT
3
4 REQUIREMENT ANALYSIS (HARDWARE
AND SOFTWARE REQUIREMENT)
4
5 METHODOLOGY USED IN PROJECT
5
6 DETAILS OF DESIGN, WORKING AND
PROCESS
6
7 IMPLEMENTATION AND CODING
9
8 TESTING
28
9 SCREENSHOTS
28
10 RESULTS AND APPLICATION
28
11 CONCLUSION
30
12 FUTURE SCOPE
31
13 REFERENCES
32
ABSTRACT
The Project Dealing Application is a comprehensive mobile solution encompassing features such as
project upload, project request, customization options, login/signup, website and Android project
categorization, order details, profile management, and project status tracking. This synopsis outlines
the essential components and methodology employed for the successful implementation of this
application.
The Project Dealing Application aims to address these challenges by providing a comprehensive and
user-centric mobile solution that centralizes project dealings, enhances communication, offers
customization options, improves project categorization, provides real-time status tracking, and
prioritizes security. The solution endeavors to streamline project management, foster collaboration,
and deliver a seamless user experience for all stakeholders involved in project dealings.
The Project Dealing Application is a mobile solution designed to streamline project-related activities,
providing users with a comprehensive set of features to manage various aspects of project dealings.
Let's break down the key components and methodology employed in the implementation of this
application:
INTRODUCTION
In today's rapidly evolving educational landscape, students often face challenges in completing academic
projects due to various constraints such as time limitations, resource availability, and academic pressures.
To address this need, we present an innovative solution—a dedicated platform designed to facilitate the
buying and selling of academic projects among students.
Our platform serves as a marketplace where students can easily discover, purchase, and sell high-quality
academic projects across a wide range of subjects and disciplines. Whether it's a research paper,
presentation, coding project, or creative assignment, our platform provides a convenient and reliable
avenue for students to access supplementary resources and support their academic endeavors.
The concept of buying and selling academic projects may raise questions regarding academic integrity and
ethical considerations. However, our platform is built upon a foundation of transparency, integrity, and
collaboration. We recognize that academic projects can serve as valuable learning tools and sources of
inspiration when used responsibly and ethically. Therefore, our platform encourages users to uphold
academic integrity and adhere to ethical standards in all transactions.
1
LITERATURE SURVEY
Title: "An Online Marketplace for Academic Projects: Design, Implementation, and Evaluation"
Title: "Exploring Peer-to-Peer Platforms for Academic Resource Sharing: A Case Study of Project
Marketplaces"
Title: "User Engagement and Satisfaction in Online Platforms for Academic Project Trading: A Comparative
Study"
Title: "Integrating Blockchain Technology for Authenticating Academic Projects: A Case Study Approach"
2
SCOPE OF PROJECT
Enable students to collaborate on academic projects within the platform by forming project groups and
sharing resources.
Implement features for real-time collaboration, such as document editing, version control, and discussion
boards.
Introduce a feature for students to offer tutoring or mentoring services related to academic projects.
Allow users to schedule virtual tutoring sessions, provide feedback on drafts, and offer guidance on project
completion.
By incorporating these future scopes and additional features, the platform can evolve into a comprehensive
ecosystem that not only facilitates the buying and selling of academic projects but also fosters collaboration,
learning, and professional development among students and educators.
3
REQUIREMENT ANALYSIS
Hardware Requirements: -
Software Requirements: -
Android Studio
Android SDK (Software Development Kit):
Version control system
Kotlin
Windows operating system
4
METHODOLOGY USED IN PROJECT
2) Scalability:The application is designed to handle a growing user base and increasing data load,
ensuring robustness and responsiveness. Scalability methodology is a way to measure how well a
system can increase or decrease in performance and cost in response to changes in application and
system processing demands. For example, you can measure how well a hardware system performs
when the number of users increases, or how well a database can withstand growing numbers of
queries
3) Security measures: Strong security protocols are implemented to protect user data and resist
potential security threats. Security architecture methodology includes physical protection, network
security, message-level security, and application-level security. It should also include security in the
form of authorization, privacy, policy, trust, and secure conversation.
5
Designing of the project
UML Diagram
6
7
Usecase Diagram
8
IMPLEMENTATION AND CODING
package com.guruprasad.pdauser.Activities.Android
import android.annotation.SuppressLint
import android.content.Context
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.LayoutInflater
import android.widget.ImageButton
import android.widget.ImageView
import androidx.appcompat.app.AlertDialog
import com.bumptech.glide.Glide
import com.firebase.ui.database.FirebaseRecyclerOptions
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.database.DataSnapshot
import com.google.firebase.database.DatabaseError
import com.google.firebase.database.FirebaseDatabase
import com.google.firebase.database.ValueEventListener
import com.guruprasad.pdauser.Adapter.ProjectImagesAdapter
import com.guruprasad.pdauser.Constants.Constants
import com.guruprasad.pdauser.Constants.CustomDialog
import com.guruprasad.pdauser.Constants.WrapContentLinearLayoutManager
import com.guruprasad.pdauser.Model.OrderModel
import com.guruprasad.pdauser.Model.UserModel
import com.guruprasad.pdauser.Models.UploadProjectModel
9
import com.guruprasad.pdauser.R
import com.guruprasad.pdauser.databinding.ActivityAndroidProjectDetailsBinding
import com.guruprasad.projectdealingapp.Models.ProjectImagesModel
import com.razorpay.Checkout
import com.razorpay.PaymentResultListener
import org.json.JSONObject
import java.util.UUID
database = FirebaseDatabase.getInstance()
auth = FirebaseAuth.getInstance()
10
database.reference.child("Android").child(projectId).addValueEventListener(
object : ValueEventListener {
@SuppressLint("SetTextI18n")
override fun onDataChange(snapshot: DataSnapshot) {
if (snapshot.exists())
{
val model = snapshot.getValue(UploadProjectModel::class.java)
if (model!=null)
{
if (!isDestroyed)
{
Glide.with(this@AndroidProjectDetails).load(model.logo).placeholder(R.mipmap.logo).into(binding.lo
go)
}
loading.dismiss()
binding.title.text = model.title
binding.description.text = model.description
binding.feature.text = model.features
binding.price.text ="${model.price} INR"
binding.category.text = model.category
binding.logo.setOnClickListener {
showImageDialog(model.logo.toString(),this@AndroidProjectDetails)
}
binding.buynow.setOnClickListener {
GetUserData(model)
11
package com.guruprasad.pdauser.Activities.Android
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.firebase.ui.database.FirebaseRecyclerOptions
import com.google.firebase.database.DatabaseError
import com.google.firebase.database.FirebaseDatabase
import com.guruprasad.pdauser.Constants.Constants
import com.guruprasad.pdauser.Constants.CustomDialog
import com.guruprasad.pdauser.Constants.WrapContentLinearLayoutManager
import com.guruprasad.pdauser.Models.UploadProjectModel
import com.guruprasad.pdauser.R
import com.guruprasad.pdauser.databinding.ActivityShowAndroidProjectBinding
import com.guruprasad.projectdealingapp.Adapter.AndroidProjectAdapter
import com.guruprasad.projectdealingapp.Adapter.WebsiteProjectAdapter
binding = ActivityShowAndroidProjectBinding.inflate(layoutInflater)
setContentView(binding.root)
12
val loading = CustomDialog(this@ShowAndroidProject)
loading.show()
database = FirebaseDatabase.getInstance()
binding.actionBar.activityName.text = "Android Projects"
binding.actionBar.backButton.setOnClickListener{
finish()
}
binding.recView.layoutManager = WrapContentLinearLayoutManager(this@ShowAndroidProject)
UploadProjectModel::class.java).build()
super.onDataChanged()
loading.dismiss()
super.onError(error)
loading.dismiss()
13
}
super.onStart()
adapter.startListening()
adapter.stopListening()
}
package com.guruprasad.pdauser.Activities.Order
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.bumptech.glide.Glide
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.database.DataSnapshot
import com.google.firebase.database.DatabaseError
import com.google.firebase.database.FirebaseDatabase
import com.google.firebase.database.ValueEventListener
import com.guruprasad.pdauser.Constants.Constants
import com.guruprasad.pdauser.Constants.CustomDialog
import com.guruprasad.pdauser.Model.OrderModel
import com.guruprasad.pdauser.Models.UploadProjectModel
import com.guruprasad.pdauser.R
import com.guruprasad.pdauser.databinding.ActivityOrderDetailsBinding
14
class OrderDetails : AppCompatActivity() {
super.onCreate(savedInstanceState)
binding = ActivityOrderDetailsBinding.inflate(layoutInflater)
setContentView(binding.root)
loading.show()
binding.actionBar.backButton.setOnClickListener{
finish()
}
database = FirebaseDatabase.getInstance()
auth = FirebaseAuth.getInstance()
database.reference.child("Orders").child(auth.currentUser!!.uid).child(orderId)
.addValueEventListener(
object : ValueEventListener
15
override fun onDataChange(snapshot: DataSnapshot) {
if (snapshot.exists())
loading.dismiss()
binding.paymentStatus.text = model.paymentStatus
binding.orderStatus.text = model.orderStatus
binding.orderId.text = model.orderId
binding.paymentId.text = model.paymentId
binding.category.text = model.projectCategory
}
}
}
database.reference.child(category).child(projectId)
.addValueEventListener(
16
object :ValueEventListener{
{
val model = snapshot.getValue(UploadProjectModel::class.java)
if (model!=null)
loading.dismiss()
if (!isDestroyed)
Glide.with(this@OrderDetails).load(model.logo).into(binding.image)
binding.projectName.text = model.title
}
super.onBackPressed()
finish()
17
package com.guruprasad.pdauser.Activities.Profile
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.database.DataSnapshot
import com.google.firebase.database.DatabaseError
import com.google.firebase.database.FirebaseDatabase
import com.google.firebase.database.ValueEventListener
import com.google.protobuf.Value
import com.guruprasad.pdauser.Constants.Constants
import com.guruprasad.pdauser.Constants.CustomDialog
import com.guruprasad.pdauser.Model.UserModel
import com.guruprasad.pdauser.R
import com.guruprasad.pdauser.databinding.ActivityEditProfileBinding
super.onCreate(savedInstanceState)
binding = ActivityEditProfileBinding.inflate(layoutInflater)
setContentView(binding.root)
18
database = FirebaseDatabase.getInstance()
auth = FirebaseAuth.getInstance()
binding.actionBar.backButton.setOnClickListener{
finish()
database.reference.child("Customer").child(auth.currentUser!!.uid)
.addValueEventListener(object : ValueEventListener{
if (snapshot.exists())
{
if (model!=null)
{
loading.dismiss()
binding.name.setText(model.name)
binding.phone.setText(model.phone)
binding.address.setText(model.address)
}
}
loading.dismiss()
}
19
binding.edit.setOnClickListener {
if (validate(name,phone,address))
{
loading.show()
updateDatabase(name,phone,address,loading)
}
}
private fun updateDatabase(name: String, phone: String, address: String, loading : CustomDialog) {
map["name"] = name
map["phone"]=phone
map["address"]=address
database.reference.child("Customer").child(auth.currentUser!!.uid).updateChildren(map)
.addOnCompleteListener{update->
if (update.isSuccessful)
{
startActivity(Intent(this@EditProfile,ShowProfile::class.java))
20
loading.dismiss()
else
{
Constants.error(this@EditProfile,"Failed to update the profile")
loading.dismiss()
}
}
if (name.isEmpty())
return false
if (phone.isEmpty())
{
binding.phone.error = "Please enter the phone No"
return false
if (phone.length !=10)
{
return false
21
if (address.isEmpty())
{
binding.address.error = "Please enter the address"
return false
return true
super.onBackPressed()
finish()
}
package com.guruprasad.pdauser.Activities.Profile
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.bumptech.glide.Glide
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.database.DataSnapshot
import com.google.firebase.database.DatabaseError
import com.google.firebase.database.FirebaseDatabase
import com.google.firebase.database.ValueEventListener
import com.guruprasad.pdauser.Constants.Constants
import com.guruprasad.pdauser.Constants.CustomDialog
import com.guruprasad.pdauser.Model.UserModel
import com.guruprasad.pdauser.R
22
import com.guruprasad.pdauser.databinding.ActivityShowProfileBinding
binding = ActivityShowProfileBinding.inflate(layoutInflater)
setContentView(binding.root)
loading.show()
database = FirebaseDatabase.getInstance()
auth = FirebaseAuth.getInstance()
binding.actionBar.activityName.text = "Profile"
binding.actionBar.backButton.setOnClickListener{
finish()
}
database.reference.child("Customer").child(auth.currentUser!!.uid).addValueEventListener(
object : ValueEventListener{
override fun onDataChange(snapshot: DataSnapshot) {
if (snapshot.exists())
{
val model = snapshot.getValue(UserModel::class.java)
23
{
loading.dismiss()
if (!isDestroyed)
{
Glide.with(this@ShowProfile).load(model.profile_Pic).into(binding.image)
}
binding.name.text = model.name
binding.email.text = model.email
binding.phone.text = model.phone
binding.address.text = model.address
binding.id.text = model.userId
}
}
loading.dismiss()
}
binding.edit.setOnClickListener{
startActivity(Intent(this@ShowProfile,EditProfile::class.java))
24
}
super.onBackPressed()
finish()
}
}[7:49 PM, 3/18/2024] Guruprasad Bhagat: package com.guruprasad.pdauser.Activities.Status
import android.graphics.Color
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.database.DataSnapshot
import com.google.firebase.database.DatabaseError
import com.google.firebase.database.FirebaseDatabase
import com.google.firebase.database.ValueEventListener
import com.guruprasad.pdauser.Constants.Constants
import com.guruprasad.pdauser.Constants.CustomDialog
import com.guruprasad.pdauser.Model.RequestModel
import com.guruprasad.pdauser.R
import com.guruprasad.pdauser.databinding.ActivityShowRequestDetailsBinding
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.guruprasad.pdauser.Activities.Android.ShowAndroidProject
import com.guruprasad.pdauser.Activities.CustomProject.ProjectRequestActivity
import com.guruprasad.pdauser.Activities.Order.ShowOrders
import com.guruprasad.pdauser.Activities.Profile.ShowProfile
import com.guruprasad.pdauser.Activities.Status.ShowRequest
import com.guruprasad.pdauser.Activities.Website.ShowWebProjects
import com.guruprasad.pdauser.R
import com.guruprasad.pdauser.databinding.ActivityHomeBinding
super.onCreate(savedInstanceState)
binding = ActivityHomeBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.website.setOnClickListener{
startActivity(Intent(this@HomeActivity,ShowWebProjects::class.java))
binding.android.setOnClickListener {
startActivity(Intent(this@HomeActivity,ShowAndroidProject::class.java))
26
startActivity(Intent(this@HomeActivity,ProjectRequestActivity::class.java))
binding.order.setOnClickListener {
startActivity(Intent(this@HomeActivity,ShowOrders::class.java))
binding.profile.setOnClickListener {
startActivity(Intent(this@HomeActivity,ShowProfile::class.java))
binding.status.setOnClickListener {
startActivity(Intent(this@HomeActivity,ShowRequest::class.java))
27
SCREENSHOTS:
28
29
CONCLUSION
The Project Dealing Application represents a significant step forward in addressing the challenges associated
with contemporary project management and dealings. Our platform serves as a marketplace where
students can easily discover, purchase, and sell high-quality academic projects across a wide range of
subjects and disciplines.
30
FUTURE WORK
Explore the integration of blockchain technology for secure credentialing and verification of academic
projects.Enable users to securely store and share digital certificates or badges attesting to their project
contributions and achievements.
31
REFERENCES
https://www.youtube.com/
https://www.chatgpt.com/
Android Programming: The Big Nerd Ranch
Guide" –By Phillips, Chris Stewart, and Kristin
Marsicano
Kotlin Programming: The Big Nerd Ranch
Guide"–By Josh Skeen and David Greenhalgh
32