MAD Report
MAD Report
MAD Report
A Study On
Android Quiz App
Mr.S.B.Thakre Sir
Third year Diploma Program in Computer Engineering & Technology of
At
1
MAHARASHTRA STATE BOARD OF TECHNICAL
EDUCATION, MUMBAI
Certificate
This is to certify that Rajnandeeni Patil ,Anurag Vijay Pawar, Sanika Shriram Patil,
Faridos Faridkhan Pathan, Farina Faridkhan Pathan of Sixth Semester of Computer
Engineering Diploma Program at (1432) GOVERNMENT POLYTECHNIC
NANDURBAR, has completed the (Micro Project) satisfactorily in Subject MAD(22617)
in the academic year 2023- 2024 asprescribed in the MSBTE curriculum of I Scheme.
2114320053
Date: 2114320061
21143200
21143200
2
INDEX
1 Introduction 4
2 Project Overview 5
3 Proposed Methodology 6
4 Working 7
5 activity_main.xml code 8
9 Output 20
11 Conclusion 23
3
1.Introduction:
In the digital age, educational tools have significantly evolved, embracing technology to
provide innovative learning methods. Among these tools, quiz apps have emerged as a
popular medium for reinforcing knowledge and learning through interaction and
engagement. This micro project report introduces a Quiz App developed for the Android
platform, designed to offer a dynamic and interactive learning experience for users of all
ages.
The Quiz App is a mobile application that aims to make learning enjoyable and e ffective by
Integrating quizzes on various subjects and topics. It leverages the widespread availability
and accessibility of Android devices, ensuring that users can engage with educational
content anytime and anywhere. The application features a user-friendly interface, a vast
database of questions, and different difficulty levels to cater to diverse learning needs and
preferences.
Developed using Android Studio and Kotlin/Java, the Quiz App incorporates modern
software development practices and Android development guidelines. It utilizes the SQLite
database for storing questions, user scores, and progress, ensuring a seamless and
responsive user experience. The app supports multiple choice questions (MCQs), allowing
users to select answers from given options, thereby testing their knowledge and learning
efficiency.
The core objective of the Quiz App is to provide a platform that encourages continuous
learning and self-assessment. By integrating elements of gamification, such as scores, levels,
and instant feedback, it aims to motivate users to engage with the content regularly. The
app also includes features like timed quizzes and leaderboards to add a competitive edge,
making learning a more compelling and challenging experience.
This micro project report will delve into the development process, including the design
considerations, architecture, and functionalities of the Quiz App. It will also discuss the
testing strategies employed to ensure the reliability and efficiency of the app. Through this
project, we aim to demonstrate how technology can be effectively harnessed to enhance
educational experiences, making learning not just accessible but also engaging and fun.
4
2.Project Overview
In today’s world, Smart phones have changed our lives and have become an indispensable
part of our lives because of its specialty to simplify our routine work and thereby saving our
time. A Smartphone with an Android OS offers excellent functionality to the users offering a
distinct experience. Android is a Linux based operating system and it was bought by Google
in 2007.There are tons of application available and one of the prime reason for this vast
number is android being an open source. On the other hand, android based device like
mobile, tab are very user friendly. A survey has done by “Light Castle Partners” research
wing which indicates that though other operating system mobile users exist but the majority
users are goes with android operating system.In this context, Project application is
developed based on android platform. The name of application is define as ‘My Awesome
Quiz’
5
3.Proposed Methodology
Technology in the field of education is constantly evolving, growing and this increase will
continually offer new and extraordinary advances in the field of education. Traditional E-
learning systems developed for laptop and desktops were based on standalone application
and web based application architecture. These applications will have some limitations to be
used effectively or we cannot use them easily since these applications need a computing
device and network connectivity. With the advancement in the mobile technology and
availability of smart mobile devices and networks we can create a system which can be used
to check knowledge levels of students. Since mobile network is available at maximum areas
so this can be used for the knowledge testing of any person specially candidates of software
company who need a specific skill for job
The current system developed is feasible. Thus it provides easy access to the users. The
database’s purpose is to make, establish and maintain a workflow among various entities in
order to facilitate all concerned users in their different capacities or roles. Permission to the
users would be granted based on the roles specified. Therefore, this provides the technical
guarantee of correctness, speed and security. The software and hard requirements for the
development of this project are not many and are already available in -house at NIC or are
available as free as open source. The work for the project is done with the current equipment
and existing software technology. Necessary bandwidth exists for providing fast feedback to
the users irrespective of the number of users using the system. The main theme of this app is
to save time while conducting examinations. Generally, to conduct exams we need so much
infrastructure ,but here if we have the application installed it is enough for the examination.
6
4.Working:
1. The Quiz App is rated in the top 5 aptitude applications in the android market developed by
Sindu Rajan and designed by Yalini Kumaraguru.
2. Pocket Aptitude is a collection of 10+ quantitative aptitude questions and word problems
frequently asked in competitive examinations and placement papers.
3. It is designed as a preparation tool for job aspirants and those waiting to crack CAT, NTSE
and various bank exams.
4. People with an inclination towards mathematics can use this app to sharpen their IQ, test
their aptitude skills and enrich their knowledge.
5. This application has various fine points and flaws and provides a good user interface but
only for practice tests but the questions being asked are of old pattern and not in trend.
6. The main motto is to make this app work faster and efficiently enough for students to make
the most out of it.
7. The Logical Reasoning and Aptitude application developed by the team is also a popularly
used aptitude test application. Logical Reasoning helps in improving problem-solving skills
by focusing on Logical Reasoning Questions.
8. Logical Reasoning will help you in preparation of admissions tests and other different kinds
of exams, but the user interface is not interactive, the user has to scroll horizontally to view
the entire answer. It just has MCQs for test and score evaluation
7
5.XML Code:
package com.example.vikasojha.quizbee;
import android.graphics.Color;
/**
* Created by Sushant on 23-11-2016.
*/
import java.util.Random;
public class BackgroundColor {
private String[] mColors = {
"#39add1", // light blue
"#3079ab", // dark blue
"#c25975", // mauve
"#e15258", // red
"#f9845b", // orange
"#838cc7", // lavender
"#7d669e", // purple
"#53bbb4", // aqua
"#51b46d", // green
"#e0ab18", // mustard
"#637a91", // dark gray
"#f092b0", // pink
"#b7c0c7" // light gray}
};
public int getColor(){
//Randomly generate a color
String color;
Random randomGenerator = new Random();
int randomNumber = randomGenerator.nextInt(mColors.length);
color = mColors[randomNumber];
int colorAsInt;
colorAsInt = Color.parseColor(color);
return colorAsInt;
}
}
package com.example.Damini.quizbee;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
@Override
8
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_developer);
btnRestart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent in2 = new Intent(getApplicationContext(),MainActivity.class);
startActivity(in2);
}
});
}
}
package com.example.Damini.quizbee;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button startbutton=(Button)findViewById(R.id.button);
Button aboutbutton=(Button)findViewById(R.id.button2);
final EditText nametext=(EditText)findViewById(R.id.editName);
startbutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String name=nametext.getText().toString();
Intent intent=new Intent(getApplicationContext(),QuestionsActivity.class);
intent.putExtra("myname",name);
startActivity(intent);
}
});
9
aboutbutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(getApplicationContext(),DeveloperActivity.class);
startActivity(intent);
}
});
}
}
package com.example.Damini.quizbee;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
String questions[] = {
"Which method can be defined only once in a program?",
"Which of these is not a bitwise operator?",
"Which keyword is used by method to refer to the object that invoked it?",
"Which of these keywords is used to define interfaces in Java?",
"Which of these access specifiers can be used for an interface?",
"Which of the following is correct way of importing an entire package ‘pkg’?",
"What is the return type of Constructors?",
"Which of the following package stores all the standard java classes?",
"Which of these method of class String is used to compare two String objects for
their equality?",
"An expression involving byte, int, & literal numbers is promoted to which of
these?"
};
String answers[] = {"main method","<=","this","interface","public","import pkg.*","None of the
mentioned","java","equals()","int"};
String opt[] = {
"finalize method","main method","static method","private method",
10
"&","&=","|=","<=",
"import","this","catch","abstract",
"Interface","interface","intf","Intf",
"public","protected","private","All of the mentioned",
"Import pkg.","import pkg.*","Import pkg.*","import pkg.",
"int","float","void","None of the mentioned",
"lang","java","util","java.packages",
"equals()","Equals()","isequal()","Isequal()",
"int","long","byte","float"
};
int flag=0;
public static int marks=0,correct=0,wrong=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_questions);
if (name.trim().equals(""))
textView.setText("Hello User");
else
textView.setText("Hello " + name);
submitbutton=(Button)findViewById(R.id.button3);
quitbutton=(Button)findViewById(R.id.buttonquit);
tv=(TextView) findViewById(R.id.tvque);
radio_g=(RadioGroup)findViewById(R.id.answersgrp);
rb1=(RadioButton)findViewById(R.id.radioButton);
rb2=(RadioButton)findViewById(R.id.radioButton2);
rb3=(RadioButton)findViewById(R.id.radioButton3);
rb4=(RadioButton)findViewById(R.id.radioButton4);
tv.setText(questions[flag]);
rb1.setText(opt[0]);
rb2.setText(opt[1]);
rb3.setText(opt[2]);
rb4.setText(opt[3]);
submitbutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//int color = mBackgroundColor.getColor();
//mLayout.setBackgroundColor(color);
if(radio_g.getCheckedRadioButtonId()==-1)
11
{
Toast.makeText(getApplicationContext(), "Please select one choice",
Toast.LENGTH_SHORT).show();
return;
}
RadioButton uans = (RadioButton) findViewById(radio_g.getCheckedRadioButtonId());
String ansText = uans.getText().toString();
// Toast.makeText(getApplicationContext(), ansText, Toast.LENGTH_SHORT).show();
if(ansText.equals(answers[flag])) {
correct++;
Toast.makeText(getApplicationContext(), "Correct", Toast.LENGTH_SHORT).show();
}
else {
wrong++;
Toast.makeText(getApplicationContext(), "Wrong", Toast.LENGTH_SHORT).show();
}
flag++;
if (score != null)
score.setText(""+correct);
if(flag<questions.length)
{
tv.setText(questions[flag]);
rb1.setText(opt[flag*4]);
rb2.setText(opt[flag*4 +1]);
rb3.setText(opt[flag*4 +2]);
rb4.setText(opt[flag*4 +3]);
}
else
{
marks=correct;
Intent in = new Intent(getApplicationContext(),ResultActivity.class);
startActivity(in);
}
radio_g.clearCheck();
}
});
quitbutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(getApplicationContext(),ResultActivity.class);
startActivity(intent);
}
});
}
12
}
package com.example.Damini.quizbee;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.QuickContactBadge;
import android.widget.TextView;
import org.w3c.dom.Text;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_result);
tv = (TextView)findViewById(R.id.tvres);
tv2 = (TextView)findViewById(R.id.tvres2);
tv3 = (TextView)findViewById(R.id.tvres3);
btnRestart = (Button) findViewById(R.id.btnRestart);
QuestionsActivity.correct=0;
QuestionsActivity.wrong=0;
btnRestart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent in = new Intent(getApplicationContext(),MainActivity.class);
startActivity(in);
}
});
13
}
}
<?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: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.example.Damini.quizbee.DeveloperActivity">
<?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: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.example.Damini.quizbee.MainActivity" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/quizapp"
android:layout_marginTop="48dp"
android:textSize="60dp"
android:id="@+id/textView"
android:layout_alignParentTop="true"
android:layout_alignLeft="@+id/editName"
android:layout_alignStart="@+id/editName"
android:textColor="#F44336" />
<Button
android:layout_width="200dp"
android:layout_height="52dp"
android:text="Start"
android:id="@+id/button"
android:textSize="30dp"
android:layout_above="@+id/button2"
android:layout_alignLeft="@+id/editName"
android:layout_alignStart="@+id/editName"
android:layout_marginBottom="25dp"
android:background="#FF5722"
android:textColor="#ffffff" />
14
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:ems="10"
android:id="@+id/editName"
android:textColor="#df040b"
android:hint="Enter your name"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true" />
<Button
android:layout_width="200dp"
android:layout_height="52dp"
android:text="About"
android:id="@+id/button2"
android:textSize="30dp"
android:layout_marginBottom="33dp"
android:layout_alignParentBottom="true"
android:layout_alignLeft="@+id/button"
android:layout_alignStart="@+id/button"
android:background="#01579B"
android:textColor="#ffffff" />
</RelativeLayout>
<?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: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.example.Damini.quizbee.QuestionsActivity">
<TextView
android:layout_width="200dp"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:id="@+id/DispName"
android:textColor="@color/accent_material_light"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<RadioGroup
android:layout_width="wrap_content"
15
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/DispName"
android:layout_alignStart="@+id/DispName"
android:id="@+id/answersgrp"
android:clickable="true"
android:layout_centerVertical="true">
<!--android:layout-->
<!--android:checkedButton="@+id/radioButton"-->
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="A"
android:id="@+id/radioButton"
android:checked="false"
/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="B"
android:id="@+id/radioButton2"
android:checked="false" />
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="C"
android:id="@+id/radioButton3"
android:checked="false" />
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="D"
android:id="@+id/radioButton4"
android:checked="false" />
</RadioGroup>
17
18
7. Advantages & Disadvantages:
Advantages:
1. *Wide Reach*: Android is the most popular mobile operating system globally, so
developing a quiz application for Android ensures access to a large user base.
2. *Easy Distribution*: Once developed, the quiz application can be easily distributed
through the Google Play Store, reaching millions of potential users.
4. *Integration with Google Services*: Android applications can easily integrate with
various Google services such as Google Sign-In, Google Analytics, and Google Cloud
Messaging, enhancing user experience and app functionality.
19
Disadvantages:
6. *Fragmented Development Tools*: Unlike iOS development, which is primarily done using
Xcode and Swift, Android development offers multiple development tools, IDEs, and
programming languages (e.g., Java, Kotlin). This fragmentation can lead to a steep learning
curve for developers and increased complexity in managing the development environment.
20
11.Conclusion:
The main purpose of our project is to develop an application that offers new aspects of
learning and improving knowledge in educational area. Most of the available apps are
entertainment-based, which mostly do not contribute to the academic enhancement of the
students. The theme of our quiz is to provide user to practice for subjective tests conducted
on national level, so in this app we focus on Computer science field. This quiz is useful for
the preparation of any of the computer-related test. This quiz app includes three main
modules, namely (i) computer science, (ii) verbal, and (iii) analytical. The computer science
and verbal modules contains various types of sub categories. This quiz includes three
functions: (i) Hint, (ii) Skip, and (iii) Pause, which are collectively named as life lines that help
users to answer questions correctly. These functions can be used only once by a user. When
user tap/click on “Hint”, it will show hints by disabling two extra options from four options,
then user can easily select an option from the two. Skip options can be used at of user’s
choice. This function will simply skip the current question. When user wants some time to
answer a question then he/she will use this function to pause the quiz. Resultantly, time
clock is stopped for 30 sec and this time is not be added in the total time. We have learned a
lot about Android based applications and also about user’s behavior. We have found that
the development process is hard and time-consuming, but it can be managed by a team
work. We hope that other developers will take advantage from our experience/from our
development.
21
ANNEXURE-II
Evaluation Sheet for the Micro Project (Teachers copy)
22
Remark
3112
3142 Anurag Vijay
Pawar
3150 Sanika Shriram
Patil
3148 Faridos Faridkhan Pathan
23