wireless sensor networks (wsns) consist of small low-power...

66
ii ABSTRACT S.A.I.L. [1] is a secure student portal to access student, academic, and financial aid records for Texas A&M University-Corpus Christi. It can be accessed by the students, faculty and staff use the browser in order to access the tamucc sail website. However the web application doesn’t deal well with small screens such as phones, tablets etc. Tamucc Sail is the name of the application and developed on Android Studio IDE, used for gaining access to S.A.I.L [1]. By logging in to the application, the user can maintain contact information, lookup classes, view holds and grades, weekly class schedules, registration and financial aid history and etc. The application also synchronizes and creates reminders for the classes in the respective calendar account based on the user setting.

Upload: truongthien

Post on 28-Jul-2018

222 views

Category:

Documents


0 download

TRANSCRIPT

ii

ABSTRACT

S.A.I.L. [1] is a secure student portal to access student, academic, and financial

aid records for Texas A&M University-Corpus Christi. It can be accessed by the

students, faculty and staff use the browser in order to access the tamucc sail website.

However the web application doesn’t deal well with small screens such as phones, tablets

etc. Tamucc Sail is the name of the application and developed on Android Studio IDE,

used for gaining access to S.A.I.L [1]. By logging in to the application, the user can

maintain contact information, lookup classes, view holds and grades, weekly class

schedules, registration and financial aid history and etc. The application also

synchronizes and creates reminders for the classes in the respective calendar account

based on the user setting.

iii

TABLE OF CONTENTS

ABSTRACT ........................................................................................................................ ii

TABLE OF CONTENTS ................................................................................................... iii

LIST OF FIGURES .......................................................................................................... vii

LIST OF TABLES .......................................................................................................... x

1. BACKGROUND AND RATIONALE ........................................................................... 1

1.1 Android ..................................................................................................................... 1

1.2 Android Studio .......................................................................................................... 2

1.3 Existing Applications ................................................................................................ 2

1.3.1 Web Application ................................................................................................ 2

1.4 Solution ..................................................................................................................... 2

2. NARRATIVE ................................................................................................................. 4

2.1 Problem Statement .................................................................................................... 4

2.2 Motivation ................................................................................................................. 4

2.3 Application Description ............................................................................................ 4

2.4 Application scope...................................................................................................... 6

2.5 System Requirements................................................................................................ 6

3. SYSTEM DESIGN ......................................................................................................... 7

3.1 Application Architecture ........................................................................................... 7

3.1.1 JSON .................................................................................................................. 8

3.1.2 PHP Language ................................................................................................... 9

3.2 Design Flow .............................................................................................................. 9

3.3 Use case Diagram ................................................................................................... 10

iv

3.4 Class Diagram ......................................................................................................... 11

3.5 User Interface .......................................................................................................... 13

3.5.1 Login ................................................................................................................ 13

3.5.2 Personal Information ........................................................................................ 15

3.5.2.1 Change Security Question......................................................................... 16

3.5.2.2 View Address and Phones ........................................................................ 16

3.5.2.3 Update Address and Phones...................................................................... 17

3.5.2.4 View Email Address ................................................................................. 17

3.5.2.5 Update Email Address .............................................................................. 18

3.5.2.6 View Emergency Contacts ........................................................................ 19

5.3.2.7 Update Marital Status ............................................................................... 20

3.5.3 Student ............................................................................................................. 21

3.5.3.1 Registration ............................................................................................... 21

3.5.3.1.1 Week at a glance ................................................................................ 22

3.5.3.1.2 Lookup classes ................................................................................... 24

3.5.3.1.3 Active Registration ............................................................................ 26

3.5.3.1.4 Registration History ........................................................................... 26

3.5.3.2 Student Records ........................................................................................ 26

3.5.3.2.1 View Holds ........................................................................................ 27

3.5.3.2.2 Final Grades ....................................................................................... 27

3.5.4 Financial Aid .................................................................................................... 28

4. IMPLEMENTATION ................................................................................................... 29

4.1 Login ....................................................................................................................... 29

v

4.2 Personal Information ............................................................................................... 31

4.2.1 Change Security Question................................................................................ 32

4.2.2 View Address and Phones ............................................................................... 33

4.2.3 Update Address and Phones............................................................................. 34

4.2.4 View Email Address ........................................................................................ 35

4.2.5 Update Email Address ..................................................................................... 36

4.2.6 View Emergency Contacts ............................................................................... 36

4.2.7 Update Marital Status ...................................................................................... 37

4.3 Student .................................................................................................................... 38

4.3.1 Registration ...................................................................................................... 39

4.3.1.1 Week at a glance ....................................................................................... 39

4.3.1.2 Lookup classes .......................................................................................... 41

4.3.1.3 Active Registration ................................................................................... 43

4.3.1.4 Registration History .................................................................................. 44

4.3.2 Student Records ............................................................................................... 44

4.3.2.1 View Holds ............................................................................................... 45

4.3.2.2 Final Grades .............................................................................................. 46

4.4 Financial Aid ........................................................................................................... 47

5. TESTING AND RESULTS .......................................................................................... 48

5.1 Login ....................................................................................................................... 48

5.2 Update Email Address ............................................................................................ 49

5.2 Update Address ....................................................................................................... 50

5.3 Update Security Question ....................................................................................... 50

vi

5.4 Lookup Classes ....................................................................................................... 52

6. CONCLUSIONS AND FUTURE WORK ................................................................... 53

7. BIBILIOGRAPHY AND REFERENCES .................................................................... 55

APPENDIX-A................................................................................................................... 57

vii

LIST OF FIGURES

Figure 1: System Architecture for Tamucc SAIL ............................................................... 8

Figure 2: Design Flow diagram for the application .......................................................... 10

Figure 3: Use case Diagram for the application ................................................................ 11

Figure 4: Class Diagram representing the relation between different classes .................. 12

Figure 5: Login Screen...................................................................................................... 14

Figure 6: Dashboard Screen .............................................................................................. 14

Figure 7: Navigation Drawer for the application .............................................................. 14

Figure 8: Personal Information Menu ............................................................................... 15

Figure 9: Update Security Question Screen ...................................................................... 15

Figure 10: View Address and Phones Activity/Screen ..................................................... 16

Figure 11: View Address Screen ...................................................................................... 17

Figure 12: Update Addresses and Phones Screen ............................................................. 17

Figure 13: View EmailAddress Screen ............................................................................. 18

Figure 14: View EmailAddress Screen ............................................................................. 19

Figure 15: View and Update EmailAddress Screen ......................................................... 19

Figure 16: View Emergency Contacts Screen .................................................................. 20

