Student Marks Calculation System
Android App (mini project)
COURSE NAME : MOBILE APPLICATIONS DEVELOPMENT
COURSE CODE: BIT5M023
Mini Project -Marking Rubrics:
Student Name :Bashir Ibne Zafor
Student ID :BIT19016156
Marks Table
Qus 1
Qus 2
Qus 3
Qus 4 (i)
Qus 4 (i)
Execution and Presentation (From Slides)
1.
Problem Statement
In this project we are going to create an Android Application to implement the grading system
in university. We have to read in the student name, Register number, Subject Name , and Marks
for the four subjects. Print lists of all information about the student name, Register number,
Subject Name, and Marks for the four subjects and Grading. All these will be done using java,
xml programing and Android Studio as the main platform and will run the app in its emulator.
Objective of CGPA calculator Android App
Manually Create mark sheets of thousand of students is not a better way it will take a long time.
CGPA calculator is the best solution to automate this system. Which is completely digital
process that saves our paper also and time as well? So it’s a single user application you can say
admin or principle or any faculty. Where an admin can log in in the application. Select a student
by Enrollment number. Select semester subject will come automatically according to the
semester. Admin can change or add new subject according to the semesters. So that same subject
will appear while admin generates mark sheet at the end admin can print the mark sheet or paper
as well as can download pdf to save the records. After adding the marks according to the subject
all the calculations will happen automatic and generate a result report according to the set rules
and credits.
Function of the App
There is only one main aim is to get Grade based on marks.
So in this app student can do;
Input Name
Input Roll
Input all subjects marks individually
Click Calculate
Get total marks
Get average marks
Get the grade A-F
Click Clear Button to re input
2.
App Development Life Cycle
From the statement of ques we can write some rules or step for the product stage lifecycle. Here
are the some steps for it;
Stage 1: Plan
The first step to building a mobile app is understanding why you are building a mobile app. Start
by asking these questions:
Who is the target audience for the mobile app?
What purpose is the app fulfilling?
Why is building the app beneficial for you or your business?
How do you plan on building the app?
By no means is this list exhaustive, but these questions can help guide the planning process for
your app. Don’t build the app just for the sake of having an app, because it’s far better to have
not built at all than to build something subpar that your target audience won’t enjoy. Build with
intent. Build an app that your audience will want to use. To make that happen, planning is
absolutely necessary.
Your business’ marketing team should also build a campaign around the new app prior to
deployment to improve visibility and hype before and during launch. Campaign building should
start in the planning phase, but it needs to be flexible to app capability fluctuations until the
product’s core functions are confirmed.
Stage 2: Design
Once you’ve got the app planned, you can get into design. During the design phase, you and your
business should be focusing on two aspects: functionality and the user interface (UI). While the
UI covers what users see in the app and what they interact with, the functionality aspect focuses
on how the app actually works and what users can do with it.
For developing the user experience, a common practice is wireframing. In simplest terms,
wireframing is a rough draft of what users see. It’s a quick-and-dirty approach to arranging the
app in a way that makes sense for the end user. What’s nice about using wireframing tools in
particular during the design stage is that wireframe tools are incredibly flexible. Think of
wireframing almost like a wall full of sticky notes: You’ve got the freedom to add, move, and
remove ideas according to what might work best for the end user.
The development side of design tends to be more consulting-oriented, but one or more members
of the dev team should always be involved in the design stage. They need to give input about
what your business should realistically expect from the app’s functions.
Stage 3: Develop
The development stage is composed of two distinct parts: the first, prototyping, is meant to be
quick, whereas the second, building, is the actual production of the end product.
Part A: Prototype
While this might feel like overkill, or perhaps like it would slow down the development process,
app prototyping can be an invaluable part of the development process. Prototypes are quick
builds — in this case, of the mobile application — that are used to test design ideas before
moving forward with the actual build process. Prototypes are the translation of the initial idea
into a practical model of how that idea operates.
The limitation of wireframing and preliminary UI design is that you can’t see how the app draft
behaves in practice. Prototyping the design allows the app developer or development team the
opportunity to test their initial ideas and see what might be missing or problematic before
formally moving into the building stage. Foresight like this can help prevent extended delays and
numerous mid-build changes that would drastically slow the build process and prevent expedient
application release.
Part B: Build
Now that you’ve knocked out the initial kinks with the app prototype, you can start the build
process. The actual app build is where your developer(s) should be pouring in the most time. In
this stage, the initial plans, designs, and lessons learned from prototyping all come together as a
guidebook for creating the end product.
Build tools can directly target the level of experience your developer(s) have. For individuals or
small businesses that might not have extensive development experience, no-code development
platforms or low-code development platforms may be the perfect option for building the app. For
enterprises, mobile development platforms give experienced developers the most extensive array
of features and options to build with, potentially sacrificing a certain level of expediency for
thoroughness and greater app capability.
You should also expect the greatest fluidity of the entire mobile app development lifecycle
during the build stage. Getting deep into the app build can expose hidden issues with the
expected functions for the app, and also result in new ideas that might not have come up during
planning and prototyping. Keep in mind that you don’t want to get stuck in an idea development
loop here though. If the idea is too broad, or maybe just not entirely cohesive with the current
build, the idea may be better to hold onto as a feature update sometime after launch.
See the Highest-Rated Mobile Development Platforms Software, Free →
Stage 4: Test and QA
In this stage, your developers want to make sure that everything in the app actually works.
Mobile app testing goes through every single action in the app — from the most used to the least
— to verify that nothing “breaks.” This testing can be done either by software solutions,
dedicated QA analysts, or crowdsourced testing solutions.
A break could be:
An external link that doesn’t open
An image that doesn’t load
A combination of button presses or interactions that causes the app to freeze
A break could also take the form of a variety of other potential failures that make an app feel
incomplete or half-baked. Every company should be aiming to minimize the number of errors or
breaks as much as possible before app launch. An app that isn’t adequately tested prior to launch
risks failure right out of the gate. Early app reviews are incredibly important due to the low
sample size, and enough mediocre or poor ratings can doom an app before it ever really gets off
the ground.
Stage 5: Deploy
All right, the app has been conceptualized, prototyped, built, and tested. Now you’re finally
ready to launch the application.
Prior to this point, other parts of your business should have determined the pricing structure for
your app, or how the app might otherwise be monetized. Some of the more common revenue-
driving options include:
Single purchase – The app has a one-time, upfront purchasing cost with no extra cost
Freemium – The app is free to download with in-app purchases for extended feature
Subscription – The app has a recurring cost of ownership that is charged periodically
E-commerce portal – The app is free to download as a web storefront gateway
Broad-scale deployment will usually involve an intermediary called an app marketplace or app
store. The intermediary hosts the app for users to purchase and/or download in exchange for a
hosting fee and, sometimes, a percentage of the sale price. Keep in mind the costs to launch and
maintain an app in an app marketplace: The host usually charges a publishing cost, a transaction
fee for each download, or both.
mobile app store costs fees
Graphic via G2’s Bridget Poetker, discussing how much it costs to make an app.
Stage 6: Maintain
This step is the “lifecycle” part of the “mobile development lifecycle” that people tend to forget
about. What turns mobile development into a lifecycle is constantly maintaining the application
beyond its initial release.
What if users find an unexpected issue with the app’s performance on a certain device? What if
you think of a new feature that might be great for your app? Or, arguably most importantly, how
do you maintain your app’s relevance and functionality as mobile device hardware and software
evolves?
All of these questions should be key considerations before you ever develop your app, and if
they weren’t, they absolutely should be upon deployment. Otherwise, you’ve built your app for a
snapshot in time, and you risk your app falling into irrelevance. The maintenance step should be
a constant, proactive way of ensuring your app’s health and usability for as long as the app is
needed.
3.
Procedure of the App that have been developed
To develop an app we need to follow so many rules to make it success. But here
we will not follow the all everything because it’s a mini project and a simple app.
So what we have to do here it it;
1. First need to design using xml or dragging system in Android Studio
2. Need to check the string part inside the layout
3. We may check either working or not by clicking run
4. Need to develop java coding part in main activity part and also follow the
logic and task given by instructor
5. After done all above then we can run our app to virtual emulator.
4.
i) xml code :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="[Link]
xmlns:app="[Link]
xmlns:tools="[Link]
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:orientation="vertical"
android:gravity= "center"
>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="30dp"
android:gravity="center"
android:text= "@string/sttitle"
android:textSize="22dp"
android:textColor="@color/purple_700"
/>
<ImageView
android:layout_width="100sp"
android:layout_height="100sp"
android:src="@drawable/mahsa"
android:id="@+id/image"
android:gravity="center"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text= "@string/stname"
android:layout_marginLeft="20dp"
android:textSize="15sp"
android:textColor="@color/teal_700"
/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/stname"
android:textColor="@color/black"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text= "@string/stroll"
android:layout_marginLeft="20dp"
android:textSize="15sp"
android:textColor="@color/teal_700"
/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/stroll"
android:textColor="@color/black"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text= "@string/subname1"
android:layout_marginLeft="20dp"
android:textSize="15sp"
android:textColor="@color/black"
/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/subname1"
android:textColor="@color/black"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text= "@string/subname2"
android:layout_marginLeft="20dp"
android:textSize="15sp"
android:textColor="@color/black"
/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/subname2"
android:textColor="@color/black"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text= "@string/subname3"
android:layout_marginLeft="20dp"
android:textSize="15sp"
android:textColor="@color/black"
/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/subname3"
android:textColor="@color/black"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text= "@string/subname4"
android:layout_marginLeft="20dp"
android:textSize="15sp"
android:textColor="@color/black"
/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/subname4"
android:textColor="@color/black"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text= "@string/total"
android:layout_marginLeft="20dp"
android:textSize="15sp"
android:textColor="#009688"
/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/total"
android:textColor="@color/black"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text= "@string/avg"
android:layout_marginLeft="20dp"
android:textSize="15sp"
android:textColor="@color/teal_700"
/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/avg"
android:textColor="@color/black"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text= "@string/grade"
android:layout_marginLeft="20dp"
android:textSize="15sp"
android:textColor="@color/teal_700"
/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/grade"
android:textColor="#0B0B0B"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal">
<Button
android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ok"
android:visibility="visible"
tools:visibility="visible" />
<Button
android:id="@+id/btn2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:text="@string/clear"
android:textColor="#FFEB3B"
android:visibility="visible"
tools:visibility="visible" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</ScrollView>
</LinearLayout>
ii) Java code:
package [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
public class MainActivity extends AppCompatActivity {
EditText ed1,ed2,ed3,ed4,ed5,ed6,ed7,ed8,ed9;
Button btn1,btn2;
@Override
protected void onCreate(Bundle savedInstanceState) {
[Link](savedInstanceState);
setContentView([Link].activity_main);
ed1 =findViewById([Link]);
ed2 =findViewById([Link]);
ed3 =findViewById([Link].subname1);
ed4 =findViewById([Link].subname2);
ed5 =findViewById([Link].subname3);
ed6 =findViewById([Link].subname4);
ed7 =findViewById([Link]);
ed8 =findViewById([Link]);
ed9 =findViewById([Link]);
btn1 = findViewById([Link].btn1);
btn2 = findViewById([Link].btn2);
[Link](new [Link]() {
@Override
public void onClick(View v) {
clear();
}
});{
[Link](new [Link]() {
@Override
public void onClick(View v) {
markscal();
}
});
}
public void markscal()
{
int m1,m2,m3,m4,tot;
double avg;
String grade;
m1=[Link]([Link]().toString());
m2=[Link]([Link]().toString());
m3=[Link]([Link]().toString());
m4=[Link]([Link]().toString());
tot= m1 + m2 + m3 + m4;
[Link]([Link](tot));
avg= tot/4;
[Link]([Link](avg));
if(avg >=80)
{
[Link]("A");
}
else if(avg >= 60)
{
[Link]("B");
}
else if(avg >= 50)
{
[Link]("C");
}
else if(avg >= 40)
{
[Link]("D");
}
else if(avg >= 30)
{
[Link]("E");
}
else
{
[Link]("F");
}
}
public void clear()
{
[Link]("");
[Link]("");
[Link]("");
[Link]("");
[Link]("");
[Link]("");
[Link]("");
[Link]("");
[Link]("");
[Link]();
}
5.
Presentation part (in online)
References:
1. [Link]
2. [Link]