
|
Project 4 is due Mon 25 April
Project 4 Rough Design is due Fri 25 March Project 4 XML File Input demo is due Thu 14 April These required milestones are described below. Each one is worth 10% of the project 4 grade.
The goals of this project are to provide you with the experience of designing and building a graphical interface using an interface building environment capable of medium-to-high-fidelity prototyping. An HCI professional would be required to know how to design for compatibility with such tools and know how to use them to build an interface.
This project provides an opportunity to apply many of the ideas and concepts that appear in the course. The criteria for the task selection for this project were:
The project task is to design and build the key pages for an interface to a dedicated application that allows customers to browse, select and buy Compact Disks when they visit a very large discount warehouse building filled with new and used CDs. (i.e., use is local, not over the web: it isn't Amazon.com). You can only use Visual Basic (VB.NET) or Java (e.g., using Swing) to implement the system. Imagine that the terminals that use your special interface are scattered around the warehouse, with clusters at the entrances. Purchases are made by requesting your CDs at a terminal, then collecting your purchases, and paying, at a special location near the exit. People go to the store because they stock every CD at extremely low prices, with huge discounts for students. The system should be designed and built in layers, with more general assistance at higher levels, becoming more specific as the user progresses towards the leaf nodes. We suggest that a three level system would be reasonable for this project, with a top level roughly concerned with "genre" (e.g., classical, early, folk, world, blues, jazz, rap, rock, alternative, country, klezmer, cajun, calypso, etc.), a second level providing "artists/performers" (e.g., Duke Robillard www.dukerobillard.com ), with the third level giving the available CD "titles" (e.g., The Duke Meets The Earl; Introducing Sunny and her Joy Boys; etc.) and providing the ability to request the purchase of that title. While clearly not an optimal organization, it will be fine for this project. You will be considering at least two kinds of users. Those that are registered users and the `occasional' users. Registered users will have already input their customer information, as discount warehouses rely on knowing information about their members in order to keep statistics and mailing lists, and to enable the development of a recommendation service (such as that used by Amazon.com). Registered users, once recognized, will be specially greeted by the interface and allowed to check their "wish list" from a previous session. Occasional (unregistered) users can browse through the general information about the CDs, without these extra `frills'. In this project you are expected to use a mixture of buttons, text input, and text output in the windowed interface. Note that we do not expect you to produce "sensitive" text such as usually appears in hypertext (in the Web pages for example). Appropriate use of Buttons and/or Menus will do just fine. You'll also need to handle text display in your windowed interface. The system need not be complete -- a fully working system would include all screens and inputs. However, you should clearly indicate, by fully implementing the main paths through the system, how all the others might work: i.e., it must be obvious that it is extensible. If you want to put non-working (but safe) buttons on the screen to complete the illusion, that will be fine. However, you must indicate which buttons are non-working using a distinctive label, such as (label) or label . Avoid putting information about particular CDs directly in your program source! It removes the generality of the program. Information that does not change, such as categories of CDs (e.g., blues), can be built into the program. Read the CD details from an XML file. A sample XML file of CD details is available for you to use as a basis for that file for this project. You can change this file using your own tags to include extra information if you need to. To do this in VB, see the suggested book for some details of how to handle XML, as well as the CS3041 VB page for Supplemental Material. Be sure to cite any sources of code or information! It is OK to get such code from a book or the web as long as it is acknowledged. You do not need to implement a shopping cart/basket system! KISS. Use another XML file to input information about a single registered user with their "wish list" -- i.e., just one. This must be used to demonstrate the registered user's path through the system. Do not worry about making this facility more realistic. You do need to have the system register a user and allow addition of items to a wish list, but we do not expect your system to remember this information after execution (i.e., you do not need to write a new XML file, or include a database). The design of the screen/window, your use of menus and buttons, and the format for display of information are all up to you. We urge you to keep the methods used (e.g., the widgets) simple. Use what is provided. There will still be plenty of opportunity for individuality and good style. The KISS principle applies.
The first milestone is a Rough Design for your interface (i.e., the low fidelity prototype).
The second milestone concerns the reading of XML using VB or Java.
You are to submit:
Note: You should be influenced by the CS Department's Documentation Format as much as possible for the program-related material you submit.
Information about Using Visual Basic .NET is available. One TA will be handling technical questions about VB.NET, the other about Java, while the professor will be handling questions about what is required for this project.
Information about Using Java for UI building is available. One TA will be handling technical questions about Java, the other about VB, while the professor will be handling questions about what is required for this project.
Many people have had issues with using Turnin in the past, so here is some additional help:
First, we'd like to remind everyone of the campus academic honesty policy, which can be found at http://www.wpi.edu/Pubs/Policies/Judicial/sect5.html. In short, all code you submit must be your own. You can use snippets of code you find, but the solution should be largely your own. If you received outside help from anywhere, be sure you cite that source. You will not lose points for such help (subject to the resulting work being your own), but failure to cite such sources is a violation of the academic honesty policy. Please remember to clearly delineate buttons that are not working by design, per the project description. Please take care to rename form fields, buttons, etc. within Visual Studio. The names can be set in the property window. If the TA grading the code can't figure out what "Button_3" is supposed to be, it will not work out in your favor. Use a more apt name. Please make sure you do not use an absolute path to the XML file. The odds that we share the same hard drive structure are remarkably low, so if you have used absolute paths, your code will not work on the TA's computer. If you're unaware of the difference, an example absolute path to a file looks like:
A relative path (i.e., a non-absolute path) will load the XML file with respect to the location of your program. So, for example, if your program is in:
The XML file should be there too and its relative path name will simply be:
With relative path names, if both your program and the XML file are moved to a different folder, your program should still run. Note, in the case of an absolute path, the program will not work because the XML file will not be in the specified location. Thus, moving your files to a different folder and verifying your program still works is a simple way to test you used relative paths correctly. [From Kevin Menard, TA, 2005/6] |
dcb at cs wpi edu / Fri Apr 22 15:12:59 EDT 2011