Figure 17: Update Marital Status Screen .......................................................................... 20

Figure 18: Student Menu Screen....................................................................................... 21

Figure 19: Registration Menu Screen ............................................................................... 21

Figure 20: Sync Settings Screen ....................................................................................... 23

Figure 21: Choose Account Dialog................................................................................... 23

Figure 22: Week at a glance Screen .................................................................................. 23

viii

Figure 23: Calendar Events for corresponding classes ..................................................... 23

Figure 24: Lookup search spinner screen ......................................................................... 24

Figure 25: Lookup search form Screen ............................................................................. 24

Figure 26: Lookup classes List Screen ............................................................................. 25

Figure 27: Lookup Classes Alert Dialog .......................................................................... 25

Figure 28: Active Registration Screen .............................................................................. 25

Figure 29: Registration History Screen............................................................................. 25

Figure 30: Student Records Screen ................................................................................... 26

Figure 31: View Holds Screen .......................................................................................... 27

Figure 32: Final Grades Screen......................................................................................... 27

Figure 33: Financial Aid History Spinner ......................................................................... 28

Figure 34: Financial Aid History Screen .......................................................................... 28

Figure 35: Login Activity Snippet .................................................................................... 30

Figure 36: JSON Parser Snippet ....................................................................................... 30

Figure 37: Login (PHP) Snippet ....................................................................................... 31

Figure 38: Personal Information Listview Snippet ........................................................... 32

Figure 39: Update Security Question Snippet .................................................................. 32

Figure 40: Form data snippet ............................................................................................ 33

Figure 41: View Address and Phones Snippet .................................................................. 33

Figure 42: Update Addresses and Phones Snippet ........................................................... 34

Figure 43: View Email Address (PHP) Snippet ............................................................... 35

Figure 44: Update Email Address Snippet........................................................................ 36

Figure 45: View Emergency Contacts Snippet ................................................................. 37

ix

Figure 46: Update Marital Status spinner Snippet ............................................................ 38

Figure 47: Student Listview Snippet................................................................................. 39

Figure 48: Week at a glance (Event Creation) Snippet ..................................................... 41

Figure 49: Class Search Form Data Snippet ..................................................................... 42

Figure 50: Refined Class Search Snippet.......................................................................... 43

Figure 51: Active Registration Snippet............................................................................. 44

Figure 52: Student Records Snippet ................................................................................. 45

Figure 53: View Holds Snippet......................................................................................... 45

Figure 54: Final Grades Snippet ....................................................................................... 47

Figure 55: Login Screen Test Case 1 ................................................................................ 48

Figure 56: Login Screen Test Case 2 ................................................................................ 48

Figure 57: Login Screen Test Case 3 ................................................................................ 48

Figure 58: Update Email Address Test Case 1 ................................................................. 49

Figure 59: Update Email Address Test Case 2 ................................................................. 49

Figure 60: Update Addresses Test Case 1 ........................................................................ 50

Figure 61 : Update Addresses Test Case 2 ....................................................................... 50

Figure 62: Update Security Question Test Case 1 ............................................................ 51

Figure 63: Update Security Question Test Case 2 ............................................................ 51

Figure 64: Update Security Question Test Case 3 ............................................................ 51

Figure 65: Update Security Question Test Case 4 ............................................................ 51

Figure 66: Update Security Question Test Case 5 ............................................................ 51

Figure 67: Lookup Classes Test Case ............................................................................... 52

x

LIST OF TABLES

No table of figures entries found.

1

1. BACKGROUND AND RATIONALE

A smartphone is a mobile device with innovative features and functionality

beyond traditional functionalities such as making phone calls and sending text messages.

Smartphones are fitted out with the capabilities to surf the web, take and view photos,

play games, and videos, navigation, camera, e-mail, accessing social networks, wireless

capabilities, and many more applications. In current times, smartphones have become a

basic necessity [2].

There are millions of mobile applications which are ruling over the websites as

they give quick and easy access to the data needed by the user. Most of the mobile

applications are being designed keeping in view of the small screen devices such as

phone, tablets etc. But some of the websites are not formatted to fit the screens of small

devices. A mobile application resolves the above-discussed issue. These mobile

applications adapt to the screens of any size and any mobile device. This kind of similar

problem is faced by the users of tamucc S.A.I.L website which is not designed to fit

appropriately into small screen devices. So keeping in view of that, a mobile application

would be a better option.

1.1 Android

Android Operating System (OS) is one of the popular, customizable and easy to

use operating system which is based on the Linux kernel and currently is being developed

and maintained by Google [3]. It was primarily designed for touchscreen mobile devices

such as smartphones and tablets, but later it has been extended to wearables, car consoles,

2

TVs etc. It has one billion active monthly Android users which were revealed at Google

I/O 2014 [3].

1.2 Android Studio

Android Studio [4] is the official IDE for Android app development, based on

IntelliJ IDEA. Android Studio has a great Gradle-based build system, various build

variants, and multiple apk file generation, Code templates to help you build common app

features, good layout and theme editor, lint tools to catch problems, Pro Guard, and app-

signing capabilities, support for Google Cloud Messaging (GCM) and App Engine.

1.3 Existing Applications

1.3.1 Web Application

S.A.I.L [1] is the Texas A&M University-Corpus Christi student portal which has

the information regarding class schedules, course catalogs, gives the ability to register for

classes, pay tuition & fees and many more. It was developed using HTML, CSS,

JavaScript and a background database by Ellucian Company L.P. and its affiliates. The

main drawbacks of this application are that its usage is limited to web browsers such as

Chrome, Firefox and etc.

1.4 Solution

The main purpose of this application is to help users to gain access to their S.A.I.L

profile in a convenient way and easy to use interface. The application will have the

following features:

3

Able to access personal information such as address, e-mail, contact information.

Lookup classes.

View financial aid history.

Access to final grades for the courses.

View current class schedules.

View current holds on the account.

Change security question

This application will be suitable to work on devices running Android 4.0 (i.e., API Level-

17) and above. The current web application for S.A.I.L will only be accessible through

web browsers. Android is one of the best operating systems running on most of the

mobile devices in the current era. So, an Android Application will be most suitable to

mobile devices of different screen sizes running Android.

4

2. NARRATIVE

2.1 Problem Statement

Smartphones users are spending most of the time on mobile applications rather

than the websites. The S.A.I.L website doesn’t have a good user interface in accordance

with the mobile devices. The users of the website application find it quite annoying to

zoom in and out of the website to navigate through the website. So, there is a necessity to

build a mobile application.

2.2 Motivation

