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

📄 restaurant.java

📁 用java编写的c/s结构的网络社区
💻 JAVA
字号:
package client;

import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.*;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.sql.*;
import javax.swing.*;


public class Restaurant extends JPanel implements ActionListener,KeyListener
{

	DataOutputStream dos;
	DataInputStream dis;
	JTable table1,table2;
	JButton btOK,btDelete,btCheck;
	JLabel jlbName,jlbPrice,jlbNum,jlbTotal,jlbBalance,jlbDName;
	JTextField jtfName,jtfPrice,jtfNum;
	JComboBox jcbDName;
	Restaurantdb db=new Restaurantdb("restaurant","user","user");
	member strMeg;
	Object a[][];
	Object b[][];
	Object columnName1[]={"菜名","价格","类别"};
	Object columnName2[]={"菜名","份数","价格"};
	int num1=0;
	int num2=0;
	int iClick=0;
	float fTotal=0;
	float fBalance;
	ClientMessage_member message=new ClientMessage_member();
	Restaurant(DataOutputStream dos,DataInputStream dis,member strMeg)
	{
		this.dis=dis;
		this.dos=dos;
		this.strMeg=strMeg;
		a=new Object[162][3];
		b=new Object[20][3];
		table1=new JTable(a,columnName1);
		table2=new JTable(b,columnName2);
		this.setSize(600, 600);
		GridLayout gl=new GridLayout(5,1);
		setLayout(gl);
		JScrollPane jsp1=new JScrollPane(table1);
		add(jsp1);
		try {
			getAll();
		} catch (SQLException e) {
			// TODO 自动生成 catch 块
			e.printStackTrace();
		}
		table1.addMouseListener(new MouseAdapter()
		{
			public void mousePressed(MouseEvent e)
			{
				 if   (e.getClickCount()>= 2)   { 
	                    int   row   =   table1.rowAtPoint(e.getPoint());   
	                    int   column   =   table1.columnAtPoint(e.getPoint());  
	                    jtfName.setText(table1.getValueAt(row,0).toString());
				 }
				 repaint();
			}
		});
		jlbName=new JLabel("菜名");
		jlbNum=new JLabel("份数");
		jlbTotal=new JLabel("");
		jlbBalance=new JLabel("");
		jtfName=new JTextField(10);
		jtfPrice=new JTextField(10);
		jtfNum=new JTextField(10);
		jtfNum.addKeyListener(this);
		btOK=new JButton("确定");
		btOK.addActionListener(this);
		JPanel p1=new JPanel();
		p1.add(jlbName);
		p1.add(jtfName);
		p1.add(jlbNum);
		p1.add(jtfNum);
		p1.add(btOK);
		JPanel p4=new JPanel();
		p4.add(jlbTotal);
		p4.add(jlbBalance);
		JPanel p3=new JPanel(new GridLayout(2,1));
		p3.add(p1);
		p3.add(p4);
		p3.setBorder(BorderFactory.createTitledBorder("选菜区:"));
		add(p3);
		JScrollPane jsp2=new JScrollPane(table2);
		add(jsp2);
		JPanel p5=new JPanel();
		jlbDName=new JLabel("菜名 ");
		jcbDName=new JComboBox();
		jcbDName.addItem("请选择菜名.....");
		btDelete=new JButton("删除");
		btDelete.addActionListener(this);
		p5.add(jlbDName);
		p5.add(jcbDName);
		p5.add(btDelete);
		p5.setBorder(BorderFactory.createTitledBorder("删菜区:"));
		add(p5);
		JPanel p6=new JPanel();
		btCheck=new JButton("结帐");
		btCheck.addActionListener(this);
		p6.add(btCheck);
		add(p6);
		validate();
	    setVisible(true);
	}
	void getAll() throws SQLException
	{
		db.QueryData("menu1");
		while(db.next())
		{
			String name=db.getString("素菜名");
			float price=db.getFloat("价格");
		    a[num1][0]=name;
			a[num1][1]=price;
			a[num1][2]="素菜";
			num1++;
		}
		db.QueryData("menu2");
		while(db.next())
		{
			String name=db.getString("荤菜名");
			float price=db.getFloat("价格");
		    a[num1][0]=name;
			a[num1][1]=price;
			a[num1][2]="荤菜";
			num1++;
		}
	}
	int getPrice(String strName)
	{
		for(int i=0;i<num1;i++)
		{
			if(strName.equals(a[i][0]))
			{
				return i;
			}
		}
		return -1;
	}
	int getRow(String strName)
	{
		for(int i=0;i<num2;i++)
		{
			if(strName.equals(b[i][0]))
			{
				return i;
			}
		}
		return -1;
	}
	void removeSelete(int index)
	{
		for(int i=index;i<num2;i++)
		{
			b[i][0]=b[i+1][0];
			b[i][1]=b[i+1][1];
			b[i][2]=b[i+1][2];
		}
	}
	void getBalance()
	{
		try {
			message.UpdateInfo(dos, dis,strMeg.getID(),strMeg.getPW(),null,null, 0,0,4);
			if(dis.readBoolean())
			{
				//System.out.println(dis.readFloat());
				strMeg.setBalance(dis.readFloat());
			}
		  }catch (IOException e1) {
			e1.printStackTrace();
		 }
	}
	public void actionPerformed(ActionEvent e) {
		if(e.getSource()==btOK)
		{
			iClick++;
			if(iClick==1)
			{
				getBalance();
				fBalance=strMeg.getBalance();
			}
			String name=jtfName.getText().trim();
			int k=getPrice(jtfName.getText().trim());
			if(k==-1)
			{
				JOptionPane.showMessageDialog(null," 本店无此菜","提示",JOptionPane.INFORMATION_MESSAGE);
			}
			else
			{
				float fPrice=Float.valueOf(a[k][1].toString());
				int num=Integer.valueOf(jtfNum.getText().trim());
				fTotal+=num*fPrice;
				fBalance-=num*fPrice;
				b[num2][0]=name;
				b[num2][1]=num;
				b[num2][2]=num*fPrice;
				num2++;
				if(fBalance<0)
				{
					jlbBalance.setForeground(Color.red);
				}
				jlbTotal.setText("总价:"+fTotal);
				jlbBalance.setText("您的帐户余额:"+fBalance);
				jtfName.setText("");
				jtfNum.setText("");
				jcbDName.addItem(name);
				repaint();
			}
			
		}
		if(e.getSource()==btDelete)
		{
			String strName=jcbDName.getSelectedItem().toString().trim();
			int index;
			index=getRow(strName);
			System.out.println(index);
			System.out.println(num2);
			fTotal-=Float.valueOf(b[index][2].toString());
			fBalance+=Float.valueOf(b[index][2].toString());
			jlbTotal.setText("总价:"+fTotal);
			if(fBalance>=0)
			{
				jlbBalance.setForeground(Color.BLACK);
			}
			jlbBalance.setText("您的帐户余额:"+fBalance);
			removeSelete(index);
			num2--;
			jcbDName.removeItem(strName);
			repaint();
		}
		if(e.getSource()==btCheck)
		{
			byte [] data=new byte[1024];
			if(fBalance<0)
			{
				JOptionPane.showMessageDialog(null," 余额不足,无法结帐","提示",JOptionPane.INFORMATION_MESSAGE);
			}
			else
			{
				try {
					dos.writeInt(8);
					dis.read(data);
					message.UpdateSingleInfo(dos,null,0,fBalance,3);
					} catch (IOException e1) 
					{
								// TODO 自动生成 catch 块
								e1.printStackTrace();
					}
			}
			while(num2>=0)
			{
				b[num2][0]=" ";
				b[num2][1]=" ";
				b[num2][2]=" ";
				num2--;
			}
			num2=0;
			iClick=0;
			repaint();
		}
		
	}
	public void keyPressed(KeyEvent e) {
		if((e.getKeyCode()<KeyEvent.VK_0||e.getKeyCode()>KeyEvent.VK_9)&&(e.getKeyCode()!=KeyEvent.VK_PERIOD)&&(e.getKeyCode()!=KeyEvent.VK_BACK_SPACE))
		{
			JOptionPane.showMessageDialog(null,"请输入数字","警告",JOptionPane.WARNING_MESSAGE);
		}
		
	}
	public void keyReleased(KeyEvent arg0) {
		// TODO 自动生成方法存根
		
	}
	public void keyTyped(KeyEvent arg0) {
		// TODO 自动生成方法存根
		
	}
	
}

⌨️ 快捷键说明

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