找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2885|回复: 0
打印 上一主题 下一主题
收起左侧

Java薯片购物管理系统的设计与实现 课程设计论文下载

[复制链接]
跳转到指定楼层
楼主

这是
大学实训的内容,完整的java程序。

完整的论文下载(可编辑):
java.docx (711.08 KB, 下载次数: 12)

下面是本设计的部分内容预览:
大连科技学院
Java程序设计课程设计(B)

题  目基于Java的薯片购物管理系统的设计与实现

学生姓名专业班级

指导教师   樊晓勇  职    称   副教授      

所在单位   信息科学学院物联网工程教研室      

教研室主任           孙 琦               


完成日期  2017 年1月 6 日


课程设计评分标准
项目
评价
成绩
出勤与工作态度(20分)
A:没有缺勤,工作态度积极主动B:缺勤一次,工作态度良好
C:缺勤二次,工作态度较好D:缺勤二次,工作态度较差
E:出勤状况与工作态度差


功能、界面与数据库设计(20分)
A:功能完善,数据库设计规范     B:功能完整,数据库设计规范
C:功能完整,数据库设计较规范   D:功能较完整,数据库设计较规范
E:功能与数据库设计不完整


源代码与程序运行(20分)
A:代码正确,程序运行顺利B:代码完整,程序运行基本正常
C:代码完整,程序运行有一处错误 D:代码较完整,程序运行有二处错误
E:代码不完整,程序运行有多处错误


设计报告结构与内容
(20分)
A:结构清晰,内容充实B:结构完整,内容较充实
C:结构与内容完整D:结构与内容较完整
E:结构混乱,内容欠缺


设计报告段落与图表格式(20分)
A:段落规范,图表规范正确B:段落规范,图表有一处错误
C:段落较规范,图表有二处错误D:段落完整,图表有多处错误
E:段落不完整,图表错误



项目成绩评定标准:
A:成绩给定17-20分,B:成绩给定13-16分,C:成绩给定9-12分,D:成绩给定5-8,
E:成绩给定0-4分。




综 合  评 定:



(优、良、中、及格、不及格)
































指导教师签字:





2017年1月6日









目  录

1薯片购物系统概述              1

1.1              系统简介

1.2 系统开发所采用的技术

2数据库结构

2.1用户表

2.2商品表

2.3订单表

2.4购物车表

3 实体类定义

3.1User.java

3.1Goods.java

3.3Shop.java

4 功能类定义——图形界面实现

4.1登录界面

4.2 商品信息维护界面

4.3主页面

4.4 商品购买页面

4.5 单笔订单支付界面

4.6 多笔订单支付界面

4.7购物车维护界面

4.8购物信息修改界面界面

4.9 充值界面界面

5 功能类定义——数据库操作实现

6 总结






1





1薯片购物系统概述1.1     系统简介
购物模拟系统采用Java程序设计语言实现C/S模式下的电子商务模拟购物流程。模拟系统分前台购物业务和后台商品管理两部分。
  • 前台购物管理
前台购物管理含有登录、商品查询、购买、将商品添加到购物车、下订单、支付、查看购物车、查看订单、批量支付、购物车维护(删除、修改)、订单维护(删除)等功能。实现了电子商务中购买商品的整个业务流程。该部分功能的使用权限归普通用户。
  • 后台商品管理
后台管理的使用权限是管理员,管理员可实现对商品信息的维护(增、删、改、查)。
1.2 系统开发所采用的技术
Eclipse是著名的跨平台的自由集成开发环境,是一个开放源代码、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。Eclipse附带了一个标准的插件集,包括Java开发工具。
MySQL是一种开放源代码的关系型数据库管理系统,MySQL数据库系统使用最常用的数据库管理语言—结构化查询语言(SQL)进行数据库管理。
Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言。Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
JDBC是一种用于执行SQL语句的JavaAPI,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。
1





2数据库结构2.1用户表
字段名(列名)
中文描述
数据类型
约束
描述
userName
用户名
varchar(20)
非空,主键
用户登录时使用的用户名
password
密码
char(10)
非空
登录密码
account
账户余额
double
默认值为0
用于支付、购买商品
identity
用户身份
Int
非空
管理员1,普通用户0

2.2商品表
字段名(列名)
中文描述
数据类型
约束
描述
goodsID
商品编号
char(5)
主键、非空
与颜色、尺寸共同形成主键
goodsName
商品名
varchar(20)
非空
商品名字
store
库存量
int
非空
商品库存数量,库存量<=0不能上架
price
价格
double
非空
商品单价
color
颜色名
char(4)
非空
取值范围白、红、黄、米白
size
尺寸名
char(4)
非空
取值范围S,M,X,XXL
image
商品图片
varchar(50)
非空
商品图片地址
detail
商品描述
varchar(50)
非空
商品详细描述,特点等