To relieve the problems faced by the users who interact with S.A.I.L’s web site

application, an android application would be apt in order for you to gain access to the

respective profile while providing a better interface for the mobile devices which will be

along with you most of the time.

2.3 Application Description

The android application will allow you to gain access to the respective profile,

which will ask for the username along with the corresponding password and enables you

to navigate through the application. The username and the corresponding password will

be identical to that you use in the web application.

The following will be a brief description of how to navigate through the application.

5

User opens the application from the app drawer by clicking on the app icon.

The application asks the user to enter the username and the corresponding

password.

When user forgets the password, a recovery button on the login screen will help

the user.

On a successful login, the user will be able to navigate to the next screen.

This screen is called the ‘Dashboard’ which will have a menu which categorizes

the app functionality.

The following will be the features of the application

Personal Information:

Change Security Question, View and Update Address, View and

Update Email Address, View Emergency contacts.

Student

Registration: Look up classes, Weekly class Schedule

Student Records: View Holds on the account, View grades

Financial Aid

View financial aid history

The user interface of the application is similar to that of the S.A.I.L website in

order to make it convenient for the user to using the application.

The user will be able to access the main features of the web application in this

application.

6

The user is also provided with settings screen which has few settings that can be

modified by the user and also will be able to logout from the application.

2.4 Application scope

The application is developed for Android smartphone users where the users have

to give permission for the app to access the internet and also data connection must be

turned in the smartphone. To navigate through the app the user must enter the valid

credentials of the S.A.I.L account. This application will be compatible with various

versions of Android, starting from Android 4.0 (Ice-cream Sandwich) to the recent update

Android 5.1 (Lollipop).

2.5 System Requirements

The following are the software and hardware requirements in order to develop an android

application in windows.

Android Studio 1.4 (or latest)

Java Development Kit (JDK) 7(or above)

7

3. SYSTEM DESIGN

3.1 Application Architecture

The application will create JSON objects in order to connect with the S.A.I.L

website with the help of the credentials given by the user. The application creates a

session in the background using an Async Task method in the android. After the session

is initiated the data is retrieved from S.A.I.L website based on the user navigation and

requests in the application. The application will sending some messages as JSON object

to the app server in order to get the information. Here the app server used is an Amazon

Web Server (AWS). The curl methods in PHP is used to parse the website and retrieve

the corresponding page source. This session expires when the user logs out of the

application.

8

Figure 1: System Architecture for Tamucc SAIL

3.1.1 JSON

JavaScript Object Notation is called in short as JSON. It is one of the techniques

to store data in an organized, easy-to-access way in the form of variable, arrays or nested

objects. In short, JSON is a light weight interchange format.

JSON is built on two structures:

A collection of name/value pairs. In various languages, this is realized as an

object, record, structures, dictionary, hash table, keyed list, or associative array.

An ordered list of values. In most languages, this is realized as an array, vector,

list, or sequence. [6]

9

3.1.2 PHP Language

PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open

source general-purpose scripting language that is especially suited for web development

and can be embedded into HTML. PHP is mainly focused on server-side scripting, so you

can do anything any other CGI program can do, such as collect form data, generate

dynamic page content, or send and receive cookies. [7]

PHP supports libcurl, a library created by Daniel Stenberg that allows you to

connect and communicate too many different types of servers with many different types

of protocols. Libcurl currently supports the http, https, ftp, gopher, telnet, dict, file, and

ldap protocols. Libcurl also supports HTTPS certificates, HTTP POST, HTTP PUT, FTP

