Name:______Project: ______
Guidelines for Program Projects
______Design (65%)
- ______Meets the design criteria as specified in the instructions.
- ______No syntax errors.
- ______No logic errors.
______Program Style (20-25%)
______Layout
- _____Use either the courier or new-courier font. Any font that does not have a uniform width for all characters will receive no credit for programming style.
- _____ All matching brace pairs must be aligned in the same vertical column.
- _____Nested braces must be indented at least 3 spaces. A single tab is acceptable if it is at least 3 spaces.
- _____Only one statement per line.
- _____ Declare a list of variables in columns rather than horizontally across the page.
- _____ All instance fields must be declared as private.
- _____Put spaces between operands and operators of expressions.
- _____Put at least one space after a comma. Be consistent with the number of spaces after a comma throughout your program.
- _____"Paragraph" your code by grouping statements that perform a well defined task together, include at least one blank line before and then after the group of well defined statements.
- _____ Do not allow wrap-around of long lines for program statements, headerlines, etc. Limit the line length to no more than 100 characters.
______Naming
- _____All variable-names, method-names, and class names should be descriptive.
- _____Variable-names and method-names begin with a lowercase letter and have the first letter of each successive word in the name capitalized, as in payRate, or computeInterestRate.
- _____Class names should follow a similar convention as variables names, but start with an uppercase character, as in Manager, or BankAccount.
- _____ Named constants using the final keyword in the declaration should be all uppercase letters using underscores between words, as in: UPPER_BOUND or TX_CHARACTER.
- _____Replace literal constants with named constants. The named constants should be declared and grouped together at the start of a method or class.
- _____Loop counter variablesare the only variables that may be named with a single character provided the loop is only a few lines in length (say 5 lines). All other variable names must be at least 2 characters long and have a descriptive name.
- _____Two character variable names should begin with a letter followed by a digit. Two character variable names should be restricted to a block of code or a paragraph of code.
______Documentation (10-15%):
- _____A program file must contain a comment header at the beginning of the file. Use the examples attached to this document as a guide for your comment header. Include a description of program inputs and outputs.
- _____All classes and all methods other than the main static-method, must have a comment header before the header line. Use the attached examples as a guide for your comment headers. Begin all class and method headers with /** and conclude the comment header with */
Method headers should include a description of each argument in the formal parameter list. Each argument should have a brief description in the header and begin with @param (see examples below).
Methods that return a result should have a description of the return value. The description of the return value should begin with @return (see examples below).
- _____Single line comments should appear throughout your program. Single line comments should use the //. Single line comments can be on the same line as a statement or before the statement(s) being commented.
- Do not allow wrap-around for comments. Keep line lengths to no more than 100 characters.
/**
Author: JChildress
Date: 10-05-06
Language Version: Java2 1.5.0_06
Course: CS1043
Section: 1 and 2
File Name: ObjArray.java
Classes: ObjArray
Description:
This program demonstrates how to use the ArrayList class and
demonstrates how to parse a string containing different data
types. The ArrayList accumulates objects of type Employee.
Inputs:
The user is prompted for input strings containing a name and
a wage.
Outputs:
The highest wage is displayed, and all the input names and
wagesare displayed.
*/
import java.util.Scanner;
import java.util.ArrayList;
public class ObjArray
{
public static void main( String[] args )
{
Scanner record = new Scanner( System.in );
// Create an ArrayList to hold Employee objects.
ArrayList<Employee> employeeList = new ArrayList<Employee>();
// continued on the next page…
boolean go = true;
do
{
System.out.print(
"Enter name and wage (press return to stop): " );
String inputLine = record.nextLine();
if ( inputLine.length() <= 0 ) // test for an empty string
{
go = false; // stop loop
}
else // parse the data in the inputLine.
{
Scanner fields = new Scanner( inputLine );
String name = fields.next();
double wage = fields.nextDouble();
Employee worker = new Employee( name, wage );
// Insert the new worker in the ArrayList "employeeList"
employeeList.add( worker );
} // end if statement
} while ( go ); // end loop.
Employee bigShot = employeeList.get( 0 );
for ( int i=1; i<employeeList.size(); i++ )
{
Employee worker = employeeList.get(i);
if ( bigShot.getWage() < worker.getWage() )
{
bigShot = worker;
}
}
if ( bigShot != null )
{
System.out.printf( bigShot.getName() +
" has the highest wage: $" + bigShot.getWage() + "\n" );
}
System.out.printf( "The employee and wage list: \n" );
for( int i=0; i<employeeList.size(); ++i )
{
Employee wrk = employeeList.get(i);
System.out.printf( wrk.getName() + " : $"
+ wrk.getWage() + "\n" );
}
} // end main
} // end class ObjArray
/**
Author: J. Childress
Date: 10-05-06
Language Revision: Java2 1.5
Course: CS1043
Section: 1 and 2
File Name: Employee.java
Classes: Employee
Description:
This file contains the Employee class. The Employee class
is used to declare objects of type Employee.
Private Instance Variables (Fields)
name - The employee name.
wage - The employee wage.
Methods:
getName - return the "name" instance field.
getWage - return the "wage" instance field.
Constructors:
This class has one constructor. The constructor is used to
initialize the instance fields with user supplied values from
the formal parameter list.
*/
public class Employee
{
private String name_; // instance variable
private double wage_; // instance variable
/**
Constructor Name: Employee
Description:
This constructor is used to set all the instance fields with user
supplied input values.
Inputs:
@param name = used to set the name_ instance field.
@param wage = used to set the wage_ instance field.
*/
public Employee ( String name, double wage ) // constructor
{
name_ = name;
wage_ = wage;
}
/**
method Name: getName
Description:
The getName() accessor method returns the name_ instance field.
Inputs:
None
Outputs:
@return the name_ instance field.
*/
public String getName( ) // accessor method
{
return( name_ );
}
/**
method Name: getWage
Description:
The getWage() accessor method returns the wage_ instance field.
Inputs:
None
Outputs:
@return the wage_ instance field.
*/
public double getWage( ) // accessor method
{
return( wage_ );
}
} // end class Employee
/**
Author: Roger Wainwright 8-29-00 Java2
Revised: James Childress 9-25-06 Java2 1.5
Course: CS1043
Section: 1 and 2
File Name: MethodExample.java
Class Names: MethodExample
Project: 0
Program Description:
This is a static method example. The main program will prompt
for three inputs, then compute and display the future value
of an investment based on the inputs.
Inputs:
1. Present value amount in dollars and cents. (Type double)
2. The annual percentage interest rate (APR). (Type double)
Input as a percentage %.
3. Number of years for the investment to grow. (Type int)
Outputs:
The future value is computed and displayed using the formula:
FV = PV*(1+APR/12)^(12*years)
*/
import java.text.NumberFormat;
import java.util.Locale;
import java.util.Scanner;
public class MethodExample
{
// ------
public static void main(String[] args)
{
Scanner console = new Scanner( System.in );
System.out.print("\nPlease enter the present value amount: ");
double presentV = console.nextDouble();
System.out.print("\nPlease enter the rate of investment in percent: ");
double rate = console.nextDouble();
System.out.print("\nPlease enter the number of years of the " +
"investment (as an integer): ");
int years = console.nextInt();
double futureV = futureValue( presentV, rate, years );
NumberFormat formatter
= NumberFormat.getCurrencyInstance( Locale.US );
System.out.printf("\nFinal Investment value compounded monthly = "
+ formatter.format( futureV ) + "\n\n" );
}// end main
//------
/**
Method Name: futureValue
Description:
This function will calculate and return the future value of
investing an inital amount in dollars for y-years at the rate
of r-APR. The interest is compounded monthly.
Inputs:
@param pVal is the the present value (aka the initial balance).
@param rate is the APR, annual percentage rate of interest.
@param years is the number of years for the investement to grow.
Outputs:
@return fVal is the future value amount returned by the method.
*/
public static double futureValue( double pVal, double rate, int years )
{
final int M_YEAR = 12;
double fVal = pVal * Math.pow(1 + rate/(M_YEAR*100), M_YEAR*years);
return fVal ;
}// end futureValue
//------
}// end MethodExample
/**
Note: the futureValue header line can be placed on one line because it will “fit” on one line and be readable. Long formal parameter listscan be
broken up into one line per argument.
public static double futureValue( double pVal,
double rate,
int years )
*/