Computer Science 2
Project 2 Source Code Manager

Due Dates

  1. The minimal submission is due no later than 11:59 pm on Sunday, January 31, 2010.
  2. The final submission is due no later than 11:59 pm on Wednesday, February 17, 2010.
No late submissions will be accepted. Start now!

Overview

Have you ever asked yourself this question?

    I know I have done this before -- how did I do it???

How often have you wanted to refer back to a program you have written to help you remember how to do something? It would be nice if you had a way to organize your programs so you could easily remember where you did certain things -- for example, where you processed a file, created an exception or maipulated command line arguments.

In the software development field, reuse is very important -- it results in less work because we aren't recreating the wheel! Secondly, we save time because our testing and debugging times are reduced.

To help you leverage existing code (that you have written), you will write a source code manager. You have written quite a number of programs and this software will help you keep track of your programs so you can easily refer back to them. Your software will also provide ways for you to search for programs based on certain keywords, or sort by the program name.

Goals

The goal of this project is to produce a working and realistic program for you to manage your code. You will practice

  1. designing and building a GUI
  2. processing files
  3. working with serialized objects
  4. building a database and manipulating the data using the JCF.

You will also be introduced to the Model-View-Controller design pattern.

Requirements

Unlike your first project, this project has relatively few requirements. You are strongly encouraged to expand from the minimum requirements to create something unique -- and to earn extra points.

Here are the basic requirments:

  1. You must use the Java Collections Framework.
  2. Your program must use a GUI for the user interface. Any type of GUI builder tool is forbidden. You must build your GUI code from scratch. At a mimimum, your GUI must allow the user to access all the basic requirements listed here. Your GUI will be evaluated on both functionality and appearance.
  3. Your program must allow a user to add information about a new program to the database, delete (remove) a program from the database, look up programs based on a keyword, and display all programs in alphabetical order by name.

    Each program will include (at a minimum) the name, the path name to the file, and up to 3 keywords describing the file.

  4. Provide some type of "exit application" button on your GUI. When pressed, your program must save the current database to a disk file.

    When the user launches your program, you must reload the database created in the previous executions.

    When you save your database, you must save as serialized objects.

  5. Your program must follow the MVC design pattern. Your lecture instructor will provide you with more information in class.

That's it -- a basic working program is worth 75% of your total grade.

Grading

The previous section outlined the basic requirements worth 75% of your project grade. The minimal submission is worth 15% and the final (basic) submission is worth 60%.

The remaining 25% will be earned by adding "bells and whistles" to your program. The possibilities are endless, but here are a few:

  1. (10 points) Add a feature where the user can select a file name and the file contents will be displayed on your GUI.
  2. (varies, up to 10 points) Use something different on your GUI -- try adding menus, images, sound, etc..
  3. (5 points) Add an "about" feature which provides information about the author (you!) such as your picture, a brief bio, ... or info about your program such as the date written, version number,...
  4. (varies, up to 7 points) Add some type of help feature.
  5. (10 points) Add the course or quarter number to the information you save for each file in your database; provide a search based on this new field (or any other relevant field).
  6. Other ideas? Run them by your lecture instructor.

    A few words of caution:

    1. Do not work on extra features until you have met the basic functionality.
    2. Think about the appearance of your GUI - don't overclutter, or design it so it's difficult to read or follow.
    3. Do not forget to discuss your design in the Design.txt file.
    4. Your program is GUI-based so 'try' will not run any tests. Be sure everything works before you submit. If you have known problems or think your instructor needs a heads-up about something in your solution, be sure you include a description in the Design.txt file!

Check the details! A perfectly working program may be penalized up to 30% for missing RCS entries, missing headers, or overall sloppy code. Points will be deducted for weak attempts at the MVC structure.

How to Submit

There are three deliverables for the minimal submission:

  1. A description of your initial design in a file named Design.txt. This file must include your name, username, and a description of the classes you think you will need. Note: We understand this is a preliminary design; you may make changes in the second submission.

    Do not format this file - create in emacs (or your favorite text editor) and submit as a flat ASCII file. Be sure you spell and grammar check before submitting.

  2. Two code files
    1. Your complete .java file that defines how you will represent your source code files - SourceCode.java
    2. Your initial GUI - GUI.java.
    Again, these classes may very likely change as you get further into development and add optional features. To get credit, both files must compile. Your GUI must launch and gracefully exit either when the window closes or when a GUI component is selected.

    Submit your carefully tested code and design description to:

      try grd-232 project2-1 SourceCode.java GUI.java Design.txt

The final submission consists of all your code and a revised Design.txt file. Submit your carefully tested code to

      try grd-232 project2-2 SourceCode.java GUI.java Manager.java {other java files} Design.txt

    Manager.java must contain your main method and launch your application. SourceCode.java and GUI.java are your final versions of the classes from the minimal submission. The file Design.txt must contain your name, username, and a description of your design. Also include notes or "features" (aka known DEFECTS) about your solution. Do not format this file - create in emacs (or your favorite text editor) and submit as a flat ASCII file.

    Spell and grammar check before submitting. You will lose points for design descriptions that are too short, vague, or reflect little thought.

1/11/10 by tmh $Id: writeup.html,v 1.1 2010/01/14 22:25:35 vcss232 Exp $