Author: Alexander Davis

Definition, Investigation and Analysis 3
Definition – nature of the problem to be investigated 3
Investigation and Analysis 3
Design 8
Nature of the solution 8
Algorithms 14
Test strategy 18
Software Development and Testing 19
Software Development 19
Testing 43
Documentation 46
Evaluation 47
Discussion of the degree of success in meeting the original objectives 45
Evaluate the user’s response to the system 45
Desirable extensions 45

Computing Project
Definition, Investigation and Analysis
Definition – nature of the problem to be investigated
Naturalists require a platform to note down their findings in a notepad during walks; this can develop into an issue if vast amounts of paper and books build up and make it hard to find specific information from previous walks. Many naturalists upload their information to forums or websites to provide information to other naturalists that walk in the same areas however, the paper versions are simply scanned in and the process of analysing the data becomes increasingly difficult and could be misinterpreted due to the image quality of the paper copy and the information could be incorrect. Computerising this process will make it easier for both the naturalist and other walkers in the area. It would also help prevent the loss of any data that could be lost on paper copies. It would also standardise the data being shared with other naturalists.
The end user I am using to test my project will be Keith Davis. This is because he is a frequent visitor on nature trails such as the Coundon Wedge trails and the Brandon Marsh trails. I am unsure whether Keith is a user of the forums however I will ask him this in the interview.
Investigation and Analysis
I emailed my end user on Wednesday 19th September at 10:14:
My end user responded to me on 26 September 2012 at 00:52:
Below is a transcript of the meeting:
Me: Hello Mr Davis. Thank you for giving the time to meet.
Mr Davis: No worries what is the first question you wanted to ask?
Me: What methods do you currently use to enter data?
Mr Davis: Hand written notes transferred onto simple spreadsheets and sometimes into the notebooks kept.
Me: Ok, what data do you actually collect?
Mr Davis: Species name, Location, date and additional comments.
Me: Do you take pictures of these findings when you find them or do you use your notes?
Mr Davis: Yes if I can get close enough but that is not very often.
Me: So would including a picture feature to the system help when you are looking through them?
Mr Davis: Yes, it would, I currently have to search for images on search engines. I have a pictorial life list for world and local birds. Naturalists keep two lists, one for their own country and sub lists of areas of interest. I have Crackley Woods, Coombe Abbey, Middleton Hall, Kingsbury Water Park and Brandon Marsh. My local list includes local countryside areas such as the Coundon Wedge.
Me: How often would you update your information and go on these walks?
Mr Davis: Well if the weathers good, once a week.
Me: would you prefer to update the information when you get home or would you use mobile devices such as laptops and smartphones to update the data.
Mr Davis: I would definitely come home and sit at my desk with a pint of beer in one hand and a plate of chips in the other. I strongly dislike laptops and smartphones.
Me: Ok, what type of internet cable do you have at home? Is it Fibre-Optic Cable or does it use standard copper wire? What speeds do your network connections average out around?
Mr Davis: The internet connection into my household is a standard ‘state of the art’ Virgin Media fibre-optic broadband connection. The speed is around 20MB to 30MB.
Me: I might build a database online meaning every time you open and close the program, the system would have to connect and update the data on both ends. Would having to wait for the program to load up or shut down affect how you work? What sort of time do you find an appropriate amount of time to wait?
Mr Davis: No, it doesn’t affect how I would work and I would probably think about 5 minutes is the most I would expect to wait for.
Me: Would you fine that other information from other naturalists help you when you’re updating your own information if you observe a new species for example?
Mr Davis: Oh yes, I make a special record of new species I see which aren’t many nowadays but they have to be checked out. Also there are lots of species of birds where they have drastic seasonal plumage changes. Waders and ducks especially can be difficult at certain times of the year and I often have to go online to confirm with other images that the species I have identified has been identified correctly.
Me: Ok, so would season also be an important field you would enter?
Mr Davis: Yes, because there are four seasons to birding. There is winter, then spring migration, there’s summer when the summer migrants are in and then autumn migration. Each season bring in specifically different types of bird into this area although they all migrate to the same place, lots of species migrate one way into the country and another way out. The incoming and outgoing migrations cover different parts of the country.
Me: Could I scan a copy of your live data in so I can make sure the designs are correct?
Mr Davis: Sure, you are more than welcome to.
Me: Where do you usually go to take recording such as a designated nature reserve or just a local park?
Mr Davis: I this area, there are some very good nature reserves to visit and they are quite close to each other.
Me: So if a park was well known in the area you would be in and it was well known for its sightings but was not a designated nature reserve, would you go there to see what you could find?
Mr Davis: Yes, I would go there.
Me: Would that be another field to add to the system then, a field for the type of location?
Mr Davis: Yes, the habitat and location, whether it is a reserve or otherwise.
Me: Thank you for meeting up. I think that’s all the questions; do you have any questions for me?
Mr Davis: I don’t think I have any questions for you. I will contact you if I have any extra. I hope you have got all the answers you required.
After the interview, I emailed Keith on the 10th October 2012 with the following:
Mr Davis gave me a copy of some general data he would usually write into his notebook which is shown below:
He also gave me a copy of species counts he keeps after walks which is shown below:

Requirements Specification
The system will require the following:
Ability to share information easily
This will include a remote database or online storage space to hold all the information
System design needs to be intuitive and easy to use
Needs to be accessible to anyone with the option for contributors to add information
Display information clearly
Hold the following information:
Contributor Name
Date observation taken/entered
Season for type of animal
Species name
Location
Type of location
Additional comments
Photo storage facility so contributors are able to include photos to the observations
From extra conversations for Keith. The system must be an installed program that connects to an online database.

Operating System Platforms	Microsoft Windows (Windows 7 or later)
System Updates	Latest updates available including service packs
Additional Software	.NET Framework 2.0 and 4.0 / MYSQL Connector (latest version)
Processor	Recent processors by Intel and AMD e.g. dual core
RAM	2GB minimum
Hard Disk Space	At least 120GB
Video Cards (for photo uploads)	1366x768 or similar 16:9 resolution
Peripherals	Mouse and keyboard, photo storage device reader
Network Connectivity	Broadband connection wired or wireless

