📄 restaurant.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 + -