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

作者:zjq_1314520 时间:2021-10-29 13:55:52 

使用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);
}
}

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

有关截图:

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

管理员界面:

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

用户界面:

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

标签:Java,网上超市,购物结算
0
投稿

猜你喜欢

  • SpringCloud分布式链路追踪组件Sleuth配置详解

    2023-11-28 23:58:42
  • 使用Java反射模拟实现Spring的IoC容器的操作

    2023-06-03 17:37:42
  • 举例说明自定义C++异常处理的实例

    2022-10-25 13:45:27
  • Mybatis-plus自动填充不生效或自动填充数据为null原因及解决方案

    2021-08-16 02:18:42
  • 详解JAVA中获取文件MD5值的四种方法

    2021-07-20 22:56:15
  • servlet异步请求的实现

    2023-07-14 17:11:38
  • Java利用过滤器实现完善登录功能

    2021-07-20 15:07:05
  • C#中事件只能在内部调用的原因分析

    2023-08-09 05:07:00
  • autojs模仿QQ长按弹窗菜单实现示例详解二

    2022-10-20 07:04:37
  • java多线程抓取铃声多多官网的铃声数据

    2023-12-18 23:20:05
  • 必须要学会的JMM与volatile

    2021-07-30 14:07:53
  • FasfDFS整合Java实现文件上传下载功能实例详解

    2022-05-27 02:30:46
  • c#如何实现接口事件

    2023-10-02 18:31:28
  • C# PictureBox控件方法参数及图片删除重命名上传详解

    2023-02-04 17:59:08
  • springboot+jwt+微信小程序授权登录获取token的方法实例

    2022-07-11 17:53:57
  • Java堆内存又溢出了!教你一招必杀技(推荐)

    2022-09-22 06:32:55
  • java使用ftp上传文件示例分享

    2021-10-23 08:33:03
  • Java实现抠图片文字或签名的完整代码

    2023-04-18 00:04:44
  • Java微信公众平台开发(13) 微信JSSDK中Config配置

    2022-12-29 15:58:24
  • 如何使用Spring AOP预处理Controller的参数

    2022-09-11 10:01:56
  • asp之家 软件编程 m.aspxhome.com