Design
Nature of Solution
Design Specification
Data Designs
Below are tables to represent how records are stored in the database. These tables include headings I will be using when I create the database. There is a separate table for specific areas of the system. Each table with Follow the format shown below:

Feature	Where feature would be found in the system	What does it need to do?
Login	At the beginning, to ensure that personal lists are correct and that users can personalise their user areas	Allow users to access a personalised version of the system
Online Database	The database holds all the information required by the software and the user. The database can be updated within the software	Hold all information used on the system
Input Form for New species		Allow new data to be added to the database	Data entered for a new species include: Name, Date of New Find, Location, Description of Species
Input form for new sighting			Data entered for a new sighting include: Name, Date of Entry, Location, Description of Sighting, Weather at Location
Lists feature	On welcome screen in the personal area	List all data to the users
Life List	On welcome screen in the personal area	Lists complete user’s species findings.
Knowledge Base	On welcome screen in the personal area	Allows users to view other users’ findings and view possible locations to go to.
Intuitive Interface	Allows the program to run effectively and help the user navigate round the software without having to call up support or use the user guides often.	Allow users to navigate and use the system easily		Tooltips will be added to forms explaining the use of each object on the screen. Screens will be very concise
Search	User can easily find information on a specific species.	Allow users to search for specific data using criteria, e.g. Species, Location, Time of Year and Contributor.
Update to database	This feature ensures the data the users want to access is up to date.	Upload all modified data to the database in real-time
Administrator account	This will allow technical support to be carried out. It will also allow easy updates within the system	All of the above and change the system that other users would not be able to do.

Field Heading On System
Data Type
Special Formatting or Requirements
Use

Users Table
Below is the table for users that the system will use throughout:
Below is the table for species
Species Table
Below is the table for Locations
Location Table
Design
Below are the designs for my software:
“Figure 1” will be the design for the login area where users can access their personal data, update their life lists and add their recent walks.
I emailed Keith asking he wanted a login system to protect his information, he responded with it would be preferable as personal data wouldn’t be mixed with other peoples.
Users are required to access the system using an account which they can create for free. There is a guest button on the login form which only gives allows users to view knowledgebase entries.
“Figure 2” is the welcome screen for normal users. It will give them access to their personalised area and the Knowledge Base where contributors have uploaded their findings from their personal area and do some extra research on any species they have not found before.
“Figure 3” and “Figure 4” are the input forms for any new finds or modifications to finds. They are identical however the edit finds will already have data entered into the fields. Data validation will be carried out when the user clicks submit and will feedback to the user using a generic dialogue box.
“Figure 5”and “Figure 6” are the new and edit location forms. Similar to the find forms, both new and edit are identical with a few modifications. Again, data validation will be carried out and feedback will be given to the user using a generic dialogue box.
When the user selects to edit a record, they will be directed to the search page found in the knowledge base.
“Figure 7” is the My Life List area. Users are able to update their life lists. The data is then saved onto the User_Species Table.
“Figure 8” is the Knowledge Base search area where users can search for other users, locations, species, seasons and other nature information such as news. Users can then select the specific entries displayed in the results box. The entry would then be shown on the screens labelled “Figure 9” and “Figure 10”.
“Figure 11” is the My Account Area where users can change their email address used to recover their account and reset their password. They will also be able to enter a nickname for any entries they upload to the knowledge base.
Users on the system will also have their own profile where other users would be able to see common interests and the location of users. This would help other users track findings and common areas other users would go to.
Algorithms
I have written some algorithms ready for coding:
Login
My login checking algorithm is shown below, the variables used in this are LoginUsername, LoginPassword, LoginInput, PasswordInput, DatabaseUsername and DatabasePassword
Input UsernameInput
Input PasswordInput
Input Enter
LoginUsername = DatabaseUsername
If UsernameInput Is Nothing OR PasswordInput Is Nothing Then
Output ‘Please enter your login details’
Else
If UsernameInput IsNot LoginUsername OR PasswordInput IsNot LoginPassword Then
Output "Incorrect Login Information"
Else
Output ’Welcome, You have successfully logged in"
Close current window
Display welcome Screen
End If
End If
New Species Form
Below is the code to input and upload any data the user has.
Variables: Species, Date, Location, Season, Image, Additional_Comments
Input Species
Check Species entered
Input Date
Check date follows DD/MM/YYYY
Input Location
Check location entered
Input Season
Check season entered
Input Image
Input Additional Comments
Input Submit
Update User_Species
Edit Species Form
Below is the code to input and upload any data the user has.
Variables: Search, Entry, Species, Date, Location, Season, Image, Additional_Comments
Input Search
Select Entry
Open Entry
Input Species
Check species entered exists
Input Date
Check date follows DD/MM/YYYY
Input Location
Check location entered
Input Season
Check season entered
Input Image
Input Additional Comments
Input Submit
Append User_Species
New Location Form
Below is the code to input and upload any data the user has.
Variables: Location, Address, Entry_Price, Opening_Times, Contact_Details, Additional_Comments
Input Location
Check Location entered does not exist
Input Address
Input Entry_Price
Check Entry_Price entered
Input Opening_Times
Input Contact_Details
Input Additional Comments
Select Submit
Update Location
Edit Location Form
Below is the code to input and upload any data the user has.
Variables: Location, Address, Entry_Price, Opening_Times, Contact_Details, Additional_Comments
Input Search
Select Entry
Open Entry
Input Location
Input Address
Input Entry_Price
Check Entry_Price entered
Input Opening_Times
Input Contact_Details
Input Additional Comments
Select Submit
Append Location
Life List
Below is the code used to update the user’s life list.
Variables: Username, Life_List, Yes_No
Procedure(Update_Life_List)
Input Life_List
Output “Finished Updating Life List?”
Input Yes_No
If Yes_No NotTrue Then
Call Procedure(Update_Life_List)
EndIf
Append User_Species
Search
Below is the code for searching the knowledgebase.
Variables: Search_Criteria, Search_Entry, Search_Results, Results_Available
Procedure(Search)
Input Search_Criteria
Repeat
Load Search_Entry
If Search_Entry contains Search_Criteria then
Display Search_Entry
Results_Available = True
Call Procedure(Search)
Else
Call Procedure(Search)
EndIf
Until Search_Entry = End Of File
If Results_Available = False Then
Output “No Results Found”
EndIf
Test Strategy