uploading (this can also be done with PHP's ftp extension), HTTP form based upload,

proxies, cookies, and username & password authentication. [8]

3.2 Design Flow

Figure 2 shows the design flow of different functionalities in the application. The

user needs to login into the app with appropriate credentials for the S.A.I.L. If the user

enters the wrong credentials, the app redirects to the login page until and unless he enters

appropriate credentials. Now the user enters MainActivity after successful login. The user

will be able to access the personal information, class schedule, lookup up classes,

financial aid history, active holds and etc. User will be able login from the app navigation

drawer.

10

Figure 2: Design Flow diagram for the application

3.3 Use case Diagram

The use case diagram (i.e., Figure 3) demonstrates the sequence of operations that

user will be able to perform with different modules of the application along with the

associations. The user able to interact with the application after a successful login. The

user will be able to view and update personal information, access class information,

registration history, view holds and final grades, and also the financial aid history.

11

Figure 3: Use case Diagram for the application

3.4 Class Diagram

The class diagram (i.e., Figure 4) shows the associations between different classes of the

application. After the user logs into the application, a session is initiated and maintained

using shared preferences. The application consists of a navigation drawer and which is

the super class of many classes during the navigation. All the sub classes such as the

12

DashboardActivity, StudentActivity, PersonalInformation, FinancialAid extends

NavDrawerBaseActivity.

Figure 4: Class Diagram representing the relation between different classes

Most of the navigation in the application is based on the listview created by the

CustomAdapter class which is instantiated in classes which are helpful in the navigation

of the application. The listview is populated by using the CustomAdapter based on the

user navigation. LookupClassesDisplayActivity is used show the list of all the classes

13

that are being offered in the corresponding semester. A ClassesDisplayAdapter is created

in order to format the view of the lookupclasses listview.

3.5 User Interface

3.5.1 Login

The user requires S.A.I.L credentials in order to log into the application. When

the user enters appropriate credentials in the corresponding fields, it redirects to the

dashboard or the MainActivity (Figure 6). The PHP server side code along with the

CURL functions allows to perform authentication. The curl uses HTTP POST functions

and also send temporary cookies to the website along with the credentials. The following

screens are the login screen (Figure 5), dashboard (Figure 6) and the navigation drawer

(Figure 7).

14

Figure 5: Login Screen Figure 6: Dashboard Screen

Figure 7: Navigation Drawer for the application

15

Figure 7 shows the navigation drawer which acts as the menu for the application

from which the user will able to see the current classes, weekly schedule, final grades,

lookup classes and also will be able to logout from the application. The navigation header

consist of the name of the user and the islander number(or 'A’ number) The user needs to

press the back button twice in order to leave the application or press logout and then the

back button.

3.5.2 Personal Information

The users will be able to view and update their personal information as shown in

Figure 8. They have access to the addresses, phones and emergency contacts. The user

can update the marital status, emergency contacts and also their contact information such

as addresses and phones. Moreover the user will be able to navigate to other screens.

Figure 8: Personal Information Menu

Figure 9: Update Security Question Screen

16

3.5.2.1 Change Security Question

The user will be able to update their security question and its answer from this

screen as in Figure 9, along with the authentication of their account pin. The application

throws an error when the user enters wrong pin.

3.5.2.2 View Address and Phones

The user will be able to view the addresses and phone numbers which have been

given by the user. There is no forward navigation from this screen (Figure 10). The user

can always use back button to go back to previous screen.

Figure 10: View Address and Phones Activity/Screen

17

3.5.2.3 Update Address and Phones

The user will be able to access the address and phones information. The screen

(Figure 13) has clickable text view which redirect to screen as shown in Figure 12 where

the user can update the information. The user can also insert a new address by selecting

type of address from the dropdown list.

Figure 11: View Address Screen

Figure 12: Update Addresses and Phones

Screen

3.5.2.4 View Email Address

The user will be able to view the email addresses which have been provided by

the user. There is no forward navigation from this screen (Figure 13). The user can

always use back button to go back to previous screen.

18

Figure 13: View EmailAddress Screen

3.5.2.5 Update Email Address

The user will be able to view email addresses which have been given by the user.

There will be clickable textview as shown in (Figure 14) which redirects to the following

screen (Figure 15). The user can always use back button to go back to previous screen.

The user can also insert an email address by selecting type of address from the dropdown

list.

19

Figure 14: View EmailAddress Screen Figure 15: View and Update

EmailAddress Screen

3.5.2.6 View Emergency Contacts

The user will be able to view the emergency contacts which have been

provided by the user. There is no forward navigation from this screen (Figure 16). The

user can always use back button to go back to previous screen.

20

Figure 16: View Emergency Contacts

Screen

Figure 17: Update Marital Status Screen

5.3.2.7 Update Marital Status

The user can update the marital status in the following screen (Figure 17) by

selecting one from the dropdown list and then submit it.

21

3.5.3 Student

The users will be able to navigate to registration, student records or student

account from the screen shown in Figure 18. Moreover the user will be able to navigate

to other screens from the navigation drawer. The student account is not implemented as it

has another secured authentication alongside by the sail where it redirects to the billing

account (sensitive information). As per my knowledge it has a different login credentials

which is not known by the users as the system automatically authenticates in the

background.

Figure 18: Student Menu Screen

Figure 19: Registration Menu Screen

3.5.3.1 Registration

The users will be able to navigate to week at a glance, lookup classes, Active

registration or registration history from the screen shown in Figure 19. Moreover the user

22

will be able to navigate to other screens from the navigation drawer which can be

invoked from the menu button located on the top left of the screen. The screen consists of

a list view which helps the user to navigate to their desired selection.

3.5.3.1.1 Week at a glance

The user is redirected to the settings screen (Figure 20) when the app is installed

for the first time in order get the preferred account of the user as in Figure 21 and sync

the class events into that account. After the selection the user will be redirected to screen

(Figure 22) where the user will be able to see the weekly class schedule. This screen has

two buttons previous and next through which the user will able to see previous and next

week classes. The figure (Figure 23) shows the events for the corresponding classes so

that the user get notifications before the classes. The default time for notification is ten

minutes before the class but user can modify the notification time and add multiple

notifications before the class. The user can also change the preferred account by going

into the sync settings screen (Figure 20) accessible from the navigation drawer.

23

Figure 20: Sync Settings Screen

Figure 21: Choose Account Dialog

Figure 22: Week at a glance Screen

Figure 23: Calendar Events for

corresponding classes

24

3.5.3.1.2 Lookup classes

The user is redirected to the selectterm screen (Figure 24) and a dropdownlist is

available to select the term. After the user clicks the submit button the application

navigates to the next screen as in Figure 25 and the user need to fill the form in order to

get the desired refine search. Now the user will be redirected to screen (Figure 26) where

the user will be able to see the refined search results.

Figure 24: Lookup search spinner screen

Figure 25: Lookup search form Screen

This screen (Figure 26) shows the desired refine search results in a listview. The

user will be able to scroll both horizontally and vertically on this screen. There will be

details button in each item of the listview which shows the dialog of the detailed

information of a particular class as shown in Figure 27.

25

Figure 26: Lookup classes List Screen

Figure 27: Lookup Classes Alert Dialog

Figure 28: Active Registration Screen

Figure 29: Registration History Screen

26

3.5.3.1.3 Active Registration

The following screen (Figure 28) shows the user’s registered classes of the current

term. It has a scrollview in order to see all the current term classes.

3.5.3.1.4 Registration History

The following screen (Figure 29) shows the user’s registration history of all the

terms. It has a scrollview in order to see all the current term classes.

3.5.3.2 Student Records

The users will be able to navigate to view holds, or final grades from the screen

shown in Figure 30. Moreover the user will be able to navigate to other screens from the

navigation drawer.

Figure 30: Student Records Screen

27

3.5.3.2.1 View Holds

The user will be able to see the current holds on the account as shown in Figure 31.

Figure 31: View Holds Screen

Figure 32: Final Grades Screen

3.5.3.2.2 Final Grades

The user get access to the final grades after selecting a particular term as shown in

Figure 32. The user gets see all the details such as the courses registered, GPA and the

term details.

28

3.5.4 Financial Aid

The user needs to select a term from the dropdown list. Now the user will be able to see

the funds received in that particular term. The user will also be able to see the financial

aid history in the Fig. 33.

Figure 33: Financial Aid History Spinner

Figure 34: Financial Aid History Screen

29

4. IMPLEMENTATION

The application will create JSON objects in order to connect with the S.A.I.L website

with the help of the credentials given by the user. The application will sending some

messages as JSON object to the Amazon Web Server in order to get the information. The

curl methods in PHP is used to parse the website and retrieve the corresponding page

source.

4.1 Login

When the user enters appropriate credentials in the corresponding fields, we get

them and push into a list as name value pairs. The PHP server side code is called by

passing the parameters (Figure 35) with the help of HttpPost as in Figure 36, where it

uses the parameters and the CURL functions to perform authentication. The curl uses

HTTP POST functions and also send temporary cookies to the website along with the

credentials. The curl function returns the validation message to PHP which in turn creates

JSON objects to pass the message to the application. Now after receiving the JSON

object array the application notifies the user with the help of Toast.

30

protected String doInBackground(String... args) { JSONObject jsonArray= null; try { LoginService login = new LoginService();//To call the related PHP file and pass appropriate params JSONArray jsonArray = login.verifyLogin(sid, pin, ServerUrls.LOGIN_URL); if (jsonArray != null) { jsonObject = jsonArray.getJSONObject(0); } } catch (JSONException e1) { // TODO Auto-generated catch block //e1.printStackTrace(); } return null; }

Figure 35: Login Activity Snippet

Every time while calling/receiving JSON Objects from/to the PHP the following table is

a snippet of the JSON parser used

DefaultHttpClient httpClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(url); httpPost.setEntity(new UrlEncodedFormEntity(params)); HttpResponse httpResponse = httpClient.execute(httpPost); HttpEntity httpEntity = httpResponse.getEntity(); is = httpEntity.getContent();

Figure 36: JSON Parser Snippet

The following table (i.e., Figure 37) shows how PHP calls the curl and htmlparser

functions in order to extract the data from the website. It generates a temporary cookie

file in order to gain access to the website. If the result returned from the curl with key

success is true then the credentials are valid, else the result will be false. This is given to

the application which posts corresponding messages to the user.

$result =$curlClass->executeUrl($url, "tempcookie.txt", $username.".txt", $dataarray);

$result = str_get_html($result);

31

Continued…..

$validationmsg = $htmlParserClass->verifyLogin($result);

if($validationmsg=="0"){

$data_array['success'] = "false";

if(file_exists("cookies"+$username.".txt"))

unlink("cookies"+$username.".txt");

}

else {

$data_array['success'] = "true";

$data_array['data'] = $validationmsg;

}

Figure 37: Login (PHP) Snippet

After the successful login, the Dashboard along with the navigation drawer is invoked

which acts as the menu for the application. Shared preferences is used in order to

maintain the login information of a particular user.

4.2 Personal Information

This consist of a list view which is populated using a custom adapter as shown in below

Figure 38. The list has setOnItemClickListener so that the application get to know the

clicks/touches of the user.

list = (ListView) findViewById(R.id.list_main); adapter = new CustomAdapter(this, itemname); if (list != null) { list.setAdapter(adapter); } list.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { onListItemClick(position); } });

32

Figure 38: Personal Information Listview Snippet

4.2.1 Change Security Question

The application creates the session manager object to get the username if the user

is logged in. Now the service calls PHP code in order to fill the form data into the

website.

Figure 39: Update Security Question Snippet

Figure 40 shows how the form data is posted into the website using the POST methods.

The array with the data given by the user is initialized and given to execute curl method

which posts the data into the actual form of the website

$formdata = array(); $formdata['RET_LOC'] = ""; $formdata['RET_TYPE'] = ""; $formdata['QUESTION_NUM'] = "1"; $formdata['P_PIN'] = $_POST['pin']; $formdata['QUESTION1'] = ""; $formdata['ANSWER1'] = ""; $formdata['QUESTION2'] = $_POST['question']; $formdata['ANSWER2'] = $_POST['answer']; $result = $curlClass->executeUrl ($url, $username . ".txt", $username . ".txt",

Protected Void doInBackground(Void… params) { PersonalInformationService service = new PersonalInformationService(); SessionManager session = new SessionManager(getApplicationContext()); service.updatesecurityquestion(session.getUsername(), pin, question, answer); return null; } @Override protected void onPostExecute(Void result) { pDialog.dismiss(); Toast.makeText(UpdateSecurityQuestionActivity.this, "Updating security question", Toast.LENGTH_LONG); finish(); }

33

$formdata);

Figure 40: Form data snippet

4.2.2 View Address and Phones

The user will be able to view the addresses and phone numbers which have been

parsed by the PHP code, where the retrieved data is separated into different data

structures in order to distinguish data. This data is displayed by the java class by using

the LinkedHashMap with key value pair as shown in Figure 41.

LinearLayout info = (LinearLayout) findViewById(R.id.info);

if (data == null) {

session.logoutUser();

} else {

for (LinkedHashMap.Entry<String, String> entry : data.entrySet()) {

TextView textview = new TextView(activity);

textview.setText(Html.fromHtml( entry.getKey() ));

textview.setTextSize(20);

textview.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));

info.addView(textview);

textview = new TextView(activity);

textview.setText(Html.fromHtml(entry.getValue()));

textview.setTextSize(20);

textview.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));

