COMP3013 Mobile Application Development Spring 2023: Assignment 1 MovieBuddy App
For this assignment, you are required to create a simple MovieBuddy as an Android App. There should be a list of Cinemas and an inventory of the existing Movies. The app has a home screen that includes one or more decorative images and options (e.g. button, menu items, tabs etc.). The App has the following main functions aside from the home screen:
- Allow user to view and manipulate movie inventory.
- Allow user to view and manipulate a list of cinemas.
- Allow user to delete movie and/or cinema records.
- Allow user to view and manipulate images that are associated with movie items.
- Allow user to search for a movie/movies from the movie inventory.
For the purposes of this assignment the details of the items in the movie and cinema inventories should be stored in some kind of “database”. For high marks this should be an SQLite database. For a basic pass, some kind of array, list or file structure is acceptable. Where the word “database” appears below it can refer to any of these types of structures, however refer to the marking guide to see what will attract high marks.
Please note that the application must have exact elements described in this assignment specifications, extra elements are NOT accepted. For example: implementing an extra element for a screen (eg price for a movie item where it is not required by the specification) will not be accepted. You can implement features in higher levels (eg credit, distinction or high distinction) to gain marks even you skip some features in lower (eg pass) levels. The provided simple screenshots are for your reference only, you are encouraged to design your own look and feel for your application.
In particular, the App should Pass level (up to 64%):
For Movie inventory: Provide the main interface and corresponding actions where user can select an option from buttons (or other controls) including:
• Add a new movie record: The movie information includes Id (a unique string for each item), title, directors, casts, release date and poster (for pass level, poster/image is NOT required, image field can be empty).
• View movie records as a list
• Edit a movie record: the user can select an item from the list. The program will display all details of the item in the corresponding fields where the information can be edited. The page should also include an option to delete the current record in addition to the edit option.
For Cinema items: Provide the main interface and implemented actions where the user can select an option from the buttons/menus for manipulating cinema items including:
• Add a new cinema item. The cinema information includes Id (unique string for each cinema), cinema name, location (cinema address), list of movie items. Please note that user should be able to choose one or more movies from a list of movies items. You can use checkboxes or background colours to indicate selected items. This list can be hardcoded (pass or credit level) or taken from the “database” of movies as described above (distinction level or above). If you use hardcoded list of groceries, make sure you have at least title and release date for each movie. There are at least three movie items in the hardcoded movie list.
• View the cinema items. User is able to view the list of cinema items.
• Edit a cinema item. When the user clicks on an item in the list of cinemas, the program will display full detail information of the selected cinema in the corresponding fields where they can be changed. For the list of movies, the user will choose again the movie items from the list as in Add a new item function. The page should also include an option to delete the current record in addition to the edit option.
Other functionalities should be included in the pass level: • Be able to return to the home page or the previous page.
• Provide an acceptable quality user interface - Are the screens easy to use? Are they laid out neatly? Do they look good?
• For a pass it is not necessary to store data in an SQLite database.
Credit level (up to 74%):
Include all functions of the pass level, plus
- Store data in a local SQLite database, and implement INSERT, UPDATE, SELECT and DELETE on the database.
- Delete multiple items: From “View Movie Records” and/or “View Cinema Records” pages, user is able to delete one or more movie records and/or cinema records from the lists. You may use checkboxes or background colours to indicate selected items to be removed from the list.
Distinction level (up to 84%):
Include all functions up to the credit level, plus
- When adding/editing a cinema record, the list of movies is NOT hardcoded but is queried from the movie database (SQLite database).
- When viewing the movie records, the movies are listed in two categories “Released” and “Coming Soon” by checking the release dates of the movies.
High Distinction level (up to 96%):
Include all functions up to the distinction level, plus TWO of the following options:
- Option 1: Assign an image to a movie item: provide an interface and corresponding actions where user can select an image and assign the image/poster to a movie item. The images can be manually stored within the app itself OR user can browse and choose an image from the device. Another way is to take a picture using the device camera and assign the picture to a movie item. The app should be able to display the assigned image when showing the movie information.
- Option 2: Search function: provide an interface and corresponding actions where users can type in some words to find a movie/movies in the existing database. The search interface should allow users to enter some text for title and/or directors and/or casts. The results are displayed as a list of movies matching the input words.
- Option 3: Map: Provide a function to show a cinema address on the map. Note: the address is taken from the cinema record.
Outstanding works: (up to 100%)
Include all functions up to the high distinction level, plus
- Coding practice with excellent choice of object-oriented programming structure and functions. The program has clear coding style and comprehensive supportive comments.
- Profesional look with advance controls used (eg date picker, input validation tabbed activities) and creative/useful features might be considered as extra contributions. Note: simply adding an extra GUI element is not considered as a bonus feature and is usually NOT allowed as stated at the beginning of the specifications.
You are only allowed to use Android Java to code your solution. Your program must be executable. It is an advice that you need to keep multiple versions in case of unforeseen problems. You are allowed to demonstrate your program on your laptop. You might modify the code from related source(s) with a proper citation(s) and you must be able to explain clearly your understanding. The external code should contribute less than 30% of the total program. No part of the code can be written by any other persons.
Declaration There is no requirement for documentation. However, you are required to submit a declaration with the following claim (in a text file or world file). DECLARATION I hold a copy of this assignment that I can produce if the original is lost or damaged. I hereby certify that no part of this assignment/product has been copied from any other student’s work or from any other source except where due acknowledgement is made in the assignment. No part of this assignment/product has been written/produced for me by another person except where such collaboration has been authorised by the subject lecturer/tutor concerned. Submission Both the declaration and source code should be submitted via vUWS before the deadline for documentation/checking purpose. All these files should be zipped into one file with your student id and your name as the zipped file name. Remember to include the declaration word/pdf file in the zip file. Submission that does not follow the format is not acceptable. No hard copy of the source code and email submission is acceptable.
Demonstration You are required to demonstrate your program during your scheduled practical session in the following teaching week (or based on the advice of the lecturer/tutor). Your tutor will check your code and your understanding of the code. You will receive no marks if you do not do the demonstration, especially if you miss the demo time without a special consideration. To prove that the program is written by yourself, the tutor might require you to make some minor modifications. In this case, you must do the requirement in order to prove that the code is only written by yourself. You are allowed to run your program from your laptop at the demonstration time. The feedback to your work will be delivered orally during the demonstration. No further feedback or comments are given afterward. The program you demonstrate should be the same as the one you submit. If you fail this assignment at your first demonstration, you are allowed to improve your work within one week (maximal grade is pass in this case). You must indicate your intention to the tutor/lecturer if you want to take the opportunity to improve the assignment. Do not send your work to the unit coordinator or your lecturer. Your tutor is responsible to mark your work.