Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

JAVA Program: Develop a text based menu driven program that calculates cell phon

ID: 3728015 • Letter: J

Question

JAVA Program: Develop a text based menu driven program that calculates cell phone package costs. Here is a link to an example of a text based menu (Link)

The Cell phone provider has the following monthly talk packages:

1000 minutes, $29.99

5000 minutes, $49.99

unlimited,   $69.99

The provider also sells cells phones:

Model 100, $39.95

Model 200, $49.95

Model 300, $59.95

The following monthly data options are available:

500MB, $50.00

2.5GB, $60.00

Unlimited, $70.00

The following phone shipping cost and information will apply:

zip codes within 325XX - free shipping

Continental United States - 5.00 shipping cost.

zip codes for Alaska (995xx - 999xx) or Hawaii  (967xx - 968xx) - 10.00 shipping fee.

Regular Expressions

Zip code input should be ONLY 5 DIGITS.

Phone numbers must be in the form (xxx) xxx-xxxx.

Must Use the Regular Expressions to test the zip code and phone number. Use User Defined Exception that will require the user to enter zip or phone in correct format before continuing. To learn about Regular Expression in Java tryhttp://docs.oracle.com/javase/tutorial/essential/regex/index.html and the you tube video http://www.youtube.com/watch?v=s_PfopWcMwI.  

Customer Information must include: Customer's name, address (street, city, state, zip), phone number, customerID number .

The cell phone company is concerned with the volatile cell phone market so they want the application to be flexible.

The application will read all the talk packages, cell phones and data options from a file. This includes talk package max minutes and cost, cell phone model and cost, and data options and cost. Please have the file named appropriately and have the program read it in automatically at startup.

The file format is left up to the developer however; it must be easily readable and maintainable by a non programmer.

The number of talk packages (3), cell phone models (3) and options (3) are constant.   (Optional, make these numbers dynamic, based on items in the file)

Write all completed transaction data to a Random Access File named appropriately. Again file format is up the developer but should be readable. The data should include customerid number, total startup cost and total reoccurring monthly cost, therefore each record must be of sufficient length to handle this data.

A menu option to search the Transaction file for a transaction based on customerid number. Assume only one transaction per customer ID.

The remaining design details are left up to the developer, including how to structure the application, how many classes to develop and the interrelationship of those classes. Use the techniques you've learned in this course, including good object oriented design,.

Explanation / Answer

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

/**

* The MenuWindow class demonstrates a menu system.

*/

public class MenuWindow extends JFrame