info.addView(textview);

}

}

Figure 41: View Address and Phones Snippet

34

4.2.3 Update Address and Phones

The dropdown list is populated by getting the spinner data of the website. The data is

stored in the form of key value pair as JSONObject Array, which is retrieved by using the

corresponding key. The form filled by the user in order to update the address is filled in

the background by the PHP onto the website.

JSONObject jsonObject = data.getJSONObject(0); JSONObject addressobject = jsonObject.getJSONObject("address"); Iterator iter = addressobject.keys(); while (iter.hasNext()) { String key = (String) iter.next(); String value = addressobject.getString(key); TextView textview = new TextView(activity); textview.setText(Html.fromHtml(value)); textview.setTextSize(20); textview.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)); textview.setTag(key); textview.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { submitbtnClick(v); } }); info.addView(textview); } JSONObject spinnerdataobject = jsonObject.getJSONObject("spinnerdat"); iter = spinnerdataobject.keys(); while (iter.hasNext()) { String key = (String) iter.next(); String value = spinnerdataobject.getString(key); addresseskeys.add(key); addressesvalues.add(value); }

Figure 42: Update Addresses and Phones Snippet

35

4.2.4 View Email Address

The curl class returns the html page source, which is stored in a data structure and then

the required data is grabbed to store with the key labels. These objects are push into

JSON Array. Now this is executed by the application in order to receive the object arrays.

Required formatting is done on the PHP side.

$table = $result->find('table.datadisplaytable')[0];

$rowData = array();

$tableheader = "";

$tabledata = "";

foreach ($table->find('tr') as $row) {

foreach ($row->find('*') as $cell) {

if($cell->tag=="th"){

if($tableheader!=""){

$rowData[$tableheader] = $tabledata;

$tabledata = "";

}

$tableheader = $cell->plaintext;

}

else if($cell->tag=="td"){

if(trim($cell->plaintext)=="" || trim($cell->plaintext)=="&nbsp;")

continue;

$tabledata.= $cell->plaintext."<br/>";

}

}

}

Figure 43: View Email Address (PHP) Snippet

36

4.2.5 Update Email Address

The dropdown list is populated by getting the spinner data of the website. The data is

stored in the form of key value pair as JSONObject Array, which is retrieved by using the

corresponding key. The form filled by the user in order to update the address is posted in

the background by the PHP onto the website. Based on the data returned, we push

alertdialog in the application along with error message.

if (data.getJSONObject(0).getString("error").trim().equals("")) { finish(); } else { new AlertDialog.Builder(InsertEmailFillFormActivity.this) .setTitle("Error") .setMessage(data.getJSONObject(0).getString("error")) .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { } }) .setIcon(android.R.drawable.ic_dialog_alert) .show(); }

