Shree Swaminarayan College of
Shree Swaminarayan College of
UNDER GUIDANCE OF
Mr. Parthiv Andharia
SUBMITED TO
FOR DEGREE OF
Bachelor of Computer Applications
3. System design
3.1 Over all System design using designing Tools 16
3.2 Data Flow Diagram(DFD) 18
3.3 E-R Diagram 21
3.4 Data Dictionary 23
3.5 Input /Output Design 26
5. Conclusion
5.1 Conclusion 45
5.2 Limitation of system 46
5.3 Future Scope of system 46
5.4 Bibliography 47
Acknowledgement
Every work that one complete successfully on the constant encouragement, goodwill and support
of the people around. We, hereby, avail this opportunity to express our heartfelt gratitude to a
number of people who extended their valuable time, full support and cooperation in developing
this project. We convey our heartfelt gratitude to our collage "Shree Swaminarayan College of
Computer Science" for giving us this precious opportunity to work for the real-time project.
I wish to express my deep sense of gratitude and honour toward head of Maharaja
Krishnakumarsinhji Bhavnagar University for given chance me to work with study. We are
thankful to our principal Mr. Paresh Rathod and H.O.D Mr. Kalpesh Gundigara for his guidance
and encouragement and also for providing necessary facilities to complete our project and
implement in right way.
We would like to acknowledge by thanking each and every individual who guided us in making
this project. First we would like to thank our guide Ms. Kinjal Sarvaiya who led us on how to
complete this project. This project would have been impossible without their continuous
encouragement and trust in our project ideas. She is one of the major sources behind the success
of the project.
Finally, yet importantly, we would like to express our heartfelt thanks to our beloved Parents for
their blessings, our Friends/Classmates for their help and wishes for the successful completion of
this project.
PreFace
It has been stated, each long journey starts with a little step now a day. The world becomes
complex and going towards direction of computerization so the Bhavnagar University has
included project and industrial study as a part of B.C.A course.
Today's competitive market works on current market technologies. Therefore it is necessary that
the system developed by you should be based on that technology.
Now a day, computers are used in all most all fields. We hardly find any field that does not make
use of computers. This it says that the working method of people has changed a lot from ancient
times to today's fast and efficient widely used technology.
Computers are finding an important place in all fields because of its user friendly so establish
yourself in this market you need to design the system in such a way that they don't find any
difficulty to the extent possible. This is probably one of the most difficult tasks for the
developers also the system must adapt to new skills that are friendliness and practical usefulness
is taken into account. I strongly believe that this report will be helpful in guiding the user about
our system and making them feel comfortable while working with the system.
Introduction
1.1 Background :
In today’s digital world, people manage a vast number of personal and professional
contacts.However, default contact apps often lack advanced features such as
categorization, favorites management, and in-app contact storage.
Store contacts privately within the app (without syncing with Google Contacts).
Categorize contacts into groups like Public, Private, and Friends.
Mark contacts as favorites for quick access.
Search contact easily.
1.2 Objective :
1.Implement CRUD Operations – Enable users to Create, Read, Update, and Delete
contacts.
2. Categorize Contacts into Groups – Allow users to assign contacts to Public, Private,
and friendsgroups.
5. Store & Retrieve Contact Images – Support profile picture storage using
ByteArray in SQLite.
Purspose:
The Contact Management System is designed to provide users with a personalized, efficient, and
feature-rich contact management solution that operates independently of cloud-based services.
Unlike traditional phone contact apps, this system allows users to:
Store contacts locally using SQLite for offline access.
Categorize contacts into groups like Public, Private, and Friends.
Mark important contacts as favorites for quick retrieval.
Search and filter contacts efficiently.
Scope:
Contact Management:
1.5 Applicability :
The Contact Management System is applicable in various real-world scenarios where users
need an efficient, organized, and private way to store and manage their contacts. Below are
some key areas where this project can be useful:
Organized Contact Storage – Users can store their contacts in a structured way with
groups like Public, Private, and Friends.
Favorites Section – Frequently contacted people can be marked as favorites for quick
access.
Efficient Search & Filtering – Helps users quickly find contacts without scrolling
through long lists.
Offline Access – Since data is stored locally in SQLite, users can access contacts even
without the internet.
Group-Based Organization – Store VIP clients, potential leads, or regular customers
separately.
Image Storage for Identification – Helps businesses store customer profile pictures
for better recognition.
Why SDLC?
1. SDLC ensures a structured and systematic approach to software development.
2. It helps in better planning, designing, and testing of the software.
3. It enables effective project management and tracking.
4. It minimizes the risks and errors during the development phase.
5. It improves the quality of the final product and ensures customer satisfaction.
SDLC for Contact Management System in Android Studio with Kotlin and
SQLite
For developing a Contact Management System in Android Studio using Kotlin and SQLiteDatabase, SDLC
provides a clear roadmap through the following phases:
1. **Requirement Analysis**: Understanding and gathering the features needed in the contact
management system such as adding, editing, deleting contacts, and using SQLite for storage.
2. **Planning**: Creating a development plan, estimating time, cost, and resources.
3. **Design**: Designing the UI using XML layouts and database schema using SQLite.
4. **Implementation**: Writing the actual Kotlin code in Android Studio to implement the desired
features.
5. **Testing**: Verifying the app functionality, performing unit tests, and UI testing to ensure
everything works correctly.
6. **Deployment**: Launching the application for use on Android devices.
7. **Maintenance**: Updating the app based on user feedback and fixing any bugs that arise post-
deployment.
Solution :
CRUD Operations – Allow users to add, update, delete, and retrieve contacts.
Favorites Section – Mark contacts as favorites and display them in
FavoriteFragment.
Group-Based Organization – Store contacts in Public, Private, and Friends
categories in GroupFragment.
SQLite Database for Offline Storage – No internet required, ensuring data
privacy and accessibility.
Efficient Search & Filtering – Users can search by name, phone number, or
group.
Bottom Navigation for Easy Access – Seamless navigation between Contacts,
Favorites, and Groups.
Image Storage with SQLite – Allows users to store profile pictures efficiently.
Contact Management
Users should be able to add, edit, delete, and view contacts.
Contact details should include name, phone number, email, and profile image.
Contacts should be stored locally in SQLite database for offline access.
Favorites Feature
Image Handling
Navigation & UI
Permissions Management
Performance
Usability
Contacts should be stored locally in SQLite (no cloud sync for privacy).
The system should not share contact data with third-party apps.
Reliability
The app should ensure data persistence (contacts should not be lost after closing the
app).
It should handle app crashes and errors gracefully.
Software Requirements
Hardware Requirements
1. Planning
2. Requirement Analysis
3. System Design
4. Implementation (Development)
5. Testing
6. Deployment
Phase Days
Analysis 10 days
Designing 30 days
Coding 20 days
Testing 10 days
Implementation 10 days
Documentation 10 days
System Design
Android Studio
Debugging Tools: Debug your app line by line, set breakpoints, and inspect
variables.
Other Notable Features:
Kotlin and Java Support: Develop apps using either Kotlin or Java, or a
combination of both.
A Data Flow Diagram (DFD) is a graphical representation of how data flows through a
system.
It visualizes inputs, processes, and outputs, making it easier to understand system
functionality.
The ER Diagram represents the database structure of the Contact Management System
with entities, attributes, and relationships.
E-R Diagram
Contact Table :
Favourite Table :
Group Table :
Output Design:
Input Design :
This will show an fragment page or an userInterface where you can enter
name,lastnae,phoneNumber,email and it’s group from public,private and friends.
Here Created_At is for time and date which is not much use.
Edit Contact :
It may or may not change it real time but any changes can be made.
Delete Design
You can delete any contact you want without any difficulty.
Group Output :
As you can see in group fragment shows the data of any particular group or category.
You can edit,delete or add to favorite contact if you wish in groupFragment.
This shows data which are private group related.
You can select the group category and you can see that particular category data from all entered
contact.
As you can see in group fragment shows the data of any particular group or category.
You can edit,delete or add to favorite contact if you wish in groupFragment.
This shows data which are public group related.
You can select the group category and you can see that particular category data from all entered
contact.
As you can see in group fragment shows the data of any particular group or category.
You can edit,delete or add to favorite contact if you wish in groupFragment.
This shows data which are friend group related.
You can select the group category and you can see that particular category data from all entered
contact
Favorite Output
You can select any favourite contact from favoriteFragment which display only favorite contact
of yours without any difficulty.
You can add to favorite or remove from any three fragment and you can also delete from any
three fragment.
But search by using phone number is not included because of condition error.
Here you give the permission to Read/Write your contact information of each
people and make changes such as image edit,name edit and etc.
But you cannot change the phone number once you saved that phone number.
This permission helps you to access data such as image to be set during adding an
new contact.
Proactive : -
o This approach defines amd presents the approach or way to carry out the testing
procedures,as soon as possible,even before the development of the initial software
build.
o The said technique may be seen as a preventive approach,in order to find and fix
defects
Reactive : -
o Reactive Testing is a dynamic testing approach where tests are adapted based on
real-time application behavior.
o Instead of predefining all test cases upfront, test strategies evolve as issues
emerge, making it highly effective for event-driven and interactive
applications like a Contact Management System.
Testing Methods :-
What is testing?
Black Box Testing is a software testing technique where the tester evaluates the
functionality of an application without knowing its internal code, logic, or
structure. The focus is on input and output rather than the internal workings.
White Box Testing is a software testing technique where the tester evaluates the
internal structure, logic, and code of the application. Unlike Black Box Testing,
3.Unit Testing
4.Integrated Testing
5.System Testing
6.Acceptance Testing
Case 1 :
Test Case ID 1
Module Contact Addition
Test Scenario Add a new contact with valid details
Test Steps Open the app.
Click add contact
Enter name,phone number etc
Click save
Case 2:
Test Case ID 2
Module Contact Addition
Test Scenario Try adding a contact without a name
Test Steps Open the app.
Leave name empty
Fill phone number etc
Click save
Case 3:
Test Case ID 3
Module Contact Addition
Test Scenario Try adding a contact with an invalid
number or empty.
Test Steps Open the app.
enter name empty
leave phone number empty or invalid
Case 4:
Test Case ID 4
Module Contact Addition
Test Scenario Delete a contact from the list
Test Steps Open contacts list.
Click on delete icon design
Click save
Case 5:
Test Case ID 5
Module Favourite Feature
Test Scenario Mark a contact as favorite
Test Steps Open contact list.
Select a contact
Click favorite
Test Case ID 6
Module Favourite Feature
Test Scenario Unmark a contact as favorite
Test Steps Open favorites list.
Select a contact
Click unfavorite
Case 7:
Test Case ID 7
Module groups Feature
Test Scenario Unmark a contact as favorite
Test Steps Open contacts list.
Select a contact
Click assign to group
Choose friends/public/private
Case 8:
Test Case ID 8
Module groups Feature
Test Scenario Remove a contact from a group.
Test Steps Open group list.
Select a group
Remove a contact
Case 9:
Test Case ID 9
Module Search
Case 10:
Test Case ID 10
Module Search
Test Scenario Search contact does not exist
Test Steps Open a search bar
Type a random name
Press enter
Case 11:
Test Case ID 11
Module Permissions
Test Scenario Deny Contact Read/Write Permission
Test Steps Install the app
Deny contact permission
Try accessing contact List
Test Case ID 12
Module Permissions
Test Scenario Grant permission to read/write contact
Test Steps Install the app
allow contact permission
access Contacts List
Case 13:
Test Case ID 13
Module Filter
Test Scenario Filter contacts by group
Test Steps open filter menu
select a group
view filtered contacts
Case 14:
Test Case ID 14
Module Navigation
Test Scenario Open the app and navigate to contact list
Test Steps open the app
click the contacts tab
Case 15:
Case 16:
Test Case ID 16
Module Navigation
Test Scenario Open the group contacts tab
Test Steps open the app
click on group tab
The implementation of the Contact Management System in Android Studio using Kotlin
follows different approaches to ensure a structured, scalable, and efficient application. Below are
the main implementation approaches:
Why MVVM?
Component Purpose
Model Represents data (Contact entity, database)
View UI layer (XML layouts, Fragments)
ViewModel Manages UI-related data and business logic
Why Room?
Component Purpose
Defines database
Entity (Contact.kt)
table structure
Manages database
DAO (ContactDao.kt)
operations
Database Creates Room
(ContactDatabase.kt) database instance
UI Component Description
Used for switching between Contact, Favorite, and Group
Bottom Navigation
Fragments
Floating Action Button
Adds new contacts
(FAB)
SearchView Filters contacts
CardView & RecyclerView Displays contacts
Method Description
Convert Image to ByteArray Stores image in the database
Convert ByteArray to Image Retrieves image from the database
Approach:
Feature Implementation
Search by Name `SELECT * FROM contacts WHERE name LIKE '%'
Filter by Group SELECT * FROM contacts WHERE groupType = :selectedGroup
Permissions Used:
Step Implementation
Request permission ActivityCompat.requestPermissions()
Check permission ContextCompat.checkSelfPermission()
Handle result onRequestPermissionsResult()
7. Testing Approach
Manual Testing:
Conclusion
5.1 Conclusion
The Contact Management System developed in Android Studio using Kotlin successfully implements
CRUD operations, favorites, group management, search, and image handling.
This application follows the MVVM architecture, utilizes Room Database for efficient storage, and
incorporates Jetpack components for modern UI development.
1. Efficient Contact Handling – Users can add, edit, delete, and search contacts easily.
2. Favorites & Groups Feature – Allows organizing contacts based on priority or category.
3. Robust Database Implementation – Uses Room Database for structured data
management.
4. Optimized UI & Navigation – Implements Bottom Navigation, RecyclerView, and
SearchView.
5. Secure & Permission-Controlled – Uses Android Runtime Permissions to ensure data
security.
6. Performance & Scalability – Supports large contact lists with smooth UI rendering.
7. Testing & Reliability – Implemented manual and automated testing (JUnit, Espresso)
for stability.
8. The Contact Management System developed using Android Studio with Kotlin and
SQLite provides a reliable and user-friendly solution for efficiently managing personal
and professional contacts.
o Sync contacts with Google Drive, Firebase, or a cloud database for backup &
multi-device access.
5.Biblography
https://chatgpt.com/
https://github.com/
https://www.microsoft.com/
https://androidknowledge.com/