UMBC CMSC 202
UMBC CMSC 202 CSEE | 202 | current 202

CMSC 202 Fall 2005
Project 1

Netflux - Internet-based Movie Rental

Assigned Friday September 16, 2005
Design Due Friday September 23, 2005
Program Due Friday September 30, 2005 at 11:59pm
Updates Sept 19th
  • Added Error Handling section
  • Revised state validation information

Objectives


General Project Description

You have been "hired" to implement the NetFlux - Internet-based DVD Rental system. The client (your instructor) has requested the system be completed in five phases (projects) and each phase should fully and correctly implement the required functionality. At the end of each phase, the client will evaluate your work and provide suggestions for improvement as well as a complete list of requirements for the next phase. You will want to be sure that your system implements the required functionality for each phase before submitting it for evaluation.

The final NetFlux system will support a large group of customers, a variety of rental objects (ex: DVDs, books, CDs, etc.), as well as different kinds of customer accounts. The primary responsibility of the system will be to process customer requests, charge accounts, manage stock, and summarize daily shipping and sales. Your implementation will gradually improve over the semester to include all of these requirements. Remember - any and all of these requirements may change or expand throughout the semester - be sure to write maintainable, modifiable code!

Project Description

For the first phase of the project, your client requires that you implement the following components of functionality:

Stock File

The file that details the DVDs that are stocked by the company is formatted as follows:
<DVD_Number> <NumberOfDiscs> <DVD_Title>

The system must verify data from the file immediately and discard the entire entry if invalid data are supplied. DO NOT prompt for confirmation, simply print an error message, discard the entry, and continue processing the file. You can assume that the data will be of the proper type (ex: if an integer is specified, we will only test your program by giving it integers). The name for this file will be supplied by the user (check the User Interaction part). Here is an example of a DVD stock file there are 4 DVDs in stock:

12345 2 Harry Potter and the Chamber of Secrets 423644 1 Matrix: Reloaded 826918 4 Lord of the Rings: The Fellowship of the Ring 759203 1 Dumbo

User Interaction

The system is required to request the following data directly from the user in the FOLLOWING ORDER:
  1. Filename for DVD Stock File
  2. Renter's name - two words on same line separated by one or more spaces
  3. Renter's username - a single word, only letters, digits, and underscores
  4. Renter's credit card number - a positive integer between 10,000,000 and 99,999,999, inclusive (remember - integers will be entered WITHOUT the commas!)
  5. Renter's street address - shipping address, words on one line
  6. Renter's city - one or more words on one line
  7. Renter's state abbreviation - two letters ( valid state postal abbreviations) Updated!
  8. Renter's zip code - a positive integer between 10,000 and 99,999, inclusive (remember - integers will be entered WITHOUT the commas!)
  9. DVD's number - the number of the DVD to rent (valid as above)

The system must verify data from the user immediately and re-prompt if invalid data are supplied. Reprompt ONLY for the invalid data, DO NOT restart from the renter's name. DO NOT abort your program. You can assume that the data will be of the proper type (ex: if an integer is specified, we will only test your program by giving it integers, however, the integer may be too large or too small; ex: if a string/word is specified, we will give you characters, but they may be invalid characters).

DVD Rental

The system will rent a single DVD (perhaps with multiple discs) to a single customer. The rental cost must be calculated for the customer. Currently, DVDs will be rented at $.99 per disc (ex: the Harry Potter movie listed above would cost $1.98 to rent). A receipt for the rental should be displayed for the user.

The customer receipt should look something like this:

------------------------------------------------------ RENTAL RECEIPT ------------------------------------------------------ --------------------- Customer Information --------------------- Name: Fred Flintstone Card: 1234-5678 Username: f_flint Address: 123 Street Address RD A City, ST 12345 --------------------- Rental Requests --------------------- Number: 012-345 Discs: 2 Title: Harry Potter and the Chamber of Secrets --------------------- Charges Detail --------------------- DVD Discs Per Disc Subtotal -------- -------- -------- -------- 012-345 2 $ .99 $ 1.98 -------- TOTAL $ 1.98 ------------------------------------------------------

