⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 objtab.java

📁 java数据库编程。JDBC+SQL+GUI。用java写的一个影碟租赁系统
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
//Vedio rental System Developed by Banu
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.JTextField;

import java.awt.Dimension;


import java.awt.GridLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.util.Calendar;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.sql.SQLException;

public class objTab extends JPanel implements ActionListener
{
	
	private String strTable = "",mode;
	private JButton cmdSave,cmdSearch;
	private JLabel lblTitle, lblYear, lblFN,lblLN,lblAdd,lblPh, lblGnre, lblProducer,lblCID, lblVID, lblDue,lblHint,lblRID,lblStatus;
	private JPanel panTitle, panYear, panStatus, panSearch, panFN,panLN,panAdd,panPh,panGnre,panProducer, panCID,panVID, panDue ;
	private JTextField txtTitle, txtYear, txtFN,txtLN, txtAdd,txtPh,txtGnre, txtProducer,txtCID,txtVID,txtRID,txtDue;
	private JTable selectedTable;
	private Connection databaseConnection;
	
	public objTab (String strTable,Connection databaseConnection, String mode)
	{
		
		this.strTable = strTable;
		this.mode =mode;

		this.databaseConnection = databaseConnection;
		if (mode.equalsIgnoreCase("View") || mode.equalsIgnoreCase("Report") )
			try{
				drawTable();
					
			}
		catch(SQLException ex)
		{
			System.out.println("reached catch block of objTab ");
			JOptionPane.showMessageDialog(null, ex.getMessage(), "Database Access Error", JOptionPane.ERROR_MESSAGE);
			
		}
		else if (mode.equalsIgnoreCase("Edit"))
		{
			cmdSave = new JButton("Update");
			lblStatus = new JLabel("Find the record first for edit", JLabel.CENTER);
			editMode();
			
		}
		else if (mode.equalsIgnoreCase("New"))
		{
			newMode();
		}
		else if (mode.equalsIgnoreCase("Delete"))
		{
			cmdSave = new JButton("Delete");
			lblStatus = new JLabel("Find the record first for Delete", JLabel.CENTER);
			editMode();
		}
			
		
	}
	public void editMode()
	{
		cmdSearch = new JButton("Search");
		cmdSearch.addActionListener(this);
		cmdSave.addActionListener(this);
		//before drawing the input mode find the avialability of the record in the table.
		if (strTable.equalsIgnoreCase("Customer"))
			{
				findCustomer();
				
			}
		else if (strTable.equalsIgnoreCase("Vedio"))
			{
				findVedio();
			}
		else if (strTable.equalsIgnoreCase("Rental"))
			{
			findRent();
			}
	}

	public void newMode()
	{
		cmdSave = new JButton("Save");
		lblStatus = new JLabel("Enter data and click Save", JLabel.CENTER);
		cmdSave.addActionListener(this);
		if (strTable.equalsIgnoreCase("Customer"))
			inputCustomer();
		else if (strTable.equalsIgnoreCase("Vedio"))
			inputVedio();
		else if (strTable.equalsIgnoreCase("Rental"))
		{
			inputRental();
			System.out.println("input labels sucess");}
			
	}
	
	
	public void inputCustomer()
	{
		//cmdSave = new JButton("Save");
		//cmdSave.addActionListener(this);
		
		lblFN = new JLabel("First Name ", JLabel.RIGHT);
		lblLN = new JLabel("Last Name ", JLabel.RIGHT);
		lblAdd = new JLabel("Address ", JLabel.RIGHT);
		lblPh = new JLabel("Phone No ", JLabel.RIGHT);

		txtFN = new JTextField("", 15);
		txtLN = new JTextField("", 15);
		txtAdd = new JTextField("", 35);
		txtPh = new JTextField("", 15);
		
		panFN = new JPanel();
		panLN = new JPanel();
		panAdd = new JPanel();
		panPh = new JPanel();
		panStatus = new JPanel();
		
		this.setLayout(new GridLayout(5, 1));
		this.add(panFN);
			panFN.add(lblFN);
			panFN.add(txtFN);
		this.add(panLN);
			panLN.add(lblLN);
			panLN.add(txtLN);
		this.add(panAdd);
			panAdd.add(lblAdd);
			panAdd.add(txtAdd);
		this.add(panPh);
			panPh.add(lblPh);
			panPh.add(txtPh);
		this.add(panStatus);
			panStatus.add(cmdSave);
			panStatus.add(lblStatus);
		
	}
	
