COSC 2P89
Final Project

Last Modified: Friday, 17-Nov-2017 12:28:12 EST

Fall
2017

Due Date: January 4, 2018, 4:30p.m.

The Collector

For the last assignment/project you must implement a web site that uses a number of the topics considered during the term: HTML, CSS, Javascript, PHP, Ajax, and the MySQL database environment. The site will consist of a front end for normal public access, and a back end for administrative site management. As mentioned in class I will accept projects completed by two people however if you wish to work alone that is also acceptable. I will need to be notified by e-mail whether you wish to work alone. If not I will need an e-mail from each of the two people who wish to work collaboratively. Keep in mind that my expectations will be higher for projects created by two people. I would also suggest that in such cases it would be advisable to have one person focus on the visual aspects and another focus on the database and PHP programming, however the distribution of the labour will be yours to decide.

The basic purpose of the site is to allow a collector to proudly display their collection and to present material pertaining to the nature of the collection. The actual type of item(s) and the extent of the detail presented in the collection itself is your choice. Some possibilities are stamps, coins, sports cards, CDs, DVDs, comic books, autographs, etc. For example a comic book collector who specializes in Superman comic books might present material pertaining to the history of Superman in comic books and elsewhere. A CD collector who specializes in the Blues might present material pertaining to Blues influences in current music, and so on. In other words there should be some broad material presented that is related to the nature of the collectible or some strain of the collectible. This additional material is presented to broaden the site and its appeal to others rather than simply display the collection. Of course it is expected that the overall site is pleasant and that the various pages have a stylistic consistency. It will also allow the collector to keep track of their collection as a result of the database component. In the future they might want to build a shopping cart around the collection but that is not a part of the present site. As part of the assessment will be based on the perceived effort put into the site you should not diminish the additional material beyond presenting the collection itself.

The front end public site should be visually attractive and based on HTML 5 semantic elements, whereas for the back end the functionality is more important and the appearance is less important. A pleasant looking back end which is functionally flawed will not be viewed upon as favourably as a bland but solid back and. The front end will provide the opportunity for anyone to learn about the field, and to browse through or search your specific collection. The nature of searches possible will of course depend on the underlying content and any classifications you decide to incorporate in the database. Classifications with a DVD collection could use genre, or director, or country of origin, etc.

The back end will make it possible to add, delete, or edit the information contained within the collection and will require the administrative user to authenticate. The authentication should be based on a hashed key stored in your MySQL databsase. Look at various PHP encryption functions for possible routines to use in this regard. The actual encryption chosen will not play a role in the assessment. The site will use cookies or session variables to store and use such things as the date and time of site access or the last item viewed or searched for so that on subsequent visits the site can use these to welcome the user etc. To ensure that it is not possible for someone to directly enter a back end URL to administer the site thus bypassing the authentication, all of the back end pages should check and use one or more session variables that are set after the initial authentication before allowing the script to continue. The session data should be removed after logout or a short timeout has occurred.

For each item in the collection there will be a picture of the item along with a number of fields pertinent to the nature of the collection. For example, CD data might contain the title, the artist(s), the number of songs, the playing length, the year it was released, the producer, the condition of the CD, etc. For coins it might contain the denomination, the year, number minted, condition, etc. Each collectible will have its own pertinent fields. As mentioned above there would normally be one or more fields (foreign keys) identifying some sort of classification. For example comic books could have title as a sub-category, such as Superman, Action comics, Batman, Wonder Woman Spider-Man, etc. DVDs could have genre as a sub-category, and so on. You should also have a default image for items in the database that do not have a current image.

The public part of the site will allow the person to browse the collection by viewing a number of items on a page, or to browse by a sub-category again viewing a number of items on a page. You might consider providing some ordering criteria as well. Any presentation of s category must be presented via a reasonable interface element such as a menu. For those fields which have fixed choices you should use an interface element to input or change them rather than use text fields. For example, denomination in coins whould come from a database table that stores the possible choices, and this data should be used to populate a menu or set of radio buttons, etc. Of course some fields will be text-based but try to keep these to a minimum. Be as creative as you wish and for which the available time makes it possible.

The administrative back end will require login as mentioned. The username and hashed password must be stored in a table in your database. These can be static in a table in your database. You may allow new users to be added from the back end if you wish, along with password changes and user removal, anticipating the support of multiple users in the future, although this is not required. All users would have the same capabilities. Once login has occurred the site will allow new items to be added, existing items to be deleted, and existing items to be edited. You should use PHP upload as shown in class for the upload of the appropriate images. The images will be stored in a directory, and the image file name will be a field in the row for the item in the item table.

Where appropriate your site should use JavaScript to validate user input as much as possible before it is transmitted to the server. You might want to do a little searching to locate CSS and/or Javascript popup menus to enhance your interface. You are encouraged to research and use any available resources but if you use external resources you must provide appropriate references and URLs to those references. To do so place a link in the footer area to a page of references, say reference.html.


NOTES:
Your web pages must be kept organized in a directory named Project that exists within your public_html directory.

NOTE1: You are well advised to plan out the look and feel of the site before you consider any implementation. You will save a lot of time in implementation if you adopt this approach.

NOTE2: You must password protect your site using the htaccess method as covered in class.

NOTE3: Your site MUST be stored on sandcastle. Sites that are external to sandcastle will NOT be considered. NO exceptions!!


The project will be assessed on the following considerations:

  1. appearance
  2. ease of use/navigation
  3. interface elements
  4. functionality
  5. flexibility
  6. code/documentation
  7. additional features

Assignment submission:

Submissions should be made in accordance with the assignment guidelines and not in violation of the regulations on plagiarism.


Computer Science Department | COSC 2P89 Home