The receipt must contain the following information:

The receipt MUST be "tabular" (i.e. vertically aligned data) - failure to do so will be penalized. DO NOT spend too much time trying to make your output exactly like the above output - it is ONLY a guide. Similar output with a tabular style will receive full credit.


Design and Implementation Requirements

Functions

This project is designed to give you ample opportunity to explore, experience, and use functions with a variety of different styles of parameters. You MUST use functions in this project whenever possible. If your main function is longer than 25-50 lines or so - it is probably too long - you need to break it apart. However, if your functions are all less than 5 lines, or several look very similar, you may need to rethink/combine them.

Data

General Tips

NEW! Error Handling


Project Design Assignment

Your project design document for project 1 must be named p1design.txt. Be sure to read the design specification carefully. Submit your design in the usual way: submit cs202 Proj1 p1design.txt Remember - the design is due ONE WEEK before the project. Late designs will not be accepted.

Project Makefile

The "make" utility is used to help control projects with large numbers of files. It consists of targets, rules, and dependencies. You will be learning about make files in discussion. For this project, the makefile will be provided for you. You will be responsible for providing makefiles for all future projects. Copy the file makefile from Ms. Wortman's public directory to your directory.

When you want to compile and link your program, simply type the command make or make Proj1 at the Linux prompt. This will compile all necessary .cpp files and create the executable named Proj1.

The make utility can also be used for compiling a single program without linking. For example, to compile Proj1.cpp, type make Proj1.o.

In addition to compiling and linking your files, make can be used for maintaining your directory. Typing make clean will remove any extraneous files in your directory, such as .o files and core files. Typing make cleanest will remove all .o files, core files, Proj1 executable and backup files created by the editor. More information about these commands can be found at the bottom of the makefile.


Grading

The grade for this project will be broken down as follows. A more detailed breakdown will be provided in the grade form you receive with your project grade.

85% - Correctness

This list may not be comprehensive, but everything on this list will be verified by the graders.

15% - Coding Standards

Your code adheres to the
CMSC 202 coding standards as discussed and reviewed in class.
In particular, since this is your first C++ program, pay particular attention to the list below. Graders will check all applicable items in the coding standards.
  1. Your file header comments
  2. Your function header comments (particularly pre- and post-conditions)
  3. Function and variable names
  4. In-line comments
  5. Code readability
  6. Limiting variable scope

Project Submission

Steps for Submission

  1. submit all files
  2. submitls to verify they are in the remote directory
  3. submitmake to build your files remotely
  4. submitrun to run your files remotely
Assuming you've used the recommended file names, then to submit your project, type the command submit cs202 Proj1 Proj1.cpp Proj1Aux.cpp Proj1Aux.h Makefile The order in which the files are listed doesn't matter. However, you must make sure that all files necessary to compile your project (using the makefile) are listed. You need not submit all files at the same time. You may resubmit your files as often as you like, but only the last submittal will be graded and will be used to determine if your project is late. For more information, see the projects page on the course website.

You can check to see what files you have submitted by typing

submitls cs202 Proj1

Be sure to build your project once it has been submitted using the submitmake command, so that you know that all of the files are there and are the most up-to-date versions:

/afs/umbc.edu/users/d/a/dana3/pub/CMSC202/submitmake cs202 Proj1

Test your program to ensure that all files are the most recent versions:

/afs/umbc.edu/users/d/a/dana3/pub/CMSC202/submitrun cs202 Proj1

More complete documentation for submit and related commands can be found here.

Remember -- if you make any change to your program, no matter how insignificant it may seem, you should recompile and retest your program before submitting it. Even the smallest typo can cause compiler errors and a reduction in your grade.

Avoid unpleasant surprises!

Be sure to use the submitmake and submitrun utilities provided for you to compile, link and run your program after you've submitted it.


Last Modified: Monday, 19-Sep-2005 23:21:34 EDT