Phase 1: Saturday, Jan. 26th, 2008 Midnight (No Late Submissions)
Phase 2: Friday, Feb. 1st, 2008 Midnight (No Late Submissions)
Phase 3: Wednesday, Feb. 6th, Midnight
(10 pts) Phase 1 submission
(5 pts) Phase 2 checkpoint
(85 pts) Phase 3 submission
- (20 pts) UML Class diagram
- (55 pts) Implementation
- (25 pts) Class accuracy: how well you followed your UML and the functional requirement
- (15 pts) Saving/Loading state
- (15 pts) Searching and sorting algorithm implementation
- (10 pts) Documentation
- (8 pts) Functional requirement
- (2 pts) User manual
You are to make a digital jukebox simulator. You are to simulate the functionality of a jukebox, but not actually get it to play any music (unless you want to do it). The goal of the player is for you to have it menu driven. Each action will change a state under the hood and you can always view what is really going on at any moment. The specifications are as listed. You will not have to make everything be time driven either. So an example run of the program would look like this:Welcome to Jasper AudioPlayer v.1.0 1. View current track information 2. Advance disc 3. Rewind disc 4. Advance track in current disc 5. Rewind track in current disc 6. List loaded discs 7. List tracks in current disc 8. Quit What would you like to do? 1 You are currently playing: Eye of the Tiger, by Survivor Released Jan. 1st, 1982 Disc: Eye of the Tiger, Rocky III Duration: --:-- blah blah (more information that I can't make up) Welcome to Jasper AudioPlayer v.1.0 1. View current track information 2. Advance disc 3. Rewind disc 4. Advance track in current disc 5. Rewind track in current disc 6. List loaded discs 7. List tracks in current disc 8. Quit What would you like to do? 2 You have now advanced to disc 2: DJ Tiesto - Magick 6
You are to pass this project through 3 phases:
- Design - Generate an UML describing the structure of the software and produce a specification documentation that describes the functionalities that the software will have. You are to also provide a timetable of when do you expect certain things to be done, plan it as if you are going to do it... and stick to it!
- Progress - You are to submit the progress you have and state whether you are ontime or not for each individual module that you have specified in your timetable.
- Final submission - You are to submit the final implementation and documentation. The documentation must have a user manual as well as a functionality specification (specification of the final product, not the design).
Additional thing to keep in mind is that you MUST have an appointment with me in the week of Jan. 28th before the second phase is due for design consultation. Either online or in during my office hours Wednesdays or you will not receive grade for the first phase.
You need the following set of things (each can represent many classes):
- Player: Something to hold the thing together, has multiple lists/discs
- Must be able to have a current and playing/pausing track from one of the list/disc
- Must be able to advance and rewind through tracks and discs
- (IMPORTANT!) Must be able to save and load into a file all information about all list/disc and tracks (organizing into multiple files is a good idea). I recommend
- Must be able to search and sort by list/disc (search with linear search and sort using merge sort)
- A name and other information about it
- Player is non-modifiable in program, must be modified in file form.
- List/Disc: A list that contains all tracks in the list
- Could have a majority of the functions in the player to alleviate the responsibilities of the player
- Must be able to search and sort by track (search with linear search and sort using merge sort)
- Must be able to list all tracks in a neat fashion
- Must have all information like album, title, etc.
- All lists are non-modifiable in program, only modifiable in file form.
- Track: A single track with information about it
- Must have all information about the track, like title, album, artist, length, et
Phase 1 Requirements
What to hand in:
- UML Class diagram of the structure of the software
- Functional requirement document
- Time table of when things are expected to be finished
UML has been discussed in class. The functional requirements documentation looks something like this:
- View current song
- Advance track
View current song
This will show all information about the song that is currently been played. The information will include ... blah blah blah ... The function will have no side effect other than displaying into the console the information asked.
View current song
Purpose: To show the current song playing. The information shown will be ... blah blah blah
Side Effect: None
The time table will be outline style with a date next to what will be done. Please be realistic and keep in mind that this will have to be done by midnight 2/6/2008.
Phase 2 Requirements
What to hand in:
- All work that you have done since Phase 1 completion
Phase 3 Requirements
What to hand in:
- All code written
- Final UML class diagram
- Functional requirements document
- User manual
Everything should have been explained to here except the user manual. I expect all code to be commented along side all the other documentations. The user manual should just include:
- A short description of what you would get from each functionality in the menu system
- Where the state will be saved and maybe what format the file will be in
- Special considerations when using the software