首页 > 编程 > Java > 正文

Java编写网上超市购物结算功能程序

2019-11-26 14:13:55
字体:
来源:转载
供稿:网友

使用Java语言编写一个模拟网上超市购物结算功能的程序,要求程序运行后有一个图形用户界面,可供用户输入购买的各种商品相关信息,最后给出用户的购物清单及总价格。
需求分析:
1.管理员添加商品以及其价格
2.用户购买商品打印订单信息以及结算订单
代码:

/*  * 创建者:张俊强  * 时间:2016/5/15  * */ package SaleSys;  import java.awt.*; import java.awt.event.*; import java.util.Vector;  import javax.swing.*;  import java.sql.*;  class Goods{  public String[] name;  public Float[] price;  Goods(){   name =new String[100];   price=new Float[100];  } } public class SuperMarket extends JFrame{  public static void main(String[] args) throws SQLException{   MainWinow mainWin=new MainWinow("网上超市购物结算");     mainWin.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   mainWin.setBounds(300, 300, 500, 400);   mainWin.setVisible(true);   mainWin.setWin(mainWin);   mainWin.setMinWindowLayout();  } }  class MainWinow extends JFrame{  Goods goods;  private JButton user;  private JButton manager;  private JLabel loginLabel;  private ManageWindow magWin;  private UserWindow userWin;  private Listener lis;  private MainWinow loginWin;  private int goodsNum;  /*  * 设置界面  * */  private JLabel setNameLabel;  private JLabel setPriceLabel;  private JTextField setNameText;  private JTextField setPriceText;  private JButton inputBut;  private TextArea inputArea;  private JButton returnBut1;  private JButton cancelBut;  /*  * 用户界面  * */  private Vector<String> buyItem;  private Float[] buyCount;  private int buyNum;  private JComboBox goodsCombox;  private JButton returnBut2;  private JLabel choiceGoodLabel;  private JLabel showPriceLabel;  private JTextField showPrice;  private TextArea showChoice;  private JLabel showBuyNum;  private JTextField showBuyNumText;  private JButton submitBuy;  private JButton deleteBuyBut;  private JList choiceList;  private JButton countBut;  private Float sumMoney;  /**   * 数据库导入   */   Statement stmt;  MainWinow(String winName) throws SQLException{   super(winName);   goodsNum=0;   buyNum=0;   sumMoney=(float)0;   goods=new Goods();   user=new JButton("我是用户");   manager=new JButton("我是管理员");   loginLabel=new JLabel("请选择角色!");   magWin=new ManageWindow("设置商品");   magWin.setBounds(300, 300, 500, 400);   magWin.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);   userWin=new UserWindow("欢迎选购");   userWin.setBounds(300, 300, 500, 400);   userWin.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);   lis=new Listener();   /*   * 设置界面初始化   * */   setNameLabel=new JLabel("商品名:");   setPriceLabel=new JLabel("价格:");   setNameText=new JTextField(5);   setPriceText=new JTextField(5);   inputBut=new JButton("确认添加");   inputArea=new TextArea();   returnBut1=new JButton("返回");   cancelBut=new JButton("撤回添加");   /*   * 用户界面初始化   * */   goodsCombox=new JComboBox();   returnBut2=new JButton("返回");   choiceGoodLabel=new JLabel("请选择商品:");   showPriceLabel=new JLabel("价格");   showPrice=new JTextField(5);   showChoice=new TextArea();   showBuyNum=new JLabel("购买数量:");   showBuyNumText=new JTextField(5);   submitBuy=new JButton("确认购买");   deleteBuyBut=new JButton("删除订单");   countBut=new JButton("订单结算");   choiceList=new JList();   buyItem=new Vector<String>();   buyCount=new Float[100];   /*    * 数据库的导入    * */   try {    Class.forName("com.mysql.jdbc.Driver");   } catch (ClassNotFoundException e) {    // TODO Auto-generated catch block    e.printStackTrace();   }   String url= "jdbc:mysql://localhost:3306/device";   String user="root";   String password="zjq1314520";   Connection con=DriverManager.getConnection(url,user,password);   stmt = con.createStatement();   /*    * 数据库数据的导出    * */   importSql();  }  public void importSql() throws SQLException {   int i=1;   // TODO Auto-generated method stub   ResultSet result=stmt.executeQuery(     "SELECT name,price FROM goods_info"     );   while(result.next()){    goods.name[i-1]=result.getString(1);    goods.price[i-1]=Float.parseFloat(result.getString(2));    i++;   }   goodsNum=i-1;  }  public void setWin(MainWinow w){   loginWin=w;  }  public void setMinWindowLayout(){   Container loginCon=new Container();   loginCon.setLayout(new FlowLayout());   loginCon.add(manager);   loginCon.add(user);      manager.addActionListener(lis);   user.addActionListener(lis);   this.setLayout(new BorderLayout());   this.add(loginLabel,BorderLayout.NORTH);   this.add(loginCon,BorderLayout.CENTER);   this.validate();   /*   * 设置界面布局   * */   magWin.setLayout(new FlowLayout());   magWin.add(setNameLabel);   magWin.add(setNameText);   magWin.add(setPriceLabel);   magWin.add(setPriceText);   magWin.add(inputBut);   magWin.add(inputArea);   magWin.add(cancelBut);   magWin.add(returnBut1);      inputBut.addActionListener(lis);   returnBut1.addActionListener(lis);   cancelBut.addActionListener(lis);   /*   * 用户界面布局   * */   userWin.setLayout(new BorderLayout());   Container userCon=new Container();   userCon.setLayout(new FlowLayout());   userCon.add(choiceGoodLabel);   userCon.add(goodsCombox);   userCon.add(showPriceLabel);   userCon.add(showPrice);   userCon.add(showBuyNum);   userCon.add(showBuyNumText);   userCon.add(submitBuy);   userWin.add(userCon,BorderLayout.NORTH);   //choiceList.setListData(goods.name);   userWin.add(choiceList,BorderLayout.CENTER);   userWin.add(new JScrollPane(choiceList));      Container butCon=new Container();   butCon.setLayout(new FlowLayout());   butCon.add(deleteBuyBut);   butCon.add(countBut);   butCon.add(returnBut2);   userWin.add(butCon,BorderLayout.SOUTH);      goodsCombox.addItemListener(    new ItemListener(){    @Override     public void itemStateChanged(ItemEvent e) {     // TODO Auto-generated method stub     int i=goodsCombox.getSelectedIndex();     if(i>=0)showPrice.setText(goods.price[i].toString());    }   }   );   returnBut2.addActionListener(lis);   submitBuy.addActionListener(lis);   deleteBuyBut.addActionListener(lis);   countBut.addActionListener(lis);  }    private void addComboxItem() {   // TODO Auto-generated method stub   for(int i=0;i<goodsNum;i++){    goodsCombox.addItem(goods.name[i]);   }  }    class Listener implements ActionListener{   @Override    public void actionPerformed(ActionEvent e) {    // TODO Auto-generated method stub    if(e.getSource()==manager){     addGoods();     loginWin.setVisible(false);     magWin.setVisible(true);    }    if(e.getSource()==user){     loginWin.setVisible(false);     userWin.setVisible(true);     goodsCombox.removeAllItems();     addComboxItem();    }    if(e.getSource()==inputBut){     //String showOut="";          if(setNameText.getText().equals("")||setPriceText.getText().equals("")){      JOptionPane.showMessageDialog(magWin,"不可以有空余项!", "警告",JOptionPane.PLAIN_MESSAGE);     }     else{      goods.name[goodsNum]=setNameText.getText();      goods.price[goodsNum]=Float.parseFloat(setPriceText.getText());      try {       /*        * 写进数据库        * */       stmt.executeUpdate("insert into goods_info(name,price)values('"+goods.name[goodsNum]+"','"+(float)goods.price[goodsNum]+"')");      } catch (SQLException e1) {       // TODO Auto-generated catch block       e1.printStackTrace();      }      goodsNum++;      addGoods();      setNameText.setText("");      setPriceText.setText("");      //showOut="商品名:"+setNameText.getText()+"/t"+"价格:"+setPriceText.getText()+"/n";      //inputArea.append(showOut);     }    }    if(e.getSource()==cancelBut){     if(goodsNum>0){      goodsNum--;      String deleteName=goods.name[goodsNum];      String deletePrice=goods.price[goodsNum].toString();      //System.out.println(deleteName);      /*       * 删除数据库里面的元素       * */      String sql = "delete from goods_info where name = '"+deleteName+"' AND price ='"+deletePrice+"'";      try {       stmt.executeUpdate(sql);      } catch (SQLException e1) {       // TODO Auto-generated catch block       e1.printStackTrace();      }      //Connection con= DBManager .getConnection();;      //PreparedStatement ps = con.prepareStatement(sql);      addGoods();     }    }    if(e.getSource()==returnBut1){     loginWin.setVisible(true);     magWin.setVisible(false);    }    /*    * 用户界面事件响应    * */    if(e.getSource()==returnBut2){     loginWin.setVisible(true);     userWin.setVisible(false);    }    if(e.getSource()==submitBuy){      if(!showBuyNumText.getText().equals("")){       buyCount[goodsCombox.getSelectedIndex()]=Float.parseFloat(showBuyNumText.getText());      String contentItem="";      Float sumMon=Float.parseFloat(showBuyNumText.getText())*(Float)goods.price[goodsCombox.getSelectedIndex()];      contentItem="商品名:"+goods.name[goodsCombox.getSelectedIndex()]+" "       +"单价:"+goods.price[goodsCombox.getSelectedIndex()].toString()+" "       +"购买数量:"+showBuyNumText.getText()+" "       +"总价:"+sumMon.toString();      buyItem.addElement(contentItem);      //buyItem[buyNum]=contentItem;      buyNum++;      choiceList.removeAll();      choiceList.setListData(buyItem);      sumMoney+=sumMon;     }     else{      JOptionPane.showMessageDialog(magWin,"购买数量不可以为空", "警告",JOptionPane.PLAIN_MESSAGE);     }         }    if(e.getSource()==deleteBuyBut){     if(choiceList.getSelectedValue()==null){      JOptionPane.showMessageDialog(magWin,"未选择待删除的物品", "警告",JOptionPane.PLAIN_MESSAGE);         }     else if(buyNum>0){      int i=choiceList.getSelectedIndex();      String selectItem=buyItem.get(i);      //System.out.println(selectItem);      String deletePrice="";      for(int j=0;j<selectItem.length()-3;j++){      // System.out.println(selectItem.substring(j, j+3));       if(selectItem.substring(j, j+3).equals("总价:")){        deletePrice=selectItem.substring(j+3,selectItem.length());        System.out.println(deletePrice);        sumMoney-=Float.parseFloat(deletePrice);        break;       }      }      buyItem.remove(i);      choiceList.removeAll();      choiceList.setListData(buyItem);      choiceList.validate();      buyNum--;     }     else{      JOptionPane.showMessageDialog(magWin,"购物车为空,不可删除", "警告",JOptionPane.PLAIN_MESSAGE);     }    }    if(e.getSource()==countBut){//sumMoney     for(int i=0;i<buyItem.size();i++){      String str=buyItem.get(i).substring(0, 2);      if(str.equals("总价")){       buyItem.remove(i);      }     }     buyItem.addElement("总价:"+sumMoney.toString());     choiceList.removeAll();     choiceList.setListData(buyItem);     choiceList.validate();    }   }      private void addGoods() {    if(!inputArea.getText().equals(""))inputArea.setText("");    // TODO Auto-generated method stub    for(int i=0;i<goodsNum;i++){     String massage="商品名:"+goods.name[i]+"/t"+"价格:"+goods.price[i].toString()+"/n";     inputArea.append(massage);    }   }  } } class ManageWindow extends JFrame {  ManageWindow(String title){   super(title);  } } class UserWindow extends JFrame{  UserWindow(String title){   super(title);  } } 

删除有关数据库部分便可以在自己电脑上运行!

有关截图:


管理员界面:


用户界面:


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表