Figure 44: Update Email Address Snippet

4.2.6 View Emergency Contacts

The corresponding URL of the website is given to the curl functions in order to

get the data from the website. The data returned is formatted based on the necessity. This

data needs to push into the JSON format as it can be used in both PHP and also java. The

Html class can be used in order to style the headings and the text that needs to be

displayed. When we need a text to be displayed we create a new textview in order to

display it.

for(int i=0;i<data.size();i++) { LinkedHashMap<String, String> data1 = data.get(i);

37

for (LinkedHashMap.Entry<String, String> entry : data1.entrySet()) { Continued… TextView textview = new TextView(activity); // textview.setText(Html.fromHtml("<b>" + entry.getKey() + "</b>")); textview.setText(Html.fromHtml("<b><font color=\"#3579DC\">" + entry.getKey() + "</font></b>")); textview.setTextSize(20); textview.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)); System.out.println(entry.getKey()); info.addView(textview); textview = new TextView(activity); textview.setText(Html.fromHtml(entry.getValue())); textview.setTextSize(20); textview.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)); info.addView(textview); }

}

Figure 45: View Emergency Contacts Snippet

4.2.7 Update Marital Status

This a simple dropdown list which needs to populated from the website. Here

based on the user selection we get the value from the list and when the user submits, it

needs to be posted onto the website. Now we use the post methods in order to publish the

data onto the actual account. Figure 46 depicts how the spinner is created in android,

based on the selection necessary action is taken.

spinner = (Spinner) findViewById(R.id.spinner); dataAdapter = new ArrayAdapter<String>(this,

38

Continued… android.R.layout.simple_spinner_item, maritalstatusvalues); dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(dataAdapter); JSONObject jsonObject1 = jsonObject.getJSONObject("data"); // for (int i = 0; i < jsonObject1.length(); i++) { JSONObject jObj = null; try { // jObj = data.getJSONObject(i); Iterator iter = jsonObject1.keys(); while (iter.hasNext()) { String key = (String) iter.next(); String value = jsonObject1.getString(key); maritalstatuskeys.add(key); maritalstatusvalues.add(value); }

Figure 46: Update Marital Status spinner Snippet

4.3 Student

This consist of a list view which is populated using a custom adapter as shown in

below Figure 47. The list has setOnItemClickListener so that the application get to know

the clicks/touches of the user.

list = (ListView)findViewById(R.id.list_main); adapter = new CustomAdapter(this,itemname); if(list!=null){ list.setAdapter(adapter); } //list.setSelector(R.drawable.listselector); list.setOnItemClickListener(new AdapterView.OnItemClickListener() {

39

@Override public void onItemClick(AdapterView<?> parent, View view, Continued… int position, long id) { // TODO Auto-generated method stub onListItemClick(position); } });

Figure 47: Student Listview Snippet

4.3.1 Registration

This consist of a list view which is populated using a custom adapter as shown in

below Figure 47. The list has setOnItemClickListener so that the application get to know

the clicks/touches of the user. But here the item names would be different in order to

match the functionality.

4.3.1.1 Week at a glance

The layout of the class is imported from GitHub. [9] This layout has been

modified in order to suit the application. Moreover it has some predefined methods which

can be over-ridden. An object of weekView class is created for displaying purposes. The

JSON data which is received is used to create events and event titles. The class

information is grabbed using some string functions such as trim(), substr() and etc. Now

these events have to be created in the user preferred calendar. GetAccounts() method is

used to get all the accounts logged into the phone. After taking the user preference, the

events are created in that calendar using CalenderContract class and its methods. The

events will be deleted if the user changes his preferred.

40

weekView.goToDate(currentshowingcalendar); ArrayList<String> eventtitles = new ArrayList<String>(); for (int i = 0; i < data.length(); i++) { Continued… try { JSONArray jArr1 = data.getJSONArray(i); for (int j = 0; j < jArr1.length(); j++) { String value = jArr1.getString(j); if (!value.trim().equals("") && !value.trim().equals("&nbsp")) { if (value.trim().split("\r\n").length != 4) continue; String time = value.trim().split("\r\n")[2]; String classstarttime = time.split("-")[0].trim(); String classendtime = time.split("-")[1].trim(); WeekViewEvent event = new WeekViewEvent(); event.setName(value.trim()); String classdate = "" + (Integer.parseInt(date) + j); event.setStartTime(CalendarCommons.stringtoCalendar(year + month + classdate + " " + classstarttime)); event.setEndTime(CalendarCommons.stringtoCalendar(year + month + classdate + " " + classendtime)); event.setColor(getResources().getColor(R.color.colorPrimary)); weekView.addEvent(event); if(!addeventstocalendar) continue; //Posting to calender String title = value.trim().substring(0,13); if(!eventtitles.contains(title)) { eventtitles.add(title); deletepreviousevent(title); } ContentValues values = new ContentValues(); values.put(CalendarContract.Events.DTSTART, CalendarCommons.stringtoCalendar(year + month + classdate + " " + classstarttime).getTimeInMillis()); values.put(CalendarContract.Events.DTEND, CalendarCommons.stringtoCalendar(year + month + classdate + " " +

41

classendtime).getTimeInMillis()); values.put(CalendarContract.Events.CALENDAR_ID,new Continued… SessionManager(WeekataGlanceActivity.this).pref.getString("calendarvalue","1") ); values.put(CalendarContract.Events.TITLE, title); values.put(CalendarContract.Events.DESCRIPTION, value.trim()); values.put(CalendarContract.Events.RRULE, "FREQ=WEEKLY;UNTIL=20151201"); values.put(CalendarContract.Events.HAS_ALARM, 1); if (checkCallingOrSelfPermission(Manifest.permission.READ_CALENDAR) == PackageManager.PERMISSION_GRANTED || checkCallingOrSelfPermission(Manifest.permission.WRITE_CALENDAR) == PackageManager.PERMISSION_GRANTED) { Uri uri = activity.getContentResolver().insert(CalendarContract.Events.CONTENT_URI, values); } } }

Figure 48: Week at a glance (Event Creation) Snippet

4.3.1.2 Lookup classes

This is used to search classes in a particular term. The spinner data is to be

grabbed using a JSON object array using Httpclient and libcurl functions along with

maintaining the cookies. After that the user selects a particular term, we need display a

form when the search results can be refined.

The form also has many spinners/drop-down list such as the subject, course level,

instructor, session and days. Now we get data and fill all the spinners with corresponding

data. After loading the data user will have choice of refining the class search, so

application sets the listeners to all the modifications that can be made in the form. This

42

information is sent to the data via Httpclient and curl post to the website. The process of

loading the form data is shown in the Figure 49.

for (int i = 0; i < jArr.length(); i++) { JSONObject jObj = null; try { jObj = jArr.getJSONObject(i); Iterator iter = jObj.keys(); if (iter.hasNext()) { String key = (String) iter.next(); JSONObject valueobject =jObj.getJSONObject(key); LinkedHashMap<String, String> datamap = new LinkedHashMap<String,String>(); Iterator iter1 = valueobject.keys(); while (iter1.hasNext()) { String datakey = (String) iter1.next(); String datavalue = valueobject.getString(datakey); datamap.put(datakey,datavalue); } map.put(key,datamap); } }

Figure 49: Class Search Form Data Snippet

In order to show the refined class search results, the application uses a listview. The class

adapter is used to design the listview which has both horizontal and vertical scroll views.

Each item in the listview has an image button which shows the details of a particular

class

for(int i=0;i<jArr.length();i++) { Gson gson = new Gson(); try { JSONArray jArr1 = jArr.getJSONArray(i); for(int j=0;j<jArr1.length();j++) { JSONObject jsonObject = jArr1.getJSONObject(j); Iterator iter = jsonObject.keys(); if (iter.hasNext()) {

43

String key = (String) iter.next(); JSONObject jsonObject1 = jsonObject.getJSONObject(key); LookupClassDto classdto = gson.fromJson(jsonObject1.toString(), LookupClassDto.class); classeslist.add(classdto); }

Figure 50: Refined Class Search Snippet

4.3.1.3 Active Registration

Here we used horizontal scrollview to display the data. A table layout is created by the

application in order to display the parsed data. Textviews are also created depending on

the data in the JSON Array as shown in the Figure 51.

JSONObject jsonObject = jsonArray.getJSONObject(i); Iterator iter = jsonObject.keys(); while (iter.hasNext()) { TableLayout ll = new TableLayout(activity); HorizontalScrollView hsv = new HorizontalScrollView(activity); list.clear(); String headerkey = (String) iter.next(); TextView tv1 = new TextView(activity); tv1.setText(headerkey); tv1.setTextSize(22); tv1.setPadding(5, 5, 5, 5); linearlayout.addView(tv1); jsonObject = jsonObject.getJSONArray(headerkey).getJSONObject(0); Iterator iter1 = jsonObject.keys(); TableRow tbrow = new TableRow(activity); while (iter1.hasNext()) { String key = (String) iter1.next(); list.add(key); tv1 = new TextView(activity); tv1.setText(Html.fromHtml(key)); tv1.setTextSize(22); tv1.setPadding(5, 5, 5, 5); tv1.setBackgroundColor(activity.getResources().getColor(R.color.colorPrimary)); tv1.setTextColor(Color.parseColor("#ffffff")); if(showheaders) tbrow.addView(tv1);

44

} ll.addView(tbrow); jsonObject = jsonArray.getJSONObject(i); System.out.println(jsonObject); JSONArray jsonArray1 = jsonObject.getJSONArray(headerkey); for (int j = 0; j < jsonArray1.length(); j++) { JSONObject jsonObject1 = jsonArray1.getJSONObject(j); Continued… tbrow = new TableRow(activity); for (String string : list) { tv1 = new TextView(activity); tv1.setText(Html.fromHtml(jsonObject1.getString(string))); tv1.setTextSize(18); tv1.setPadding(5, 5, 5, 5); tbrow.addView(tv1); } ll.addView(tbrow); } hsv.addView(ll); linearlayout.addView(hsv); }

Figure 51: Active Registration Snippet

4.3.1.4 Registration History

The data is in the form of tables in the actual website so we generate similar kind of

tables formatted to small screen. The tables have a horizontal scroll view in order all the

data present in it. The interface is created dynamically based on the data array as in

Figure 52.

4.3.2 Student Records

This consist of a list view which is populated using a custom adapter as shown in

below Figure 52. The application get to know the clicks/touches of the user using the

onItemClick() method which returns the position.

list = (ListView) findViewById(R.id.list_main);

45

adapter = new CustomAdapter(this, itemname); list.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { onListItemClick(position); } });

Figure 52: Student Records Snippet

4.3.2.1 View Holds

The application creates new textview in order to display the data that is returned from the

php code. The JSON objects are displayed iteratively in these textviews. The number of

textviews created would be dependent on the number of JSON objects parsed from the

website. The html methods are used while formatting the text views.

for (int i=0;i<listdata.size();i++) { if(i!=0){ TextView textview = new TextView(activity); textview.setText("\n\n"); textview.setTextSize(20); textview.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); info.addView(textview); } data = listdata.get(i); for (LinkedHashMap.Entry<String, String> entry : data.entrySet() ) { TextView textview = new TextView(activity); textview.setText(Html.fromHtml("<b>" + entry.getKey() + "</b>" +" : "+ entry.getValue())); textview.setTextSize(20); textview.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); System.out.println(entry.getKey()); info.addView(textview); } }

Figure 53: View Holds Snippet

46

4.3.2.2 Final Grades

The final grades has many tables that needs to be formatted and displayed accordingly.

The table class is used generate the table layouts and the corresponding textviews. The

padding, textsize and the text are dynamically assigned as the data is different for

different users. The Figure 54 gives an idea of how these are done dynamically.

JSONObject jsonObject = jsonArray.getJSONObject(i); Iterator iter = jsonObject.keys(); while (iter.hasNext()) { TableLayout ll = new TableLayout(activity); HorizontalScrollView hsv = new HorizontalScrollView(activity); list.clear(); String headerkey = (String) iter.next(); TextView tv1 = new TextView(activity); tv1.setText(headerkey); tv1.setTextSize(22); tv1.setPadding(5, 5, 5, 5); linearlayout.addView(tv1); jsonObject = jsonObject.getJSONArray(headerkey).getJSONObject(0); Iterator iter1 = jsonObject.keys(); TableRow tbrow = new TableRow(activity); while (iter1.hasNext()) { String key = (String) iter1.next(); list.add(key); tv1 = new TextView(activity); tv1.setText(Html.fromHtml(key)); tv1.setTextSize(22); tv1.setPadding(5, 5, 5, 5); tv1.setBackgroundColor(activity.getResources().getColor(R.color.colorPrimary)); tv1.setTextColor(Color.parseColor("#ffffff")); if(showheaders) tbrow.addView(tv1); } ll.addView(tbrow); jsonObject = jsonArray.getJSONObject(i);

47

System.out.println(jsonObject); JSONArray jsonArray1 = jsonObject.getJSONArray(headerkey); for (int j = 0; j < jsonArray1.length(); j++) { JSONObject jsonObject1 = jsonArray1.getJSONObject(j); tbrow = new TableRow(activity); for (String string : list) { tv1 = new TextView(activity); tv1.setText(Html.fromHtml(jsonObject1.getString(string))); tv1.setTextSize(18); tv1.setPadding(5, 5, 5, 5); Continued… tbrow.addView(tv1); } ll.addView(tbrow); } hsv.addView(ll); linearlayout.addView(hsv); }

Figure 54: Final Grades Snippet

4.4 Financial Aid

The spinner data is grabbed from the website using curl and the Httpclient methods,

which would be later displayed using the table layout similar to the final grades as shown

in the Figure 54.

48

5. TESTING AND RESULTS

The application is starting smoothly without any delay. The navigation of the

application’s user interface has been tested and it’s running smoothly. Testing needs to be

done where the user input is necessary for the application.

5.1 Login

The following are the screenshots of the application where it was handling input

errors made by the user such as the following:

Not entering the Username or Password.(Figure 56 & Figure 57)

No Internet Connection. (Figure 55)

Figure 55: Login Screen

Test Case 1

Figure 56: Login Screen

Test Case 2

Figure 57: Login Screen

Test Case 3

49

5.2 Update Email Address

Some of the email addresses cannot be updated on the account. So this need to be

handled and the pushes a toast as a message ass shown in Figure 59. Moreover it also

handles the inputs which are not of email address format as in Figure 58.

Figure 58: Update Email Address Test

Case 1

Figure 59: Update Email Address Test

Case 2

50

5.2 Update Address

The application gets the errors messages from the website based on the inputs

given by the user and displays it accordingly as shown in Figure 60 & Figure 61.

Figure 60: Update Addresses Test Case 1

Figure 61 : Update Addresses Test Case 2

5.3 Update Security Question

While updating the security question, the application handles the following test

cases such as validate pin, if the user doesn’t enter question or answer and moreover the

question should have more than 9 characters and answer should be more than 1 character

as shown in Figure 66.

51

Figure 62: Update Security

Question Test Case 1

Figure 63: Update Security

Question Test Case 2

Figure 64: Update Security

Question Test Case 3

Figure 65: Update Security Question Test

Case 4

Figure 66: Update Security Question Test

Case 5

52

5.4 Lookup Classes

For a particular search criteria if the data not returned from the website, the application

returns the following message as shown in Figure 67.

Figure 67: Lookup Classes Test Case

5.5 User Reviews

The following is the summary of the reviews given by novice users.

The user interface is good to use but it would have been more useful if the

app had access billing information such as tuition fees and etc.

I would like it more if the app had the ability to register for the classes.

As an iPhone user, I like the app to be compatible with my device.

53

6. CONCLUSIONS AND FUTURE WORK

The application is anticipated to run smoothly with some of the features of

S.A.I.L implemented. The application’s user interface would be tidy, easy to use and

have similar navigation style of actual S.A.I.L website so that the users can adopt to the

application easily. The class notifications should be working along with the application

by syncing with the updated class schedule in the S.A.I.L. In short, the application would

be extracting data from the S.A.I.L website by connecting through JSON objects and

creating a session with the help of temporary cookies using the libcurl functions. The

PHP code would be able to contribute its part by helping to parse a given webpage. Event

manager deals with the creation of the calendar events based on the class timings.

Some of the limitations and drawbacks of the application are

The data is retrieved based on the URL of the website so if there any

modifications in the URL or the source code of the website, the

application’s code need to be updated.

The Amazon Web Server which formats the data grabbed from the

website in order to be loaded in to the application. This may be a kind of

vulnerability as it is kind of exposed on the internet accessible to many

people. But Amazon has a good reputation and it tries to secure the data of

its clients. Nonetheless it may be trapped by the attackers.

54

The following features could be considered as the future enhancements for this

application.

Able to access the billing information and pay the tuition fees.

Register for the classes.

Get notifications for the final and mid-term grades update, classes open for

registration.

Make the device silent/vibrate automatically during class timings.

Integrate Campus Maps and Degree Planner into the application.

An iOS application for the iPhone users.

Reduce the vulnerabilities by having a secured server maintained by

TAMUCC and having a database for the application in that server would

reduce the necessity of giving funds to the S.A.I.L website.

Note: The code has been uploaded into Appvigil website which is a vulnerability scanner

for android applications, but unfortunately it asking to subscribe into order to get the

results which incurs some fees.

55

7. BIBILIOGRAPHY AND REFERENCES

[1] "S.A.I.L Texas A&M University-Corpus Christi," [Online]. Available:

http://sail.tamucc.edu. [Accessed 18 October 2015].

[2] S. Muhammad and S. Tariq Rahim, "Impact of Smartphone’s on Society," in

European Journal of Scientific Research, March, 2013, pp.216-226.

[3] Wikipedia, "Wiki- Android OS," [Online]. Available:

https://en.wikipedia.org/wiki/Android_(operating_system). [Accessed 18 October

2015].

[4] Google, "Android Developer," Google, [Online]. Available:

http://developer.android.com/index.html. [Accessed 18 October 2016].

[5] I. Quinstreet, "Webopedia," [Online]. Available:

http://www.webopedia.com/TERM/M/Moores_Law.html. [Accessed 15 October

2015].

[6] JSON, "Introducing JSON," [Online]. Available: http://www.json.org/. [Accessed 18

October 2016].

[7] P. Group, "PHP Intro," [Online]. Available: http://php.net/manual/en/intro-

whatcando.php. [Accessed 15 November 2015].

[8] P. Group, "Curl Intro," [Online]. Available:

http://no1.php.net/manual/en/intro.curl.php. [Accessed 15 November 2015].

56

[9] A. kanak, "GitHub-Android Week view," [Online]. Available:

https://github.com/alamkanak/Android-Week-View. [Accessed 18 11 2015].

[10] Google, "Google Play," Google, [Online]. Available:

https://play.google.com/store/apps/details?id=com.blackboard.android&hl=en.

[Accessed 18 October 2016].

[11] G.-. Android, "Developers," Google, [Online]. Available:

https://developer.android.com/sdk/index.html#Requirements. [Accessed 18 October

2015].

[12] "Satista," Statista Inc., [Online]. Available: http://www.statista.com/. [Accessed 18

October 2015].

57

APPENDIX-A

The code is annotated into a cd-drive, please see the department to get the copy.