{

private JLabel messageLabel; // To display a message

private JLabel results;// to display result

private final int LABEL_WIDTH = 400; // The label's width

private final int LABEL_HEIGHT = 200; // The label's height

// The following variables will reference menu components.

private JMenuBar menuBar; // The menu bar

private JMenu fileMenu; // The File menu

private JMenu textMenu; // The Text menu

private JMenu cellMenu; // The phone menu

private JMenu addMenu; // The add on menu

private JMenuItem exitItem; // An item to exit the application

private JRadioButtonMenuItem blackItem; // To make the text black

private JRadioButtonMenuItem redItem; // To make the text red

private JRadioButtonMenuItem blueItem; // To make the text blue

private JRadioButtonMenuItem blackItem1; // To make the text black

private JRadioButtonMenuItem redItem1; // To make the text red

private JRadioButtonMenuItem blueItem1; // To make the text blue

private JCheckBoxMenuItem voiceItem; // To toggle visibility

private JCheckBoxMenuItem textItem; // To toggle visibility

/**

* Constructor

*/

public MenuWindow()

{

// Call the JFrame constructor.

super("Cell Phone Package");

// Specify an action for the close button.

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

// Create the message label and set its size and color.

messageLabel = new JLabel("Use the menu to " +

"select the best plan for you.",

SwingConstants.CENTER);

messageLabel.setPreferredSize(

new Dimension(LABEL_WIDTH, LABEL_HEIGHT));

messageLabel.setForeground(Color.BLACK);

// Add the label to the content pane.

add(messageLabel);

// Build the menu bar.

buildMenuBar();

// Pack and display the window.

pack();

setVisible(true);

}

/**

* The buildMenuBar method builds the menu bar.

*/

private void buildMenuBar()

{

// Create the menu bar.

menuBar = new JMenuBar();

// Create the file and text menus.

buildFileMenu();

buildTextMenu();

buildAddMenu();

buildCellMenu();

// Add the file and text menus to the menu bar.

menuBar.add(fileMenu);

menuBar.add(textMenu);

menuBar.add(addMenu);

menuBar.add(cellMenu);

// Set the window's menu bar.

setJMenuBar(menuBar);

}

/**

* The buildFileMenu method builds the File menu

* and returns a reference to its JMenu object.

*/

private void buildFileMenu()

{

// Create an Exit menu item.

exitItem = new JMenuItem("Exit");

exitItem.setMnemonic(KeyEvent.VK_X);

exitItem.addActionListener(new ExitListener());

// Create a JMenu object for the File menu.

fileMenu = new JMenu("File");

fileMenu.setMnemonic(KeyEvent.VK_F);

// Add the Exit menu item to the File menu.

fileMenu.add(exitItem);

}

/**

* The buildTextMenu method builds the Text menu

* and returns a reference to its JMenu object.

*/

private void buildTextMenu()

{

// Create the radio button menu items to change the color

// of the text. Add an action listener to each one.

blackItem = new JRadioButtonMenuItem("300 minutes:$45 per month", true);

blackItem.setMnemonic(KeyEvent.VK_B);

blackItem.addActionListener(new PlanListener());

redItem = new JRadioButtonMenuItem("800 minutes:$65 per month");

redItem.setMnemonic(KeyEvent.VK_R);

redItem.addActionListener(new PlanListener());

blueItem = new JRadioButtonMenuItem("1500 minutes:$99 per month");

blueItem.setMnemonic(KeyEvent.VK_U);

blueItem.addActionListener(new PlanListener());

// Create a button group for the radio button items.

ButtonGroup group = new ButtonGroup();

group.add(blackItem);

group.add(redItem);

group.add(blueItem);

// Create a JMenu object for the Text menu.

textMenu = new JMenu("Minutes");

textMenu.setMnemonic(KeyEvent.VK_T);

// Add the menu items to the Text menu.

textMenu.add(blackItem);

textMenu.add(redItem);

textMenu.add(blueItem);

}

private void buildAddMenu()

{

// Create the radio button menu items to change the color

// of the text. Add an action listener to each one.

blackItem1 = new JRadioButtonMenuItem("Model 100:$29.95", true);

blackItem1.setMnemonic(KeyEvent.VK_S);

blackItem1.addActionListener(new PlanListener());

redItem1 = new JRadioButtonMenuItem("Model 110:$49.95");

redItem1.setMnemonic(KeyEvent.VK_K);

redItem1.addActionListener(new PlanListener());

blueItem1 = new JRadioButtonMenuItem("Model 200:$99.95");

blueItem1.setMnemonic(KeyEvent.VK_P);

blueItem1.addActionListener(new PlanListener());

// Create a button group for the radio button items.

ButtonGroup group = new ButtonGroup();

group.add(blackItem1);

group.add(redItem1);

group.add(blueItem1);

// Create a JMenu object for the Text menu.

addMenu = new JMenu("Cell-Phone model");

textMenu.setMnemonic(KeyEvent.VK_Z);

// Add the menu items to the Text menu.

addMenu.add(blackItem1);

addMenu.add(redItem1);

addMenu.add(blueItem1);

}

private void buildCellMenu()

{

// Create a check box menu item to make the text

// visible or invisible.

voiceItem = new JCheckBoxMenuItem("Voice mail option", true);

voiceItem.setMnemonic(KeyEvent.VK_E);

voiceItem.addActionListener(new PlanListener());

// Create a check box menu item to make the text

// visible or invisible.

textItem = new JCheckBoxMenuItem("Text message option", true);

textItem.setMnemonic(KeyEvent.VK_F);

textItem.addActionListener(new PlanListener());

// Create a JMenu object for the Text menu.

cellMenu = new JMenu("Add ons");

cellMenu.setMnemonic(KeyEvent.VK_D);

// Add the menu items to the Text menu.

cellMenu.add(voiceItem);

cellMenu.add(textItem);

}

/**

* Private inner class that handles the event that

* is generated when the user selects Exit from

* the File menu.

*/

private class ExitListener implements ActionListener

{

public void actionPerformed(ActionEvent e)

{

System.exit(0);

}

}

/**

* Private inner class that handles the event that

* is generated when the user selects a color from

* the Text menu.

*/

private class PlanListener implements ActionListener

{

public void actionPerformed(ActionEvent e)

{

double plan1;

double package1;

double text;

double message;

double addOn;

double total;

// Determine which color was selected and

// act accordingly.

if (blackItem.isSelected())

plan1=45;

else if (redItem.isSelected())

plan1=65;

else if (blueItem.isSelected())

plan1=99; }

if (blackItem1.isSelected()){

package1=29.95;

else if (redItem1.isSelected())

package1=49.95;

else if (blueItem1.isSelected())

package1=99.95;}

if (voiceItem.isSelected())

message =5;

if(textItem.isSelected())

text=10;

addOn=message + text;

total= package1+(6/package1)*100+ plan1+ addOn;

}

}

/**

* The main method creates an instance of the MenuWindow

* class, which causes it to display its window.

*/

public static void main(String[] args)

{

new MenuWindow();

}

}