MAD Report

Download as pdf or txt
Download as pdf or txt
You are on page 1of 23

Program name and code: CO6I Academic Year: 2023-2024

Course name and code: MAD(22617) Semester: 6th

A Study On
Android Quiz App

Sr Name of Student Roll No. Enrollment Seat


.no No. No.
1) Rajnandeeni Patil 3112 2114320053 481027
2) Anurag Vijay Pawar 3142 2114320039
3) Sanika Shriram Patil 3150 2114320061 481034
4) Faridos Faridkhan Pathan 3148 21143200
5) Farina Faridkhan Pathan 3149 21143200
Submitted on / /2024

Under the guided by

Mr.S.B.Thakre Sir
Third year Diploma Program in Computer Engineering & Technology of

Maharashtra State Board of Technical Education, Mumbai (Autonomous)

ISO 9001:2008 (ISO/IEC-27001:2013)

At

1432 GOVERNMENT POLYTECHNIC NANDURBAR.

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.

Place: NANDURBAR Enrollment No: 2114320039

2114320053

Date: 2114320061

21143200

21143200

Project Guide Head of Department Principal

2
INDEX

Sr. No. Topic Page

1 Introduction 4

2 Project Overview 5

3 Proposed Methodology 6

4 Working 7

5 activity_main.xml code 8

9 Output 20

10 Advantages & Disadvantages 22

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;

public class DeveloperActivity extends AppCompatActivity {


Button btnRestart;

@Override
8
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_developer);

btnRestart = (Button) findViewById(R.id.button4);

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;

public class MainActivity extends AppCompatActivity {

@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;

public class QuestionsActivity extends AppCompatActivity {


TextView tv;
Button submitbutton, quitbutton;
RadioGroup radio_g;
RadioButton rb1,rb2,rb3,rb4;

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);

final TextView score = (TextView)findViewById(R.id.textView4);


TextView textView=(TextView)findViewById(R.id.DispName);
Intent intent = getIntent();
String name= intent.getStringExtra("myname");

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;

public class ResultActivity extends AppCompatActivity {


TextView tv, tv2, tv3;
Button btnRestart;

@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);

StringBuffer sb = new StringBuffer();


sb.append("Correct answers: " + QuestionsActivity.correct + "\n");
StringBuffer sb2 = new StringBuffer();
sb2.append("Wrong Answers: " + QuestionsActivity.wrong + "\n");
StringBuffer sb3 = new StringBuffer();
sb3.append("Final Score: " + QuestionsActivity.correct + "\n");
tv.setText(sb);
tv2.setText(sb2);
tv3.setText(sb3);

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>

<!-- Base application theme. -->


<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item> </style>
</resources>
16
6.Output:

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.

3. *Customization*: Android provides extensive customization options, allowing


developers to create unique and engaging quiz interfaces tailored to their target
audience.

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.

5. *Rich Development Ecosystem*: Android has a vast and active development


community, providing access to numerous libraries, frameworks, and resources to
expedite the development process.

6. *Hardware Compatibility*: Android supports a wide range of devices with varying


screen sizes, resolutions, and hardware specifications, ensuring compatibility with most
smartphones and tablets.

19
Disadvantages:

1. *Fragmentation*: Android fragmentation refers to the diversity of devices running


different versions of the Android operating system. Developers must account for this
fragmentation to ensure compatibility and consistent user experience across various devices
and OS versions.

2. *Device Fragmentation*: Along with OS fragmentation, Android also exhibits device


fragmentation due to the multitude of manufacturers producing smartphones and tablets
with varying hardware configurations. This can pose challenges in optimizing the quiz
application for different devices and ensuring consistent performance.

3. *Security Concerns*: Android is known to be more susceptible to security threats such as


malware and viruses compared to other platforms like iOS. Developers must implement
robust security measures to protect user data and ensure the integrity of the quiz
application.

4. *Platform Diversity*: Developing a quiz application for Android means catering to a


diverse user base with different preferences, languages, and cultural backgrounds. This
requires careful consideration of localization, accessibility, and cultural sensitivity to ensure
the app's appeal to a global audience.

5. *Monetization Challenges*: While Android offers various monetization options such as in -


app purchases, ads, and subscription models, generating revenue from a quiz application
can be challenging due to competition and user expectations for free content. Developers
must devise effective monetization strategies without compromising user experience or
engagement.

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)

Academic Name of Guider:

Year: -2023-2024 Mr.S.B.Thakare Sir

Sem: - Sixth Program Name: Computer Engg.

Subject Name:-MAD Subject Code: 22617

Name of Students: - Rajnandeeni Patil

Anurag Vijay Pawar

Sanika Shriram Patil

Faridos Faridkhan Pathan

Farina Faridkhan Pathan

Title of the Android Quiz App


Project: -

22
Remark

Roll StudentsName Marks out Marks out of 4 for Total Remark


No. of 6 for performance in
performanc oral/presentation
ein
activities
Rajnandeeni Patil

3112
3142 Anurag Vijay
Pawar
3150 Sanika Shriram
Patil
3148 Faridos Faridkhan Pathan

3149 Farina Faridkhan


Pathan

23

You might also like