User_ID	Username	Password	Email_Address	Contributor_Name	About_User
AutoNumber	String	String	String	String	String
Field Is updated Automatically	Maximum of 15 characters	Maximum of 15 / characters / Characters in the table will be masked for security	Maximum of 50 characters / Data validation will be carried out to ensure that it follows a ____@___.___ format	Maximum of 20 characters
Primary Key Field	Stores username	Stores password	Stores user’s recovery email address	Stores user’s nickname	Stores / user’s / Profile / paragraph

Opening_Date	Entry_Price	Website	Contact_Details	Opening_Times	Location_Owner	Address	Location	Location_ID
Date/Time	Currency	String	String	String	String	String	String	AutoNumber
	If entry is free, enter £0.00 however display FREE! on interface	Store as hyperlink	Store number and if possible email address	Field may not be required				Field is automatically updated
Stores date location was opened	Stores the price for entry	Stores web address of location and/or owners	Stores contact details of location and / owners	Stores opening times of location	Stores owners of location	Stores locations address	Stores locations	Primary Key Field

Species_ID	Species_Name
AutoNumber	String
Field is automatically updated	Maximum of 50 characters
Primary Key Field	Stores species’ name

Below is the link table that the program will append, update and query
User_Species_Link
System Flowcharts
I have created system flow charts to display all the tasks that Keith wants within the system. This includes any database interaction that is required. I have decided to split the program into 2 main sections, a Personal Area and a Knowledge Base. This has been shown in more detail in the flowchart I have designed.

Date	Species_ID	User_ID	Location_ID	Season
Date/Time	Number	Number	Number	String
	Foreign Key	Foreign Key	Foreign Key	Selection of 4: Spring, Summer, Autumn, Winter
Stores Date Of Entry	Stores Species Found	Stores User	Stores Location Found At	Stores Season Species Found in

Figure 1

Figure 2

Figure 3

Figure 4

Figure 5

Figure 6

Figure 7

Figure 8

Figure 9

Figure 10

Figure 11

Reason	Data Input	Expected Output
Login Area
To make sure login works	Login: Admin, password	Welcome Administrator
To make sure error messages appear	Login: Admin, paswod	Incorrect Login Information
Validation	nothing	Please enter you login details
Species Form
Date Validation	01/12/2012	Date Accepted
	00/13/9999	Please enter a correct date
	29/02/2012	Date Accepted
	nothing	Please enter a date
Species Entered	nothing	Please enter a species
Location Entered	nothing	Please enter the location
Season Entered	nothing	Please enter the season
New Location Form
Location Is New	Coundon Wedge	Location Accepted
New And Edit Location Forms
Entry Price Entered	£5	Price Accepted
	£0	Price Accepted
	£25	Price Accepted
	nothing	Please enter a Entry Price
Location Entered	nothing	Please enter the location
Season Entered	nothing	Please enter the season
Search
No Entries Available	Computers	No Results Available
Entry Found	Blue Tit	Results Found: Blue Tit
No Criteria Entered	nothing	Please enter search criteria

