图 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) |
|
五、具体要求及推荐实现步骤
-
创建数据库和表
-
创建订单实体类
-
创建 BaseDAO 类完成数据库的连接和关闭
-
创建 OrderDAO 完成对订单的查询与删除功能
-
创建 MainFrame 类并添加相应组件,完成界面设计
-
在 MainFrame 中添加 JTable 完成数据展示。
-
在 MainFrame 中添加 Jbutton 完成数据删除
-
在 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 分 |
实现代码:
=====
一、数据库
– Table structure for tb_order
DROP TABLE IF EXISTS tb_order
;
CREATE TABLE tb_order
(
id
int(11) NOT NULL AUTO_INCREMENT,
name
varchar(20) NOT NULL,
price
decimal(10,2) NOT NULL,
orderid
varchar(20) DEFAULT NULL,
descinfo
varchar(100) DEFAULT NULL,
PRIMARY KEY (id
)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
– Records of tb_order
INSERT INTO tb_order
VALUES (‘1’, ‘iphones Max’, ‘8999.00’, ‘5325781’, ‘杨明金的订单’);
INSERT INTO tb_order
VALUES (‘2’, ‘小米10’, ‘3655.00’, ‘20201005’, ‘杨杨的订单’);
INSERT INTO tb_order
VALUES (‘3’, ‘华为荣耀10 =’, ‘3200.00’, ‘20201102’, ‘小白的订单’);
二、Java Swing
com.ynavc.Bean
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;
}
}
com.ynavc.BaseDAO
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();
}
}
}
com.ynavc.OrderDAO
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);
}
}
com.ynavc.Vive
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);
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
写在最后
还有一份JAVA核心知识点整理(PDF):JVM,JAVA集合,JAVA多线程并发,JAVA基础,Spring原理,微服务,Netty与RPC,网络,日志,Zookeeper,Kafka,RabbitMQ,Hbase,MongoDB,Cassandra,设计模式,负载均衡,数据库,一致性哈希,JAVA算法,数据结构,加密算法,分布式缓存,Hadoop,Spark,Storm,YARN,机器学习,云计算…
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
95%以上Java开发知识点,真正体系化!**
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
写在最后
还有一份JAVA核心知识点整理(PDF):JVM,JAVA集合,JAVA多线程并发,JAVA基础,Spring原理,微服务,Netty与RPC,网络,日志,Zookeeper,Kafka,RabbitMQ,Hbase,MongoDB,Cassandra,设计模式,负载均衡,数据库,一致性哈希,JAVA算法,数据结构,加密算法,分布式缓存,Hadoop,Spark,Storm,YARN,机器学习,云计算…
[外链图片转存中…(img-BwI0U5vX-1713518806601)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!