an easy to use web-based tool for tracking members and jobs

20
THE LIGHT An easy to use web-based tool for tracking members and jobs

Upload: elisabeth-thornton

Post on 21-Jan-2016

218 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: An easy to use web-based tool for tracking members and jobs

THE LIGHT

An easy to use web-based tool for tracking members and jobs

Page 2: An easy to use web-based tool for tracking members and jobs

Our Team

Kevin Tiller Senior in Computer Science, responsible for

Tier 1: web-site design, server, and UI implementation

David Thomas Senior in Computer Engineering, reponsible

for Tier 2: PHP design, Documentation Clinton Thomas

Senior in Computer Engineering, responsible for Tier 3: MySQL server, database design and SQL implementation

Page 3: An easy to use web-based tool for tracking members and jobs

WEBSITE DESIGNUSER INTERFACE

Kevin Tiller

Page 4: An easy to use web-based tool for tracking members and jobs

Why The Light?

Looking to be a part of the crowd of people crazy about other people? Yearning for unity? You've come to the right place! The Light is a group devoted to bringing people together, regardless of association with campus ministries, to fellowship together while learning about our Lord and Savior Jesus Christ. We believe that having a grounded understanding of our faith is essential to being able to know Him and make Him known to others.

Page 5: An easy to use web-based tool for tracking members and jobs

Why Tabs?

Single load Once loaded the site no longer requires internet

connection for basic functionality. jQuery Implementation

Using the jQuery library simplifies the design of a “Tabbed” interface

Aesthetically pleasing UI Leadership of “The Light” liked the way it looked

Easy organization Allows for grouping and sub-grouping while

staying simple enough for non-technical leaders to edit.

Page 6: An easy to use web-based tool for tracking members and jobs

Why so much work?

Why 700 lines of interface for such a relatively small database? UI is what people see and what they

remember Nobody will use the most efficient database if

they can’t figure out how to get in and get stuff out

JavaScript is awesome?

Page 7: An easy to use web-based tool for tracking members and jobs

Demo Check it out at: www.thelight.pcriot.com

Page 8: An easy to use web-based tool for tracking members and jobs

MIDDLE LAYERDavid Thomas

Page 9: An easy to use web-based tool for tracking members and jobs

Decisions on Code

Middle Layer acts as the logical base for database insertion and query

Choices available - Java Server Pages - PHP (Hypertext Preprocessor) - CGI (compiled C/C++)

Originally intended on using JSP, but hosting service does not support

Decision was reached to use PHP

Page 10: An easy to use web-based tool for tracking members and jobs

PHP Magic

PHP can be inserted inline with HTML, or called as a script from the HTML design file

Commands interpreted by server with a PHP language processor module

Lightweight, lazy typed scripting langauge with rich history and plenty of examples available online

Easy to use query interface to MySQL databases

Page 11: An easy to use web-based tool for tracking members and jobs

Example MySQL Insert - PHP

This example connects to our local database

Inserts record from HTML form into the database using SQL INSERT statement

Handles errors thrown by SQL server

Displays a success message if completed without error

Code can be executed inline with HTML, or as a separate script

<?php$con = mysql_connect("localhost","dbadmin_group14","group14");if (!$con) { die('Could not connect: ' . mysql_error()); }

mysql_select_db("dbadmin_thelight", $con);

$sql="INSERT INTO Tasks ( taskID, taskName, taskType, taskDate)VALUES('NULL','$_POST[taskname]','$_POST[tasktype]','$_POST[taskdate]')";

if (!mysql_query($sql,$con)) { die('Error: ' . mysql_error()); }echo "Task sucessfully created!";

mysql_close($con)?>

Page 12: An easy to use web-based tool for tracking members and jobs

Example MySQL Insert Page

Page 13: An easy to use web-based tool for tracking members and jobs

Query-Insert Example

In this example, we ask the user for their first and last name, as well as the task name and date they would like to register for

The information is brought it from the HTML, and a query for the memberID and taskID values is generated

The returned results are inserted into the relation-table VolunteersFor

<?php$con = mysql_connect("localhost","dbadmin_group14","group14");if (!$con) { die('Could not connect: ' . mysql_error()); }$dbname="dbadmin_thelight";mysql_select_db($dbname, $con);

$memberquery ="select memberID from Members WHERE firstname=$_POST[firstname] AND lastname=$_POST[lastname]";$memberresult = mysql_db_query($dbname, $memberquery) or die("Failed Query of " . $memberquery); //do the query$mID=mysql_fetch_row($memberresult);