Software Development & Testing
Software Development
Login Form
Public Class Login
Public Sub Login_Button_Click() Handles Login_Button.Click
'Resets the Add_Find_Clicked Variables
Add_Location_Clicked = False
Add_Species_Clicked = False
Add_Find_Clicked = False
Does_Species_Exist = False
Does_Location_Exist = False
Username = UsernameInput.Text 'This sets the global variables Username
User_ID = Me.UsersTableAdapter.Get_User_ID(Global_Variables.Username) 'This sets the global variables User_ID
Contributor_Name = Me.UsersTableAdapter.Get_Contributor_Name(Global_Variables.Username) 'This sets the global variable Contributor Name for the welcome screen message.
'This checks if the user details are correct in the database
'Remember to update the database WITHIN the solution files!
Dim login = Me.UsersTableAdapter.Login_Check(UsernameInput.Text, PasswordInput.Text)
If login Is Nothing Then
MsgBox("Incorrect Login Information")
PasswordInput.Text = ""
Else
Welcome.Show()
Me.Close()
End If
End Sub
End Class
Welcome Screen
Public Class Welcome
Private Sub New_Location_Button_Click() Handles New_Location_Button.Click
'Loads the New Location Screen and closes this form.
New_Location.Show()
Me.Close()
End Sub
Private Sub Edit_Location_Button_Click() Handles Edit_Location_Button.Click
'Loads the Edit Location Screen and closes this form.
Edit_Location.Show()
Me.Close()
End Sub
Private Sub New_Find_Button_Click() Handles New_Find_Button.Click
'Loads the New Find Screen and closes this form.
New_Find.Show()
Me.Close()
End Sub
Private Sub Edit_Find_Button_Click() Handles Edit_Find_Button.Click
'Loads the Edit Find Screen and closes this form.
Edit_Find.Show()
Me.Close()
End Sub
Private Sub Knowledge_Base_Button_Click() Handles Knowledge_Base_Button.Click
'Loads the Knowledge Base Home Screen and closes this form.
Knowledge_Base_Home.Show()
Me.Close()
End Sub
Private Sub New_Species_Button_Click() Handles New_Species_Button.Click
'Displays the New Species Screen ontop of this form.
New_Species.ShowDialog()
End Sub
Private Sub My_Account_Button_Click() Handles My_Account_Button.Click
'Loads the My Account Screen and closes this form.
My_Account.Show()
Me.Close()
End Sub
Private Sub Welcome_Load() Handles MyBase.Load
'Displays a welcome message to the user
Welcome_Label.Text = "Hello " & Contributor_Name
End Sub
End Class
Add New Species
Public Class New_Species
Private Species_Check As String
Private Sub Welcome_Screen_Button_Click() Handles Welcome_Screen_Button.Click
'Loads the Welcome Screen and closes this form.
Welcome.Show()
Me.Close()
End Sub
Private Sub My_Account_Button_Click() Handles My_Account_Button.Click
'Loads the My Account Screen and closes this form.
My_Account.Show()
Me.Close()
End Sub
Private Sub SpeciesBindingNavigatorSaveItem_Click() Handles SpeciesBindingNavigatorSaveItem.Click
If Add_Species_Clicked = True Then
'This checks if the Species already exists in the system
Species_Check = Me.SpeciesTableAdapter.Species_Check(Species_Name_Input.Text)
If Species_Check = Nothing Then
Does_Species_Exist = False
Else
Does_Species_Exist = True
End If
If Does_Species_Exist = False Then
If Species_Name_Input Is Nothing Then
MsgBox("Please enter a species name")
Else
'Saves the New Species entry to the database.
Me.Validate()
Me.SpeciesBindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.Nature_Findings_Database)
'Sends a save confirmation to the user
MsgBox("Species Added")
'Resets the Add_New_Species and the Does_Species_Exist variable
Add_Species_Clicked = False
Does_Species_Exist = False
End If
Else
MsgBox("This Species already exists")
End If
Else
MsgBox("Please Click Add New in the toolbar")
End If
End Sub
Private Sub BindingNavigatorAddNewItem_Click() Handles BindingNavigatorAddNewItem.Click
'Allows user to click save without error messages
Add_Species_Clicked = True
End Sub
Private Sub BindingNavigatorDeleteItem_Click() Handles BindingNavigatorDeleteItem.Click
'Resets the Add_Find_Clicked Variable
Add_Species_Clicked = False
End Sub
End Class
Add New Location
Public Class New_Location
Private Location_Check As String
Private Sub Welcome_Screen_Button_Click() Handles Welcome_Screen_Button.Click
'Loads the Welcome Screen and closes this form.
Welcome.Show()
Me.Close()
End Sub
Private Sub My_Account_Button_Click() Handles My_Account_Button.Click
'Loads the My Account Screen and closes this form.
My_Account.Show()
Me.Close()
End Sub
Private Sub LocationBindingNavigatorSaveItem_Click() Handles LocationBindingNavigatorSaveItem.Click
If Add_Location_Clicked = True Then
'This checks if the Species already exists in the system
Location_Check = Me.LocationTableAdapter.Location_Check(Location_NameTextBox.Text)
If Location_Check = Nothing Then
Does_Location_Exist = False
Else
Does_Location_Exist = True
End If
If Does_Species_Exist = False Then
If Location_NameTextBox Is Nothing Then
MsgBox("Please enter a location name")
Else
If AddressTextBox Is Nothing Then
MsgBox("Please enter a location address")
Else
'Saves the New Location entry to the database.
Me.Validate()
Me.LocationBindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.Nature_Findings_Database)
'Sends a save confirmation to the user
MsgBox("Location Added")
End If
'Resets the Add_New_Location and the Does_Location_Exist variable
Add_Location_Clicked = False
Does_Location_Exist = False
End If
Else
MsgBox("This Location already exists")
End If
Else
MsgBox("Please Click Add New in the toolbar")
End If
End Sub
Private Sub BindingNavigatorAddNewItem_Click() Handles BindingNavigatorAddNewItem.Click
'Allows user to click save without error messages
Add_Location_Clicked = True
End Sub
Private Sub BindingNavigatorDeleteItem_Click() Handles BindingNavigatorDeleteItem.Click
'Resets the Add_Find_Clicked Variable
Add_Location_Clicked = False
End Sub
End Class
Edit Location
Public Class Edit_Location
Private Sub Welcome_Screen_Button_Click() Handles Welcome_Screen_Button.Click
'Loads the Welcome Screen and closes this form.
Welcome.Show()
Me.Close()
End Sub
Private Sub My_Account_Button_Click() Handles My_Account_Button.Click
'Loads the My Account Screen and closes this form.
My_Account.Show()
Me.Close()
End Sub
Private Sub LocationBindingNavigatorSaveItem_Click() Handles LocationBindingNavigatorSaveItem.Click
'Saves the edited locations users have entered.
Me.Validate()
Me.LocationBindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.Nature_Findings_Database)
'Sends a save confirmation to the user
MsgBox("Locations Updated")
End Sub
Private Sub Edit_Location_Load() Handles MyBase.Load
'This loads data into the form.
Me.LocationTableAdapter.Fill(Me.Nature_Findings_Database.Location)
End Sub
End Class
New Find
Public Class New_Find
Private Sub Welcome_Screen_Button_Click() Handles Welcome_Screen_Button.Click
'Loads the Welcome Screen and closes this form.
Welcome.Show()
Me.Close()
End Sub
Private Sub My_Account_Button_Click() Handles My_Account_Button.Click
'Loads the My Account Screen and closes this form.
My_Account.Show()
Me.Close()
End Sub
Private Sub User_Species_LinkBindingNavigatorSaveItem_Click() Handles User_Species_LinkBindingNavigatorSaveItem.Click
If Add_Find_Clicked = True Then
If Sight_DateDateTimePicker.Text = Nothing Or Species_IDTextBox.Text = Nothing Or Location_IDTextBox.Text = Nothing Or SeasonComboBox.Text = Nothing Then
MsgBox("Please fill in all the required fields", MsgBoxStyle.Exclamation)
Else
'Automatically enters the User ID into the form so the entry is associated to that specific user.
User_IDTextBox.Text = User_ID
'This saves the new entry into the database.
Me.Validate()
Me.User_Species_LinkBindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.Nature_Findings_Database)
'Sends a save confirmation to the user
MsgBox("Find Added")
'Resets the Add_Find_Clicked Variable
Add_Find_Clicked = False
End If
Else
MsgBox("Please Click Add New in the toolbar")
End If
End Sub
Private Sub Species_ID_Button_Click() Handles Species_ID_Button.Click
'Displays the Species and their assocaiated IDs.
Species_IDs.Show()
End Sub
Private Sub Location_ID_Button_Click() Handles Location_ID_Button.Click
'Displayes the Locations and their associated IDs
Location_IDs.Show()
End Sub
Private Sub BindingNavigatorAddNewItem_Click() Handles BindingNavigatorAddNewItem.Click
'Allows user to click save without error messages
Add_Find_Clicked = True
End Sub
Private Sub BindingNavigatorDeleteItem_Click() Handles BindingNavigatorDeleteItem.Click
'Resets the Add_Find_Clicked Variable
Add_Find_Clicked = False
End Sub
End Class
Edit Find
Public Class Edit_Find
Private Sub Welcome_Screen_Button_Click() Handles Welcome_Screen_Button.Click
'Loads the Welcome Screen and closes this form.
Welcome.Show()
Me.Close()
End Sub
Private Sub My_Account_Button_Click() Handles My_Account_Button.Click
'Loads the My Account Screen and closes this form.
My_Account.Show()
Me.Close()
End Sub
Private Sub User_Species_LinkBindingNavigatorSaveItem_Click() Handles User_Species_LinkBindingNavigatorSaveItem.Click
'This saves the updated Finds that the user has edited or viewed.
Me.Validate()
Me.User_Species_LinkBindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.Nature_Findings_Database)
'Sends a save confirmation to the user
MsgBox("Finds Updated")
End Sub
Private Sub Edit_Find_Load() Handles MyBase.Load
'This loads the form with the Finds specific to that user.
Try
Me.User_Species_LinkTableAdapter.Fill_Life_List(Nature_Findings_Database.User_Species_Link, User_ID)
Catch ex As System.Exception
System.Windows.Forms.MessageBox.Show(ex.Message)
End Try
End Sub
End Class
Species ID
Public Class Species_IDs
Private Sub Species_IDs_Load() Handles MyBase.Load
'Shows the Species and their associated IDs
Me.SpeciesTableAdapter.Fill(Me.Nature_Findings_Database.Species)
End Sub
End Class
Location ID
Public Class Location_IDs
Private Sub Location_IDs_Load() Handles MyBase.Load
'Loads the Locations and the IDs associated to them
Me.LocationTableAdapter.Fill(Me.Nature_Findings_Database.Location)
End Sub
End Class
Life List
Public Class Life_List
Private Sub User_Species_LinkBindingNavigatorSaveItem_Click() Handles User_Species_LinkBindingNavigatorSaveItem.Click
'This saves the life list associated to the user.
Me.Validate()
Me.User_Species_LinkBindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.Nature_Findings_Database)
End Sub
Private Sub Life_List_Load() Handles MyBase.Load
'This loads the life list associated to the user.
Try
Me.User_Species_LinkTableAdapter.Fill_Life_List(Nature_Findings_Database.User_Species_Link, User_ID)
Catch ex As System.Exception
System.Windows.Forms.MessageBox.Show(ex.Message)
End Try
End Sub
Private Sub Welcome_Screen_Button_Click() Handles Welcome_Screen_Button.Click
'Loads the Welcome Screen and closes this form.
Welcome.Show()
Me.Close()
End Sub
Private Sub My_Account_Button_Click() Handles My_Account_Button.ClientSizeChanged
'Loads the My Account Screen and closes this form.
My_Account.Show()
Me.Close()
End Sub
End Class
Knowledge Base Home
Public Class Knowledge_Base_Home
Private Sub Welcome_Screen_Button_Click() Handles Welcome_Screen_Button.Click
'Loads the Welcome Screen and closes this form.
Welcome.Show()
Me.Close()
End Sub
Private Sub My_Account_Button_Click() Handles My_Account_Button.Click
'Loads the My Account Screen and closes this form.
My_Account.Show()
Me.Close()
End Sub
Private Sub Search_Location_Button_Click() Handles Search_Location_Button.Click
'Loads the Search Locations Screen and closes this form.
Knowledge_Base_Locations.Show()
Me.Close()
End Sub
Private Sub Search_Finds_Button_Click() Handles Search_Finds_Button.Click
'Loads the Search Finds Screen and closes this form.
Knowledge_Base_Finds.Show()
Me.Close()
End Sub
End Class
Knowledge Base Find Search
Public Class Knowledge_Base_Finds
Private Sub Knowledge_Base_Species_Load() Handles MyBase.Load
'This loads data into the form.
Me.User_Species_LinkTableAdapter.Fill(Me.Nature_Findings_Database.User_Species_Link)
End Sub
Private Sub Species_ID_Button_Click() Handles Species_ID_Button.Click
'Displays the available Species and their associated IDs
Species_IDs.Show()
End Sub
Private Sub Location_ID_Button_Click() Handles Location_ID_Button.Click
'Displays the available Locations and their associated IDs
Location_IDs.Show()
End Sub
Private Sub User_ID_Button_Click() Handles User_ID_Button.Click
'Displays the available Users and their associated IDs
User_IDs.Show()
End Sub
Private Sub Welcome_Screen_Button_Click() Handles Welcome_Screen_Button.Click
'Loads the Welcome Screen and closes this form.
Welcome.Show()
Me.Close()
End Sub
Private Sub My_Account_Button_Click() Handles My_Account_Button.Click
'Loads the My Account Screen and closes this form.
My_Account.Show()
Me.Close()
End Sub
Private Sub Search_Location_Button_Click() Handles Search_Location_Button.Click
'Loads the Search Locations Screen and closes this form.
Knowledge_Base_Locations.Show()
Me.Close()
End Sub
Private Sub Back_Button_Click() Handles Back_Button.Click
'Loads the Knowledge Base Home Screen and closes this form.
Knowledge_Base_Home.Show()
Me.Close()
End Sub
Private Sub Search_By_Date_Button_Click() Handles Search_By_Date_Button.Click
'This loads the search information when someone searches by Date.
Try
Me.User_Species_LinkTableAdapter.Fill_Species_By_Date(Me.Nature_Findings_Database.User_Species_Link, CType(Date_Criteria_Input.Text, String))
Catch ex As System.Exception
System.Windows.Forms.MessageBox.Show(ex.Message)
End Try
'Lets the user know there are no search results
If Find_Search_Results.RowCount = Nothing Then
MsgBox("No Results Found")
End If
End Sub
Private Sub Search_By_User_Button_Click() Handles Search_By_User_Button.Click
'This loads the search information when someone searches by User.
Try
Me.User_Species_LinkTableAdapter.Fill_Species_By_User(Me.Nature_Findings_Database.User_Species_Link, CType(User_Criteria_Input.Text, String))
Catch ex As System.Exception
System.Windows.Forms.MessageBox.Show(ex.Message)
End Try
'Lets the user know there are no search results
If Find_Search_Results.RowCount = Nothing Then
MsgBox("No Results Found")
End If
End Sub
Private Sub Search_By_Species_Button_Click() Handles Search_By_Species_Button.Click
'This loads the search information when someone searches by Species Name.
Try
Me.User_Species_LinkTableAdapter.Fill_Species_By_Name(Me.Nature_Findings_Database.User_Species_Link, CType(Species_Criterial_Input.Text, String))
Catch ex As System.Exception
System.Windows.Forms.MessageBox.Show(ex.Message)
End Try
'Lets the user know there are no search results
If Find_Search_Results.RowCount = Nothing Then
MsgBox("No Results Found")
End If
End Sub
Private Sub Search_By_Location_Button_Click() Handles Search_By_Location_Button.Click
'This loads the search information when someone searches by Location Name.
Try
Me.User_Species_LinkTableAdapter.Fill_Species_By_Location(Me.Nature_Findings_Database.User_Species_Link, CType(Location_Criteria_Input.Text, String))
Catch ex As System.Exception
System.Windows.Forms.MessageBox.Show(ex.Message)
End Try
'Lets the user know there are no search results
If Find_Search_Results.RowCount = Nothing Then
MsgBox("No Results Found")
End If
End Sub
Private Sub Search_By_Season_Button_Click() Handles Search_By_Season_Button.Click
'This loads the search information when someone searches by Season.
Try
Me.User_Species_LinkTableAdapter.Fill_Species_By_Season(Me.Nature_Findings_Database.User_Species_Link, CType(Season_Criteria_Input.Text, String))
Catch ex As System.Exception
System.Windows.Forms.MessageBox.Show(ex.Message)
End Try
'Lets the user know there are no search results
If Find_Search_Results.RowCount = Nothing Then
MsgBox("No Results Found")
End If
End Sub
End Class
Knowledge Base Location Search
Public Class Knowledge_Base_Locations
Private Sub Welcome_Screen_Button_Click() Handles Welcome_Screen_Button.Click
'Loads the My Account Screen and closes this form.
Welcome.Show()
Me.Close()
End Sub
Private Sub My_Account_Button_Click() Handles My_Account_Button.Click
'Loads the My Account Screen and closes this form.
My_Account.Show()
Me.Close()
End Sub
Private Sub Search_Finds_Button_Click() Handles Search_Finds_Button.Click
'Loads the Search Finds Screen and closes this form.
Knowledge_Base_Finds.Show()
Me.Close()
End Sub
Private Sub Back_Button_Click() Handles Back_Button.Click
'Loads the Knowledge Base Home Screen and close this form.
Knowledge_Base_Home.Show()
Me.Close()
End Sub
Private Sub Search_By_Name_Button_Click() Handles Search_By_Name_Button.Click
'This loads the search information when someone searches by Location Name.
Try
Me.LocationTableAdapter.Fill_Location_By_Name(Me.Nature_Findings_Database.Location, CType(Name_Criteria_Input.Text, String))
Catch ex As System.Exception
System.Windows.Forms.MessageBox.Show(ex.Message)
End Try
'Lets the user know there are no search results
If Location_Search_Results.RowCount = Nothing Then
MsgBox("No Results Found")
End If
End Sub
Private Sub Search_By_Address_Button_Click() Handles Search_By_Address_Button.Click
'This loads the search information when someone searches by Location Address.
Try
Me.LocationTableAdapter.Fill_Location_By_Address(Me.Nature_Findings_Database.Location, CType(Address_Criteria_Input.Text, String))
Catch ex As System.Exception
System.Windows.Forms.MessageBox.Show(ex.Message)
End Try
'Lets the user know there are no search results
If Location_Search_Results.RowCount = Nothing Then
MsgBox("No Results Found")
End If
End Sub
Private Sub Search_By_Owner_Button_Click() Handles Search_By_Owner_Button.Click
'This loads the search information when someone searches by Location Owners.
Try
Me.LocationTableAdapter.Fill_Location_By_Owner(Me.Nature_Findings_Database.Location, CType(Owner_Criteria_Input.Text, String))
Catch ex As System.Exception
System.Windows.Forms.MessageBox.Show(ex.Message)
End Try
'Lets the user know there are no search results
If Location_Search_Results.RowCount = Nothing Then
MsgBox("No Results Found")
End If
End Sub
Private Sub Search_By_Opening_Time_Button_Click() Handles Search_By_Opening_Time_Button.Click
'This loads the search information when someone searches by Opening Times.
Try
Me.LocationTableAdapter.Fill_Location_By_Opening_Times(Me.Nature_Findings_Database.Location, CType(Opening_Times_Criteria_Input.Text, String))
Catch ex As System.Exception
System.Windows.Forms.MessageBox.Show(ex.Message)
End Try
'Lets the user know there are no search results
If Location_Search_Results.RowCount = Nothing Then
MsgBox("No Results Found")
End If
End Sub
Private Sub Search_By_Contact_Details_Button_Click() Handles Search_By_Contact_Details_Button.Click
'This loads the search information when someone searches by Contact Details.
Try
Me.LocationTableAdapter.Fill_Location_By_Contact_Details(Me.Nature_Findings_Database.Location, CType(Contact_Details_Criteria_Input.Text, String))
Catch ex As System.Exception
System.Windows.Forms.MessageBox.Show(ex.Message)
End Try
'Lets the user know there are no search results
If Location_Search_Results.RowCount = Nothing Then
MsgBox("No Results Found")
End If
End Sub
Private Sub Search_By_Website_Button_Click() Handles Search_By_Website_Button.Click
'This loads the search information when someone searches by Website.
Try
Me.LocationTableAdapter.Fill_Location_By_Website(Me.Nature_Findings_Database.Location, CType(Website_Criteria_Input.Text, String))
Catch ex As System.Exception
System.Windows.Forms.MessageBox.Show(ex.Message)
End Try
'Lets the user know there are no search results
If Location_Search_Results.RowCount = Nothing Then
MsgBox("No Results Found")
End If
End Sub
Private Sub Search_By_Entry_Price_Button_Click() Handles Search_By_Entry_Price_Button.Click
'This loads the search information when someone searches by Entry Price.
Try
Me.LocationTableAdapter.Fill_Location_By_Entry_Price(Me.Nature_Findings_Database.Location, CType(Price_Criteria_Input.Text, Integer))
Catch ex As System.Exception
System.Windows.Forms.MessageBox.Show(ex.Message)
End Try
'Lets the user know there are no search results
If Location_Search_Results.RowCount = Nothing Then
MsgBox("No Results Found")
End If
End Sub
Private Sub Search_By_Date_Button_Click() Handles Search_By_Date_Button.Click
'This loads the search information when someone searches by Opening Date.
Try
Me.LocationTableAdapter.Fill_Location_By_Date(Me.Nature_Findings_Database.Location, CType(Date_Criteria_Input.Text, Date))
Catch ex As System.Exception
System.Windows.Forms.MessageBox.Show(ex.Message)
End Try
'Lets the user know there are no search results
If Location_Search_Results.RowCount = Nothing Then
MsgBox("No Results Found")
End If
End Sub
End Class
My Account
Public Class My_Account
Private Sub Save_Button_Click() Handles Save_Button.Click
'This saves the user information to the database.
Me.Validate()
Me.UsersBindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.Nature_Findings_Database)
MsgBox("User Information Saved")
End Sub
Public Sub My_Account_Load() Handles MyBase.Load
'This loads the current Users information.
Try
Me.UsersTableAdapter.Fill_Account_Information(Me.Nature_Findings_Database.Users, CType(Username, String))
Catch ex As System.Exception
System.Windows.Forms.MessageBox.Show(ex.Message)
End Try
End Sub
Private Sub Welcome_Screen_Button_Click() Handles Welcome_Screen_Button.Click
'Loads the Welcome Screen and closes this form.
Welcome.Show()
Me.Close()
End Sub
End Class
Global Variables
Module Global_Variables
Public Username As String 'Stores the Username for use within the program.
Public User_ID As Integer 'Stores the User ID for use within the program.
Public Contributor_Name As String 'Stores the Contributor Name for the Welcome Screen Message.
'Specific for the Add Species Screen
Public Add_Species_Clicked As Boolean 'Tells the program if the user has pressed Add New on the Add New Species Screen
Public Does_Species_Exist As Boolean 'Tells the program if the Species already exists in the database
'Specific for the Add Location Screen
Public Add_Location_Clicked As Boolean 'Tells the program if the user has pressed Add New on the Add New Location Screen
Public Does_Location_Exist As Boolean 'Tells the program if the Location already exists in the database
'Specific for the Add Find Screen
Public Add_Find_Clicked As Boolean 'Tells the program if the user has pressed Add New on the Add New Find Screen
End Module
Development Diary
Testing
I tested each form out with specific inputs which required specific outputs. The table on the next page shows my inputs and outputs.

