CS183 -- Lab 3: Design Project



->Courses
->CS183
-->Homework
-->Examples
-->Quiz 1
-->Lab 1
-->Lab 2
->Lab 3
-->Lab 4
->Electronic Submission
->MSVC++ Info
->STL Info
->MFC/GUI Info
->Tentative Schedule
->Course Policies

[Courses]
[Rich][Home][Rich]
[PHome]

Fall Quarter 2001

Overview

The purpose of this lab is develop a software application with a graphical user interface that may be used to manage and play MP3 files.

Acknowledgement

This lab was developed by Dr. Chris Taylor and relies on the Xaudio SDK.

Problem Statement

Your MP3 player application should meet the following minimum requirements:

  • Provide a graphical user interface using MFC. (If you would like a quick review/introduction to MFC, please take a look at a CS182 lab assignment that I have previously assigned.)
  • Display a track list that may be played. Tracks may be added to the list by allowing the user to select:
    • An MP3 file, or
    • A tag file containing one or more tracks.
  • Create a playlist and play the tracks in the order they are given in the playlist.
  • It should be possible to create a playlist by:
    • Allowing the user to select the tracks (one at a time) to be played.
    • Randomly ordering all of the tracks in the tract list.

Implementation details

  1. Please download an updated version of the MP3 (MP3.h and MP3.cpp) and place them in your project directory.
  2. Copy audio_output.h, decoder.h, file_input.h, file_output.h, mpeg_codec.h, properties.h, wave_codec.h, and xaudio.h header files from the xasdk-3.2.9.5\include subdirectory into the project subdirectory (just like lab 1).
  3. Copy xaudio.lib and xaudio.dll from the xasdk-3.2.9.5\lib\dynamic subdirectory into the project subdirectory. (Note this is different than lab 1.)
  4. In the project settings (Alt-F7) do the following:
    • Under the Link tab, add xaudio.lib to the Object/library modules list.
  5. Add MP3.h and MP3.cpp to the project.

Notes:

  • The list of minimum requirements is quite short. In addition, each team must select two additional features to add to their application. The additional features must be agreed upon by members of the team and receive your instructor's approval. This must be done by the beginning of week 7 lab.
  • You may modify the MP3 and album classes if you desire. (Be sure to include the modified source code in your report if you choose to modify them.)
  • This is supposed to be a fun lab, and I expect that many of you will choose to add a number of additional features. You may wish to look at other MP3 players like dBpowerAMP Audio Player or Winamp for additional ideas. You may also find it useful to look at the samples directory of the Xaudio distribution for ideas on how to actually implement some of these features.
  • The MP3 class used in the first two labs makes use of the synchronous library; however, you may find that you would prefer to use XAudio's asynchronous MP3 library instead. That is fine with me; however, you will need to study the documentation provided with the XAudio library in order to figure out how to use it.
  • Extra Credit: During the week 9 lab each team will demonstrate their application. We will all vote for the one that we like best. The top vote getting team will receive extra credit on this assignment.
  • An example of an implementation of the open and save dialog boxes is available at mindcracker.com

Lab Reports

  • Four lab periods (weeks 6, 7, 8, and 9) are allocated for this lab project:
    • Week 6 - This lab period is dedicated to the design of the program and classes. The design work will be done in groups (3 students) and the client (instructor) will be available to clarify the project requirements.
    • Week 7 - This lab period is dedicated to implementation of the application.
    • Week 8 - This lab period is dedicated to implementation of the application.
    • Week 9 - The first half of this lab period is dedicated to demonstrating and testing the program. Each team's program will be tested and evaluated by another team. It is important that all programs be complete and operational by the beginning of this lab period.
      The second half of the lab period is dedicated to demonstrating the program to the class and voting on the "best" application.
  • Both reports should be submitted electronically following the Electronic submission guidelines. (You may wish to consult the sample report before submitting your reports.) Be sure to keep copies of all your files, in case something gets lost. It may be wise to keep a diskette backup as well.
    • Design report (due 11:00pm, the day after week 7 lab)
      • List of team members.
      • A list of additional features beyond the explicit requirements (at least two) that you plan to implement.
      • Description of each class and at least the public portion of each class definition. Note that a full description of each class, attribute, and behavior is required, though this may be in the form of "internal documentation" (comments) in your class definition.
      • Description of the graphical user interface (it may be useful to include a screenshot).
      • One or more use cases describing operation of the program.
      • A brief narrative report describing any problems encountered or remaining questions.
      • A project time log (for each team member) indicating the date and times for each project work period, activity for each period (e.g., requirements study, design), and the total amount of time spent on the project. Summaries should be provided for each team member and the team as a whole.
    • Final project report (due 11:00pm, the day prior to week 9 lab)
      • Updated design report, narrative report, and time log.
      • Documented source code for your complete implementation.
  • The project grade will be determined by considering the following factors:
    • Meeting specifications and submission guidelines
    • Technical quality
    • GUI Design
    • Design documentation
    • Internal documentation (comments)
    • Program clarity (formatting, etc.)
    • Narrative report and time log
    • Program demonstration and test output
    • Spelling, grammar
    • Extra credit
    • Timeliness of submission
    All team members will also complete a peer evaluation form, which will be used to aid in assigning individual grades.

If you have any questions, or any part of the assignment is unclear, please consult the instructor.

© 2001 Dr. Christopher C. Taylor Office: CC-27C Phone: 277-7339 Last Updated: October 11, 2001
I am responsible for all content posted on these pages; MSOE is welcome to share these opinions but may not want to.