Instructions
Objective
Write a program to create college billing system in java language.
Requirements and Specifications
Advanced Java 100 points
Due date – Feb 25 11:59pm (nothing late- solution posted at midnight)
You are to create a program to calculate a College bill for a student. You will have two new user defined classes.
- The first user defined class will have a default constructor that will assign the following data to variables to your choice. Therefore, the only this thing this class will do is to assign these values to variables:
- Cost of the tuition rate per credits = $750
- Cost of the technology fee =$50
- Cost of three levels of meal plans,
- gold,=$3,500
- silver=$3,000
- bronze=$2,500
- Cost of parking pass=$200
- The second user defined class will contain the methods:
- a default constructor that has the first class above passed to it and data from the first class is assigned to variables of your choice in this second class
- a method that prompts the user for the following data
- student name
- number of credits
- room amount
- which meal plan the student wants(gold, silver or bronze)
- a method to calculate the following:
- cost of room and board= (cost of the meal plan + room amount) You will need an if statement to calculate the meal plan based on the meal plan costs passed in
- tuition = number of credits * the tuition rate passed in
- final technology fee = technology fee passed in * number of credits
- final bill = room and board + final technology fee + parking pass (passed in) +tuition
- a method to print all of the following data in one dialog box using currency format (example of using currency formatting is included with this assignment)
- student name
- number of credits
- tuition the student owes
- room and board amount
- parking pass amount
- final technology fee
- final bill due
- What to turn in:
- Create a word document and first copy your code
- Then copy a screen shot of the final output
- Submit the word document to blackboard
PLEASE NOTE: You text in the word document MUST be black. Submissions with light text will not be accepted.
Source Code
import javax.swing.*;
import java.text.DecimalFormat;
public class CollegeBill {
private final double tuitionRatePerCredits;
private final double technologyFee;
private final double goldMealPlan;
private final double silverMealPlan;
private final double bronzeMealPlan;
private final double parkingPass;
private String studentName;
private double numberOfCredits;
private int roomAmount;
private String mealPlan;
private double roomAndBoard;
private double tuition;
private double finalTechnologyFee;
private double finalBillDue;
public CollegeBill(Price price) {
this.tuitionRatePerCredits = price.getTuitionRatePerCredits();
this.technologyFee = price.getTechnologyFee();
this.goldMealPlan = price.getGoldMealPlan();
this.silverMealPlan = price.getSilverMealPlan();
this.bronzeMealPlan = price.getBronzeMealPlan();
this.parkingPass = price.getParkingPass();
}
public void readUserInfo() {
studentName = JOptionPane
.showInputDialog(null,"Please, enter student name: ","College Bill Data", JOptionPane.QUESTION_MESSAGE)
.trim();
while (true) {
try {
numberOfCredits = Double.parseDouble(
JOptionPane.showInputDialog(null,"Please, enter number of credits: ","College Bill Data", JOptionPane.QUESTION_MESSAGE)
.trim());
if (numberOfCredits <= 0.0) {
throw new IllegalArgumentException();
}
break;
} catch (Exception e) {
System.out.print("Invalid input");
}
}
while (true) {
try {
roomAmount = Integer.parseInt(
JOptionPane
.showInputDialog(null,"Please, enter room amount: ","College Bill Data", JOptionPane.QUESTION_MESSAGE)
.trim());
if (roomAmount < 0) {
throw new IllegalArgumentException();
}
break;
} catch (Exception e) {
System.out.print("Invalid input");
}
}
while (true) {
try {
mealPlan = JOptionPane
.showInputDialog(null,"Please, enter meal plan (gold/silver/bronze): ","College Bill Data", JOptionPane.QUESTION_MESSAGE)
.trim()
.toLowerCase();
if (!"gold".equals(mealPlan) && !"silver".equals(mealPlan) && !"bronze".equals(mealPlan)) {
throw new IllegalArgumentException();
}
break;
} catch (Exception e) {
System.out.print("Invalid input");
}
}
}
public void calculate() {
double meanPlanCost = bronzeMealPlan;
if ("gold".equals(mealPlan)) {
meanPlanCost = goldMealPlan;
} else if ("silver".equals(mealPlan)) {
meanPlanCost = silverMealPlan;
}
roomAndBoard = meanPlanCost + roomAmount;
tuition = tuitionRatePerCredits * numberOfCredits;
finalTechnologyFee = technologyFee * numberOfCredits;
finalBillDue = roomAndBoard + finalTechnologyFee + parkingPass + tuition;
}
public void printInfo() {
StringBuilder builder = new StringBuilder();
DecimalFormat df = new DecimalFormat("$##,###.##");
builder.append(String.format("%-20s", "Student Name:")).append(studentName)
.append(System.lineSeparator());
builder.append(String.format("%-20s", "Number of credits:")).append(df.format(numberOfCredits))
.append(System.lineSeparator());
builder.append(String.format("%-20s", "Tuition:")).append(df.format(tuition))
.append(System.lineSeparator());
builder.append(String.format("%-20s", "Room and board:")).append(df.format(roomAndBoard))
.append(System.lineSeparator());
builder.append(String.format("%-20s", "Parking pass:")).append(df.format(parkingPass))
.append(System.lineSeparator());
builder.append(String.format("%-20s", "Technology fee:")).append(df.format(finalTechnologyFee))
.append(System.lineSeparator());
builder.append(String.format("%-20s", "Bill due:")).append(df.format(finalBillDue))
.append(System.lineSeparator());
JOptionPane.showMessageDialog(null, builder.toString(), "College Bill", JOptionPane.INFORMATION_MESSAGE);
}
public static void main(String[] args) {
Price price = new Price();
CollegeBill collegeBill = new CollegeBill(price);
collegeBill.readUserInfo();
collegeBill.calculate();
collegeBill.printInfo();
}
}
PRICE
public class Price {
private final double tuitionRatePerCredits;
private final double technologyFee;
private final double goldMealPlan;
private final double silverMealPlan;
private final double bronzeMealPlan;
private final double parkingPass;
public Price() {
this.tuitionRatePerCredits = 750;
this.technologyFee = 50;
this.goldMealPlan = 3500;
this.silverMealPlan = 3000;
this.bronzeMealPlan = 2500;
this.parkingPass = 200;
}
public double getTuitionRatePerCredits() {
return tuitionRatePerCredits;
}
public double getTechnologyFee() {
return technologyFee;
}
public double getGoldMealPlan() {
return goldMealPlan;
}
public double getSilverMealPlan() {
return silverMealPlan;
}
public double getBronzeMealPlan() {
return bronzeMealPlan;
}
public double getParkingPass() {
return parkingPass;
}
}