CSC-20038 Assignment Farm Animal Logging App
This is the assignment specification for CSC-20038. Please note that this is the only component of assessment for this module and therefore it will contribute 100% towards your module mark. The scenario is inspired by a real-world application.
Assignment Introduction
Farmer Simon raises calf (young cows) on contract. What this means is that he gets new stock (animals) from farmers who employ his services and raises the calf until they are ready to be returned back to their original source (when they are ready to start producing milk for example). Simon needs to regularly monitor all of his stock’s health (weight gain, condition etc.) and also to administer any medication/vaccinations necessary throughout the beginning of each animal’s life. He needs a portable logging system that will allow him to record his (and his employees’) stock management activities. At the end of each day he needs to be able to put all the activity in a spread sheet for further analysis.
Assignment Requirements
You are required to build a mobile application that will allow the recording of stock management activities by the staff on Simon’s farm. The app should record data in an SQLite database on the host device. It should also facilitate the following:
- The viewing of all the existing records in the database as a list. All fields of each record should be visible in the list.
- The editing of individual records.
- The deleting of individual records.
- The sending of the database information (as a CSV attached file) via email to a chosen email address via a host email client on the mobile device.
- The clearing of the database (i.e. the deleting of all records).
For each management activity the data that Simon needs to record are:
- the date of the management activity,
- the time of the management activity,
- the staff member undertaking the activity,
- the identifier of the animal involved (a numeric ID),
- the type of management activity and
- the detail related to the activity
Notice the following:
- An animal may have several records with the same date (and even time) assigned to it depending on the number of management activities related to it.
- The animal ID is a number and it is always 12 digits long.
- The activity and detail fields may contain substantial text descriptions (i.e. more than just one word). The app should make the data entry as convenient and as quick as possible (i.e. with minimum number of button presses, selections, navigation between screens, unnecessary scrolling etc.) whilst minimising the potential for error on the user’s side. Here are some things to consider:
- Most of the data are entered as soon as a management activity is completed, therefore the current date and time can be requested from the host device rather than be expected from the user each time. The app should however allow the user to change the pre-set values in case they want to enter the data at a later time.
- It is likely that the same staff member will be entering more than one record with each use of the app (for example when processing a group of animals). In other words, the staff member executing a management activity is unlikely to be changing frequently so the value should be more persistent (than other fields) between record entries.
- The animal ID is sometimes likely to be the same as in the previous record.
- The activity description and detail are unlikely to be the same between different entries.
- Some fields can and should be validated to minimise the chance of recording errors. You should assume that no field has a closed set of values. For example do not make the “staff” field take a value from a closed set of names. Simon employs temporary staff too…
Finally, keep your user informed (using appropriate messaging) of any actions your app has successfully performed or if there are errors, invalid input data etc. Some pointers… You are not expected to go far beyond what you have been explicitly introduced to in this module in order to achieve what is asked of you here. For example you may realise that you need to use a method of a specific View class (GUI component) that you weren’t explicitly told about but you will not need to use a completely new View class unless you want to. Also, do not go overboard with fine details at the expense of missing out on the essential requirements of the app. You will earn no marks for increasing the functionality of or number of features in the app beyond what is asked. Model screenshots Below are some screenshots of a model solution that will also be demonstrated in class. Do not be overly concerned with the finer details illustrated by the screenshots below, for example the exact placement of components or their particular style. What is important is to include the same number/type of components as the ones illustrated. For example note that all of the database contents (including the id) are displayed in the list of the main activity. The fact that some of the attributes are stylised in a particular way (boldface font for example) is a detail that aids readability and you may choose to achieve that with a different style of presentation than the one shown below.