	public void inputVedio()
	{
	
		lblTitle = new JLabel("Title ", JLabel.RIGHT);
		lblYear = new JLabel("Year ", JLabel.RIGHT);
		lblGnre = new JLabel("Genre ", JLabel.RIGHT);
		lblProducer = new JLabel("Producer ", JLabel.RIGHT);
		
		txtTitle = new JTextField("", 25);
		txtYear = new JTextField("", 15);
		txtGnre = new JTextField("", 15);
		txtProducer = new JTextField("", 20);
		
		panTitle = new JPanel();
		panYear = new JPanel();
		panGnre = new JPanel();
		panProducer = new JPanel();
		panStatus = new JPanel();
		
		this.setLayout(new GridLayout(5, 1));
		this.add(panTitle);
			panTitle.add(lblTitle);
			panTitle.add(txtTitle);
		this.add(panYear);
			panYear.add(lblYear);
			panYear.add(txtYear);
		this.add(panGnre);
			panGnre.add(lblGnre);
			panGnre.add(txtGnre);
		this.add(panProducer);
			panProducer.add(lblProducer);
			panProducer.add(txtProducer);
		this.add(panStatus);
			panStatus.add(cmdSave);
			panStatus.add(lblStatus);
		
	}

	
	public void inputRental()
	{
		lblCID = new JLabel("Customer ID ", JLabel.RIGHT);
		lblVID = new JLabel("Vedio ID ", JLabel.RIGHT);
		lblDue = new JLabel("Due Date (DD-MM-YYYY) ", JLabel.RIGHT);
		lblAdd = new JLabel("By default 2 days after is Set", JLabel.RIGHT);
		txtCID = new JTextField("", 10);
		txtVID = new JTextField("", 10);
		txtDue = new JTextField("", 12);
		
		panCID = new JPanel();
		panVID = new JPanel();
		panDue = new JPanel();
		panStatus = new JPanel();
		Calendar calNow = Calendar.getInstance();
		Calendar calDue = Calendar.getInstance();
		calDue.add(Calendar.DATE,3);
		if ( calDue.get(Calendar.DATE)< calNow.get(Calendar.DATE))
			calDue.add(Calendar.MONTH,1);
		if ( calDue.get(Calendar.MONTH)< calNow.get(Calendar.MONTH))
			calDue.add(Calendar.YEAR,1);
		String date;
		date = Integer.toString(calDue.get(Calendar.DATE));
		date +="-";
		date +=Integer.toString(calDue.get(Calendar.MONTH));
		date +="-";
		date +=Integer.toString(calDue.get(Calendar.YEAR));
		
		txtDue.setText(date);
		this.setLayout(new GridLayout(4, 1));
		System.out.println("Passed layout");
		this.add(panCID);
			panCID.add(lblCID);
			panCID.add(txtCID);
		this.add(panVID);
			panVID.add(lblVID);
			panVID.add(txtVID);
		this.add(panDue);
			panDue.add(lblDue);
			panDue.add(txtDue);
			panDue.add(lblAdd);
			System.out.println("Passed PanDue");
		this.add(panStatus);
			panStatus.add(cmdSave);
			panStatus.add(lblStatus);
		System.out.println("In the input rent method finished");
		
	}

	public void findCustomer()
	{
		lblCID = new JLabel("Customer ID ", JLabel.RIGHT);
		txtCID = new JTextField("", 10);
		lblHint = new JLabel ("search record with the respective ID for editing.", JLabel.RIGHT);
		panSearch = new JPanel();
		this.setLayout(new GridLayout(6, 1));
		this.add(panSearch);
			panSearch.add(lblCID);
			panSearch.add(txtCID);
			panSearch.add(cmdSearch);
			panSearch.add(lblHint);
	}
	
	public void findVedio()
	{
		lblVID = new JLabel("Vedio ID ", JLabel.RIGHT);
		txtVID = new JTextField("", 10);
		lblHint = new JLabel ("search record with the respective ID for editing.", JLabel.RIGHT);
		panSearch = new JPanel();
		this.setLayout(new GridLayout(6, 1));
		this.add(panSearch);
			panSearch.add(lblVID);
			panSearch.add(txtVID);
			panSearch.add(cmdSearch);
			panSearch.add(lblHint);
	}

	public void findRent()
	{
		lblRID = new JLabel("Rent No ", JLabel.RIGHT);
		txtRID = new JTextField("", 10);
		lblHint = new JLabel ("search record with the respective ID for editing.", JLabel.RIGHT);
		panSearch = new JPanel();
		this.setLayout(new GridLayout(5, 1));
		this.add(panSearch);
			panSearch.add(lblRID);
			panSearch.add(txtRID);
			panSearch.add(cmdSearch);
			panSearch.add(lblHint);
	}
	
	
	public void drawTable() throws SQLException
    {
 	    
		    Statement s = databaseConnection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);


