

import java.sql.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
import java.util.*;
import java.text.*;

public class CreditCard extends JFrame {

   private JTextField txtName, txtType, txtExpired, txtNumber, txtCredit,
	              txtPhone, txtAddress, txtCity, txtState, txtZip;

   private JButton btnSave, btnSearch, btnClear;

   private DataEntryPanel fieldpanel;

   private Connection dbconn;

   private MSaccessconn msconn;

   public CreditCard() {
      super( "MS Access Credit Card Manager" );
	//  Set up GUI environment
     	Container p = getContentPane();
      fieldpanel = new DataEntryPanel();

	  p.setLayout( new FlowLayout() );
      p.add( new JScrollPane( fieldpanel ) );

	  msconn= new MSaccessconn();

	  dbconn=msconn.getConnection();


	setSize( 500, 300 );
	show();
   }


class DataEntryPanel extends JPanel implements ActionListener {



   JLabel lblName, lblType, lblExpired,lblNumber, lblCredit,
          lblPhone, lblAddress, lblCity, lblState, lblZip;


   public DataEntryPanel() {
	// Label panel
      JPanel labelPanel = new JPanel();
      labelPanel.setLayout(
         new GridLayout( 10, 1 ) );
	lblName = new JLabel( "Name:", 0 );
	labelPanel.add( lblName);
 	lblType = new JLabel( "Type:", 0 );
	labelPanel.add( lblType);
 	lblExpired = new JLabel( "Expired:", 0 );
	labelPanel.add( lblExpired);
 	lblNumber = new JLabel( "Card Number: (Search)", 0 );
	labelPanel.add( lblNumber);
 	lblCredit = new JLabel( "Credit:", 0 );
	labelPanel.add( lblCredit);
	lblPhone = new JLabel( "Phone:", 0 );
	labelPanel.add( lblPhone);
	lblAddress = new JLabel( "Address:", 0 );
	labelPanel.add(lblAddress);
	lblCity = new JLabel( "City:", 0 );
	labelPanel.add( lblCity);
 	lblState = new JLabel( "State:", 0 );
	labelPanel.add( lblState);
 	lblZip = new JLabel( "Zip Code:", 0 );
	labelPanel.add( lblZip);



      // TextField panel
      JPanel fieldPanel = new JPanel();
      fieldPanel.setLayout(
         new GridLayout( 10, 1 ) );

      txtName = new JTextField( 20) ;
	  fieldPanel.add( txtName );
	  txtType = new JTextField( 20 );
      fieldPanel.add( txtType );
      txtExpired = new JTextField( 20 );
      fieldPanel.add( txtExpired );
 	  txtNumber = new JTextField(20);
	  fieldPanel.add( txtNumber );
	  txtCredit = new JTextField( 20 );
      fieldPanel.add( txtCredit );
	  txtPhone = new JTextField( 20 );
      fieldPanel.add( txtPhone );
	  txtAddress = new JTextField( 20 );
      fieldPanel.add( txtAddress );
      txtCity = new JTextField( 20 );
      fieldPanel.add( txtCity );
      txtState = new JTextField( 20 );
      fieldPanel.add( txtState  );
      txtZip = new JTextField( 20 );
      fieldPanel.add( txtZip );

	  java.util.Date date = new java.util.Date();

	  SimpleDateFormat dateformat = new SimpleDateFormat ("MM/dd/yyyy");

	  String expired = dateformat.format(date);

	  txtExpired.setText(expired);

	  lblName.setLabelFor( txtName );
	  lblType.setLabelFor( txtType );
	  lblExpired.setLabelFor( txtExpired );
	  lblNumber.setLabelFor( txtNumber );
	  lblCredit.setLabelFor( txtCredit );
	  lblPhone.setLabelFor( txtPhone );
	  lblAddress.setLabelFor( txtAddress );
	  lblCity.setLabelFor( txtCity );
	  lblState.setLabelFor( txtState );
	  lblZip.setLabelFor( txtZip );

	  JPanel btnPanel= new JPanel();
	  btnPanel.setLayout(new FlowLayout());
	  JPanel entryPanel = new JPanel();
	  entryPanel.setLayout(new GridLayout(1,2));
	  entryPanel.add( labelPanel );
      entryPanel.add( fieldPanel );

	  btnSave = new JButton("Save");
	  btnSave.addActionListener( this );
	  btnClear = new JButton("Clear");
	  btnClear.addActionListener( this );
	  btnSearch = new JButton("Search");
	  btnSearch.addActionListener( this );
      btnPanel.add(btnSave );
      btnPanel.add(btnClear );
      btnPanel.add(btnSearch );
      setLayout( new BorderLayout());
      add("Center", entryPanel);
      add("South", btnPanel);



   }

   public void actionPerformed( ActionEvent e)
   {

   			if(e.getSource() == btnSave)
   			saveRecord();

   			else if(e.getSource()==btnClear)

   			clearEntryPanel();

   			else if(e.getSource()==btnSearch)

   			searchRecord();
	}

}

public void saveRecord()
{

	 java.util.Date date = new java.util.Date();

	 SimpleDateFormat dateformat = new SimpleDateFormat ("yyyy.MM.dd-HH:mm z");

	 String expired = dateformat.format(date);


	String sql="insert into credit_cards(cardid,name,type,expired,card_num,credit,phone,address,city,state,zip)" +
				" values (0,'" + txtName.getText() + "','" + txtType.getText() + "','" + expired + "','" +
				txtNumber.getText() + "','" + txtCredit.getText() + "','" + txtPhone.getText() + "','" + txtAddress.getText() + "','" +
				txtCity.getText() + "','" + txtState.getText() + "','" + txtZip.getText() + "')";

	 try {

         Statement stmt = dbconn.createStatement();

		 int result = stmt.executeUpdate( sql );

		 	if ( result == 1 )
			{
			 System.out.println( "Record inserted." );
			 clearEntryPanel();
	 		}



		 stmt.close();
		 }
		         catch ( SQLException sqlex )
		         {
		            System.out.println( sqlex.toString() );
         		 }
}


public void clearEntryPanel()
{

	txtName.setText("");
	txtType.setText("");
	txtExpired.setText("");
	txtCredit.setText("");
	txtNumber.setText("");
	txtPhone.setText("");
	txtCity.setText("");
	txtState.setText("");
	txtZip.setText("");
	txtAddress.setText("");

}

public void searchRecord()
{
	if(txtNumber.getText() !="")
	{

	String sql="select * from credit_cards where card_num='" + txtNumber.getText() + "'";

	try {

	     Statement stmt = dbconn.createStatement();

		 ResultSet rs = stmt.executeQuery( sql );



				while (  rs.next() )
				{


				txtName.setText(rs.getString(2));
				txtType.setText(rs.getString(3));
				txtExpired.setText(rs.getString(4));
				txtNumber.setText(rs.getString(5));
				txtCredit.setText(rs.getString(6));
				txtPhone.setText(rs.getString(7));
				txtAddress.setText(rs.getString(8));
				txtCity.setText(rs.getString(9));
				txtState.setText(rs.getString(10));
				txtZip.setText(rs.getString(11));

				}

			 stmt.close();
		 }
		 catch ( SQLException sqlex )
		 {
		 System.out.println( sqlex.toString() );
         }


	}
}

 public static void main( String args[] ) {
       CreditCard credit = new CreditCard();

       credit.addWindowListener(
          new WindowAdapter() {
             public void windowClosing( WindowEvent e ) {
               System.exit( 0 );
             }
          }
       );
    }
}