2.3订单表
字段名(列名)
中文描述
数据类型
约束
描述
orderID
订单编号
char(5)
主键、非空
主键
goodsID
商品编号
char(5)
主键、非空
主键
goodsName
商品名
varchar(20)
非空
商品名字
orderTime
订单日期
char(10)
主键、非空
主键
userName
用户名
varchar(20)
主键、非空
主键
number
购买数量
int
非空
某种商品的购买数量
color
商品颜色
char(4)
非空
取值范围白、红、黄、米白
size
商品尺寸
char(4)
非空
取值范围S,M,X,XXL
pay
支付状态
boolean
非空
已支付该项为“true”,未支付为“false”
price
价格
double
非空
商品单价
2.4购物车表
字段名(列名)
中文描述
数据类型
约束
描述
goodsID
商品编号
char(10)
主键、非空
主键
goodsName
商品名
varchar(20)
非空
商品名字
userName
用户名
varchar(20)
非空,主键
主键
number
购买数量
int
非空
某种商品的购买数量
color
商品颜色
char(4)
非空
取值范围白、红、黄、米白
size
商品尺寸
char(4)
非空
取值范围S,M,X,XXL
price
价格
double
非空
商品单价
3 实体类定义3.1User.java
public class User {
              String userName;
              String password;
              double account;
              boolean identity;
              public String getUserName() {
                            return userName;
              }
              public void setUserName(String userName) {
                            this.userName = userName;
              }              public String getPassword() {
                            return password;
              }
              public void setPassword(String password) {
                            this.password =  password;
              }
              public double getAccount() {
                            return account;
              }
              public void setAccount(double d) {
                            this.account = d;
              }
              public boolean getIdentity() {
                            return identity;
              }
              public void setIdentity(boolean b) {
                            this.identity = b;
              }
              }
