This project will be a Lawn Service management application. The user runs a summer lawn mowing service and the application helps manage clients and predict revenue.
Application Goal
The goal of this application is to enter a series of new clients for a summer lawn mowing service. When all clients and their data have been entered the application will output a report.
Application Setup
When the application is launched it will ask the user for information on a new client one item at a time. Once a client’s data has been entered it will ask if you would like to add a new client. The user will continue adding clients until they indicate they are done.
After all clients have been entered the application will output a report on each client and then a summary report about the summer’s work.
Application Inputs
The application will ask for the following from each client:
The name of the client
The length of the client’s lawn
The width of the client’s lawn
The number of payments that the client will be making
One payment
Two payments
Twenty payments, which is once a week for the whole mowing season.
After all these have been entered the application will ask the user if they want to enter a new client. If the user enters a “Y” or a “y” then the application starts over again with the above list.
Client Report
After all the clients have been entered the application will output a report for each client. Here is an example of what the report could look like, the actual design of the report is up to the author of the application. (Caution: These numbers are just made up!)
Client: Bill Smith Lawn Size: 375 sq. ft. Number of Payments: 2 Amount of each payment: $255.00 Total of all payments: $510.00
Summary Report
After all the Client Reports have been output to the terminal the application will generate and output a summary report on all the clients. Here is an example of what the report could look like, the actual design is up to the author. (Caution: These numbers are just made up!)
Total Number of clients: 5 Total Square Feet of Mowing: 5,000 Total Revenue for the summer: $2,500.00
Charge Calculation
The amount that a client is charged has 2 portions, a season charge based on the size of their lawn and a service charge based on how many payments they choose to make.
The season will last 20 weeks.
The season charge depends on the size of the lawn. If the lawn area is:
Less than 400 sq. ft. then the season charge is $25 per week times the number of weeks.
Greater than or equal to 400 sq.ft. and less than 600 sq. ft. then the season charge is $35 per week times the number of weeks.
Greater than or equal to 600 sq. ft. then the season charge is $50 per week times the number of weeks.
The service charge is based on how many payments the client chooses to make.
If the customer is going to make one payment then there is no service charge.
If the customer is going to make two payments then the service charge is $5 per payment.
If the customer is going to make twenty payments then the service charge is $3 per payment.
Provided Class
You will use a helper class to get input from the user. Download and add this file to your project3 directory. You will need to instantiate an object from this class to use it.
InputHelper.java
High-Level Design
Create a simple text file and write a high-level design for your application. This will be like the labs and the example in chapter 5. This file should be saved in the project3 directory.
Show your instructor your high-level design and get it approved.
Class Identification
Create a simple text file where you identify the classes for the application. This file should just contain quick descriptions of each class. Include what objects from the classes will know and what they will do. This file should be saved in the project3 directory.
Show your instructor your classes and get them approved.
Prepcode
For every class except for the provided helper class you will need to create a simple text file that holds prepcode for the class. The prepcode needs to describe all the variables and methods. Each method will need to be documented with good prepcode like the labs and in-class demos.
Show your instructor your prepcode and get it approved.
Test Code
You will need to create a class that tests the method where you do your payment calculation. This class will instantiate an instance of the class you are testing. It will then call the calculation method with hard-coded values. It will output the string “success” or “failure” depending on the return value of the calculation.
Run your test code for your instructor.
Real Code
Now code up the actual application! Use all the work you have done so far and write all the classes. First write the class that you have test code for. Once this class passes your test move on to the other classes.
Project Requirements
The following list of requirements must be satisfied for all projects:
All .java files in your project or labs directory must be compilable. I will test this with the command “javac *.java”. There can be no errors after that command finishes its operation.
All lab and project files must work properly. No partial credit will be given for projects that only implement part of the specifications.
All directories must be spelled exactly as specified. No variations, including case, will be accepted.
It is not our intention to break the school's academic policy. Posted solutions are meant to be used as a reference
and should not be submitted as is. We are not held liable for any misuse of the solutions.
Please see the frequently asked questions page
for further questions and inquiries.
Kindly complete the form.
Please provide a valid email address and we will get back to you within 24 hours.
Payment is through PayPal, Buy me a Coffee
or Cryptocurrency.
We are a nonprofit organization however we need funds to keep this organization operating
and to be able to complete our research and development projects.