Schedule‎ > ‎

Final Project - C++ Sampler

Objectives

  • Write a program that demonstrates what you have learned about C++.
  • Continue to learn how to code classes, objects, vectors and files
  • Start preparing for the final exam.

^ top

Academic Honesty

Read the Scholastic Honesty Policy and Assignment Integrity policies of the syllabus. Here are some clarifications for this particular assignment:

  • You are expected to work alone on this project to show what you have learned about C++.
  • You may not give a copy of your code to another person until after the due date for the project.
  • You may not look at another person's code until after the due date for the project.
  • You may get help from people, such as tutors, if you get stuck, but only if they do not show or tell you the code to type.
  • Do not copy or modify code from the internet or other sources without attribution. Copying code snippets from the instructor's lesson examples without attribution is allowed.


Grading Criteria (60pts + Extra Credit 17pts)

  1. C++ features specified (30pts)
  2. Project functionality (10pts)
  3. Presentation (10pts)
  4. Report (10pts)
Total Possible: 60 pts + Extra Credit 17pts


Project Introduction

During this project, you will write a program that demonstrates what you have learned about C++. The theme or type of program is up to you except the project cannot be a store (retail establishment selling items) nor a contact list. Also, the topic must be respectful of others and appropriate for a family-oriented audience. Be sure you have covered all topics listed in the specifications.

Project Ideas

  • Ideas you developed in the first weeks of class during App Design teamwork
  • Astronomy calculations and simulations
  • Astrology simulations
  • Bank account tracking
  • Battleship game
  • Card games
  • Database programs (store and retrieve selected data)
  • Digital photo manipulation (like Photoshop)
  • Financial analysis
  • Fortune tellers
  • Madlibs games
  • Mine sweeper
  • Physics simulation
  • Stock portfolio tracking


Project Specifications

Develop an object-oriented computer program illustrating the following features of the C++ language. Code from assignments may be reused, but must be applied to a different application than the original assignment. The numbers in parenthesis are the point value for successfully using the feature, as described in the grading criteria.

  1. Do NOT use global variables (-10 if you do), create a prohibited project (-20 if you do) or use inappropriate material (-5 per item if you do).

    Global constants are acceptable.

  2. Construct one or more objects from at least one class that you wrote and make use of the objects in a meaningful way. (4pts)

    Each class must have one or more private member variables and one or more member functions. Your class cannot be named "Product", "Cat", "Bear", "Person" or other example we did in class or homework.

  3. Code and use these control structures:
    1. while or do-while loop (1)
    2. for loop (1)
    3. if or if-else (1)
  4. Code and call these types of functions, besides constructors and main():
    1. void return type (2)
    2. non-void return type (2)
    3. Pass-by-value parameters (2)
    4. Pass-by-reference parameters (2)
  5. Code and call one or more overloaded functions. (2)

    List at least two line numbers in the report to identify both versions of the overloaded function. Also, your project must call both functions. An overloaded constructor does NOT meet this specification.

  6. Code and call one or more overloaded constructors. (2)

    List at least two line numbers in the report to identify the versions of overloaded constructor. Also, your project must construct objects using all the constructors.

  7. Declare one or more vectors and access elements of the vectors. (3)
  8. Make use of files including the following:
    1. Read from a text file using ifstream (2)
    2. Write to a text file using ofstream (2)
    3. Use of fail() whenever a file is opened (1)
    4. Use of stream parameters in a function definition (1)
  9. Use of the setw() manipulator to format output. (1)
  10. Use of the setprecision() manipulator to format output. (1)
  11. Your project must use a Makefile and be split into 3 files:  .h,  .cpp and an app.cpp file (-5 if not done)
  12. If you use Code::Blocks,  you don't need a Makefile,  just split your code into the 3 files (-5 if not done)
  13. A project report as described below (10)
  14. Your project code must function correctly (10)

You must present your project to the class on or before the scheduled day to receive full credit. See Project Presentation for more information.


Extra Credit (17 pts)

The following are worth extra credit points:

  1. Develop a graphics-based application (2 points)
  2. Code a function that makes a recursive call. (2 points)
  3. Use pointers in your project (2 points)
  4. Code a vector of objects for a class that you wrote and process the vector in a for-loop and making use of the size() function. (2 points)
  5. Write and call a function named drawShape() that contains nested loops that displays a shape in your program. The shape must be one we have not used in a lesson exercise of the course. (2 points)
  6. Write and call a sorting function using a known algorithm and apply it to a vector. Name your function sortXXX() where XXX is the algorithm. State your source for the algorithm in your "README.txt" file. (2 points)
  7. Create HTML documentation for your program using Doxygen and submit the documentation in a zip file. (1 point)
  8. Use your imagination and code C++ features not covered in this course -- be sure to clearly identify your creative features and state in your README.txt where you got the extra credit idea or feature. (0 to 4 points)
    1. 0: Extra credit feature is trivial, does not work or source is not stated in README.txt
    2. 1: Extra credit is simple and works
    3. 2: Two simple extra credit features or one complex or imaginative use of a feature
    4. 3: Three simple features or one simple features and one complex or imaginative use of a feature
    5. 4: Four simple features, two complex or imaginative use of a feature, or some combination

Make certain that your README.txt file lists any extra credit attempted and the file and line number of the extra credit where appropriate. Without the file and line number I may not see the extra credit.


Project Report

The final report is a file names README.txt   It must contain the following:

  • Brief introduction describing the purpose of your project and application
    • One paragraph is sufficient
  • A description of how to use your program
  • A list of the specifications with a specification number, short specification description, file name, line number and other information as needed whether you met the specification or not.

    If you do not list the specification, with a specification number, short specification description, file name, and line number, then you will not get credit. One example is sufficient though some examples, like overloaded functions, require two line numbers.

  • A list of any extra-credit features

For an example project report see README.txt

The report can be as short as 1 page. Provide a paper copy of the report to the instructor on the last day of regular class. Turn in the report as your README.txt file in Canvas.


Project Presentation

  • You must demonstrate your project on the assigned day,  unless you make prior arrangements
  • Make certain you upload your project to Canvas before class
  • Give a copy of your project report to the instructor before your presentation
  • Plan on keeping the presentation to 5 minutes or less.

Suggested Presentation Flow

  1. State your name and your project's name.
  2. Briefly state your program's purpose.
  3. Compile your source code.
  4. Demonstrate your program, explaining features and source code as you go including:
    • Show the file that your program reads from and writes to
    • If implemented, show recursive function calls
    • Show creative code features
    • Show and explain source code when requested

    Feel free to refer to or display your written report during the presentation. Show the file that your program reads from and writes to. Point out as many of the cool features as possible so we can all admire them.

  5. Summarize the project.

    When the demonstration is over, or your time is up, then quickly summarize the program's purpose. Ask for questions and give your audience time to ask questions.  Then pause for about 10 seconds to give us a chance to applaud!


Deliverables

Include the following items for grading:

  1. README.txt file containing the project report
  2. All source code files for your project
  3. Any data files required

You must submit all the files needed to make your project function properly. Do not assume that the instructors has any files. Your assignment must work as submitted.

Provide a paper copy of the README.TXT report to the instructor before presenting your project.

Submit your project report as the README.txt file. 

Subpages (1): readme.txt
Comments