Week Commencing	Task
04/03/2013	Created Visual Basic solution and all the forms needed for the program, including the Knowledge Base. Also built the database.
11/03/2013	Inserted all the required objects onto most forms, created the login section and the welcome screen for users. Created layouts for new and edit pages.
18/03/2013	Created all the code needed for new and edit pages, also created layouts and code required for my life list and my account area.
25/03/2013	Created layouts and code for the whole knowledge base section of the program. Fixed some minor bugs within the other sections of the program such as ALLOWDBNULL errors.
01/04/2013	Completed all tested required for the solution including end user tested with live data.

Field Name	Input	Required Output	Output
Login
Username	Admin	Welcome Administrator	Welcome Administrator
Password	password
Username	Admon	Incorrect login information	Incorrect login information
Password	paswod
Add Species
Species Name	Blue Tit	Please enter a species name	Please enter a species name
Species Name	nothing	Species saved	Species saved
Add/Edit Find
Date	19/03/2013	Find Saved	Find Saved
Species ID	1
Season	Spring
Location ID	1
Additional Comments	Nothing
Date	30/02/2013	Please enter a real date	Please enter a real date
Species ID	1
Season	Spring
Location	1
Additional Comments	Nothing
Add/Edit Location
Location Name	Nothing	Please enter a location name	Please enter a location name
Address	Northbrook Road
Entry Price	£00.00
Opening Times	24/7
Contact Details	None
Website	None
Additional Comments	nothing
Location Name	Coundon Wedge	Please enter a location address	Please enter a location address
Address	Nothing
Entry Price	£00.00
Opening Times	24/7
Contact Details	None
Website	None
Additional Comments	nothing

