Hadendocsfinal
Hadendocsfinal
Hadendocsfinal
CSE
Department of Artificial Intelligence and
Data Science Methodist College of
Engineering and Technology, King Koti,
Abids, Hyderabad-500001.
2024-2025
Methodist College of Engineering and
Technology, King Koti, Abids, Hyderabad-
500001.
Department of Artificial Intelligence and Data
Science
K. N IH A N T H
(160722747057)
S.HARSH(16072274704
8)
B.DESHIK(160721747052
)
Methodist College of Engineering and
Technology, King Koti, Abids, Hyderabad-
500001.
Department of Artificial Intelligence and Data
Science
Mrs A. Sowjanya
Assistant Professor
Date:
King Koti, Abids, Hyderabad-500001.
Date:
ACKNOWLEDGEMNTS
We would like to express our sincere gratitude to my project
guide Mrs A. Sowjanya, Assistant Professor, for giving us the
opportunity to work on this topic. It would never be possible for us
to take this project to this level without her innovative ideas and
her relentless support and encouragement.
Our sincere thanks to Dr. P. Lavanya, Professor and Head
of the Department of Computer Science and Engineering,
for her valuable guidance and encouragement which has played
a major role in the completion of the project, and for helping us
by being an example of high vision and pushing towards greater
limits of achievement.
We would like to express a deep sense of gratitude towards Dr.
Prabhu G Benakop, Principal, of Methodist College of
Engineering and Technology, for always being an inspiration
and for always encouraging us in every possible way.
We would like to express a deep sense of gratitude towards Dr.
Lakshmipathi Rao, Director of, Methodist College of
Engineering and Technology, for always being an inspiration
and for always encouraging us in every possible way.
We are indebted to the Department of Computer Science &
Engineering and Methodist College of Engineering and Technology for
providing us with all the required facilities to carry out our work in
a congenial environment. We extend our gratitude to the CSE
Department staff for providing us with the needful time to time
whenever requested.
We would like to thank our parents for allowing us to realize our
potential, all the support they have provided us over the years was the
greatest gift anyone has ever given us and also for teaching us
the value of hard work and education. Our parents have offered
us tremendous support and encouragement, thanks to our
parents for all the moral support and the amazing opportunities
they have given us over the years.
ABSTRACT
This project presents the development of a
comprehensive student dashboard mobile application
designed to enhance academic management and student
engagement in the college environment. The application,
developed using Android Studio and implementing
Material Design principles, provides students with a centralize
platform to access essential academic information and services.
Key features include real-time grade tracking, course schedule
management, attendance monitoring, and direct
communication channels with faculty members.
FEATURES
1.User-Friendly Interface:
o A clean, intuitive design ensures
o In-app purchases
6. HARDWARE REQUIREMENTS
1. Processor: Dual-core or higher.
2. RAM: Minimum 4 GB.
3. Storage: At least 5 GB of free space.
4. Android Device/Emulator: For testing the app.
7. SYSTEM ARCHITECTURE
2. Data Flow
Dashboard:
o Serves as the entry point, allowing users to access notes
and flashcards.
o Provides an overview of user-specific content via
Quick Access Widgets.
Notes Module:
o Users can create and organize notes using the Text Editor
and Organization Tools.
o Notes can be used to generate flashcards, connecting
the Notes and Flashcards modules.
Flashcards Module:
4. Design Principles
Modularity: The system is divided into interconnected modules
(Dashboard, Notes, Flashcards) that can operate independently
or together.
User-Centric Design: Prioritizes accessibility and
personalized learning tools.
Scalability: The architecture allows for future expansions, such
as integrating advanced analytics or new features.
7. a. ALGORITHM
import android.os.Bundle
import
com.google.android.material.bottomnavigation.BottomNavigationView
import androidx.appcompat.app.AppCompatActivity
import androidx.navigation.findNavController import
androidx.navigation.ui.AppBarConfiguration import
androidx.navigation.ui.setupActionBarWithNavControlle
r import androidx.navigation.ui.setupWithNavController
import
com.example.haden.databinding.ActivityHomeBinding
ActivityHomeBinding
binding = ActivityHomeBinding.inflate(layoutInflater)
setContentView(binding.root)
//
setupActionBarWithNavController(navController,
appBarConfiguration)
navView.setupWithNavController(navController)
}
}
8 b. LOGIN ACTIVITY
package com.example.haden
binding.createBtn.setOnClickListener {
startActivity(Intent(this@LoginActivity,
SignUpActivity::class.java))
}
binding.loginBtn.setOnClickListener
{ val email =
binding.email.editText?.text.toString().trim
() val password =
binding.pass.editText?.text.toString().trim()
if (email.isEmpty() || password.isEmpty()) {
Toast.makeText(this, "Please fill in both
email and password", Toast.LENGTH_SHORT).show()
return@setOnClickListener
}
if (!isValidEmail(email)) {
Toast.makeText(this, "Invalid email
address format", Toast.LENGTH_SHORT).show()
return@setOnClickListener
}
// Attempt to login with Firebase
auth.signInWithEmailAndPassword(email, password)
.addOnCompleteListener(this) { task
-> if (task.isSuccessful) {
// Sign in success, update UI with
the signed-in user's information
startActivity(Intent(this@LoginActivity,HomeActivity::class
.j ava))
finish()
} else {
// If sign in fails, display a message
the to
user.
val exception =
task.exception if (exception
is
FirebaseAuthInvalidCredentialsException) {
Toast.makeText(this, "Invalid
credentials. Please check your email and password.",
Toast.LENGTH_LONG).show()
} else if (exception is
FirebaseAuthInvalidUserException) {
if ((exception as
FirebaseAuthInvalidUserException).errorCode ==
"ERROR_USER_NOT_FOUND") {
Toast.makeText(this, "No account
found for this email. Please register first.",
Toast.LENGTH_LONG).show()
} else {
Toast.makeText(this,
exception.localizedMessage, Toast.LENGTH_LONG).show()
}
} else {
// Handle other exceptions
Toast.makeText(this, "Authentication
failed: ${exception?.localizedMessage}",
Toast.LENGTH_LONG).show()
}
}
}
}
8 c. HOME FRAGMENT
package com.example.haden.fragments
view.findViewById<CardView>(R.id.todolist)?.setOnClickLi
stene r {
val intent = Intent(requireContext(),
ToDoListActivity::class.java)
startActivity(intent) // Removed
FLAG_ACTIVITY_NEW_TASK
}
view.findViewById<CardView>(R.id.schedule)?.setOnClickLi
stene r {
val intent = Intent(requireContext(),
ScheduleActivity::class.java)
startActivity(intent)
}
view.findViewById<CardView>(R.id.videosummary)?.setOnClickL
is tener {
val intent = Intent(requireContext(),
VideoSummaryActivity::class.java)
startActivity(intent)
}
8 d. NOTES FRAGMENT
package com.example.haden.fragments
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Button
import android.widget.EditText
import androidx.fragment.app.Fragment
import
androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.example.haden.Models.Note
import com.example.haden.Models.NotesAdapter
import com.example.haden.R
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.firestore.FirebaseFirestore
// Initialize views
noteInput = view.findViewById(R.id.noteInput)
saveNoteButton = view.findViewById(R.id.saveNoteButton)
convertToFlashcardButton =
view.findViewById(R.id.convertToFlashcardButton)
flashcardRecyclerView =
view.findViewById(R.id.flashcardRecyclerView)
// Set up RecyclerView
flashcardRecyclerView.layoutManager =
LinearLayoutManager(requireContext())
adapter = NotesAdapter(notesList)
flashcardRecyclerView.adapter = adapter
/**
companion object {
/**
* Use this factory method to create a new instance of
* this fragment using the provided parameters.
*
* @param param1 Parameter 1.
* @param param2 Parameter 2.
* @return A new instance of
fragment NotificationsFragment.
*/
// TODO: Rename and change types and number of
parameters @JvmStatic
fun newInstance(param1: String, param2: String) =
NotificationsFragment().apply {
arguments = Bundle().apply
{ putString(ARG_PARAM1, param1)
putString(ARG_PARAM2, param2)
}
}
}
<com.google.android.material.bottomnavigation.BottomNavigat
io nView
android:id="@+id/nav_view"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="@color/black"
app:itemIconTint="@null"
app:layout_constraintBottom_toBottomOf="par
ent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="paren
t" app:menu="@menu/bottom_nav_menu" />
<fragment
android:id="@+id/nav_host_fragment_activity_home"
android:name="androidx.navigation.fragment.NavHostFragme
nt" android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true"
app:layout_constraintBottom_toTopOf="@id/nav_view"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:navGraph="@navigation/mobile_navigation"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main" android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/black"
tools:context=".LoginActivity">
<ImageView
android:id="@+id/
imageView2"
android:layout_width="135d
p"
android:layout_height="138
dp"
android:layout_marginTop="112dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="paren
t"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/img" />
<com.google.android.material.textfield.TextInputLayou
t android:id="@+id/email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginTop="24dp"
android:layout_marginEnd="24dp"
android:hint="Email_id"
android:textColorHint="@color/white"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imageVi
ew2">
<com.google.android.material.textfield.TextInputEditTex
t android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:visibility="visible" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/pass"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginTop="24dp"
android:layout_marginEnd="24dp"
android:hint="password"
android:textColorHint="@color/white"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/emai
l">
<com.google.android.material.textfield.TextInputEditTex
t android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:visibility="visible" />
</com.google.android.material.textfield.TextInputLayout>
<Button
android:id="@+id/login_btn"
style="@style/Widget.Material3.Button.ElevatedButton"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:backgroundTint="#1B07ED"
android:text="Login"
android:textColor="@color/white"
app:layout_constraintEnd_toEndOf="@+id/pass"
app:layout_constraintStart_toStartOf="@+id/pas
s"
app:layout_constraintTop_toBottomOf="@+id/pas
s" />
<Button
android:id="@+id/create_btn"
style="@style/
Widget.Material3.Button.OutlinedButton"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="Create new account"
android:textColor="@color/white"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@+id/login_btn"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="@+id/login_btn"
app:layout_constraintTop_toBottomOf="@+id/login_btn"
app:layout_constraintVertical_bias="0.824" />
</androidx.constraintlayout.widget.ConstraintLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent
" android:orientation="vertical"
android:background="@color/black"
android:gravity="center">
<ImageView
android:layout_width="80dp"
android:layout_height="80dp"
android:src="@drawable/todo"
android:layout_gravity="center"
android:layout_marginTop="20dp"/
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="To Do List"
android:textColor="@color/white"
android:layout_gravity="center_horizontal"
android:textSize="18sp"
android:textStyle="bold"/>
</LinearLayout>
</androidx.cardview.widget.CardView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent
" android:orientation="vertical"
android:background="@color/black"
android:gravity="center">
<ImageView
android:layout_width="80dp"
android:layout_height="80dp"
android:src="@drawable/event"
android:layout_gravity="center"
android:layout_marginTop="20dp"/
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Schedule"
android:textColor="@color/white"
android:layout_gravity="center_horizontal"
android:textSize="18sp"
android:textStyle="bold"/>
</LinearLayout>
</androidx.cardview.widget.CardView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent
" android:orientation="vertical"
android:background="@color/black">
<ImageView
android:layout_width="80dp"
android:layout_height="80dp"
android:src="@drawable/video"
android:layout_gravity="center"
android:layout_marginTop="20dp"/
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Video Summary"
android:textColor="@color/white"
android:layout_gravity="center_horizontal"
android:textSize="18sp"
android:textStyle="bold"/>
</LinearLayout>
</androidx.cardview.widget.CardView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent
" android:orientation="vertical"
android:background="@color/black">
<ImageView
android:layout_width="80dp"
android:layout_height="80dp"
android:src="@drawable/revision"
android:layout_gravity="center"
android:layout_marginTop="20dp"/
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Revision"
android:textColor="@color/white"
android:layout_gravity="center_horizontal"
android:textSize="18sp"
android:textStyle="bold"/>
</LinearLayout>
</androidx.cardview.widget.CardView>
</GridLayout>
8 i. NOTES FRAGMENT XML
<!-- Input for notes -->
<EditText
android:id="@+id/noteInput"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:background="@android:drawable/edit_text"
android:backgroundTint="@color/white"
android:hint="Type your note here"
android:padding="12dp"
android:textColor="@color/black"
android:textColorHint="@color/black"
tools:backgroundTint="@color/black" />
android:layout_height="0dp"
android:layout_weight="1"
android:clipToPadding="false"
android:padding="8dp" />