「物流跟踪管理系统」 · Java Swing + MySQL JDBC开发,美和易思结业考试机试试题
目录
文档说明:
一、语言和环境
- 实现语言:Java。
- 环境要求:MyEclipse、JDK 1.6 以上、MySQL。
二、技术要求
该系统采用 SWING 技术配合 JDBC 使用 JAVA 编程语言完成桌面应用开发。
三、功能要求
某电商公司为了方便客服查看用户的订单信息,需开发一个用户订单管理系统。要求本系统实现以下功能:
1、启动程序后进入主界面,显示所有订单信息,效果如图 1 所示:
2、在订单编号文本框中输入正确订单号显示该订单信息,如图 2:
3、选中某个订单后点击删除按钮,提示是否真的要删除,确定后删除该数据。如图 3:
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);
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);
}
}
com.ynavc.Test
Test.java
package com.ynavc.Test;
import com.ynavc.Vive.MainFrame;
public class Test {
public static void main(String[] args) {
new MainFrame().setVisible(true);
}
}
「物流跟踪管理系统」 · Java Swing + MySQL JDBC开发,美和易思结业考试机试试题的更多相关文章
- 「会员卡管理系统」 · Java Swing + MySQL JDBC开发
目录 目录 一.语言和环境 二.实现功能 三.数据库设计 四.具体要求及推荐实现步骤 五.注意事项 六.评分标准 >>>实现代码: 数据库 com.ynavc.Bean com.yn ...
- 「影院售票系统」 · Java Swing + MySQL JDBC开发
目录 文档说明: 一.语言和环境 二.实现功能 三.数据库设计 四.具体要求及推荐实现步骤 五.注意事项 六.评分标准 实现代码: 一.数据库: 二.Java Swing: com.ynavc.Bea ...
- 「超市管理系统——商品管理」 · Java Swing + MySQL JDBC开发
项目下载:https://download.csdn.net/download/weixin_44893902/13715024 1.9元付费赞助下载:https://download.csdn.ne ...
- 「旅游信息管理系统」 · Java Swing + MySQL 开发
代码写得烂,写博客纯属记录! 微信公众号:BugLass 码云仓库地址:https://gitee.com/ynavc/tourism_sys 源代码及文档打包下载:https://download. ...
- 「艺蜂酒店管理系统」 · Java Swing + mysql 开发 学生毕业设计项目
Java Swing在社会上基本用不到,但是任有学校拿来当做结课设计,只是博主在校期间的一个项目.如果在部署过程中有问题可以加我qq68872185. 码云仓库地址:https://gitee.co ...
- 云南农职 - 互联网技术学院 - 美和易思大一SCME JAVA高级结业考试机试试题
目录 一.语言和环境 二.实现功能 1.文件复制功能(IO) 2.消息接受站建设 三.评分标准 四.实现代码 一.语言和环境 实现语言:Java. 开发工具:eclipse. 使用技术:IO流+网络编 ...
- 美和易思 - JAVA开发&移动互联网 阶段性教学效果检测考试机试试题【题目:维护洗衣店消费项数据】
一. 语言和环境 1. 实现语言:Java 语言. 2. 环境要求:Eclipse 或 Myeclipse+MySQL. 二. 功能需求 利用 Java Swing 和 JDBC 技术维护洗衣店消费项 ...
- ☕【JVM技术指南】「JVM总结笔记」Java虚拟机垃圾回收认知和调优的"思南(司南)"【下部】
承接上文 (完结撒花1-52系列)[JVM技术指南]「JVM总结笔记」Java虚拟机垃圾回收认知和调优的"思南(司南)"[上部] 并行收集器 并行收集器(也称为吞吐量收集器)是类似 ...
- Java Swing 图形界面开发(目录)
Java Swing 图形界面开发(目录) 2017年05月30日 23:50:42 阅读数:5228 本文链接: http://blog.csdn.net/xietansheng/article/d ...
随机推荐
- virtualBox 系统移植
把virtualbox已经存在的系统移植到其他机器. 1.把系统如下文件考到一个安装了virtualbox的机器. 2.点击控制-->注册 然后浏览到复制的文件路径. 3.修改uuid 不管是l ...
- 数据源(Data Source
数据源(Data Source)顾名思义,数据的来源,是提供某种所需要数据的器件或原始媒体.在数据源中存储了所有建立数据库连接的信息.就像通过指定文件名称可以在文件系统中找到文件一样,通过提供正确的数 ...
- Spring中Bean的装配方式
一.基于xml的装配 Student.java package com.yh; public class Student implements People { public void breath( ...
- Ajax异步更新网页(使用jQuery)
jquery下载链接:https://pan.baidu.com/s/1KWQVpPV-RwhwGeBaXbZdVA 提取码:vn7x 一.页面代码 <!DOCTYPE html> < ...
- 【C/C++】散列/算法笔记4.2
先说一下我自己的理解. 我先给你N组数据,这个N组里可能有重复的! 然后我们先统计好了N组里面的独立的每个对应的出现了几次(相当于map,然后每项属性有出现了多少次的),用的是数组下标对应 现在我们给 ...
- [笔记] encoder-decoder NEURAL MACHINE TRANSLATION BY JOINTLY LEARNING TO ALIGN AND TRANSLATE
原文地址 :[1409.0473] Neural Machine Translation by Jointly Learning to Align and Translate (arxiv.org) ...
- noVNC实现浏览器远程访问Windows桌面
一.简介 1.VNC介绍 VNC (Virtual Network Console)是虚拟网络控制台的缩写.它 是一款优秀的远程控制工具软件.VNC 是在基于 UNIX 和 Linux 操作系统的免费 ...
- ctfshow 红包题 武穆遗书
偶然见看到这道题,就下载了看了看.确实是我自己的逆向能力不够,逆不动.但是我似乎找到了非预期... 下载程序,ida打开,发现不对.后来发现是加了upx壳,拿软件去一下.再次ida打开. 其中buff ...
- [Elasticsearch] ES 的Mapping 设计在实际场景中应用
背景 项目中有个需求是需要几个字段作为标签,统计各个标签的文档数量,同时支持分词后的全文检索功能. 原有的mapping设计: curl -XPUT http://ip:9200/meta_es_me ...
- 前端实现list排序
需求 针对list中某个字段,实现list的升序和降序 效果图 代码 我是用在angular1.X中项目的,根据list中的sort字段进行排序. # sort.html <style> ...