My Account
User ID	1	Account information updated	Account information updated
Username	Admin
Email Address	davale06@coundoncourt.org
Password	Password
Contributor Name	Administrator
About User
Search Location
Location Name	Coundon Wedge	One result found	One result found
Location Name	nothing	No results found	No results found
Search Finds
User ID	1	One result found
Species ID
Location ID
Season
User ID		One result found	One result found
Species ID	1
Location ID
Season
User ID		One result found	One result found
Species ID
Location ID	1
Season
User ID	1	One result found	One result found
Species ID
Location ID
Season	Spring
User ID
Species ID		No results found	No results found
Location ID
Season

End User Testing
I send the package to my end user to see if they liked the solution.
I received the following response:

Documentation

Evaluation
Discussion of the degree of success in meeting the original objectives
Evaluate the user’s response to the system
I asked Keith of his overall thoughts of the project and how he felt about using the software I had designed and developed. He sent me the following:
“Dear Alex,
The project has progress at an outstanding rate since we started our conversations to develop a new Nature Finding information system. The system does everything it needs to on my computer, the only issues with the system was that it would crash at specific points however it seems that you patches and updates have seemed to fix the system. The other issue I have with the system is that it does not upload to a central database and the information isn't shared properly. This may be something that could be put in at a later date.
The old system used to take information in was not helpful as information could be lost easily and the methods of sharing was primitive and slow. The forums I regularly go on usually gave out false or incorrect information about wildlife and when information was correct, it would have been correct for several months ago due to moderators going through all the posts and the posts were incredibly hard to find. All the suggestions and designs you have brought forward have reduced the likelihood of any of these issues being brought up again. It also speeds up the information search process that I would usually have to go through to find where a specific species had gone.
I am very happy about the design considerations you carried out in the project. The system does not give me any eye strain and I am able to use the system quickly and easily without any issues navigating through various menus and screens. The data available to view on my variation of the system is that I am able to view finds and locations easily.
My advice for a progression of this system is that the software is brought to an online forum where other users can benefit from the system and they could also give suggestions on how to improve this system for a better user experience.
I would like to thank you for involving me in this project and I am sure that our work together will allow others to benefit from it. I have enjoyed communicating with you about my hobbies and how I can bring them to a modern era. The bespoke designs you have brought to me are just what I needed to carry out research and transfer my life list across.
Yours Sincerely,
Keith Davis”
Desirable extensions
There are 3 extensions and changes I could carry out to my Nature Findings system. They include a central database for all users to use and work on simultaneously, a photo storage facility for users to upload their own images to their specific finds and the final change would be to create a mobile version of the software for Windows Phone 8, iOS or Android devices.
Online Central Database
The online database is a main feature of the program I was unable to put into my project successfully as I did not know how to and I was unable to use specific software due to its cost etc. If this feature was put into place, other people would be able to see everyone else's data easily as the database and its data would not be confined to a specific computer system.
This would improve my system however there are several drawbacks to consider when implementing this such as security. Being secure online is extremely difficult as there are a lot of loopholes. This could mean data would be intercepted and not saved causing the loss of find data. Data sent over the internet could become corrupted meaning that data would be sent or received incorrectly meaning the data is useless.
This improvement would involve rewriting most of the system as it all runs off a database. This would take a lot of time however could come in the form of an update as the base code for the interface would not be changed.
Image Upload Facility
The image upload facility is a good suggestion as other users can also learn specific trends within wildlife during seasons. They can also learn what an animal looks like due to characteristics of the animal such as colour, beak shape or sail length.
Image upload facility's can take up a lot of space as walkers usually use very high performance cameras that save high resolution images. Security also comes into play with data storage as the images may be lost or used elsewhere which could be a form of copyright infringement.
This improvement could come as an update as the interface would only have a few tweaks to it with the backend database having a few changes. The images could also be stored in the same hard drive space as the database and the program itself.
Mobile Versions
The final suggestion from Mr Davis was that users with smartphones could be able to use a mobile or online version of the software. This would mean completely rewriting the system for a specific platform, e.g. Objective C for iOS, C++ for Windows Phone and Java for Android apps. This is a very good suggestion as it would mean that there would not be a need to intermediate notes and users could put information into the system immediately.
The downside of the mobile versions would be the data connection, over time the database would become extremely large and due to the current mobile framework within the United Kingdom, it could take hours to download the database. This would also take a toll on users data plans as they would have to invest in a larger data plan from their mobile networks.
This would make the project become a project too large for me specifically and I may have to invest a lot of time and money to create these mobile variations. Also the time it would take to create a mobile version of the software would rely on the first improvement that the system runs of an online remote database not a local database.

