目录

文档说明:

一、语言和环境

二、技术要求

三、功能要求

四、数据库设计

五、具体要求及推荐实现步骤

六、注意事项

实现代码:

一、数据库

二、Java Swing

com.ynavc.Bean

com.ynavc.BaseDAO

com.ynavc.OrderDAO

com.ynavc.Vive

com.ynavc.Test


文档说明:

一、语言和环境 

  1. 实现语言:Java。
  2. 环境要求:MyEclipse、JDK 1.6 以上、MySQL。

、技术要求 

该系统采用 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)

五、具体要求及推荐实现步骤 

  1. 创建数据库和表
  2. 创建订单实体类
  3. 创建 BaseDAO 类完成数据库的连接和关闭
  4. 创建 OrderDAO 完成对订单的查询与删除功能
  5. 创建 MainFrame 类并添加相应组件,完成界面设计
  6. 在 MainFrame 中添加 JTable 完成数据展示。
  7. 在 MainFrame 中添加 Jbutton 完成数据删除
  8. 在 MainFrame 中添加文本框完成单条数据搜索

六、注意事项 

题目:物流跟踪管理系统 

该程序的评分标准如下:

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 分 

实现代码:

一、数据库

  1. -- ----------------------------
  2. -- Table structure for tb_order
  3. -- ----------------------------
  4. DROP TABLE IF EXISTS `tb_order`;
  5. CREATE TABLE `tb_order` (
  6. `id` int(11) NOT NULL AUTO_INCREMENT,
  7. `name` varchar(20) NOT NULL,
  8. `price` decimal(10,2) NOT NULL,
  9. `orderid` varchar(20) DEFAULT NULL,
  10. `descinfo` varchar(100) DEFAULT NULL,
  11. PRIMARY KEY (`id`)
  12. ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
  13. -- ----------------------------
  14. -- Records of tb_order
  15. -- ----------------------------
  16. INSERT INTO `tb_order` VALUES ('1', 'iphones Max', '8999.00', '5325781', '杨明金的订单');
  17. INSERT INTO `tb_order` VALUES ('2', '小米10', '3655.00', '20201005', '杨杨的订单');
  18. INSERT INTO `tb_order` VALUES ('3', '华为荣耀10 =', '3200.00', '20201102', '小白的订单');

二、Java Swing

com.ynavc.Bean

tb_order.java

  1. package com.ynavc.Base;
  2. public class tb_order {
  3. private int id;
  4. private String name;
  5. private double price;
  6. private int orderID;
  7. private String descinfo;
  8. public tb_order() {
  9. super();
  10. }
  11. public tb_order(int id, String name, double price, int orderID, String descinfo) {
  12. super();
  13. this.id = id;
  14. this.name = name;
  15. this.price = price;
  16. this.orderID = orderID;
  17. this.descinfo = descinfo;
  18. }
  19. public int getId() {
  20. return id;
  21. }
  22. public void setId(int id) {
  23. this.id = id;
  24. }
  25. public String getName() {
  26. return name;
  27. }
  28. public void setName(String name) {
  29. this.name = name;
  30. }
  31. public double getPrice() {
  32. return price;
  33. }
  34. public void setPrice(double price) {
  35. this.price = price;
  36. }
  37. public int getOrderID() {
  38. return orderID;
  39. }
  40. public void setOrderID(int orderID) {
  41. this.orderID = orderID;
  42. }
  43. public String getDescinfo() {
  44. return descinfo;
  45. }
  46. public void setDescinfo(String descinfo) {
  47. this.descinfo = descinfo;
  48. }
  49. }

com.ynavc.BaseDAO

DbConnection.java

  1. package com.ynavc.BaseDAO;
  2. import java.sql.Connection;
  3. import java.sql.DriverManager;
  4. import java.sql.PreparedStatement;
  5. import java.sql.ResultSet;
  6. import java.sql.SQLException;
  7. import javax.swing.JOptionPane;
  8. import com.mysql.jdbc.Statement;
  9. public class DbConnection {
  10. //驱动类的类名
  11. private static final String DRIVERNAME="com.mysql.jdbc.Driver";
  12. //连接数据的URL路径
  13. private static final String URL="jdbc:mysql://127.0.0.1:3306/orderdb";
  14. //数据库登录账号
  15. private static final String USER="root";
  16. //数据库登录密码
  17. private static final String PASSWORD="root123";
  18. //加载驱动
  19. static{
  20. try {
  21. Class.forName(DRIVERNAME);
  22. } catch (ClassNotFoundException e) {
  23. e.printStackTrace();
  24. }
  25. }
  26. //获取数据库连接
  27. public static Connection getConnection() {
  28. try {
  29. return DriverManager.getConnection(URL,USER,PASSWORD);
  30. } catch (SQLException e) {
  31. e.printStackTrace();
  32. }
  33. return null;
  34. }
  35. //查询
  36. public static ResultSet query(String sql) {
  37. System.out.println(sql);
  38. //获取连接
  39. Connection connection=getConnection();
  40. PreparedStatement psd;
  41. try {
  42. psd = connection.prepareStatement(sql);
  43. return psd.executeQuery();
  44. } catch (SQLException e) {
  45. JOptionPane.showMessageDialog(null,"执行语句出错\n"+e.toString());
  46. e.printStackTrace();
  47. }
  48. return null;
  49. }
  50. //增、删、改、查
  51. public static int updataInfo(String sql) {
  52. System.out.println(sql);
  53. //获取连接
  54. Connection connection=getConnection();
  55. try {
  56. PreparedStatement psd=connection.prepareStatement(sql);
  57. return psd.executeUpdate();
  58. } catch (SQLException e) {
  59. JOptionPane.showMessageDialog(null,"执行语句出错\n"+e.toString());
  60. e.printStackTrace();
  61. }
  62. return 0;
  63. }
  64. //关闭连接
  65. public static void colse(ResultSet rs,Statement stmt,Connection conn) throws Exception{
  66. try {
  67. if (rs != null){
  68. rs.close();
  69. }
  70. if (stmt != null){
  71. stmt.cancel();
  72. }
  73. if (conn != null) { conn.close(); }
  74. } catch (Exception e) {
  75. e.printStackTrace(); throw new Exception();
  76. }
  77. }
  78. }

com.ynavc.OrderDAO

Update.java

  1. package com.ynavc.OrderDAO;
  2. import java.sql.ResultSet;
  3. import java.sql.SQLException;
  4. import java.util.ArrayList;
  5. import com.ynavc.Base.tb_order;
  6. import com.ynavc.BaseDAO.DbConnection;
  7. public class Update {
  8. //查询主页信息
  9. public Object[][] getMainInfo(String id) {
  10. String sql;
  11. if (id.equals("")) {
  12. sql = "select * from tb_order";
  13. }else {
  14. sql = "select * from tb_order WHERE orderid LIKE '"+id+"%';";
  15. }
  16. ResultSet re = DbConnection.query(sql);
  17. ArrayList<tb_order> list = new ArrayList<tb_order>();
  18. try {
  19. while (re.next()) {
  20. tb_order tb = new tb_order();
  21. tb.setId(re.getInt(1));
  22. tb.setName(re.getString(2));
  23. tb.setPrice(re.getDouble(3));
  24. tb.setOrderID(re.getInt(4));
  25. tb.setDescinfo(re.getString(5));
  26. list.add(tb);
  27. }
  28. } catch (SQLException e) {
  29. e.printStackTrace();
  30. }
  31. Object[][] ob = new Object[list.size()][5];
  32. for (int i = 0; i < list.size(); i++) {
  33. ob[i][0] = list.get(i).getId();
  34. ob[i][1] = list.get(i).getName();
  35. ob[i][2] = list.get(i).getPrice();
  36. ob[i][3] = list.get(i).getOrderID();
  37. ob[i][4] = list.get(i).getDescinfo();
  38. }
  39. return ob;
  40. }
  41. //删除数据
  42. public int addData(int id) {
  43. String sql = "DELETE FROM tb_order WHERE id='"+id+"';";
  44. return DbConnection.updataInfo(sql);
  45. }
  46. }

com.ynavc.Vive

MainFrame.java

  1. package com.ynavc.Vive;
  2. import javax.swing.JFrame;
  3. import javax.swing.JLabel;
  4. import javax.swing.JOptionPane;
  5. import javax.swing.JScrollPane;
  6. import javax.swing.JTable;
  7. import java.awt.Font;
  8. import java.awt.event.ActionEvent;
  9. import java.awt.event.ActionListener;
  10. import javax.swing.JTextField;
  11. import javax.swing.table.DefaultTableModel;
  12. import com.ynavc.OrderDAO.Update;
  13. import javax.swing.JButton;
  14. public class MainFrame extends JFrame {
  15. private JTextField orderid;
  16. Update update = new Update();
  17. Object[] header = {"编号","商品名称","商品价格","订单编号","订单描述"};
  18. Object[][] data = update.getMainInfo("");
  19. DefaultTableModel df = new DefaultTableModel(data, header);
  20. public MainFrame() {
  21. super("物流a跟踪管理系统");
  22. this.setBounds(0, 0, 700, 500);
  23. getContentPane().setLayout(null);
  24. this.setLocationRelativeTo(null);
  25. this.setResizable(false);
  26. this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  27. JLabel title = new JLabel("物流跟踪管理系统");
  28. title.setFont(new Font("宋体", Font.BOLD, 40));
  29. title.setBounds(182, 13, 336, 50);
  30. getContentPane().add(title);
  31. JLabel orderid_text = new JLabel("订单编号");
  32. orderid_text.setBounds(14, 70, 72, 18);
  33. getContentPane().add(orderid_text);
  34. orderid = new JTextField();
  35. orderid.setBounds(80, 67, 179, 24);
  36. getContentPane().add(orderid);
  37. orderid.setColumns(10);
  38. JButton seach = new JButton("搜索");
  39. seach.setBounds(273, 66, 90, 27);
  40. getContentPane().add(seach);
  41. seach.addActionListener(new ActionListener() {
  42. @Override
  43. public void actionPerformed(ActionEvent e) {
  44. if (orderid.equals("")) {
  45. JOptionPane.showMessageDialog(null, "请输入要查询的订单编号!");
  46. } else {
  47. String id = orderid.getText();
  48. data = update.getMainInfo(id);
  49. df.setDataVector(data, header);
  50. }
  51. }
  52. });
  53. JTable jTable = new JTable(df);
  54. JScrollPane scrollPane = new JScrollPane(jTable);
  55. scrollPane.setBounds(14, 104, 666, 302);
  56. getContentPane().add(scrollPane);
  57. JButton delete = new JButton("删除");
  58. delete.setBounds(590, 425, 90, 27);
  59. getContentPane().add(delete);
  60. delete.addActionListener(new ActionListener() {
  61. @Override
  62. public void actionPerformed(ActionEvent e) {
  63. if (jTable.getSelectedColumn()<0) {
  64. JOptionPane.showMessageDialog(null, "请选择要删除的数据!");
  65. } else {
  66. int num = JOptionPane.showConfirmDialog(null, "您真的真的要删除吗?","温馨提示", 0,1);
  67. int id = Integer.parseInt(jTable.getValueAt(jTable.getSelectedRow(), 0).toString());
  68. if(num == JOptionPane.OK_OPTION){
  69. int result = update.addData(id);
  70. if (result>0) {
  71. JOptionPane.showMessageDialog(null, "删除成功!");
  72. orderid.setText("");
  73. } else {
  74. JOptionPane.showMessageDialog(null, "删除失败!");
  75. }
  76. }
  77. }
  78. }
  79. });
  80. }
  81. public static void main(String[] args) {
  82. new MainFrame().setVisible(true);
  83. }
  84. }

com.ynavc.Test

Test.java

  1. package com.ynavc.Test;
  2. import com.ynavc.Vive.MainFrame;
  3. public class Test {
  4. public static void main(String[] args) {
  5. new MainFrame().setVisible(true);
  6. }
  7. }

「物流跟踪管理系统」 · Java Swing + MySQL JDBC开发,美和易思结业考试机试试题的更多相关文章

  1. 「会员卡管理系统」 · Java Swing + MySQL JDBC开发

    目录 目录 一.语言和环境 二.实现功能 三.数据库设计 四.具体要求及推荐实现步骤 五.注意事项 六.评分标准 >>>实现代码: 数据库 com.ynavc.Bean com.yn ...

  2. 「影院售票系统」 · Java Swing + MySQL JDBC开发

    目录 文档说明: 一.语言和环境 二.实现功能 三.数据库设计 四.具体要求及推荐实现步骤 五.注意事项 六.评分标准 实现代码: 一.数据库: 二.Java Swing: com.ynavc.Bea ...

  3. 「超市管理系统——商品管理」 · Java Swing + MySQL JDBC开发

    项目下载:https://download.csdn.net/download/weixin_44893902/13715024 1.9元付费赞助下载:https://download.csdn.ne ...

  4. 「旅游信息管理系统」 · Java Swing + MySQL 开发

    代码写得烂,写博客纯属记录! 微信公众号:BugLass 码云仓库地址:https://gitee.com/ynavc/tourism_sys 源代码及文档打包下载:https://download. ...

  5. 「艺蜂酒店管理系统」 · Java Swing + mysql 开发 学生毕业设计项目

    Java  Swing在社会上基本用不到,但是任有学校拿来当做结课设计,只是博主在校期间的一个项目.如果在部署过程中有问题可以加我qq68872185. 码云仓库地址:https://gitee.co ...

  6. 云南农职 - 互联网技术学院 - 美和易思大一SCME JAVA高级结业考试机试试题

    目录 一.语言和环境 二.实现功能 1.文件复制功能(IO) 2.消息接受站建设 三.评分标准 四.实现代码 一.语言和环境 实现语言:Java. 开发工具:eclipse. 使用技术:IO流+网络编 ...

  7. 美和易思 - JAVA开发&移动互联网 阶段性教学效果检测考试机试试题【题目:维护洗衣店消费项数据】

    一. 语言和环境 1. 实现语言:Java 语言. 2. 环境要求:Eclipse 或 Myeclipse+MySQL. 二. 功能需求 利用 Java Swing 和 JDBC 技术维护洗衣店消费项 ...

  8. ☕【JVM技术指南】「JVM总结笔记」Java虚拟机垃圾回收认知和调优的"思南(司南)"【下部】

    承接上文 (完结撒花1-52系列)[JVM技术指南]「JVM总结笔记」Java虚拟机垃圾回收认知和调优的"思南(司南)"[上部] 并行收集器 并行收集器(也称为吞吐量收集器)是类似 ...

  9. Java Swing 图形界面开发(目录)

    Java Swing 图形界面开发(目录) 2017年05月30日 23:50:42 阅读数:5228 本文链接: http://blog.csdn.net/xietansheng/article/d ...

随机推荐

  1. oracle 拆分字符串

    WITH t AS (SELECT '1-2-3-4' a FROM dual)SELECT Regexp_Substr(a, '[^-]+', 1, LEVEL) i FROM tCONNECT B ...

  2. 京东消息中间件JMQ(转)

    http://blog.csdn.net/javahongxi/article/details/54411464 [京东技术]京东的MQ经历了JQ->AMQ->JMQ的发展,其中JQ的基于 ...

  3. 前端两大框架 vue 和 react 的区别

    1. 设计思想 vue: vue的官网介绍说vue是一种渐进式框架,采用自底向上增量开发的设计: react: 采用函数式编程,推崇纯组件,数据不可变,单向数据流: 2. 编写语法 vue: 采用单文 ...

  4. HTML DOM 对象 - 方法和属性

    一些常用的 HTML DOM 方法: getElementById(id) - 获取带有指定 id 的节点(元素) appendChild(node) - 插入新的子节点(元素) removeChil ...

  5. ssm中的模糊查询

    1.首先是数据层接口协议 public List<User> looks(String uname); 2.数据层实现 <select id="looks" re ...

  6. 测试工具_webbench

    目录 一.简介 二.例子 一.简介 Webbench是知名的网站压力测试工具,能测试处在相同硬件上,不同服务的性能以及不同硬件上同一个服务的运行状况. webbench的标准测试可以向我们展示服务器的 ...

  7. Boto3访问AWS资源操作总结(1)

    最近在工作中需要对AWS上的部分资源进行查询和交叉分析,虽然场景都比较简单,但是这种半机械的工作当然还是交给Python来搞比较合适.AWS为Python提供的SDK库叫做boto3,所以我们建立一个 ...

  8. 云主机tracert外网无返回需在安全组入方向加ICMP Time Exceeded TTLexpired in transit

  9. JAVA整合Redis使用redisTemplate清除库中的所有键值对数据

    JAVA整合Redis使用redisTemplate清除库中的所有键值对数据,清除所有缓存数据 Set<String> keys = redisTemplate.keys("*& ...

  10. 痞子衡嵌入式:把玩i.MXRT1062 TencentOS Tiny EVB_AIoT开发板(1) - 开发环境搭建与点灯

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT1062 TencentOS Tiny EVB_AIoT开发板环境搭建与点灯. 腾讯 TencentOS 团队于2021年1 ...