3.1Goods.java
package shop;
public class Goods {
              String goodsID;
              String goodsName;
              int store;
              double price;
              String color;
              String size;
              String image;
              String detail;
              public String getGoodsID() {
                            return goodsID;
              }
              public void setGoodsID(String goodsID) {
                            this.goodsID = goodsID;
              }
              public String getGoodsName() {
                            return goodsName;
              }
              public void setGoodsName(String goodsName) {
                            this.goodsName = goodsName;
              }
              public int getStore() {
                            return store;
              }
              public void setStore(int store) {
                            this.store = store;
              }
              public double getPrice() {
                            return price;
              }
              public void setPrice(double price) {
                            this.price = price;
              }
              public String getColor() {
                            return color;
              }
              public void setColor(String color) {
                            this.color = color;
              }
              public String getSize() {
                            return size;
              }
              public void setSize(String size) {
                            this.size = size;
              }
              public String getImage() {
                            return image;
              }
              public void setImage(String image) {
                            this.image = image;
              }
              public String getDetail() {
                            return detail;
              }
              public void setDetail(String detail) {
                            this.detail = detail;
              }
3.3Shop.java
package shop;
public class Shop {
              private User user = new User();
              private Goods goods = new Goods();
              private int number;
              public User getUser() {
                            return user;
              }
              public void setUser(User user) {
                            this.user = user;
              }
              public Goods getGoods() {
                            return goods;
              }
              public void setGoods(Goods goods) {
                            this.goods = goods;
              }
              public int getNumber() {
                            return number;
              }
              public void setNumber(int number) {
                            this.number = number;
              }
3.4Order.java
package shop;
public class Order {
              private User user=new User();
              private Goods goods=new Goods();
              private String orderID;
              private String orderTime;
              private int number;
              private int pay;            
              public User getUser() {
                            return user;
              }
              public void setUser(User user) {
                            this.user = user;
              }
              public Goods getGoods() {
                            return goods;
              }
              public void setGoods(Goods goods) {
                            this.goods = goods;
              }
              public String getOrderID() {
                            return orderID;
              }
              public void setOrderID(String orderID) {
                            this.orderID = orderID;
              }
              public String getOrderTime() {
                            return orderTime;
              }
              public void setOrderTime(String orderTime) {
                            this.orderTime = orderTime;
              }
              public int getNumber() {
                            return number;
              }
              public void setNumber(int number) {
                            this.number = number;
              }
4 功能类定义——图形界面实现4.1登录界面(1)布局框架采用网格布局3行1列,每一行放一个面板,面板采用流水布局,前两行(用户名、密码)采用左对齐,最后一行(按钮行)采用居中对齐。







图4-1-1登录界面布局图

(2)源代码
public class Load extends JFrame implements ActionListener{
              public Load() {
                            this.init();
                            this.setVisible(true);
                            this.setSize(400, 400);
                            this.setTitle("");
                            //this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
              }
              public void init(){
                            this.setLayout(new GridLayout(3,1));
                            JPanel jp1=new JPanel();
                            load.addActionListener(this);
                  cancel.addActionListener(this);
                  zc.addActionListener(this);
              }
              public void actionPerformed(ActionEvent arg0) {
                            if(arg0.getSource()==load){
                                String userName = userField.getText();
                                System.out.println(userName);
                                String psw = pswField.getText();

                                String sql="select * from userinfo where UserName='"+userName+"'";
                                System.out.println(sql);
                                //加数据库操作代码
                                try{
                                              ResultSet rs=ConnectionDB.selectData(sql);

                                              if(!rs.next()){
                                                            JOptionPane.showMessageDialog(this,"用户名错误,此用户名不存在!", "系统消息", JOptionPane.INFORMATION_MESSAGE);
                                              } else{
                                                            user.setUserName(rs.getString("" + "userName"));
                                                                      //System.out.println(rs.getString("userName"));
                                                                      user.setAccount(rs.getDouble("account"));
                                                                      user.setPassword(rs.getString("password"));
                                                                      user.setIdentity(rs.getBoolean("identity"));
                                                                      //System.out.println(user.getIdentity());
                                                                      if(user.getPassword().equals(psw)) {
                                                                                    if(user.isIdentity()) {
                                                                                                  GoodsMaintain goodsMaintain=new GoodsMaintain();
                                                                                    }
                                                                                    else {
                                                                                                  Main main=new Main(user);
                                                                                    }
                                                                                    this.dispose();
                                                                      }
                                                                      else {
                                                                                    JOptionPane.showMessageDialog(this, "密码错误", "系统消息", JOptionPane.INFORMATION_MESSAGE);
                                                                      }
                                                        }
                                                        ConnectionDB.close();
                                          } catch (SQLException e) {
                                                        e.printStackTrace();}
                                          }else if(arg0.getSource()==cancel){
                                                        userField.setText("");
                                                        pswField.setText("");
                                                        }else if(arg0.getSource()==zc){
                                                                      zhuce zcl=new zhuce(user);
                                                        }}
              public static void main(String[] args) {
                            Load l=new Load();
              }
}
(3)完成效果截图







图4-1-2登录界面效果图
4.2 商品信息维护界面(1)布局
先采用边界布局分为中间C和南边S,南边S采用流水布局中间对齐,顺次摆放4个按钮,中间C再次采用边界布局分为中间CC和南边CS,CC采用网格布局分成4行1列网格,每个网格上流水布局左对齐,按顺次摆放控件;南边CS采用流水布局左对齐,将标签“商品描述”和文本域控件放上。



图4-2-1商品信息维护界面布局图

(2)源代码
public class GoodsMaintain extends JFrame implements ActionListener{
              public GoodsMaintain() {
                            // TODO Auto-generated constructor stub
                            this.init();
                            this.setVisible(true);
                            this.setSize(500, 500);
                            this.setTitle("");
                            this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
              }
              @Override
              public void actionPerformed(ActionEvent e) {
                            // TODO Auto-generated method stub
                            id=IDField.getText();

                            //查找商品
                            if(e.getSource()==jbsearch){
                                          if(id.equals("")){
                                                        JOptionPane.showMessageDialog(this,"商品ID不能为空","系统信息",JOptionPane.INFORMATION_MESSAGE);
                                          }else{
                                                        sql="select * from goodsinfo where goodsID='"+id+"'";
                                                        rs=(ResultSet) ConnectionDB.selectData(sql);
                                                        try {
                                                                      if(rs.next()){
                                                                                    nameField.setText(rs.getString("goodsName"));
                                                                                    priceField.setText(String.valueOf(rs.getDouble("price")));
                                                                                    imageField.setText(rs.getString("image"));
                                                                                    storeField.setText(String.valueOf(rs.getInt("store")));
                                                                                    colorBox.setEditable(true);
                                                                                    colorBox.setSelectedItem(rs.getString("color"));
                                                                                    sizeBox.setEditable(true);
                                                                                    sizeBox.setSelectedItem(rs.getString("size"));
                                                                                    detailArea.setText(rs.getString("detail"));
                                                                      }else{
                                                                                    JOptionPane.showMessageDialog(this,"商品不存在","系统信息",JOptionPane.INFORMATION_MESSAGE);
                                                                      }
                                                                      ConnectionDB.close();
                                                        } catch (HeadlessException e1) {
                                                                      // TODO Auto-generated catch block
                                                                      e1.printStackTrace();
                                                        } catch (SQLException e1) {
                                                                      // TODO Auto-generated catch block
                                                                      e1.printStackTrace();
                                             }
                                          }
                            }else if(e.getSource()==jbupdate){
                                          if(id.equals("")){
                                                        JOptionPane.showMessageDialog(this,"商品ID不能为空","系统信息",JOptionPane.INFORMATION_MESSAGE);
                                          }else{
                                                        goodsName=nameField.getText();
                                                        price=Double.parseDouble(priceField.getText());
                                                        image=imageField.getText();
                                                        store=Integer.parseInt(storeField.getText());
                                                        detail=detailArea.getText();
                                                        sql="update goodsinfo set goodsName='"+goodsName+"',store='"+store+"',price='"+price+"',color='"+color+"',size='"+size+"',image='"+image+"',detail='"+detail+"'where goodsID='"+id+"'";
                                                        ConnectionDB.updateData(sql);
                                                        System.out .println(sql);
                                                        JOptionPane.showMessageDialog(this, "商品修改成功", "系统信息", JOptionPane.INFORMATION_MESSAGE);;
                                                        ConnectionDB.close();
                                                        }
                            }else if(e.getSource()==jbdelete){
                                          if(id.equals("")){
                                                        JOptionPane.showMessageDialog(this,"商品ID不能为空","系统信息",JOptionPane.INFORMATION_MESSAGE);
                                                        }else{
                                                                      sql="delete from goodsinfo where goodsID='"+id+"'";
                                                                      ConnectionDB.updateData(sql);
                                                                      JOptionPane.showMessageDialog(this, "商品删除成功", "系统信息", JOptionPane.INFORMATION_MESSAGE);;
                                                                      ConnectionDB.close();
                                                                      IDField.setText("");
                                                                      nameField.setText("");
                                                                      priceField.setText("");
                                                                      imageField.setText("");
                                                                      storeField.setText("");
                                                                      colorBox.setEditable(true);
                                                                      colorBox.setSelectedItem("");
                                                                      sizeBox.setEditable(true);
                                                                      sizeBox.setSelectedItem("");
                                                                      detailArea.setText("");
                            }else if(e.getSource()==jbadd){
                                          id=IDField.getText();
                                          if(id.equals("")){
                                                        JOptionPane.showMessageDialog(this,"商品ID不能为空","系统信息",JOptionPane.INFORMATION_MESSAGE);
                                                        }else{
                                                                      sql="select * from goodsinfo where goodsID='"+id+"'";
                                                                      rs=(ResultSet) ConnectionDB.selectData(sql);
                                                                                    try {
                                                                                                  if(rs.next()){
                                                                                                                JOptionPane.showMessageDialog(this,"商品信息已存在","系统信息",JOptionPane.INFORMATION_MESSAGE);
                                                                                                                ConnectionDB.close();
                                                                                                                }else{
                                                                                                                ConnectionDB.close();            
                                                                                                                goodsName=nameField.getText();
                                                                                                                price=Double.parseDouble(priceField.getText());
                                                                                                                image=imageField.getText();
                                                                                                                store=Integer.parseInt(storeField.getText());
                                                                                                                detail=detailArea.getText();
                                                                                                                sql="insert into goodsinfo(goodsID,goodsName,store,price,color,size,image,detail) values('"+id+"','"+goodsName+"','"+store+"','"+price+"','"+color+"','"+size+"','"+image+"','"+detail+"')";
                                                                                                                ConnectionDB.updateData(sql);
                                                                                                                JOptionPane.showMessageDialog(this,"商品信息添加成功","系统信息",JOptionPane.INFORMATION_MESSAGE);
                                                                                                                ConnectionDB.close();}
                                                                                    } catch (HeadlessException e1) {
                                                                                                  e1.printStackTrace();
                                                                                    } catch (SQLException e1) {
                                                                                                  e1.printStackTrace();
                                                                                    }
              }


(3)完成效果截图











图4-2-2商品信息维护界面效果图
4.3主页面(1)布局
先采用边界布局分为北边N、中间C、西边W和南边S。北边N采用边界布局分为中间NC和南边NS,NC流水布局中间对齐,放jlLogo,NS采用1行两列网格布局,左侧网格流水布局左对齐,放标签jl,右侧网格流水布局右对齐,放标签、文本框nameField、按钮jbsearch。中间C采用2行3列网格布局,用循环放mp。西边W采用3行1列网格布局,每个网格流水布局中间对齐,放按钮jbadd、jbshop和jborder。南边S流水布局中间对齐放标签。



图4-3-1主页面布局图

(2)源代码
              public void actionPerformed(ActionEvent e) {
                            // TODO Auto-generated method stub
                            if(e.getSource()==jbadd){
                                          Rechange rechange=new Rechange(user);
                            }else if(e.getSource()==jbshop){
                                          ShopSearch shopSearch=new ShopSearch(user);
                            }
              else if(e.getSource()==jbsearch){
                                          if(nameField.getText().trim().equals("")){
                                                        JOptionPane.showMessageDialog(this,"商品名称不为空","系统消息",JOptionPane.INFORMATION_MESSAGE);
                                          }else{
                                                        sql="select * from goodsinfo where goodsName='"+nameField.getText().trim()+"'";
                                                        System.out.println(sql);
                                                        //st=conn.createStatement();
                                              //rs=st.executeQuery(sql);
                                                        rs=ConnectionDB.selectData(sql);//通过ConnectionDB连接
                                                        try {
                                                                      if(rs.next()){//进行判断集合中是否有数据存在 rs.next()
                                                                                    goods.setGoodsID(rs.getString("goodsID"));
                                                                                    goods.setGoodsName(rs.getString("goodsName"));
                                                                                    goods.setStore(rs.getInt("store"));
                                                                                    goods.setPrice(rs.getDouble("price"));
                                                                                    goods.setColor(rs.getString("color"));
                                                                                    goods.setSize(rs.getString("size"));
                                                                                    goods.setImage(rs.getString("image"));
                                                                                    goods.setSize(rs.getString("size"));
                                                                                    goods.setDetail(rs.getString("detail"));
                                                                                    GoodsBuy GoodsBuy=new GoodsBuy(goods,user);
                                                                      }else{
                                                                                    JOptionPane.showMessageDialog(this,"商品不存在","系统消息",JOptionPane.INFORMATION_MESSAGE);}                                         
                                                                      ConnectionDB.close();
                                                        } catch (SQLException e1) {
                                                                      // TODO Auto-generated catch block
                                                                      e1.printStackTrace();
                                                        }
                            }else if(e.getSource()==(jborder)){
                                          OrderAllSearch orderAllSearch=new OrderAllSearch(user);
                            }}
(3)完成效果截图











图4-3-2主页面完成效果图
4.4 商品购买页面(1)布局
先采用边界布局分为中间C和南边S。中间C采用1行2列网格布局,左侧网格流水布局中间对齐,放标签jliamge,右侧网格采用7行1列网格布局,每一行再采用流水布局左对齐,将对应组件放上去。南边S流水布局中间对齐,将组件放上。



图4-4-1购买界面布局图
(2)源代码
public class GoodsBuy extends JFrame implements ActionListener{
public void actionPerformed(ActionEvent e) {
              if(e.getSource()==jbadd){
                            sql="insert into shopinfo values('"+goods.getGoodsID()+"','"+goods.getGoodsName()+"','"+user.getUserName()+"','"+Integer.parseInt(nubmerField.getText())+"','"+goods.getColor()+"','"+goods.getSize()+"','"+goods.getPrice()+"')";
                            ConnectionDB.updateData(sql);
                            JOptionPane.showMessageDialog(this,"添加成功","系统消息",JOptionPane.INFORMATION_MESSAGE);
                            ConnectionDB.close();
              }else if(e.getSource()==jborder){
                            //OrderSearch or = new OrderSearch(order,user,goods);
                            String orderid=null;
                            sql="select max(orderID) as id from orderinfo";
                            rs=ConnectionDB.selectData(sql);
                            try {
                                          if(rs.next()){
                                                        System.out.println(orderid);
                                                        orderid=String.valueOf(Integer.parseInt(rs.getString("id"))+1);
                                          }else{
                                                        orderid="10001";
                                                        System.out.println(orderid);
                                          }
                            } catch (SQLException e1) {
                                          // TODO Auto-generated catch block
                                          e1.printStackTrace();
                            }
                            ConnectionDB.close();
                            Date date=new Date();
                            String orderTime=String.valueOf(date.getYear()+1900);
                            orderTime=orderTime+"-"+String.valueOf(date.getMonth()+1);
                            orderTime=orderTime+"-"+String.valueOf(date.getDate());
                            sql="insert into orderinfo values('"+orderid+"','"+goods.getGoodsID()+"','"+goods.getGoodsName()+"','"+orderTime+"','"+user.getUserName()+"','"+Integer.parseInt(nubmerField.getText())+"','"+goods.getColor()+"','"+goods.getSize()+"','0','"+goods.getPrice()+"')";
                            System.out.println(sql);
                            ConnectionDB.updateData(sql);
                            ConnectionDB.close();
                            order.setOrderID(orderid);
                            System.out.println(orderid);
                            order.setGoods(goods);
                            order.setUser(user);
                            order.setNumber(Integer.parseInt(nubmerField.getText()));
                            order.setPay(0);
                            order.setOrderTime(orderTime);
                            OrderlSearch orderSearch=new OrderlSearch(order,user);
              }
}
}
(3)完成效果截图












图4-4-2购买界面完成效果图
4.5 单笔订单支付界面(1)布局
先采用边界布局分为北边N、中间C和南边S。北边N流水布局左对齐,放标签jluser。中间C采用4行2列网格布局,每一网格再采用流水布局左对齐,放置组件。南边S流水布局右对齐,将按钮jbdelete和jbpay放上。


图4-5-1单笔订单完成布局图
(2)源代码
public class OrderlSearch extends JFrame implements ActionListener{
              public void actionPerformed(ActionEvent e) {
                            if(e.getSource()==jbdelete){
                                          sql="delete from orderinfo where orderID='"+order.getOrderID()+"'";
                                          ConnectionDB.updateData(sql);
                                          JOptionPane.showMessageDialog(this, "删除成功", "系统消息", JOptionPane.INFORMATION_MESSAGE);
                                          ConnectionDB.close();
                            }else if(e.getSource()==jbpay){
                                          double account=user.getAccount();
                                          double all=goods.getPrice()*order.getNumber();
                                          if(account<all){[ align]" joptionpane.showmessagedialog(this,="" "余额不足",="" "系统消息",="" joptionpane.information_message);[="" }else{[="" sql="update userinfo set account='" +(account-all)+"'="" where="" username=""+user.getUserName()+"" ";[="" connectiondb.updatedata(sql);[="" connectiondb.close();[="" +order.getorderid()+"'";[="" +(goods.getstore()-order.getnumber())+"'="" goodsid=""+goods.getGoodsID()+"" "支付成功",="" joptionpane.information_message);}[="" [attachimg]52381[="" attachimg][="" align]








图4-5-2单笔订单完成效果图4.6 多笔订单支付界面(1)布局先采用边界布局分为中间C和南边S。中间C采用流水布局中间对齐,然后放置面板,面板采用6行7列网格布局,每一网格再采用流水布局左对齐,放置标签组件。南边S流水布局右对齐,将按钮jbdelete和jbpay放上。


图4-6-1多笔订单支付完成布局图
(2)源代码
  1. public class OrderAllSearch extends JFrame implements ActionListener {

  2.               public void actionPerformed(ActionEvent arg0) {

  3.                             if (arg0.getSource() == jbdelete) {

  4.                                           for (int i = 0; i < (10 < list.size() ? 10 : list.size()); i++) {

  5.                                                         if (jcb[i].isSelected()) {

  6.                                                                       order = (Order) list.get(i);

  7.                                                                       sql = "delete from orderinfo where goodsID='" + order.getGoods().getGoodsID() + "' and orderID='"

  8.                                                                                                   + order.getOrderID() + "' and userName='" + order.getUser().getUserName()

  9.                                                                                                   + "' and orderTime='" + order.getOrderTime() + "'";



  10.                                                                       JOptionPane.showMessageDialog(this, "删除成功", "系统消息", JOptionPane.INFORMATION_MESSAGE);

  11.                                                                       ConnectionDB.updateData(sql);

  12.                                                                       ConnectionDB.close();

  13.                                                         }

  14.                                           }



  15.                             } else if (arg0.getSource() == jbpay) {

  16.                                           double all = 0;

  17.                                           for (int i = 0; i < (10 < list.size() ? 10 : list.size()); i++) {

  18.                                                         if (jcb[i].isSelected()) {

  19.                                                                       order = (Order) list.get(i);

  20.                                                                       all = all + order.getNumber() * order.getGoods().getPrice();



  21.                                                         }

  22.                                           }

  23.                                           double account = user.getAccount();



  24.                                           if (account < all) {

  25.                                                         JOptionPane.showMessageDialog(this, "余额不足", "系统消息", JOptionPane.INFORMATION_MESSAGE);

  26.                                           } else {

  27.                                                         for (int i = 0; i < (10 < list.size() ? 10 : list.size()); i++) {

  28.                                                                       if (jcb[i].isSelected()) {

  29.                                                                                     order = (Order) list.get(i);

  30.                                                                                     sql = "update orderinfo set pay='1' where goodsID='" + order.getGoods().getGoodsID()

  31.                                                                                                                 + "' and orderID='" + order.getOrderID() + "' and userName='"

  32.                                                                                                                 + order.getUser().getUserName() + "' and orderTime='" + order.getOrderTime() + "'";

  33.                                                                                     ConnectionDB.updateData(sql);

  34.                                                                                     ConnectionDB.close();

  35.                                                                       }

  36.                                                         }

  37.                                                         sql = "update userinfo set account='" + (account - all) + "' where userName='" + user.getUserName()

  38.                                                                                     + "'";

  39.                                                         ConnectionDB.updateData(sql);

  40.                                                         ConnectionDB.close();

  41.                                                         JOptionPane.showMessageDialog(this, "成功", "系统消息", JOptionPane.INFORMATION_MESSAGE);

  42.                                           }

  43.                             }

  44.               }



  45. }
复制代码


(3)完成效果截图

图4-6-2多笔订单支付完成效果图4.7购物车维护界面(1)布局 先采用边界布局分为中间C和南边S。中间C采用流水布局中间对齐,然后放置面板,面板采用6行7列网格布局,每一网格再采用流水布局左对齐,放置标签组件。南边S流水布局右对齐,将按钮jbdelete、jbpay和jborder放上。




图4-7-1购物车维护界面完成布局图(2)源代码
  1. public class ShopSearch extends JFrame implements ActionListener {

  2.               public void actionPerformed(ActionEvent arg0) {

  3.                             if (arg0.getSource() == jbdelete) {

  4.                                           for (int i = 0; i < (10 < list.size() ? 10 : list.size()); i++) {

  5.                                                         if (jcb[i].isSelected()) {

  6.                                                                       shop = (Shop) list.get(i);

  7.                                                                       sql = "delete from shopinfo where goodsID='" + shop.getGoods().getGoodsID() + "'and userName='"

  8.                                                                                                   + shop.getUser().getUserName() + "'";

  9.                                                                       ConnectionDB.updateData(sql);

  10.                                                                       ConnectionDB.close();

  11.                                                                       JOptionPane.showMessageDialog(this, "删除成功", "系统消息", JOptionPane.INFORMATION_MESSAGE);

  12.                                                         }

  13.                                           }



  14.                             } else if (arg0.getSource() == jbupdate) {

  15.                                           for (int i = 0; i < (10 < list.size() ? 10 : list.size()); i++) {

  16.                                                         if (jcb[i].isSelected()) {

  17.                                                                       shop = (Shop) list.get(i);

  18.                                                                       ShopUpdate shopUpdate = new ShopUpdate(shop);



  19.                                                         }

  20.                                           }

  21.                             } else if (arg0.getSource() == jborder) {

  22.                                           String orderid = null;

  23.                                           sql = "select max(orderID) as id from orderinfo";

  24.                                           rs = ConnectionDB.selectData(sql);

  25.                                           try {

  26.                                                         if (rs.next()) {

  27.                                                                       orderid = String.valueOf(Integer.parseInt(rs.getString("id")) + 1);

  28.                                                         } else {

  29.                                                                       orderid = "999";

  30.                                                         }

  31.                                           } catch (SQLException e1) {

  32.                                                         // TODO Auto-generated catch block

  33.                                                         e1.printStackTrace();

  34.                                           }

  35.                                           ConnectionDB.close();

  36.                                           Date date = new Date();

  37.                                           String orderTime = String.valueOf(date.getYear() + 1900) + "-" + String.valueOf(date.getMonth() + 1) + "-"

  38.                                                                       + String.valueOf(date.getDay());

  39.                                           for (int i = 0; i < (10 < list.size() ? 10 : list.size()); i++) {

  40.                                                         if (jcb[i].isSelected()) {

  41.                                                                       shop = (Shop) list.get(i);

  42.                                                                       Goods goods = shop.getGoods();

  43.                                                                       sql = "insert into orderinfo values('" + orderid + "','" + goods.getGoodsID() + "','"

  44.                                                                                                   + goods.getGoodsName() + "','" + orderTime + "','" + user.getUserName() + "','"

  45.                                                                                                   + shop.getNumber() + "','" + goods.getColor() + "','" + goods.getSize() + "','0','"

  46.                                                                                                   + goods.getPrice() + "')";

  47.                                                                       ConnectionDB.updateData(sql);

  48.                                                                       ConnectionDB.close();

  49.                                                                       JOptionPane.showMessageDialog(this, "生成成功", "系统消息", JOptionPane.INFORMATION_MESSAGE);

  50.                                                         }}
复制代码


(3)完成效果截图







图4-7-2购物车维护界面完成效果图4.8购物信息修改界面界面(1)布局先采用边界布局分为中间C和南边S。中间C采用3行2列网格布局,每一网格再采用流水布局左对齐,放置组件。南边S流水布局右对齐,将按钮jbupdate放上。


图4-8-1购物车修改界面完成布局图(2)源代码
  1. public class ShopSearch extends JFrame implements ActionListener {

  2.               public void actionPerformed(ActionEvent arg0) {

  3.                             if (arg0.getSource() == jbdelete) {

  4.                                           for (int i = 0; i < (10 < list.size() ? 10 : list.size()); i++) {

  5.                                                         if (jcb[i].isSelected()) {

  6.                                                                       shop = (Shop) list.get(i);

  7.                                                                       sql = "delete from shopinfo where goodsID='" + shop.getGoods().getGoodsID() + "'and userName='"

  8.                                                                                                   + shop.getUser().getUserName() + "'";

  9.                                                                       ConnectionDB.updateData(sql);

  10.                                                                       ConnectionDB.close();

  11.                                                                       JOptionPane.showMessageDialog(this, "删除成功", "系统消息", JOptionPane.INFORMATION_MESSAGE);

  12.                                                         }

  13.                                           }



  14.                             } else if (arg0.getSource() == jbupdate) {

  15.                                           for (int i = 0; i < (10 < list.size() ? 10 : list.size()); i++) {

  16.                                                         if (jcb[i].isSelected()) {

  17.                                                                       shop = (Shop) list.get(i);

  18.                                                                       ShopUpdate shopUpdate = new ShopUpdate(shop);



  19.                                                         }

  20.                                           }

  21.                             } else if (arg0.getSource() == jborder) {

  22.                                           String orderid = null;

  23.                                           sql = "select max(orderID) as id from orderinfo";

  24.                                           rs = ConnectionDB.selectData(sql);

  25.                                           try {

  26.                                                         if (rs.next()) {

  27.                                                                       orderid = String.valueOf(Integer.parseInt(rs.getString("id")) + 1);

  28.                                                         } else {

  29.                                                                       orderid = "999";

  30.                                                         }

  31.                                           } catch (SQLException e1) {

  32.                                                         // TODO Auto-generated catch block

  33.                                                         e1.printStackTrace();

  34.                                           }

  35.                                           ConnectionDB.close();

  36.                                           Date date = new Date();

  37.                                           String orderTime = String.valueOf(date.getYear() + 1900) + "-" + String.valueOf(date.getMonth() + 1) + "-"

  38.                                                                       + String.valueOf(date.getDay());

  39.                                           for (int i = 0; i < (10 < list.size() ? 10 : list.size()); i++) {

  40.                                                         if (jcb[i].isSelected()) {

  41.                                                                       shop = (Shop) list.get(i);

  42.                                                                       Goods goods = shop.getGoods();

  43.                                                                       sql = "insert into orderinfo values('" + orderid + "','" + goods.getGoodsID() + "','"

  44.                                                                                                   + goods.getGoodsName() + "','" + orderTime + "','" + user.getUserName() + "','"

  45.                                                                                                   + shop.getNumber() + "','" + goods.getColor() + "','" + goods.getSize() + "','0','"

  46.                                                                                                   + goods.getPrice() + "')";

  47.                                                                       ConnectionDB.updateData(sql);

  48.                                                                       ConnectionDB.close();

  49.                                                                       JOptionPane.showMessageDialog(this, "生成成功", "系统消息", JOptionPane.INFORMATION_MESSAGE);

  50.                                                         }}}
复制代码


(3)完成效果截图








图4-8-2购物车修改界面完成效果图
4.9 充值界面界面(1)布局先采用边界布局分为中间C和南边S。中间C采用2行2列网格布局,每一网格再采用流水布局左对齐,放置组件。南边S流水布局右对齐,将按钮jbrechange放上。


图4-9-1充值页面完成效果图(2)源代码public class Rechange extends JFrame implements  ActionListener{              public void actionPerformed(ActionEvent e) {                            // TODO Auto-generated method stub                            User user=new User();                            String name=jlname.getText();
                            //double q=Double.parseDouble(moneyField.getText());                            if(e.getSource()==jbrechange){                                          int n=JOptionPane.showConfirmDialog(this, "是否确认充值?", "系统消息", JOptionPane.YES_NO_OPTION);                                          if(n==JOptionPane.YES_OPTION){                                                        String sql = "select * from userinfo where userName='"+name+"'";                                                        System.out.println(sql);
                                                        try{                                                                      ResultSet rs = ConnectionDB.selectData(sql);
                                                                      if(!rs.next()){                                                                                    JOptionPane.showMessageDialog(this, "此用户不存在!","系统消息",JOptionPane.WARNING_MESSAGE);                                                                      }else if(moneyField.getText().equals("")){                                                                                    JOptionPane.showMessageDialog(this, "请输入充值金额!","系统消息",JOptionPane.WARNING_MESSAGE);                                                                      }                                                                      else{                                                                                    double acc = rs.getDouble("account")+Double.parseDouble(moneyField.getText());                                                                                    sql="update userinfo set account='"+acc+"' where userName='"+name+"'";                                                                          //sql = "select account from userinfo where userName='"+name+"'";                                                                          jlaccount.setText(String.valueOf(rs.getDouble("account")));                                                                                    ConnectionDB.updateData(sql);                                                                                    ConnectionDB.close();                                                                                    JOptionPane.showMessageDialog(this, "充值成功!","系统消息",JOptionPane.WARNING_MESSAGE);                                                                      }                                                        }catch(SQLException e1){                                                                      e1.printStackTrace();                                          }                            }              }}(3)完成效果截图 图4-9-2充值页面完成效果图
5 功能类定义——数据库操作实现(1)数据库操作(1)数据库安装安装MySql数据库(2)导入数据              将数据导入到数据库(2)源代码
package shop;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class ConnectionDB {              static Connection con=null;              static Statement st=null;              static ResultSet rs=null;              public static ResultSet selectData(String sql){                            try {                                          Class.forName("com.mysql.jdbc.Driver");//"com.mysql.jdbc.Driver"con=DriverManager.getConnection("jdbc:mysql://localhost/shop?user=root&password=123456&useUnicode=true&characterEncoding=gbk");                                          st=con.createStatement();                                          rs=st.executeQuery(sql);                                          return rs;                            } catch (SQLException e) {                                          // TODO Auto-generated catch block                                          e.printStackTrace();                            } catch (ClassNotFoundException e) {                                          // TODO Auto-generated catch block                                          e.printStackTrace();                            }                            return null;              }              public static void updateData(String sql){                            try {                                          Class.forName("com.mysql.jdbc.Driver");              con=DriverManager.getConnection("jdbc:mysql://localhost/shop?user=root&password=123456&useUnicode=true&characterEncoding=gbk");                                          st=con.createStatement();                                          st.execute(sql);                            } catch (SQLException e) {                                          // TODO Auto-generated catch block                                          e.printStackTrace();                            } catch (ClassNotFoundException e) {                                          // TODO Auto-generated catch block                                          e.printStackTrace();                            }              }              public static void close(){                            try {                                          rs.close();                                          st.close();                                          con.close();                            } catch (SQLException e) {                                          // TODO Auto-generated catch block                                          e.printStackTrace();                            }}}6 总结通过这次实训我的体会归纳为以下4点:1.态度第一摆正自己的心态,不要以为什么东西上网搜搜就可以了,一定要有自己的东西。只有自己付出过,当JAVA购物系统程序运行成功时的那种喜悦才会令自己有一种莫名的自豪感。态度决定一切!2.兴趣是关键我的学习完全是兴趣导向的。因为有兴趣,所以我会很想充分理解一切细节。又因为理解,所以许多原本片片断断的知识都可以渐渐互相融会贯通,累积技术能量,理论和实务之间的藩篱被打破了,学习效率倍增。学习并快乐着!3.敢于挑战不安于现成的程序,要敢于用多种方法实现一个目的。现在的网络科技很发达,想要一个源程序的确很简单,所以很多人都是在自己都不明白题目要求时,就可以在网上搜到一模一样的代码,根本没有自己的东西。挑战自我是项艰巨的任务。只有坚持自己多看代码多写程序才会有更多的收获。4.不懈追求要对源代码进行不断地完善,要尽可能地实现课题所要求的功能。对初学者来说,大量地写程序是必要的,但过了某个阶段之后,写程序所带来的技术能力成长已经到了极限,还不如多花一点时间看书,学新技术和新观念。可以从实现源程序功能着手,比如添加写模块啊什么的,实现更多功能。看着自己编的程序能成功运行,这样自己会更感兴趣,也就会乐此不疲


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表