Requirement	Has It / Been Met?	Reasoning and Evidence
Ability to share information easily / This will include a remote database or online storage space to hold all the information	O	The database is a local database as the online database would not work with Visual Basic.
System design needs to be intuitive and easy to use	P	The system is intuitive, this is shown by the designs on pages 12-14. These designs show that the system is easy to navigate around.
Needs to be accessible to anyone with the option for contributors to add information	O	This criteria is reliant on the online database so it wasn't met due to it being a local database. There is also passwords on the system so people cannot just use the program.
Display information clearly	P	The user interface designed is suitable and intuitive for the user. This will be evaluated by the end user in the next section of the evaluation.
Hold the following information: / Contributor Name / Date observation taken/entered / Season for type of animal / Species name / Location / Type of location / Additional comments	P	All these data fields can be found in the data tables and the screen designs as part of my design section on pages 8-18.
Photo storage facility so contributors are able to include photos to the observations	O	I was not able to find library modules for a photo storage facility. This meant that I did not put the photo storage facility into the designs of my software.
The system must be an installed program that connects to an online database.	P/O	The first half of this criteria has been met as the software was designed in Visual Basic and Visual Basic give the option for the software to be a installed application or an online application.

Alexander Davis – 8078 Coundon Court - 20432

Nature Findings System A2 Unit F454 Computing Project – H447 Page | #

Alexander Davis – 8078 Coundon Court - 20432

Nature Findings System A2 Unit F454 Computing Project – H447