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

📄 dukebakery.java

📁 java设计结构中著名的面包房程序例子。很容易使你的代码水平提高一块
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
//  The architecture of this program is inspired by the//  AddressBook.java example in "Java-How to Program-3rd Edition"//  by Deitel & Deitel, Prentice Hall 1999import java.sql.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.table.*;import java.util.*;import java.text.*;public class DukeBakery extends JFrame {   private DataPanel screenvar;   private JTextArea msgout;   private Connection dbconn;   public DukeBakery() {      super( "DUKE'S BAKERY" );	//  Set up GUI environment     	Container p = getContentPane();      screenvar = new DataPanel();      msgout = new JTextArea( 8, 40 );	p.setLayout( new FlowLayout() );      p.add( new JScrollPane( screenvar ) );      p.add( new JScrollPane(msgout) );	// Set up database connection	try {         String url = "jdbc:odbc:BakeryBook";         Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );//设定驱动程序库         dbconn = DriverManager.getConnection( url );//连接数据库         msgout.append( "Connection successful\n" );      }      catch (ClassNotFoundException cnfex) {         // process ClassNotFoundExceptions here         cnfex.printStackTrace();         msgout.append( "Connection unsuccessful\n" +                        cnfex.toString() );      }      catch ( SQLException sqlex ) {         // process SQLExceptions here         sqlex.printStackTrace();         msgout.append( "Connection unsuccessful\n" +                        sqlex.toString() );      }      catch ( Exception excp ) {         // process remaining Exceptions here         excp.printStackTrace();         msgout.append( excp.toString() );      }      // Complete GUI      ButtonPanel controls = new	   ButtonPanel( dbconn, screenvar, msgout);      p.add( controls );	RadioButtons rb = new RadioButtons( dbconn , screenvar,                     msgout );	p.add ( rb );	setSize( 500, 475 );	show();   }    public static void main( String args[] ) {       DukeBakery bake = new DukeBakery();       bake.addWindowListener(          new WindowAdapter() {             public void windowClosing( WindowEvent e ) {               System.exit( 0 );             }          }       );    }}class DukeOrder extends JFrame implements ActionListener {   private Connection dbconn;   private DataPanel screenvar;   private JTextArea msgout;   private boolean firsttime = true;   public DukeOrder( Connection dbc, DataPanel scv,                     JTextArea msg ) {	super( "DUKE'S BAKERY -- ORDER ENTRY" );	dbconn = dbc;	screenvar = scv;	msgout = msg;   }   public void actionPerformed( ActionEvent e) {	if (firsttime) { 	   Container cnt = getContentPane();	   cnt.setLayout( new FlowLayout() );	   OrderBox ob = new OrderBox();	   cnt.add( ob );	   JButton enterOrder = new JButton("Order");	   enterOrder.addActionListener( new PlaceOrder( dbconn,		screenvar, msgout, ob ) );	   cnt.add( enterOrder  );	   setSize( 400, 200 );	   firsttime = false;	}	show();   } }class PlaceOrder implements ActionListener {   private DataPanel screenvar;   private JTextArea msgout;   private Connection dbconn;   private OrderBox obox;   public PlaceOrder( Connection dbc, DataPanel scv,                     JTextArea msg, OrderBox ob  ) {      dbconn = dbc;      screenvar = scv;      msgout = msg;	obox = ob;   }   public void actionPerformed( ActionEvent e ) {	boolean inputerror = false;	int iwheat=0; int icake=0; int inaan=0; int ibagel=0;      try {         Statement statement = dbconn.createStatement();	   try {	      iwheat = Integer.parseInt(obox.inwheat.getText() );	   }	   catch( NumberFormatException nfe ) {		inputerror = true;		obox.inwheat.setText("Error--enter integer value");	   }	   try {	      icake = Integer.parseInt(obox.incake.getText() );	   }	   catch( NumberFormatException nfe ) {		inputerror = true;		obox.incake.setText("Error--enter integer value");	   }	   try {	      inaan = Integer.parseInt(obox.innaan.getText() );	   }	   catch( NumberFormatException nfe ) {		inputerror = true;		obox.innaan.setText("Error--enter integer value");	   }	   try {	      ibagel = Integer.parseInt(obox.inbagel.getText() );	   }	   catch( NumberFormatException nfe ) {		inputerror = true;		obox.inbagel.setText("Error -- enter integer value");	   }	   java.util.Date date = new java.util.Date();	   SimpleDateFormat fmt =		new SimpleDateFormat ("yyyy.MM.dd-HH:mm z");	   String dtstr = fmt.format(date);         if( !screenvar.id.getText().equals("") ) {		if ( !inputerror      &&		(iwheat !=  0         ||            icake   !=  0         ||		inaan   !=  0         ||		ibagel  !=  0)  ) {               String query = "INSERT INTO orders " +		      "(LinkAddrTbl,OrderDate,wheat,cake,naan,bagel)" +		      "VALUES ("+ screenvar.id.getText() + "," +		      "'" + dtstr            + "'," +		      String.valueOf(iwheat) + "," +		      String.valueOf(icake)  + "," +		      String.valueOf(inaan)  + "," +		      String.valueOf(ibagel) + ")";		msgout.append( "\nSending query: " +               dbconn.nativeSQL( query )               + "\n" );            int result = statement.executeUpdate( query );            if ( result == 1 )               msgout.append( "\nOrder Placed\n" );            else {               msgout.append( "\nInsertion failed\n" );               screenvar.first.setText( "" );               screenvar.last.setText( "" );            }          }         else            msgout.append( "\nEnter at least one numeric value " +               ", then press Order\n" );	   }	   else		msgout.append(		   "\n *** Find data before issuing order ***\n");            statement.close();      }      catch ( SQLException sqlex ) {       	msgout.append( sqlex.toString() );      }	// clear out order input boxes after database write	if (!inputerror) {		obox.inwheat.setText("");		obox.incake.setText("");		obox.innaan.setText("");		obox.inbagel.setText("");	}   }}class OrderHist extends JFrame implements ActionListener {   private Connection dbconn;   private DataPanel screenvar;   private JTextArea msgout;   private boolean firsttime = true;   private Container c;   private JScrollPane jspane;   private QueryTableModel qtbl;   private JTable jtbl;   public OrderHist( Connection dbc, DataPanel scv,                     JTextArea msg ) {	super( "DUKE'S BAKERY -- ORDER HISTORY" );	dbconn = dbc;	screenvar = scv;	msgout = msg;   }   public void actionPerformed( ActionEvent e) {      if ( !screenvar.id.getText().equals("") ) {	//  Set up GUI environment	if ( firsttime ) { 	   c = getContentPane();	   c.setLayout( new FlowLayout() );	   qtbl = new QueryTableModel( dbconn, screenvar, msgout );	   qtbl.query(); 	   jtbl = new JTable( qtbl );	   TableColumn tcol = jtbl.getColumnModel().getColumn(0);	   tcol.setPreferredWidth(125);	   jspane = new JScrollPane( jtbl );	   c.add( jspane );         setSize( 500, 500 );	   firsttime = false;	}	else {	   qtbl.query();         qtbl.fire();	   TableColumn tcol = jtbl.getColumnModel().getColumn(0);	   tcol.setPreferredWidth(125);      }	show();      }      else         msgout.append(         "\n ***Find data before generating Order History***\n");   }}class QueryTableModel extends AbstractTableModel {   Connection dbconn;   DataPanel screenvar;   JTextArea msgout;   Vector totalrows;   String[] colheads = {"Date & Time", "Wheat Loaf",         "Carrot Cake", "Naan Bread", "Bagel"};   public QueryTableModel(Connection dbc, DataPanel scv, JTextArea msg ){	dbconn = dbc;      screenvar = scv;      msgout = msg;      totalrows = new Vector();   }   public String getColumnName(int i) { return colheads[i]; }   public int getColumnCount() { return 5; }   public int getRowCount() { return totalrows.size(); }   public Object getValueAt(int row, int col) {      return ((String[])totalrows.elementAt(row))[col];   }   public boolean isCellEditable(int row, int col) {      return false;   }   public void fire() {      fireTableChanged(null);   }   public void query() {      try {         Statement statement = dbconn.createStatement();         String query = "SELECT * FROM Orders " +	      "WHERE LinkAddrTbl =" +	      screenvar.id.getText() +		" ORDER BY OrderDate";            msgout.append( "\nSending query: " +               dbconn.nativeSQL( query ) + "\n" );            ResultSet rs = statement.executeQuery( query );		totalrows = new Vector();            while ( rs.next() ) {               String[] record = new String[5];               for( int i = 0; i < 5; i++ ) {                  record[i] = rs.getString( i + 3 );               }               totalrows.addElement( record );            }            msgout.append( "\nQuery successful\n" );            statement.close();         }         catch ( SQLException sqlex ) {            msgout.append( sqlex.toString() );         }   }}class TotalHist extends JFrame implements ActionListener {   private Connection dbconn;   private DataPanel screenvar;   private JScrollPane orderpane;   private JTextArea msgout;   private JTextField outwheat, outcake, outnaan, outbagel;   private boolean firsttime = true;   public TotalHist( Connection dbc, DataPanel scv,                     JTextArea msg ) {	super( "DUKE'S BAKERY -- TOTAL ORDERS" );	dbconn = dbc;	screenvar = scv;	msgout = msg;   }   public void actionPerformed( ActionEvent e) {      //  Set up GUI environment	if ( firsttime ) { 	   Container c = getContentPane();	   c.setLayout(new GridLayout(4,2) );	   JLabel pwheat = new JLabel(		"Total number of Wheat Loaves ordered:" );	   c.add( pwheat );         outwheat = new JTextField( 10 );	   c.add( outwheat );	   pwheat.setLabelFor( outwheat );	   JLabel pcake  = new JLabel(		"Total number of Carrot Cakes ordered:");	   c.add( pcake);	   outcake = new JTextField( 10 );	   c.add( outcake );	   pcake.setLabelFor( outcake );	   JLabel pnaan  = new JLabel(		"Total number of Naan Bread ordered:" );	   c.add( pnaan );	   outnaan = new JTextField( 10 );	   c.add( outnaan );	   pnaan.setLabelFor( outnaan );	   JLabel pbagel = new JLabel(		"Total number of Bagels ordered:" );	   c.add( pbagel );	   outbagel = new JTextField( 10 );	   c.add( outbagel );	   pbagel.setLabelFor( outbagel );	   setSize( 550, 130 );	   firsttime = false;	}      show();      try {         Statement statement = dbconn.createStatement();         String query = "SELECT * FROM Orders";         msgout.append( "\nSending query: " +            dbconn.nativeSQL( query ) + "\n" );         ResultSet rs = statement.executeQuery( query );         display( rs );         msgout.append( "\nQuery successful\n" );         statement.close();      }      catch ( SQLException sqlex ) {         sqlex.printStackTrace();      }   }   // Display results of query   public void display( ResultSet rs ) {      int accwheat=0; int acccake=0; int accnaan=0; int accbagel=0;	try { 	   while (  rs.next() ) {		// compute totals date,wheat,carrot,naan,bagel from database		accwheat += rs.getInt(4);		acccake  += rs.getInt(5);		accnaan  += rs.getInt(6);		accbagel += rs.getInt(7);	   }      }      catch ( SQLException sqlex ) {         msgout.append( sqlex.toString() );      }	outwheat.setText(String.valueOf(accwheat));	outcake.setText(String.valueOf(acccake));	outnaan.setText(String.valueOf(accnaan));	outbagel.setText(String.valueOf(accbagel));   }}class OrderBox extends JPanel {   JTextField inwheat, incake, innaan, inbagel;   public OrderBox() {

⌨️ 快捷键说明

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