		    ResultSetMetaData rsmd = null;
		    ResultSet result;
		    String[] col;
		    String[][] rows;
		    Calendar calNow = Calendar.getInstance(); 
			String date;
			date = Integer.toString(calNow.get(Calendar.DATE));
			date +="-";
			date +=Integer.toString(calNow.get(Calendar.MONTH));
			date +="-";
			date +=Integer.toString(calNow.get(Calendar.YEAR));

		    if (mode.equalsIgnoreCase("Report"))
		    {
		    	System.out.println("Reached selection for overdues");
		    	s.execute("Select * from Rental where DueDate > " + date );
		    	System.out.println("Finished selection for overdues");
		    }
		    else
		    	s.execute("select * from " + strTable);
		    
		    result = s.getResultSet();
		    System.out.println("Query executed");
		    rsmd= result.getMetaData();
		    
		    col = new String [rsmd.getColumnCount()];
		    rows= new String [25][rsmd.getColumnCount()];
		    
		    for (int i = 0; i<rsmd.getColumnCount(); i++)
		    {
		    	col[i]=rsmd.getColumnLabel(i+1);
		    }

	    	boolean exist = result.next();
	    	if (!exist)
				throw new SQLException("No records found in " + strTable);
			else
			{	
	    	result.first();
	    	int r=0;
	    	
	    	
	    	do{
	    		for (int c =0; c < rsmd.getColumnCount(); c++)
	    		{
	    			rows[r][c] = result.getString(c+1);
	    		}
	    		r++;

	    	}while (result.next());
	    	
	    	selectedTable = new JTable(rows, col);
	    	selectedTable.setPreferredScrollableViewportSize(new Dimension(500, 70));
	    	this.add(selectedTable.getTableHeader());
	    	this.setLayout(new GridLayout(2,1));
    		this.add(selectedTable);
	    	

 	    	}
    	
    }
	
	
	private int getYear () throws NumberFormatException
	{
		
		int year = 0;
		
		try
		{
			year = Integer.parseInt(txtYear.getText());
		}
		catch (NumberFormatException ex)
		{
			throw new NumberFormatException("The entered year is not a legal numeric value");
		}
		
		Calendar calNow = Calendar.getInstance();
		int currentYear = calNow.get(Calendar.YEAR);
		
		if (year < 1900 || year > currentYear)
		{
			throw new NumberFormatException("The year must be between 1900 and " + currentYear);
		}
		
		return year;
		
	}
	
	private void saveRecord () throws SQLException
	{
		
		Statement s = databaseConnection.createStatement();
		System.out.println("Save record mode " + mode);
		if (mode.equalsIgnoreCase("Edit")){
			// code for update the requested table
		}
		else if (mode.equalsIgnoreCase("New"))// code that insert new reord into requested table
		{
			String insert;
			System.out.println("Entered to new record insert block");
			try
			{
			if (strTable.equalsIgnoreCase("Customer"))
			{
				if(validCustomer())
				{
					insert = "insert into " + strTable
					+ " (FirstName,LastName,Address,PhNo)"
					+ " values ('" 
					+ txtFN.getText() 
					+ "', '" 
					+ txtLN.getText() 
					+ "', '" 
					+ txtAdd.getText() 
					+ "', '" 
					+ txtPh.getText() 
					+ "')";
					 //test point, can be removed
					 System.out.println(insert);
					 s.execute(insert);
					 txtFN.setText(""); txtLN.setText(""); txtAdd.setText("");
					 txtPh.setText(""); txtFN.requestFocus();
					 lblStatus.setText("Customer saved successfully");

				}
				
			}
			else if (strTable.equalsIgnoreCase("Vedio"))
			{
				// code to insert vedio record
				if(validVideo())
				{
					insert = "insert into " + strTable
					+ " (Title,Year,Genre,Producer)"
					+ " values ('" 
					+ txtTitle.getText() 
					+ "', '" 
					+ txtYear.getText() 
					+ "', '" 
					+ txtGnre.getText() 
					+ "', '" 
					+ txtProducer.getText() 
					+ "')";
					 System.out.println(insert);
					 s.execute(insert);
					 txtTitle.setText(""); txtYear.setText("");
					 txtGnre.setText(""); txtProducer.setText("");
					 lblStatus.setText("Video saved successfully");
				}
			}
			else if (strTable.equalsIgnoreCase("Rental"))
			{
				// code to insert Rental record
				if (validRent())
				{
					insert = "insert into " + strTable
					+ " (CID,VID,DueDate)"

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -