The term project is to add enhancements to your on-line music store. This is your
opportunity to be creative!
Instructions for turning in project
1. Enhancement Ideas
Make sure that you have the basic music store working properly before you start
on enhancements. Enhancements are of little value if they are added to non-functional
Tip: Before starting to work on enhancements that could cause existing code to malfunction,
I suggest that you make a backup copy of your project in a separate folder.
Some ideas for enhancements are listed below. You are also encouraged to be creative
and come up with other ideas.
Encrypt custId to prevent impersonation. custId sent to the client in two places,
in a hidden field on the checkout page and in the link to history page on
the order confirmation page. It should be encrypted in both places. Create a
folder named "Utilities" and add encryptString.cs.
This class provides two static
methods, Encrypt and Decrypt. In the OrderConfirmation page he encrypt method
can be called using Razor syntax. The decrypt method is used in the controller where custID is needed.
The Encrypt method accepts a string parameter so custID must be converted to a
The hidden form field in checkout is slightly more complicated since custID is
passed in the model as a integer while the encrypted string is type string. One
way around this problem is to add a new property to CustomerModel named CustIde of type string.
In the HttpGet Checkout action method populate this field as follows:
customerModel.CustIde = EncryptString.Encrypt(customerModel.CustId.ToString());
In the checkout view change the name of the hidden from field to CustIde.
In the HttpPost Checkout action
method decrypt CustIDe and assign the value to CustId.
- Upgrade the graphical appearance of your music store.
- Add a shopping cart status box (see XML Music).
- Send an HTML email rather than a text email.
- Add music track listings to the detail page (see XML Music. The MusicStoreSample database contains tblTracks with tracks for many of the products.
- Add a listing of "visited pages" so the user can easily get back to previously
viewed items (see XML
- List best sellers based upon data in tblOrderItems (see XML
- Recommend music to customers based upon their interests. (see XML Music).
- Add caching to the category menu, searchBrowse page, or product page.
(see XML Music).
- Validate city-state-zip code combinations by looking them up in a zip code database.
A zipcode database containing over 42,000 city, state, zip codes is available for
your use on Yorktown (see checkout in XML
The connection string in the web.config file has the syntax:
connectionString="Data Source=yorktown.cbe.wwu.edu\dsciweb;Initial Catalog=Zipcodes;Persist
Security Info=True;User ID=ZipcodeReader;Password=zipGuest" providerName="System.Data.SqlClient" />
NOTE: This database is behind WWU's firewall. To access it from off campus you will
need to have a VPN established on your computer.
- Add a professional web design theme on your site (SmashingMagazine.com recommendations).
- Add AJAX functionality to your site. The search, browse, and product pages are all good candidates. See GeekBooks AJAX example.
- Add lazy loading to the order history page. FreeNatureDesktop.com utilizes
- Add customer product reviews on the product page. To prevent bots from
posting span this also requires a CAPTCHA verification image.
See XML Music and
reCaptcha Sample (source).
To use the sample code you will need to download the recaptcha.dll from Google
and put it into your bin folder. Google "recaptcha asp.net" for the .dll
file. The Google code has a couple of minor problems which I have corrected in the
- Create a customer wish list. Ideally the wish list will persist between sessions
and be available from any computer, requiring that the wish list items would need
to be written to a database (similar to the shopping cart). See Amazon.com as an
example of a wish list.
- Validate that customer email addresses are unique before writing them to the database.
The sample site uses a custom validator. The validator's handler calls a method
of the checkout class named "EmailIsUnique." This method executes a sql
query that counts the number of instances for the email address, excluding the current
CustID. If the count is > zero the validator reject the email address.
- Create administrative pages for managing customer and order information. This could
include the ability to edit customer information, an interface for managing order
status (shipped, partially shipped, returned, etc.) and adding new products to the
database. (Note: In MIS 424 this is done using the SQLDataSource controls, which
are very convenient for this task).
- For other ideas look at Amazon, Barnes and Noble and other sophisticated shopping
Include a list of your enhancements in your "About this store" section
so that I don't miss any when grading your assignment.
2. Instructions for turning in Project
The project is due at the date and time shown on the course schedule. Late
projects will be subject to a penalty of one letter grade per 24 hours (so don't
Submit the URL to your music store's home page (default.aspx) via the
course management system.
3. Project Grading
The project will be graded based on the basic store created in assignments 7, 8
and 9, plus any enhancements that you have added. The basic store that you have
completed by the end of assignment 9 will earn a grade of approximately a B-. Enhancements
are a way for your to further improve your grade.
The grading of the final project is very detailed and includes looking at your source
code to make sure that you have coded efficiently and neatly. Specifically I will
be checking to make sure that you have used user controls for all code that is reused,
that your browse menu is dynamically generated and that you code is original (your
Project grades will be posted on the class web site.