$taskquery ="select taskID from Tasks WHERE taskName=$_POST[taskName] AND taskDate=$_POST[taskDate]";$taskresult = mysql_db_query($dbname, $taskquery) or die("Failed Query of " . $taskquery); //do the query$tID=mysql_fetch_row($taskresult);

$sql="INSERT INTO VolunteersFor ( taskID, memberID)VALUES('$tID','$mID')";

if (!mysql_query($sql,$con)) { die('Error: ' . mysql_error()); }echo "Volunteer sucessfully registered!";

mysql_close($con)?>

Page 14: An easy to use web-based tool for tracking members and jobs

Query-Insert Example Page

Page 15: An easy to use web-based tool for tracking members and jobs

DATABASE DESIGNAND IMPLEMENTATION

Clinton Thomas

Page 16: An easy to use web-based tool for tracking members and jobs

Database Selection

For the data management section of the design, MySQL was chosen as the backend DBMS

Reasons for selection- well documented- multi platform (Windows and Linux)- supported by our hosting service

XML and Microsoft SQL Server also considered

Reasons for not being selected- XML is slower when the DB grows much larger- Microsoft = lame

Page 17: An easy to use web-based tool for tracking members and jobs

MySQL

Most widely used DBMS by Internet pages, due to open-source design and strong documentation

Accepts most standard SQL queries, offers several options for collation, data engines, etc.

Offers powerful, community developed creation tools for use in database design

MySQL server allows for local and remote execution of search queries

Page 18: An easy to use web-based tool for tracking members and jobs

MySQL Database Schema Members (memberID: integer, firstname: string, lastname: string, email: string,

address: string, phone: string)

Groups (groupID: integer, groupName: string, groupSize: integer)

Expenses (expenseID: integer, taskID: integer, amount: real)

Tasks (taskID: integer, taskName: string, taskType: string, taskDate: string)

Donations (donationID: integer, amount: real)

VolunteersFor (memberID: integer, taskID: integer)

ClaimsExpense (memberID: integer, expenseID: integer)

LeaderOf (memberID: integer, groupID: integer, since: string)

ClaimsDonation (memberID: integer, donationID: integer)

EventSchedule(scheduleID: integer, date: string, topic: string, leader: string)

Page 19: An easy to use web-based tool for tracking members and jobs

MySQL Database Model

Page 20: An easy to use web-based tool for tracking members and jobs

MySQL Database Generation

#SQL commands to generate "The Light" database

# delete the database if it already exists drop database if exists thelight;

#create a new database named thelight create database thelight;

#switch to the new database use thelight;

#Tables CREATE TABLE Members ( memberID INT AUTO_INCREMENT, firstname VARCHAR(64), lastname VARCHAR(64), phone VARCHAR(16), email VARCHAR(64), address VARCHAR(64), PRIMARY KEY (memberID, firstname, lastname) );

CREATE TABLE Tasks ( taskID INT AUTO_INCREMENT, taskName VARCHAR(64), taskType VARCHAR(64), taskDate DATE, PRIMARY KEY (taskID) );

CREATE TABLE VolunteersFor ( taskID INT, memberID INT, PRIMARY KEY (taskID, memberID), FOREIGN KEY (taskID) REFERENCES Tasks (taskID), FOREIGN KEY (memberID) REFERENCES Members (memberID) );

CREATE TABLE Donations ( donationID INT AUTO_INCREMENT, amount FLOAT, PRIMARY KEY (donationID) );

CREATE TABLE ClaimsDonation ( memberID INT, donationID INT, PRIMARY KEY (memberID, donationID), FOREIGN KEY (memberID) REFERENCES Members (memberID), FOREIGN KEY (donationID) REFERENCES Donations (donationID) );

CREATE TABLE Expenses ( expenseID INT AUTO_INCREMENT, taskID INT, amount FLOAT, PRIMARY KEY (expenseID, taskID) );

CREATE TABLE ClaimsExpense ( memberID INT, expenseID INT, PRIMARY KEY (memberID, expenseID), FOREIGN KEY (memberID) REFERENCES Members (memberID), FOREIGN KEY (expenseID) REFERENCES Expenses (expenseID) );

CREATE TABLE Groups ( groupID INT AUTO_INCREMENT, groupName VARCHAR(64), groupSize INT, PRIMARY KEY (groupID) );

CREATE TABLE LeaderOf ( memberID INT, groupID INT, since DATE, PRIMARY KEY (memberID, groupID), FOREIGN KEY (memberID) REFERENCES Members (memberID), FOREIGN KEY (groupID) REFERENCES Groups (groupID) );

CREATE TABLE EventSchedule (scheduleID INT,date DATE,topic VARCHAR(128),leader VARCHAR(48),PRIMARY KEY (scheduleID, date) );