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

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

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

有关截图:

管理员界面:

用户界面:

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

(0)

相关推荐

  • asp.net 购物车实现详细代码

    <%@ Page language="c#" Codebehind="shoppingcart.aspx.cs" AutoEventWireup="false" Inherits="myshop.shoppingcart" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" ><HTML> <

  • php 购物车的例子

    //购物车session的产生代码 if(! $session && ! $scid) { /* session用来区别每一个购物车,相当于每个车的身份证号: scid只用来标识一个购物车id号,可以看做是每个车的名字: 当该购物车的id和session值两者都不存在时,就产生一个新购物车 */ $session = md5(uniqid(rand())); /* 产生一个唯一的购物车session号 rand()先产生个随机数,uniqid()再在该随机数的基础上产生一个独一无二的字符串

  • php网上商城购物车设计代码分享

    首先,购物车的数据库设计: 1. id 2. goods_id 商品ID 3. session_id 购物车ID 4. goods_sn 商品编码 5. goods_name 商品名称 6. shop_price 商品商城售价 7. goods_price 商品真实售价(与shop_price的区别在于,当打折的时候,shop_price是打折之前商品的售价,而goods_price是打折之后的) 8. goods_number 数量 9. weight 商品重量 10. goods_attr

  • php购物车实现代码

    ShopCar.php 复制代码 代码如下: <?php class Shopcar { //商品列表 public $productList=array(); /** * * @param unknown_type $product 传进来的商品 * @return true 购物车里面没有该商品 */ public function checkProduct($product) { for($i=0;$i<count($this->productList);$i++ ) { if($

  • 基于JQuery实现的类似购物商城的购物车

    商品信息使用JSON数据来模拟 同一个产品点击多次,不会重复添加,而是在已有的基础上数量+1, 商品数量也可以手动输入,当输入0时,该商品将自动从购物车删除(点击减号到小于1时,也会提示是否从购物车删除商品信息) 每个产品的价格和总价都会根据添加和删除的操作来动态计算 附下载链接:/201112/yuanma/jquery_gouwuche.rar 基本的功能都已经实现, 建议使用IE浏览器运行,其他浏览器没有测试 HTML代码: 复制代码 代码如下: <!DOCTYPE html PUBLIC

  • Javascript操纵Cookie实现购物车程序

    复制代码 代码如下: /***************************************************************************************************** Name 购物车 Version 1.1 Author Vanni(凡林) url:www.27sea.com QQ:303590170 CreateDate 2005-05-31 Description 此类是基于JavaScript和客户端Cookie,请保证客户端开

  • jQuery实现加入购物车飞入动画效果

    HTML 首先载入jQuery库文件和jquery.fly.min.js插件. 复制代码 代码如下: <script src="jquery.js"></script> <script src="jquery.fly.min.js"></script> 接着,将商品信息html结构布置好,本例中,我们用四个商品并排布置,每个商品box中包括有商品图片.价格.名称以及加入购物车按钮等信息. 复制代码 代码如下: <

  • jQuery实现购物车多物品数量的加减+总价计算

    复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>jQuery实现购物

  • js购物车实现思路及代码(个人感觉不错)

    复制代码 代码如下: <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServer

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

    使用Java语言编写一个模拟网上超市购物结算功能的程序,要求程序运行后有一个图形用户界面,可供用户输入购买的各种商品相关信息,最后给出用户的购物清单及总价格. 需求分析: 1.管理员添加商品以及其价格 2.用户购买商品打印订单信息以及结算订单 代码: /* * 创建者:张俊强 * 时间:2016/5/15 * */ package SaleSys; import java.awt.*; import java.awt.event.*; import java.util.Vector; impor

  • java编写简单的E-mail发送端程序

    本文实例介绍了简单E-mail发送端程序的Java实现代码,分享给大家供大家参考,具体内容如下 在这个代码中,有几个注意点强调一下: 1.使用 Socket 与 SMTP 邮件服务器取得连接,注意 SMTP 服务器的主机名: 2.使用 data 命令时,若写了 subject (主题)之后,邮件的正文部分必须与 subject 之间有一个空行,即"回车+换行",在代码中则是 \r\n : 3.同样需要将发件人的邮箱用户名.密码进行 BASE64 编码之后再传给 SMTP 服务器: 4.

  • java编写创建数据库和表的程序

    本文示例可见一斑了,主要是通过Java对SQL语句进行操作,和普通的增删改查的原理是一样的: import java.sql.*; public class Test { public static void main(String[] args) throws Exception { Class.forName("com.mysql.jdbc.Driver"); //一开始必须填一个已经存在的数据库 String url = "jdbc:mysql://localhost:

  • 详解Java编写并运行spark应用程序的方法

    我们首先提出这样一个简单的需求: 现在要分析某网站的访问日志信息,统计来自不同IP的用户访问的次数,从而通过Geo信息来获得来访用户所在国家地区分布状况.这里我拿我网站的日志记录行示例,如下所示: 121.205.198.92 - - [21/Feb/2014:00:00:07 +0800] "GET /archives/417.html HTTP/1.1" 200 11465 "http://shiyanjun.cn/archives/417.html/" &qu

  • 用Java编写经典小程序

    如果是刚接触或者刚学习java,练习一些基础的算法还是必须的,可以提升思维和语法的使用 1.输出两个int数中的最大值 import java.util.Scanner; public class demo { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请依次输入两个整数:a,b(以空格隔开)"); /*比较两个数的大小*/

  • Java编写程序之输入一个数字实现该数字阶乘的计算

    需求说明: 编写Java程序,输入一个数字,实现该数字阶乘的计算.一个数字的阶乘是所有小于及等于该数的正整数的积,自然数n的阶乘写作n! .例如,5的阶乘等于1*2*3*4*5,表示为5! = 120. 实现思路: 声明变量fac.i和num,用于存储阶乘运算结果.循环变量以及用户输入的数字. 通过System.out.println()接收用户输入的数字,并为变量num赋值. 根据阶乘计算规则,使用while循环结构实现计算. 使用System.out.println ()实现格式化输出运算结

  • 利用Java编写一个出敬业福的小程序

    目录 1.前言 2.定义工具类 3.生成"福"主类 4.运行测试 5.素材图片 1.前言 “福”的由来: 姜太公封一大批神仙时,却把自己的妻子叶氏封为穷神,还告诉她说:“有福的地方,你不能去.”从此,家家过年贴福字,就是告诉穷神,我这里是有福的地方,你千万不能进来.福字,就是摆脱穷困.追求幸福的象征. 福字之所以倒贴,传说起于清代恭亲王府.那年春节前夕,大管家按例写了几个斗大的“福”字,叫人贴于王府的大门上.有个家丁目不识丁,竟将“福”字头朝下贴上.恭亲王福晋十分气恼,欲鞭罚惩戒.可这

  • Java编写网络聊天程序实验

    本文实例为大家分享了Java编写网络聊天程序的具体代码,供大家参考,具体内容如下 课程名称 高级Java程序设计 实验项目 Java网络编程 实验目的: 使用客户机/服务器模式.基于TCP协议编写一对多“群聊”程序.其中客户机端单击“连接服务器”或“断开连接”按钮,均能即时更新服务器和所有客户机的在线人数和客户名. 实验要求: 设计一对多的网络聊天程序,要求: 1.基于TCP/IP设计聊天程序2.采用图形界面设计3.能够进行一对多聊天 项目截图 服务器端代码: import javax.swin

  • java实现简易超市管理系统 附源码下载

    java超市管理系统 1.0(含源文件,后续会继续优化~) 前言 一个月零零散散的时间学习了java,通过这次"超市管理系统"的练习,希望可以给一同开始学习java的朋友一些参考,更希望大佬们多多指点和批评~ 一.确定需求 程序概述: 小型超市商品销售管理系统选择小型超市的四类商品进行管理. 这四类商品是:食品.化妆品.生活用品和饮料(四个类). 每类商品都包含有商品名和商品利润 (其中包括商品的售价.进价.库存量).(五个属性) 每类不同的商品还有区别于其他商品的特殊信息(子类特有属

  • Java+OpenCV调用摄像头实现拍照功能

    目录 环境准备 制作主界面 整体结构介绍 核心代码与知识点讲解 JPanel中如何显示摄像头的图像 OpenCV调用摄像头 使用摄像头拍照 完整代码 OpenCVUtil.java ImageUtils.java FileBean.java VideoPanel.java TakePhotoProcess.java FaceRecognize.java(核心主类) 随着我们对环境.Mat基本使用越来越熟练.Java Swing也逐步熟悉了起来.今天我们开始进入OpenCV驱动摄像头的几个使用场景

随机推荐