文档说明:
一、语言和环境
二、技术要求
三、功能要求
四、数据库设计
五、具体要求及推荐实现步骤
六、注意事项
实现代码:
一、数据库
二、Java Swing
com.ynavc.Bean
com.ynavc.BaseDAO
com.ynavc.OrderDAO
com.ynavc.Vive
com.ynavc.Test
该系统采用 SWING 技术配合 JDBC 使用 JAVA 编程语言完成桌面应用开发。
某电商公司为了方便客服查看用户的订单信息,需开发一个用户订单管理系统。要求本系统实现以下功能:
1、启动程序后进入主界面,显示所有订单信息,效果如图 1 所示:
图 1 查询订单信息
2、在订单编号文本框中输入正确订单号显示该订单信息,如图 2:
图 2 搜索订单信息
3、选中某个订单后点击删除按钮,提示是否真的要删除,确定后删除该数据。如图 3:
图 3 删除确认4. 删除成功后显示删除后订单信息。如图 4:
图 4 删除后数据显示数据库名为 OrderDb,表结构如下。
表 1 订单表(tb_order)
列名
含义
数据类型
约束(描述)
id
编号
int
主键,自动增长
name
商品名称
varchar(20)
非空
price
价格
decimal(5,2)
非空
orderID
所属订单单号
varchar(20)
非空
descinfo
描述
varchar(100)
题目:物流跟踪管理系统
该程序的评分标准如下:
10
数据库和表
正确创建数据库和表 6 分,测试数据 4 分。必须以分离数据库或脚本方式提交, 否则该项不得分
5
正确创建和编写实体类,包含所有属性及方法
10
正确创建并编写 BaseDAO 完成数据库的连接(5 分)和关闭(5 分)。
30
正确创建并编写 OrderDAO 完成数据查询与删除
10
列表数据查询
10
单条数据查询
10
数据删除
40
创建并编写 MainFrame 类完成界面设计及功能调用
5
图 1 中各个组件的设计
10
图 1 中数据展示
10
图 2 中单条数据并正确展示在 JTable 中
5
图 3 中单条数据删除询问
10
图 4 中数据删除并展示新数据在 Jtable 中。
5
总体编程技术
2
编码规范
3
注释完善
总分
100 分
tb_order.java
package com.ynavc.Base; public class tb_order { private int id; private String name; private double price; private int orderID; private String descinfo; public tb_order() { super(); } public tb_order(int id, String name, double price, int orderID, String descinfo) { super(); this.id = id; this.name = name; this.price = price; this.orderID = orderID; this.descinfo = descinfo; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } public int getOrderID() { return orderID; } public void setOrderID(int orderID) { this.orderID = orderID; } public String getDescinfo() { return descinfo; } public void setDescinfo(String descinfo) { this.descinfo = descinfo; } }DbConnection.java
package com.ynavc.BaseDAO; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import javax.swing.JOptionPane; import com.mysql.jdbc.Statement; public class DbConnection { //驱动类的类名 private static final String DRIVERNAME="com.mysql.jdbc.Driver"; //连接数据的URL路径 private static final String URL="jdbc:mysql://127.0.0.1:3306/orderdb"; //数据库登录账号 private static final String USER="root"; //数据库登录密码 private static final String PASSWORD="root123"; //加载驱动 static{ try { Class.forName(DRIVERNAME); } catch (ClassNotFoundException e) { e.printStackTrace(); } } //获取数据库连接 public static Connection getConnection() { try { return DriverManager.getConnection(URL,USER,PASSWORD); } catch (SQLException e) { e.printStackTrace(); } return null; } //查询 public static ResultSet query(String sql) { System.out.println(sql); //获取连接 Connection connection=getConnection(); PreparedStatement psd; try { psd = connection.prepareStatement(sql); return psd.executeQuery(); } catch (SQLException e) { JOptionPane.showMessageDialog(null,"执行语句出错\n"+e.toString()); e.printStackTrace(); } return null; } //增、删、改、查 public static int updataInfo(String sql) { System.out.println(sql); //获取连接 Connection connection=getConnection(); try { PreparedStatement psd=connection.prepareStatement(sql); return psd.executeUpdate(); } catch (SQLException e) { JOptionPane.showMessageDialog(null,"执行语句出错\n"+e.toString()); e.printStackTrace(); } return 0; } //关闭连接 public static void colse(ResultSet rs,Statement stmt,Connection conn) throws Exception{ try { if (rs != null){ rs.close(); } if (stmt != null){ stmt.cancel(); } if (conn != null) { conn.close(); } } catch (Exception e) { e.printStackTrace(); throw new Exception(); } } }Update.java
package com.ynavc.OrderDAO; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import com.ynavc.Base.tb_order; import com.ynavc.BaseDAO.DbConnection; public class Update { //查询主页信息 public Object[][] getMainInfo(String id) { String sql; if (id.equals("")) { sql = "select * from tb_order"; }else { sql = "select * from tb_order WHERE orderid LIKE '"+id+"%';"; } ResultSet re = DbConnection.query(sql); ArrayList<tb_order> list = new ArrayList<tb_order>(); try { while (re.next()) { tb_order tb = new tb_order(); tb.setId(re.getInt(1)); tb.setName(re.getString(2)); tb.setPrice(re.getDouble(3)); tb.setOrderID(re.getInt(4)); tb.setDescinfo(re.getString(5)); list.add(tb); } } catch (SQLException e) { e.printStackTrace(); } Object[][] ob = new Object[list.size()][5]; for (int i = 0; i < list.size(); i++) { ob[i][0] = list.get(i).getId(); ob[i][1] = list.get(i).getName(); ob[i][2] = list.get(i).getPrice(); ob[i][3] = list.get(i).getOrderID(); ob[i][4] = list.get(i).getDescinfo(); } return ob; } //删除数据 public int addData(int id) { String sql = "DELETE FROM tb_order WHERE id='"+id+"';"; return DbConnection.updataInfo(sql); } }MainFrame.java
package com.ynavc.Vive; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JScrollPane; import javax.swing.JTable; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JTextField; import javax.swing.table.DefaultTableModel; import com.ynavc.OrderDAO.Update; import javax.swing.JButton; public class MainFrame extends JFrame { private JTextField orderid; Update update = new Update(); Object[] header = {"编号","商品名称","商品价格","订单编号","订单描述"}; Object[][] data = update.getMainInfo(""); DefaultTableModel df = new DefaultTableModel(data, header); public MainFrame() { super("物流a跟踪管理系统"); this.setBounds(0, 0, 700, 500); getContentPane().setLayout(null); this.setLocationRelativeTo(null); this.setResizable(false); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JLabel title = new JLabel("物流跟踪管理系统"); title.setFont(new Font("宋体", Font.BOLD, 40)); title.setBounds(182, 13, 336, 50); getContentPane().add(title); JLabel orderid_text = new JLabel("订单编号"); orderid_text.setBounds(14, 70, 72, 18); getContentPane().add(orderid_text); orderid = new JTextField(); orderid.setBounds(80, 67, 179, 24); getContentPane().add(orderid); orderid.setColumns(10); JButton seach = new JButton("搜索"); seach.setBounds(273, 66, 90, 27); getContentPane().add(seach); seach.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if (orderid.equals("")) { JOptionPane.showMessageDialog(null, "请输入要查询的订单编号!"); } else { String id = orderid.getText(); data = update.getMainInfo(id); df.setDataVector(data, header); } } }); JTable jTable = new JTable(df); JScrollPane scrollPane = new JScrollPane(jTable); scrollPane.setBounds(14, 104, 666, 302); getContentPane().add(scrollPane); JButton delete = new JButton("删除"); delete.setBounds(590, 425, 90, 27); getContentPane().add(delete); delete.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if (jTable.getSelectedColumn()<0) { JOptionPane.showMessageDialog(null, "请选择要删除的数据!"); } else { int num = JOptionPane.showConfirmDialog(null, "您真的真的要删除吗?","温馨提示", 0,1); int id = Integer.parseInt(jTable.getValueAt(jTable.getSelectedRow(), 0).toString()); if(num == JOptionPane.OK_OPTION){ int result = update.addData(id); if (result>0) { JOptionPane.showMessageDialog(null, "删除成功!"); orderid.setText(""); } else { JOptionPane.showMessageDialog(null, "删除失败!"); } } } } }); } public static void main(String[] args) { new MainFrame().setVisible(true); } }Test.java
package com.ynavc.Test; import com.ynavc.Vive.MainFrame; public class Test { public static void main(String[] args) { new MainFrame().setVisible(true); } }