wireless sensor networks (wsns) consist of small low-power...
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
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)==" ")
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(" ")) { 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].