Transaction Processor
Transaction Processor
java
// Transaction processing program using RandomAccessFiles.
// This program reads a random-access file sequentially,
// updates record already written to the file, creates new
// record to be placed in the file and deletes data
// already in the file.
import java. awt .*;
import java. awt. event .*;
import java.io .*:
import java. text. DecimalFormat;
import javax. swing. ";
public class TransactionProcessor extends JFrame {
private JDesktopPane desktop;
private JButton open, updateRecord, newRecord, deleteRecord;
private JInternalFrame mainDialog;
private UpdateDialog updateDialog;
private NewDialog newDialog;
private DeleteDialog deleteDialog;
private RandomAccessFile file;
private Record record;
public TransactionProcessor () {
super( "Transaction Processor" );
desktop = new JDesktopPane();
mainDialog = new JInternalFrame();
updateRecord = new JButton( "Update Record" );
updateRecord. setEnabled( false );
updateRecord. addActionListener (
new ActionListener () {
public void actionPerformed( ActionEvent e ) {
mainDialog. setVisible( false );
updateDialog. setVisible( true );
deleteRecord = new JButton( "Delete Record" );
deleteRecord. setEnabled( false );
deleteRecord. addActionListener (
new ActionListener () {
public void actionPerformed( ActionEvent e ) {
mainDialog. setVisible( false );
deleteDialog. setVisible( true ); } } );
newRecord = new JButton( "New Record" );
newRecord. setEnabled( false );
newRecord. addActionListener (
new ActionListener () {
public void actionPerformed( ActionEvent e ) {
mainDialog.setVisible( false );
newDialog. setVisible( true
} );
open = new JButton( "New/Open File" 5:
open. addActionListener(
new ActionListener () {
public void actionPerformed( ActionEvent e ) {
open. setEnabled( false );
openFile();
ActionListener 1 = new ActionListener () {
public void actionPerformed( ActionEvent e ) {
mainDialog. setVisible( true );
updateDialog = new UpdateDialog( file, 1 );
desktop. add( updateDialog );
updateRecord. setEnabled( true );
deleteDialog = new DeleteDialog( file, 1 );
desktop. add ( deleteDialog );
deleteRecord. setEnabled( true );
newDialog = new NewDialog( file, 1 );
desktop.add( newDialog );
newRecord. setEnabled( true ); } }
):
Container c = mainDialog. getContentPane();
c. setLayout( new GridLayout( 2, 2 ) );
c. add ( updateRecord );
c. add( newRecord );
c. add( deleteRecord );
c.add( open );
setSize( 400, 250 );
mainDialog.setSize( 300, 80 );
desktop. add( mainDialog, BorderLayout.CENTER );
getContentPane().add( desktop );
addwindowListener (
new WindowAdapter () {
public void windowClosing( WindowEvent e ) {
if ( file != null )
closeFile();
System. exit( 0 ); }
} );
show ();
JTextField transaction =
userInterface.getFields()[ BankUI. TRANSACTION ];
transaction. addActionListener (
new ActionListener () {
public void actionPerformed( ActionEvent e ) {
try {
Record record = getRecord();
double change = Double. parseDouble(
userInterface. getFieldValues ()
[ BankUI. TRANSACTION ] );
String[] values = {
String. valueof ( record. getAccount () ),
record. getFirstName (),
record. getLastName (),
String. valueof( record. getBalance()
+ change ),
"Charge(+) or payment (-)" };
userInterface.setFieldValues ( values );
}
catch ( NumberFormatException_nfe ) {
JOptionPane. showMessageDialog( new JFrame(),
"Invalid Transaction",
"Invalid Number Format"
JOptionPane. ERROR_MESSAGE ); } } } );
account = userInterface.getFields ()[ BankUI.ACCOUNT ];
account. addActionListener (
new ActionListener () {
public void actionPerformed( ActionEvent e ) {
Record record = getRecord() ;
if ( record. getAccount () != 0 ) {
String values [] = {
String. valueOf ( record. getAccount () ),
record. getFirstName (),
record. getLastName () ,
String. valueof( record. getBalance() ),
"Charge(+) or payment (-)" };
userInterface.setFieldValues( values );