diff --git a/Supermarket/.classpath b/Supermarket/.classpath
index b9e2849..f2404ae 100644
--- a/Supermarket/.classpath
+++ b/Supermarket/.classpath
@@ -4,8 +4,8 @@
-
-
-
+
+
+
diff --git a/Supermarket/.idea/.gitignore b/Supermarket/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/Supermarket/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/Supermarket/.idea/dataSources.local.xml b/Supermarket/.idea/dataSources.local.xml
new file mode 100644
index 0000000..4d6a9c3
--- /dev/null
+++ b/Supermarket/.idea/dataSources.local.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+ #@
+ `
+
+
+ master_key
+ root
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Supermarket/.idea/dataSources.xml b/Supermarket/.idea/dataSources.xml
new file mode 100644
index 0000000..84f5765
--- /dev/null
+++ b/Supermarket/.idea/dataSources.xml
@@ -0,0 +1,12 @@
+
+
+
+
+ mysql.8
+ true
+ com.mysql.jdbc.Driver
+ jdbc:mysql://localhost:3306
+ $ProjectFileDir$
+
+
+
\ No newline at end of file
diff --git a/Supermarket/.idea/dataSources/5b23e521-053a-47c0-ae28-a98b513bc6ec.xml b/Supermarket/.idea/dataSources/5b23e521-053a-47c0-ae28-a98b513bc6ec.xml
new file mode 100644
index 0000000..6ba1d51
--- /dev/null
+++ b/Supermarket/.idea/dataSources/5b23e521-053a-47c0-ae28-a98b513bc6ec.xml
@@ -0,0 +1,1291 @@
+
+
+
+
+
+ big5
+ 1
+
+
+ big5
+
+
+ dec8
+ 1
+
+
+ dec8
+
+
+ cp850
+ 1
+
+
+ cp850
+
+
+ hp8
+ 1
+
+
+ hp8
+
+
+ koi8r
+ 1
+
+
+ koi8r
+
+
+ latin1
+
+
+ latin1
+ 1
+
+
+ latin1
+
+
+ latin1
+
+
+ latin1
+
+
+ latin1
+
+
+ latin1
+
+
+ latin1
+
+
+ latin2
+
+
+ latin2
+ 1
+
+
+ latin2
+
+
+ latin2
+
+
+ latin2
+
+
+ swe7
+ 1
+
+
+ swe7
+
+
+ ascii
+ 1
+
+
+ ascii
+
+
+ ujis
+ 1
+
+
+ ujis
+
+
+ sjis
+ 1
+
+
+ sjis
+
+
+ hebrew
+ 1
+
+
+ hebrew
+
+
+ tis620
+ 1
+
+
+ tis620
+
+
+ euckr
+ 1
+
+
+ euckr
+
+
+ koi8u
+ 1
+
+
+ koi8u
+
+
+ gb2312
+ 1
+
+
+ gb2312
+
+
+ greek
+ 1
+
+
+ greek
+
+
+ cp1250
+ 1
+
+
+ cp1250
+
+
+ cp1250
+
+
+ cp1250
+
+
+ cp1250
+
+
+ gbk
+ 1
+
+
+ gbk
+
+
+ latin5
+ 1
+
+
+ latin5
+
+
+ armscii8
+ 1
+
+
+ armscii8
+
+
+ utf8
+ 1
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ ucs2
+ 1
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ cp866
+ 1
+
+
+ cp866
+
+
+ keybcs2
+ 1
+
+
+ keybcs2
+
+
+ macce
+ 1
+
+
+ macce
+
+
+ macroman
+ 1
+
+
+ macroman
+
+
+ cp852
+ 1
+
+
+ cp852
+
+
+ latin7
+
+
+ latin7
+ 1
+
+
+ latin7
+
+
+ latin7
+
+
+ utf8mb4
+ 1
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ cp1251
+
+
+ cp1251
+
+
+ cp1251
+
+
+ cp1251
+ 1
+
+
+ cp1251
+
+
+ utf16
+ 1
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16le
+ 1
+
+
+ utf16le
+
+
+ cp1256
+ 1
+
+
+ cp1256
+
+
+ cp1257
+
+
+ cp1257
+
+
+ cp1257
+ 1
+
+
+ utf32
+ 1
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ binary
+ 1
+
+
+ geostd8
+ 1
+
+
+ geostd8
+
+
+ cp932
+ 1
+
+
+ cp932
+
+
+ eucjpms
+ 1
+
+
+ eucjpms
+
+
+ gb18030
+ 1
+
+
+ gb18030
+
+
+ gb18030
+
+
+ utf8_general_ci
+
+
+ latin1_swedish_ci
+
+
+ utf8_general_ci
+
+
+ latin1_swedish_ci
+
+
+ utf8_general_ci
+
+
+ utf8mb4_general_ci
+
+
+ utf8mb4_unicode_ci
+
+
+ localhost
+
+
+ localhost
+
+
+ localhost
+
+
+ InnoDB
+ utf8mb4_unicode_ci
+
+
+ InnoDB
+ utf8mb4_unicode_ci
+
+
+ InnoDB
+ utf8mb4_unicode_ci
+
+
+ InnoDB
+ utf8mb4_unicode_ci
+
+
+ InnoDB
+ utf8mb4_unicode_ci
+
+
+ InnoDB
+ utf8mb4_unicode_ci
+
+
+ InnoDB
+ utf8mb4_unicode_ci
+
+
+ InnoDB
+ utf8mb4_unicode_ci
+
+
+ InnoDB
+ utf8mb4_unicode_ci
+
+
+ InnoDB
+ utf8mb4_unicode_ci
+
+
+ InnoDB
+ utf8mb4_unicode_ci
+
+
+ varchar(20)|0s
+ 1
+ 1
+
+
+ varchar(20)|0s
+ 2
+
+
+ float|0s
+ 3
+
+
+ float|0s
+ 4
+
+
+ int(11)|0s
+ 5
+
+
+ int(11)|0s
+ 6
+
+
+ int(11)|0s
+ 7
+
+
+ varchar(20)|0s
+ 8
+
+
+ varchar(20)|0s
+ 9
+
+
+ float|0s
+ 10
+
+
+ int(11)|0s
+ 0
+ 11
+
+
+ supplyId
+ id
+ supplierinf
+
+
+ id2
+ id
+ prodcatalog
+
+
+ id
+ btree
+ 1
+
+
+ name
+ btree
+ 1
+
+
+ supplyId
+ btree
+
+
+ id2
+ btree
+
+
+ 1
+ 1
+ PRIMARY
+
+
+ name
+
+
+ varchar(30)|0s
+ 1
+ 1
+
+
+ float|0s
+ 2
+
+
+ timestamp|0s
+ CURRENT_TIMESTAMP
+ 1
+ CURRENT_TIMESTAMP
+ 3
+
+
+ varchar(15)|0s
+ 4
+
+
+ int(11)|0s
+ 2
+ 5
+
+
+ int(11)|0s
+ 1
+ 6
+
+
+ iNumber
+ btree
+ 1
+
+
+ 1
+ 1
+ PRIMARY
+
+
+ varchar(30)|0s
+ 1
+
+
+ varchar(20)|0s
+ 2
+
+
+ int(11)|0s
+ 3
+
+
+ float|0s
+ 4
+
+
+ iNumber
+ iNumber
+ inorder
+
+
+ iNumber
+ btree
+
+
+ varchar(20)|0s
+ 1
+ 1
+
+
+ varchar(20)|0s
+ 2
+
+
+ float|0s
+ 3
+
+
+ float|0s
+ 4
+
+
+ int(11)|0s
+ 5
+
+
+ int(11)|0s
+ 6
+
+
+ int(11)|0s
+ 7
+
+
+ varchar(20)|0s
+ 8
+
+
+ varchar(20)|0s
+ 9
+
+
+ float|0s
+ 10
+
+
+ int(11)|0s
+ 0
+ 11
+
+
+ supplyId
+ id
+ supplierinf
+
+
+ id2
+ id
+ prodcatalog
+
+
+ id
+ btree
+ 1
+
+
+ name
+ btree
+ 1
+
+
+ supplyId
+ btree
+
+
+ id2
+ btree
+
+
+ 1
+ 1
+ PRIMARY
+
+
+ name
+
+
+ varchar(30)|0s
+ 1
+ 1
+
+
+ float|0s
+ 2
+
+
+ timestamp|0s
+ CURRENT_TIMESTAMP
+ 1
+ CURRENT_TIMESTAMP
+ 3
+
+
+ varchar(15)|0s
+ 4
+
+
+ int(11)|0s
+ 1
+ 5
+
+
+ oNumber
+ btree
+ 1
+
+
+ 1
+ 1
+ PRIMARY
+
+
+ varchar(30)|0s
+ 1
+
+
+ varchar(20)|0s
+ 2
+
+
+ int(11)|0s
+ 3
+
+
+ float|0s
+ 4
+
+
+ oNumber
+ oNumber
+ outorder
+
+
+ oNumber
+ btree
+
+
+ varchar(20)|0s
+ 1
+ 1
+
+
+ varchar(20)|0s
+ 2
+
+
+ id
+ btree
+ 1
+
+
+ 1
+ 1
+ PRIMARY
+
+
+ varchar(20)|0s
+ 1
+ 1
+
+
+ varchar(20)|0s
+ 2
+
+
+ float|0s
+ 3
+
+
+ float|0s
+ 4
+
+
+ int(11)|0s
+ 5
+
+
+ int(11)|0s
+ 6
+
+
+ int(11)|0s
+ 7
+
+
+ varchar(20)|0s
+ 8
+
+
+ varchar(20)|0s
+ 9
+
+
+ float|0s
+ 10
+
+
+ int(11)|0s
+ 1
+ 11
+
+
+ id2
+ id
+ prodcatalog
+
+
+ id
+ btree
+ 1
+
+
+ name
+ btree
+ 1
+
+
+ id2
+ btree
+
+
+ 1
+ 1
+ PRIMARY
+
+
+ name
+
+
+ varchar(30)|0s
+ 1
+
+
+ timestamp|0s
+ CURRENT_TIMESTAMP
+ 1
+ CURRENT_TIMESTAMP
+ 2
+
+
+ varchar(20)|0s
+ 3
+
+
+ enum('+', '-')|0e
+ 4
+
+
+ int(11)|0s
+ 5
+
+
+ 9
+ int(11)|0s
+ 1
+ 1
+
+
+ varchar(30)|0s
+ 2
+
+
+ varchar(50)|0s
+ 3
+
+
+ varchar(11)|0s
+ 4
+
+
+ varchar(50)|0s
+ 5
+
+
+ int(11)|0s
+ 1
+ 6
+
+
+ id
+ btree
+ 1
+
+
+ name
+ btree
+ 1
+
+
+ 1
+ 1
+ PRIMARY
+
+
+ name
+
+
+ 6
+ int(11)|0s
+ 1
+ 1
+
+
+ varchar(15)|0s
+ 2
+
+
+ varchar(255)|0s
+ 3
+
+
+ varchar(20)|0s
+ 1
+ 4
+
+
+ varchar(11)|0s
+ 5
+
+
+ int(11)|0s
+ 1
+ 6
+
+
+ varchar(50)|0s
+ 7
+
+
+ int(11)|0s
+ 1
+ 8
+
+
+ id
+ btree
+ 1
+
+
+ name
+ btree
+ 1
+
+
+ 1
+ 1
+ PRIMARY
+
+
+ name
+
+
+
\ No newline at end of file
diff --git a/Supermarket/.idea/dataSources/5b23e521-053a-47c0-ae28-a98b513bc6ec/storage_v2/_src_/schema/information_schema.FNRwLQ.meta b/Supermarket/.idea/dataSources/5b23e521-053a-47c0-ae28-a98b513bc6ec/storage_v2/_src_/schema/information_schema.FNRwLQ.meta
new file mode 100644
index 0000000..1ff3db2
--- /dev/null
+++ b/Supermarket/.idea/dataSources/5b23e521-053a-47c0-ae28-a98b513bc6ec/storage_v2/_src_/schema/information_schema.FNRwLQ.meta
@@ -0,0 +1,2 @@
+#n:information_schema
+! [null, 0, null, null, -2147483648, -2147483648]
diff --git a/Supermarket/.idea/dataSources/5b23e521-053a-47c0-ae28-a98b513bc6ec/storage_v2/_src_/schema/mysql.osA4Bg.meta b/Supermarket/.idea/dataSources/5b23e521-053a-47c0-ae28-a98b513bc6ec/storage_v2/_src_/schema/mysql.osA4Bg.meta
new file mode 100644
index 0000000..86a53f1
--- /dev/null
+++ b/Supermarket/.idea/dataSources/5b23e521-053a-47c0-ae28-a98b513bc6ec/storage_v2/_src_/schema/mysql.osA4Bg.meta
@@ -0,0 +1,2 @@
+#n:mysql
+! [null, 0, null, null, -2147483648, -2147483648]
diff --git a/Supermarket/.idea/dataSources/5b23e521-053a-47c0-ae28-a98b513bc6ec/storage_v2/_src_/schema/performance_schema.kIw0nw.meta b/Supermarket/.idea/dataSources/5b23e521-053a-47c0-ae28-a98b513bc6ec/storage_v2/_src_/schema/performance_schema.kIw0nw.meta
new file mode 100644
index 0000000..9394db1
--- /dev/null
+++ b/Supermarket/.idea/dataSources/5b23e521-053a-47c0-ae28-a98b513bc6ec/storage_v2/_src_/schema/performance_schema.kIw0nw.meta
@@ -0,0 +1,2 @@
+#n:performance_schema
+! [null, 0, null, null, -2147483648, -2147483648]
diff --git a/Supermarket/.idea/dataSources/5b23e521-053a-47c0-ae28-a98b513bc6ec/storage_v2/_src_/schema/sys.zb4BAA.meta b/Supermarket/.idea/dataSources/5b23e521-053a-47c0-ae28-a98b513bc6ec/storage_v2/_src_/schema/sys.zb4BAA.meta
new file mode 100644
index 0000000..2f4470b
--- /dev/null
+++ b/Supermarket/.idea/dataSources/5b23e521-053a-47c0-ae28-a98b513bc6ec/storage_v2/_src_/schema/sys.zb4BAA.meta
@@ -0,0 +1,2 @@
+#n:sys
+! [null, 0, null, null, -2147483648, -2147483648]
diff --git a/Supermarket/.idea/misc.xml b/Supermarket/.idea/misc.xml
new file mode 100644
index 0000000..0f2ad58
--- /dev/null
+++ b/Supermarket/.idea/misc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Supermarket/.idea/modules.xml b/Supermarket/.idea/modules.xml
new file mode 100644
index 0000000..4b59c4b
--- /dev/null
+++ b/Supermarket/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Supermarket/.idea/vcs.xml b/Supermarket/.idea/vcs.xml
new file mode 100644
index 0000000..6c0b863
--- /dev/null
+++ b/Supermarket/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Supermarket/.settings/README.md b/Supermarket/.settings/README.md
deleted file mode 100644
index 4495ac6..0000000
--- a/Supermarket/.settings/README.md
+++ /dev/null
@@ -1,184 +0,0 @@
-
-
-
-
-## 写在前面
-
-初次引入可能会报错,所以食用前请重新引入好三个jar包,都在lib目录下
-
-
-
-其它修改
-
-> 1. 修改config/jdbc.properties里面连接mysql数据库的属性值为自己的。
->
-> 2. 进货功能的邮件发送方面,调用的类为**com.lingnan.supermarket.util/SendQQMailUtil.java**,在**com.lingnan.supermarket.view/InView.java**下调用,如图,照着SendQQMailUtil.java的属性修改即可,前提要开通QQEmail的SMTP服务(自行百度),调用位置如图。**请务必使用自己的SMTP服务方便邮件的发送与接收,如果你实在要用我的请务必将收件人邮箱改为自己的,否则你这边是看不到邮件是否发送成功(修改下面第三个参数的邮箱为自己的即可)!!!**
->
-> 
-
-
-
-整个项目的运行入口在**com.lingnan.supermarket.view/LoginView.java**下即main函数放的地方
-
-
-
-## 工具&环境tools
-
-> - 数据库:Mysql5.7
-> - java环境:Java1.8
-> - 编辑器:Eclipse
-> - 服务器:Tomcat8
-
-
-
-## 首页home
-
-
-
-
-
-## 人员管理manage
-
-权限0为超管,1为收货员,2为进货员
-
-
-
-
-
-## 进货系统import
-
-这里在添加要进货物时偷了懒只有选择编号加入。右上角添加按钮即可添加要进的货,右下角第一个按钮就是确认进货,点击后会发送邮件给相应的仓库,公司等,这里只是模拟。
-
-`进货流程就是`(理想情况,实际还需看需求)
-
-> 1. 进货员添加进货商品
-> 2. 确认进货订单后会发送邮件
-> 3. 供货方收到邮件后准备进货
-> 4. 商场收到货,进货员线下清点好后更改订单状态为已入库
-> 5. 系统库存自动增加
-
-
-
-### 添加进货
-
-
-
-### 更改进货数量
-
-
-
-### 确认进货订单&发送进货邮件
-
-
-
-
-
-
-
-
-
-
-
-### 供货方查看邮件内容
-
-没有用到表格或html,只是简单的字符串排版
-
-
-
-### 更改进货订单状态
-
-模拟当进货成功后,==修改订单状态==为已入库或者已取消,如果已入库后库存数量会自动增加
-
-
-
-
-
-
-
-
-
-
-
-## 收银系统cashier
-
-也是没扫描机器,所以只能模拟。
-
-`收银流程如下`
-
-> 1. 添加商品,如果库存不够会提示
-> 2. (手动)确认结账
-> 3. 支付成功后库存减少
-
-
-
-### 添加商品
-
-
-
-### 库存不够提示
-
-
-
-### 收银结账&支付成功
-
-
-
-
-
-
-
-
-
-
-
-### 首页更新
-
-
-
-
-
-## 商品库存storage
-
-### 总览
-
-
-
-### 库存日志
-
-#### 进货库存日志
-
-
-
-
-
-
-
-
-
-
-
-#### 收银库存日志
-
-
-
-
-
-
-
-
-
-
-
-## 供应商supplier
-
-
-
-
-
-## 商品目录catalog
-
-
-
-
-## 写在最后last
-一个很古老的 swing 项目
diff --git a/Supermarket/Supermarket.iml b/Supermarket/Supermarket.iml
new file mode 100644
index 0000000..ae3b314
--- /dev/null
+++ b/Supermarket/Supermarket.iml
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Supermarket/bin/.classpath b/Supermarket/bin/.classpath
index b9e2849..f2404ae 100644
--- a/Supermarket/bin/.classpath
+++ b/Supermarket/bin/.classpath
@@ -4,8 +4,8 @@
-
-
-
+
+
+
diff --git a/Supermarket/bin/.idea/.gitignore b/Supermarket/bin/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/Supermarket/bin/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/Supermarket/bin/.idea/dataSources.local.xml b/Supermarket/bin/.idea/dataSources.local.xml
new file mode 100644
index 0000000..4d6a9c3
--- /dev/null
+++ b/Supermarket/bin/.idea/dataSources.local.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+ #@
+ `
+
+
+ master_key
+ root
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Supermarket/bin/.idea/dataSources.xml b/Supermarket/bin/.idea/dataSources.xml
new file mode 100644
index 0000000..84f5765
--- /dev/null
+++ b/Supermarket/bin/.idea/dataSources.xml
@@ -0,0 +1,12 @@
+
+
+
+
+ mysql.8
+ true
+ com.mysql.jdbc.Driver
+ jdbc:mysql://localhost:3306
+ $ProjectFileDir$
+
+
+
\ No newline at end of file
diff --git a/Supermarket/bin/.idea/dataSources/5b23e521-053a-47c0-ae28-a98b513bc6ec.xml b/Supermarket/bin/.idea/dataSources/5b23e521-053a-47c0-ae28-a98b513bc6ec.xml
new file mode 100644
index 0000000..6ba1d51
--- /dev/null
+++ b/Supermarket/bin/.idea/dataSources/5b23e521-053a-47c0-ae28-a98b513bc6ec.xml
@@ -0,0 +1,1291 @@
+
+
+
+
+
+ big5
+ 1
+
+
+ big5
+
+
+ dec8
+ 1
+
+
+ dec8
+
+
+ cp850
+ 1
+
+
+ cp850
+
+
+ hp8
+ 1
+
+
+ hp8
+
+
+ koi8r
+ 1
+
+
+ koi8r
+
+
+ latin1
+
+
+ latin1
+ 1
+
+
+ latin1
+
+
+ latin1
+
+
+ latin1
+
+
+ latin1
+
+
+ latin1
+
+
+ latin1
+
+
+ latin2
+
+
+ latin2
+ 1
+
+
+ latin2
+
+
+ latin2
+
+
+ latin2
+
+
+ swe7
+ 1
+
+
+ swe7
+
+
+ ascii
+ 1
+
+
+ ascii
+
+
+ ujis
+ 1
+
+
+ ujis
+
+
+ sjis
+ 1
+
+
+ sjis
+
+
+ hebrew
+ 1
+
+
+ hebrew
+
+
+ tis620
+ 1
+
+
+ tis620
+
+
+ euckr
+ 1
+
+
+ euckr
+
+
+ koi8u
+ 1
+
+
+ koi8u
+
+
+ gb2312
+ 1
+
+
+ gb2312
+
+
+ greek
+ 1
+
+
+ greek
+
+
+ cp1250
+ 1
+
+
+ cp1250
+
+
+ cp1250
+
+
+ cp1250
+
+
+ cp1250
+
+
+ gbk
+ 1
+
+
+ gbk
+
+
+ latin5
+ 1
+
+
+ latin5
+
+
+ armscii8
+ 1
+
+
+ armscii8
+
+
+ utf8
+ 1
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ ucs2
+ 1
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ cp866
+ 1
+
+
+ cp866
+
+
+ keybcs2
+ 1
+
+
+ keybcs2
+
+
+ macce
+ 1
+
+
+ macce
+
+
+ macroman
+ 1
+
+
+ macroman
+
+
+ cp852
+ 1
+
+
+ cp852
+
+
+ latin7
+
+
+ latin7
+ 1
+
+
+ latin7
+
+
+ latin7
+
+
+ utf8mb4
+ 1
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ cp1251
+
+
+ cp1251
+
+
+ cp1251
+
+
+ cp1251
+ 1
+
+
+ cp1251
+
+
+ utf16
+ 1
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16le
+ 1
+
+
+ utf16le
+
+
+ cp1256
+ 1
+
+
+ cp1256
+
+
+ cp1257
+
+
+ cp1257
+
+
+ cp1257
+ 1
+
+
+ utf32
+ 1
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ binary
+ 1
+
+
+ geostd8
+ 1
+
+
+ geostd8
+
+
+ cp932
+ 1
+
+
+ cp932
+
+
+ eucjpms
+ 1
+
+
+ eucjpms
+
+
+ gb18030
+ 1
+
+
+ gb18030
+
+
+ gb18030
+
+
+ utf8_general_ci
+
+
+ latin1_swedish_ci
+
+
+ utf8_general_ci
+
+
+ latin1_swedish_ci
+
+
+ utf8_general_ci
+
+
+ utf8mb4_general_ci
+
+
+ utf8mb4_unicode_ci
+
+
+ localhost
+
+
+ localhost
+
+
+ localhost
+
+
+ InnoDB
+ utf8mb4_unicode_ci
+
+
+ InnoDB
+ utf8mb4_unicode_ci
+
+
+ InnoDB
+ utf8mb4_unicode_ci
+
+
+ InnoDB
+ utf8mb4_unicode_ci
+
+
+ InnoDB
+ utf8mb4_unicode_ci
+
+
+ InnoDB
+ utf8mb4_unicode_ci
+
+
+ InnoDB
+ utf8mb4_unicode_ci
+
+
+ InnoDB
+ utf8mb4_unicode_ci
+
+
+ InnoDB
+ utf8mb4_unicode_ci
+
+
+ InnoDB
+ utf8mb4_unicode_ci
+
+
+ InnoDB
+ utf8mb4_unicode_ci
+
+
+ varchar(20)|0s
+ 1
+ 1
+
+
+ varchar(20)|0s
+ 2
+
+
+ float|0s
+ 3
+
+
+ float|0s
+ 4
+
+
+ int(11)|0s
+ 5
+
+
+ int(11)|0s
+ 6
+
+
+ int(11)|0s
+ 7
+
+
+ varchar(20)|0s
+ 8
+
+
+ varchar(20)|0s
+ 9
+
+
+ float|0s
+ 10
+
+
+ int(11)|0s
+ 0
+ 11
+
+
+ supplyId
+ id
+ supplierinf
+
+
+ id2
+ id
+ prodcatalog
+
+
+ id
+ btree
+ 1
+
+
+ name
+ btree
+ 1
+
+
+ supplyId
+ btree
+
+
+ id2
+ btree
+
+
+ 1
+ 1
+ PRIMARY
+
+
+ name
+
+
+ varchar(30)|0s
+ 1
+ 1
+
+
+ float|0s
+ 2
+
+
+ timestamp|0s
+ CURRENT_TIMESTAMP
+ 1
+ CURRENT_TIMESTAMP
+ 3
+
+
+ varchar(15)|0s
+ 4
+
+
+ int(11)|0s
+ 2
+ 5
+
+
+ int(11)|0s
+ 1
+ 6
+
+
+ iNumber
+ btree
+ 1
+
+
+ 1
+ 1
+ PRIMARY
+
+
+ varchar(30)|0s
+ 1
+
+
+ varchar(20)|0s
+ 2
+
+
+ int(11)|0s
+ 3
+
+
+ float|0s
+ 4
+
+
+ iNumber
+ iNumber
+ inorder
+
+
+ iNumber
+ btree
+
+
+ varchar(20)|0s
+ 1
+ 1
+
+
+ varchar(20)|0s
+ 2
+
+
+ float|0s
+ 3
+
+
+ float|0s
+ 4
+
+
+ int(11)|0s
+ 5
+
+
+ int(11)|0s
+ 6
+
+
+ int(11)|0s
+ 7
+
+
+ varchar(20)|0s
+ 8
+
+
+ varchar(20)|0s
+ 9
+
+
+ float|0s
+ 10
+
+
+ int(11)|0s
+ 0
+ 11
+
+
+ supplyId
+ id
+ supplierinf
+
+
+ id2
+ id
+ prodcatalog
+
+
+ id
+ btree
+ 1
+
+
+ name
+ btree
+ 1
+
+
+ supplyId
+ btree
+
+
+ id2
+ btree
+
+
+ 1
+ 1
+ PRIMARY
+
+
+ name
+
+
+ varchar(30)|0s
+ 1
+ 1
+
+
+ float|0s
+ 2
+
+
+ timestamp|0s
+ CURRENT_TIMESTAMP
+ 1
+ CURRENT_TIMESTAMP
+ 3
+
+
+ varchar(15)|0s
+ 4
+
+
+ int(11)|0s
+ 1
+ 5
+
+
+ oNumber
+ btree
+ 1
+
+
+ 1
+ 1
+ PRIMARY
+
+
+ varchar(30)|0s
+ 1
+
+
+ varchar(20)|0s
+ 2
+
+
+ int(11)|0s
+ 3
+
+
+ float|0s
+ 4
+
+
+ oNumber
+ oNumber
+ outorder
+
+
+ oNumber
+ btree
+
+
+ varchar(20)|0s
+ 1
+ 1
+
+
+ varchar(20)|0s
+ 2
+
+
+ id
+ btree
+ 1
+
+
+ 1
+ 1
+ PRIMARY
+
+
+ varchar(20)|0s
+ 1
+ 1
+
+
+ varchar(20)|0s
+ 2
+
+
+ float|0s
+ 3
+
+
+ float|0s
+ 4
+
+
+ int(11)|0s
+ 5
+
+
+ int(11)|0s
+ 6
+
+
+ int(11)|0s
+ 7
+
+
+ varchar(20)|0s
+ 8
+
+
+ varchar(20)|0s
+ 9
+
+
+ float|0s
+ 10
+
+
+ int(11)|0s
+ 1
+ 11
+
+
+ id2
+ id
+ prodcatalog
+
+
+ id
+ btree
+ 1
+
+
+ name
+ btree
+ 1
+
+
+ id2
+ btree
+
+
+ 1
+ 1
+ PRIMARY
+
+
+ name
+
+
+ varchar(30)|0s
+ 1
+
+
+ timestamp|0s
+ CURRENT_TIMESTAMP
+ 1
+ CURRENT_TIMESTAMP
+ 2
+
+
+ varchar(20)|0s
+ 3
+
+
+ enum('+', '-')|0e
+ 4
+
+
+ int(11)|0s
+ 5
+
+
+ 9
+ int(11)|0s
+ 1
+ 1
+
+
+ varchar(30)|0s
+ 2
+
+
+ varchar(50)|0s
+ 3
+
+
+ varchar(11)|0s
+ 4
+
+
+ varchar(50)|0s
+ 5
+
+
+ int(11)|0s
+ 1
+ 6
+
+
+ id
+ btree
+ 1
+
+
+ name
+ btree
+ 1
+
+
+ 1
+ 1
+ PRIMARY
+
+
+ name
+
+
+ 6
+ int(11)|0s
+ 1
+ 1
+
+
+ varchar(15)|0s
+ 2
+
+
+ varchar(255)|0s
+ 3
+
+
+ varchar(20)|0s
+ 1
+ 4
+
+
+ varchar(11)|0s
+ 5
+
+
+ int(11)|0s
+ 1
+ 6
+
+
+ varchar(50)|0s
+ 7
+
+
+ int(11)|0s
+ 1
+ 8
+
+
+ id
+ btree
+ 1
+
+
+ name
+ btree
+ 1
+
+
+ 1
+ 1
+ PRIMARY
+
+
+ name
+
+
+
\ No newline at end of file
diff --git a/Supermarket/bin/.idea/dataSources/5b23e521-053a-47c0-ae28-a98b513bc6ec/storage_v2/_src_/schema/information_schema.FNRwLQ.meta b/Supermarket/bin/.idea/dataSources/5b23e521-053a-47c0-ae28-a98b513bc6ec/storage_v2/_src_/schema/information_schema.FNRwLQ.meta
new file mode 100644
index 0000000..1ff3db2
--- /dev/null
+++ b/Supermarket/bin/.idea/dataSources/5b23e521-053a-47c0-ae28-a98b513bc6ec/storage_v2/_src_/schema/information_schema.FNRwLQ.meta
@@ -0,0 +1,2 @@
+#n:information_schema
+! [null, 0, null, null, -2147483648, -2147483648]
diff --git a/Supermarket/bin/.idea/dataSources/5b23e521-053a-47c0-ae28-a98b513bc6ec/storage_v2/_src_/schema/mysql.osA4Bg.meta b/Supermarket/bin/.idea/dataSources/5b23e521-053a-47c0-ae28-a98b513bc6ec/storage_v2/_src_/schema/mysql.osA4Bg.meta
new file mode 100644
index 0000000..86a53f1
--- /dev/null
+++ b/Supermarket/bin/.idea/dataSources/5b23e521-053a-47c0-ae28-a98b513bc6ec/storage_v2/_src_/schema/mysql.osA4Bg.meta
@@ -0,0 +1,2 @@
+#n:mysql
+! [null, 0, null, null, -2147483648, -2147483648]
diff --git a/Supermarket/bin/.idea/dataSources/5b23e521-053a-47c0-ae28-a98b513bc6ec/storage_v2/_src_/schema/performance_schema.kIw0nw.meta b/Supermarket/bin/.idea/dataSources/5b23e521-053a-47c0-ae28-a98b513bc6ec/storage_v2/_src_/schema/performance_schema.kIw0nw.meta
new file mode 100644
index 0000000..9394db1
--- /dev/null
+++ b/Supermarket/bin/.idea/dataSources/5b23e521-053a-47c0-ae28-a98b513bc6ec/storage_v2/_src_/schema/performance_schema.kIw0nw.meta
@@ -0,0 +1,2 @@
+#n:performance_schema
+! [null, 0, null, null, -2147483648, -2147483648]
diff --git a/Supermarket/bin/.idea/dataSources/5b23e521-053a-47c0-ae28-a98b513bc6ec/storage_v2/_src_/schema/sys.zb4BAA.meta b/Supermarket/bin/.idea/dataSources/5b23e521-053a-47c0-ae28-a98b513bc6ec/storage_v2/_src_/schema/sys.zb4BAA.meta
new file mode 100644
index 0000000..2f4470b
--- /dev/null
+++ b/Supermarket/bin/.idea/dataSources/5b23e521-053a-47c0-ae28-a98b513bc6ec/storage_v2/_src_/schema/sys.zb4BAA.meta
@@ -0,0 +1,2 @@
+#n:sys
+! [null, 0, null, null, -2147483648, -2147483648]
diff --git a/Supermarket/bin/.idea/misc.xml b/Supermarket/bin/.idea/misc.xml
new file mode 100644
index 0000000..0f2ad58
--- /dev/null
+++ b/Supermarket/bin/.idea/misc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Supermarket/bin/.idea/modules.xml b/Supermarket/bin/.idea/modules.xml
new file mode 100644
index 0000000..4b59c4b
--- /dev/null
+++ b/Supermarket/bin/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Supermarket/bin/.idea/vcs.xml b/Supermarket/bin/.idea/vcs.xml
new file mode 100644
index 0000000..6c0b863
--- /dev/null
+++ b/Supermarket/bin/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Supermarket/bin/Supermarket.iml b/Supermarket/bin/Supermarket.iml
new file mode 100644
index 0000000..ae3b314
--- /dev/null
+++ b/Supermarket/bin/Supermarket.iml
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Supermarket/bin/com/lingnan/supermarket/componet/BGPanel.class b/Supermarket/bin/com/lingnan/supermarket/componet/BGPanel.class
index a1ff00c..a42e4a1 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/componet/BGPanel.class and b/Supermarket/bin/com/lingnan/supermarket/componet/BGPanel.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/dao/BufferService.class b/Supermarket/bin/com/lingnan/supermarket/dao/BufferService.class
index dfad2fa..e2012f8 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/dao/BufferService.class and b/Supermarket/bin/com/lingnan/supermarket/dao/BufferService.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/dao/SupplierInfService.class b/Supermarket/bin/com/lingnan/supermarket/dao/SupplierInfService.class
index c337822..289ea8f 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/dao/SupplierInfService.class and b/Supermarket/bin/com/lingnan/supermarket/dao/SupplierInfService.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/dao/UserService.class b/Supermarket/bin/com/lingnan/supermarket/dao/UserService.class
index ce92c16..b32b0db 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/dao/UserService.class and b/Supermarket/bin/com/lingnan/supermarket/dao/UserService.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/dao/impl/BufferImpl.class b/Supermarket/bin/com/lingnan/supermarket/dao/impl/BufferImpl.class
index 5bf6e53..0fd2a16 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/dao/impl/BufferImpl.class and b/Supermarket/bin/com/lingnan/supermarket/dao/impl/BufferImpl.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/dao/impl/SupplierInfImpl.class b/Supermarket/bin/com/lingnan/supermarket/dao/impl/SupplierInfImpl.class
index a321a9d..edc9cfc 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/dao/impl/SupplierInfImpl.class and b/Supermarket/bin/com/lingnan/supermarket/dao/impl/SupplierInfImpl.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/dao/impl/UserServiceImpl.class b/Supermarket/bin/com/lingnan/supermarket/dao/impl/UserServiceImpl.class
index 29d1685..90181f1 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/dao/impl/UserServiceImpl.class and b/Supermarket/bin/com/lingnan/supermarket/dao/impl/UserServiceImpl.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/dao/impl/inOrderServiceImpl.class b/Supermarket/bin/com/lingnan/supermarket/dao/impl/inOrderServiceImpl.class
index 69670d6..faf169f 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/dao/impl/inOrderServiceImpl.class and b/Supermarket/bin/com/lingnan/supermarket/dao/impl/inOrderServiceImpl.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/dao/impl/inRecordServiceImpl.class b/Supermarket/bin/com/lingnan/supermarket/dao/impl/inRecordServiceImpl.class
index e89921c..c7bf777 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/dao/impl/inRecordServiceImpl.class and b/Supermarket/bin/com/lingnan/supermarket/dao/impl/inRecordServiceImpl.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/dao/impl/outOrderServiceImpl.class b/Supermarket/bin/com/lingnan/supermarket/dao/impl/outOrderServiceImpl.class
index 491cf65..d1062dc 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/dao/impl/outOrderServiceImpl.class and b/Supermarket/bin/com/lingnan/supermarket/dao/impl/outOrderServiceImpl.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/dao/impl/outRecordServiceImpl.class b/Supermarket/bin/com/lingnan/supermarket/dao/impl/outRecordServiceImpl.class
index 4188416..c84096e 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/dao/impl/outRecordServiceImpl.class and b/Supermarket/bin/com/lingnan/supermarket/dao/impl/outRecordServiceImpl.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/dao/impl/prodCatalogImpl.class b/Supermarket/bin/com/lingnan/supermarket/dao/impl/prodCatalogImpl.class
index 607bf87..dfab04b 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/dao/impl/prodCatalogImpl.class and b/Supermarket/bin/com/lingnan/supermarket/dao/impl/prodCatalogImpl.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/dao/impl/productionImpl.class b/Supermarket/bin/com/lingnan/supermarket/dao/impl/productionImpl.class
index fafca5d..90154e9 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/dao/impl/productionImpl.class and b/Supermarket/bin/com/lingnan/supermarket/dao/impl/productionImpl.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/dao/impl/storageRecordImpl.class b/Supermarket/bin/com/lingnan/supermarket/dao/impl/storageRecordImpl.class
index d0a08e2..caa03f0 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/dao/impl/storageRecordImpl.class and b/Supermarket/bin/com/lingnan/supermarket/dao/impl/storageRecordImpl.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/dao/inOrderService.class b/Supermarket/bin/com/lingnan/supermarket/dao/inOrderService.class
index 1cd3cab..d11b0ef 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/dao/inOrderService.class and b/Supermarket/bin/com/lingnan/supermarket/dao/inOrderService.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/dao/inRecordService.class b/Supermarket/bin/com/lingnan/supermarket/dao/inRecordService.class
index bb88063..b3fa760 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/dao/inRecordService.class and b/Supermarket/bin/com/lingnan/supermarket/dao/inRecordService.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/dao/outOrderService.class b/Supermarket/bin/com/lingnan/supermarket/dao/outOrderService.class
index e6dcf80..a58d195 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/dao/outOrderService.class and b/Supermarket/bin/com/lingnan/supermarket/dao/outOrderService.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/dao/outRecordService.class b/Supermarket/bin/com/lingnan/supermarket/dao/outRecordService.class
index e2516c9..69ca6f6 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/dao/outRecordService.class and b/Supermarket/bin/com/lingnan/supermarket/dao/outRecordService.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/dao/prodCatalogService.class b/Supermarket/bin/com/lingnan/supermarket/dao/prodCatalogService.class
index 8f8b211..4a29c86 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/dao/prodCatalogService.class and b/Supermarket/bin/com/lingnan/supermarket/dao/prodCatalogService.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/dao/productionService.class b/Supermarket/bin/com/lingnan/supermarket/dao/productionService.class
index 244af84..daa22fc 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/dao/productionService.class and b/Supermarket/bin/com/lingnan/supermarket/dao/productionService.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/dao/storageRecordService.class b/Supermarket/bin/com/lingnan/supermarket/dao/storageRecordService.class
index 9ab36ae..eff8d7c 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/dao/storageRecordService.class and b/Supermarket/bin/com/lingnan/supermarket/dao/storageRecordService.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/dialog/ChangeStatusDialog$MyItemListener.class b/Supermarket/bin/com/lingnan/supermarket/dialog/ChangeStatusDialog$MyItemListener.class
index 6568787..1a2b49c 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/dialog/ChangeStatusDialog$MyItemListener.class and b/Supermarket/bin/com/lingnan/supermarket/dialog/ChangeStatusDialog$MyItemListener.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/dialog/ChangeStatusDialog.class b/Supermarket/bin/com/lingnan/supermarket/dialog/ChangeStatusDialog.class
index 8f700de..84beb05 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/dialog/ChangeStatusDialog.class and b/Supermarket/bin/com/lingnan/supermarket/dialog/ChangeStatusDialog.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/dialog/ChangeSumDialog.class b/Supermarket/bin/com/lingnan/supermarket/dialog/ChangeSumDialog.class
index d698a06..edc1b10 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/dialog/ChangeSumDialog.class and b/Supermarket/bin/com/lingnan/supermarket/dialog/ChangeSumDialog.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/dialog/CloseDialog.class b/Supermarket/bin/com/lingnan/supermarket/dialog/CloseDialog.class
index 3a9a5fd..ab82379 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/dialog/CloseDialog.class and b/Supermarket/bin/com/lingnan/supermarket/dialog/CloseDialog.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/dialog/InDialog$MyItemListener.class b/Supermarket/bin/com/lingnan/supermarket/dialog/InDialog$MyItemListener.class
index 7208b6b..3584b04 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/dialog/InDialog$MyItemListener.class and b/Supermarket/bin/com/lingnan/supermarket/dialog/InDialog$MyItemListener.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/dialog/InDialog.class b/Supermarket/bin/com/lingnan/supermarket/dialog/InDialog.class
index aa844ee..fb0be84 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/dialog/InDialog.class and b/Supermarket/bin/com/lingnan/supermarket/dialog/InDialog.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/dialog/OutDialog.class b/Supermarket/bin/com/lingnan/supermarket/dialog/OutDialog.class
index f9bbab3..48e52f6 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/dialog/OutDialog.class and b/Supermarket/bin/com/lingnan/supermarket/dialog/OutDialog.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/dialog/ProductionDialog$MyItemListener.class b/Supermarket/bin/com/lingnan/supermarket/dialog/ProductionDialog$MyItemListener.class
index d79aec9..c5db66f 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/dialog/ProductionDialog$MyItemListener.class and b/Supermarket/bin/com/lingnan/supermarket/dialog/ProductionDialog$MyItemListener.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/dialog/ProductionDialog$MyItemListener1.class b/Supermarket/bin/com/lingnan/supermarket/dialog/ProductionDialog$MyItemListener1.class
index 07ab296..dec8820 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/dialog/ProductionDialog$MyItemListener1.class and b/Supermarket/bin/com/lingnan/supermarket/dialog/ProductionDialog$MyItemListener1.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/dialog/ProductionDialog.class b/Supermarket/bin/com/lingnan/supermarket/dialog/ProductionDialog.class
index ffc84d9..eb9ddd9 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/dialog/ProductionDialog.class and b/Supermarket/bin/com/lingnan/supermarket/dialog/ProductionDialog.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/dialog/SupplierInfDialog.class b/Supermarket/bin/com/lingnan/supermarket/dialog/SupplierInfDialog.class
index be81895..d2ff2fe 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/dialog/SupplierInfDialog.class and b/Supermarket/bin/com/lingnan/supermarket/dialog/SupplierInfDialog.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/dialog/UserDialog$MyItemListener.class b/Supermarket/bin/com/lingnan/supermarket/dialog/UserDialog$MyItemListener.class
index a1eddcd..17d8f88 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/dialog/UserDialog$MyItemListener.class and b/Supermarket/bin/com/lingnan/supermarket/dialog/UserDialog$MyItemListener.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/dialog/UserDialog.class b/Supermarket/bin/com/lingnan/supermarket/dialog/UserDialog.class
index 09441ca..1c4ec24 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/dialog/UserDialog.class and b/Supermarket/bin/com/lingnan/supermarket/dialog/UserDialog.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/dialog/UserInfDialog$MyItemListener.class b/Supermarket/bin/com/lingnan/supermarket/dialog/UserInfDialog$MyItemListener.class
index d0aca31..47acaf6 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/dialog/UserInfDialog$MyItemListener.class and b/Supermarket/bin/com/lingnan/supermarket/dialog/UserInfDialog$MyItemListener.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/dialog/UserInfDialog.class b/Supermarket/bin/com/lingnan/supermarket/dialog/UserInfDialog.class
index d693610..f8fd576 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/dialog/UserInfDialog.class and b/Supermarket/bin/com/lingnan/supermarket/dialog/UserInfDialog.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/dto/Buffer.class b/Supermarket/bin/com/lingnan/supermarket/dto/Buffer.class
index 5bb2c40..9064935 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/dto/Buffer.class and b/Supermarket/bin/com/lingnan/supermarket/dto/Buffer.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/dto/InOrder.class b/Supermarket/bin/com/lingnan/supermarket/dto/InOrder.class
index 34206ca..01faf79 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/dto/InOrder.class and b/Supermarket/bin/com/lingnan/supermarket/dto/InOrder.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/dto/InRecord.class b/Supermarket/bin/com/lingnan/supermarket/dto/InRecord.class
index e0581f1..b6d813f 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/dto/InRecord.class and b/Supermarket/bin/com/lingnan/supermarket/dto/InRecord.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/dto/OutOrder.class b/Supermarket/bin/com/lingnan/supermarket/dto/OutOrder.class
index ae5a202..076b370 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/dto/OutOrder.class and b/Supermarket/bin/com/lingnan/supermarket/dto/OutOrder.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/dto/OutRecord.class b/Supermarket/bin/com/lingnan/supermarket/dto/OutRecord.class
index 76f9fb9..b638aa9 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/dto/OutRecord.class and b/Supermarket/bin/com/lingnan/supermarket/dto/OutRecord.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/dto/ProdCatalog.class b/Supermarket/bin/com/lingnan/supermarket/dto/ProdCatalog.class
index b126ac4..81f0fdf 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/dto/ProdCatalog.class and b/Supermarket/bin/com/lingnan/supermarket/dto/ProdCatalog.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/dto/Production.class b/Supermarket/bin/com/lingnan/supermarket/dto/Production.class
index 62ac419..dc5fc1e 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/dto/Production.class and b/Supermarket/bin/com/lingnan/supermarket/dto/Production.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/dto/StorageRecord.class b/Supermarket/bin/com/lingnan/supermarket/dto/StorageRecord.class
index a4310a3..d964bd7 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/dto/StorageRecord.class and b/Supermarket/bin/com/lingnan/supermarket/dto/StorageRecord.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/dto/SupplierInf.class b/Supermarket/bin/com/lingnan/supermarket/dto/SupplierInf.class
index 5575e24..5f442a4 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/dto/SupplierInf.class and b/Supermarket/bin/com/lingnan/supermarket/dto/SupplierInf.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/dto/User.class b/Supermarket/bin/com/lingnan/supermarket/dto/User.class
index 5d49207..c18a70e 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/dto/User.class and b/Supermarket/bin/com/lingnan/supermarket/dto/User.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/dto/base/BaseDomain.class b/Supermarket/bin/com/lingnan/supermarket/dto/base/BaseDomain.class
index 9168078..9784ef6 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/dto/base/BaseDomain.class and b/Supermarket/bin/com/lingnan/supermarket/dto/base/BaseDomain.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/dto/base/BaseProduction.class b/Supermarket/bin/com/lingnan/supermarket/dto/base/BaseProduction.class
index e04849a..f07322e 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/dto/base/BaseProduction.class and b/Supermarket/bin/com/lingnan/supermarket/dto/base/BaseProduction.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/dto/base/BsDomain.class b/Supermarket/bin/com/lingnan/supermarket/dto/base/BsDomain.class
index 0267cc1..c2b6a29 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/dto/base/BsDomain.class and b/Supermarket/bin/com/lingnan/supermarket/dto/base/BsDomain.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/table/InOrderTM.class b/Supermarket/bin/com/lingnan/supermarket/table/InOrderTM.class
index a1fe725..c9bf084 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/table/InOrderTM.class and b/Supermarket/bin/com/lingnan/supermarket/table/InOrderTM.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/table/InRecordTM.class b/Supermarket/bin/com/lingnan/supermarket/table/InRecordTM.class
index 8fddcf4..e5bda6a 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/table/InRecordTM.class and b/Supermarket/bin/com/lingnan/supermarket/table/InRecordTM.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/table/InTableModel.class b/Supermarket/bin/com/lingnan/supermarket/table/InTableModel.class
index 13f2dc7..d4ef217 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/table/InTableModel.class and b/Supermarket/bin/com/lingnan/supermarket/table/InTableModel.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/table/OutOrderTM.class b/Supermarket/bin/com/lingnan/supermarket/table/OutOrderTM.class
index 3dfd9c0..cb4ca6e 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/table/OutOrderTM.class and b/Supermarket/bin/com/lingnan/supermarket/table/OutOrderTM.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/table/OutRecordTM.class b/Supermarket/bin/com/lingnan/supermarket/table/OutRecordTM.class
index 4b80742..8c8a214 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/table/OutRecordTM.class and b/Supermarket/bin/com/lingnan/supermarket/table/OutRecordTM.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/table/OutTableModel.class b/Supermarket/bin/com/lingnan/supermarket/table/OutTableModel.class
index 7973663..369e79a 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/table/OutTableModel.class and b/Supermarket/bin/com/lingnan/supermarket/table/OutTableModel.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/table/ProdCatalogTM.class b/Supermarket/bin/com/lingnan/supermarket/table/ProdCatalogTM.class
index 70ae613..033463d 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/table/ProdCatalogTM.class and b/Supermarket/bin/com/lingnan/supermarket/table/ProdCatalogTM.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/table/StorageRecordTM.class b/Supermarket/bin/com/lingnan/supermarket/table/StorageRecordTM.class
index 902a226..e59a645 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/table/StorageRecordTM.class and b/Supermarket/bin/com/lingnan/supermarket/table/StorageRecordTM.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/table/StorageTableModel.class b/Supermarket/bin/com/lingnan/supermarket/table/StorageTableModel.class
index 2a7bf8c..e0b4d57 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/table/StorageTableModel.class and b/Supermarket/bin/com/lingnan/supermarket/table/StorageTableModel.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/table/SupplierTableModel.class b/Supermarket/bin/com/lingnan/supermarket/table/SupplierTableModel.class
index e9f134b..dddd3b2 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/table/SupplierTableModel.class and b/Supermarket/bin/com/lingnan/supermarket/table/SupplierTableModel.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/table/UserTableModel.class b/Supermarket/bin/com/lingnan/supermarket/table/UserTableModel.class
index 90a0b4e..ac589ef 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/table/UserTableModel.class and b/Supermarket/bin/com/lingnan/supermarket/table/UserTableModel.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/utils/CreateOrder.class b/Supermarket/bin/com/lingnan/supermarket/utils/CreateOrder.class
index 5a3c7d2..1c9a168 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/utils/CreateOrder.class and b/Supermarket/bin/com/lingnan/supermarket/utils/CreateOrder.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/utils/DateUtil.class b/Supermarket/bin/com/lingnan/supermarket/utils/DateUtil.class
index ea30457..1c69283 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/utils/DateUtil.class and b/Supermarket/bin/com/lingnan/supermarket/utils/DateUtil.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/utils/EmailTest.class b/Supermarket/bin/com/lingnan/supermarket/utils/EmailTest.class
index 531b4ec..41a0d5c 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/utils/EmailTest.class and b/Supermarket/bin/com/lingnan/supermarket/utils/EmailTest.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/utils/FontUtil.class b/Supermarket/bin/com/lingnan/supermarket/utils/FontUtil.class
index dc6c887..8c89bca 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/utils/FontUtil.class and b/Supermarket/bin/com/lingnan/supermarket/utils/FontUtil.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/utils/JDBCUtil.class b/Supermarket/bin/com/lingnan/supermarket/utils/JDBCUtil.class
index 114976a..cd65a76 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/utils/JDBCUtil.class and b/Supermarket/bin/com/lingnan/supermarket/utils/JDBCUtil.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/utils/SendQQMailUtil.class b/Supermarket/bin/com/lingnan/supermarket/utils/SendQQMailUtil.class
index d906483..2dfd88d 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/utils/SendQQMailUtil.class and b/Supermarket/bin/com/lingnan/supermarket/utils/SendQQMailUtil.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/utils/Test.class b/Supermarket/bin/com/lingnan/supermarket/utils/Test.class
index 66917e8..689a24d 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/utils/Test.class and b/Supermarket/bin/com/lingnan/supermarket/utils/Test.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/utils/TimeAndOrder.class b/Supermarket/bin/com/lingnan/supermarket/utils/TimeAndOrder.class
index c181e5b..61597cc 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/utils/TimeAndOrder.class and b/Supermarket/bin/com/lingnan/supermarket/utils/TimeAndOrder.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/utils/tplbTest$1.class b/Supermarket/bin/com/lingnan/supermarket/utils/tplbTest$1.class
index 6c860e5..4f46f87 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/utils/tplbTest$1.class and b/Supermarket/bin/com/lingnan/supermarket/utils/tplbTest$1.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/utils/tplbTest.class b/Supermarket/bin/com/lingnan/supermarket/utils/tplbTest.class
index 1dc2936..8eb35e4 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/utils/tplbTest.class and b/Supermarket/bin/com/lingnan/supermarket/utils/tplbTest.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/view/Demo4$1.class b/Supermarket/bin/com/lingnan/supermarket/view/Demo4$1.class
index 2c1c9b3..191fa02 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/view/Demo4$1.class and b/Supermarket/bin/com/lingnan/supermarket/view/Demo4$1.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/view/Demo4.class b/Supermarket/bin/com/lingnan/supermarket/view/Demo4.class
index 13d23f4..b24e113 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/view/Demo4.class and b/Supermarket/bin/com/lingnan/supermarket/view/Demo4.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/view/HomeView$1.class b/Supermarket/bin/com/lingnan/supermarket/view/HomeView$1.class
index 5739b08..b8f5682 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/view/HomeView$1.class and b/Supermarket/bin/com/lingnan/supermarket/view/HomeView$1.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/view/HomeView.class b/Supermarket/bin/com/lingnan/supermarket/view/HomeView.class
index 00180d7..4bdddef 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/view/HomeView.class and b/Supermarket/bin/com/lingnan/supermarket/view/HomeView.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/view/InView$MyItemListener.class b/Supermarket/bin/com/lingnan/supermarket/view/InView$MyItemListener.class
index 6214395..998ea75 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/view/InView$MyItemListener.class and b/Supermarket/bin/com/lingnan/supermarket/view/InView$MyItemListener.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/view/InView.class b/Supermarket/bin/com/lingnan/supermarket/view/InView.class
index 9f4f7db..c6d8d22 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/view/InView.class and b/Supermarket/bin/com/lingnan/supermarket/view/InView.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/view/LoginView.class b/Supermarket/bin/com/lingnan/supermarket/view/LoginView.class
index 94cca87..0265a99 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/view/LoginView.class and b/Supermarket/bin/com/lingnan/supermarket/view/LoginView.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/view/MainView.class b/Supermarket/bin/com/lingnan/supermarket/view/MainView.class
index 7d89e69..c9026fb 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/view/MainView.class and b/Supermarket/bin/com/lingnan/supermarket/view/MainView.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/view/Nimbus.class b/Supermarket/bin/com/lingnan/supermarket/view/Nimbus.class
index e288a9b..8416915 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/view/Nimbus.class and b/Supermarket/bin/com/lingnan/supermarket/view/Nimbus.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/view/OutView.class b/Supermarket/bin/com/lingnan/supermarket/view/OutView.class
index 28cc975..c4c0a8f 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/view/OutView.class and b/Supermarket/bin/com/lingnan/supermarket/view/OutView.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/view/ProdCatalogView$MyItemListener.class b/Supermarket/bin/com/lingnan/supermarket/view/ProdCatalogView$MyItemListener.class
index b070880..d5cd8dd 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/view/ProdCatalogView$MyItemListener.class and b/Supermarket/bin/com/lingnan/supermarket/view/ProdCatalogView$MyItemListener.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/view/ProdCatalogView.class b/Supermarket/bin/com/lingnan/supermarket/view/ProdCatalogView.class
index d0c154b..006a906 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/view/ProdCatalogView.class and b/Supermarket/bin/com/lingnan/supermarket/view/ProdCatalogView.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/view/StorageView.class b/Supermarket/bin/com/lingnan/supermarket/view/StorageView.class
index ad745bf..fdfbfcc 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/view/StorageView.class and b/Supermarket/bin/com/lingnan/supermarket/view/StorageView.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/view/SuperView.class b/Supermarket/bin/com/lingnan/supermarket/view/SuperView.class
index 990bb1e..97a7513 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/view/SuperView.class and b/Supermarket/bin/com/lingnan/supermarket/view/SuperView.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/view/SupplierView.class b/Supermarket/bin/com/lingnan/supermarket/view/SupplierView.class
index c265da6..2f20ef0 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/view/SupplierView.class and b/Supermarket/bin/com/lingnan/supermarket/view/SupplierView.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/view/UserView.class b/Supermarket/bin/com/lingnan/supermarket/view/UserView.class
index 690125d..7aac3e5 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/view/UserView.class and b/Supermarket/bin/com/lingnan/supermarket/view/UserView.class differ
diff --git a/Supermarket/bin/com/lingnan/supermarket/view/base/BaseView.class b/Supermarket/bin/com/lingnan/supermarket/view/base/BaseView.class
index 03d26cf..0f912c1 100644
Binary files a/Supermarket/bin/com/lingnan/supermarket/view/base/BaseView.class and b/Supermarket/bin/com/lingnan/supermarket/view/base/BaseView.class differ
diff --git a/Supermarket/bin/config/jdbc.properties b/Supermarket/bin/config/jdbc.properties
new file mode 100644
index 0000000..f14ded9
--- /dev/null
+++ b/Supermarket/bin/config/jdbc.properties
@@ -0,0 +1,4 @@
+driver=com.mysql.jdbc.Driver
+url=jdbc:mysql://localhost:3306/supermarket
+user=root
+password=123456
\ No newline at end of file
diff --git a/Supermarket/bin/jdbc.properties b/Supermarket/bin/jdbc.properties
index d36a59b..f14ded9 100644
--- a/Supermarket/bin/jdbc.properties
+++ b/Supermarket/bin/jdbc.properties
@@ -1,4 +1,4 @@
driver=com.mysql.jdbc.Driver
-url=jdbc:mysql://localhost:3306/Supermarket
+url=jdbc:mysql://localhost:3306/supermarket
user=root
password=123456
\ No newline at end of file
diff --git a/Supermarket/config/jdbc.properties b/Supermarket/config/jdbc.properties
index d36a59b..f14ded9 100644
--- a/Supermarket/config/jdbc.properties
+++ b/Supermarket/config/jdbc.properties
@@ -1,4 +1,4 @@
driver=com.mysql.jdbc.Driver
-url=jdbc:mysql://localhost:3306/Supermarket
+url=jdbc:mysql://localhost:3306/supermarket
user=root
password=123456
\ No newline at end of file
diff --git a/Supermarket/src/com/lingnan/supermarket/componet/BGPanel.java b/Supermarket/src/com/lingnan/supermarket/componet/BGPanel.java
index 8ea3ea2..a953dc7 100644
--- a/Supermarket/src/com/lingnan/supermarket/componet/BGPanel.java
+++ b/Supermarket/src/com/lingnan/supermarket/componet/BGPanel.java
@@ -1,35 +1,46 @@
package com.lingnan.supermarket.componet;
-
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
-
import javax.swing.JPanel;
public class BGPanel extends JPanel{
-
private Image image;
+
public BGPanel(Image image) {
+ // 定义一个构造方法,接收一个Image类型的参数image,用于创建BGPanel对象时传入要显示的图像
this.image = image;
-
+ // 将传入的参数image赋值给类的成员变量image
+
int width = Toolkit.getDefaultToolkit().getScreenSize().width;
+ // 通过默认工具包(Toolkit)获取屏幕的宽度,存储在局部变量width中
int height = Toolkit.getDefaultToolkit().getScreenSize().height;
+ // 通过默认工具包(Toolkit)获取屏幕的高度,存储在局部变量height中
this.setSize(width, height);
+ // 设置该面板(BGPanel)的大小为整个屏幕的大小,即宽度和高度分别为获取到的屏幕宽高
}
-
- public BGPanel(Image image,int width,int height) {
+
+ public BGPanel(Image image, int width, int height) {
+ // 定义另一个构造方法,接收一个Image类型的参数image以及表示宽度和高度的两个int类型参数,用于更灵活地创建BGPanel对象并指定其大小
this.image = image;
-
-
+ // 将传入的参数image赋值给类的成员变量image
+
this.setSize(width, height);
+ // 设置该面板(BGPanel)的大小为传入的指定宽度width和指定高度height
}
-
-
+
+
@Override
protected void paintComponent(Graphics g) {
+ // 重写JPanel类中的paintComponent方法,用于绘制面板上的图像
super.paintComponent(g);
- g.drawImage(image,0,0,getWidth(),getHeight(),this);
-
- }
+ // 调用父类(JPanel)的paintComponent方法,以确保完成一些默认的绘制操作,比如背景清除等
-}
+ g.drawImage(image, 0, 0, getWidth(), getHeight(), this);
+ // 使用传入的Graphics对象g在面板上绘制图像,参数含义如下:
+ // image:要绘制的图像对象,就是之前保存的成员变量image
+ // 0, 0:表示在面板上绘制图像的起始坐标(x坐标和y坐标),这里从面板的左上角(0, 0)位置开始绘制
+ // getWidth(), getHeight():获取当前面板的宽度和高度,用于指定绘制图像时按照面板的实际大小进行拉伸或缩放,确保图像填满整个面板
+ // this:表示图像观察者,用于接收图像绘制过程中的相关通知等
+ }
+}
\ No newline at end of file
diff --git a/Supermarket/src/com/lingnan/supermarket/dao/UserService.java b/Supermarket/src/com/lingnan/supermarket/dao/UserService.java
index 119d626..50ce43d 100644
--- a/Supermarket/src/com/lingnan/supermarket/dao/UserService.java
+++ b/Supermarket/src/com/lingnan/supermarket/dao/UserService.java
@@ -1,19 +1,27 @@
package com.lingnan.supermarket.dao;
-
import java.util.Vector;
import com.lingnan.supermarket.dto.User;
-public interface UserService {
-
- Vector allUser ();
- Vector findByrnameUser(User user);
- User login(String loginName,String password,int usuper);
+// 用户服务接口,定义了一系列与用户操作相关的方法
+public interface UserService {
+
+ // 查询所有用户的方法,返回一个存储用户对象的Vector数组
+ Vector allUser();
+
+ // 根据用户真实姓名查找用户的方法,返回一个存储匹配用户对象的Vector数组
+ Vector findByrnameUser(User user);
+
+ // 用户登录方法,传入用户名、密码和用户级别参数,返回一个User对象(可能表示登录成功的用户信息)
+ User login(String loginName, String password, int usuper);
+
+ // 添加用户的方法,传入一个User对象,返回一个整数表示添加操作是否成功(1表示成功,0表示失败)
int addUser(User user);
+
+ // 根据用户id删除用户记录的方法,传入用户id,返回一个整数表示删除操作是否成功(1表示成功,0表示失败)
int deleteUser(int id);
-
- //根据所给的id改
+
+ // 根据用户id更新用户信息的方法,传入一个User对象,返回一个整数表示更新操作是否成功(1表示成功,0表示失败)
int updateByIdUser(User user);
-
-}
+}
\ No newline at end of file
diff --git a/Supermarket/src/com/lingnan/supermarket/dao/impl/BufferImpl.java b/Supermarket/src/com/lingnan/supermarket/dao/impl/BufferImpl.java
index 35da321..6133106 100644
--- a/Supermarket/src/com/lingnan/supermarket/dao/impl/BufferImpl.java
+++ b/Supermarket/src/com/lingnan/supermarket/dao/impl/BufferImpl.java
@@ -1,122 +1,122 @@
package com.lingnan.supermarket.dao.impl;
+import com.lingnan.supermarket.dao.BufferService;
+import com.lingnan.supermarket.dto.Buffer;
+import com.lingnan.supermarket.dto.Production;
+import com.lingnan.supermarket.utils.JDBCUtil;
+
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
-import com.lingnan.supermarket.dao.BufferService;
-import com.lingnan.supermarket.dto.Buffer;
-import com.lingnan.supermarket.dto.Production;
-import com.lingnan.supermarket.utils.JDBCUtil;
-
+// 实现BufferService接口的缓冲区操作类
public class BufferImpl implements BufferService {
-
-
-
-
/*------------------------收银出货模块-----------------------*/
/*返回出货缓冲表所有delmark=1的记录并排序*/
+ // 获取所有出货缓冲区的记录
public Vector allOutBuffer(){
- Connection conn = JDBCUtil.getConn();
- PreparedStatement pstmt = null;
- ResultSet resultSet=null;
- Vector v = new Vector();
- Buffer Buffer;
+ Connection conn = JDBCUtil.getConn(); // 获取数据库连接
+ PreparedStatement pstmt = null; // 初始化预编译语句对象
+ ResultSet resultSet=null; // 初始化结果集对象
+ Vector v = new Vector(); // 创建一个向量用于存储Buffer对象
+ Buffer Buffer; // 声明一个Buffer对象
try {
- pstmt = conn.prepareStatement("select * from OutBuffer ");
- resultSet = pstmt.executeQuery();
- while(resultSet.next()) {
- Buffer = new Buffer();
- Buffer.setId(resultSet.getString("id"));
- Buffer.setName(resultSet.getString("name"));
- Buffer.setInPrice(resultSet.getFloat("inPrice"));
- Buffer.setOutPrice(resultSet.getFloat("OutPrice"));
- Buffer.setLife(resultSet.getInt("life"));
- Buffer.setSum(resultSet.getInt("sum"));
- Buffer.setSupplyId(resultSet.getInt("supplyId"));
- Buffer.setId2(resultSet.getString("id2"));
- Buffer.setName2(resultSet.getString("name2"));
- Buffer.setPrice(resultSet.getFloat("price"));
- Buffer.setDelmark(resultSet.getInt("delmark"));
- v.add(Buffer);
+ pstmt = conn.prepareStatement("select * from OutBuffer "); // 准备SQL查询语句
+ resultSet = pstmt.executeQuery(); // 执行查询
+ while(resultSet.next()) { // 遍历结果集
+ Buffer = new Buffer(); // 创建一个新的Buffer对象
+ Buffer.setId(resultSet.getString("id")); // 设置商品ID
+ Buffer.setName(resultSet.getString("name")); // 设置商品名称
+ Buffer.setInPrice(resultSet.getFloat("inPrice")); // 设置进货价格
+ Buffer.setOutPrice(resultSet.getFloat("OutPrice")); // 设置出货价格
+ Buffer.setLife(resultSet.getInt("life")); // 设置商品保质期
+ Buffer.setSum(resultSet.getInt("sum")); // 设置商品数量
+ Buffer.setSupplyId(resultSet.getInt("supplyId")); // 设置供应商ID
+ Buffer.setId2(resultSet.getString("id2")); // 设置商品类别ID
+ Buffer.setName2(resultSet.getString("name2")); // 设置商品类别名称
+ Buffer.setPrice(resultSet.getFloat("price")); // 设置商品总价
+ Buffer.setDelmark(resultSet.getInt("delmark")); // 设置删除标记
+ v.add(Buffer); // 将Buffer对象添加到向量中
}
-
- } catch (SQLException e) {
- e.printStackTrace();
- }finally {
- JDBCUtil.close(resultSet, pstmt, conn);
+
+ } catch (SQLException e) { // 捕获SQL异常
+ e.printStackTrace(); // 打印异常堆栈信息
+ }finally { // 无论是否发生异常,都会执行的代码块
+ JDBCUtil.close(resultSet, pstmt, conn); // 关闭结果集、预编译语句和数据库连接
}
- return v;
+ return v; // 返回存储所有Buffer对象的向量
}
/*通过id查找返回boolean*/
- public Buffer findOutBufferbyId(String id)
+ // 根据ID查找出货缓冲区的记录
+ public Buffer findOutBufferbyId(String id)
{
- boolean flag = false;
- Connection conn = JDBCUtil.getConn();
- PreparedStatement pstmt = null;
- ResultSet resultSet=null;
- Buffer buffer = new Buffer();
- try {
- pstmt = conn.prepareStatement("select * from OutBuffer where id=? ");
- pstmt.setString(1, id);
- resultSet = pstmt.executeQuery();
-
- if(resultSet.next()) {
- buffer.setId(resultSet.getString("id"));
- buffer.setName(resultSet.getString("name"));
- buffer.setInPrice(resultSet.getFloat("inPrice"));
- buffer.setOutPrice(resultSet.getFloat("OutPrice"));
- buffer.setLife(resultSet.getInt("life"));
- buffer.setSum(resultSet.getInt("sum"));
- buffer.setSupplyId(resultSet.getInt("supplyId"));
- buffer.setId2(resultSet.getString("id2"));
- buffer.setName2(resultSet.getString("name2"));
- buffer.setPrice(resultSet.getFloat("price"));
- buffer.setDelmark(resultSet.getInt("delmark"));
- flag = true;
- }else {
- return null;
+ boolean flag = false; // 初始化标志为false
+ Connection conn = JDBCUtil.getConn(); // 获取数据库连接
+ PreparedStatement pstmt = null; // 初始化预编译语句对象
+ ResultSet resultSet=null; // 初始化结果集对象
+ Buffer buffer = new Buffer(); // 创建一个新的Buffer对象
+ try {
+ pstmt = conn.prepareStatement("select * from OutBuffer where id=? "); // 准备SQL查询语句
+ pstmt.setString(1, id); // 设置查询参数
+ resultSet = pstmt.executeQuery(); // 执行查询
+
+ if(resultSet.next()) { // 如果找到对应记录
+ buffer.setId(resultSet.getString("id")); // 设置商品ID
+ buffer.setName(resultSet.getString("name")); // 设置商品名称
+ buffer.setInPrice(resultSet.getFloat("inPrice")); // 设置进货价格
+ buffer.setOutPrice(resultSet.getFloat("OutPrice")); // 设置出货价格
+ buffer.setLife(resultSet.getInt("life")); // 设置商品保质期
+ buffer.setSum(resultSet.getInt("sum")); // 设置商品数量
+ buffer.setSupplyId(resultSet.getInt("supplyId")); // 设置供应商ID
+ buffer.setId2(resultSet.getString("id2")); // 设置商品类别ID
+ buffer.setName2(resultSet.getString("name2")); // 设置商品类别名称
+ buffer.setPrice(resultSet.getFloat("price")); // 设置商品总价
+ buffer.setDelmark(resultSet.getInt("delmark")); // 设置删除标记
+ flag = true; // 设置标志为true
+ }else {
+ return null; // 没有找到该商品,返回null
+ }
+
+ } catch (SQLException e) { // 捕获SQL异常
+ e.printStackTrace(); // 打印异常堆栈信息
+ }finally { // 无论是否发生异常,都会执行的代码块
+ JDBCUtil.close(resultSet, pstmt, conn); // 关闭结果集、预编译语句和数据库连接
}
-
- } catch (SQLException e) {
- e.printStackTrace();
- }finally {
- JDBCUtil.close(resultSet, pstmt, conn);
+ return buffer; // 返回找到的Buffer对象
}
- return buffer;
-}
/*如果缓冲区没有那就把整条记录插入插入操作*/
+ // 向出货缓冲区添加新商品记录
public boolean addOutBufferNewProd(String id,int sum) {
- boolean flag = false;
- Connection conn = JDBCUtil.getConn();
- PreparedStatement pstmt = null;
- ResultSet resultSet=null;
+ boolean flag = false; // 初始化标志为false
+ Connection conn = JDBCUtil.getConn(); // 获取数据库连接
+ PreparedStatement pstmt = null; // 初始化预编译语句对象
+ ResultSet resultSet=null; // 初始化结果集对象
try {
- pstmt = conn.prepareStatement("call InsertOutBuffer(?,?) ");
- pstmt.setString(1, id);
- pstmt.setInt(2, sum);
-
-
- if( pstmt.executeUpdate()==1) {
- flag = true;
+ pstmt = conn.prepareStatement("call InsertOutBuffer(?,?) "); // 准备存储过程调用语句
+ pstmt.setString(1, id); // 设置商品ID参数
+ pstmt.setInt(2, sum); // 设置商品数量参数
+
+
+ if( pstmt.executeUpdate()==1) { // 执行更新操作
+ flag = true; // 如果成功执行插入,设置标志为true
}
-
- } catch (SQLException e) {
- e.printStackTrace();
- }finally {
- JDBCUtil.close(resultSet, pstmt, conn);
+
+ } catch (SQLException e) { // 捕获SQL异常
+ e.printStackTrace(); // 打印异常堆栈信息
+ }finally { // 无论是否发生异常,都会执行的代码块
+ JDBCUtil.close(resultSet, pstmt, conn); // 关闭结果集、预编译语句和数据库连接
}
- return flag;
+ return flag; // 返回插入结果标志
}
-
-
+
+
/*根据商品id获取sum和outprice
public Buffer findOutBufferSumAndOutPrice(String id) {
Buffer Buffer = new Buffer();
@@ -127,13 +127,13 @@ public class BufferImpl implements BufferService {
pstmt = conn.prepareStatement("select * from OutBuffer where id=? ");
pstmt.setString(1, id);
resultSet = pstmt.executeQuery();
-
+
if(resultSet.next()) {
Buffer.setSum(resultSet.getInt("sum"));
Buffer.setOutPrice(resultSet.getFloat("OutPrice"));
}
-
+
} catch (SQLException e) {
e.printStackTrace();
}finally {
@@ -143,320 +143,351 @@ public class BufferImpl implements BufferService {
}
*/
-
+
/*如果delmark是1,即是已经添加的商品*/
+ // 更新已存在商品的出货缓冲区记录
public boolean addOutBufferExeistProd(String id,int sum,Buffer buffer){
- boolean flag = false;
- Connection conn = JDBCUtil.getConn();
- PreparedStatement pstmt = null;
- ResultSet resultSet = null;;
+ boolean flag = false; // 初始化标志为false
+ Connection conn = JDBCUtil.getConn(); // 获取数据库连接
+ PreparedStatement pstmt = null; // 初始化预编译语句对象
+ ResultSet resultSet = null;; // 初始化结果集对象
try {
- pstmt = conn.prepareStatement("update OutBuffer set sum=?,price=? where id=? ");
- pstmt.setInt(1, sum+buffer.getSum());
- pstmt.setFloat(2,( sum+buffer.getSum()*buffer.getOutPrice()));
- pstmt.setString(3, id);
- if(pstmt.executeUpdate()==1) {
- flag = true;
+ pstmt = conn.prepareStatement("update OutBuffer set sum=?,price=? where id=? "); // 准备SQL更新语句
+ pstmt.setInt(1, sum+buffer.getSum()); // 设置更新后的商品数量
+ pstmt.setFloat(2,( sum+buffer.getSum()*buffer.getOutPrice())); // 设置更新后的商品总价
+ pstmt.setString(3, id); // 设置商品ID
+ if(pstmt.executeUpdate()==1) { // 执行更新操作
+ flag = true; // 如果成功执行更新,设置标志为true
}
-
- } catch (SQLException e) {
- e.printStackTrace();
- }finally {
- JDBCUtil.close(resultSet, pstmt, conn);
+ } catch (SQLException e) { // 捕获SQL异常
+ e.printStackTrace(); // 打印异常堆栈信息
+ }finally { // 无论是否发生异常,都会执行的代码块
+
+ JDBCUtil.close(resultSet, pstmt, conn); // 关闭结果集、预编译语句和数据库连接
}
- return flag;
+ return flag; // 返回更新结果标志
}
/*获得购物车总价*/
+ // 计算出货缓冲区所有商品的总价
public Float OutBufferAllPrice(){
- boolean flag = false;
- Connection conn = JDBCUtil.getConn();
- PreparedStatement pstmt = null;
- ResultSet resultSet = null;;
+ boolean flag = false; // 初始化标志为false
+ Connection conn = JDBCUtil.getConn(); // 获取数据库连接
+ PreparedStatement pstmt = null; // 初始化预编译语句对象
+ ResultSet resultSet = null;; // 初始化结果集对象
try {
- pstmt = conn.prepareStatement("select sum(price) from OutBuffer ");
- resultSet=pstmt.executeQuery();
- if(resultSet.next()) {
- return resultSet.getFloat("sum(price)");
+ pstmt = conn.prepareStatement("select sum(price) from OutBuffer "); // 准备SQL查询语句
+ resultSet=pstmt.executeQuery(); // 执行查询
+ if(resultSet.next()) { // 如果有结果
+ return resultSet.getFloat("sum(price)"); // 返回总价
}
-
- } catch (SQLException e) {
- e.printStackTrace();
- }finally {
- JDBCUtil.close(resultSet, pstmt, conn);
+ } catch (SQLException e) { // 捕获SQL异常
+ e.printStackTrace(); // 打印异常堆栈信息
+ }finally { // 无论是否发生异常,都会执行的代码块
+
+ JDBCUtil.close(resultSet, pstmt, conn); // 关闭结果集、预编译语句和数据库连接
}
- return null;
+ return null; // 如果没有结果,返回null
}
-
-
+
+
/*结账后对5个表进行操作*/
+ // 进行结账操作并更新数据库
public boolean Account(String number,String time,String id,int sum,Float price){
- boolean flag = false;
- Connection conn = JDBCUtil.getConn();
- PreparedStatement pstmt = null;
- ResultSet resultSet = null;;
+ boolean flag = false; // 初始化标志为false
+ Connection conn = JDBCUtil.getConn(); // 获取数据库连接
+ PreparedStatement pstmt = null; // 初始化预编译语句对象
+ ResultSet resultSet = null;; // 初始化结果集对象
try {
- pstmt = conn.prepareStatement("call Account(?,?,?,?,?)");
- pstmt.setString(1,number);
- pstmt.setString(2,time );
- pstmt.setString(3,id );
- pstmt.setInt(4,sum );
- pstmt.setFloat(5, price);
- if(pstmt.execute())
- flag = true;
+ pstmt = conn.prepareStatement("call Account(?,?,?,?,?)"); // 准备存储过程调用语句
+ pstmt.setString(1,number); // 设置订单号
+ pstmt.setString(2,time ); // 设置时间
+ pstmt.setString(3,id ); // 设置商品ID
+ pstmt.setInt(4,sum ); // 设置商品数量
+ pstmt.setFloat(5, price); // 设置商品总价
+ if(pstmt.execute()) // 执行更新操作
+ flag = true; // 如果成功执行更新,设置标志为true
-
- } catch (SQLException e) {
- e.printStackTrace();
- }finally {
- JDBCUtil.close(resultSet, pstmt, conn);
+
+ } catch (SQLException e) { // 捕获SQL异常
+ e.printStackTrace(); // 打印异常堆栈信息
+ }finally { // 无论是否发生异常,都会执行的代码块
+
+ JDBCUtil.close(resultSet, pstmt, conn); // 关闭结果集、预编译语句和数据库连接
}
- return flag;
+ return flag; // 返回更新结果标志
}
-
+
/*删除所有购物车*/
+ // 清空出货缓冲区
public boolean DelAllOutBuffer(){
- boolean flag = false;
- Connection conn = JDBCUtil.getConn();
- PreparedStatement pstmt = null;
- ResultSet resultSet = null;;
+ boolean flag = false; // 初始化标志为false
+ Connection conn = JDBCUtil.getConn(); // 获取数据库连接
+ PreparedStatement pstmt = null; // 初始化预编译语句对象
+ ResultSet resultSet = null;; // 初始化结果集对象
try {
- pstmt = conn.prepareStatement("delete from OutBuffer");
- if(pstmt.execute())
- flag = true;
+ pstmt = conn.prepareStatement("delete from OutBuffer"); // 准备SQL删除语句
+ if(pstmt.execute()) // 执行删除操作
+ flag = true; // 如果成功执行删除,设置标志为true
-
- } catch (SQLException e) {
- e.printStackTrace();
- }finally {
+ flag = true; // 如果成功执行删除,设置标志为true
- JDBCUtil.close(resultSet, pstmt, conn);
+
+ } catch (SQLException e) { // 捕获SQL异常
+ e.printStackTrace(); // 打印异常堆栈信息
+ }finally { // 无论是否发生异常,都会执行的代码块
+
+ JDBCUtil.close(resultSet, pstmt, conn); // 关闭结果集、预编译语句和数据库连接
}
- return flag;
+ return flag; // 返回删除结果标志
}
/*往订单表插入一条记录*/
+ // 向订单表插入一条新记录
public boolean InsertOutOrder(String number,Float allPrice,String time,String username){
- boolean flag = false;
- Connection conn = JDBCUtil.getConn();
- PreparedStatement pstmt = null;
- ResultSet resultSet = null;;
+ boolean flag = false; // 初始化标志为false
+ Connection conn = JDBCUtil.getConn(); // 获取数据库连接
+ PreparedStatement pstmt = null; // 初始化预编译语句对象
+ ResultSet resultSet = null;; // 初始化结果集对象
try {
- pstmt = conn.prepareStatement("insert into OutOrder values(?,?,?,?,?)");
- pstmt.setString(1, number);
- pstmt.setFloat(2, allPrice);
- pstmt.setString(3, time);
- pstmt.setString(4, username);
- pstmt.setInt(5, 1);
- if(pstmt.execute())
- flag = true;
+ pstmt = conn.prepareStatement("insert into OutOrder values(?,?,?,?,?)"); // 准备SQL插入语句
+ pstmt.setString(1, number); // 设置订单号
+ pstmt.setFloat(2, allPrice); // 设置总价
+ pstmt.setString(3, time); // 设置时间
+ pstmt.setString(4, username); // 设置用户名
+ pstmt.setInt(5, 1); // 设置删除标记
+ if(pstmt.execute()) // 执行插入操作
+ flag = true; // 如果成功执行插入,设置标志为true
-
- } catch (SQLException e) {
- e.printStackTrace();
- }finally {
+ } catch (SQLException e) { // 捕获SQL异常
+ e.printStackTrace(); // 打印异常堆栈信息
+ }finally { // 无论是否发生异常,都会执行的代码块
- JDBCUtil.close(resultSet, pstmt, conn);
+ JDBCUtil.close(resultSet, pstmt, conn); // 关闭结果集、预编译语句和数据库连接
}
- return flag;
+ return flag; // 返回插入结果标志
}
/*删除缓冲区OutBuffer一条记录通过id*/
+ // 根据ID删除出货缓冲区的一条记录
public boolean DelOutBufferById(String id) {
- boolean flag = false;
- Connection conn = JDBCUtil.getConn();
- PreparedStatement pstmt = null;
- ResultSet resultSet = null;
+ boolean flag = false; // 初始化标志为false
+ Connection conn = JDBCUtil.getConn(); // 获取数据库连接
+ PreparedStatement pstmt = null; // 初始化预编译语句对象
+ ResultSet resultSet = null; // 初始化结果集对象
try {
- pstmt = conn.prepareStatement("delete from OutBuffer where id=?");
- pstmt.setString(1, id);
- if(pstmt.executeUpdate()==1)
- flag = true;
-
- } catch (SQLException e) {
- e.printStackTrace();
- }finally {
+ pstmt = conn.prepareStatement("delete from OutBuffer where id=?"); // 准备SQL删除语句
+ pstmt.setString(1, id); // 设置商品ID
+ if(pstmt.executeUpdate()==1) // 执行删除操作
+ flag = true; // 如果成功执行删除,设置标志为true
- JDBCUtil.close(resultSet, pstmt, conn);
+ } catch (SQLException e) { // 捕获SQL异常
+ e.printStackTrace(); // 打印异常堆栈信息
+ }finally { // 无论是否发生异常,都会执行的代码块
+
+ JDBCUtil.close(resultSet, pstmt, conn); // 关闭结果集、预编译语句和数据库连接
}
- return flag;
+ return flag; // 返回删除结果标志
}
-
+
/*更改记录通过id*/
+ // 更新出货缓冲区记录
public boolean UpdateOutBufferById(String id,int sum) {
- boolean flag = false;
- Connection conn = JDBCUtil.getConn();
- PreparedStatement pstmt = null;
- ResultSet resultSet = null;
+ boolean flag = false; // 初始化标志为false
+ Connection conn = JDBCUtil.getConn(); // 获取数据库连接
+ PreparedStatement pstmt = null; // 初始化预编译语句对象
+ ResultSet resultSet = null; // 初始化结果集对象
try {
- pstmt = conn.prepareStatement("upadte OutBuffer set sum=? where id=?");
- pstmt.setInt(1, sum);
- pstmt.setString(2, id);
- if(pstmt.execute())
- flag = true;
-
- } catch (SQLException e) {
- e.printStackTrace();
- }finally {
+ pstmt = conn.prepareStatement("update OutBuffer set sum=? where id=?"); // 准备SQL更新语句
+ pstmt.setInt(1, sum); // 设置更新后的商品数量
+ pstmt.setString(2, id); // 设置商品ID
+ if(pstmt.execute()) // 执行更新操作
+ flag = true; // 如果成功执行更新,设置标志为true
- JDBCUtil.close(resultSet, pstmt, conn);
+ } catch (SQLException e) { // 捕获SQL异常
+ e.printStackTrace(); // 打印异常堆栈信息
+ }finally { // 无论是否发生异常,都会执行的代码块
+
+ JDBCUtil.close(resultSet, pstmt, conn); // 关闭结果集、预编译语句和数据库连接
}
- return flag;
+ return flag; // 返回更新结果标志
}
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
/*---------------------------进货模块----------------------------*/
+ /*编辑人程文锋2210461197*/
/*返回出货缓冲表所有delmark=1的记录并排序*/
+ // 获取所有进货缓冲区的记录
+ /**
+ * 从数据库中获取所有在库的商品信息,并返回一个包含Production对象的向量。
+ *
+ * @return 包含所有Production对象的向量
+ */
public Vector allInBuffer(){
- Connection conn = JDBCUtil.getConn();
- PreparedStatement pstmt = null;
- ResultSet resultSet=null;
- Vector v = new Vector();
- Production production;
+ Connection conn = JDBCUtil.getConn(); // 获取数据库连接
+ PreparedStatement pstmt = null; // 初始化预编译语句对象
+ ResultSet resultSet=null; // 初始化结果集对象
+ Vector v = new Vector(); // 创建一个向量用于存储Production对象
+ Production production; // 声明一个Production对象
try {
- pstmt = conn.prepareStatement("select * from InBuffer ");
- resultSet = pstmt.executeQuery();
- while(resultSet.next()) {
- production = new Production();
- production.setId(resultSet.getString("id"));
- production.setName(resultSet.getString("name"));
- production.setInPrice(resultSet.getFloat("inPrice"));
- production.setOutPrice(resultSet.getFloat("OutPrice"));
- production.setLife(resultSet.getInt("life"));
- production.setSum(resultSet.getInt("sum"));
- production.setSupplyId(resultSet.getInt("supplyId"));
- production.setId2(resultSet.getString("id2"));
- production.setName2(resultSet.getString("name2"));
- production.setPrice(resultSet.getFloat("price"));
- production.setDelmark(resultSet.getInt("delmark"));
- v.add(production);
+ pstmt = conn.prepareStatement("select * from InBuffer "); // 准备SQL查询语句
+ resultSet = pstmt.executeQuery(); // 执行查询
+ while(resultSet.next()) { // 遍历结果集
+ production = new Production(); // 创建一个新的Production对象
+ production.setId(resultSet.getString("id")); // 设置商品ID
+ production.setName(resultSet.getString("name")); // 设置商品名称
+ production.setInPrice(resultSet.getFloat("inPrice")); // 设置进货价格
+ production.setOutPrice(resultSet.getFloat("OutPrice")); // 设置出货价格
+ production.setLife(resultSet.getInt("life")); // 设置商品保质期
+ production.setSum(resultSet.getInt("sum")); // 设置商品数量
+ production.setSupplyId(resultSet.getInt("supplyId")); // 设置供应商ID
+ production.setId2(resultSet.getString("id2")); // 设置商品类别ID
+ production.setName2(resultSet.getString("name2")); // 设置商品类别名称
+ production.setPrice(resultSet.getFloat("price")); // 设置商品总价
+ production.setDelmark(resultSet.getInt("delmark")); // 设置删除标记
+ v.add(production); // 将Production对象添加到向量中
}
-
- } catch (SQLException e) {
- e.printStackTrace();
- }finally {
- JDBCUtil.close(resultSet, pstmt, conn);
+
+ } catch (SQLException e) { // 捕获SQL异常
+ e.printStackTrace(); // 打印异常堆栈信息
+ }finally { // 无论是否发生异常,都会执行的代码块
+ JDBCUtil.close(resultSet, pstmt, conn); // 关闭结果集、预编译语句和数据库连接
}
- return v;
+ return v; // 返回存储所有Production对象的向量
}
- /*通过id查找返回boolean*/
- public Buffer findInBufferbyId(String id)
+ /**
+ * 根据商品ID在数据库中查找对应的Buffer对象
+ * @param id 商品的ID
+ * @return 找到的Buffer对象,若未找到则返回null
+ */
+ public Buffer findInBufferbyId(String id)
{
- Connection conn = JDBCUtil.getConn();
- PreparedStatement pstmt = null;
- ResultSet resultSet=null;
- Buffer buffer = new Buffer();
- try {
- pstmt = conn.prepareStatement("select * from InBuffer where id=? ");
- pstmt.setString(1, id);
- resultSet = pstmt.executeQuery();
-
- if(resultSet.next()) {
- buffer.setId(resultSet.getString("id"));
- buffer.setName(resultSet.getString("name"));
- buffer.setInPrice(resultSet.getFloat("inPrice"));
- buffer.setOutPrice(resultSet.getFloat("OutPrice"));
- buffer.setLife(resultSet.getInt("life"));
- buffer.setSum(resultSet.getInt("sum"));
- buffer.setSupplyId(resultSet.getInt("supplyId"));
- buffer.setId2(resultSet.getString("id2"));
- buffer.setName2(resultSet.getString("name2"));
- buffer.setPrice(resultSet.getFloat("price"));
- buffer.setDelmark(resultSet.getInt("delmark"));
- }
- else {
- return null;
- }
+ Connection conn = JDBCUtil.getConn(); // 获取数据库连接
+ PreparedStatement pstmt = null; // 初始化预编译语句对象
+ ResultSet resultSet=null; // 初始化结果集对象
+ Buffer buffer = new Buffer(); // 创建一个新的Buffer对象
+ try {
+ pstmt = conn.prepareStatement("select * from InBuffer where id=? "); // 准备SQL查询语句
+ pstmt.setString(1, id); // 设置查询参数
+ resultSet = pstmt.executeQuery(); // 执行查询
+
+ if(resultSet.next()) { // 如果找到对应记录
+ buffer.setId(resultSet.getString("id")); // 设置商品ID
+ buffer.setName(resultSet.getString("name")); // 设置商品名称
+ buffer.setInPrice(resultSet.getFloat("inPrice")); // 设置进货价格
+ buffer.setOutPrice(resultSet.getFloat("OutPrice")); // 设置出货价格
+ buffer.setLife(resultSet.getInt("life")); // 设置商品保质期
+ buffer.setSum(resultSet.getInt("sum")); // 设置商品数量
+ buffer.setSupplyId(resultSet.getInt("supplyId")); // 设置供应商ID
+ buffer.setId2(resultSet.getString("id2")); // 设置商品类别ID
+ buffer.setName2(resultSet.getString("name2")); // 设置商品类别名称
+ buffer.setPrice(resultSet.getFloat("price")); // 设置商品总价
+ buffer.setDelmark(resultSet.getInt("delmark")); // 设置删除标记
+ }
+ else {
+ return null; // 没有找到该商品,返回null
+ }
+
-
- } catch (SQLException e) {
- e.printStackTrace();
- }finally {
- JDBCUtil.close(resultSet, pstmt, conn);
+ } catch (SQLException e) { // 捕获SQL异常
+ e.printStackTrace(); // 打印异常堆栈信息
+ }finally { // 无论是否发生异常,都会执行的代码块
+ JDBCUtil.close(resultSet, pstmt, conn); // 关闭结果集、预编译语句和数据库连接
+ }
+ return buffer; // 返回找到的Buffer对象
}
- return buffer;
-}
+
+
/*如果缓冲区没有那就把整条记录插入插入操作*/
+// 向进货缓冲区添加新商品记录
+ /**
+ * 添加新商品记录到进货缓冲区
+ *
+ * @param id 商品ID
+ * @param sum 商品数量
+ * @return 返回插入操作是否成功的标志
+ */
public boolean addInBufferNewProd(String id,int sum) {
- boolean flag = false;
- Connection conn = JDBCUtil.getConn();
- PreparedStatement pstmt = null;
- ResultSet resultSet=null;
+ boolean flag = false; // 初始化标志为false
+ Connection conn = JDBCUtil.getConn(); // 获取数据库连接
+ PreparedStatement pstmt = null; // 初始化预编译语句对象
+ ResultSet resultSet=null; // 初始化结果集对象
try {
- pstmt = conn.prepareStatement("call InsertInBuffer(?,?) ");
- pstmt.setString(1, id);
- pstmt.setInt(2, sum);
-
-
- if( pstmt.executeUpdate()==1) {
- flag = true;
+ pstmt = conn.prepareStatement("call InsertInBuffer(?,?) "); // 准备存储过程调用语句
+ pstmt.setString(1, id); // 设置商品ID参数
+ pstmt.setInt(2, sum); // 设置商品数量参数
+
+
+ if( pstmt.executeUpdate()==1) { // 执行更新操作
+ flag = true; // 如果成功执行插入,设置标志为true
}
-
- } catch (SQLException e) {
- e.printStackTrace();
- }finally {
- JDBCUtil.close(resultSet, pstmt, conn);
+
+ } catch (SQLException e) { // 捕获SQL异常
+ e.printStackTrace(); // 打印异常堆栈信息
+ }finally { // 无论是否发生异常,都会执行的代码块
+ JDBCUtil.close(resultSet, pstmt, conn); // 关闭结果集、预编译语句和数据库连接
}
- return flag;
+ return flag; // 返回插入结果标志
}
-
+
+
+
+ // 向进货缓冲区插入一条记录
+ // 此方法负责将一个商品记录插入到进货缓冲区中,并返回插入操作是否成功的标志
public boolean insertInBuffer(Production p) {
- boolean flag = false;
- Connection conn = JDBCUtil.getConn();
- PreparedStatement pstmt = null;
- ResultSet resultSet=null;
- try {
- pstmt = conn.prepareStatement("insert into InBuffer values(?,?,?,?,?,?,?,?,?,?,?)");
- pstmt.setString(1, p.getId());
- pstmt.setString(2, p.getName());
- pstmt.setFloat(3, p.getInPrice());
- pstmt.setFloat(4, p.getOutPrice());
- pstmt.setInt(5, p.getLife());
- pstmt.setInt(6, p.getSum());
- pstmt.setInt(7, p.getSupplyId());
- pstmt.setString(8, p.getId2());
- pstmt.setString(9, p.getName2());
- pstmt.setFloat(10,p.getPrice());
- pstmt.setInt(11, 1);
- pstmt.executeUpdate();
-
-
- if( pstmt.execute()) {
- flag = true;
- }
+ boolean flag = false; // 初始化标志为false
+ Connection conn = JDBCUtil.getConn(); // 获取数据库连接
+ PreparedStatement pstmt = null; // 初始化预编译语句对象
+ ResultSet resultSet=null; // 初始化结果集对象
+ try {
+ pstmt = conn.prepareStatement("insert into InBuffer values(?,?,?,?,?,?,?,?,?,?,?)"); // 准备SQL插入语句
+ pstmt.setString(1, p.getId()); // 设置商品ID
+ pstmt.setString(2, p.getName()); // 设置商品名称
+ pstmt.setFloat(3, p.getInPrice()); // 设置进货价格
+ pstmt.setFloat(4, p.getOutPrice()); // 设置出货价格
+ pstmt.setInt(5, p.getLife()); // 设置商品保质期
+ pstmt.setInt(6, p.getSum()); // 设置商品数量
+ pstmt.setInt(7, p.getSupplyId()); // 设置供应商ID
+ pstmt.setString(8, p.getId2()); // 设置商品类别ID
+ pstmt.setString(9, p.getName2()); // 设置商品类别名称
+ pstmt.setFloat(10,p.getPrice()); // 设置商品总价
+ pstmt.setInt(11, 1); // 设置删除标记
+ pstmt.executeUpdate(); // 执行插入操作
+
+
+ if( pstmt.execute()) { // 如果成功执行插入,设置标志为true
+ flag = true;
+ }
+
-
- } catch (SQLException e) {
- e.printStackTrace();
- }finally {
- JDBCUtil.close(resultSet, pstmt, conn);
+ } catch (SQLException e) { // 捕获SQL异常
+ e.printStackTrace(); // 打印异常堆栈信息
+ }finally { // 无论是否发生异常,都会执行的代码块
+ JDBCUtil.close(resultSet, pstmt, conn); // 关闭结果集、预编译语句和数据库连接
+ }
+ return flag; // 返回插入结果标志
}
- return flag;
-}
-
+
/* 根据商品id获取sum和outprice
public Buffer findInBufferSumAndInPrice(String id) {
Buffer Buffer = new Buffer();
@@ -467,13 +498,13 @@ public class BufferImpl implements BufferService {
pstmt = conn.prepareStatement("select * from InBuffer where id=? ");
pstmt.setString(1, id);
resultSet = pstmt.executeQuery();
-
+
if(resultSet.next()) {
Buffer.setSum(resultSet.getInt("sum"));
Buffer.setOutPrice(resultSet.getFloat("InPrice"));
}
-
+
} catch (SQLException e) {
e.printStackTrace();
}finally {
@@ -481,165 +512,206 @@ public class BufferImpl implements BufferService {
}
return Buffer;
}*/
-
/*如果delmark是1,即是已经添加的商品*/
+ // 更新已存在商品的进货缓冲区记录
+ // 方法名称:addInBufferExeistProd
+ // 参数:
+ // id - 商品的唯一标识符
+ // sum - 要添加的商品数量
+ // buffer - 包含商品信息的缓冲区对象
+ // 返回值:布尔值,表示更新操作是否成功
public boolean addInBufferExeistProd(String id,int sum,Buffer buffer){
- boolean flag = false;
- Connection conn = JDBCUtil.getConn();
- PreparedStatement pstmt = null;
- ResultSet resultSet = null;;
+ boolean flag = false; // 初始化标志为false
+ Connection conn = JDBCUtil.getConn(); // 获取数据库连接
+ PreparedStatement pstmt = null; // 初始化预编译语句对象
+ ResultSet resultSet = null;; // 初始化结果集对象
try {
- pstmt = conn.prepareStatement("update InBuffer set sum=?,price=? where id=? ");
- pstmt.setInt(1, sum+buffer.getSum());
- pstmt.setFloat(2,( sum+buffer.getSum()*buffer.getInPrice()));
- pstmt.setString(3, id);
- if(pstmt.executeUpdate()==1) {
- flag = true;
+ pstmt = conn.prepareStatement("update InBuffer set sum=?,price=? where id=? "); // 准备SQL更新语句
+ pstmt.setInt(1, sum+buffer.getSum()); // 设置更新后的商品数量
+ pstmt.setFloat(2,( sum+buffer.getSum()*buffer.getInPrice())); // 设置更新后的商品总价
+ pstmt.setString(3, id); // 设置商品ID
+ if(pstmt.executeUpdate()==1) { // 执行更新操作
+ flag = true; // 如果成功执行更新,设置标志为true
}
-
- } catch (SQLException e) {
- e.printStackTrace();
- }finally {
+ } catch (SQLException e) { // 捕获SQL异常
+ e.printStackTrace(); // 打印异常堆栈信息
+ }finally { // 无论是否发生异常,都会执行的代码块
- JDBCUtil.close(resultSet, pstmt, conn);
+ JDBCUtil.close(resultSet, pstmt, conn); // 关闭结果集、预编译语句和数据库连接
}
- return flag;
+ return flag; // 返回更新结果标志
}
+
/*获得购物车总价*/
+// 计算进货缓冲区所有商品的总价
+// 此方法用于计算数据库中进货缓冲区所有商品的总价,并返回相应的浮点数值。
public Float InBufferAllPrice(){
- boolean flag = false;
- Connection conn = JDBCUtil.getConn();
- PreparedStatement pstmt = null;
- ResultSet resultSet = null;;
+ boolean flag = false; // 初始化标志为false
+ Connection conn = JDBCUtil.getConn(); // 获取数据库连接
+ PreparedStatement pstmt = null; // 初始化预编译语句对象
+ ResultSet resultSet = null;; // 初始化结果集对象
try {
- pstmt = conn.prepareStatement("select sum(price) from InBuffer ");
- resultSet=pstmt.executeQuery();
- if(resultSet.next()) {
- return resultSet.getFloat("sum(price)");
+ pstmt = conn.prepareStatement("select sum(price) from InBuffer "); // 准备SQL查询语句
+ resultSet=pstmt.executeQuery(); // 执行查询
+ if(resultSet.next()) { // 如果有结果
+ return resultSet.getFloat("sum(price)"); // 返回总价
}
-
- } catch (SQLException e) {
- e.printStackTrace();
- }finally {
- JDBCUtil.close(resultSet, pstmt, conn);
+ } catch (SQLException e) { // 捕获SQL异常
+ e.printStackTrace(); // 打印异常堆栈信息
+ }finally { // 无论是否发生异常,都会执行的代码块
+
+ JDBCUtil.close(resultSet, pstmt, conn); // 关闭结果集、预编译语句和数据库连接
}
- return null;
+ return null; // 如果没有结果,返回null
}
-
-
+
+
/*结账后对5个表进行操作*/
+// 进行进货时的记录操作
+ /**
+ * 在库存中记录进货信息的函数
+ *
+ * @param number 订单号
+ * @param time 进货时间
+ * @param id 商品ID
+ * @param sum 商品数量
+ * @param price 商品总价
+ * @return 返回操作是否成功的标志
+ */
public boolean Stock(String number,String time,String id,int sum,Float price){
- boolean flag = false;
- Connection conn = JDBCUtil.getConn();
- PreparedStatement pstmt = null;
- ResultSet resultSet = null;;
+ boolean flag = false; // 初始化标志为false
+ Connection conn = JDBCUtil.getConn(); // 获取数据库连接
+ PreparedStatement pstmt = null; // 初始化预编译语句对象
+ ResultSet resultSet = null;; // 初始化结果集对象
try {
- pstmt = conn.prepareStatement("call Stock(?,?,?,?,?)");
- pstmt.setString(1,number);
- pstmt.setString(2,time );
- pstmt.setString(3,id );
- pstmt.setInt(4,sum );
- pstmt.setFloat(5, price);
- if(pstmt.executeUpdate()==1)
- flag = true;
-
-
-
- } catch (SQLException e) {
- e.printStackTrace();
- }finally {
-
- JDBCUtil.close(resultSet, pstmt, conn);
+ pstmt = conn.prepareStatement("call Stock(?,?,?,?,?)"); // 准备存储过程调用语句
+ pstmt.setString(1,number); // 设置订单号
+ pstmt.setString(2,time ); // 设置时间
+ pstmt.setString(3,id ); // 设置商品ID
+ pstmt.setInt(4,sum ); // 设置商品数量
+ pstmt.setFloat(5, price); // 设置商品总价
+ if(pstmt.executeUpdate()==1) // 执行更新操作
+ flag = true; // 如果成功执行更新,设置标志为true
+ } catch (SQLException e) { // 捕获SQL异常
+ e.printStackTrace(); // 打印异常堆栈信息
+ }finally { // 无论是否发生异常,都会执行的代码块
+
+ JDBCUtil.close(resultSet, pstmt, conn); // 关闭结果集、预编译语句和数据库连接
}
- return flag;
+ return flag; // 返回更新结果标志
}
-
+
+
/*删除所有购物车*/
+ // 清空进货缓冲区
+ /**
+ * 从数据库中删除进货缓冲区中的所有记录
+ *
+ * @return 返回操作是否成功的标志
+ */
public boolean DelAllInBuffer(){
- boolean flag = false;
- Connection conn = JDBCUtil.getConn();
- PreparedStatement pstmt = null;
- ResultSet resultSet = null;;
+ boolean flag = false; // 初始化标志为false
+ Connection conn = JDBCUtil.getConn(); // 获取数据库连接
+ PreparedStatement pstmt = null; // 初始化预编译语句对象
+ ResultSet resultSet = null;; // 初始化结果集对象
try {
- pstmt = conn.prepareStatement("delete from InBuffer");
- if(pstmt.execute())
- flag = true;
-
-
-
- } catch (SQLException e) {
- e.printStackTrace();
- }finally {
-
- JDBCUtil.close(resultSet, pstmt, conn);
+ pstmt = conn.prepareStatement("delete from InBuffer"); // 准备SQL删除语句
+ if(pstmt.execute()) // 执行删除操作
+ flag = true; // 如果成功执行删除,设置标志为true
+ } catch (SQLException e) { // 捕获SQL异常
+ e.printStackTrace(); // 打印异常堆栈信息
+ }finally { // 无论是否发生异常,都会执行的代码块
+
+ JDBCUtil.close(resultSet, pstmt, conn); // 关闭结果集、预编译语句和数据库连接
}
- return flag;
+ return flag; // 返回删除结果标志
}
-
/*删除缓冲区InBuffer一条记录通过id*/
+ // 根据ID删除进货缓冲区的一条记录
+ /**
+ * 根据商品ID删除进货缓冲区中的一条记录
+ *
+ * @param id 商品ID
+ * @return 删除操作是否成功的标志
+ */
public boolean DelInBufferById(String id) {
- boolean flag = false;
- Connection conn = JDBCUtil.getConn();
- PreparedStatement pstmt = null;
- ResultSet resultSet = null;;
+ boolean flag = false; // 初始化标志为false
+ Connection conn = JDBCUtil.getConn(); // 获取数据库连接
+ PreparedStatement pstmt = null; // 初始化预编译语句对象
+ ResultSet resultSet = null;; // 初始化结果集对象
try {
- pstmt = conn.prepareStatement("delete from InBuffer where id=?");
- pstmt.setString(1, id);
- if(pstmt.executeUpdate()==1)
- flag = true;
-
- } catch (SQLException e) {
- e.printStackTrace();
- }finally {
+ pstmt = conn.prepareStatement("delete from InBuffer where id=?"); // 准备SQL删除语句
+ pstmt.setString(1, id); // 设置商品ID
+ if(pstmt.executeUpdate()==1) // 执行删除操作
+ flag = true; // 如果成功执行删除,设置标志为true
- JDBCUtil.close(resultSet, pstmt, conn);
+ } catch (SQLException e) { // 捕获SQL异常
+ e.printStackTrace(); // 打印异常堆栈信息
+ }finally { // 无论是否发生异常,都会执行的代码块
+
+ JDBCUtil.close(resultSet, pstmt, conn); // 关闭结果集、预编译语句和数据库连接
}
- return flag;
+ return flag; // 返回删除结果标志
}
-
-
-
- /*更改记录通过id*/
- public boolean UpdateInBufferById(String id,int sum) {
- boolean flag = false;
- Connection conn = JDBCUtil.getConn();
- PreparedStatement pstmt = null;
- ResultSet resultSet = null;
+
+
+
+
+
+ /*更改记录通过id*/
+ // 更新进货缓冲区记录
+ /**
+ * 更新进货缓冲区中指定商品ID的数量。
+ *
+ * @param id 商品的ID
+ * @param sum 更新后的商品数量
+ * @return 返回更新是否成功的标志
+ */
+public boolean UpdateInBufferById(String id,int sum) {
+ boolean flag = false; // 初始化标志为false
+ Connection conn = JDBCUtil.getConn(); // 获取数据库连接
+ PreparedStatement pstmt = null; // 初始化预编译语句对象
+ ResultSet resultSet = null; // 初始化结果集对象
try {
- pstmt = conn.prepareStatement("upadte InBuffer set sum=? where id=?");
- pstmt.setInt(1, sum);
- pstmt.setString(2, id);
- if(pstmt.execute())
- flag = true;
-
- } catch (SQLException e) {
- e.printStackTrace();
- }finally {
+ pstmt = conn.prepareStatement("update InBuffer set sum=? where id=?"); // 准备SQL更新语句
+ pstmt.setInt(1, sum); // 设置更新后的商品数量
+ pstmt.setString(2, id); // 设置商品ID
+ if(pstmt.execute()) // 执行更新操作
+ flag = true; // 如果成功执行更新,设置标志为true
- JDBCUtil.close(resultSet, pstmt, conn);
+ } catch (SQLException e) { // 捕获SQL异常
+ e.printStackTrace(); // 打印异常堆栈信息
+ }finally { // 无论是否发生异常,都会执行的代码块
+
+ JDBCUtil.close(resultSet, pstmt, conn); // 关闭结果集、预编译语句和数据库连接
}
- return flag;
+ return flag; // 返回更新结果标志
}
+
+ /**
+ * 按照顺序插入订单
+ *
+ * @param number 订单编号
+ * @param allPrice 总价格
+ * @param time 订单时间
+ * @param username 用户名
+ * @return 返回插入成功与否
+ */
@Override
public boolean InsertInOrder(String number, Float allPrice, String time, String username) {
// TODO Auto-generated method stub
+ // 插入订单的操作
return false;
}
-
-
-
-
}
-
-
diff --git a/Supermarket/src/com/lingnan/supermarket/dao/impl/SupplierInfImpl.java b/Supermarket/src/com/lingnan/supermarket/dao/impl/SupplierInfImpl.java
index 26b2dab..c35f6b1 100644
--- a/Supermarket/src/com/lingnan/supermarket/dao/impl/SupplierInfImpl.java
+++ b/Supermarket/src/com/lingnan/supermarket/dao/impl/SupplierInfImpl.java
@@ -1,5 +1,9 @@
package com.lingnan.supermarket.dao.impl;
+import com.lingnan.supermarket.dao.SupplierInfService;
+import com.lingnan.supermarket.dto.SupplierInf;
+import com.lingnan.supermarket.utils.JDBCUtil;
+
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
@@ -8,211 +12,255 @@ import java.util.ArrayList;
import java.util.Iterator;
import java.util.Vector;
-import com.lingnan.supermarket.dao.SupplierInfService;
-import com.lingnan.supermarket.dto.ProdCatalog;
-import com.lingnan.supermarket.dto.SupplierInf;
-import com.lingnan.supermarket.dto.User;
-import com.lingnan.supermarket.utils.JDBCUtil;
+/**
+ * 供应商信息服务实现类
+ * @cwf 2210461197 2024/12/1
+ */
+
+// 实现供应商信息服务接口的类
public class SupplierInfImpl implements SupplierInfService{
+ // 查询所有供应商信息的方法
@Override
+ // 该方法用于查找所有未被标记为删除的供应商信息,返回一个供应商信息的向量
+ // 此方法连接数据库,执行查询,并将结果封装为供应商信息对象的向量
public Vector findAllSupplierInf() {
- Vector supplierInfs = new Vector();
- Connection conn = JDBCUtil.getConn();
- PreparedStatement preparedStatement = null;
- ResultSet resultSet=null;
-
- String SQL = "select * from supplierInf where delmark = 1";
-
+ Vector supplierInfs = new Vector(); // 创建一个向量用于存储供应商信息
+ Connection conn = JDBCUtil.getConn(); // 获取数据库连接
+ PreparedStatement preparedStatement = null; // 初始化预编译语句对象
+ ResultSet resultSet=null; // 初始化结果集对象
+
+ String SQL = "select * from supplierInf where delmark = 1"; // SQL查询语句,选择未被标记为删除的供应商信息
+
try {
- preparedStatement = conn.prepareStatement(SQL);
- resultSet = preparedStatement.executeQuery();
- while(resultSet.next()) {
- SupplierInf supplierInf = new SupplierInf();
- supplierInf.setId(resultSet.getInt("id"));
- supplierInf.setName(resultSet.getString("name"));
- supplierInf.setContact(resultSet.getString("contact"));
- supplierInf.setEmail(resultSet.getString("email"));
- supplierInf.setAddress(resultSet.getString("address"));
- supplierInf.setDelmark(resultSet.getInt("delmark"));
- supplierInfs.add(supplierInf);
+ preparedStatement = conn.prepareStatement(SQL); // 准备SQL语句
+ resultSet = preparedStatement.executeQuery(); // 执行查询
+ while(resultSet.next()) { // 遍历结果集
+ SupplierInf supplierInf = new SupplierInf(); // 创建一个新的供应商信息对象
+ supplierInf.setId(resultSet.getInt("id")); // 设置供应商ID
+ supplierInf.setName(resultSet.getString("name")); // 设置供应商名称
+ supplierInf.setContact(resultSet.getString("contact")); // 设置供应商联系人
+ supplierInf.setEmail(resultSet.getString("email")); // 设置供应商邮箱
+ supplierInf.setAddress(resultSet.getString("address")); // 设置供应商地址
+ supplierInf.setDelmark(resultSet.getInt("delmark")); // 设置删除标记
+ supplierInfs.add(supplierInf); // 将供应商信息对象添加到向量中
}
-
- } catch (SQLException e) {
- e.printStackTrace();
- } finally {
- JDBCUtil.close(resultSet, preparedStatement, conn);
+
+ } catch (SQLException e) { // 捕获SQL异常
+ e.printStackTrace(); // 打印异常堆栈信息
+ } finally { // 无论是否发生异常,都会执行的代码块
+ // 关闭数据库连接和相关资源
+ JDBCUtil.close(resultSet, preparedStatement, conn); // 关闭结果集、预编译语句和数据库连接
}
- return supplierInfs;
+ return supplierInfs; // 返回存储所有供应商信息的向量
}
+ // 根据供应商名称查询供应商信息的方法
@Override
+ // 定义一个查找供应商信息的方法,根据传入的供应商对象进行查询
+ /**
+ * 根据供应商名称查找供应商信息
+ * @param supplierInf 包含供应商名称的供应商信息对象
+ * @return 返回包含查询到的供应商信息的向量
+ */
public Vector findByNameSupplierInf(SupplierInf supplierInf) {
//SupplierInf supplierInf = new SupplierInf();
- Connection conn = JDBCUtil.getConn();
- Vector v = new Vector<>();
- System.out.println(supplierInf.getName());
- PreparedStatement preparedStatement = null;
- ResultSet resultSet = null;
+ Connection conn = JDBCUtil.getConn(); // 获取数据库连接
+ Vector v = new Vector<>(); // 创建一个向量用于存储供应商信息
+ System.out.println(supplierInf.getName()); // 打印供应商名称
+ PreparedStatement preparedStatement = null; // 初始化预编译语句对象
+ ResultSet resultSet = null; // 初始化结果集对象
try {
- if(!supplierInf.getName().equals("")){
- String s='%'+supplierInf.getName()+'%';
- preparedStatement = conn.prepareStatement("select * from supplierInf where name like ? and delmark = 1");
- preparedStatement.setString(1, s);
+ if(!supplierInf.getName().equals("")){ // 如果供应商名称不为空
+ String s='%'+supplierInf.getName()+'%'; // 构建模糊查询字符串
+ preparedStatement = conn.prepareStatement("select * from supplierInf where name like ? and delmark = 1"); // 准备SQL查询语句
+ preparedStatement.setString(1, s); // 设置查询参数
}else
- preparedStatement = conn.prepareStatement("select * from supplierInf where delmark = 1");
- resultSet = preparedStatement.executeQuery();
- while (resultSet.next()) {
- supplierInf = new SupplierInf();
- supplierInf.setId(resultSet.getInt("id"));
- supplierInf.setName(resultSet.getString("name"));
- supplierInf.setAddress(resultSet.getString("address"));
- supplierInf.setContact(resultSet.getString("contact"));
- supplierInf.setEmail(resultSet.getString("email"));
- supplierInf.setDelmark(1);
- v.add(supplierInf);
+ preparedStatement = conn.prepareStatement("select * from supplierInf where delmark = 1"); // 准备SQL查询语句,选择未被标记为删除的供应商信息
+
+ resultSet = preparedStatement.executeQuery(); // 执行查询
+ while (resultSet.next()) { // 遍历结果集
+ supplierInf = new SupplierInf(); // 创建一个新的供应商信息对象
+ supplierInf.setId(resultSet.getInt("id")); // 设置供应商ID
+ supplierInf.setName(resultSet.getString("name")); // 设置供应商名称
+ supplierInf.setAddress(resultSet.getString("address")); // 设置供应商地址
+ supplierInf.setContact(resultSet.getString("contact")); // 设置供应商联系人
+ supplierInf.setEmail(resultSet.getString("email")); // 设置供应商邮箱
+ supplierInf.setDelmark(1); // 设置删除标记
+ v.add(supplierInf); // 将供应商信息对象添加到向量中
+ }
+ Iterator it=v.iterator(); // 获取向量的迭代器
+ while(it.hasNext()){ // 遍历向量
+ supplierInf=it.next(); // 获取下一个供应商信息对象
+ System.out.println(supplierInf.getId()+" "+supplierInf.getName()+" "+supplierInf.getAddress()+" "+supplierInf.getContact()+" "+supplierInf.getEmail()+" "+supplierInf.getDelmark()+" "); // 打印供应商信息
}
- Iterator it=v.iterator();
- while(it.hasNext()){
- supplierInf=it.next();
- System.out.println(supplierInf.getId()+" "+supplierInf.getName()+" "+supplierInf.getAddress()+" "+supplierInf.getContact()+" "+supplierInf.getEmail()+" "+supplierInf.getDelmark()+" ");
- }
- } catch (SQLException e) {
- e.printStackTrace();
- } finally {
- JDBCUtil.close(resultSet, preparedStatement, conn);
+ } catch (SQLException e) { // 捕获SQL异常
+ e.printStackTrace(); // 打印异常堆栈信息
+ } finally { // 无论是否发生异常,都会执行的代码块
+ JDBCUtil.close(resultSet, preparedStatement, conn); // 关闭结果集、预编译语句和数据库连接
}
- return v;
+ return v; // 返回存储供应商信息的向量
}
-
+// 添加供应商信息的方法
+ /**
+ * 添加供应商信息
+ *
+ * @param supplierInf 供应商信息对象
+ * @return 插入结果标志,1表示成功,0表示失败
+ */
@Override
public int addSupplierInf(SupplierInf supplierInf) {
- int flag = 0;
- Connection conn = JDBCUtil.getConn();
- PreparedStatement preparedStatement = null;
-
+ int flag = 0; // 初始化标志为0
+ Connection conn = JDBCUtil.getConn(); // 获取数据库连接
+ PreparedStatement preparedStatement = null; // 初始化预编译语句对象
+
try {
preparedStatement = conn.prepareStatement
- ("insert into supplierInf values (null,?,?,?,?,?)");
+ ("insert into supplierInf values (null,?,?,?,?,?)"); // 准备SQL插入语句
//preparedStatement.setInt(1, supplierInf.getId());
- preparedStatement.setString(1, supplierInf.getName());
- preparedStatement.setString(2, supplierInf.getAddress());
- preparedStatement.setString(3, supplierInf.getContact());
- preparedStatement.setString(4, supplierInf.getEmail());
- preparedStatement.setInt(5, 1);
- preparedStatement.executeUpdate();
- flag = 1;
- } catch (SQLException e) {
- e.printStackTrace();
- } finally {
- JDBCUtil.close(null,preparedStatement, conn);
+ preparedStatement.setString(1, supplierInf.getName()); // 设置供应商名称
+ preparedStatement.setString(2, supplierInf.getAddress()); // 设置供应商地址
+ preparedStatement.setString(3, supplierInf.getContact()); // 设置供应商联系人
+ preparedStatement.setString(4, supplierInf.getEmail()); // 设置供应商邮箱
+ preparedStatement.setInt(5, 1); // 设置删除标记
+ preparedStatement.executeUpdate(); // 执行插入操作
+ flag = 1; // 设置标志为1,表示插入成功
+ } catch (SQLException e) { // 捕获SQL异常
+ e.printStackTrace(); // 打印异常堆栈信息
+ } finally { // 无论是否发生异常,都会执行的代码块
+ JDBCUtil.close(null,preparedStatement, conn); // 关闭预编译语句和数据库连接
}
-
- return flag;
- }
+ return flag; // 返回插入结果标志
+ }
+ // 删除供应商信息的方法
+ /**
+ * 删除指定ID的供应商信息
+ *
+ * @param id 要删除的供应商ID
+ * @return 删除操作的结果标志,1表示成功,0表示失败
+ */
@Override
public int deleteSupplierInf(int id) {
- int flag = 0;
-
- Connection conn = JDBCUtil.getConn();
- PreparedStatement preparedStatement = null;
-
+ int flag = 0; // 初始化标志为0
+
+ Connection conn = JDBCUtil.getConn(); // 获取数据库连接
+ PreparedStatement preparedStatement = null; // 初始化预编译语句对象
+
try {
preparedStatement = conn.prepareStatement
- ("delete from supplierInf where id = ?");
- preparedStatement.setInt(1, id);
- preparedStatement.executeUpdate();
- flag = 1;
- } catch (SQLException e) {
- e.printStackTrace();
- } finally {
- JDBCUtil.close(null,preparedStatement, conn);
+ ("delete from supplierInf where id = ?"); // 准备SQL删除语句
+ preparedStatement.setInt(1, id); // 设置供应商ID
+ preparedStatement.executeUpdate(); // 执行删除操作
+ flag = 1; // 设置标志为1,表示删除成功
+ } catch (SQLException e) { // 捕获SQL异常
+ e.printStackTrace(); // 打印异常堆栈信息
+ } finally { // 无论是否发生异常,都会执行的代码块
+ JDBCUtil.close(null,preparedStatement, conn); // 关闭预编译语句和数据库连接
}
- return flag;
+ return flag; // 返回删除结果标志
}
+ // 更新供应商信息的方法
+ /**
+ * 更新供应商信息
+ *
+ * @param supplierInf 供应商信息对象
+ * @return 更新结果标志,1表示成功,0表示失败
+ */
@Override
public int updateSupplierInf(SupplierInf supplierInf) {
- int flag=0;
- Connection conn = JDBCUtil.getConn();
- PreparedStatement preparedStatement = null;
+ int flag=0; // 初始化标志为0
+ Connection conn = JDBCUtil.getConn(); // 获取数据库连接
+ PreparedStatement preparedStatement = null; // 初始化预编译语句对象
try {
- preparedStatement = conn.prepareStatement("update supplierInf set name=?,address=?,contact=?,email=?,delmark=? where id = ?");
- preparedStatement.setString(1,supplierInf.getName());
- preparedStatement.setString(2,supplierInf.getAddress());
- preparedStatement.setString(3,supplierInf.getContact());
- preparedStatement.setString(4, supplierInf.getEmail());
- preparedStatement.setInt(5, supplierInf.getDelmark());
- preparedStatement.setInt(6,supplierInf.getId());
- preparedStatement.executeUpdate();
- flag = 1;
-
- } catch (SQLException e) {
- e.printStackTrace();
- } finally {
- JDBCUtil.close(null, preparedStatement, conn);
+ preparedStatement = conn.prepareStatement("update supplierInf set name=?,address=?,contact=?,email=?,delmark=? where id = ?"); // 准备SQL更新语句
+ preparedStatement.setString(1,supplierInf.getName()); // 设置供应商名称
+ preparedStatement.setString(2,supplierInf.getAddress()); // 设置供应商地址
+ preparedStatement.setString(3,supplierInf.getContact()); // 设置供应商联系人
+ preparedStatement.setString(4, supplierInf.getEmail()); // 设置供应商邮箱
+ preparedStatement.setInt(5, supplierInf.getDelmark()); // 设置删除标记
+ preparedStatement.setInt(6,supplierInf.getId()); // 设置供应商ID
+ preparedStatement.executeUpdate(); // 执行更新操作
+ flag = 1; // 设置标志为1,表示更新成功
+
+ } catch (SQLException e) { // 捕获SQL异常
+ e.printStackTrace(); // 打印异常堆栈信息
+ } finally { // 无论是否发生异常,都会执行的代码块
+ JDBCUtil.close(null, preparedStatement, conn); // 关闭预编译语句和数据库连接
}
- return flag;
+ return flag; // 返回更新结果标志
}
-
+
+
+ // 获取所有供应商名称的方法
+ // 该方法从数据库中查询所有供应商的名称,并将其存储在一个列表中返回
@Override
public ArrayList findNameSupplier() {
- Connection conn=JDBCUtil.getConn();
- ArrayList v = new ArrayList();
- SupplierInf supplierInf;
- PreparedStatement pstmt = null;
- ResultSet resultSet=null;
- v.add("全部");
+ Connection conn=JDBCUtil.getConn(); // 获取数据库连接
+ ArrayList v = new ArrayList(); // 创建一个列表用于存储供应商名称
+ SupplierInf supplierInf; // 声明一个供应商信息对象
+ PreparedStatement pstmt = null; // 初始化预编译语句对象
+ ResultSet resultSet=null; // 初始化结果集对象
+ v.add("全部"); // 添加默认选项“全部”
try {
- pstmt = conn.prepareStatement("select * from supplierInf");
- resultSet = pstmt.executeQuery();
- while(resultSet.next()){
-
- v.add(resultSet.getString("name"));
+ pstmt = conn.prepareStatement("select * from supplierInf"); // 准备SQL查询语句
+ resultSet = pstmt.executeQuery(); // 执行查询
+ while(resultSet.next()){ // 遍历结果集
+
+ v.add(resultSet.getString("name")); // 将供应商名称添加到列表中
}
- } catch (SQLException e) {
+ } catch (SQLException e) { // 捕获SQL异常
// TODO Auto-generated catch block
- e.printStackTrace();
- }finally{
- JDBCUtil.close(resultSet, pstmt, conn);
+ e.printStackTrace(); // 打印异常堆栈信息
+ }finally{ // 无论是否发生异常,都会执行的代码块
+ JDBCUtil.close(resultSet, pstmt, conn); // 关闭结果集、预编译语句和数据库连接
}
-
-
- return v;
+
+
+ return v; // 返回存储供应商名称的列表
}
+ // 根据供应商名称查找其ID的方法
+ /**
+ * 根据给定的供应商名称查找对应的供应商ID。
+ * 如果名称为“全部”,返回默认ID(0)。
+ * 如果未找到对应的供应商,返回-1作为标志。
+ *
+ * @param name 供应商名称
+ * @return 供应商ID或标志
+ */
@Override
public int findIdSupplierByName(String name) {
- int flag = -1;
- Connection conn = JDBCUtil.getConn();
- PreparedStatement preparedStatement = null;
- ResultSet resultSet= null;
- int id=0;
+ int flag = -1; // 初始化标志为-1
+ Connection conn = JDBCUtil.getConn(); // 获取数据库连接
+ PreparedStatement preparedStatement = null; // 初始化预编译语句对象
+ ResultSet resultSet= null; // 初始化结果集对象
+ int id=0; // 初始化供应商ID为0
try {
- if(name.equals("全部"))
- return id;
+ if(name.equals("全部")) // 如果供应商名称为“全部”
+ return id; // 返回默认ID
preparedStatement = conn.prepareStatement
- ("select * from supplierInf where name=?");
- preparedStatement.setString(1, name);
- resultSet=preparedStatement.executeQuery();
- if(resultSet.next()){
- return resultSet.getInt("id");
+ ("select * from supplierInf where name=?"); // 准备SQL查询语句
+ preparedStatement.setString(1, name); // 设置查询参数
+ resultSet=preparedStatement.executeQuery(); // 执行查询
+ if(resultSet.next()){ // 如果找到对应记录
+ return resultSet.getInt("id"); // 返回供应商ID
}
-
- } catch (SQLException e) {
- e.printStackTrace();
- } finally {
- JDBCUtil.close(null,preparedStatement, conn);
+
+ } catch (SQLException e) { // 捕获SQL异常
+ e.printStackTrace(); // 打印异常堆栈信息
+ } finally { // 无论是否发生异常,都会执行的代码块
+ JDBCUtil.close(null,preparedStatement, conn); // 关闭预编译语句和数据库连接
}
-
- return flag;
+
+ return flag; // 返回查询结果标志
}
-
-}
+
+}
\ No newline at end of file
diff --git a/Supermarket/src/com/lingnan/supermarket/dao/impl/UserServiceImpl.java b/Supermarket/src/com/lingnan/supermarket/dao/impl/UserServiceImpl.java
index da344b5..90eb5f9 100644
--- a/Supermarket/src/com/lingnan/supermarket/dao/impl/UserServiceImpl.java
+++ b/Supermarket/src/com/lingnan/supermarket/dao/impl/UserServiceImpl.java
@@ -11,266 +11,283 @@ import com.lingnan.supermarket.dao.UserService;
import com.lingnan.supermarket.dto.User;
import com.lingnan.supermarket.utils.JDBCUtil;
+// UserServiceImpl类实现了UserService接口,用于处理与用户相关的数据库操作
public class UserServiceImpl implements UserService {
-
+ // 实现用户登录功能
public User login(String Name, String password) {
- Connection conn=JDBCUtil.getConn();
- User user=null;
+ // 获取数据库连接
+ Connection conn = JDBCUtil.getConn();
+ // 用于存储查询到的用户信息,初始化为null
+ User user = null;
PreparedStatement pstmt = null;
- ResultSet resultSet=null;
+ ResultSet resultSet = null;
+
try {
- pstmt = conn.prepareStatement("select *from User where name=? and password=? and delmark = 1");
- pstmt.setString(1,Name);
- pstmt.setString(2,password);
+ // 准备SQL语句,用于查询满足条件的用户记录
+ // 条件是用户名、密码匹配且delmark为1(可能表示未删除状态)
+ pstmt = conn.prepareStatement("select * from User where name=? and password=? and delmark = 1");
+ pstmt.setString(1, Name);
+ pstmt.setString(2, password);
+ // 执行查询操作并获取结果集
resultSet = pstmt.executeQuery();
- if(resultSet.next()){
- user=new User();
- System.out.println(resultSet.getInt("id")+" "+resultSet.getString("name")+" "+resultSet.getString("password")+" "+resultSet.getInt("sSuper"));
+ // 如果结果集中有下一条记录,说明找到了匹配的用户
+ if (resultSet.next()) {
+ // 创建一个新的User对象来存储查询到的用户信息
+ user = new User();
+ // 输出查询到的用户信息(这里可能是用于调试目的)
+ System.out.println(resultSet.getInt("id") + " " + resultSet.getString("name") + " " + resultSet.getString("password") + " " + resultSet.getInt("sSuper"));
+ // 将查询到的用户信息设置到User对象中
user.setId(resultSet.getInt("id"));
user.setUsername(resultSet.getString("name"));
user.setRname(resultSet.getString("rname"));
user.setPassword(resultSet.getString("password"));
user.setPhone(resultSet.getString("phone"));
- user.setUsuper(resultSet.getInt("sSuper"));
+ user.setUsuper(resultSet.getInt("sSuper"));
user.setImg(resultSet.getString("img"));
user.setDelmark(1);
}
} catch (SQLException e) {
- // TODO Auto-generated catch block
+ // 捕获SQL异常并打印异常信息(这里可以考虑更完善的异常处理,比如记录日志等)
e.printStackTrace();
- }finally{
+ } finally {
+ // 关闭数据库相关资源,释放连接、语句和结果集
JDBCUtil.close(resultSet, pstmt, conn);
}
-
-
+
+ // 返回查询到的用户对象,如果未找到则返回null
return user;
}
-
-//添加用户基本信息
+ // 添加用户基本信息到数据库的方法
public int addUser(User user) {
- int flag=0;
- Connection conn=JDBCUtil.getConn();
- String s="static\\userimg\\u1.png";
- String SQL="insert into User values(null,?,?,?,?,?,?,?)";
-
+ // 用于标记添加操作是否成功,初始化为0表示失败
+ int flag = 0;
+ // 获取数据库连接
+ Connection conn = JDBCUtil.getConn();
+ // 设置默认的用户图片路径(这里可能需要根据实际情况进行调整)
+ String s = "static\\userimg\\u1.png";
+ // 准备插入用户信息的SQL语句,注意values中的null是为了让数据库自动生成id(假设id是自增主键)
+ String SQL = "insert into User values(null,?,?,?,?,?,?,?)";
+
System.out.println(SQL);
-
-
+
PreparedStatement preparedStatement = null;
- ResultSet resultSet=null;
+ ResultSet resultSet = null;
+
try {
+ // 准备SQL语句
preparedStatement = conn.prepareStatement(SQL);
- preparedStatement.setString(1,user.getUsername());
- preparedStatement.setString(2,user.getRname());
- preparedStatement.setString(3,user.getPassword());
- preparedStatement.setString(4,user.getPhone());
- preparedStatement.setInt(5,user.getUsuper());
- preparedStatement.setString(6,s);
- preparedStatement.setInt(7,1);
+ // 设置SQL语句中的参数,将用户对象的各个属性值传入
+ preparedStatement.setString(1, user.getUsername());
+ preparedStatement.setString(2, user.getRname());
+ preparedStatement.setString(3, user.getPassword());
+ preparedStatement.setString(4, user.getPhone());
+ preparedStatement.setInt(5, user.getUsuper());
+ preparedStatement.setString(6, s);
+ preparedStatement.setInt(7, 1);
+ // 执行插入操作
preparedStatement.executeUpdate();
- flag=1;
+ // 如果插入成功,将标记设置为1
+ flag = 1;
} catch (SQLException e) {
- // TODO Auto-generated catch block
+ // 捕获SQL异常并打印异常信息
e.printStackTrace();
- }finally{
+ } finally {
+ // 关闭数据库相关资源
JDBCUtil.close(resultSet, preparedStatement, conn);
}
-
-
+
+ // 返回操作结果标记,1表示成功,0表示失败
return flag;
}
+ // 查询所有用户信息的方法,返回一个存储用户对象的Vector数组
+ public Vector allUser() {
+ // 获取数据库连接
+ Connection conn = JDBCUtil.getConn();
+ // 创建一个Vector来存储查询到的所有用户对象
+ Vector v = new Vector<>();
+ User user;
+ PreparedStatement pstmt = null;
+ ResultSet resultSet = null;
+
+ try {
+ // 准备查询所有未删除用户(delmark = 1)的SQL语句
+ pstmt = conn.prepareStatement("select * from User where delmark = 1");
+
+ // 执行查询操作并获取结果集
+ resultSet = pstmt.executeQuery();
+ // 遍历结果集,将每条记录转换为一个User对象并添加到Vector中
+ while (resultSet.next()) {
+ user = new User();
+ user.setId(resultSet.getInt("id"));
+ user.setUsername(resultSet.getString("name"));
+ user.setRname(resultSet.getString("rname"));
+ user.setPassword(resultSet.getString("password"));
+ user.setPhone(resultSet.getString("phone"));
+ user.setUsuper(resultSet.getInt("sSuper"));
+ user.setImg(resultSet.getString("img"));
+ user.setDelmark(1);
+ v.add(user);
+ }
+ } catch (SQLException e) {
+ // 捕获SQL异常并打印异常信息
+ e.printStackTrace();
+ } finally {
+ // 关闭数据库相关资源
+ JDBCUtil.close(resultSet, pstmt, conn);
+ }
- /*查找所有用户,返回vector数组*/
- public Vector allUser(){
- Connection conn=JDBCUtil.getConn();
- Vector v = new Vector<>();
- User user ;
- PreparedStatement pstmt = null;
- ResultSet resultSet=null;
- try {
- pstmt = conn.prepareStatement("select *from User where delmark = 1");
-
- resultSet = pstmt.executeQuery();
- while(resultSet.next()){
- user= new User();
- user.setId(resultSet.getInt("id"));
- user.setUsername(resultSet.getString("name"));
- user.setRname(resultSet.getString("rname"));
- user.setPassword(resultSet.getString("password"));
- user.setPhone(resultSet.getString("phone"));
- user.setUsuper(resultSet.getInt("sSuper"));
- user.setImg(resultSet.getString("img"));
- user.setDelmark(1);
- v.add(user);
- }
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }finally{
- JDBCUtil.close(resultSet, pstmt, conn);
- }
-
-
- return v;
- }
-
- //通过真实姓名
- public Vector findByrnameUser(User user) {
- Connection conn=JDBCUtil.getConn();
- Vector v = new Vector<>();
- System.out.println(user.getRname());
- PreparedStatement pstmt = null;
- ResultSet resultSet=null;
- try {
- if(!user.getRname().equals("")){
-
- String s='%'+user.getRname()+'%';
- pstmt = conn.prepareStatement("select * from user where rname like ? and delmark = 1");
- pstmt.setString(1,s);
- }
- else
- pstmt = conn.prepareStatement("select * from user where delmark = 1");
-
-
- resultSet = pstmt.executeQuery();
- while(resultSet.next()){
- user= new User();
- user.setId(resultSet.getInt("id"));
- user.setUsername(resultSet.getString("name"));
- user.setRname(resultSet.getString("rname"));
- user.setPassword(resultSet.getString("password"));
- user.setPhone(resultSet.getString("phone"));
- user.setUsuper(resultSet.getInt("sSuper"));
- user.setImg(resultSet.getString("img"));
- user.setDelmark(1);
- v.add(user);
-
- }
-
-
- Iterator it=v.iterator();
- while(it.hasNext()){
- user=it.next();
- System.out.println(user.getId()+" "+user.getUsername()+" "+user.getRname()+" "+user.getPassword()+" "+user.getPhone()+" "+user.getUsuper()+" "+user.getImg()+" "+user.getDelmark()+" ");
- }
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }finally{
- JDBCUtil.close(resultSet, pstmt, conn);
- }
-
-
- return v;
-
+ // 返回存储所有用户对象的Vector
+ return v;
}
+ // 根据用户的真实姓名查找用户信息的方法,返回一个存储匹配用户对象的Vector数组
+ public Vector findByrnameUser(User user) {
+ // 获取数据库连接
+ Connection conn = JDBCUtil.getConn();
+ // 创建一个Vector来存储查询到的匹配用户对象
+ Vector v = new Vector<>();
+ // 输出传入的用户真实姓名(可能用于调试目的)
+ System.out.println(user.getRname());
+ PreparedStatement pstmt = null;
+ ResultSet resultSet = null;
+
+ try {
+ // 如果传入的用户真实姓名不为空字符串
+ if (!user.getRname().equals("")) {
+ // 构造模糊查询的条件,使用%作为通配符
+ String s = "%" + user.getRname() + "%";
+ // 准备根据真实姓名模糊查询用户的SQL语句,且只查询未删除的用户(delmark = 1)
+ pstmt = conn.prepareStatement("select * from user where rname like? and delmark = 1");
+ pstmt.setString(1, s);
+ } else {
+ // 如果传入的真实姓名为空字符串,则查询所有未删除的用户
+ pstmt = conn.prepareStatement("select * from user where delmark = 1");
+ }
+
+ // 执行查询操作并获取结果集
+ resultSet = pstmt.executeQuery();
+ // 遍历结果集,将每条记录转换为一个User对象并添加到Vector中
+ while (resultSet.next()) {
+ user = new User();
+ user.setId(resultSet.getInt("id"));
+ user.setUsername(resultSet.getString("name"));
+ user.setRname(resultSet.getString("rname"));
+ user.setPassword(resultSet.getString("password"));
+ user.setPhone(resultSet.getString("phone"));
+ user.setUsuper(resultSet.getInt("sSuper"));
+ user.setImg(resultSet.getString("img"));
+ user.setDelmark(1);
+ v.add(user);
+ }
+
+ // 遍历查询到的用户对象并输出相关信息(可能用于调试目的)
+ Iterator it = v.iterator();
+ while (it.hasNext()) {
+ user = it.next();
+ System.out.println(user.getId() + " " + user.getUsername() + " " + user.getRname() + " " + user.getPassword() + " " + user.getPhone() + " " + user.getUsuper() + " " + user.getImg() + " " + user.getDelmark() + " ");
+ }
+ } catch (SQLException e) {
+ // 捕获SQL异常并打印异常信息
+ e.printStackTrace();
+ } finally {
+ // 关闭数据库相关资源
+ JDBCUtil.close(resultSet, pstmt, conn);
+ }
+
+ // 返回存储匹配用户对象的Vector
+ return v;
+ }
+
+ // 根据用户id删除用户记录的方法
@Override
- //按id编号删除某用户记录
public int deleteUser(int id) {
- int flag=0;
- Connection conn=JDBCUtil.getConn();
-
- String SQL="delete from user where id=?";
-
+ // 用于标记删除操作是否成功,初始化为0表示失败
+ int flag = 0;
+ // 获取数据库连接
+ Connection conn = JDBCUtil.getConn();
+
+ // 准备删除指定id用户记录的SQL语句
+ String SQL = "delete from user where id=?";
+
PreparedStatement preparedStatement = null;
- ResultSet resultSet=null;
+ ResultSet resultSet = null;
+
try {
+ // 准备SQL语句并设置要删除的用户id参数
preparedStatement = conn.prepareStatement(SQL);
- preparedStatement.setInt(1,id);
-
+ preparedStatement.setInt(1, id);
+
+ // 执行删除操作
preparedStatement.executeUpdate();
- flag=1;
+ // 如果删除成功,将标记设置为1
+ flag = 1;
} catch (SQLException e) {
- // TODO Auto-generated catch block
+ // 捕获SQL异常并打印异常信息
e.printStackTrace();
- }finally{
+ } finally {
+ // 关闭数据库相关资源
JDBCUtil.close(resultSet, preparedStatement, conn);
}
-
-
+
+ // 返回操作结果标记,1表示成功,0表示失败
return flag;
-
}
-
-
-
-
-
-
+ // 此方法在原代码中未实现具体功能,只是按照接口定义返回null
+ // 可能是需要根据具体业务需求进一步完善的登录方法,传入了用户名、密码和用户级别参数
@Override
public User login(String loginName, String password, int usuper) {
// TODO Auto-generated method stub
return null;
}
- /*public static void main(String[] args) {
- User user=new User();
- user.setUsername("whf");
- user.setRname("fafafa");
- user.setPassword("1111");
- user.setPhone("66666");
- user.setUsuper(1);
- UserServiceImpl usi=new UserServiceImpl();
- usi.addUser(user);
- }*/
-
+ // 根据用户id更新用户信息的方法
@Override
public int updateByIdUser(User user) {
- int flag=0;
- int id=user.getId();
+ // 用于标记更新操作是否成功,初始化为0表示失败
+ int flag = 0;
+ // 获取要更新的用户id
+ int id = user.getId();
System.out.println(id);
- Connection conn=JDBCUtil.getConn();
- String SQL="update User set name=?,rname=?,password=?,phone=?,sSuper=?,img=?,delmark=? where id=? ";
-
+ // 获取数据库连接
+ Connection conn = JDBCUtil.getConn();
+ // 准备更新用户信息的SQL语句,根据指定的id更新用户的各项信息
+ String SQL = "update User set name=?,rname=?,password=?,phone=?,sSuper=?,img=?,delmark=? where id=? ";
+
System.out.println(SQL);
-
-
+
PreparedStatement preparedStatement = null;
- ResultSet resultSet=null;
+ ResultSet resultSet = null;
+
try {
+ // 准备SQL语句
preparedStatement = conn.prepareStatement(SQL);
- preparedStatement.setString(1,user.getUsername());
- preparedStatement.setString(2,user.getRname());
- preparedStatement.setString(3,user.getPassword());
- preparedStatement.setString(4,user.getPhone());
- preparedStatement.setInt(5,user.getUsuper());
- preparedStatement.setString(6,user.getImg());
- preparedStatement.setInt(7,1);
- preparedStatement.setInt(8,id);
+ // 设置SQL语句中的参数,将用户对象的各个属性值传入
+ preparedStatement.setString(1, user.getUsername());
+ preparedStatement.setString(2, user.getRname());
+ preparedStatement.setString(3, user.getPassword());
+ preparedStatement.setString(4, user.getPhone());
+ preparedStatement.setInt(5, user.getUsuper());
+ preparedStatement.setString(6, user.getImg());
+ preparedStatement.setInt(7, 1);
+ preparedStatement.setInt(8, id);
+ // 执行更新操作
preparedStatement.executeUpdate();
- flag=1;
+ // 如果更新成功,将标记设置为1
+ flag = 1;
} catch (SQLException e) {
- // TODO Auto-generated catch block
+ // 捕获SQL异常并打印异常信息
e.printStackTrace();
- }finally{
+ } finally {
+ // 关闭数据库相关资源
JDBCUtil.close(resultSet, preparedStatement, conn);
}
-
-
+
+ // 返回操作结果标记,1表示成功,0表示失败
return flag;
}
-/* public static void main(String[] args) {
- User user=new User();
- user.setId(1);
- user.setUsername("z001");
- user.setRname("陈龙");
- user.setPassword("0.00.0");
- user.setPhone("6666776");
- user.setUsuper(0);
- user.setImg("static\\userimg\\u1.png");
- user.setDelmark(1);
- UserServiceImpl usi=new UserServiceImpl();
- int flag=usi.updateByIdUser(user);
- if(flag==1){
- System.out.println("ok");
- }
- System.out.println(user.getId()+" "+user.getUsername()+" "+user.getRname()+" "+user.getPassword()+" "+user.getPhone()+" "+user.getUsuper()+" "+user.getImg()+" "+user.getDelmark()+" ");
- }*/
-
-}
+}
\ No newline at end of file
diff --git a/Supermarket/src/com/lingnan/supermarket/dao/impl/inOrderServiceImpl.java b/Supermarket/src/com/lingnan/supermarket/dao/impl/inOrderServiceImpl.java
index fd81c3b..620a3f3 100644
--- a/Supermarket/src/com/lingnan/supermarket/dao/impl/inOrderServiceImpl.java
+++ b/Supermarket/src/com/lingnan/supermarket/dao/impl/inOrderServiceImpl.java
@@ -1,68 +1,62 @@
package com.lingnan.supermarket.dao.impl;
-import java.sql.Connection;
-
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Timestamp;
-import java.util.Date;
-import java.util.Vector;
-
import com.lingnan.supermarket.dao.inOrderService;
import com.lingnan.supermarket.dto.InOrder;
-import com.lingnan.supermarket.utils.DateUtil;
import com.lingnan.supermarket.utils.JDBCUtil;
+import java.sql.*;
+import java.util.Vector;
+
public class inOrderServiceImpl implements inOrderService{
-
+
@Override
- public Vector findAllInOrder (){
- Vector inOrders = new Vector();
- Connection conn = JDBCUtil.getConn();
- PreparedStatement preparedStatement = null;
- ResultSet resultSet=null;
-
+ public Vector findAllInOrder() {
+ Vector inOrders = new Vector(); // 创建一个向量用于存储InOrder对象
+ Connection conn = JDBCUtil.getConn(); // 获取数据库连接
+ PreparedStatement preparedStatement = null; // 声明预编译语句对象
+ ResultSet resultSet = null; // 声明结果集对象
+
+ // SQL查询语句,选择未删除的订单并按入库日期降序排列
String SQL = "select * from inOrder where delmark=1 order by inDate desc";
-
+
try {
- preparedStatement = conn.prepareStatement(SQL);
- resultSet = preparedStatement.executeQuery();
- while(resultSet.next()) {
- InOrder inOrder = new InOrder();
+ preparedStatement = conn.prepareStatement(SQL); // 准备SQL语句
+ resultSet = preparedStatement.executeQuery(); // 执行查询
+ while (resultSet.next()) { // 遍历结果集
+ InOrder inOrder = new InOrder(); // 创建InOrder对象
+ // 从结果集中获取属性并设置到inOrder对象
inOrder.setiNumber(resultSet.getString("iNumber"));
inOrder.setAllInPrice(resultSet.getFloat("allInPrice"));
inOrder.setInDate(resultSet.getString("inDate"));
inOrder.setPrincipal(resultSet.getString("principal"));
inOrder.setStatus(resultSet.getInt("status"));
inOrder.setDelmark(resultSet.getInt("Delmark"));
- inOrders.add(inOrder);
+ inOrders.add(inOrder); // 将InOrder对象添加到向量中
}
-
+
} catch (SQLException e) {
- e.printStackTrace();
+ e.printStackTrace(); // 捕获并打印异常堆栈信息
} finally {
- JDBCUtil.close(resultSet, preparedStatement, conn);
+ JDBCUtil.close(resultSet, preparedStatement, conn); // 关闭结果集、预编译语句和数据库连接
}
- return inOrders;
-
+ return inOrders; // 返回存储所有InOrder对象的向量
}
-
-
+
@Override
public InOrder findByIdinOrder(String iNumber) {
-
- InOrder inOrder = new InOrder();
- Connection conn = JDBCUtil.getConn();
- PreparedStatement preparedStatement = null;
- ResultSet resultSet = null;
+ InOrder inOrder = new InOrder(); // 创建InOrder对象
+ Connection conn = JDBCUtil.getConn(); // 获取数据库连接
+ PreparedStatement preparedStatement = null; // 声明预编译语句对象
+ ResultSet resultSet = null; // 声明结果集对象
try {
+ // 准备SQL语句,根据订单号查找特定的订单
preparedStatement = conn.prepareStatement("select * from inOrder where iNumber = ?");
- preparedStatement.setString(1, iNumber);
- resultSet = preparedStatement.executeQuery();
- if (resultSet.next()) {
+ preparedStatement.setString(1, iNumber); // 设置订单号参数
+ resultSet = preparedStatement.executeQuery(); // 执行查询
+ if (resultSet.next()) { // 如果找到对应记录
+ // 从结果集中获取属性并设置到inOrder对象
inOrder.setiNumber(resultSet.getString("iNumber"));
inOrder.setAllInPrice(resultSet.getFloat("allInPrice"));
inOrder.setInDate(resultSet.getString("inDate"));
@@ -70,205 +64,204 @@ public class inOrderServiceImpl implements inOrderService{
inOrder.setStatus(resultSet.getInt("status"));
} else {
return null; // 没有找到该订单或订单不存在,返回null
- }
+ }
} catch (SQLException e) {
- e.printStackTrace();
+ e.printStackTrace(); // 捕获并打印异常堆栈信息
} finally {
- JDBCUtil.close(resultSet, preparedStatement, conn);
+ JDBCUtil.close(resultSet, preparedStatement, conn); // 关闭结果集、预编译语句和数据库连接
}
- return inOrder;
+ return inOrder; // 返回找到的InOrder对象
}
-
-
+
@Override
public int addInOrder(String iNumber, float allInPrice) {
- int flag = 0;
- Timestamp inDate = new Timestamp(System.currentTimeMillis());
- //System.out.println(inDate);
- Connection conn = JDBCUtil.getConn();
- PreparedStatement preparedStatement = null;
-
+ int flag = 0; // 状态标志,初始化为0
+ Timestamp inDate = new Timestamp(System.currentTimeMillis()); // 获取当前时间戳
+ Connection conn = JDBCUtil.getConn(); // 获取数据库连接
+ PreparedStatement preparedStatement = null; // 声明预编译语句对象
+
try {
- preparedStatement = conn.prepareStatement
- ("insert into inOrder values (?,?,?,?)");
- preparedStatement.setString(1, iNumber);
- preparedStatement.setFloat(2, allInPrice);
- preparedStatement.setTimestamp(3, inDate);
- preparedStatement.setString(4, "a1");
- preparedStatement.executeUpdate();
- flag = 1;
+ // 准备SQL插入语句
+ preparedStatement = conn.prepareStatement("insert into inOrder values (?,?,?,?)");
+ preparedStatement.setString(1, iNumber); // 设置订单号参数
+ preparedStatement.setFloat(2, allInPrice); // 设置总价格参数
+ preparedStatement.setTimestamp(3, inDate); // 设置入库日期
+ preparedStatement.setString(4, "a1"); // 设置其他固定参数(例如:默认的负责人ID)
+ preparedStatement.executeUpdate(); // 执行插入操作
+ flag = 1; // 标记插入成功
} catch (SQLException e) {
- flag = -1;
- e.printStackTrace();
+ flag = -1; // 插入失败时标记为-1
+ e.printStackTrace(); // 捕获并打印异常堆栈信息
} finally {
- JDBCUtil.close(null,preparedStatement, conn);
+ JDBCUtil.close(null, preparedStatement, conn); // 关闭预编译语句和数据库连接
}
-
- return flag;
- }
+ return flag; // 返回插入结果标志
+ }
@Override
public int deleteInOrder(String iNumber) {
- int flag = 0;
-
- Connection conn = JDBCUtil.getConn();
- PreparedStatement preparedStatement = null;
-
+ int flag = 0; // 状态标志,初始化为0
+
+ Connection conn = JDBCUtil.getConn(); // 获取数据库连接
+ PreparedStatement preparedStatement = null; // 声明预编译语句对象
+
try {
- preparedStatement = conn.prepareStatement
- ("update inOrder set delmark=0 where iNumber = ?");
- preparedStatement.setString(1, iNumber);
- preparedStatement.executeUpdate();
- flag = 1;
+ // 准备SQL更新语句,将delmark标记为0表示逻辑删除
+ preparedStatement = conn.prepareStatement("update inOrder set delmark=0 where iNumber = ?");
+ preparedStatement.setString(1, iNumber); // 设置订单号参数
+ preparedStatement.executeUpdate(); // 执行更新操作
+ flag = 1; // 标记删除成功
} catch (SQLException e) {
- flag = -1;
- e.printStackTrace();
+ flag = -1; // 删除失败时标记为-1
+ e.printStackTrace(); // 捕获并打印异常堆栈信息
} finally {
- JDBCUtil.close(null,preparedStatement, conn);
+ JDBCUtil.close(null, preparedStatement, conn); // 关闭预编译语句和数据库连接
}
- return flag;
+ return flag; // 返回删除结果标志
}
/*往订单表插入一条记录*/
- public boolean InsertInOrder(String number,Float allPrice,String time,String username,int c){
- boolean flag = false;
- Connection conn = JDBCUtil.getConn();
- PreparedStatement pstmt = null;
- ResultSet resultSet = null;;
+ // 插入新的进货订单
+ public boolean InsertInOrder(String number, Float allPrice, String time, String username, int c) {
+ boolean flag = false; // 初始化标志为false
+ Connection conn = JDBCUtil.getConn(); // 获取数据库连接
+ PreparedStatement pstmt = null; // 声明预编译语句对象
+ ResultSet resultSet = null; // 声明结果集对象
try {
+ // 准备SQL插入语句
pstmt = conn.prepareStatement("insert into InOrder values(?,?,?,?,?,?)");
- pstmt.setString(1, number);
- pstmt.setFloat(2, allPrice);
- pstmt.setString(3, time);
- pstmt.setString(4, username);
- pstmt.setInt(5, 2);
- pstmt.setInt(6, 1);
-
- if(pstmt.execute())
- flag = true;
-
-
-
- } catch (SQLException e) {
- e.printStackTrace();
- }finally {
+ pstmt.setString(1, number); // 设置订单号
+ pstmt.setFloat(2, allPrice); // 设置总价格
+ pstmt.setString(3, time); // 设置入库时间
+ pstmt.setString(4, username); // 设置负责人用户名
+ pstmt.setInt(5, 2); // 设置状态,假设2代表某个特定状态
+ pstmt.setInt(6, 1); // 设置删除标记,假设1表示未删除
+
+ // 执行插入操作
+ if (pstmt.execute())
+ flag = true; // 如果成功执行插入,设置标志为true
- JDBCUtil.close(resultSet, pstmt, conn);
+ } catch (SQLException e) {
+ e.printStackTrace(); // 捕获并打印异常堆栈信息
+ } finally {
+ JDBCUtil.close(resultSet, pstmt, conn); // 关闭结果集、预编译语句和数据库连接
}
- return flag;
+ return flag; // 返回插入结果标志
}
- /*更新状态*/
- public boolean updateInOrderStatus(String iNumber,int status) {
- boolean flag = false;
- Connection conn = JDBCUtil.getConn();
- PreparedStatement preparedStatement = null;
+ /* 更新状态 */
+ public boolean updateInOrderStatus(String iNumber, int status) {
+ boolean flag = false; // 初始化标志为false
+ Connection conn = JDBCUtil.getConn(); // 获取数据库连接
+ PreparedStatement preparedStatement = null; // 声明预编译语句对象
try {
+ // 准备SQL更新语句,更新指定订单号的状态
preparedStatement = conn.prepareStatement("update inOrder set status=? where iNumber=?");
- preparedStatement.setInt(1, status);
- preparedStatement.setString(2,iNumber);
- if(preparedStatement.executeUpdate()==1)
+ preparedStatement.setInt(1, status); // 设置状态
+ preparedStatement.setString(2, iNumber); // 设置订单号
+ // 如果更新操作影响了一行,则设置标志为true
+ if (preparedStatement.executeUpdate() == 1)
flag = true;
} catch (SQLException e) {
- e.printStackTrace();
+ e.printStackTrace(); // 捕获并打印异常堆栈信息
} finally {
- JDBCUtil.close(null,preparedStatement, conn);
+ JDBCUtil.close(null, preparedStatement, conn); // 关闭预编译语句和数据库连接
}
- return flag;
+ return flag; // 返回更新结果标志
}
-
- //查找所有待入库订单*/待确认
- public Vector findUnconfirmInOrder(){
- Vector inOrders = new Vector();
- Connection conn = JDBCUtil.getConn();
- PreparedStatement preparedStatement = null;
- ResultSet resultSet=null;
-
+
+ // 查找所有待入库订单(待确认)
+ public Vector findUnconfirmInOrder() {
+ Vector inOrders = new Vector(); // 创建一个向量用于存储InOrder对象
+ Connection conn = JDBCUtil.getConn(); // 获取数据库连接
+ PreparedStatement preparedStatement = null; // 声明预编译语句对象
+ ResultSet resultSet = null; // 声明结果集对象
+
+ // SQL查询语句,选择状态为2并且未删除的订单
String SQL = "select * from inOrder where status=2 and delmark=1";
-
+
try {
- preparedStatement = conn.prepareStatement(SQL);
- resultSet = preparedStatement.executeQuery();
- while(resultSet.next()) {
- InOrder inOrder = new InOrder();
- inOrder.setiNumber(resultSet.getString("iNumber"));
- inOrder.setAllInPrice(resultSet.getFloat("allInPrice"));
- inOrder.setInDate(resultSet.getString("inDate"));
- inOrder.setPrincipal(resultSet.getString("principal"));
- inOrder.setStatus(resultSet.getInt("status"));
- inOrder.setDelmark(resultSet.getInt("Delmark"));
- inOrders.add(inOrder);
+ preparedStatement = conn.prepareStatement(SQL); // 准备SQL语句
+ resultSet = preparedStatement.executeQuery(); // 执行查询
+ while (resultSet.next()) { // 遍历结果集
+ InOrder inOrder = new InOrder(); // 创建InOrder对象
+ // 从结果集中获取属性并设置到inOrder对象
+ inOrder.setiNumber(resultSet.getString("iNumber")); // 设置订单号
+ inOrder.setAllInPrice(resultSet.getFloat("allInPrice")); // 设置总价格
+ inOrder.setInDate(resultSet.getString("inDate")); // 设置入库日期
+ inOrder.setPrincipal(resultSet.getString("principal")); // 设置负责人
+ inOrder.setStatus(resultSet.getInt("status")); // 设置订单状态
+ inOrder.setDelmark(resultSet.getInt("Delmark")); // 设置删除标记
+ inOrders.add(inOrder); // 将InOrder对象添加到向量中
}
-
+
} catch (SQLException e) {
- e.printStackTrace();
+ e.printStackTrace(); // 捕获并打印异常堆栈信息
} finally {
- JDBCUtil.close(resultSet, preparedStatement, conn);
+ JDBCUtil.close(resultSet, preparedStatement, conn); // 关闭结果集、预编译语句和数据库连接
}
- return inOrders;
-
+ return inOrders; // 返回存储待确认订单的向量
}
-
- //获取今日进货金额
- public Float TodayInPrice(String date) {
- InOrder inOrder = new InOrder();
- Connection conn = JDBCUtil.getConn();
- PreparedStatement preparedStatement = null;
- ResultSet resultSet = null;
- Float allInPrice=(float) 0;
+ // 获取今日进货金额
+ public Float TodayInPrice(String date) {
+ InOrder inOrder = new InOrder(); // 创建InOrder对象
+ Connection conn = JDBCUtil.getConn(); // 获取数据库连接
+ PreparedStatement preparedStatement = null; // 声明预编译语句对象
+ ResultSet resultSet = null; // 声明结果集对象
+ Float allInPrice = (float) 0; // 初始化总进货金额为0
try {
+ // 准备SQL查询语句,计算指定日期的进货金额总和
preparedStatement = conn.prepareStatement("select sum(allInPrice) from inOrder where inDate>=? and inDate<=date_add(?,interval 1 day)");
- preparedStatement.setString(1, date);
- preparedStatement.setString(2, date);
- resultSet = preparedStatement.executeQuery();
- if (resultSet.next()) {
- allInPrice=resultSet.getFloat("sum(allInPrice)");
- }
+ preparedStatement.setString(1, date); // 设置起始日期
+ preparedStatement.setString(2, date); // 设置结束日期(起始日期+1天)
+ resultSet = preparedStatement.executeQuery(); // 执行查询
+ if (resultSet.next()) { // 如果有结果
+ allInPrice = resultSet.getFloat("sum(allInPrice)"); // 获取总进货金额
+ }
} catch (SQLException e) {
- e.printStackTrace();
+ e.printStackTrace(); // 捕获并打印异常堆栈信息
} finally {
- JDBCUtil.close(resultSet, preparedStatement, conn);
+ JDBCUtil.close(resultSet, preparedStatement, conn); // 关闭结果集、预编译语句和数据库连接
}
- return allInPrice;
+ return allInPrice; // 返回总进货金额
}
- //查找指定状态订单
- public Vector FindStatus(int status){
- Vector inOrders = new Vector();
- Connection conn = JDBCUtil.getConn();
- PreparedStatement preparedStatement = null;
- ResultSet resultSet=null;
-
-
-
- try {
+ // 查找指定状态订单
+ public Vector FindStatus(int status) {
+ Vector inOrders = new Vector(); // 创建一个向量用于存储InOrder对象
+ Connection conn = JDBCUtil.getConn(); // 获取数据库连接
+ PreparedStatement preparedStatement = null; // 声明预编译语句对象
+ ResultSet resultSet = null; // 声明结果集对象
+
+ try {
+ // 准备SQL查询语句,根据状态查找订单
preparedStatement = conn.prepareStatement("select * from inOrder where status=? and delmark=1 order by inDate desc");
- preparedStatement.setInt(1, status);
- resultSet = preparedStatement.executeQuery();
- while(resultSet.next()) {
- InOrder inOrder = new InOrder();
- inOrder.setiNumber(resultSet.getString("iNumber"));
- inOrder.setAllInPrice(resultSet.getFloat("allInPrice"));
- inOrder.setInDate(resultSet.getString("inDate"));
- inOrder.setPrincipal(resultSet.getString("principal"));
- inOrder.setStatus(resultSet.getInt("status"));
- inOrder.setDelmark(resultSet.getInt("Delmark"));
- inOrders.add(inOrder);
+ preparedStatement.setInt(1, status); // 设置状态参数
+ resultSet = preparedStatement.executeQuery(); // 执行查询
+ while (resultSet.next()) { // 遍历结果集
+ InOrder inOrder = new InOrder(); // 创建InOrder对象
+ // 从结果集中获取属性并设置到inOrder对象
+ inOrder.setiNumber(resultSet.getString("iNumber")); // 设置订单号
+ inOrder.setAllInPrice(resultSet.getFloat("allInPrice")); // 设置总价格
+ inOrder.setInDate(resultSet.getString("inDate")); // 设置入库日期
+ inOrder.setPrincipal(resultSet.getString("principal")); // 设置负责人
+ inOrder.setStatus(resultSet.getInt("status")); // 设置订单状态
+ inOrder.setDelmark(resultSet.getInt("Delmark")); // 设置删除标记
+ inOrders.add(inOrder); // 将InOrder对象添加到向量中
}
-
+
} catch (SQLException e) {
- e.printStackTrace();
+ e.printStackTrace(); // 捕获并打印异常堆栈信息
} finally {
- JDBCUtil.close(resultSet, preparedStatement, conn);
+ JDBCUtil.close(resultSet, preparedStatement, conn); // 关闭结果集、预编译语句和数据库连接
}
- return inOrders;
-
+ return inOrders; // 返回指定状态的订单向量
}
}
diff --git a/Supermarket/src/com/lingnan/supermarket/dao/impl/inRecordServiceImpl.java b/Supermarket/src/com/lingnan/supermarket/dao/impl/inRecordServiceImpl.java
index bf5f585..9964df6 100644
--- a/Supermarket/src/com/lingnan/supermarket/dao/impl/inRecordServiceImpl.java
+++ b/Supermarket/src/com/lingnan/supermarket/dao/impl/inRecordServiceImpl.java
@@ -1,152 +1,174 @@
package com.lingnan.supermarket.dao.impl;
+import com.lingnan.supermarket.dao.inRecordService;
+import com.lingnan.supermarket.dto.InRecord;
+import com.lingnan.supermarket.dto.Production;
+import com.lingnan.supermarket.utils.JDBCUtil;
+
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
-import java.sql.Timestamp;
import java.util.Vector;
-
-import com.lingnan.supermarket.dao.inRecordService;
-import com.lingnan.supermarket.dto.InOrder;
-import com.lingnan.supermarket.dto.InRecord;
-import com.lingnan.supermarket.dto.Production;
-import com.lingnan.supermarket.dto.User;
-import com.lingnan.supermarket.utils.JDBCUtil;
+/**
+ * 进货记录服务实现类
+ * @cwf2210461197 2024/12/2
+ * @version 1.0
+ */
public class inRecordServiceImpl implements inRecordService{
-
+ /**
+ * 查询所有进货记录的方法
+ * @return 包含所有进货记录的向量
+ */
@Override
public Vector findAllinRecord() {
- Vector inRecords = new Vector();
- Connection conn = JDBCUtil.getConn();
- PreparedStatement preparedStatement = null;
- ResultSet resultSet=null;
-
- String SQL = "select * from inRecord";
-
+ Vector inRecords = new Vector(); // 创建一个向量用于存储进货记录
+ Connection conn = JDBCUtil.getConn(); // 获取数据库连接
+ PreparedStatement preparedStatement = null; // 初始化预编译语句对象
+ ResultSet resultSet=null; // 初始化结果集对象
+
+ String SQL = "select * from inRecord"; // SQL查询语句,选择所有进货记录
+
try {
- preparedStatement = conn.prepareStatement(SQL);
- resultSet = preparedStatement.executeQuery();
- while(resultSet.next()) {
- InRecord inRecord = new InRecord();
- inRecord.setiNumber(resultSet.getString("iNumber"));
- inRecord.setSum(resultSet.getInt("sum"));
- inRecord.setInPrice(resultSet.getFloat("inPrice"));
- inRecords.add(inRecord);
+ preparedStatement = conn.prepareStatement(SQL); // 准备SQL语句
+ resultSet = preparedStatement.executeQuery(); // 执行查询
+ while(resultSet.next()) { // 遍历结果集
+ InRecord inRecord = new InRecord(); // 创建一个新的进货记录对象
+ inRecord.setiNumber(resultSet.getString("iNumber")); // 设置进货单号
+ inRecord.setSum(resultSet.getInt("sum")); // 设置进货数量
+ inRecord.setInPrice(resultSet.getFloat("inPrice")); // 设置进货价格
+ inRecords.add(inRecord); // 将进货记录对象添加到向量中
}
-
- } catch (SQLException e) {
- e.printStackTrace();
- } finally {
- JDBCUtil.close(resultSet, preparedStatement, conn);
+
+ } catch (SQLException e) { // 捕获SQL异常
+ e.printStackTrace(); // 打印异常堆栈信息
+ } finally { // 无论是否发生异常,都会执行的代码块
+ JDBCUtil.close(resultSet, preparedStatement, conn); // 关闭结果集、预编译语句和数据库连接
}
- return inRecords;
+ return inRecords; // 返回存储所有进货记录的向量
}
- @Override
+
+ /**
+ * 根据进货单号查询进货记录
+ *
+ * @param iNumber 进货单号
+ * @return 包含符合条件的进货记录的向量
+ */
+@Override
public Vector findByIdinRecord(String iNumber) {
- InRecord inRecord;
- Vector v = new Vector();
- Connection conn = JDBCUtil.getConn();
- PreparedStatement preparedStatement = null;
- ResultSet resultSet = null;
+ InRecord inRecord; // 声明一个进货记录对象
+ Vector v = new Vector(); // 创建一个向量用于存储进货记录
+ Connection conn = JDBCUtil.getConn(); // 获取数据库连接
+ PreparedStatement preparedStatement = null; // 初始化预编译语句对象
+ ResultSet resultSet = null; // 初始化结果集对象
try {
- preparedStatement = conn.prepareStatement("select * from inRecord where iNumber = ?");
- preparedStatement.setString(1, iNumber);
- resultSet = preparedStatement.executeQuery();
- while(resultSet.next()) {
- inRecord = new InRecord();
- inRecord.setiNumber(resultSet.getString("iNumber"));
- inRecord.setId(resultSet.getString("id"));
- inRecord.setSum(resultSet.getInt("sum"));
- inRecord.setInPrice(resultSet.getFloat("Price"));
- v.add(inRecord);
- }
-
- } catch (SQLException e) {
- e.printStackTrace();
- } finally {
- JDBCUtil.close(resultSet, preparedStatement, conn);
+ preparedStatement = conn.prepareStatement("select * from inRecord where iNumber = ?"); // 准备SQL查询语句
+ preparedStatement.setString(1, iNumber); // 设置查询参数
+ resultSet = preparedStatement.executeQuery(); // 执行查询
+ while(resultSet.next()) { // 遍历结果集
+ inRecord = new InRecord(); // 创建一个新的进货记录对象
+ inRecord.setiNumber(resultSet.getString("iNumber")); // 设置进货单号
+ inRecord.setId(resultSet.getString("id")); // 设置商品ID
+ inRecord.setSum(resultSet.getInt("sum")); // 设置进货数量
+ inRecord.setInPrice(resultSet.getFloat("Price")); // 设置进货价格
+ v.add(inRecord); // 将进货记录对象添加到向量中
+ }
+
+ } catch (SQLException e) { // 捕获SQL异常
+ e.printStackTrace(); // 打印异常堆栈信息
+ } finally { // 无论是否发生异常,都会执行的代码块
+ JDBCUtil.close(resultSet, preparedStatement, conn); // 关闭结果集、预编译语句和数据库连接
}
- return v;
+ return v; // 返回存储进货记录的向量
}
+
@Override
- public int addinRecord(InRecord ir) {
- int flag = 0;
-
- String iNumber = ir.getiNumber();
- int sum = ir.getSum();
- Float inPrice = ir.getInPrice();
-
- Connection conn = JDBCUtil.getConn();
- PreparedStatement preparedStatement = null;
-
+ // 该方法用于将进货记录添加到数据库中。
+// 参数 ir 是一个包含进货信息的对象。
+// 返回值 flag 表示插入的结果,1表示成功,-1表示失败。
+public int addinRecord(InRecord ir) {
+ int flag = 0; // 初始化标志为0
+
+ String iNumber = ir.getiNumber(); // 获取进货单号
+ int sum = ir.getSum(); // 获取进货数量
+ Float inPrice = ir.getInPrice(); // 获取进货价格
+
+ Connection conn = JDBCUtil.getConn(); // 获取数据库连接
+ PreparedStatement preparedStatement = null; // 初始化预编译语句对象
+
try {
preparedStatement = conn.prepareStatement
- ("insert into inRecord values (?,?,?)");
- preparedStatement.setString(1, iNumber);
- preparedStatement.setInt(2, sum);
- preparedStatement.setFloat(3, inPrice);
- preparedStatement.executeUpdate();
- flag = 1;
- } catch (SQLException e) {
- flag = -1;
- e.printStackTrace();
- } finally {
- JDBCUtil.close(null,preparedStatement, conn);
+ ("insert into inRecord values (?,?,?)"); // 准备SQL插入语句
+ preparedStatement.setString(1, iNumber); // 设置进货单号
+ preparedStatement.setInt(2, sum); // 设置进货数量
+ preparedStatement.setFloat(3, inPrice); // 设置进货价格
+ preparedStatement.executeUpdate(); // 执行插入操作
+ flag = 1; // 设置标志为1,表示插入成功
+ } catch (SQLException e) { // 捕获SQL异常
+ flag = -1; // 设置标志为-1,表示插入失败
+ e.printStackTrace(); // 打印异常堆栈信息
+ } finally { // 无论是否发生异常,都会执行的代码块
+ JDBCUtil.close(null,preparedStatement, conn); // 关闭预编译语句和数据库连接
}
-
- return flag;
+
+ return flag; // 返回插入结果标志
}
- @Override
+
+ // 删除进货记录方法,根据进货单号进行删除操作
+@Override
public int deleteinRecord(String iNumber) {
- int flag = 0;
-
- Connection conn = JDBCUtil.getConn();
- PreparedStatement preparedStatement = null;
-
+ int flag = 0; // 初始化标志为0
+
+ Connection conn = JDBCUtil.getConn(); // 获取数据库连接
+ PreparedStatement preparedStatement = null; // 初始化预编译语句对象
+
try {
preparedStatement = conn.prepareStatement
- ("delete from inRecord where iNumber = ?");
- preparedStatement.setString(1, iNumber);
- preparedStatement.executeUpdate();
- flag = 1;
- } catch (SQLException e) {
- flag = -1;
- e.printStackTrace();
- } finally {
- JDBCUtil.close(null,preparedStatement, conn);
+ ("delete from inRecord where iNumber = ?"); // 准备SQL删除语句
+ preparedStatement.setString(1, iNumber); // 设置进货单号
+ preparedStatement.executeUpdate(); // 执行删除操作
+ flag = 1; // 设置标志为1,表示删除成功
+ } catch (SQLException e) { // 捕获SQL异常
+ flag = -1; // 设置标志为-1,表示删除失败
+ e.printStackTrace(); // 打印异常堆栈信息
+ } finally { // 无论是否发生异常,都会执行的代码块
+ JDBCUtil.close(null,preparedStatement, conn); // 关闭预编译语句和数据库连接
}
- return flag;
+ return flag; // 返回删除结果标志
}
- public boolean insertInRecord(String iNumber,Production p) {
- boolean flag = false;
- Connection conn = JDBCUtil.getConn();
- PreparedStatement preparedStatement = null;
-
+ /**
+ * 将进货记录插入到数据库中
+ *
+ * @param iNumber 进货单号
+ * @param p 进货的商品对象
+ * @return 成功插入返回true,失败返回false
+ */
+public boolean insertInRecord(String iNumber,Production p) {
+ boolean flag = false; // 初始化标志为false
+ Connection conn = JDBCUtil.getConn(); // 获取数据库连接
+ PreparedStatement preparedStatement = null; // 初始化预编译语句对象
+
try {
- preparedStatement = conn.prepareStatement("insert into inRecord values(?,?,?,?)");
- preparedStatement.setString(1, iNumber);
- preparedStatement.setString(2, p.getId());
- preparedStatement.setInt(3,p.getSum());
- preparedStatement.setFloat(4, p.getPrice());
-
- if(preparedStatement.executeUpdate()==1)
- flag = true;
- } catch (SQLException e) {
- e.printStackTrace();
- } finally {
- JDBCUtil.close(null,preparedStatement, conn);
+ preparedStatement = conn.prepareStatement("insert into inRecord values(?,?,?,?)"); // 准备SQL插入语句
+ preparedStatement.setString(1, iNumber); // 设置进货单号
+ preparedStatement.setString(2, p.getId()); // 设置商品ID
+ preparedStatement.setInt(3,p.getSum()); // 设置进货数量
+ preparedStatement.setFloat(4, p.getPrice()); // 设置进货价格
+
+ if(preparedStatement.executeUpdate()==1) // 执行插入操作
+ flag = true; // 如果成功执行插入,设置标志为true
+ } catch (SQLException e) { // 捕获SQL异常
+ e.printStackTrace(); // 打印异常堆栈信息
+ } finally { // 无论是否发生异常,都会执行的代码块
+ JDBCUtil.close(null,preparedStatement, conn); // 关闭预编译语句和数据库连接
}
- return flag;
+ return flag; // 返回插入结果标志
}
-
-
-
-}
+}
\ No newline at end of file
diff --git a/Supermarket/src/com/lingnan/supermarket/dialog/ChangeStatusDialog.java b/Supermarket/src/com/lingnan/supermarket/dialog/ChangeStatusDialog.java
index a5c06d8..637df04 100644
--- a/Supermarket/src/com/lingnan/supermarket/dialog/ChangeStatusDialog.java
+++ b/Supermarket/src/com/lingnan/supermarket/dialog/ChangeStatusDialog.java
@@ -1,191 +1,184 @@
-package com.lingnan.supermarket.dialog; // 声明当前类所在的包
-
-import java.awt.Container; // 导入AWT容器类
-import java.awt.FlowLayout; // 导入流式布局类
-import java.awt.event.ActionEvent; // 导入动作事件类
-import java.awt.event.ActionListener; // 导入动作监听器接口
-import java.awt.event.ItemEvent; // 导入项目事件类
-import java.awt.event.ItemListener; // 导入项目监听器接口
-import java.util.Vector; // 导入向量类,用于存储对象集合
-
-import javax.swing.JButton; // 导入Swing按钮组件
-import javax.swing.JComboBox; // 导入Swing下拉框组件
-import javax.swing.JDialog; // 导入Swing对话框组件
-import javax.swing.JFrame; // 导入Swing顶层窗口组件
-import javax.swing.JLabel; // 导入Swing标签组件
-import javax.swing.JOptionPane; // 导入Swing对话框工具类
-import javax.swing.JPanel; // 导入Swing面板组件
-import javax.swing.JTable; // 导入Swing表格组件
-import javax.swing.JTextField; // 导入Swing文本框组件
-
-import com.lingnan.supermarket.*; // 导入超市项目相关包
-import com.lingnan.supermarket.dao.UserService; // 导入用户服务接口
-import com.lingnan.supermarket.dao.impl.BufferImpl; // 导入缓冲区实现类
-import com.lingnan.supermarket.dao.impl.UserServiceImpl; // 导入用户服务实现类
-import com.lingnan.supermarket.dao.impl.inOrderServiceImpl; // 导入入库订单服务实现类
-import com.lingnan.supermarket.dao.impl.inRecordServiceImpl; // 导入入库记录服务实现类
-import com.lingnan.supermarket.dao.impl.productionImpl; // 导入产品服务实现类
-import com.lingnan.supermarket.dao.impl.storageRecordImpl; // 导入库存记录服务实现类
-import com.lingnan.supermarket.dto.Buffer; // 导入缓冲区数据传输对象
-import com.lingnan.supermarket.dto.InOrder; // 导入入库订单数据传输对象
-import com.lingnan.supermarket.dto.InRecord; // 导入入库记录数据传输对象
-import com.lingnan.supermarket.dto.Production; // 导入产品数据传输对象
-import com.lingnan.supermarket.dto.User; // 导入用户数据传输对象
-import com.lingnan.supermarket.table.OutTableModel; // 导入出库表格模型类
-import com.lingnan.supermarket.utils.TimeAndOrder; // 导入时间和订单工具类
-import com.lingnan.supermarket.view.HomeView; // 导入主页视图类
-import com.lingnan.supermarket.view.OutView; // 导入出库视图类
-import com.lingnan.supermarket.view.ProdCatalogView.MyItemListener; // 导入产品目录视图的内部类MyItemListener
-
-
-
-public class ChangeStatusDialog extends JDialog implements ActionListener{ // 定义一个对话框类,实现动作监听器接口
-
- private JPanel statusPanel,opePanel,titlePanel,comboPanel; // 声明面板变量,用于不同的功能区域
-
- private JLabel titleLabel,statusLabel; // 声明标签变量,用于显示标题和状态信息
-
- private JButton UpdateBtn,cancelBtn; // 声明按钮变量,用于更新和取消操作
-
- private String iNumber; // 订单编号
- private String status; // 订单状态
-
- private Vector InRecords; // 存储入库记录的向量
-
- private JComboBox combo; // 下拉框组件,用于选择订单状态
-
- private String[] log = { "待入库", "已入库", "取消订单" }; // 订单状态数组
-
- private inRecordServiceImpl inRecordImpl; // 入库记录服务实现类
-
- private int catalog; // 分类标识
-
- private productionImpl productionImpl; // 产品服务实现类
-
- // 构造方法,接收父窗口、订单编号和订单状态作为参数
+package com.lingnan.supermarket.dialog;
+
+import java.awt.Container;
+import java.awt.FlowLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+import java.util.Vector;
+
+import javax.swing.JButton;
+import javax.swing.JComboBox;
+import javax.swing.JDialog;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JTable;
+import javax.swing.JTextField;
+
+import com.lingnan.supermarket.*;
+import com.lingnan.supermarket.dao.UserService;
+import com.lingnan.supermarket.dao.impl.BufferImpl;
+import com.lingnan.supermarket.dao.impl.UserServiceImpl;
+import com.lingnan.supermarket.dao.impl.inOrderServiceImpl;
+import com.lingnan.supermarket.dao.impl.inRecordServiceImpl;
+import com.lingnan.supermarket.dao.impl.productionImpl;
+import com.lingnan.supermarket.dao.impl.storageRecordImpl;
+import com.lingnan.supermarket.dto.Buffer;
+import com.lingnan.supermarket.dto.InOrder;
+import com.lingnan.supermarket.dto.InRecord;
+import com.lingnan.supermarket.dto.Production;
+import com.lingnan.supermarket.dto.User;
+import com.lingnan.supermarket.table.OutTableModel;
+import com.lingnan.supermarket.utils.TimeAndOrder;
+import com.lingnan.supermarket.view.HomeView;
+import com.lingnan.supermarket.view.OutView;
+import com.lingnan.supermarket.view.ProdCatalogView.MyItemListener;
+
+
+public class ChangeStatusDialog extends JDialog implements ActionListener{
+
+
+ private JPanel statusPanel,opePanel,titlePanel,comboPanel;
+ private JLabel titleLabel,statusLabel;
+ private JButton UpdateBtn,cancelBtn;
+
+ private String iNumber;
+ private String status;
+
+ private Vector InRecords;
+
+ private JComboBox combo;
+
+ private String[] log = { "待入库", "已入库", "取消订单" };
+
+ private inRecordServiceImpl inRecordImpl;
+
+ private int catalog;
+
+
+ private productionImpl productionImpl;
+
+
+
+
public ChangeStatusDialog(JFrame parent,String iNumber,String status) {
- super(parent,"修改进货订单状态"); // 调用父类构造方法,设置对话框标题
-
- setSize(400,200); // 设置对话框大小
- setLocationRelativeTo(null); // 设置对话框相对于父窗口居中
- setModal(true); // 设置对话框为模态
- setResizable(false); // 设置对话框大小不可变
- this.setLayout(new FlowLayout()); // 设置对话框布局为流式布局
-
- this.iNumber=iNumber; // 将传入的订单编号赋值给成员变量
- this.status=status; // 将传入的订单状态赋值给成员变量
- initView(); // 调用方法初始化视图
+ super(parent,"修改进货订单状态");
+
+ setSize(400,200);
+ setLocationRelativeTo(null);
+ setModal(true);
+ setResizable(false);
+ this.setLayout(new FlowLayout());
+
+ this.iNumber=iNumber;
+ this.status=status;
+ initView();
}
-
-
-
-
-
-
-
- private void initView() { // 初始化视图的私有方法
-
- titlePanel = new JPanel(); // 创建标题面板
- titleLabel = new JLabel("修改订单为"+iNumber+"的状态"); // 创建标题标签,显示订单编号
- titlePanel.add(titleLabel); // 将标题标签添加到标题面板
-
- statusPanel = new JPanel(); // 创建状态面板
- statusLabel = new JLabel("当前状态:"+status); // 创建状态标签,显示当前订单状态
- statusPanel.add(statusLabel); // 将状态标签添加到状态面板
-
- comboPanel = new JPanel(); // 创建下拉框面板
- combo = new JComboBox(log); // 创建下拉框,使用订单状态数组初始化
- combo.addItemListener(new MyItemListener()); // 为下拉框添加项目监听器
- comboPanel.add(combo); // 将下拉框添加到下拉框面板
-
- opePanel = new JPanel(); // 创建操作按钮面板
- UpdateBtn = new JButton("更改"); // 创建更改按钮
- cancelBtn = new JButton("取消"); // 创建取消按钮
- UpdateBtn.addActionListener(this); // 为更改按钮添加动作监听器
- cancelBtn.addActionListener(this); // 为取消按钮添加动作监听器
- opePanel.add(UpdateBtn); // 将更改按钮添加到操作按钮面板
- opePanel.add(cancelBtn); // 将取消按钮添加到操作按钮面板
-
- Container container = getContentPane(); // 获取内容面板
- container.add(titlePanel,"North"); // 将标题面板添加到内容面板的北部
- container.add(statusPanel,"Center"); // 将状态面板添加到内容面板的中心
- container.add(comboPanel,"South"); // 将下拉框面板添加到内容面板的南部
- container.add(opePanel); // 将操作按钮面板添加到内容面板
-
- }
-
- public class MyItemListener implements ItemListener { // 定义一个内部类,实现项目监听器接口
+
+
+
+
+ private void initView() {
+
+ titlePanel = new JPanel();
+ titleLabel = new JLabel("修改订单为"+iNumber+"的状态");
+ titlePanel.add(titleLabel);
+
+
+ statusPanel = new JPanel();
+ statusLabel = new JLabel("当前状态:"+status);
+ statusPanel.add(statusLabel);
+
+
+ comboPanel = new JPanel();
+ combo = new JComboBox(log);/*下拉表*/
+ combo.addItemListener(new MyItemListener());
+ comboPanel.add(combo);
+
+
+ opePanel = new JPanel();
+ UpdateBtn = new JButton("更改");
+ cancelBtn = new JButton("取消");
+ UpdateBtn.addActionListener(this);
+ cancelBtn.addActionListener(this);
+ opePanel.add(UpdateBtn);
+ opePanel.add(cancelBtn);
+
+ Container container = getContentPane();
+ container.add(titlePanel,"North");
+ container.add(statusPanel,"Center");
+ container.add(comboPanel,"South");
+ container.add(opePanel);
+
+
+ }
+
+ public class MyItemListener implements ItemListener {
@Override
- public void itemStateChanged(ItemEvent e) { // 实现项目状态改变时的处理方法
- JComboBox cb = (JComboBox) e.getSource(); // 获取事件源,即下拉框
- String catalog1 = (String) cb.getSelectedItem(); // 获取下拉框选中的项
- if (catalog1.equals("已入库")) { // 如果选中项为"已入库"
- catalog = 1; // 将分类标识设置为1
-
+ public void itemStateChanged(ItemEvent e) {
+ JComboBox cb = (JComboBox) e.getSource();
+ String catalog1 = (String) cb.getSelectedItem();
+ if (catalog1.equals("已入库")) {
+ catalog = 1;
}
- else if (catalog1.equals("待入库")) { // 如果选中项为"待入库"
- catalog = 2; // 将分类标识设置为2
- } else if (catalog1.equals("取消订单")) { // 如果选中项为"取消订单"
- catalog = 3; // 将分类标识设置为3
-
+ else if (catalog1.equals("待入库")) {
+ catalog = 2;
+ } else if (catalog1.equals("取消订单")) {
+ catalog = 3;
}
-
}
}
+
-
-
- public Vector getVector(){ // 定义一个公共方法,返回一个InRecord类型的Vector
- return InRecords; // 返回成员变量InRecords,它是一个包含InRecord对象的Vector
+ public Vector getVector(){
+ return InRecords;
}
-
-
-
-
-
+
@Override
- public void actionPerformed(ActionEvent e) { // 重写actionPerformed方法以响应按钮点击事件
- Object source = e.getSource(); // 获取事件源
- if(source==UpdateBtn){ // 如果事件源是更新按钮
- System.out.println("此时此刻的catalog为"+catalog); // 打印当前catalog的值
+ public void actionPerformed(ActionEvent e) {
+ Object source = e.getSource();
+ if(source==UpdateBtn){
+ System.out.println("此时此刻的catalog为"+catalog);
//这里修改进货订单表的状态*/
- inOrderServiceImpl inOrderImpl = new inOrderServiceImpl(); // 创建进货订单服务实现类的实例
- inRecordServiceImpl inRecordImpl = new inRecordServiceImpl(); // 创建进货记录服务实现类的实例
- storageRecordImpl storageRecordImpl = new storageRecordImpl(); // 创建库存记录服务实现类的实例
- productionImpl = new productionImpl(); // 创建产品服务实现类的实例
- Production p ; // 声明产品对象
+ inOrderServiceImpl inOrderImpl = new inOrderServiceImpl();
+ inRecordServiceImpl inRecordImpl = new inRecordServiceImpl();
+ storageRecordImpl storageRecordImpl = new storageRecordImpl();
+ productionImpl = new productionImpl();
+ Production p ;
//获得订单信息
-
+
//修改状态
- inOrderImpl.updateInOrderStatus(iNumber,catalog); // 更新进货订单的状态
+ inOrderImpl.updateInOrderStatus(iNumber,catalog);
//确认进货,修改状态并对库存和库存日志修改
- if(catalog==1) { // 如果catalog等于1
+ if(catalog==1) {
//获得订单详细信息
- this.InRecords = inRecordImpl.findByIdinRecord(iNumber); // 根据订单编号查找进货记录
+ this.InRecords = inRecordImpl.findByIdinRecord(iNumber);
//遍历添加库存
String s[]=TimeAndOrder.TimeAndOrder("");/*生成时间*/
- for(InRecord i:InRecords) { // 遍历进货记录
+ for(InRecord i:InRecords) {
//查找到原来的价格
//更新库存表
- productionImpl.updateProductionSum(i.getId(),i.getSum()); // 更新产品库存数量
+ productionImpl.updateProductionSum(i.getId(),i.getSum());
//增加库存日志表
- storageRecordImpl.insertStorageRecord(iNumber,s[1], i.getId(),"+", i.getSum()); // 插入库存记录
+ storageRecordImpl.insertStorageRecord(iNumber,s[1], i.getId(),"+", i.getSum());
}
-
- JOptionPane.showMessageDialog(this,"订单已确认,库存更新成功","提示",JOptionPane.INFORMATION_MESSAGE); // 显示消息对话框
- }
+
+ JOptionPane.showMessageDialog(this,"订单已确认,库存更新成功","提示",JOptionPane.INFORMATION_MESSAGE);
+ }
/*刷新首页*/
- this.dispose(); // 关闭当前对话框
+ this.dispose();
}
- else if(source == cancelBtn) { // 如果事件源是取消按钮
-
- this.dispose(); // 关闭当前对话框
-
+ else if(source == cancelBtn) {
+
+ this.dispose();
}
}
}
diff --git a/Supermarket/src/com/lingnan/supermarket/dialog/ChangeSumDialog.java b/Supermarket/src/com/lingnan/supermarket/dialog/ChangeSumDialog.java
index df38fed..5c95dc2 100644
--- a/Supermarket/src/com/lingnan/supermarket/dialog/ChangeSumDialog.java
+++ b/Supermarket/src/com/lingnan/supermarket/dialog/ChangeSumDialog.java
@@ -1,100 +1,99 @@
-package com.lingnan.supermarket.dialog; // 声明当前类所在的包
-
-import java.awt.Container; // 导入AWT容器类
-import java.awt.FlowLayout; // 导入流式布局类
-import java.awt.event.ActionEvent; // 导入动作事件类
-import java.awt.event.ActionListener; // 导入动作监听器接口
-import java.util.Vector; // 导入向量类,用于存储对象集合
-
-import javax.swing.JButton; // 导入Swing按钮组件
-import javax.swing.JDialog; // 导入Swing对话框组件
-import javax.swing.JFrame; // 导入Swing顶层窗口组件
-import javax.swing.JLabel; // 导入Swing标签组件
-import javax.swing.JOptionPane; // 导入Swing对话框工具类
-import javax.swing.JPanel; // 导入Swing面板组件
-import javax.swing.JTable; // 导入Swing表格组件
-import javax.swing.JTextField; // 导入Swing文本框组件
-
-import com.lingnan.supermarket.*; // 导入超市项目相关的包
-import com.lingnan.supermarket.dao.UserService; // 导入用户服务接口
-import com.lingnan.supermarket.dao.impl.BufferImpl; // 导入缓冲区服务实现类
-import com.lingnan.supermarket.dao.impl.UserServiceImpl; // 导入用户服务实现类
-import com.lingnan.supermarket.dao.impl.productionImpl; // 导入产品服务实现类
-import com.lingnan.supermarket.dto.Buffer; // 导入缓冲区数据传输对象
-import com.lingnan.supermarket.dto.Production; // 导入产品数据传输对象
-import com.lingnan.supermarket.dto.User; // 导入用户数据传输对象
-import com.lingnan.supermarket.table.OutTableModel; // 导入出库表格模型类
-import com.lingnan.supermarket.view.OutView; // 导入出库视图类
-
-
-
-public class ChangeSumDialog extends JDialog implements ActionListener{ // 定义一个对话框类ChangeSumDialog,继承自JDialog并实现ActionListener接口
-
- private JPanel prodIdPanel,sumPanel,phonePanel,opePanel,titlePanel; // 声明多个面板变量,用于布局不同的组件
-
- private JLabel prodIdLabel,sumLabel,titleLabel; // 声明标签变量,用于显示文本
- private JTextField prodIdTF,sumTF; // 声明文本框变量,用于输入数据
-
- private JButton UpdateBtn,cancelBtn; // 声明按钮变量,用于执行更新和取消操作
-
- private OutTableModel outTableModel = new OutTableModel(); // 创建出库表格模型实例
-
- private Buffer buffer; // 声明缓冲区对象变量
-
- private String prodId,mark; /*mark用来标记是进货还是出货系统*/ // 声明字符串变量,用于存储产品ID和标记
-
- private Vector v; // 声明向量变量,用于存储产品集合
-
- public ChangeSumDialog(JFrame parent,String prodId,String mark,Vector v) { // 构造方法,接收父窗口、产品ID、标记和产品集合作为参数
- super(parent,"更改商品数量"); // 调用父类构造方法,设置对话框标题
-
- setSize(350,200); // 设置对话框大小
- setLocationRelativeTo(null); // 设置对话框相对于父窗口居中显示
- setModal(true); // 设置对话框为模态
- setResizable(false); // 设置对话框不可调整大小
- this.setLayout(new FlowLayout()); // 设置对话框布局为流式布局
-
- this.prodId=prodId; // 将参数prodId赋值给成员变量prodId
- this.mark=mark; // 将参数mark赋值给成员变量mark
- this.v = v; // 将参数v赋值给成员变量v
- initView(); // 初始化视图
-
+package com.lingnan.supermarket.dialog;
+
+import java.awt.Container;
+import java.awt.FlowLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.Vector;
+
+import javax.swing.JButton;
+import javax.swing.JDialog;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JTable;
+import javax.swing.JTextField;
+
+import com.lingnan.supermarket.*;
+import com.lingnan.supermarket.dao.UserService;
+import com.lingnan.supermarket.dao.impl.BufferImpl;
+import com.lingnan.supermarket.dao.impl.UserServiceImpl;
+import com.lingnan.supermarket.dao.impl.productionImpl;
+import com.lingnan.supermarket.dto.Buffer;
+import com.lingnan.supermarket.dto.Production;
+import com.lingnan.supermarket.dto.User;
+import com.lingnan.supermarket.table.OutTableModel;
+import com.lingnan.supermarket.view.OutView;
+
+
+public class ChangeSumDialog extends JDialog implements ActionListener{
+
+
+ private JPanel prodIdPanel,sumPanel,phonePanel,opePanel,titlePanel;
+
+ private JLabel prodIdLabel,sumLabel,titleLabel;
+ private JTextField prodIdTF,sumTF;
+
+ private JButton UpdateBtn,cancelBtn;
+
+
+ private OutTableModel outTableModel = new OutTableModel();
+
+ private Buffer buffer;
+
+ private String prodId,mark;/*mark用来标记是进货还是出货系统*/
+
+ private Vector v;
+
+ public ChangeSumDialog(JFrame parent,String prodId,String mark,Vector v) {
+ super(parent,"更改商品数量");
+
+ setSize(350,200);
+ setLocationRelativeTo(null);
+ setModal(true);
+ setResizable(false);
+ this.setLayout(new FlowLayout());
+
+ this.prodId=prodId;
+ this.mark=mark;
+ this.v = v;
+ initView();
}
-
- public ChangeSumDialog(JFrame parent,String prodId,String mark) { // 另一个构造方法,接收父窗口、产品ID和标记作为参数
- super(parent,"更改商品数量"); // 调用父类构造方法,设置对话框标题为"更改商品数量"
-
- setSize(350,200); // 设置对话框大小为350x200像素
- setLocationRelativeTo(null); // 设置对话框位置相对于父窗口居中显示
- setModal(true); // 设置对话框为模态,即用户必须处理完此对话框才能操作其他窗口
- setResizable(false); // 设置对话框大小不可变
- this.setLayout(new FlowLayout()); // 设置对话框布局为流式布局
-
- this.prodId=prodId; // 将传入的产品ID赋值给成员变量prodId
- this.mark=mark; // 将传入的标记赋值给成员变量mark
- initView(); // 调用方法初始化视图
-
+
+ public ChangeSumDialog(JFrame parent,String prodId,String mark) {
+ super(parent,"更改商品数量");
+
+ setSize(350,200);
+ setLocationRelativeTo(null);
+ setModal(true);
+ setResizable(false);
+ this.setLayout(new FlowLayout());
+
+ this.prodId=prodId;
+ this.mark=mark;
+ initView();
}
-
-
-
-
-
+
+
+
+
+
private void initView() {
titlePanel = new JPanel();
titleLabel = new JLabel("修改商品id为"+prodId+"的数量");
titlePanel.add(titleLabel);
-
-
+
+
sumPanel = new JPanel();
sumLabel = new JLabel("数量");
sumTF = new JTextField(15);
sumPanel.add(sumLabel);
sumPanel.add(sumTF);
-
-
+
+
opePanel = new JPanel();
UpdateBtn = new JButton("更改");
cancelBtn = new JButton("取消");
@@ -102,13 +101,13 @@ public class ChangeSumDialog extends JDialog implements ActionListener{ // 定
cancelBtn.addActionListener(this);
opePanel.add(UpdateBtn);
opePanel.add(cancelBtn);
-
+
Container container = getContentPane();
container.add(titlePanel);
container.add(sumPanel);
container.add(opePanel);
- }
-
+ }
+
public Vector getVector(){
return v;
}
@@ -117,13 +116,13 @@ public class ChangeSumDialog extends JDialog implements ActionListener{ // 定
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
if(source==UpdateBtn){
-
+
//TODO 参数校验
/*/返回这个记录的信息*/
-
+
int sum = Integer.parseInt(sumTF.getText());/*获得数量*/
System.out.println("所要修改的数量sum="+sum);
-
+
if(sumTF.getText().equals("")) {
JOptionPane.showMessageDialog(this,"请输入完整","提示",JOptionPane.ERROR_MESSAGE);
return;
@@ -133,27 +132,27 @@ public class ChangeSumDialog extends JDialog implements ActionListener{ // 定
JOptionPane.showMessageDialog(this,"请输入大于0的数量","提示",JOptionPane.ERROR_MESSAGE);
return;
}
-
-
-
-
+
+
+
+
BufferImpl bufferImpl = new BufferImpl();
-
+
productionImpl productionImpl = new productionImpl();
Production production = new Production();
production = productionImpl.findByIdProduction(prodId);
-
+
Buffer buffer = new Buffer();
boolean flag = false;
-
+
if(mark=="In") {/*进货界面*/
for(Production p:v) {
if(p.getId().equals(prodId))
p.setSum(sum);
}
-
+
}
-
+
else if(mark=="Out") {/*出货界面*/
buffer = bufferImpl.findInBufferbyId(prodId);
if(buffer!=null) {/*记录有这条数据*/
@@ -161,25 +160,25 @@ public class ChangeSumDialog extends JDialog implements ActionListener{ // 定
JOptionPane.showMessageDialog(this,"库存数量为:"+production.getSum()+",修改数量请勿超过库存","提示",JOptionPane.ERROR_MESSAGE);
else
flag = bufferImpl.UpdateInBufferById(prodId, sum);
-
+
}
-
+
}
-
+
if(flag = true) {/*如果修改成功*/
-
+
JOptionPane.showMessageDialog(this,"修改成功","提示",JOptionPane.INFORMATION_MESSAGE);
dispose();
-
+
}else {
JOptionPane.showMessageDialog(this,"修改失败","提示",JOptionPane.ERROR_MESSAGE);
dispose();
}
}
-
+
else if(source == cancelBtn) {
-
+
this.dispose();
}
}
diff --git a/Supermarket/src/com/lingnan/supermarket/dialog/InDialog.java b/Supermarket/src/com/lingnan/supermarket/dialog/InDialog.java
index 97acc56..78ff81d 100644
--- a/Supermarket/src/com/lingnan/supermarket/dialog/InDialog.java
+++ b/Supermarket/src/com/lingnan/supermarket/dialog/InDialog.java
@@ -1,232 +1,225 @@
-package com.lingnan.supermarket.dialog; // 声明当前类所在的包
-
-import java.awt.Container; // 导入AWT容器类
-import java.awt.FlowLayout; // 导入流式布局类
-import java.awt.event.ActionEvent; // 导入动作事件类
-import java.awt.event.ActionListener; // 导入动作监听器接口
-import java.awt.event.ItemEvent; // 导入项目事件类
-import java.awt.event.ItemListener; // 导入项目监听器接口
-import java.util.Vector; // 导入向量类,用于存储对象集合
-
-import javax.swing.JButton; // 导入按钮组件类
-import javax.swing.JComboBox; // 导入下拉框组件类
-import javax.swing.JDialog; // 导入对话框组件类
-import javax.swing.JFrame; // 导入顶层窗口类
-import javax.swing.JLabel; // 导入标签组件类
-import javax.swing.JOptionPane; // 导入对话框工具类
-import javax.swing.JPanel; // 导入面板组件类
-import javax.swing.JTable; // 导入表格组件类
-import javax.swing.JTextField; // 导入文本框组件类
-
-
-import com.lingnan.supermarket.*; // 导入超市项目相关的所有类
-import com.lingnan.supermarket.dao.UserService; // 导入用户服务接口
-import com.lingnan.supermarket.dao.impl.BufferImpl; // 导入缓冲区服务实现类
-import com.lingnan.supermarket.dao.impl.UserServiceImpl; // 导入用户服务实现类
-import com.lingnan.supermarket.dao.impl.productionImpl; // 导入产品服务实现类
-import com.lingnan.supermarket.dto.Buffer; // 导入缓冲区数据传输对象
-import com.lingnan.supermarket.dto.Production; // 导入产品数据传输对象
-import com.lingnan.supermarket.dto.User; // 导入用户数据传输对象
-import com.lingnan.supermarket.table.OutTableModel; // 导入出库表格模型类
-import com.lingnan.supermarket.view.InView; // 导入进货视图类
-import com.lingnan.supermarket.view.OutView; // 导出出库视图类
-import com.lingnan.supermarket.view.ProdCatalogView.MyItemListener; // 导入产品目录视图的内部类MyItemListener
-
-
-
-public class InDialog extends JDialog implements ActionListener{ // 定义一个对话框类InDialog,继承自JDialog并实现ActionListener接口
-
- private JPanel prodIdPanel,sumPanel,phonePanel,opePanel; // 声明面板变量,用于不同功能的面板
-
- private JLabel prodIdLabel,sumLabel; // 声明标签变量,用于显示文本
- private JTextField prodIdTF,sumTF; // 声明文本框变量,用于输入数据
-
- private JButton addBtn,cancelBtn; // 声明按钮变量,用于添加和取消操作
-
- private OutTableModel outTableModel = new OutTableModel(); // 创建出库表格模型实例
-
- private Production production; // 声明产品数据传输对象
- private productionImpl productionImpl; // 声明产品服务实现类
-
- private Vector v; // 声明产品集合变量
-
- private User user; // 声明用户数据传输对象
-
- private JFrame JFramparent; // 声明顶层窗口变量,用于存储父窗口
-
- private JComboBox combo; // 声明下拉框组件变量
- private String allProdId[] = null; // 声明字符串数组,用于存储所有产品ID
- private Vector vAll; // 声明产品集合变量,用于存储所有产品
- private static String catalog; // 声明静态字符串变量,用于存储分类信息
-
- public InDialog(JFrame parent,Vector v,User user) { // 构造方法,接收父窗口、产品集合和用户对象
- super(parent,"添加商品"); // 调用父类构造方法,设置对话框标题
-
- setSize(250,200); // 设置对话框大小
- setLocationRelativeTo(null); // 设置对话框居中显示
- setModal(true); // 设置对话框为模态
- setResizable(false); // 设置对话框不可调整大小
- this.setLayout(new FlowLayout()); // 设置对话框布局为流式布局
- JFramparent=parent; // 初始化父窗口变量
- this.v=v; // 初始化产品集合变量
- this.user = user; // 初始化用户对象
- initView(); // 初始化视图
-
+package com.lingnan.supermarket.dialog;
+
+import java.awt.Container;
+import java.awt.FlowLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+import java.util.Vector;
+
+import javax.swing.JButton;
+import javax.swing.JComboBox;
+import javax.swing.JDialog;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JTable;
+import javax.swing.JTextField;
+
+import com.lingnan.supermarket.*;
+import com.lingnan.supermarket.dao.UserService;
+import com.lingnan.supermarket.dao.impl.BufferImpl;
+import com.lingnan.supermarket.dao.impl.UserServiceImpl;
+import com.lingnan.supermarket.dao.impl.productionImpl;
+import com.lingnan.supermarket.dto.Buffer;
+import com.lingnan.supermarket.dto.Production;
+import com.lingnan.supermarket.dto.User;
+import com.lingnan.supermarket.table.OutTableModel;
+import com.lingnan.supermarket.view.InView;
+import com.lingnan.supermarket.view.OutView;
+import com.lingnan.supermarket.view.ProdCatalogView.MyItemListener;
+
+
+public class InDialog extends JDialog implements ActionListener{
+
+
+ private JPanel prodIdPanel,sumPanel,phonePanel,opePanel;
+
+ private JLabel prodIdLabel,sumLabel;
+ private JTextField prodIdTF,sumTF;
+
+ private JButton addBtn,cancelBtn;
+
+
+ private OutTableModel outTableModel = new OutTableModel();
+
+ private Production production;
+ private productionImpl productionImpl;
+
+ private Vector v;
+
+ private User user;
+
+ private JFrame JFramparent;
+
+ private JComboBox combo;
+ private String allProdId[] = null;
+ private Vector vAll;
+ private static String catalog;
+
+ public InDialog(JFrame parent,Vector v,User user) {
+ super(parent,"添加商品");
+
+ setSize(250,200);
+ setLocationRelativeTo(null);
+ setModal(true);
+ setResizable(false);
+ this.setLayout(new FlowLayout());
+ JFramparent=parent;
+ this.v=v;
+ this.user = user;
+ initView();
-
}
-
-
-
-
-
+
+
+
+
+
private void initView() {
- prodIdPanel = new JPanel(); // 创建一个面板用于显示产品编号
- prodIdLabel = new JLabel("编号"); // 创建一个标签显示"编号"
+ prodIdPanel = new JPanel();
+ prodIdLabel = new JLabel("编号");
+
- productionImpl= new productionImpl(); // 实例化产品服务实现类
- vAll=productionImpl.findAllproduction(); // 调用方法获取所有产品信息
- allProdId = new String[vAll.size()]; // 初始化字符串数组,用于存储所有产品ID
- for(int i=0;i(allProdId); // 创建下拉框,并使用产品ID数组初始化
- combo.addItemListener(new MyItemListener()); // 为下拉框添加项目监听器
-
-
- prodIdPanel.add(prodIdLabel); // 将标签添加到编号面板
- prodIdPanel.add(combo); // 将下拉框添加到编号面板
-
-
-
- sumPanel = new JPanel(); // 创建一个面板用于显示数量
- sumLabel = new JLabel("数量"); // 创建一个标签显示"数量"
- sumTF = new JTextField(10); // 创建一个文本框用于输入数量,宽度为10
- sumPanel.add(sumLabel); // 将标签添加到数量面板
- sumPanel.add(sumTF); // 将文本框添加到数量面板
-
-
- opePanel = new JPanel(); // 创建一个面板用于显示操作按钮
- addBtn = new JButton("添加"); // 创建一个按钮显示"添加"
- cancelBtn = new JButton("取消"); // 创建一个按钮显示"取消"
- addBtn.addActionListener(this); // 为添加按钮添加动作监听器
- cancelBtn.addActionListener(this); // 为取消按钮添加动作监听器
- opePanel.add(addBtn); // 将添加按钮添加到操作面板
- opePanel.add(cancelBtn); // 将取消按钮添加到操作面板
-
-
- Container container = getContentPane(); // 获取内容面板
- container.add(prodIdPanel); // 将编号面板添加到内容面板
- container.add(sumPanel); // 将数量面板添加到内容面板
- container.add(opePanel); // 将操作面板添加到内容面板
+ catalog = allProdId[0];
+ System.out.println(allProdId[0]);
+ combo = new JComboBox(allProdId);
+ combo.addItemListener(new MyItemListener());
+
+ prodIdPanel.add(prodIdLabel);
+ prodIdPanel.add(combo);
+
+
+
+ sumPanel = new JPanel();
+ sumLabel = new JLabel("数量");
+ sumTF = new JTextField(10);
+ sumPanel.add(sumLabel);
+ sumPanel.add(sumTF);
+
+
+ opePanel = new JPanel();
+ addBtn = new JButton("添加");
+ cancelBtn = new JButton("取消");
+ addBtn.addActionListener(this);
+ cancelBtn.addActionListener(this);
+ opePanel.add(addBtn);
+ opePanel.add(cancelBtn);
+
+ Container container = getContentPane();
+ container.add(prodIdPanel);
+ container.add(sumPanel);
+ container.add(opePanel);
}
-
+
/*将数组传到inview的刷新方法里面再刷新*/
- public Vector getVector(){ // 提供一个方法获取产品集合
+ public Vector getVector(){
return v;
}
-
+
+
//下拉框监听
- static class MyItemListener implements ItemListener{ // 定义一个内部类实现ItemListener接口
+ static class MyItemListener implements ItemListener{
@Override
- public void itemStateChanged(ItemEvent e) { // 实现项目状态改变时的处理方法
- JComboBox cb=(JComboBox)e.getSource(); // 获取事件源下拉框
- String select=(String) cb.getSelectedItem(); // 获取选中项的值
- catalog=select; // 更新分类信息为选中项的值
-
+ public void itemStateChanged(ItemEvent e) {
+ JComboBox cb=(JComboBox)e.getSource();
+ String select=(String) cb.getSelectedItem();
+ catalog=select;
}
-
+
}
-
-
-
-
-
-
-
+
+
+
+
+
+
+
@Override
public void actionPerformed(ActionEvent e) {
- Object source = e.getSource(); // 获取事件源
- if(source==addBtn){ // 如果事件源是添加按钮
+ Object source = e.getSource();
+ if(source==addBtn){
//1.判断是否存在这个商品
//2.如果存在就获取这条商品记录为一个对象
//3.判断购物缓冲区是否有这个记录
- //3.1如果有update数量和price
- //3.2如果没有就insert这条记录,把sum更新
+ //3.1如果有update数量和price
+ //3.2如果没有就insert这条记录,把sum更新
//保存到数据库
//关闭对话框
//刷新table
+
-
- String prodId =catalog; // 获取选中的商品ID
- System.out.println("proId="+prodId); // 打印商品ID
- System.out.println("vatalog="+catalog); // 打印分类信息
-
-
- if(sumTF.getText().equals("")) { // 判断数量文本框是否为空
+ String prodId =catalog;
+ System.out.println("proId="+prodId);
+ System.out.println("vatalog="+catalog);
+
+ if(sumTF.getText().equals("")) {
JOptionPane.showMessageDialog(this,"请输入完整","提示",JOptionPane.ERROR_MESSAGE);
return;
}
- int sum = Integer.parseInt(sumTF.getText()) ; // 将文本框中的数量转换为整数
+ int sum = Integer.parseInt(sumTF.getText()) ;
if(sum<0) {/*判断输入大于0*/
JOptionPane.showMessageDialog(this,"请输入大于0的数量","提示",JOptionPane.ERROR_MESSAGE);
return;
}
-
+
//TODO 参数校验
/*/判断是已添加,未添加还是不存在*/
- productionImpl productionImpl = new productionImpl(); // 实例化产品服务实现类
- production = new Production(); // 创建产品对象
- production = productionImpl.findByIdProduction(prodId); // 根据ID查找产品
+ productionImpl productionImpl = new productionImpl();
+ production = new Production();
+ production = productionImpl.findByIdProduction(prodId);
if(production!=null) {/*商品库有这个商品存在*/
- int mark = 0; // 标记变量,用于判断商品是否已存在于购物缓冲区
- for(Production p:v) { // 遍历购物缓冲区
-
-
+ int mark = 0;
+ for(Production p:v) {
+
if(p.getId().equals(prodId)){/*如果数组中存在相同商品就更新数量和价格*/
sum=p.getSum()+sum;/*数量*/
p.setSum(sum);
p.setPrice(sum*p.getInPrice());/*进货价格*/
- mark = 1; // 更新标记
+ mark = 1;
break;
}
-
+
}
if(mark==0) {/*插入新的*/
System.out.println("缓存区不存在,插入新的数据");
- production.setSum(sum);/*更新价格和数量后插入新的*/
+ production.setSum(sum);/*更新价格和数量后插入心的*/
production.setPrice(sum*production.getInPrice());
- v.add(production); // 将新产品添加到购物缓冲区
-
- }
-
- System.out.println("插入后v的大小"+v.size()); // 打印购物缓冲区大小
- this.dispose(); // 关闭对话框
- JOptionPane.showMessageDialog(this,"添加成功","提示",JOptionPane.ERROR_MESSAGE); // 显示添加成功消息
-
- }
+ v.add(production);
-
-
- else {/*商品库没有这个商品*/
- JOptionPane.showMessageDialog(this,"商品不存在","提示",JOptionPane.ERROR_MESSAGE); // 显示商品不存在消息
- }
+ }
+
+ System.out.println("插入后v的大小"+v.size());
+ this.dispose();
+ JOptionPane.showMessageDialog(this,"添加成功","提示",JOptionPane.ERROR_MESSAGE);
+
+
}
- else if(source == cancelBtn) { // 如果事件源是取消按钮
-
- this.dispose(); // 关闭对话框
+
+ else {/*商品库没有这个商品*/
+ JOptionPane.showMessageDialog(this,"商品不存在","提示",JOptionPane.ERROR_MESSAGE);
+ }
+ }
+ else if(source == cancelBtn) {
+
+ this.dispose();
}
}
-
}
diff --git a/Supermarket/src/com/lingnan/supermarket/dialog/ProductionDialog.java b/Supermarket/src/com/lingnan/supermarket/dialog/ProductionDialog.java
index 0d200c9..9016fb9 100644
--- a/Supermarket/src/com/lingnan/supermarket/dialog/ProductionDialog.java
+++ b/Supermarket/src/com/lingnan/supermarket/dialog/ProductionDialog.java
@@ -1,267 +1,272 @@
-package com.lingnan.supermarket.dialog; // 声明当前类所在的包
-
-import java.awt.Container; // 导入AWT容器类
-import java.awt.FlowLayout; // 导入流式布局类
-import java.awt.event.ActionEvent; // 导入动作事件类
-import java.awt.event.ActionListener; // 导入动作监听器接口
-import java.awt.event.ItemEvent; // 导入项目事件类
-import java.awt.event.ItemListener; // 导入项目监听器接口
-import java.util.ArrayList; // 导入ArrayList类
-
-import javax.swing.JButton; // 导入Swing的按钮组件
-import javax.swing.JComboBox; // 导入Swing的下拉框组件
-import javax.swing.JDialog; // 导入Swing的对话框组件
-import javax.swing.JFrame; // 导入Swing的窗口框架组件
-import javax.swing.JLabel; // 导入Swing的标签组件
-import javax.swing.JOptionPane; // 导入Swing的对话框工具类
-import javax.swing.JPanel; // 导入Swing的面板组件
-import javax.swing.JTextField; // 导入Swing的文本框组件
-
-import com.lingnan.supermarket.*; // 导入supermarket包下的所有类
-import com.lingnan.supermarket.dao.SupplierInfService; // 导入供应商信息服务接口
-import com.lingnan.supermarket.dao.productionService; // 导入产品服务接口
-import com.lingnan.supermarket.dao.impl.SupplierInfImpl; // 导入供应商信息服务的实现类
-import com.lingnan.supermarket.dao.impl.prodCatalogImpl; // 导入产品目录服务的实现类
-import com.lingnan.supermarket.dao.impl.productionImpl; // 导入产品服务的实现类
-import com.lingnan.supermarket.dto.ProdCatalog; // 导入产品目录数据传输对象
-import com.lingnan.supermarket.dto.Production; // 导入产品数据传输对象
-import com.lingnan.supermarket.dto.SupplierInf; // 导入供应商信息数据传输对象
-import com.lingnan.supermarket.table.ProdCatalogTM; // 导入产品目录表格模型
-import com.lingnan.supermarket.view.StorageView; // 导入库存视图
-import com.lingnan.supermarket.view.SupplierView; // 导入供应商视图
-import com.lingnan.supermarket.view.ProdCatalogView.MyItemListener; // 导入产品目录视图的内部类MyItemListener
-
-public class ProductionDialog extends JDialog implements ActionListener { // 定义一个对话框类ProductionDialog,继承自JDialog并实现ActionListener接口
-
- private JPanel namePanel, addressPanel, contactPanel, // 声明多个面板变量
- opePanel,idPanel,inpricePanel,outpricePanel,lifePanel, // 用于不同信息的布局
- sumPanel,supplyidPanel,id2Panel,name2Panel; //
-
- private JLabel nameLabel, addressLabel, contactLabel, // 声明多个标签变量
- idLabel,inpriceLabel,outpriceLabel,lifeLabel,sumLabel, // 用于显示不同信息的标签
- supplyidLabel,id2Label,name2Label; //
- private JTextField nameTF, addressTF, contactTF, // 声明多个文本框变量
- idTF,inpriceTF,outpriceTF,lifeTF,sumTF, // 用于输入不同信息
- supplyidTF,id2TF,name2TF; //
-
- private JButton saveBtn, cancelBtn; // 声明保存和取消按钮变量
-
- private productionService productionService = new productionImpl(); // 实例化产品服务
-
- // 下拉类别相关变量
- private String log[]=null; // 用于存储类别信息的数组
- private ArrayListalog=null; // 用于存储类别信息的列表
- private ProdCatalogTM prodCatalogTM; // 产品目录表格模型
- private ProdCatalog pc; // 产品目录数据传输对象
- private prodCatalogImpl pci; // 产品目录服务实现类
- private JComboBox combo; // 下拉框组件
- private String id2; // 产品目录ID
- private String name2; // 产品目录名称
-
- // 下拉供应商类别相关变量
- private String superlier[]=null; // 用于存储供应商信息的数组
- private ArrayListasuperlier=null; // 用于存储供应商信息的列表
- private SupplierInf si; // 供应商信息数据传输对象
- private SupplierInfImpl sii; // 供应商信息服务实现类
- private JComboBox combo1; // 供应商下拉框组件
- private int supplyid; // 供应商ID
-
- private StorageView storageView; // 库存视图引用
-
- private Production production; // 产品数据传输对象
-
-
- public ProductionDialog(JFrame parent) { // 构造函数,接收一个父窗口作为参数
- super(parent, "添加"); // 调用父类构造函数,设置对话框标题为"添加"
-
- setSize(350, 500); // 设置对话框大小
-
- setLocationRelativeTo(null); // 设置对话框相对于屏幕居中
-
- setModal(true); // 设置对话框为模态
- setResizable(false); // 设置对话框不可调整大小
-
- this.setLayout(new FlowLayout()); // 设置对话框布局为流式布局
-
- initView(); // 初始化视图
+package com.lingnan.supermarket.dialog;
+
+import java.awt.Container;
+import java.awt.FlowLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+import java.util.ArrayList;
+
+import javax.swing.JButton;
+import javax.swing.JComboBox;
+import javax.swing.JDialog;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+
+import com.lingnan.supermarket.*;
+import com.lingnan.supermarket.dao.SupplierInfService;
+import com.lingnan.supermarket.dao.productionService;
+import com.lingnan.supermarket.dao.impl.SupplierInfImpl;
+import com.lingnan.supermarket.dao.impl.prodCatalogImpl;
+import com.lingnan.supermarket.dao.impl.productionImpl;
+import com.lingnan.supermarket.dto.ProdCatalog;
+import com.lingnan.supermarket.dto.Production;
+import com.lingnan.supermarket.dto.SupplierInf;
+import com.lingnan.supermarket.table.ProdCatalogTM;
+import com.lingnan.supermarket.view.StorageView;
+import com.lingnan.supermarket.view.SupplierView;
+import com.lingnan.supermarket.view.ProdCatalogView.MyItemListener;
+
+public class ProductionDialog extends JDialog implements ActionListener {
+
+ private JPanel namePanel, addressPanel, contactPanel,
+ opePanel,idPanel,inpricePanel,outpricePanel,lifePanel,
+ sumPanel,supplyidPanel,id2Panel,name2Panel;
+
+ private JLabel nameLabel, addressLabel, contactLabel,
+ idLabel,inpriceLabel,outpriceLabel,lifeLabel,sumLabel,
+ supplyidLabel,id2Label,name2Label;
+ private JTextField nameTF, addressTF, contactTF,
+ idTF,inpriceTF,outpriceTF,lifeTF,sumTF,
+ supplyidTF,id2TF,name2TF;
+
+ private JButton saveBtn, cancelBtn;
+
+ private productionService productionService = new productionImpl();
+
+ //下拉类别
+ private String log[]=null;
+ private ArrayListalog=null;
+ private ProdCatalogTM prodCatalogTM;
+ private ProdCatalog pc;
+ private prodCatalogImpl pci;
+ private JComboBox combo;
+ private String id2;
+ private String name2;
+
+ //下拉供应商类别
+ private String superlier[]=null;
+ private ArrayListasuperlier=null;
+ private SupplierInf si;
+ private SupplierInfImpl sii;
+ private JComboBox combo1;
+ private int supplyid;
+
+ private StorageView storageView;
+
+ private Production production;
+
+ public ProductionDialog(JFrame parent) {
+ super(parent, "添加");
+
+
+ setSize(350, 500);
+
+ setLocationRelativeTo(null);
+
+ setModal(true);
+ setResizable(false);
+
+ this.setLayout(new FlowLayout());
+
+ initView();
}
- private void initView() { // 初始化视图的方法
- idPanel = new JPanel(); // 创建一个面板用于显示商品编号
- idLabel = new JLabel("商品编号"); // 创建一个标签显示"商品编号"
- idTF = new JTextField(15); // 创建一个文本框用于输入商品编号,宽度为15
- idPanel.add(idLabel); // 将标签添加到面板
- idPanel.add(idTF); // 将文本框添加到面板
-
-
- namePanel = new JPanel(); // 创建一个面板用于显示名称
- nameLabel = new JLabel("名称"); // 创建一个标签显示"名称"
- nameTF = new JTextField(15); // 创建一个文本框用于输入名称,宽度为15
- namePanel.add(nameLabel); // 将标签添加到面板
- namePanel.add(nameTF); // 将文本框添加到面板
-
-
- inpricePanel = new JPanel(); // 创建一个面板用于显示进货单价
- inpriceLabel = new JLabel("进货单价"); // 创建一个标签显示"进货单价"
- inpriceTF = new JTextField(15); // 创建一个文本框用于输入进货单价,宽度为15
- inpricePanel.add(inpriceLabel); // 将标签添加到面板
- inpricePanel.add(inpriceTF); // 将文本框添加到面板
-
-
- outpricePanel = new JPanel(); // 创建一个面板用于显示购买单价
- outpriceLabel = new JLabel("购买单价"); // 创建一个标签显示"购买单价"
- outpriceTF = new JTextField(15); // 创建一个文本框用于输入购买单价,宽度为15
- outpricePanel.add(outpriceLabel); // 将标签添加到面板
- outpricePanel.add(outpriceTF); // 将文本框添加到面板
-
-
- lifePanel = new JPanel(); // 创建一个面板用于显示保质期
- lifeLabel = new JLabel("保质期(月份数)"); // 创建一个标签显示"保质期(月份数)"
- lifeTF = new JTextField(15); // 创建一个文本框用于输入保质期,宽度为15
- lifePanel.add(lifeLabel); // 将标签添加到面板
- lifePanel.add(lifeTF); // 将文本框添加到面板
-
-
-
- sumPanel = new JPanel(); // 创建一个面板用于显示库存
- sumLabel = new JLabel("库存"); // 创建一个标签显示"库存"
- sumTF = new JTextField(15); // 创建一个文本框用于输入库存数量,宽度为15
- sumPanel.add(sumLabel); // 将标签添加到面板
- sumPanel.add(sumTF); // 将文本框添加到面板
-
-//供应商名下拉框 传递supplyid
- supplyidPanel = new JPanel(); // 创建一个面板用于显示供应商信息
- supplyidLabel = new JLabel("供应商"); // 创建一个标签显示"供应商"
-//supplyidTF = new JTextField(15); // 注释掉的代码,原本可能是用于输入供应商ID的文本框
-
- sii=new SupplierInfImpl(); // 创建供应商信息服务的实例
- this.asuperlier=sii.findNameSupplier(); // 获取所有供应商名称的列表
- this.superlier=new String[asuperlier.size()]; // 创建一个字符串数组用于存储供应商名称
+ private void initView() {
+ idPanel = new JPanel();
+ idLabel = new JLabel("商品编号");
+ idTF = new JTextField(15);
+ idPanel.add(idLabel);
+ idPanel.add(idTF);
+
+
+ namePanel = new JPanel();
+ nameLabel = new JLabel("名称");
+ nameTF = new JTextField(15);
+ namePanel.add(nameLabel);
+ namePanel.add(nameTF);
+
+
+ inpricePanel = new JPanel();
+ inpriceLabel = new JLabel("进货单价");
+ inpriceTF = new JTextField(15);
+ inpricePanel.add(inpriceLabel);
+ inpricePanel.add(inpriceTF);
+
+ outpricePanel = new JPanel();
+ outpriceLabel = new JLabel("购买单价");
+ outpriceTF = new JTextField(15);
+ outpricePanel.add(outpriceLabel);
+ outpricePanel.add(outpriceTF);
+
+
+ lifePanel = new JPanel();
+ lifeLabel = new JLabel("保质期(月份数)");
+ lifeTF = new JTextField(15);
+ lifePanel.add(lifeLabel);
+ lifePanel.add(lifeTF);
+
+
+ sumPanel = new JPanel();
+ sumLabel = new JLabel("库存");
+ sumTF = new JTextField(15);
+ sumPanel.add(sumLabel);
+ sumPanel.add(sumTF);
+
+ //供应商名下拉框 传递supplyid
+ supplyidPanel = new JPanel();
+ supplyidLabel = new JLabel("供应商");
+// supplyidTF = new JTextField(15);
+
+ sii=new SupplierInfImpl();
+ this.asuperlier=sii.findNameSupplier();
+ this.superlier=new String[asuperlier.size()];
for(int i=0;i(superlier); // 创建一个下拉框组件,用于选择供应商
- combo1.addItemListener(new MyItemListener1()); // 为下拉框添加项目监听器
- supplyidPanel.add(supplyidLabel); // 将标签添加到面板
- supplyidPanel.add(combo1); // 将下拉框添加到面板
-
-/* id2Panel = new JPanel();
-id2Label = new JLabel("分类id");
-id2TF = new JTextField(id2,15);
-id2Panel.add(id2Label);
-id2Panel.add(id2TF);*/
-//类名下拉框
- name2Panel = new JPanel(); // 创建一个面板用于显示类名
- name2Label = new JLabel("类名"); // 创建一个标签显示"类名"
- pci=new prodCatalogImpl(); // 创建产品目录服务的实例
- this.alog=pci.findNameProdCatalog(); // 获取所有产品目录名称的列表
- this.log=new String[alog.size()]; // 创建一个字符串数组用于存储产品目录名称
+
+ combo1 = new JComboBox(superlier);
+ combo1.addItemListener(new MyItemListener1());
+
+ supplyidPanel.add(supplyidLabel);
+ supplyidPanel.add(combo1);
+
+
+
+
+
+ /* id2Panel = new JPanel();
+ id2Label = new JLabel("分类id");
+ id2TF = new JTextField(id2,15);
+ id2Panel.add(id2Label);
+ id2Panel.add(id2TF);*/
+ //类名下拉框
+ name2Panel = new JPanel();
+ name2Label = new JLabel("类名");
+ pci=new prodCatalogImpl();
+ this.alog=pci.findNameProdCatalog();
+ this.log=new String[alog.size()];
for(int i=0;i(log); // 创建一个下拉框组件,用于选择产品目录
- combo.addItemListener(new MyItemListener()); // 为下拉框添加项目监听器
- name2Panel.add(name2Label); // 将标签添加到面板
- name2Panel.add(combo); // 将下拉框添加到面板
-
- addressPanel = new JPanel(); // 创建一个面板用于显示地址
- addressLabel = new JLabel("地址"); // 创建一个标签显示"地址"
- addressTF = new JTextField(15); // 创建一个文本框用于输入地址,宽度为15
- addressPanel.add(addressLabel); // 将标签添加到面板
- addressPanel.add(addressTF); // 将文本框添加到面板
-
- contactPanel = new JPanel(); // 创建一个面板用于显示联系方式
- contactLabel = new JLabel("电话"); // 创建一个标签显示"电话"
- contactTF = new JTextField(15); // 创建一个文本框用于输入电话,宽度为15
- contactPanel.add(contactLabel); // 将标签添加到面板
- contactPanel.add(contactTF); // 将文本框添加到面板
-
- opePanel = new JPanel(); // 创建一个面板用于显示操作按钮
- saveBtn = new JButton("保存"); // 创建一个保存按钮
- cancelBtn = new JButton("取消"); // 创建一个取消按钮
- saveBtn.addActionListener(this); // 为保存按钮添加动作监听器
- cancelBtn.addActionListener(this); // 为取消按钮添加动作监听器
- opePanel.add(saveBtn); // 将保存按钮添加到面板
- opePanel.add(cancelBtn); // 将取消按钮添加到面板
-
- Container container = getContentPane(); // 获取对话框的内容面板
- container.add(idPanel); // 将商品编号面板添加到内容面板
- container.add(namePanel); // 将名称面板添加到内容面板
- container.add(inpricePanel); // 将进货单价面板添加到内容面板
- container.add(outpricePanel); // 将购买单价面板添加到内容面板
- container.add(lifePanel); // 将保质期面板添加到内容面板
- container.add(sumPanel); // 将库存面板添加到内容面板
- container.add(supplyidPanel); // 将供应商面板添加到内容面板
-//container.add(id2Panel); // 注释掉的代码,原本可能是用于添加分类ID面板
- container.add(name2Panel); // 将类名面板添加到内容面板
- container.add(opePanel); // 将操作按钮面板添加到内容面板
-
+ log[i]=alog.get(i);
+
+
+ combo = new JComboBox(log);
+ combo.addItemListener(new MyItemListener());
+ name2Panel.add(name2Label);
+ name2Panel.add(combo);
+
+
+ addressPanel = new JPanel();
+ addressLabel = new JLabel("地址");
+ addressTF = new JTextField(15);
+ addressPanel.add(addressLabel);
+ addressPanel.add(addressTF);
+
+ contactPanel = new JPanel();
+ contactLabel = new JLabel("电话");
+ contactTF = new JTextField(15);
+ contactPanel.add(contactLabel);
+ contactPanel.add(contactTF);
+
+ opePanel = new JPanel();
+ saveBtn = new JButton("保存");
+ cancelBtn = new JButton("取消");
+ saveBtn.addActionListener(this);
+ cancelBtn.addActionListener(this);
+ opePanel.add(saveBtn);
+ opePanel.add(cancelBtn);
+
+ Container container = getContentPane();
+ container.add(idPanel);
+ container.add(namePanel);
+ container.add(inpricePanel);
+ container.add(outpricePanel);
+ container.add(lifePanel);
+ container.add(sumPanel);
+ container.add(supplyidPanel);
+// container.add(id2Panel);
+ container.add(name2Panel);
+ container.add(opePanel);
}
@Override
- public void actionPerformed(ActionEvent e) { // 实现ActionListener接口的actionPerformed方法
- Object source = e.getSource(); // 获取事件源
- if (source == saveBtn) { // 如果事件源是保存按钮
+ public void actionPerformed(ActionEvent e) {
+ Object source = e.getSource();
+ if (source == saveBtn) {
// 思路获取数据
// 保存到数据库
// 关闭对话框
// 刷新table
- String name = nameTF.getText(); // 获取名称文本框的内容
- String id = idTF.getText(); // 获取商品编号文本框的内容
- float inprice = Float.parseFloat((inpriceTF.getText())); // 将进货单价文本框的内容转换为浮点数
- float outprice = Float.parseFloat(outpriceTF.getText()); // 将销售单价文本框的内容转换为浮点数
- int life = Integer.parseInt(lifeTF.getText()); // 将保质期文本框的内容转换为整数
- int sum = Integer.parseInt(sumTF.getText()); // 将库存文本框的内容转换为整数
+ String name = nameTF.getText();
+ String id = idTF.getText();
+ float inprice = Float.parseFloat((inpriceTF.getText()));
+ float outprice = Float.parseFloat(outpriceTF.getText());
+ int life = Integer.parseInt(lifeTF.getText());
+ int sum = Integer.parseInt(sumTF.getText());
+
+
// TODO 参数校验
- if (this.production == null) { // 如果production对象为空,表示是添加新商品
- if(supplyid==-1){ // 如果供应商ID为-1,表示商品检索出错
+ if (this.production == null) {
+ if(supplyid==-1){
JOptionPane.showMessageDialog(this, "商品检索出错", "提示",
- JOptionPane.ERROR_MESSAGE); // 显示错误消息
- return; // 退出方法
+ JOptionPane.ERROR_MESSAGE);
+ return;
}
- if(supplyid==0){ // 如果供应商ID为0,表示未选择商品名
+ if(supplyid==0){
JOptionPane.showMessageDialog(this, "请选择商品名", "提示",
- JOptionPane.ERROR_MESSAGE); // 显示错误消息
- return; // 退出方法
+ JOptionPane.ERROR_MESSAGE);
+ return;
}
- if(id2.equals("0")){ // 如果分类ID为"0",表示未选择商品类
+ if(id2.equals("0")){
JOptionPane.showMessageDialog(this, "请选择商品类", "提示",
- JOptionPane.ERROR_MESSAGE); // 显示错误消息
- return; // 退出方法
+ JOptionPane.ERROR_MESSAGE);
+ return;
}
-
- Production production = new Production(); // 创建新的Production对象
- production.setId(id); // 设置商品编号
- production.setName(name); // 设置商品名称
- production.setInPrice(inprice); // 设置进货单价
- production.setOutPrice(outprice); // 设置销售单价
- production.setLife(life); // 设置保质期
- production.setSum(sum); // 设置库存
- production.setSupplyId(supplyid); // 设置供应商ID
- production.setId2(id2); // 设置分类ID
- production.setName2(name2); // 设置分类名称
- int result = productionService.addProduction(production); // 调用服务添加商品
- // int result = 1; // 注释掉的代码,可能是用于测试
- if (result == 1) { // 如果添加成功
+
+ Production production = new Production();
+ production.setId(id);
+ production.setName(name);
+ production.setInPrice(inprice);
+ production.setOutPrice(outprice);
+ production.setLife(life);
+ production.setSum(sum);
+ production.setSupplyId(supplyid);
+ production.setId2(id2);
+ production.setName2(name2);
+ int result = productionService.addProduction(production);
+ // int result = 1;
+ if (result == 1) {
JOptionPane.showMessageDialog(this, "添加成功", "提示",
- JOptionPane.INFORMATION_MESSAGE); // 显示成功消息
- this.dispose(); // 关闭对话框
- } else if(result == 2){ // 如果返回值为2,表示已存在该商品
+ JOptionPane.INFORMATION_MESSAGE);
+ this.dispose();
+ } else if(result == 2){
JOptionPane.showMessageDialog(this, "已存在该商品", "提示",
- JOptionPane.ERROR_MESSAGE); // 显示错误消息
+ JOptionPane.ERROR_MESSAGE);
}
- else { // 如果添加失败
+ else {
JOptionPane.showMessageDialog(this, "出错!添加失败", "提示",
- JOptionPane.ERROR_MESSAGE); // 显示错误消息
-
+ JOptionPane.ERROR_MESSAGE);
}
}/*else{
//更新
@@ -270,7 +275,7 @@ id2Panel.add(id2TF);*/
supplierInf.setAddress(address);
supplierInf.setContact(contact);
supplierInf.setId(this.supplierInf.getId());
-
+
int result = supplierInfService.updateSupplierInf(supplierInf);
if(result==1){
JOptionPane.showMessageDialog(this, "更新成功", "提示",
@@ -278,43 +283,39 @@ id2Panel.add(id2TF);*/
}
}*/
- } else if (source == cancelBtn) { // 如果事件源是取消按钮
+ } else if (source == cancelBtn) {
- this.dispose(); // 关闭对话框
+ this.dispose();
}
}
-
- // 定义一个内部类MyItemListener实现ItemListener接口
public class MyItemListener implements ItemListener {
@Override
- public void itemStateChanged(ItemEvent e) { // 实现itemStateChanged方法
- JComboBox cb = (JComboBox) e.getSource(); // 获取事件源,即下拉框组件
- name2 = (String) cb.getSelectedItem(); // 获取选中的商品类名称
- pci =new prodCatalogImpl(); // 创建商品分类服务实现类对象
- for(int i=0;i combo;
- private String [] identity={"请选择身份","收银员","管理员","超级管理员"};
-
+ // 下拉框中的选项内容,包括请选择身份以及不同的权限角色
+ private String[] identity = { "请选择身份", "收银员", "管理员", "超级管理员" };
+
+ // 构造函数,用于创建添加用户信息的对话框
public UserDialog(JFrame parent) {
- super(parent,"添加");
-
- setSize(350,300);
-
+ // 调用父类JDialog的构造函数,设置对话框的标题为"添加"
+ super(parent, "添加");
+
+ // 设置对话框的大小
+ setSize(350, 300);
+
+ // 设置对话框在屏幕中央显示
setLocationRelativeTo(null);
-
+
+ // 设置对话框为模态对话框,即显示时会阻塞其他窗口的操作
setModal(true);
+
+ // 设置对话框大小不可调整
setResizable(false);
-
+
+ // 设置对话框的布局为流式布局
this.setLayout(new FlowLayout());
-
+
+ // 初始化对话框的视图组件
initView();
}
-
+
+ // 初始化对话框视图组件的方法
private void initView() {
+ // 姓名面板及相关组件的初始化
namePanel = new JPanel();
nameLabel = new JLabel("姓名");
nameTF = new JTextField(15);
namePanel.add(nameLabel);
namePanel.add(nameTF);
-
+
+ // 账号面板及相关组件的初始化
loginNamePanel = new JPanel();
loginNameLabel = new JLabel("账号");
loginNameTF = new JTextField(15);
loginNamePanel.add(loginNameLabel);
loginNamePanel.add(loginNameTF);
-
+
+ // 手机面板及相关组件的初始化
phonePanel = new JPanel();
phoneLabel = new JLabel("手机");
phoneTF = new JTextField(15);
phonePanel.add(phoneLabel);
phonePanel.add(phoneTF);
-
+
+ // 密码面板及相关组件的初始化
passwordPanel = new JPanel();
passwordLabel = new JLabel("密码");
passwordTF = new JTextField(15);
passwordPanel.add(passwordLabel);
passwordPanel.add(passwordTF);
-
+
+ // 权限面板及相关组件的初始化
sSuperPanel = new JPanel();
sSuperLabel = new JLabel("权限");
-// sSuperTF = new JTextField(15);
- combo= new JComboBox(identity);
+ // 这里原本有一个文本框用于输入权限,后改为下拉框,所以注释掉了
+ // sSuperTF = new JTextField(15);
+ combo = new JComboBox(identity);
+ // 为下拉框添加监听器,用于监听选项变化事件
combo.addItemListener(new MyItemListener());
sSuperPanel.add(sSuperLabel);
sSuperPanel.add(combo);
-
-// sSuperPanel.add(sSuperTF);
-
+
+ // 操作按钮面板及相关组件的初始化
opePanel = new JPanel();
saveBtn = new JButton("保存");
cancelBtn = new JButton("取消");
+ // 为保存按钮和取消按钮添加点击事件监听器
saveBtn.addActionListener(this);
cancelBtn.addActionListener(this);
opePanel.add(saveBtn);
opePanel.add(cancelBtn);
-
+
+ // 将各个面板添加到对话框的内容面板中
Container container = getContentPane();
container.add(namePanel);
container.add(loginNamePanel);
@@ -105,57 +126,64 @@ public class UserDialog extends JDialog implements ActionListener{
container.add(opePanel);
}
+ // 处理按钮点击事件的方法,实现了ActionListener接口中的方法
@Override
public void actionPerformed(ActionEvent e) {
+ // 获取触发事件的源组件
Object source = e.getSource();
- if(source==saveBtn){
- //思路获取数据
- //保存到数据库
- //关闭对话框
- //刷新table
-
+ if (source == saveBtn) {
+ // 如果点击的是保存按钮,执行以下操作:
+
+ // 获取用户在文本框中输入的姓名、账号、手机和密码信息
String name = nameTF.getText();
String loginName = loginNameTF.getText();
String phone = phoneTF.getText();
- String password=passwordTF.getText();
-
- //TODO 参数校验
+ String password = passwordTF.getText();
+
+ // TODO 参数校验部分,这里应该对获取到的用户输入信息进行合法性校验,比如非空、格式等校验,但目前未实现具体逻辑
+
+ // 创建一个新的User对象,用于存储要添加到数据库的用户信息
User user = new User();
user.setRname(name);
user.setUsername(loginName);
user.setPhone(phone);
user.setPassword(password);
user.setUsuper(sSuper);
-
-
-
+
+ // 调用用户服务接口的添加用户方法,将用户信息添加到数据库中,并获取返回结果
int result = userService.addUser(user);
- if(result==1) {
+ if (result == 1) {
+ // 如果添加成功,关闭当前对话框
this.dispose();
- JOptionPane.showMessageDialog(this,"添加成功","提示",JOptionPane.INFORMATION_MESSAGE);
- }else {
- JOptionPane.showMessageDialog(this,"添加失败","提示",JOptionPane.ERROR_MESSAGE);
+ // 弹出提示框显示添加成功信息
+ JOptionPane.showMessageDialog(this, "添加成功", "提示", JOptionPane.INFORMATION_MESSAGE);
+ } else {
+ // 如果添加失败,弹出提示框显示添加失败信息
+ JOptionPane.showMessageDialog(this, "添加失败", "提示", JOptionPane.ERROR_MESSAGE);
}
- }else if(source == cancelBtn) {
-
+ } else if (source == cancelBtn) {
+ // 如果点击的是取消按钮,直接关闭当前对话框
this.dispose();
}
}
- static class MyItemListener implements ItemListener{
+
+ // 内部类,实现了ItemListener接口,用于监听下拉框选项变化事件
+ static class MyItemListener implements ItemListener {
@Override
public void itemStateChanged(ItemEvent e) {
- JComboBox cb=(JComboBox)e.getSource();
- String sSuper1=(String) cb.getSelectedItem();
- if(sSuper1.equals("请选择身份"))
- sSuper=-1;
- else if(sSuper1.equals("收银员"))
- sSuper=2;
+ // 获取触发事件的下拉框组件
+ JComboBox cb = (JComboBox) e.getSource();
+ // 获取当前选中的下拉框选项内容
+ String sSuper1 = (String) cb.getSelectedItem();
+ if (sSuper1.equals("请选择身份"))
+ sSuper = -1;
+ else if (sSuper1.equals("收银员"))
+ sSuper = 2;
else if (sSuper1.equals("管理员"))
- sSuper=1;
+ sSuper = 1;
else
- sSuper=0;
+ sSuper = 0;
}
-
}
}
diff --git a/Supermarket/src/com/lingnan/supermarket/dialog/UserInfDialog.java b/Supermarket/src/com/lingnan/supermarket/dialog/UserInfDialog.java
index af17b61..a4a7721 100644
--- a/Supermarket/src/com/lingnan/supermarket/dialog/UserInfDialog.java
+++ b/Supermarket/src/com/lingnan/supermarket/dialog/UserInfDialog.java
@@ -22,146 +22,257 @@ import com.lingnan.supermarket.dao.impl.UserServiceImpl;
import com.lingnan.supermarket.dto.User;
import com.lingnan.supermarket.view.LoginView;
+// UserInfDialog类继承自JDialog,用于创建一个修改用户信息的对话框窗口,并实现了ActionListener接口来处理按钮点击事件
public class UserInfDialog extends JDialog implements ActionListener {
- private JPanel namePanel, loginNamePanel, phonePanel, opePanel,
- passwordPanel, sSuperPanel;
-
- private JLabel nameLabel, loginNameLabel, phoneLabel, passwordLabel,
- sSuperLabel;
+ // 构建对话框界面的各个面板、标签、文本框和按钮等组件的声明
+ private JPanel namePanel, loginNamePanel, phonePanel, opePanel, passwordPanel, sSuperPanel;
+ // 用于存放姓名相关组件的面板
+ private JLabel nameLabel, loginNameLabel, phoneLabel, passwordLabel, sSuperLabel;
+ // 分别对应姓名、登录名、联系电话、密码、权限等信息的标签组件,用于在界面上显示相应的文字提示
private JTextField nameTF, loginNameTF, phoneTF, passwordTF, sSuperTF;
-
+ // 分别对应姓名、登录名、联系电话、密码、权限等信息的文本框组件,用于用户输入或显示相应信息
private JButton saveBtn, cancelBtn;
+ // 保存按钮和取消按钮,用于触发保存修改信息或取消操作的动作
+ // 用户服务接口的实现类实例,用于调用与用户相关的数据库操作方法
private UserService userService = new UserServiceImpl();
+ // 创建UserServiceImpl类的实例,通过该实例可以调用具体实现的用户相关数据库操作,比如更新用户信息等
+ // 要修改信息的用户对象
private User user;
- // 下拉权限框
+ // 存储当前要在对话框中进行信息修改操作的用户对象,包含了该用户原本的各种信息
+
+ // 用于存储用户权限级别,初始值为从传入的用户对象中获取的权限级别
private int sSuper = -1;
+ // 记录用户的权限级别,初始化为 -1,后续会根据传入用户对象的权限情况进行赋值
+
+ // 下拉框组件,用于选择用户权限
private JComboBox combo;
- private String[] identity = { "当前权限", "收银员", "管理员", "超级管理员" };
-
+ // 定义一个下拉框组件,用于展示可选的用户权限选项,其选项内容为字符串类型
+
+ // 下拉框中的选项内容,包括当前权限以及不同的权限角色
+ private String[] identity = { "当前权限", "收银员", "管理员", "超级管理员","进货员" };
+ // 定义一个字符串数组,存储下拉框中可供选择的用户权限选项内容
+
+ // 父窗口JFrame的引用,可能用于在某些操作后对父窗口进行处理
private JFrame JFrame;
+ // 保存传入的父窗口(JFrame类型)的引用
+ // 构造函数,用于创建修改用户信息的对话框,传入父窗口JFrame和要修改信息的用户对象
public UserInfDialog(JFrame parent, User user) {
+ // 调用父类JDialog的构造函数,设置对话框的标题为"添加"
super(parent, "添加");
this.user = user;
+ // 将传入的要修改信息的用户对象赋值给当前类的成员变量user
+
+ // 设置当前用户的权限级别
this.sSuper = user.getUsuper();
+ // 从传入的用户对象中获取其原本的权限级别,并赋值给当前类的成员变量sSuper
+ // 设置对话框的大小
setSize(350, 300);
+ // 设置对话框的宽度为350像素,高度为300像素,确定对话框在屏幕上显示的初始大小
+ // 设置对话框在屏幕中央显示
setLocationRelativeTo(null);
+ // 通过传入null参数,使对话框在屏幕的中心位置显示
+ // 设置对话框为模态对话框,即显示时会阻塞其他窗口的操作
setModal(true);
+ // 模态对话框会强制用户在关闭它之前只能与该对话框进行交互,不能操作其他窗口
+
+ // 设置对话框大小不可调整
setResizable(false);
+ // 禁止用户通过拖动边框等方式改变对话框的大小,保持固定的布局和显示效果
+ // 设置对话框的布局为流式布局
this.setLayout(new FlowLayout());
-
- this.JFrame=parent;
+ // 使用流式布局来排列对话框内的组件,组件会按照添加的顺序从左到右、从上到下依次排列
+
+ // 保存父窗口的引用
+ this.JFrame = parent;
+ // 将传入的父窗口引用赋值给当前类的成员变量JFrame
+ // 初始化对话框的视图组件
initView();
}
+ // 初始化对话框视图组件的方法
private void initView() {
+ // 姓名面板及相关组件的初始化,文本框中显示当前用户的姓名信息
namePanel = new JPanel();
+ // 创建一个新的面板,用于存放姓名相关的标签和文本框组件
nameLabel = new JLabel("姓名");
+ // 创建一个显示"姓名"文字的标签组件
nameTF = new JTextField(user.getRname(), 15);
+ // 创建一个文本框组件,初始内容设置为传入用户对象的真实姓名(通过user.getRname()获取),文本框宽度设置为可显示15个字符左右
namePanel.add(nameLabel);
+ // 将姓名标签添加到姓名面板中
namePanel.add(nameTF);
+ // 将姓名文本框添加到姓名面板中
+ // 账号面板及相关组件的初始化,文本框中显示当前用户的账号信息
loginNamePanel = new JPanel();
+ // 创建一个新的面板,用于存放账号相关的标签和文本框组件
loginNameLabel = new JLabel("账号");
+ // 创建一个显示"账号"文字的标签组件
loginNameTF = new JTextField(user.getUsername(), 15);
+ // 创建一个文本框组件,初始内容设置为传入用户对象的用户名(通过user.getUsername()获取),文本框宽度设置为可显示15个字符左右
loginNamePanel.add(loginNameLabel);
+ // 将账号标签添加到账号面板中
loginNamePanel.add(loginNameTF);
+ // 将账号文本框添加到账号面板中
+ // 手机面板及相关组件的初始化,文本框中显示当前用户的手机信息
phonePanel = new JPanel();
- phoneLabel = new JLabel("联系");
+ // 创建一个新的面板,用于存放手机相关的标签和文本框组件
+ phoneLabel = new JLabel("电话");
+ // 创建一个显示"联系"文字的标签组件
phoneTF = new JTextField(user.getPhone(), 15);
+ // 创建一个文本框组件,初始内容设置为传入用户对象的手机号码(通过user.getPhone()获取),文本框宽度设置为可显示15个字符左右
phonePanel.add(phoneLabel);
+ // 将手机标签添加到手机面板中
phonePanel.add(phoneTF);
+ // 将手机文本框添加到手机面板中
+ // 密码面板及相关组件的初始化,文本框中显示当前用户的密码信息
passwordPanel = new JPanel();
+ // 创建一个新的面板,用于存放密码相关的标签和文本框组件
passwordLabel = new JLabel("密码");
+ // 创建一个显示"密码"文字的标签组件
passwordTF = new JTextField(user.getPassword(), 15);
+ // 创建一个文本框组件,初始内容设置为传入用户对象的密码(通过user.getPassword()获取),文本框宽度设置为可显示15个字符左右
passwordPanel.add(passwordLabel);
+ // 将密码标签添加到密码面板中
passwordPanel.add(passwordTF);
+ // 将密码文本框添加到密码面板中
-/* sSuperPanel = new JPanel();
- sSuperLabel = new JLabel("权限");
- // sSuperTF = new JTextField(15);
- combo = new JComboBox(identity);
- combo.addItemListener(new MyItemListener());
- sSuperPanel.add(sSuperLabel);
- sSuperPanel.add(combo);*/
- // sSuperPanel.add(sSuperTF);
+ sSuperPanel = new JPanel();
+ sSuperLabel = new JLabel("权限");
+ // sSuperTF = new JTextField(15);
+ combo = new JComboBox(identity);
+ combo.addItemListener(new MyItemListener());
+ sSuperPanel.add(sSuperLabel);
+ sSuperPanel.add(combo);
+ // 上述被注释掉的代码原本用于创建权限相关的面板、标签、下拉框组件,并为下拉框添加选项改变的监听器,用于实现完整的权限选择功能,但目前处于简化状态
+
+ // 操作按钮面板及相关组件的初始化
opePanel = new JPanel();
+ // 创建一个新的面板,用于存放操作按钮(保存和取消按钮)
saveBtn = new JButton("保存");
+ // 创建一个显示"保存"文字的按钮组件,用于触发保存用户信息修改的操作
cancelBtn = new JButton("取消");
+ // 创建一个显示"取消"文字的按钮组件,用于触发取消当前修改操作的动作
+ // 为保存按钮和取消按钮添加点击事件监听器
saveBtn.addActionListener(this);
+ // 将保存按钮的点击事件绑定到当前类(实现了ActionListener接口)的actionPerformed方法上,以便处理保存按钮被点击后的操作逻辑
cancelBtn.addActionListener(this);
+ // 将取消按钮的点击事件绑定到当前类(实现了ActionListener接口)的actionPerformed方法上,以便处理取消按钮被点击后的操作逻辑
opePanel.add(saveBtn);
+ // 将保存按钮添加到操作按钮面板中
opePanel.add(cancelBtn);
+ // 将取消按钮添加到操作按钮面板中
+ // 将各个面板添加到对话框的内容面板中
Container container = getContentPane();
+ // 获取对话框的内容面板,用于添加其他组件面板
container.add(namePanel);
+ // 将姓名面板添加到对话框的内容面板中
container.add(loginNamePanel);
+ // 将账号面板添加到对话框的内容面板中
container.add(passwordPanel);
+ // 将密码面板添加到对话框的内容面板中
container.add(phonePanel);
- /*container.add(sSuperPanel);*/
+ container.add(sSuperPanel);
+ // 原本可能添加权限面板
container.add(opePanel);
+ // 将操作按钮面板添加到对话框的内容面板中
}
+ // 处理按钮点击事件的方法,实现了ActionListener接口中的方法
@Override
public void actionPerformed(ActionEvent e) {
+ // 获取触发事件的源组件
Object source = e.getSource();
if (source == saveBtn) {
- // 思路获取数据
- // 保存到数据库
- // 关闭对话框
- // 刷新table
+ // 如果点击的是保存按钮,执行以下操作:
+ // 获取用户在文本框中修改后的姓名、账号、手机和密码信息
String name = nameTF.getText();
+ // 获取姓名文本框中用户输入或修改后的姓名内容
String loginName = loginNameTF.getText();
+ // 获取账号文本框中用户输入或修改后的账号内容
String phone = phoneTF.getText();
+ // 获取手机文本框中用户输入或修改后的手机号码内容
String password = passwordTF.getText();
+ // 获取密码文本框中用户输入或修改后的密码内容
+
+ // 此处注释提示了后续应该添加对获取到的用户输入信息进行合法性校验的代码
- // TODO 参数校验
+ // 创建一个新的User对象,用于存储要更新到数据库的用户信息,设置了部分从原用户对象获取的信息以及修改后的信息
User user1 = new User();
user1.setId(user.getId());
+ // 设置新用户对象的id为原用户对象的id,确保更新的是正确的用户记录
user1.setRname(name);
+ // 设置新用户对象的真实姓名为获取到的修改后的姓名内容
user1.setUsername(loginName);
+ // 设置新用户对象的用户名(账号)为获取到的修改后的账号内容
user1.setPhone(phone);
+ // 设置新用户对象的手机号码为获取到的修改后的手机号码内容
user1.setPassword(password);
+ // 设置新用户对象的密码为获取到的修改后的密码内容
user1.setImg(user.getImg());
+ // 设置新用户对象的图片相关信息(这里不太明确具体用途,可能是用户头像之类的图片信息)为原用户对象的对应信息
user1.setUsuper(sSuper);
+ // 设置新用户对象的权限级别为当前记录的权限级别(在构造函数或其他地方已确定)
+ // 调用用户服务接口的根据用户id更新用户信息的方法,将更新后的用户信息保存到数据库中,并获取返回结果
int result = userService.updateByIdUser(user1);
if (result == 1) {
+ // 如果更新成功,关闭当前对话框
this.dispose();
- JOptionPane.showMessageDialog(this, "修改成功,请重新登陆", "提示",
- JOptionPane.INFORMATION_MESSAGE);
+ // 通过调用dispose方法关闭当前的对话框窗口,释放相关资源
+
+ // 弹出提示框显示修改成功信息,并提示重新登录
+ JOptionPane.showMessageDialog(this, "修改成功,请重新登陆", "提示", JOptionPane.INFORMATION_MESSAGE);
+ // 使用JOptionPane弹出一个信息提示框,向用户显示修改成功的消息,并提示需要重新登录,提示框的图标为信息图标(INFORMATION_MESSAGE表示)
+
+ // 关闭父窗口
this.JFrame.dispose();
+ // 通过调用父窗口的dispose方法关闭父窗口
+
+ // 创建并显示新的登录视图
new LoginView();
+ // 创建一个新的登录视图(LoginView类的实例)并显示出来,方便用户重新登录系统
} else {
- JOptionPane.showMessageDialog(this, "修改失败", "提示",
- JOptionPane.ERROR_MESSAGE);
+ // 如果更新失败,弹出提示框显示修改失败信息
+ JOptionPane.showMessageDialog(this, "修改失败", "提示", JOptionPane.ERROR_MESSAGE);
+ // 使用JOptionPane弹出一个错误提示框,向用户显示修改失败的消息
}
} else if (source == cancelBtn) {
-
+ // 如果点击的是取消按钮,直接关闭当前对话框
this.dispose();
+ // 通过调用dispose方法关闭当前对话框,放弃本次修改操作,释放相关资源
}
}
+ // 实现了ItemListener接口,用于监听下拉框选项变化事件
public class MyItemListener implements ItemListener {
@Override
public void itemStateChanged(ItemEvent e) {
+ // 获取触发事件的下拉框组件
JComboBox cb = (JComboBox) e.getSource();
+ // 从事件源中获取触发选项改变事件的下拉框对象
+
+ // 获取当前选中的下拉框选项内容
String sSuper1 = (String) cb.getSelectedItem();
+ // 获取下拉框当前选中的选项对应的字符串内容
+
if (sSuper1.equals("当前权限"))
sSuper = user.getUsuper();
else if (sSuper1.equals("收银员"))
@@ -170,7 +281,7 @@ public class UserInfDialog extends JDialog implements ActionListener {
sSuper = 1;
else
sSuper = 0;
+ // 根据下拉框选中的不同选项内容,来设置当前用户的权限级别,不同的数字0、1、2对应不同的权限
}
-
}
-}
+}
\ No newline at end of file
diff --git a/Supermarket/src/com/lingnan/supermarket/dto/InOrder.java b/Supermarket/src/com/lingnan/supermarket/dto/InOrder.java
index 4e999c1..07620d1 100644
--- a/Supermarket/src/com/lingnan/supermarket/dto/InOrder.java
+++ b/Supermarket/src/com/lingnan/supermarket/dto/InOrder.java
@@ -1,62 +1,48 @@
-package com.lingnan.supermarket.dto; // 声明当前类所在的包
+package com.lingnan.supermarket.dto;
-import java.util.Date; // 导入Date类,尽管在此类中没有直接使用
+import java.util.Date;
-// 定义进货订单类InOrder
public class InOrder {
- private String iNumber; // 进货订单编号
- private Float allInPrice; // 总进货价格
- private String inDate; // 进货日期
- private String principal; // 负责人
- private int status; // 订单状态
- private int delmark; // 删除标记
-
- // getiNumber方法,用于获取进货订单编号
+ private String iNumber;
+ private Float allInPrice;
+ private String inDate;
+ private String principal;
+ private int status;
+ private int delmark;
public String getiNumber() {
- return iNumber; // 返回进货订单编号
+ return iNumber;
}
- // setiNumber方法,用于设置进货订单编号
public void setiNumber(String iNumber) {
- this.iNumber = iNumber; // 将参数iNumber赋值给成员变量iNumber
+ this.iNumber = iNumber;
}
- // getAllInPrice方法,用于获取总进货价格
public Float getAllInPrice() {
- return allInPrice; // 返回总进货价格
+ return allInPrice;
}
- // setAllInPrice方法,用于设置总进货价格
public void setAllInPrice(Float allInPrice) {
- this.allInPrice = allInPrice; // 将参数allInPrice赋值给成员变量allInPrice
+ this.allInPrice = allInPrice;
}
- // getInDate方法,用于获取进货日期
public String getInDate() {
- return inDate; // 返回进货日期
+ return inDate;
}
- // setInDate方法,用于设置进货日期
public void setInDate(String inDate) {
- this.inDate = inDate; // 将参数inDate赋值给成员变量inDate
+ this.inDate = inDate;
}
- // getPrincipal方法,用于获取负责人
public String getPrincipal() {
- return principal; // 返回负责人
+ return principal;
}
- // setPrincipal方法,用于设置负责人
public void setPrincipal(String principal) {
- this.principal = principal; // 将参数principal赋值给成员变量principal
- }
- // getStatus方法,用于获取订单状态
- public int getStatus() {
- return status; // 返回订单状态
- }
- // setStatus方法,用于设置订单状态
- public void setStatus(int status) {
- this.status = status; // 将参数status赋值给成员变量status
+ this.principal = principal;
}
- // getDelmark方法,用于获取删除标记
public int getDelmark() {
- return delmark; // 返回删除标记
+ return delmark;
}
- // setDelmark方法,用于设置删除标记
public void setDelmark(int delmark) {
- this.delmark = delmark; // 将参数delmark赋值给成员变量delmark
+ this.delmark = delmark;
+ }
+ public int getStatus() {
+ return status;
+ }
+ public void setStatus(int status) {
+ this.status = status;
}
}
diff --git a/Supermarket/src/com/lingnan/supermarket/dto/InRecord.java b/Supermarket/src/com/lingnan/supermarket/dto/InRecord.java
index c5e69ed..5bc40f7 100644
--- a/Supermarket/src/com/lingnan/supermarket/dto/InRecord.java
+++ b/Supermarket/src/com/lingnan/supermarket/dto/InRecord.java
@@ -1,35 +1,27 @@
-package com.lingnan.supermarket.dto; // 声明当前类所在的包
+package com.lingnan.supermarket.dto;
-import com.lingnan.supermarket.dto.base.BsDomain; // 导入基础域类BsDomain
+import com.lingnan.supermarket.dto.base.BsDomain;
-// 定义进货记录类InRecord,继承自BsDomain
public class InRecord extends BsDomain{
- private String iNumber; // 进货编号
- private int sum; // 进货数量
- private Float inPrice; // 进货单价
-
- // getiNumber方法,用于获取进货编号
+ private String iNumber;
+ private int sum;
+ private Float inPrice;
public String getiNumber() {
- return iNumber; // 返回进货编号
+ return iNumber;
}
- // setiNumber方法,用于设置进货编号
public void setiNumber(String iNumber) {
- this.iNumber = iNumber; // 将参数iNumber赋值给成员变量iNumber
+ this.iNumber = iNumber;
}
- // getSum方法,用于获取进货数量
public int getSum() {
- return sum; // 返回进货数量
+ return sum;
}
- // setSum方法,用于设置进货数量
public void setSum(int sum) {
- this.sum = sum; // 将参数sum赋值给成员变量sum
+ this.sum = sum;
}
- // getInPrice方法,用于获取进货单价
public Float getInPrice() {
- return inPrice; // 返回进货单价
+ return inPrice;
}
- // setInPrice方法,用于设置进货单价
public void setInPrice(Float inPrice) {
- this.inPrice = inPrice; // 将参数inPrice赋值给成员变量inPrice
+ this.inPrice = inPrice;
}
}
diff --git a/Supermarket/src/com/lingnan/supermarket/dto/ProdCatalog.java b/Supermarket/src/com/lingnan/supermarket/dto/ProdCatalog.java
index 18fd506..260f059 100644
--- a/Supermarket/src/com/lingnan/supermarket/dto/ProdCatalog.java
+++ b/Supermarket/src/com/lingnan/supermarket/dto/ProdCatalog.java
@@ -1,25 +1,20 @@
-package com.lingnan.supermarket.dto; // 声明当前类所在的包
+package com.lingnan.supermarket.dto;
-// 定义产品目录类ProdCatalog
public class ProdCatalog {
- private String id; // 产品目录ID
- private String name; // 产品目录名称
-
- // getId方法,用于获取产品目录ID
+ private String id;
+ private String name;
+
public String getId() {
- return id; // 返回产品目录ID
+ return id;
}
- // setId方法,用于设置产品目录ID
public void setId(String id) {
- this.id = id; // 将参数id赋值给成员变量id
+ this.id = id;
}
- // getName方法,用于获取产品目录名称
public String getName() {
- return name; // 返回产品目录名称
+ return name;
}
- // setName方法,用于设置产品目录名称
public void setName(String name) {
- this.name = name; // 将参数name赋值给成员变量name
+ this.name = name;
}
-
+
}
diff --git a/Supermarket/src/com/lingnan/supermarket/dto/StorageRecord.java b/Supermarket/src/com/lingnan/supermarket/dto/StorageRecord.java
index 2afe8c6..0aa3b09 100644
--- a/Supermarket/src/com/lingnan/supermarket/dto/StorageRecord.java
+++ b/Supermarket/src/com/lingnan/supermarket/dto/StorageRecord.java
@@ -1,46 +1,36 @@
-package com.lingnan.supermarket.dto; // 声明当前类所在的包
+package com.lingnan.supermarket.dto;
-import java.util.Date; // 导入Date类,用于处理日期和时间
+import java.util.Date;
-import com.lingnan.supermarket.dto.base.BsDomain; // 导入基础域类BsDomain
+import com.lingnan.supermarket.dto.base.BsDomain;
-// 定义存储记录类StorageRecord,继承自BsDomain
public class StorageRecord extends BsDomain{
- private String theNumber; // 存储记录编号
- private String cDate; // 记录创建日期
- private int num; // 存储数量
- private String execute; // 执行操作(可能是执行人或者操作类型)
-
- // getTheNumber方法,用于获取存储记录编号
- public String getTheNumber() {
- return theNumber; // 返回存储记录编号
- }
- // setTheNumber方法,用于设置存储记录编号
- public void setTheNumber(String theNumber) {
- this.theNumber = theNumber; // 将参数theNumber赋值给成员变量theNumber
- }
- // getcDate方法,用于获取记录创建日期
- public String getcDate() {
- return cDate; // 返回记录创建日期
- }
- // setcDate方法,用于设置记录创建日期
- public void setcDate(String cDate) {
- this.cDate = cDate; // 将参数cDate赋值给成员变量cDate
- }
- // getNum方法,用于获取存储数量
- public int getNum() {
- return num; // 返回存储数量
- }
- // setNum方法,用于设置存储数量
- public void setNum(int num) {
- this.num = num; // 将参数num赋值给成员变量num
- }
- // getExecute方法,用于获取执行操作
- public String getExecute() {
- return execute; // 返回执行操作
- }
- // setExecute方法,用于设置执行操作
- public void setExecute(String execute) {
- this.execute = execute; // 将参数execute赋值给成员变量execute
- }
+ private String theNumber;
+ private String cDate;
+ private int num;
+ private String execute;
+ public String getTheNumber() {
+ return theNumber;
+ }
+ public void setTheNumber(String theNumber) {
+ this.theNumber = theNumber;
+ }
+ public String getcDate() {
+ return cDate;
+ }
+ public void setcDate(String cDate) {
+ this.cDate = cDate;
+ }
+ public int getNum() {
+ return num;
+ }
+ public void setNum(int num) {
+ this.num = num;
+ }
+ public String getExecute() {
+ return execute;
+ }
+ public void setExecute(String execute) {
+ this.execute = execute;
+ }
}
diff --git a/Supermarket/src/com/lingnan/supermarket/dto/SupplierInf.java b/Supermarket/src/com/lingnan/supermarket/dto/SupplierInf.java
index 65a2e9f..96c027a 100644
--- a/Supermarket/src/com/lingnan/supermarket/dto/SupplierInf.java
+++ b/Supermarket/src/com/lingnan/supermarket/dto/SupplierInf.java
@@ -1,53 +1,45 @@
-package com.lingnan.supermarket.dto; // 声明当前类所在的包
+package com.lingnan.supermarket.dto;
+
+import com.lingnan.supermarket.dto.base.BaseDomain;
-import com.lingnan.supermarket.dto.base.BaseDomain; // 导入基础域类BaseDomain
-// 定义供应商信息类SupplierInf,继承自BaseDomain
public class SupplierInf extends BaseDomain{
- private String name; // 供应商名称
- private String address; // 供应商地址
- private String contact; // 供应商联系方式
- private String email; // 供应商邮箱
- // getEmail方法,用于获取供应商邮箱
+ private String name;
+ private String address;
+ private String contact;
+ private String email;
public String getEmail() {
- return email; // 返回邮箱
+ return email;
}
- // setEmail方法,用于设置供应商邮箱
public void setEmail(String email) {
- this.email = email; // 将参数email赋值给成员变量email
+ this.email = email;
}
- private int delmark; // 删除标记
-
- // getDelmark方法,用于获取删除标记
+ private int delmark;
+
+
+
public int getDelmark() {
- return delmark; // 返回删除标记
+ return delmark;
}
- // setDelmark方法,用于设置删除标记
public void setDelmark(int delmark) {
- this.delmark = delmark; // 将参数delmark赋值给成员变量delmark
+ this.delmark = delmark;
}
- // getName方法,用于获取供应商名称
public String getName() {
- return name; // 返回供应商名称
+ return name;
}
- // setName方法,用于设置供应商名称
public void setName(String name) {
- this.name = name; // 将参数name赋值给成员变量name
+ this.name = name;
}
- // getAddress方法,用于获取供应商地址
public String getAddress() {
- return address; // 返回供应商地址
+ return address;
}
- // setAddress方法,用于设置供应商地址
public void setAddress(String address) {
- this.address = address; // 将参数address赋值给成员变量address
+ this.address = address;
}
- // getContact方法,用于获取供应商联系方式
public String getContact() {
- return contact; // 返回供应商联系方式
+ return contact;
}
- // setContact方法,用于设置供应商联系方式
public void setContact(String contact) {
- this.contact = contact; // 将参数contact赋值给成员变量contact
+ this.contact = contact;
+ }
}
-}
diff --git a/Supermarket/src/com/lingnan/supermarket/dto/User.java b/Supermarket/src/com/lingnan/supermarket/dto/User.java
index 676a03c..1d89b15 100644
--- a/Supermarket/src/com/lingnan/supermarket/dto/User.java
+++ b/Supermarket/src/com/lingnan/supermarket/dto/User.java
@@ -2,59 +2,98 @@ package com.lingnan.supermarket.dto;
import com.lingnan.supermarket.dto.base.BaseDomain;
-
+// User类继承自BaseDomain类,用于表示超市系统中的用户信息实体类
+// 该类包含了与用户相关的各种属性信息以及对应的访问器(getter)和修改器(setter)方法
public class User extends BaseDomain {
+ // 用户名,可能用于登录系统等场景
private String username;
- private String rname ;
+
+ // 用户的真实姓名
+ private String rname;
+
+ // 用户的登录密码
private String password;
+
+ // 用户的联系电话
private String phone;
+
+ // 用户的头像图片路径或相关标识(具体根据业务需求确定其存储内容)
private String img;
+
+ // 用户的权限级别,不同的整数值可能代表不同的权限角色,例如:0可能代表超级管理员,1代表管理员,2代表收银员等(具体含义由业务定义)
private int usuper;
- private int delmark ;
-
-
+
+ // 标记用户记录是否已被删除,例如:1表示未删除,0表示已删除(具体取值含义由业务定义)
+ private int delmark;
+
+ // 获取用户头像图片相关信息的方法
public String getImg() {
return img;
}
+
+ // 设置用户头像图片相关信息的方法
public void setImg(String img) {
this.img = img;
}
+
+ // 获取用户联系电话的方法
public String getPhone() {
return phone;
}
+
+ // 设置用户联系电话的方法
public void setPhone(String phone) {
this.phone = phone;
}
+
+ // 获取用户真实姓名的方法
public String getRname() {
return rname;
}
+
+ // 设置用户真实姓名的方法
public void setRname(String rname) {
this.rname = rname;
}
+
+ // 获取用户记录删除标记的方法
public int getDelmark() {
return delmark;
}
+
+ // 设置用户记录删除标记的方法
public void setDelmark(int delmark) {
this.delmark = delmark;
}
+
+ // 获取用户名的方法
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 int getUsuper() {
return usuper;
}
+
+ // 设置用户权限级别的方法
public void setUsuper(int usuper) {
this.usuper = usuper;
}
-
-}
+}
\ No newline at end of file
diff --git a/Supermarket/src/com/lingnan/supermarket/table/InOrderTM.java b/Supermarket/src/com/lingnan/supermarket/table/InOrderTM.java
index bb9922d..60934ee 100644
--- a/Supermarket/src/com/lingnan/supermarket/table/InOrderTM.java
+++ b/Supermarket/src/com/lingnan/supermarket/table/InOrderTM.java
@@ -1,99 +1,85 @@
-package com.lingnan.supermarket.table; // 声明当前类所在的包
-
-import java.util.List; // 导入List接口,用于表示列表
-import java.util.Vector; // 导入Vector类,用于实现可增长的对象数组
-
-import javax.swing.JFrame; // 导入JFrame类,用于创建窗口
-import javax.swing.table.AbstractTableModel; // 导入AbstractTableModel类,用于创建表格模型
-
-import com.lingnan.supermarket.dto.Buffer; // 导入Buffer数据传输对象
-import com.lingnan.supermarket.dto.InOrder; // 导入InOrder数据传输对象
-import com.lingnan.supermarket.dto.Buffer; // 重复导入Buffer数据传输对象,可能是错误
-import com.lingnan.supermarket.dto.Production; // 导入Production数据传输对象
-import com.lingnan.supermarket.dto.User; // 导入User数据传输对象
-import com.lingnan.supermarket.dao.UserService; // 导入UserService接口,用于用户数据访问
-import com.lingnan.supermarket.dao.impl.*; // 导入所有实现类,可能用于数据访问层的具体实现
-import com.lingnan.supermarket.dialog.InDialog; // 导入InDialog类,可能用于进货对话框
-
-
-
-public class InOrderTM extends AbstractTableModel{ // 定义一个类InOrderTM,继承自AbstractTableModel类,用于表格模型
-
- private String [] columnName = {"订单号","总价","时间","负责人","状态"}; // 定义列名数组,用于表格的列标题
-
- private productionImpl prodDao = new productionImpl(); // 创建productionImpl对象,用于操作产品数据
-
- private Vector InOrders; // 声明一个Vector数组,用于存储InOrder对象
- private inOrderServiceImpl inOrderImpl= new inOrderServiceImpl(); // 创建inOrderServiceImpl对象,用于操作订单数据
- private InOrder inOrder ; // 声明InOrder对象,用于单个订单操作
-
- String iNumber ; // 声明一个String变量,用于存储订单号
-
-
- public void allInOrderRecord() { // 定义一个方法,用于获取所有订单记录
+package com.lingnan.supermarket.table;
+
+import java.util.List;
+import java.util.Vector;
+
+import javax.swing.JFrame;
+import javax.swing.table.AbstractTableModel;
+
+import com.lingnan.supermarket.dto.Buffer;
+import com.lingnan.supermarket.dto.InOrder;
+import com.lingnan.supermarket.dto.Buffer;
+import com.lingnan.supermarket.dto.Production;
+import com.lingnan.supermarket.dto.User;
+import com.lingnan.supermarket.dao.UserService;
+import com.lingnan.supermarket.dao.impl.*;
+import com.lingnan.supermarket.dialog.InDialog;
+
+
+public class InOrderTM extends AbstractTableModel{
+
+ private String [] columnName = {"订单号","总价","时间","负责人","状态"};
+
+ private productionImpl prodDao = new productionImpl();
+
+ private Vector InOrders;
+ private inOrderServiceImpl inOrderImpl= new inOrderServiceImpl();
+ private InOrder inOrder ;
+
+ String iNumber ;/*订单号*/
+
+
+ public void allInOrderRecord() {
//将添加的商品加入到静态变量Vector数组中
/*prod = InDialog.getProduction();*/
- InOrders = inOrderImpl.findAllInOrder(); // 调用inOrderImpl的方法,获取所有订单并赋值给InOrders
+ InOrders = inOrderImpl.findAllInOrder();
}
-
+
//查找分类结果
- public void resultOfFind(int catalog) { // 定义一个方法,根据分类查找订单
- if(catalog==0) // 如果分类为0,查找所有订单
- InOrders = inOrderImpl.findAllInOrder(); // 获取所有订单
+ public void resultOfFind(int catalog) {
+ if(catalog==0)
+ InOrders = inOrderImpl.findAllInOrder();
else
- InOrders = inOrderImpl.FindStatus(catalog); // 否则根据状态查找订单
+ InOrders = inOrderImpl.FindStatus(catalog);
}
-
- //根据订单号查找
- public void resultOfNumber(String Number) { // 定义一个方法,根据订单号查找订单
- InOrders=new Vector(); // 初始化InOrders为新的Vector对象
- inOrder = inOrderImpl.findByIdinOrder(Number); // 根据订单号查找订单
- InOrders.add(inOrder); // 将找到的订单添加到InOrders中
+
+ //根据订单查找
+ public void resultOfNumber(String Number) {
+ InOrders=new Vector();
+ inOrder = inOrderImpl.findByIdinOrder(Number);
+ InOrders.add(inOrder);
}
-
-
-
-
-
-
@Override
-// 重写getRowCount方法,返回表格的行数,即订单列表的大小
public int getRowCount() {
- return InOrders.size(); // 返回InOrders Vector的大小
+ return InOrders.size();
+ }
+
+/* public Float getAllPrice() {
+ return BufferImpl.InBufferAllPrice();
}
-
-/*
-// 获取所有订单的总价格,此方法已被注释掉
-public Float getAllPrice() {
- return BufferImpl.InBufferAllPrice();
-}
*/
-
@Override
-// 重写getColumnCount方法,返回表格的列数,即列名数组的长度
- public int getColumnCount() {
- return columnName.length; // 返回columnName数组的长度
+ public int getColumnCount() {
+ return columnName.length;
}
@Override
-// 重写getValueAt方法,根据行索引和列索引获取表格单元格的值
public Object getValueAt(int rowIndex, int columnIndex) {
- inOrder = InOrders.get(rowIndex); // 获取指定行的订单对象
- // 以下代码已被注释,可能是用于调试的打印语句
- /*System.out.println( "id="+users.get(rowIndex).getId());
- System.out.println("rowIndex"+rowIndex);
- System.out.println("columnIndex"+columnIndex);*/
- iNumber=inOrder.getiNumber(); // 获取订单号并赋值给iNumber
- if(columnIndex==0) { // 如果是第一列,返回订单号
+ inOrder = InOrders.get(rowIndex);
+/* System.out.println( "id="+users.get(rowIndex).getId());
+ System.out.println("rowIndex"+rowIndex);
+ System.out.println("columnIndex"+columnIndex);*/
+ iNumber=inOrder.getiNumber();
+ if(columnIndex==0) {
return inOrder.getiNumber();
- }else if(columnIndex==1) { // 如果是第二列,返回订单总价
+ }else if(columnIndex==1) {
return inOrder.getAllInPrice();
- }else if(columnIndex==2) { // 如果是第三列,返回订单日期
- return inOrder.getInDate();
- }else if(columnIndex==3) { // 如果是第四列,返回负责人
+ }else if(columnIndex==2) {
+ return inOrder.getInDate();
+ }else if(columnIndex==3) {
return inOrder.getPrincipal();
- }else if(columnIndex==4) { // 如果是第五列,返回订单状态
+ }else if(columnIndex==4) {
String status = null;
if(inOrder.getStatus()==1)
status= "已入库";
@@ -102,23 +88,20 @@ public Float getAllPrice() {
else if(inOrder.getStatus()==3)
status= "已取消";
return status;
- }else { // 如果列索引不匹配,返回null
+ }else {
return null;
}
}
-
- // 返回要修改或删除的记录的订单号
- public String getINumber() {
- return iNumber; // 返回类的成员变量iNumber
+
+ public String getINumber() { /*返回要修改或删除的记录*/
+ return iNumber;
}
-
-
+
+
@Override
-// 重写getColumnName方法,根据列索引获取列名
public String getColumnName(int column) {
- return columnName[column]; // 返回columnName数组中指定索引的值
+ return columnName[column];
}
-
-
-
+
+
}
diff --git a/Supermarket/src/com/lingnan/supermarket/table/InRecordTM.java b/Supermarket/src/com/lingnan/supermarket/table/InRecordTM.java
index 8ed625b..8bb0ad9 100644
--- a/Supermarket/src/com/lingnan/supermarket/table/InRecordTM.java
+++ b/Supermarket/src/com/lingnan/supermarket/table/InRecordTM.java
@@ -1,95 +1,91 @@
-package com.lingnan.supermarket.table; // 声明当前类所在的包
+package com.lingnan.supermarket.table;
-import java.util.List; // 导入List接口,用于表示列表
-import java.util.Vector; // 导入Vector类,用于实现可增长的对象数组
+import java.util.List;
+import java.util.Vector;
-import javax.swing.JFrame; // 导入JFrame类,用于创建窗口框架
-import javax.swing.table.AbstractTableModel; // 导入AbstractTableModel类,用于创建表格模型
+import javax.swing.JFrame;
+import javax.swing.table.AbstractTableModel;
-import com.lingnan.supermarket.dto.Buffer; // 导入Buffer类,可能用于临时数据存储
-import com.lingnan.supermarket.dto.InOrder; // 导入InOrder类,表示进货订单
-import com.lingnan.supermarket.dto.InRecord; // 导入InRecord类,表示进货记录
-import com.lingnan.supermarket.dto.Buffer; // 重复导入Buffer类,可能是错误,应该删除
-import com.lingnan.supermarket.dto.Production; // 导入Production类,表示产品
-import com.lingnan.supermarket.dto.User; // 导入User类,表示用户
-import com.lingnan.supermarket.dao.UserService; // 导入UserService接口,用于用户数据访问
-import com.lingnan.supermarket.dao.impl.*; // 导入所有实现类,可能用于数据访问层的具体实现
-import com.lingnan.supermarket.dialog.InDialog; // 导入InDialog类,可能用于显示进货对话框
+import com.lingnan.supermarket.dto.Buffer;
+import com.lingnan.supermarket.dto.InOrder;
+import com.lingnan.supermarket.dto.InRecord;
+import com.lingnan.supermarket.dto.Buffer;
+import com.lingnan.supermarket.dto.Production;
+import com.lingnan.supermarket.dto.User;
+import com.lingnan.supermarket.dao.UserService;
+import com.lingnan.supermarket.dao.impl.*;
+import com.lingnan.supermarket.dialog.InDialog;
+public class InRecordTM extends AbstractTableModel{
+
+ private String [] columnName = {"订单号","id","数量","金额"};
-public class InRecordTM extends AbstractTableModel{ // 定义一个类,继承自AbstractTableModel,用于创建进货记录表格数据模型
-
- private String [] columnName = {"订单号","id","数量","金额"}; // 定义列名数组,用于表格的列标题
-
- private productionImpl prodDao = new productionImpl(); // 创建productionImpl实例,用于操作产品数据
-
- private Vector InRecords; // 声明一个Vector类型的变量,用于存储进货记录
-
- private inRecordServiceImpl inRecordImpl = new inRecordServiceImpl(); // 创建inRecordServiceImpl实例,用于操作进货记录数据
- private InRecord inRecord= new InRecord(); // 创建InRecord实例,用于存储单条进货记录
-
-
- private String iNumber ;/*订单号*/ // 声明一个String变量,用于存储订单号
-
+ private productionImpl prodDao = new productionImpl();
+
+ private Vector InRecords;
+
+ private inRecordServiceImpl inRecordImpl = new inRecordServiceImpl();
+ private InRecord inRecord= new InRecord();
- public InRecordTM(String iNumber) { // 构造函数,接收订单号参数
- this.iNumber=iNumber; // 将传入的订单号赋值给类的成员变量
+
+ private String iNumber ;/*订单号*/
+
+
+ public InRecordTM(String iNumber) {
+ this.iNumber=iNumber;
}
-
- public void findInRecordByINumber() { // 根据订单号查找进货记录的方法
+
+ public void findInRecordByINumber() {
//将添加的商品加入到静态变量Vector数组中
/*prod = InDialog.getProduction();*/
- InRecords = inRecordImpl.findByIdinRecord(iNumber); // 根据订单号查询进货记录并赋值给InRecords
+ InRecords = inRecordImpl.findByIdinRecord(iNumber);
}
-
-
+
+
@Override
- public int getRowCount() { // 重写方法,获取表格的行数
- return InRecords.size(); // 返回InRecords的大小
+ public int getRowCount() {
+ return InRecords.size();
}
-
- /* public Float getAllPrice() {
- return BufferImpl.InBufferAllPrice();
- }
- */
+
+/* public Float getAllPrice() {
+ return BufferImpl.InBufferAllPrice();
+ }
+*/
@Override
- public int getColumnCount() { // 重写方法,获取表格的列数
- return columnName.length; // 返回columnName数组的长度
+ public int getColumnCount() {
+ return columnName.length;
}
@Override
- public Object getValueAt(int rowIndex, int columnIndex) { // 重写方法,获取指定单元格的值
- inRecord = InRecords.get(rowIndex); // 获取指定行的进货记录
+ public Object getValueAt(int rowIndex, int columnIndex) {
+ inRecord = InRecords.get(rowIndex);
/* System.out.println( "id="+users.get(rowIndex).getId());
System.out.println("rowIndex"+rowIndex);
System.out.println("columnIndex"+columnIndex);*/
- iNumber=inRecord.getiNumber(); // 获取订单号
+ iNumber=inRecord.getiNumber();
if(columnIndex==0) {
- return inRecord.getiNumber(); // 返回订单号
+ return inRecord.getiNumber();
}else if(columnIndex==1) {
- return inRecord.getId(); // 返回id
+ return inRecord.getId();
}else if(columnIndex==2) {
- return inRecord.getSum(); // 返回数量
+ return inRecord.getSum();
}else if(columnIndex==3) {
- return inRecord.getInPrice(); // 返回金额
+ return inRecord.getInPrice();
}else {
- return null; // 如果列索引不匹配,返回null
+ return null;
}
}
-
- public String getINumber() { // 返回要修改或删除的记录的订单号
- return iNumber; // 返回类的成员变量iNumber
+
+ public String getINumber() { /*返回要修改或删除的记录*/
+ return iNumber;
}
-
-
+
+
@Override
- public String getColumnName(int column) { // 重写方法,获取指定列的列名
- return columnName[column]; // 返回columnName数组中指定索引的值
+ public String getColumnName(int column) {
+ return columnName[column];
}
-
-
-
}
diff --git a/Supermarket/src/com/lingnan/supermarket/table/InTableModel.java b/Supermarket/src/com/lingnan/supermarket/table/InTableModel.java
index 41fb2a0..b8f28ad 100644
--- a/Supermarket/src/com/lingnan/supermarket/table/InTableModel.java
+++ b/Supermarket/src/com/lingnan/supermarket/table/InTableModel.java
@@ -1,106 +1,99 @@
-package com.lingnan.supermarket.table; // 声明当前类所在的包
+package com.lingnan.supermarket.table;
-import java.util.List; // 导入List接口,用于表示列表
-import java.util.Vector; // 导入Vector类,用于实现可增长的对象数组
+import java.util.List;
+import java.util.Vector;
-import javax.swing.JFrame; // 导入JFrame类,用于创建窗口框架
-import javax.swing.table.AbstractTableModel; // 导入AbstractTableModel类,用于创建表格模型
+import javax.swing.JFrame;
+import javax.swing.table.AbstractTableModel;
-import com.lingnan.supermarket.dto.InOrder; // 导入InOrder类,表示进货订单的数据传输对象
-import com.lingnan.supermarket.dto.Production; // 导入Production类,表示产品数据传输对象
-import com.lingnan.supermarket.dto.User; // 导入User类,表示用户数据传输对象
-import com.lingnan.supermarket.dao.UserService; // 导入UserService接口,用于用户数据访问
-import com.lingnan.supermarket.dao.impl.*; // 导入所有实现类,可能用于数据访问层的具体实现
-import com.lingnan.supermarket.dialog.InDialog; // 导入InDialog类,可能用于显示进货对话框
+import com.lingnan.supermarket.dto.InOrder;
+import com.lingnan.supermarket.dto.Production;
+import com.lingnan.supermarket.dto.User;
+import com.lingnan.supermarket.dao.UserService;
+import com.lingnan.supermarket.dao.impl.*;
+import com.lingnan.supermarket.dialog.InDialog;
-public class InTableModel extends AbstractTableModel{ // 定义一个类,继承自AbstractTableModel,用于创建进货表格数据模型
-
- // 定义列名数组,用于表格的列标题
+public class InTableModel extends AbstractTableModel{
+
+
private String [] columnName = {"id","名称","数量","单价","价格","保质期","类别","供应商id"};
- // 创建productionImpl实例,用于操作产品数据
private productionImpl prodDao = new productionImpl();
-
- // 声明一个Vector,用于存储Production对象集合
+
private Vector v;
- // 声明一个String变量,用于存储id
+
String id ;
-
-
- // 构造函数,接收一个Vector类型的参数
+
+
public InTableModel(Vector v) {
- System.out.println("调用InTableModel里面的构造函数"); // 打印日志信息
- this.v=v; // 将传入的Vector赋值给类的成员变量v
+ System.out.println("调用imtablemodel里面的构造函数");
+ this.v=v;
}
-
-
-
-
- // 获取表格的行数,即数据集合的大小
+
+
+
public int getRowCount() {
- return v.size(); // 返回Vector v的大小
+ return v.size();
}
-
- // 计算所有商品的总价格
+
public Float getAllPrice() {
- Float allPrice=(float) 0; // 初始化总价格为0
- for(Production p:v) { // 遍历Vector v中的所有Production对象
- allPrice+=p.getPrice(); // 累加每个商品的价格
+ Float allPrice=(float) 0;
+ for(Production p:v) {
+ allPrice+=p.getPrice();
}
- return allPrice; // 返回计算出的总价格
+ return allPrice;
}
- // 重写方法,获取表格的列数,即列名数组的长度
@Override
- public int getColumnCount() {
- return columnName.length; // 返回columnName数组的长度
+ public int getColumnCount() {
+ return columnName.length;
}
- // 重写方法,获取指定行和列的单元格值
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
- Production p = v.get(rowIndex); // 从Vector v中获取指定行的Production对象
- id=p.getId(); // 将Production对象的id赋值给类的成员变量id
- if(columnIndex==0) { // 判断列索引,并返回相应的值
+ Production p = v.get(rowIndex);
+/* System.out.println( "id="+users.get(rowIndex).getId());
+ System.out.println("rowIndex"+rowIndex);
+ System.out.println("columnIndex"+columnIndex);*/
+ id=p.getId();
+ if(columnIndex==0) {
return p.getId();
}else if(columnIndex==1) {
- return p.getName(); // 返回商品名称
+ return p.getName();
}else if(columnIndex==2) {
- return p.getSum(); // 返回商品数量
+ return p.getSum();
}else if(columnIndex==3) {
- return p.getInPrice(); // 返回商品进货单价
+ return p.getInPrice() ;
}else if(columnIndex==4) {
- return p.getPrice(); // 返回商品价格
+ return p.getPrice() ;
}else if(columnIndex==5) {
- return p.getLife(); // 返回商品保质期
+ return p.getLife();
}else if(columnIndex==6) {
- return p.getName2()+p.getId2(); // 返回商品类别和类别id的组合
+ return p.getName2()+p.getId2();
}else if(columnIndex==7) {
- return p.getSupplyId(); // 返回供应商id
+ return p.getSupplyId();
}else {
- return null; // 如果列索引不匹配,返回null
+ return null;
}
}
-
- // 获取要修改或删除的记录的id
- public String getId() {
- return id; // 返回类的成员变量id
+
+ public String getId() { /*返回要修改或删除的记录*/
+ return id;
}
-
- // 重写方法,获取指定列的列名
+
+
@Override
public String getColumnName(int column) {
- return columnName[column]; // 返回columnName数组中指定索引的值
+ return columnName[column];
}
-
-
-
+
+
}
diff --git a/Supermarket/src/com/lingnan/supermarket/table/ProdCatalogTM.java b/Supermarket/src/com/lingnan/supermarket/table/ProdCatalogTM.java
index 54531ce..e93774b 100644
--- a/Supermarket/src/com/lingnan/supermarket/table/ProdCatalogTM.java
+++ b/Supermarket/src/com/lingnan/supermarket/table/ProdCatalogTM.java
@@ -1,71 +1,65 @@
-package com.lingnan.supermarket.table; // 声明当前类所在的包
+package com.lingnan.supermarket.table;
-import java.util.List; // 导入List接口,用于表示列表
-import java.util.Vector; // 导入Vector类,用于实现可增长的对象数组
+import java.util.List;
+import java.util.Vector;
-import javax.swing.table.AbstractTableModel; // 导入AbstractTableModel类,用于创建表格模型
+import javax.swing.table.AbstractTableModel;
-import com.lingnan.supermarket.dto.Production; // 导入Production类,表示产品数据传输对象
-import com.lingnan.supermarket.dto.User; // 导入User类,表示用户数据传输对象
-import com.lingnan.supermarket.dao.UserService; // 导入UserService接口,用于用户数据访问
-import com.lingnan.supermarket.dao.impl.*; // 导入所有实现类,可能用于数据访问层的具体实现
+import com.lingnan.supermarket.dto.Production;
+import com.lingnan.supermarket.dto.User;
+import com.lingnan.supermarket.dao.UserService;
+import com.lingnan.supermarket.dao.impl.*;
+public class ProdCatalogTM extends AbstractTableModel{
+
+ private String [] columnName = {"类别id","类别名称","商品id","商品名称"};
-public class ProdCatalogTM extends AbstractTableModel{ // 定义一个类,继承自AbstractTableModel,用于产品目录的表格数据模型
-
- private String [] columnName = {"类别id","类别名称","商品id","商品名称"}; // 定义列名数组,用于表格的列标题
-
- private productionImpl prodDao = new productionImpl(); // 创建productionImpl实例,用于操作产品数据
-
- private Vector prods; // 声明一个Vector,用于存储产品列表
-
+ private productionImpl prodDao = new productionImpl();
+
+ private Vector prods;
public void all() {
- // 查找全部数据
- prods = prodDao.findAllproduction(); // 调用findAllproduction方法,获取所有产品数据
+ //查找全部数据
+ prods = prodDao.findAllproduction();
}
public void ById2(Production p) {
- // 根据类别id查找数据
- prods = prodDao.findProductionById2(p.getId2()); // 调用findProductionById2方法,根据类别id获取产品数据
+ //查找全部数据
+ prods = prodDao.findProductionById2(p.getId2());
}
-
+
@Override
public int getRowCount() {
- return prods.size(); // 返回产品列表的大小,即表格的行数
+ return prods.size();
}
@Override
- public int getColumnCount() {
- return columnName.length; // 返回列名数组的长度,即表格的列数
+ public int getColumnCount() {
+ return columnName.length;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
- Production prod = prods.get(rowIndex); // 获取指定行的产品对象
- // 以下注释掉的是打印语句,用于调试
- /*System.out.println( "id="+users.get(rowIndex).getId());
+ Production prod = prods.get(rowIndex);
+/* System.out.println( "id="+users.get(rowIndex).getId());
System.out.println("rowIndex"+rowIndex);
System.out.println("columnIndex"+columnIndex);*/
if(columnIndex==0) {
- return prod.getId2(); // 返回类别id
+ return prod.getId2();
}else if(columnIndex==1) {
- return prod.getName2(); // 返回类别名称
+ return prod.getName2();
}else if(columnIndex==2) {
- return prod.getId(); // 返回商品id
+ return prod.getId();
}else if(columnIndex==3) {
- return prod.getName(); // 返回商品名称
+ return prod.getName();
}else {
- return null; // 如果列索引不匹配,返回null
+ return null;
}
}
-
+
@Override
public String getColumnName(int column) {
- return columnName[column]; // 返回指定列的列名
+ return columnName[column];
}
-
-
-
}
diff --git a/Supermarket/src/com/lingnan/supermarket/table/StorageRecordTM.java b/Supermarket/src/com/lingnan/supermarket/table/StorageRecordTM.java
index 4261b6b..18e43d9 100644
--- a/Supermarket/src/com/lingnan/supermarket/table/StorageRecordTM.java
+++ b/Supermarket/src/com/lingnan/supermarket/table/StorageRecordTM.java
@@ -1,77 +1,75 @@
-package com.lingnan.supermarket.table; // 声明当前类所在的包
+package com.lingnan.supermarket.table;
-import java.util.Vector; // 导入Vector类,用于实现可增长的对象数组
+import java.util.Vector;
-import javax.swing.table.AbstractTableModel; // 导入AbstractTableModel类,用于创建表格模型
+import javax.swing.table.AbstractTableModel;
-import com.lingnan.supermarket.dao.impl.storageRecordImpl; // 导入storageRecordImpl类,可能是用于操作存储记录的数据访问实现
-import com.lingnan.supermarket.dto.StorageRecord; // 导入StorageRecord类,表示存储记录的数据传输对象
+import com.lingnan.supermarket.dao.impl.storageRecordImpl;
+import com.lingnan.supermarket.dto.StorageRecord;
-public class StorageRecordTM extends AbstractTableModel{ // 定义一个类,继承自AbstractTableModel,用于存储存储记录的表格数据模型
-
- private String [] columnName = {"订单号","操作时间","商品编号","进货+/出货-","数量"}; // 定义列名数组,用于表格的列标题
-
- private storageRecordImpl srDao = new storageRecordImpl(); // 创建storageRecordImpl实例,用于操作存储记录的数据访问
-
- private Vector storageRecords; // 声明一个Vector,用于存储存储记录列表
- private StorageRecord storageRecord ; // 声明一个StorageRecord对象,用于存储单条记录
-
- String oNumber ;/*订单号*/ // 声明一个字符串变量,用于存储订单号
+public class StorageRecordTM extends AbstractTableModel{
+
+ private String [] columnName = {"订单号","操作时间","商品编号","进货+/出货-","数量"};
- public void allStoragrRecord() { // 定义一个方法,用于获取所有存储记录
+ private storageRecordImpl srDao = new storageRecordImpl();
+
+ private Vector storageRecords;
+ private StorageRecord storageRecord ;
+
+ String oNumber ;/*订单号*/
+
+
+ public void allStoragrRecord() {
//将添加的商品加入到静态变量Vector数组中
/*prod = InDialog.getProduction();*/
- storageRecords = srDao.findAllStorageRecord(); // 调用srDao的方法获取所有存储记录并赋值给storageRecords
+ storageRecords = srDao.findAllStorageRecord();
}
-
-
+
+
@Override
- public int getRowCount() { // 重写getRowCount方法,返回表格的行数
- return storageRecords.size(); // 返回storageRecords的大小,即记录的数量
+ public int getRowCount() {
+ return storageRecords.size();
}
-
+
/* public Float getAllPrice() {
return BufferImpl.InBufferAllPrice();
- }*/
-
+ }
+*/
@Override
- public int getColumnCount() { // 重写getColumnCount方法,返回表格的列数
- return columnName.length; // 返回columnName数组的长度,即列的数量
+ public int getColumnCount() {
+ return columnName.length;
}
@Override
- public Object getValueAt(int rowIndex, int columnIndex) { // 重写getValueAt方法,返回指定单元格的值
- storageRecord = storageRecords.get(rowIndex); // 获取指定行的存储记录
+ public Object getValueAt(int rowIndex, int columnIndex) {
+ storageRecord = storageRecords.get(rowIndex);
/* System.out.println( "id="+users.get(rowIndex).getId());
System.out.println("rowIndex"+rowIndex);
System.out.println("columnIndex"+columnIndex);*/
- oNumber=storageRecord.getTheNumber(); // 获取订单号并赋值给oNumber
+ oNumber=storageRecord.getTheNumber();
if(columnIndex==0) {
- return storageRecord.getTheNumber(); // 返回订单号
+ return storageRecord.getTheNumber();
}else if(columnIndex==1) {
- return storageRecord.getcDate(); // 返回操作时间
+ return storageRecord.getcDate();
}else if(columnIndex==2) {
- return storageRecord.getId(); // 返回商品编号
+ return storageRecord.getId();
}else if(columnIndex==3) {
- return storageRecord.getExecute(); // 返回进货/出货操作
+ return storageRecord.getExecute();
}else if(columnIndex==4) {
- return storageRecord.getNum(); // 返回数量
+ return storageRecord.getNum();
}else {
- return null; // 如果列索引不匹配,返回null
+ return null;
}
}
+
-
-
-
-
+
+
@Override
- public String getColumnName(int column) { // 重写getColumnName方法,返回指定列的列名
- return columnName[column]; // 返回columnName数组中指定索引的值
+ public String getColumnName(int column) {
+ return columnName[column];
}
-
-
}
diff --git a/Supermarket/src/com/lingnan/supermarket/table/StorageTableModel.java b/Supermarket/src/com/lingnan/supermarket/table/StorageTableModel.java
index 4cd9d76..1d23b82 100644
--- a/Supermarket/src/com/lingnan/supermarket/table/StorageTableModel.java
+++ b/Supermarket/src/com/lingnan/supermarket/table/StorageTableModel.java
@@ -1,76 +1,69 @@
-package com.lingnan.supermarket.table; // 包声明,指定当前类所在的包
+package com.lingnan.supermarket.table;
-import java.util.List; // 导入List接口,用于表示列表
-import java.util.Vector; // 导入Vector类,用于实现可增长的对象数组
+import java.util.List;
+import java.util.Vector;
-import javax.swing.table.AbstractTableModel; // 导入AbstractTableModel类,用于创建表格模型
+import javax.swing.table.AbstractTableModel;
-import com.lingnan.supermarket.dto.Production; // 导入Production类,表示产品数据传输对象
-import com.lingnan.supermarket.dto.User; // 导入User类,表示用户数据传输对象
-import com.lingnan.supermarket.dao.UserService; // 导入UserService接口,用于用户数据访问
-import com.lingnan.supermarket.dao.impl.*; // 导入所有实现类,可能用于数据访问层的具体实现
+import com.lingnan.supermarket.dto.Production;
+import com.lingnan.supermarket.dto.User;
+import com.lingnan.supermarket.dao.UserService;
+import com.lingnan.supermarket.dao.impl.*;
+public class StorageTableModel extends AbstractTableModel{
+
+ private String [] columnName = {"id","名称","保质期","数量","类别","供应商编号"};
-public class StorageTableModel extends AbstractTableModel{ // 定义一个类,继承自AbstractTableModel,用于存储表格数据模型
-
- private String [] columnName = {"id","名称","保质期","数量","类别","供应商编号"}; // 定义列名数组,用于表格的列标题
-
- private productionImpl prodDao = new productionImpl(); // 创建productionImpl对象,用于操作产品数据
-
- private Vector prods; // 声明一个Vector,用于存储Production对象列表
-
+ private productionImpl prodDao = new productionImpl();
+
+ private Vector prods;
public void all() {
- // 查找全部数据,并更新prods向量
+ //查找全部数据
prods = prodDao.findAllproduction();
}
-
public void Byname(Production p) {
- // 根据产品名称查找数据,并更新prods向量
+ //查找全部数据
prods = prodDao.findproduction(p.getName());
}
-
+
@Override
public int getRowCount() {
- // 获取表格的行数,即prods向量的元素数量
return prods.size();
}
@Override
- public int getColumnCount() {
- // 获取表格的列数,即columnName数组的长度
+ public int getColumnCount() {
return columnName.length;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
- // 获取指定行和列的单元格值
- Production prod = prods.get(rowIndex); // 获取指定行的Production对象
+ Production prod = prods.get(rowIndex);
+/* System.out.println( "id="+users.get(rowIndex).getId());
+ System.out.println("rowIndex"+rowIndex);
+ System.out.println("columnIndex"+columnIndex);*/
if(columnIndex==0) {
- return prod.getId(); // 返回产品ID
+ return prod.getId();
}else if(columnIndex==1) {
- return prod.getName(); // 返回产品名称
+ return prod.getName();
}else if(columnIndex==2) {
- return prod.getLife(); // 返回产品保质期
+ return prod.getLife();
}else if(columnIndex==3) {
- return prod.getSum(); // 返回产品数量
+ return prod.getSum();
}else if(columnIndex==4) {
- return prod.getName2()+prod.getId2(); // 返回产品类别和ID的组合
+ return prod.getName2()+prod.getId2();
}else if(columnIndex==5) {
- return prod.getSupplyId(); // 返回产品供应商编号
+ return prod.getSupplyId();
}else {
- return null; // 如果列索引不匹配,返回null
+ return null;
}
}
-
+
@Override
public String getColumnName(int column) {
- // 获取指定列的列名
- return columnName[column]; // 返回columnName数组中指定索引的值
+ return columnName[column];
}
-
-
-
}
diff --git a/Supermarket/src/com/lingnan/supermarket/table/SupplierTableModel.java b/Supermarket/src/com/lingnan/supermarket/table/SupplierTableModel.java
index a753478..8d1fe4f 100644
--- a/Supermarket/src/com/lingnan/supermarket/table/SupplierTableModel.java
+++ b/Supermarket/src/com/lingnan/supermarket/table/SupplierTableModel.java
@@ -13,60 +13,50 @@ import com.lingnan.supermarket.dao.impl.*;
public class SupplierTableModel extends AbstractTableModel{
-
- // 定义表格列名数组
+
private String [] columnName = {"id","名称","地址","联系方式","邮箱"};
- // 声明供应商信息服务接口实例
//private SupplierInfImpl supplierDao = new SupplierInfImpl();
private SupplierInfService supplierInfService = new SupplierInfImpl();
-
- // 创建供应商信息对象
+
private SupplierInf supplierInf = new SupplierInf();
-
- // 创建供应商信息列表
+
private Vector suppliers;
-
- // 定义供应商ID变量
+
private int id=0;
-
- // 查找全部供应商信息的方法
+
public void all() {
- // 查找全部数据
+ //查找全部数据
suppliers = supplierInfService.findAllSupplierInf();
}
- // 根据名称查找供应商信息的方法
public void Byname(SupplierInf supplierInf) {
- // 根据名称查找供应商信息
suppliers = supplierInfService.findByNameSupplierInf(supplierInf);
-
+
}
- // 重写获取行数的方法
+
@Override
public int getRowCount() {
- // 返回供应商列表的大小
return suppliers.size();
}
- // 重写获取列数的方法
@Override
- public int getColumnCount() {
- // 返回列名数组的长度
+ public int getColumnCount() {
return columnName.length;
}
- // 重写获取单元格值的方法
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
- // 获取指定行的供应商信息
SupplierInf prod = suppliers.get(rowIndex);
- // 根据列索引返回相应的供应商信息属性
+ //id = supplierInf.getId();
+/* System.out.println( "id="+users.get(rowIndex).getId());
+ System.out.println("rowIndex"+rowIndex);
+ System.out.println("columnIndex"+columnIndex);*/
if(columnIndex==0) {
return prod.getId();
}else if(columnIndex==1) {
- return prod.getName();
+ return prod.getName();
}else if(columnIndex==2) {
return prod.getAddress();
}else if(columnIndex==3) {
@@ -78,11 +68,9 @@ public class SupplierTableModel extends AbstractTableModel{
return null;
}
}
-
- // 重写获取列名的方法
+
@Override
public String getColumnName(int column) {
- // 返回指定列索引的列名
return columnName[column];
}
@@ -100,6 +88,6 @@ public class SupplierTableModel extends AbstractTableModel{
*/
-
-
+
+
}
diff --git a/Supermarket/src/com/lingnan/supermarket/table/UserTableModel.java b/Supermarket/src/com/lingnan/supermarket/table/UserTableModel.java
index fd0e631..0e63ec9 100644
--- a/Supermarket/src/com/lingnan/supermarket/table/UserTableModel.java
+++ b/Supermarket/src/com/lingnan/supermarket/table/UserTableModel.java
@@ -7,83 +7,112 @@ import javax.swing.table.AbstractTableModel;
import com.lingnan.supermarket.dto.User;
import com.lingnan.supermarket.dao.UserService;
-import com.lingnan.supermarket.dao.impl.*;
+import com.lingnan.supermarket.dao.impl.UserServiceImpl;
+// UserTableModel类继承自AbstractTableModel,用于为Swing中的表格组件提供数据模型
+// 它负责管理和提供与用户信息相关的数据,以便在表格中展示
+public class UserTableModel extends AbstractTableModel {
-public class UserTableModel extends AbstractTableModel{
-
- private String [] columnName = {"id","工号","密码","姓名","权限","电话"};
+ // 定义表格列名数组,用于指定表格每一列的标题
+ private String[] columnName = { "id", "工号", "密码", "姓名", "权限", "电话" };
+ // 用户服务接口的实现类实例,用于调用与用户相关的数据库操作方法,以获取用户数据
private UserService userService = new UserServiceImpl();
- private int id=0;
+
+ // 用于存储当前行对应的用户ID,初始化为0
+ private int id = 0;
+
+ // 存储用户信息的向量,用于保存从数据库中获取的用户数据列表,以便在表格中显示
private Vector users;
+
+ // 方法用于获取所有用户的数据,并将其存储在users向量中
+ // 该方法会调用userService的allUser方法从数据库中查询所有用户信息
public void all() {
- //查找全部数据
+ // 查找全部数据
users = userService.allUser();
}
+
+ // 根据传入的用户对象,通过调用userService的findByrnameUser方法
+ // 从数据库中查找匹配该用户真实姓名的相关用户数据,并存储在users向量中
public void Byrname(User user) {
users = userService.findByrnameUser(user);
}
-
-
+
+ // 重写AbstractTableModel中的方法,用于获取表格的行数
+ // 返回值是存储用户数据的向量users的大小,即表格中显示的用户记录行数
@Override
public int getRowCount() {
return users.size();
}
+ // 重写AbstractTableModel中的方法,用于获取表格的列数
+ // 返回值是列名数组columnName的长度,即表格中显示的列数
@Override
- public int getColumnCount() {
+ public int getColumnCount() {
return columnName.length;
}
+ // 重写AbstractTableModel中的方法,用于获取指定单元格的值
+ // 根据传入的行索引rowIndex和列索引columnIndex,从users向量中获取对应的用户对象
+ // 然后根据列索引返回该用户对象相应属性的值,以便在表格相应单元格中显示
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
+ // 从users向量中获取指定行索引的用户对象
User user = users.get(rowIndex);
- id=user.getId();
- /* System.out.println( "id="+users.get(rowIndex).getId());
- System.out.println("rowIndex"+rowIndex);
- System.out.println("columnIndex"+columnIndex);*/
- if(columnIndex==0) {
+ id = user.getId();
+ /*
+ * 以下几行代码可能是用于调试目的,输出当前获取到的用户ID、行索引和列索引信息
+ * System.out.println( "id=" + users.get(rowIndex).getId());
+ * System.out.println("rowIndex" + rowIndex);
+ * System.out.println("columnIndex" + columnIndex);
+ */
+ if (columnIndex == 0) {
+ // 如果列索引为0,返回用户的ID
return user.getId();
- }else if(columnIndex==1) {
- return user.getUsername();
- }else if(columnIndex==2) {
- return user.getPassword();
- }else if(columnIndex==3) {
+ } else if (columnIndex == 1) {
+ // 如果列索引为1,返回用户的工号(这里假设工号对应用户名属性,具体根据业务需求可能有调整)
+ return user.getUsername();
+ } else if (columnIndex == 2) {
+ // 如果列索引为2,返回用户的密码
+ return user.getPassword();
+ } else if (columnIndex == 3) {
+ // 如果列索引为3,返回用户的姓名
return user.getRname();
- }else if(columnIndex==4) {
+ } else if (columnIndex == 4) {
+ // 如果列索引为4,返回用户的权限级别
return user.getUsuper();
- }else if(columnIndex==5) {
+ } else if (columnIndex == 5) {
+ // 如果列索引为5,返回用户的电话
return user.getPhone();
- }else {
+ } else {
+ // 如果列索引不在有效范围内,返回null
return null;
}
-
-
}
- public int getid(){
+
+ // 获取当前行对应的用户ID的方法
+ public int getid() {
return id;
}
+
+ // 该方法的实现可能存在一些混淆,它的名字看起来像是获取指定行索引单元格的值,但实际上它只返回了用户的ID
+ // 可能原本是想实现类似getValueAt的功能,但代码逻辑不太完整或准确
public int getValueAt(int rowIndex) {
User user = users.get(rowIndex);
- id=users.get(rowIndex).getId();
-/* System.out.println( "id="+users.get(rowIndex).getId());
- System.out.println("rowIndex"+rowIndex);
- System.out.println("columnIndex"+columnIndex);*/
- return user.getId();
-
-
-
+ id = users.get(rowIndex).getId();
+ /*
+ * 以下几行代码可能是用于调试目的,输出当前获取到的用户ID、行索引信息
+ * System.out.println( "id=" + users.get(rowIndex).getId());
+ * System.out.println("rowIndex" + rowIndex);
+ * System.out.println("columnIndex" + columnIndex);
+ */
+ return user.getId();
}
-
-
-
-
-
+
+ // 重写AbstractTableModel中的方法,用于获取指定列的列名
+ // 根据传入的列索引column,从列名数组columnName中获取对应的列名并返回
@Override
public String getColumnName(int column) {
return columnName[column];
}
-
-
-}
+}
\ No newline at end of file
diff --git a/Supermarket/src/com/lingnan/supermarket/view/Demo4.java b/Supermarket/src/com/lingnan/supermarket/view/Demo4.java
index a9d35fb..b7d015c 100644
--- a/Supermarket/src/com/lingnan/supermarket/view/Demo4.java
+++ b/Supermarket/src/com/lingnan/supermarket/view/Demo4.java
@@ -1,82 +1,94 @@
package com.lingnan.supermarket.view;
-import java.awt. *;
+
+import java.awt.*;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
-
-import javax.swing. *;
-
-
-
+import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Scanner;
import java.awt.event.*;
-public class Demo4 extends JFrame implements ActionListener
-{
- static Demo4 tplb=new Demo4();
- static JLabel pan=new JLabel();
-
- static ImageIcon[] imgs = {
- new ImageIcon("s"),
- new ImageIcon("static\\bg\\bg1.jpg"),
- new ImageIcon("static\\bg\\bg2.jpg"),
- new ImageIcon("static\\bg\\bg3.jpg"),
- new ImageIcon("static\\bg\\bg4.jpg"),
- new ImageIcon("static\\bg\\bg5.jpg"),
- new ImageIcon("static\\bg\\bg6.jpg"),
- new ImageIcon("static\\bg\\bg7.jpg"),
- };
-
- public static void settplb()/*�ܿ��*/
- {
+
+// Demo4类用于创建一个展示图片切换效果的图形界面程序
+public class Demo4 extends JFrame implements ActionListener {
+
+ // 创建一个静态的Demo4类的实例tplb,用于在静态方法中方便地访问该类的相关属性和方法,实现类似单例模式的效果
+ static Demo4 tplb = new Demo4();
+
+ // 创建一个静态的JLabel组件pan,用于在界面上显示图片等内容,作为图片展示的载体
+ static JLabel pan = new JLabel();
+
+ // 创建一个静态的ImageIcon数组imgs,用于存储多个图片资源
+ static ImageIcon[] imgs = {
+ new ImageIcon("s"),
+ new ImageIcon("static\\bg\\bg1.jpg"),
+ new ImageIcon("static\\bg\\bg2.jpg"),
+ new ImageIcon("static\\bg\\bg3.jpg"),
+ new ImageIcon("static\\bg\\bg4.jpg"),
+ new ImageIcon("static\\bg\\bg5.jpg"),
+ new ImageIcon("static\\bg\\bg6.jpg"),
+ new ImageIcon("static\\bg\\bg7.jpg"),
+ };
+
+ // settplb方法用于设置JFrame的一些基本属性,使其成为一个合适的图形界面窗口展示出来
+ public static void settplb() {
+ // 设置窗口的标题
tplb.setTitle("ͼƬ�ֲ�����");
+ // 设置窗口的布局管理器为null,意味着后续添加组件时需要手动指定组件的位置和大小(绝对布局)
tplb.setLayout(null);
- tplb.setSize(700,800);
+ // 设置窗口的大小为宽度700像素,高度800像素
+ tplb.setSize(700, 800);
+ // 设置窗口大小不可调整,用户不能通过拖动边框等方式改变窗口大小
tplb.setResizable(false);
- tplb.setLocationRelativeTo(null);/*���þ���*/
- tplb.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/*�رճ���*/
+ // 设置窗口在屏幕上居中显示,使窗口展示位置更美观合理
+ tplb.setLocationRelativeTo(null);
+ // 设置当窗口关闭时,整个应用程序随之退出,这是一种常见的关闭窗口行为设置
+ tplb.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+ // 设置窗口可见,使其显示在屏幕上,否则窗口创建后是不可见的状态
tplb.setVisible(true);
}
+ // setpan方法用于设置JLabel组件的位置等属性,并添加到窗口中,同时启动一个定时器来实现图片的定时切换功能
+ public static void setpan() {
+ // 设置JLabel组件pan的位置和大小,x坐标为50像素,y坐标为50像素,宽度和高度都为500像素,确定其在窗口中的显示区域
+ pan.setBounds(50, 50, 500, 500);
+ // 将pan这个JLabel组件添加到tplb这个窗口实例中,使其成为窗口内容的一部分
+ tplb.add(pan);
+ // 创建一个定时器对象timer,设置每隔1秒触发一次事件,并且指定事件监听器为L
+ Timer timer = new Timer(1000, L);
+ // 启动定时器,开始计时,一旦达到设定的时间间隔就会切换图片
+ timer.start();
+ }
+
+ // 定义一个实现了ActionListener接口的匿名内部类L,用于处理定时器触发的事件,实现图片在JLabel组件上的切换效果
+ static ActionListener L = new ActionListener() {
+ int index; // 定义一个整型变量index,用于记录当前要显示的图片在imgs数组中的索引位置
- public static void setpan()
- {
- pan.setBounds(50, 50, 500, 500);
- tplb.add(pan);
- Timer timer = new Timer(1000,L);
- timer.start();
- }
-
- static ActionListener L=new ActionListener()
- {
- int index;
@Override
- public void actionPerformed(ActionEvent e)
- {
+ public void actionPerformed(ActionEvent e) {
+ // 将pan这个JLabel组件的图标设置为imgs数组中当前索引对应的图片,实现图片的切换展示效果
pan.setIcon(imgs[index]);
+ // 将索引值加1,准备切换到下一张图片
index++;
- if(index==7)
- index=0;
+ // 如果索引值达到了imgs数组的长度7,表示已经到最后一张图片了,将索引重置为0,实现循环切换图片的效果
+ if (index == 7)
+ index = 0;
}
};
-
-
-
-
- public static void main(String[] args) {
- settplb();
- setpan();
- }
+
+ // 调用设置窗口和图片展示相关的方法来展示图形界面效果
+ public static void main(String[] args) {
+ // 调用settplb方法,设置窗口的基本属性并使其显示出来
+ settplb();
+ // 调用setpan方法,设置图片展示的JLabel组件相关属性并启动图片切换的定时器功能
+ setpan();
+ }
@Override
public void actionPerformed(ActionEvent e) {
// TODO �Զ����ɵķ������
-
}
-
-
-
-}
+}
\ No newline at end of file
diff --git a/Supermarket/src/com/lingnan/supermarket/view/HomeView.java b/Supermarket/src/com/lingnan/supermarket/view/HomeView.java
index d98388d..0c3b1f1 100644
--- a/Supermarket/src/com/lingnan/supermarket/view/HomeView.java
+++ b/Supermarket/src/com/lingnan/supermarket/view/HomeView.java
@@ -1,13 +1,12 @@
package com.lingnan.supermarket.view;
-import java.awt. *;
+
+import java.awt.*;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
-
import javax.imageio.ImageIO;
-import javax.swing. *;
-
+import javax.swing.*;
import com.lingnan.supermarket.componet.BGPanel;
import com.lingnan.supermarket.dao.impl.inOrderServiceImpl;
import com.lingnan.supermarket.dao.impl.outOrderServiceImpl;
@@ -16,161 +15,221 @@ import com.lingnan.supermarket.table.UserTableModel;
import com.lingnan.supermarket.utils.FontUtil;
import com.lingnan.supermarket.utils.TimeAndOrder;
import com.lingnan.supermarket.view.base.BaseView;
-
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
import java.awt.event.*;
-public class HomeView extends JPanel implements ActionListener
-{
-
- private JLabel pan;
-
-private static JLabel pan1;
-
-private static JLabel pan2;
-
-private static JLabel pan3;
-
- private JFrame jFrame;
-
- private JPanel tplbPanel;
-
- private Image bgImage = null;
-
- private ImageIcon[] imgs;
-
- private static Float allInPrice;
-
-private static Float allOutPrice;
-
- private JButton refreshBtn;
-
- private JPanel priceJPanel;
-
- private static String date;
-
- private static inOrderServiceImpl inOrderImpl ;
- private static outOrderServiceImpl outOrderImpl;
-
-
-
- public HomeView(JFrame jFrame) {
- this.setLayout(null);
- this.jFrame = jFrame;
- initView();
-
- }
-
-
- private void initView() {
-
-
-
- pan = new JLabel();
- pan.setBounds(0,0, 1280,351);
-
- /*tplbPanel.add(pan);*/
-
- imgs =new ImageIcon[7];
- for(int i =0;i<7;i++) {
- imgs[i]=new ImageIcon("static\\轮播\\0"+i+".jpg");
- }
- pan.setIcon(imgs[6]);
- Timer timer = new Timer(2500,L);
- timer.start();
- this.add(pan);
-
- date= TimeAndOrder.yMdTime();/*获取今天时间*/
- inOrderImpl = new inOrderServiceImpl();
- outOrderImpl = new outOrderServiceImpl();
-
- allInPrice=inOrderImpl.TodayInPrice(date);
- allOutPrice=outOrderImpl.TodayOutPrice(date);
- System.out.println("今日allInprice="+allInPrice);
- System.out.println("今日allOutprice="+allOutPrice);
-
- pan1 = new JLabel("今日进货总金额:"+allInPrice+"元",new ImageIcon("static\\icon\\money.png"),JLabel.LEFT);
- pan2 = new JLabel("今日收银总金额:"+allOutPrice+"元",new ImageIcon("static\\icon\\income.png"),JLabel.LEFT);
- pan3 = new JLabel("今日被投诉次数:0次",new ImageIcon("static\\icon\\complaints.png"),JLabel.LEFT);
-
- pan1.setFont(FontUtil.homeFont);
- pan2.setFont(FontUtil.homeFont);
- pan3.setFont(FontUtil.homeFont);
-
- pan1.setBounds(280,300, 600,200);
- pan2.setBounds(280,400, 600,200);
- pan3.setBounds(280,500, 600,200);
-
- /* priceJPanel = new JPanel();
- priceJPanel.setBounds(100,200,700,500);*/
- this.add(pan1);
- this.add(pan2);
- this.add(pan3);
-
-
-
- refreshBtn = new JButton(new ImageIcon("static\\icon\\refresh.png"));
- refreshBtn.addActionListener(this);
- refreshBtn.setBounds(1050,700, 40,40);
- this.add(refreshBtn);
-
-
-
-
- }
- ActionListener L=new ActionListener()
- {
- int index;
- @Override
- public void actionPerformed(ActionEvent e)
- {
- pan.setIcon(imgs[index]);
- index++;
- if(index==7)
- index=0;
- }
- };
-
+
+// HomeView类用于构建超市管理系统中首页的视图界面,展示如图片轮播、关键业务数据以及提供数据刷新功能
+public class HomeView extends JPanel implements ActionListener {
+
+ // 用于展示图片轮播效果的JLabel组件
+ private JLabel pan;
+
+ // 用于显示今日进货总金额相关信息
+ private static JLabel pan1;
+
+ // 用于显示今日收银总金额相关信息
+ private static JLabel pan2;
+
+ // 用于显示今日被投诉次数相关信息
+ private static JLabel pan3;
+
+ private JFrame jFrame;
+
+ private JPanel tplbPanel;
+
+ // 用于存储背景图片的Image对象,初始化为null
+ private Image bgImage = null;
+
+ // 定义的ImageIcon数组,用于存储多张图片资源,以实现图片轮播功能
+ private ImageIcon[] imgs;
+
+ // 静态的Float类型变量,记录今日进货的总金额
+ private static Float allInPrice;
+
+ // 静态的Float类型变量,记录今日收银的总金额
+ private static Float allOutPrice;
+
+ // 用于触发刷新操作的按钮组件
+ private JButton refreshBtn;
+
+ private JPanel priceJPanel;
+
+ // 存储当前日期信息,方便在类内不同方法中按日期查询业务数据
+ private static String date;
+
+ // 是实现进货订单相关业务逻辑的服务层接口的类实例,用于获取进货相关数据
+ private static inOrderServiceImpl inOrderImpl;
+
+ // 用于实现销售订单相关业务逻辑,获取收银相关数据
+ private static outOrderServiceImpl outOrderImpl;
+
+ // 构造函数,用于创建HomeView实例并初始化界面相关组件
+ public HomeView(JFrame jFrame) {
+ this.setLayout(null); //设置布局为null
+ this.jFrame = jFrame; //保存父窗口引用
+ initView(); //调用initView方法初始化组件
+ }
+
+ // 初始化视图界面组件的方法,负责创建、配置各组件并设置其属性、添加组件到面板以及为按钮添加事件监听器等操作,构建首页界面展示效果
+ private void initView() {
+
+ // 创建一个JLabel组件pan,设置其初始位置和大小,用于后续图片轮播展示
+ pan = new JLabel();
+ pan.setBounds(0, 0, 1280, 351);
+
+ /*tplbPanel.add(pan);*/
+
+ // 创建包含7个元素的ImageIcon数组imgs,用于存储图片轮播的图片资源,通过循环从指定路径加载图片文件创建ImageIcon对象
+ imgs = new ImageIcon[7];
+ for (int i = 0; i < 7; i++) {
+ imgs[i] = new ImageIcon("static\\轮播\\0" + i + ".jpg");
+ }
+
+ // 设置图片轮播起始图片
+ pan.setIcon(imgs[6]);
+
+ // 创建一个定时器对象timer,设置时间间隔为2500毫秒(2.5秒),指定事件监听器为L,然后启动定时器实现图片定时轮播
+ Timer timer = new Timer(2500, L);
+ timer.start();
+
+ // 将pan这个JLabel组件添加到当前面板中,使其能在界面上显示出来参与图片轮播
+ this.add(pan);
+
+ // 调用TimeAndOrder工具类的yMdTime方法获取当前日期信息
+ date = TimeAndOrder.yMdTime();
+
+ //用于调用其实现的与进货订单相关业务方法获取数据
+ inOrderImpl = new inOrderServiceImpl();
+
+ // 创建outOrderServiceImpl类的实例,用于调用与销售订单相关业务方法获取销售相关数据,如获取今日收银总金额
+ outOrderImpl = new outOrderServiceImpl();
+
+ // 调用inOrderImpl的TodayInPrice方法,传入当前日期date,获取今日进货的总金额,用于界面显示及其他业务逻辑处理
+ allInPrice = inOrderImpl.TodayInPrice(date);
+
+ // 调用outOrderImpl的TodayOutPrice方法,传入date获取今日收银总金额,用于展示销售数据及相关操作
+ allOutPrice = outOrderImpl.TodayOutPrice(date);
+
+ // 在控制台打印今日进货总金额信息,用于调试或简单日志记录
+ System.out.println("今日allInprice=" + allInPrice);
+
+ // 在控制台打印今日收银总金额信息,起到调试或日志记录作用
+ System.out.println("今日allOutprice=" + allOutPrice);
+
+ // 创建一个JLabel组件pan1,设置其显示文本为包含今日进货总金额的内容,并设置图标及文本在图标的左侧显示,用于直观展示进货金额信息
+ pan1 = new JLabel("今日进货总金额:" + allInPrice + "元", new ImageIcon("static\\icon\\money.png"), JLabel.LEFT);
+
+ // 设置pan1这个JLabel组件的字体为通过FontUtil类获取的适用于首页显示的特定字体
+ pan1.setFont(FontUtil.homeFont);
+
+ // 设置pan1在界面中的位置和大小
+ pan1.setBounds(280, 300, 600, 200);
+
+ // 创建JLabel组件pan2,设置其显示文本为包含今日收银总金额的内容,同样设置图标及文本位置,用于展示收银金额信息
+ pan2 = new JLabel("今日收银总金额:" + allOutPrice + "元", new ImageIcon("static\\icon\\income.png"), JLabel.LEFT);
+
+ // 设置pan2的字体为首页特定字体
+ pan2.setFont(FontUtil.homeFont);
+
+ // 设置pan2在界面中的位置和大小
+ pan2.setBounds(280, 400, 600, 200);
+
+ // 创建JLabel组件pan3,设置其显示文本为今日被投诉次数相关内容(初值为0次),设置图标及文本位置,用于展示投诉情况信息
+ pan3 = new JLabel("今日被投诉次数:0次", new ImageIcon("static\\icon\\complaints.png"), JLabel.LEFT);
+
+ // 设置pan3的字体为首页特定字体
+ pan3.setFont(FontUtil.homeFont);
+
+ // 设置pan3在界面中的位置和大小
+ pan3.setBounds(280, 500, 600, 200);
+
+
+ /*priceJPanel = new JPanel();
+ priceJPanel.setBounds(100, 200, 700, 500);*/
+
+ // 将pan1、pan2、pan3这三个用于显示关键信息的JLabel组件添加到当前面板(HomeView)中,使其在界面上展示出来供用户查看相关业务数据
+ this.add(pan1);
+ this.add(pan2);
+ this.add(pan3);
+
+ // 创建一个按钮组件refreshBtn,使用指定图标文件创建按钮图标
+ refreshBtn = new JButton(new ImageIcon("static\\icon\\refresh.png"));
+
+ // 为refreshBtn按钮添加点击事件监听器,将点击事件绑定到当前类的actionPerformed方法上
+ refreshBtn.addActionListener(this);
+
+ // 设置refreshBtn按钮在界面中的位置和大小
+ refreshBtn.setBounds(1050, 700, 40, 40);
+
+ // 将refreshBtn按钮添加到当前面板(HomeView)中
+ this.add(refreshBtn);
+ }
+
+ // 定义一个实现了ActionListener接口的匿名内部类L,用于处理定时器触发的事件,实现图片在pan这个JLabel组件上的定时切换展示,达到图片轮播效果
+ ActionListener L = new ActionListener() {
+ int index; // 定义变量index,用于记录当前要显示图片在imgs数组中的索引位置,初始默认为0
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ // 将pan这个JLabel组件的图标设置为imgs数组中当前索引index对应的图片,实现图片切换展示效果,定时器触发时更新显示图片
+ pan.setIcon(imgs[index]);
+ // 将索引值index加1,准备切换到下一张图片
+ index++;
+ // 判断索引值是否达到imgs数组长度7,若达到则重置为0,实现图片循环轮播
+ if (index == 7)
+ index = 0;
+ }
+ };
+
+ // 定义静态方法refreshHome,用于刷新首页界面上显示的关键数据(进货、收银金额等)
public static void refreshHome() {
- date= TimeAndOrder.yMdTime();/*获取今天时间*/
-
- allInPrice=inOrderImpl.TodayInPrice(date);
- allOutPrice=outOrderImpl.TodayOutPrice(date);
- System.out.println("今日allInprice="+allInPrice);
- System.out.println("今日allOutprice="+allOutPrice);
-
- pan1.setText("今日进货总金额:"+allInPrice+"元");
- pan2.setText("今日收银总金额:"+allOutPrice+"元");
- pan3.setText("今日被投诉次数:0次");
-
-
- /* priceJPanel = new JPanel();
- priceJPanel.setBounds(100,200,700,500);*/
-/* this.add(pan1);
- this.add(pan2);
- this.add(pan3);*/
+ // 再次调用TimeAndOrder工具类的yMdTime方法获取当前最新日期信息
+ date = TimeAndOrder.yMdTime();
+
+ // 调用inOrderImpl的TodayInPrice方法,传入最新日期date,重新获取今日进货总金额并更新allInPrice变量的值
+ allInPrice = inOrderImpl.TodayInPrice(date);
+
+ // 调用outOrderImpl的TodayOutPrice方法,传入date重新获取今日收银总金额并更新allOutPrice变量的值
+ allOutPrice = outOrderImpl.TodayOutPrice(date);
+
+ // 在控制台打印更新后的今日进货总金额信息
+ System.out.println("今日allInPrice=" + allInPrice);
+
+ // 在控制台打印更新后的今日收银总金额信息
+ System.out.println("今日allOutPrice=" + allOutPrice);
+
+ // 更新pan1这个JLabel组件的文本内容,显示最新的进货总金额信息,实现界面数据实时刷新
+ pan1.setText("今日进货总金额:" + allInPrice + "元");
+
+ // 更新pan2的文本内容,显示最新的收银总金额信息,保证销售数据在界面上及时更新展示
+ pan2.setText("今日收银总金额:" + allOutPrice + "元");
+
+ // 更新pan3的文本内容,开始显示0次投诉
+ pan3.setText("今日被投诉次数:0次");
+
+ /*priceJPanel = new JPanel();
+ priceJPanel.setBounds(100, 200, 700, 500);*/
+
+ /*this.add(pan1);
+ this.add(pan2);
+ this.add(pan3);*/
}
-
-
-
-
-
-
+
+ // 实现ActionListener接口的actionPerformed方法
@Override
public void actionPerformed(ActionEvent e) {
- // TODO Auto-generated method stub
+ // 获取触发被点击的按钮
Object source = e.getSource();
- if(source==refreshBtn) {
+ if (source == refreshBtn) {
+ // 如果点击的是refreshBtn按钮,创建一个新的HomeView实例
new HomeView(jFrame);
+ // 调用refreshHome方法,刷新首页界面上显示的关键数据,更新界面展示内容
refreshHome();
}
-
}
-
-
-
}
\ No newline at end of file
diff --git a/Supermarket/src/com/lingnan/supermarket/view/InView.java b/Supermarket/src/com/lingnan/supermarket/view/InView.java
index 6d69d65..6738cf3 100644
--- a/Supermarket/src/com/lingnan/supermarket/view/InView.java
+++ b/Supermarket/src/com/lingnan/supermarket/view/InView.java
@@ -1,7 +1,5 @@
-// 定义包名,表明该类属于com.lingnan.supermarket.view包
package com.lingnan.supermarket.view;
-// 导入必要的Java Swing和AWT类库以及自定义的类库
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
@@ -45,286 +43,193 @@ import com.lingnan.supermarket.utils.SendQQMailUtil;
import com.lingnan.supermarket.utils.TimeAndOrder;
import com.lingnan.supermarket.view.ProdCatalogView.MyItemListener;
-// 声明InView类,继承JPanel并实现ActionListener接口
public class InView extends JPanel implements ActionListener{
-
- // 定义类的成员变量,用于构建界面元素
- // 上面的工具栏面板
+
+
+ //上面
private JPanel toolBarPanel;
-
- // 搜索面板
+
private JPanel searchPanel;
- private JLabel nameLabel,locationLabel; // 标签用于显示文本
- private JTextField nameSearchTF; // 文本框用于输入搜索内容
- private JButton searchBtn,StockBtn,exitBtn; // 按钮用于执行操作
-
- // 操作面板
+ private JLabel nameLabel,locationLabel;
+ private JTextField nameSearchTF;
+ private JButton searchBtn,StockBtn,exitBtn;
+
private JPanel opePanel;
- private JButton addBtn,updateBtn,deleteBtn,historyBtn,backBtn,detailBtn; // 操作按钮
-
- // 中间的表格滚动面板
+ private JButton addBtn,updateBtn,deleteBtn,historyBtn,backBtn,detailBtn;
+
+ //中间
private JScrollPane tableScrollPane;
- private JTable inTable; // 表格用于显示数据
-
- // 下面的面板
- private JPanel bottomPanel,bottomPanelLeft,bottomPanelRight; // 底部面板
- private JLabel countInfoLabel,countInfoLabel2; // 标签用于显示统计信息
-
- // 缓冲区相关变量
+ private JTable inTable;
+
+ //下面
+ private JPanel bottomPanel,bottomPanelLeft,bottomPanelRight;
+ private JLabel countInfoLabel,countInfoLabel2;
+
private Buffer Buffer;
private BufferImpl BufferImpl;
-
- // 定义一个静态的Vector集合,用于存储Production对象
+
private static Vector v = new Vector();
-
- // 定义一个下拉框组件,用于选择不同的状态
+
private JComboBox combo;
- // 定义一个字符串数组,包含所有可能的状态选项
private String[] status ={"全部","已入库","待入库","已取消"};
- // 定义一个变量,用于存储当前选中的目录
private int catalog;
-
- // 定义一个JFrame对象,用于表示主窗口
+
private JFrame jFrame;
- // 定义一个User对象,用于存储当前用户信息
private User user;
-
- // 定义一个InTableModel对象,用于管理表格数据模型
+
private InTableModel inTableModel ;
-
- // 实例化BufferImpl对象,用于操作缓冲区数据
+
private BufferImpl bufferImpl = new BufferImpl();
-
- // 定义一个标记变量,用于区分是从进货表还是提醒过来的表
+
private int mark;/*标记从提醒那里来1是进货表,0是提醒过来的表*/
-
- // 定义一个inOrderServiceImpl对象,用于处理进货订单服务
+
private inOrderServiceImpl inOrderImpl;
-
- // 定义一个浮点数变量,用于存储总价
+
private Float allPrice;
- // 定义一个整数变量,用于存储选中的行号
private int row;
- // 定义一个字符串变量,用于存储用户名
private String uname;
-
- // InView类的构造方法,接收主窗口、用户、货物集合和标记作为参数
+
public InView(JFrame jFrame,User user,Vector v,int mark) {
- // 设置布局管理器为边界布局
- this.setLayout(new BorderLayout());
- // 初始化成员变量
+ this.setLayout(new BorderLayout());
this.jFrame = jFrame;
this.user = user;
- // 获取进货缓冲区的保存的货物并删除缓冲区
+ //获得进货缓冲区的保存的货物并删除缓冲区
this.v =bufferImpl.allInBuffer();
bufferImpl.DelAllInBuffer();
-
- // 初始化标记变量
+
this.mark=mark;
- // 打印标记值,用于调试
System.out.println("mark="+mark);
- // 获取并存储用户名
uname = user.getUsername();
- // 初始化视图
initView();
-
-
+
+
}
-
- // 初始化视图的方法
+
private void initView() {
+
-
- // 创建工具栏面板,并设置布局管理器为边界布局
- toolBarPanel = new JPanel(new BorderLayout());
-
- // 创建搜索面板,并设置布局管理器为流式布局,靠右对齐
- searchPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
- // 创建并初始化标签,用于显示“订单号”
+ toolBarPanel = new JPanel(new BorderLayout());
+
+ searchPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
nameLabel = new JLabel("订单号");
- // 创建并初始化文本框,用于输入搜索内容,宽度为20
nameSearchTF = new JTextField(20);
- // 创建并初始化搜索按钮,并设置图标
searchBtn = new JButton(new ImageIcon("static\\icon\\search.png"));
- // 为搜索按钮添加动作监听器
searchBtn.addActionListener(this);
- // 创建并初始化位置标签,并设置字体和前景色
locationLabel=new JLabel("当前位置>进货系统");
locationLabel.setFont(new FontUtil().userFont);
locationLabel.setForeground(new Color(18, 150, 219));
-
-
-
- // 创建并初始化下拉框,使用状态数组作为选项
+
+
+
combo = new JComboBox(status);
- // 为下拉框添加项目监听器
combo.addItemListener(new MyItemListener());
-
-
-
-
- // 创建操作面板,并设置布局管理器为流式布局,靠左对齐
- opePanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
-// 创建并初始化添加按钮,并设置图标
+
+
+
+ opePanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
addBtn =new JButton(new ImageIcon("static\\icon\\add.png"));
-// 创建并初始化更新按钮,并设置图标
updateBtn =new JButton(new ImageIcon("static\\icon\\change.png"));
-// 创建并初始化删除按钮,并设置图标
deleteBtn =new JButton(new ImageIcon("static\\icon\\delete.png"));
-// 创建并初始化历史按钮,并设置图标
historyBtn =new JButton(new ImageIcon("static\\icon\\history.png"));
-// 创建并初始化返回按钮,并设置图标
backBtn =new JButton(new ImageIcon("static\\icon\\back.png"));
-// 创建并初始化详情按钮,并设置图标
detailBtn = new JButton(new ImageIcon("static\\icon\\detail.png"));
-
-// 为添加按钮添加动作监听器
+
addBtn.addActionListener(this);
-// 为更新按钮添加动作监听器
updateBtn.addActionListener(this);
-// 为删除按钮添加动作监听器
deleteBtn.addActionListener(this);
-// 为历史按钮添加动作监听器
historyBtn.addActionListener(this);
-// 为返回按钮添加动作监听器
backBtn.addActionListener(this);
-// 为详情按钮添加动作监听器
detailBtn.addActionListener(this);
-
-// 设置返回按钮初始不可见,它在记录页面时才会显示
+
backBtn.setVisible(false);/*在记录页面显示出来*/
-// 设置详情按钮初始不可见,它在订单详情页时才会显示
detailBtn.setVisible(false);/*在订单详情页显示出来*/
-
-// 将添加按钮添加到操作面板
+
opePanel.add(addBtn);
-// 将返回按钮添加到操作面板
opePanel.add(backBtn);
-// 将详情按钮添加到操作面板
opePanel.add(detailBtn);
-// 将更新按钮添加到操作面板
- opePanel.add(updateBtn);
-// 将删除按钮添加到操作面板
+ opePanel.add(updateBtn);
opePanel.add(deleteBtn);
-// 将历史按钮添加到操作面板
opePanel.add(historyBtn);
-
-// 将位置标签添加到搜索面板
+
+
searchPanel.add(locationLabel);
-// 将订单号标签添加到搜索面板
searchPanel.add(nameLabel);
-// 将搜索文本框添加到搜索面板
searchPanel.add(nameSearchTF);
-// 将搜索按钮添加到搜索面板
searchPanel.add(searchBtn);
-// 将状态下拉框添加到搜索面板
searchPanel.add(combo);
-
-
-
-// 将搜索面板添加到工具栏面板的西边(West)
+
+
+
toolBarPanel.add(searchPanel,"West");
-// 将操作面板添加到工具栏面板的东边(East)
toolBarPanel.add(opePanel,"East");
-
-
-
+
+
//中间表
- // 创建一个表格模型,并传入数据向量v
inTableModel = new InTableModel(v);
-// 创建一个新的表格,使用上面创建的表格模型
inTable = new JTable(inTableModel);
-// 设置表格的字体
inTable.setFont(FontUtil.tableFont);
-// 设置表格的行高
inTable.setRowHeight(50);
-// 创建一个滚动面板,并将表格添加到滚动面板中
tableScrollPane = new JScrollPane(inTable);
-
-// 获取表格模型中的所有商品总价
+
allPrice = inTableModel.getAllPrice();
-// 获取表格模型中的行数,即商品种类数量
row = inTableModel.getRowCount();
-// 创建底部左侧面板,并设置布局为右对齐流式布局
+
+ //下面
bottomPanelLeft = new JPanel(new FlowLayout(FlowLayout.RIGHT));
-// 创建一个标签用于显示商品种类和总价信息
- countInfoLabel = new JLabel("商品种类:"+row+",总价:"+allPrice);
-// 将商品信息标签添加到底部左侧面板
+ countInfoLabel = new JLabel("商品种类:"+row+",总价:"+allPrice);
bottomPanelLeft.add(countInfoLabel,"Left");
-
-// 创建底部右侧面板,并设置布局为左对齐流式布局
+
bottomPanelRight = new JPanel(new FlowLayout(FlowLayout.LEFT));
-// 创建并初始化结账按钮,并设置图标
StockBtn =new JButton(new ImageIcon("static\\icon\\stock.png"));/*结账按钮*/
-// 创建并初始化退出按钮,并设置图标
exitBtn =new JButton(new ImageIcon("static\\icon\\exit.png"));/*退出按钮*/
-// 为结账按钮添加动作监听器
StockBtn.addActionListener(this);
-// 为退出按钮添加动作监听器
exitBtn.addActionListener(this);
-// 将结账按钮添加到底部右侧面板
bottomPanelRight.add(StockBtn);
-// 将退出按钮添加到底部右侧面板
bottomPanelRight.add(exitBtn);
-
-// 创建底部面板,并设置布局为边界布局
+
bottomPanel = new JPanel(new BorderLayout());
-// 将底部右侧面板添加到底部面板的东边
bottomPanel.add(bottomPanelRight,"East");
-// 将底部左侧面板添加到底部面板的西边
bottomPanel.add(bottomPanelLeft,"West");
-
-
-// 将工具栏面板添加到窗口的北边
+
+
this.add(toolBarPanel,"North");
-// 将表格滚动面板添加到窗口的中间
this.add(tableScrollPane,"Center");/*将表格放到中间*/
-// 将底部面板添加到窗口的南边
this.add(bottomPanel,"South");
-
-// 如果标记为1,表示是从提醒模块过来的,则刷新缓冲区
+
if(mark==1) /*判断是不是从提醒那里过来的*/{
refreshBuffer(v);
}
-// 如果标记为0,则执行进货订单记录操作
+
else if(mark==0) {
InOrderRecord();
}
+
+
-
-
-
-
- // 设置窗口为可见状态,这样用户就可以看到并与之交互
+
setVisible(true);
+
+
-
-
-
-
-
-
+
+
+
}
-
- // 提供一个静态方法,用于获取存储Production对象的Vector集合
+
public static Vector getVector(){
return v;
}
-
- // 定义一个内部类MyItemListener,实现ItemListener接口来监听下拉框项目的状态改变
+
+
public class MyItemListener implements ItemListener {
- // 重写itemStateChanged方法,当下拉框中的项目状态改变时被调用
@Override
public void itemStateChanged(ItemEvent e) {
- // 将事件源转换为JComboBox类型
JComboBox cb = (JComboBox) e.getSource();
- // 获取当前选中的项目,并转换为字符串
String catalog1 = (String) cb.getSelectedItem();
- // 根据选中的项目设置相应的分类代码
if(catalog1.equals("全部"))
catalog=0;
else if(catalog1.equals("已入库"))
@@ -333,386 +238,276 @@ public class InView extends JPanel implements ActionListener{
catalog=2;
else if(catalog1.equals("已取消"))
catalog=3;
-
- // 根据分类代码执行查找操作
+
resultOfFindStatus(catalog);
+ }
+
}
- }
- // 设置按钮组件的可见性
+
+
+ //按钮组件隐藏
public void OrderView() {
- // 设置返回按钮为可见
backBtn.setVisible(true);
- // 设置详情按钮为可见
detailBtn.setVisible(true);
- // 设置更新按钮为可见
updateBtn.setVisible(true);
- // 设置删除按钮为可见
deleteBtn.setVisible(true);
- // 设置添加按钮为不可见
addBtn.setVisible(false);
- // 设置历史按钮为不可见
historyBtn.setVisible(false);
}
-
- // 根据订单编号查询结果,并更新界面
+
+
public void resultOfNumber(String iNumber) {
- // 重置标记
this.mark=0;
- // 创建InOrderTM对象,用于处理订单数据
InOrderTM inOrderTM = new InOrderTM();
- // 根据订单编号查询结果
inOrderTM.resultOfNumber(iNumber);
- // 设置表格模型为查询结果
inTable.setModel(inOrderTM);
- // 清除底部左侧面板的内容
bottomPanelLeft.removeAll();
- // 创建一个标签,显示记录总数
countInfoLabel = new JLabel("共"+inOrderTM.getRowCount()+"条记录");
- // 将标签添加到底部左侧面板
bottomPanelLeft.add(countInfoLabel);
- // 更新按钮组件的可见性
OrderView();
- }
-
-
- // 根据状态分类代码查询订单,并更新界面
+ }
+
public void resultOfFindStatus(int catalog) {
- // 重置标记
this.mark=0;
- // 创建InOrderTM对象,用于处理订单数据
InOrderTM inOrderTM = new InOrderTM();
- // 根据分类代码查询订单
inOrderTM.resultOfFind(catalog);
- // 设置表格模型为查询结果
inTable.setModel(inOrderTM);
- // 清除底部左侧面板的内容
bottomPanelLeft.removeAll();
- // 创建一个标签,显示记录总数
countInfoLabel = new JLabel("共"+inOrderTM.getRowCount()+"条记录");
- // 将标签添加到底部左侧面板
bottomPanelLeft.add(countInfoLabel);
- // 更新按钮组件的可见性
OrderView();
}
- // 刷新缓冲区数据,并更新界面
- public void refreshBuffer(Vector v) {
- // 设置标记为1,表示刷新操作
- this.mark=1;
- // 创建InTableModel对象,使用传入的Vector作为数据源
+
+ /*刷新*/
+ public void refreshBuffer(Vector v) {
+ this.mark=1;
+
InTableModel inTableModel = new InTableModel(v);
- // 设置表格模型为新的数据模型
inTable.setModel(inTableModel);
- // 清除底部左侧面板的内容
bottomPanelLeft.removeAll();
- // 创建一个标签,显示商品种类和总价信息
countInfoLabel = new JLabel("商品种类:"+inTableModel.getRowCount()+",总价:"+inTableModel.getAllPrice());
- // 将标签添加到底部左侧面板
bottomPanelLeft.add(countInfoLabel);
- // 设置按钮的可见性
backBtn.setVisible(false);
detailBtn.setVisible(false);
historyBtn.setVisible(true);
updateBtn.setVisible(true);
addBtn.setVisible(true);
deleteBtn.setVisible(true);
-
- // 更新总价和记录数
- allPrice = inTableModel.getAllPrice();
+
+ allPrice = inTableModel.getAllPrice();
row = inTableModel.getRowCount();
}
-
- // 调出所有进货订单记录,并更新界面
+
+ /*调出进货订单表*/
public void InOrderRecord() {
- // 重置标记
this.mark=0;
- // 创建InOrderTM对象,用于处理订单数据
InOrderTM inOrderTM = new InOrderTM();
- // 获取所有进货订单记录
inOrderTM.allInOrderRecord();
- // 设置表格模型为所有订单记录
inTable.setModel(inOrderTM);
- // 清除底部左侧面板的内容
bottomPanelLeft.removeAll();
- // 创建一个标签,显示记录总数
countInfoLabel = new JLabel("共"+inOrderTM.getRowCount()+"条记录");
- // 将标签添加到底部左侧面板
bottomPanelLeft.add(countInfoLabel);
- // 更新按钮组件的可见性
OrderView();
+
}
-
- // 根据订单编号查询进货记录,并更新界面
+
+ /*调出进货订单表*/
public void InRecord(String iNumber) {
- // 设置标记为2,表示按订单编号查询
this.mark=2;
- // 创建InRecordTM对象,使用订单编号作为查询条件
InRecordTM inRecordTM = new InRecordTM(iNumber);
- // 查询进货记录
inRecordTM.findInRecordByINumber();
- // 设置表格模型为查询结果
inTable.setModel(inRecordTM);
- // 清除底部左侧面板的内容
bottomPanelLeft.removeAll();
- // 创建一个标签,显示订单号和记录总数
countInfoLabel = new JLabel("订单号@"+iNumber+"共有"+inRecordTM.getRowCount()+"条记录");
- // 将标签添加到底部左侧面板
bottomPanelLeft.add(countInfoLabel);
- // 更新按钮的可见性
backBtn.setVisible(true);
detailBtn.setVisible(false);
updateBtn.setVisible(false);
addBtn.setVisible(false);
historyBtn.setVisible(false);
deleteBtn.setVisible(false);
+
}
-
-
-
-
-
+
+
+
+
/*按钮监听时间*/
@Override
public void actionPerformed(ActionEvent e) {
- // 创建购物车实例
BufferImpl = new BufferImpl();/*获得购物车*/
- // 获取事件源对象
Object source = e.getSource();
-
- // 如果事件源是搜索按钮
+
if(searchBtn==source) {
- // 从搜索文本框中获取订单号
String number = nameSearchTF.getText();
- // 打印搜索后的订单号
System.out.println("搜索后的订单:"+number);
- // 根据订单号进行搜索并处理结果
resultOfNumber(number);
}
- // 如果事件源是添加按钮
- else if(addBtn==source) {
- // 创建添加对话框实例,并传入窗口框架、向量数据、用户信息
+ else if(addBtn==source) {/*添加*/
InDialog outDialog = new InDialog(jFrame,v,user);
- // 设置对话框为可见
outDialog.setVisible(true);
- // 获取对话框返回的向量数据
v=outDialog.getVector();
- // 刷新购物车数据
refreshBuffer(v);
-
+
}
-
-
- else if(updateBtn==source) { /*更新*/
- // 打印当前操作标记值
+
+
+ else if(updateBtn==source) {/*更新*/
System.out.println("mark="+mark);
- // 获取表格中被选中的行索引
int rowIndex = inTable.getSelectedRow();
- // 如果没有行被选中,弹出提示对话框并返回
if(rowIndex==-1) {
- JOptionPane.showMessageDialog(this,"请选中一条进行更改数量");
- return;
- }
- // 如果标记值为1,表示当前操作是进货表修改
+ JOptionPane.showMessageDialog(this,"请选中一条进行更改数量");
+ return;
+ }
+ //进货表修改
if(mark==1) {
- // 从选中的行中获取ID
- String id =(String) inTable.getValueAt(rowIndex,0);
- // 创建修改数量的对话框实例,并传入相关参数
- ChangeSumDialog changesumDialog = new ChangeSumDialog(jFrame,id,"In",v);
- // 设置对话框为可见
- changesumDialog.setVisible(true);
- // 获取对话框返回的向量数据
- v = changesumDialog.getVector();
- // 打印更改状态后向量的大小
- System.out.println("更改状态后v.size="+v.size());
- // 刷新缓冲区数据
- refreshBuffer(v);
+ String id =(String) inTable.getValueAt(rowIndex,0);
+ ChangeSumDialog changesumDialog = new ChangeSumDialog(jFrame,id,"In",v);
+ changesumDialog.setVisible(true);
+ v = changesumDialog.getVector();
+ System.out.println("更改状态后v.size="+v.size());
+ refreshBuffer(v);
}
-
+
//inOrder修改,修改状态
- else if(mark==0) {
- // 从选中的行中获取订单编号
+ else if(mark==0) {
String iNumber =(String) inTable.getValueAt(rowIndex,0);
- // 从选中的行中获取订单状态
String status =(String) inTable.getValueAt(rowIndex,4);
- // 如果订单状态为"已入库",则弹出提示信息并返回
if(status.equals("已入库")) {
JOptionPane.showMessageDialog(this,"订单上的货物已入库无法修改状态","提示",JOptionPane.INFORMATION_MESSAGE);
return;
}
-
- // 创建修改状态对话框实例,并传入相关参数
+
ChangeStatusDialog changeStatusDialog = new ChangeStatusDialog(jFrame,iNumber,status);
- // 设置对话框为可见
changeStatusDialog.setVisible(true);
- // 刷新主界面提醒
MainView.refreshRemind();
- // 刷新首页
HomeView.refreshHome();
- // 重新加载订单记录
InOrderRecord();
}
-
-
+
}
-
-
+
+
else if(deleteBtn==source) {
- // 获取表格中被选中的行索引
int rowIndex = inTable.getSelectedRow();
- // 如果没有行被选中,弹出提示对话框并返回
if(rowIndex==-1) {
- JOptionPane.showMessageDialog(this,"请选中一条");
- return;
- }
-
+ JOptionPane.showMessageDialog(this,"请选中一条");
+ return;
+ }
+
/*删除进货表的*/
if(mark==1) {
- // 打印日志信息,表示将删除进货表中的记录
System.out.println("删除进货表");
- // 从选中的行中获取记录的ID
- String id =(String) inTable.getValueAt(rowIndex,0);
- // 弹出确认对话框,询问用户是否删除指定ID的记录
- int select = JOptionPane.showConfirmDialog(this,"是否删除id为"+id+"的记录","提示",JOptionPane.YES_NO_OPTION);
- // 如果用户选择"是",则执行删除操作
- if(select==JOptionPane.YES_OPTION) {/*选择是*/
- // 遍历向量v,寻找匹配的ID进行删除
- for(int i =0;i();
+ refreshBuffer(v);
+ MainView.refreshRemind();
+ JOptionPane.showConfirmDialog(null,"发送邮件成功\r\n订单号:"+s[0]+"\r\n负责人:"+uname, "提示", JOptionPane.YES_OPTION);
+
}
- // 清空购物车并刷新缓冲区
- v=new Vector();
- refreshBuffer(v);
- // 刷新主界面提醒
- MainView.refreshRemind();
- // 弹出提示对话框,显示邮件发送成功和订单信息
- JOptionPane.showConfirmDialog(null,"发送邮件成功\r\n订单号:"+s[0]+"\r\n负责人:"+uname, "提示", JOptionPane.YES_OPTION);
-
+
+
}
-
-
- }
-
+
}else if(exitBtn==source) {
- // 弹出确认对话框,询问是否退出并清空购物车
int res = JOptionPane.showConfirmDialog(null,"确定退出并清空购物车吗", "结账", JOptionPane.YES_NO_OPTION);
if(res==JOptionPane.YES_OPTION)/*如果退出*/{
- // 将购物车数组置空并刷新缓冲区
v=new Vector();/*将数组置空*/
refreshBuffer(v);
- // 弹出提示对话框,显示退出成功
JOptionPane.showConfirmDialog(null,"退出成功", "提示", JOptionPane.PLAIN_MESSAGE);
+ }
}
-
-
-
}
}
-}
diff --git a/Supermarket/src/com/lingnan/supermarket/view/LoginView.java b/Supermarket/src/com/lingnan/supermarket/view/LoginView.java
index e52dcb4..6579aa3 100644
--- a/Supermarket/src/com/lingnan/supermarket/view/LoginView.java
+++ b/Supermarket/src/com/lingnan/supermarket/view/LoginView.java
@@ -24,135 +24,160 @@ import javax.swing.JPasswordField;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
+// 导入用户相关服务层接口及实现类,用于处理用户登录等业务逻辑
import com.lingnan.supermarket.dao.UserService;
import com.lingnan.supermarket.dao.impl.UserServiceImpl;
+// 导入用户数据传输对象相关类,用于传递用户相关的数据信息
import com.lingnan.supermarket.dto.Production;
import com.lingnan.supermarket.dto.User;
import com.lingnan.supermarket.componet.BGPanel;
import com.lingnan.supermarket.view.base.BaseView;
-public class LoginView extends BaseView implements ActionListener{
-
- //setLayout(null);
- //setBounds(x,y,width,height)
- private JPanel containerPanel,namePanel,passwordPanel;
-
- private JLabel nameLabel,pwdLabel;
- private JTextField nameTF;
- private JPasswordField pwdTF;
-
- private JButton loginBtn;
-
- private User user=null;
-
-
- /*创建窗口*/
- public LoginView() {
+// 登录视图类,实现ActionListener接口用于处理按钮点击等事件
+public class LoginView extends BaseView implements ActionListener {
+
+ // 组件声明
+
+ // 用于容纳其他面板和组件的主面板,整体布局容器
+ private JPanel containerPanel;
+ // 用于放置用户名相关组件的面板
+ private JPanel namePanel;
+ // 用于放置密码相关组件的面板
+ private JPanel passwordPanel;
+
+ // 用户名标签
+ private JLabel nameLabel;
+ // 密码标签
+ private JLabel pwdLabel;
+ // 用于输入用户名的文本框
+ private JTextField nameTF;
+ // 用于输入密码的密码框
+ private JPasswordField pwdTF;
+
+ // 登录按钮,点击后触发登录验证等相关操作
+ private JButton loginBtn;
+
+ // 用于存储登录成功后的用户对象信息,初始化为null
+ private User user = null;
+
+ /*
+ * 创建窗口的构造方法
+ * 参数:
+ * int width:窗口的宽度
+ * int height:窗口的高度
+ * String title:窗口的标题
+ */
+ public LoginView() {
+ // 调用父类(BaseView)的构造方法来设置窗口的大小和标题
super(350, 250, "新民超市");
- ImageIcon icon=new ImageIcon("static\\icon\\新.png"); //xxx代表图片存放路径,2.png图片名称及格式
+ // 创建一个ImageIcon对象,用于设置窗口的图标,传入的参数是图标图片的路径及文件名
+ ImageIcon icon = new ImageIcon("static\\icon\\新.png");
+ // 设置窗口的图标,通过获取ImageIcon中的Image对象来设置
this.setIconImage(icon.getImage());
-
}
- /*添加组件*/
- @Override/*界面*/
+ /*
+ * 添加组件到界面的方法,重写自父类的initView方法,用于初始化界面视图组件及布局等
+ */
+ @Override
protected void initView() {
-
Image bgImage = null;
try {
+ // 尝试从指定文件路径读取背景图片,若读取失败会抛出IOException异常
bgImage = ImageIO.read(new File("static\\bg\\bg1.jpg"));
} catch (IOException e) {
e.printStackTrace();
}
- containerPanel = new BGPanel(bgImage);
-
-
-
- //用户名
- namePanel = new JPanel();
+ // 创建一个自定义的背景面板,传入读取到的背景图片,用于作为整个界面的背景容器
+ containerPanel = new BGPanel(bgImage);
+
+ // 用户名相关组件的设置
+ // 创建放置用户名相关组件的面板
+ namePanel = new JPanel();
+ // 创建用户名标签,通过传入一个ImageIcon来显示带有图标的提示信息
nameLabel = new JLabel(new ImageIcon("static\\icon\\loginName.png"));
- nameTF = new JTextField("z001",22);
+ // 创建用户名输入文本框,并设置默认显示的文本内容以及文本框的宽度
+ nameTF = new JTextField("z001", 22);
+ // 将用户名标签和输入文本框添加到用户名面板中
namePanel.add(nameLabel);
namePanel.add(nameTF);
-
- //密码
+ // 密码相关组件的设置
+ // 创建放置密码相关组件的面板
passwordPanel = new JPanel();
+ // 创建密码标签,通过传入一个ImageIcon来显示带有图标的提示信息
pwdLabel = new JLabel(new ImageIcon("static\\icon\\pwd.png"));
- pwdTF = new JPasswordField("0.00.0",22);
+ // 创建密码输入文本框
+ pwdTF = new JPasswordField("0.00.0", 22);
+ // 将密码标签和密码输入文本框添加到密码面板中
passwordPanel.add(pwdLabel);
passwordPanel.add(pwdTF);
-
- //登录
+
+ // 创建登录按钮,并设置按钮上显示的文本内容
loginBtn = new JButton("登录");
+ // 为登录按钮添加ActionListener监听器,当按钮被点击时会触发相应的事件处理方法
loginBtn.addActionListener(this);
-
-
-
-
- /*添加组件*/
+ // 将用户名面板、密码面板和登录按钮添加到主容器面板中,确定它们在界面中的布局顺序等
containerPanel.add(namePanel);
containerPanel.add(passwordPanel);
containerPanel.add(loginBtn);
-
-
-
+ // 获取窗口的内容面板,将主容器面板添加到内容面板中,使得界面组件能够正确显示在窗口内
Container container = getContentPane();
container.add(containerPanel);
}
-
- /*事件处理*/
+
+ /*
+ * 处理按钮点击等事件的方法,实现ActionListener接口的抽象方法,用于处理界面中的交互事件
+ * 参数:
+ * ActionEvent e:包含了事件相关的信息,例如事件源(哪个组件触发的事件)等
+ */
@Override
public void actionPerformed(ActionEvent e) {
- /*如果点击登录*/
- if(e.getSource()==loginBtn){
- String loginName = nameTF.getText();
- String password = new String(pwdTF.getPassword());
- System.out.println("点击登录后");
- System.out.println("用户名为"+loginName);
- System.out.println("密码为"+password);
- //TODO 参数校验
- UserServiceImpl userService = new UserServiceImpl();
- user = userService.login(loginName, password);
-
- if(user==null) {
- JOptionPane.showMessageDialog(this,"账号或密码错误");
- }else {
- //去到主界面
- Random random=new Random();
- int skin=random.nextInt(10);
- System.out.println("skin="+skin);
- String iconSkin = "static\\icon\\新.png";/*默认icon*/
- new MainView(user,skin,iconSkin);
- this.dispose();
- }
+ // 判断事件源是否是登录按钮
+ if (e.getSource() == loginBtn) {
+ // 获取用户名输入文本框中的文本内容,作为登录用户名
+ String loginName = nameTF.getText();
+ // 获取密码输入文本框中的密码内容,通过将char数组转换为字符串的方式获取
+ String password = new String(pwdTF.getPassword());
+ System.out.println("点击登录后");
+ System.out.println("用户名为" + loginName);
+ System.out.println("密码为" + password);
+ // 创建用户服务层的实现类对象,用于调用登录相关的业务逻辑方法
+ UserServiceImpl userService = new UserServiceImpl();
+ // 调用用户服务层的登录方法,传入用户名和密码进行登录验证,返回验证后的用户对象
+ user = userService.login(loginName, password);
+
+ // 根据登录验证结果进行相应处理
+ if (user == null) {
+ // 如果用户对象为null,说明登录失败,弹出提示框告知用户账号或密码错误
+ JOptionPane.showMessageDialog(this, "账号或密码错误");
+ } else {
+ // 如果登录成功,生成一个随机数,用于后续可能的界面皮肤等相关随机选择逻辑
+ Random random = new Random();
+ int skin = random.nextInt(10);
+ System.out.println("skin=" + skin);
+ // 设置默认的图标皮肤
+ String iconSkin = "static\\icon\\新.png";
+ // 创建主界面对象,传入登录成功的用户对象、随机生成的皮肤编号以及图标皮肤路径,进入主界面展示相关功能
+ new MainView(user, skin, iconSkin);
+ // 关闭当前登录窗口,释放资源等
+ this.dispose();
+ }
}
-
}
-
-
public static void main(String[] args) {
+ //设置界面外观
Nimbus.Nimbus();
+ // 创建登录视图(LoginView)对象,启动登录界面展示
LoginView loginView = new LoginView();
- }
+ }
@Override
- protected void initView(User user,int skin) {
+ protected void initView(User user, int skin) {
// TODO Auto-generated method stub
-
- }
-
-
-
-
-
-
-
-}
-
-
-
+ }
+}
\ No newline at end of file
diff --git a/Supermarket/src/com/lingnan/supermarket/view/MainView.java b/Supermarket/src/com/lingnan/supermarket/view/MainView.java
index 3635cf6..2d25fde 100644
--- a/Supermarket/src/com/lingnan/supermarket/view/MainView.java
+++ b/Supermarket/src/com/lingnan/supermarket/view/MainView.java
@@ -1,256 +1,243 @@
-package com.lingnan.supermarket.view; // 定义包名,所有视图相关的类都在这个包下
-
-
-import java.awt.event.ActionEvent; // 导入ActionEvent类,用于监听动作事件
-import java.awt.event.ActionListener; // 导入ActionListener接口,用于实现动作事件监听
-import java.awt.event.MouseEvent; // 导入MouseEvent类,用于监听鼠标事件
-import java.awt.event.MouseListener; // 导入MouseListener接口,用于实现鼠标事件监听
-import java.awt.event.WindowEvent; // 导入WindowEvent类,用于监听窗口事件
-import java.awt.event.WindowListener; // 导入WindowListener接口,用于实现窗口事件监听
-import java.io.File; // 导入File类,用于文件操作
-import java.io.IOException; // 导入IOException类,用于处理输入输出异常
-import java.util.Date; // 导入Date类,用于处理日期
-import java.util.Random; // 导入Random类,用于生成随机数
-import java.util.Vector; // 导入Vector类,用于实现动态数组
-
-import javax.imageio.ImageIO; // 导入ImageIO类,用于图像输入输出
-import javax.swing.ImageIcon; // 导入ImageIcon类,用于显示图片
-import javax.swing.JButton; // 导入JButton类,用于创建按钮
-import javax.swing.JLabel; // 导入JLabel类,用于创建标签
-import javax.swing.JMenu; // 导入JMenu类,用于创建菜单
-import javax.swing.JMenuBar; // 导入JMenuBar类,用于创建菜单栏
-import javax.swing.JMenuItem; // 导入JMenuItem类,用于创建菜单项
-import javax.swing.JOptionPane; // 导入JOptionPane类,用于显示对话框
-import javax.swing.JPanel; // 导入JPanel类,用于创建面板
-import javax.swing.JSplitPane; // 导入JSplitPane类,用于创建分隔面板
-import javax.swing.Timer; // 导入Timer类,用于实现定时器
-
-
-import com.lingnan.supermarket.componet.BGPanel; // 导入自定义的BGPanel类
-import com.lingnan.supermarket.dao.impl.BufferImpl; // 导入BufferImpl类,可能是数据访问层的实现
-import com.lingnan.supermarket.dao.impl.inOrderServiceImpl; // 导入inOrderServiceImpl类,可能是订单服务的实现
-import com.lingnan.supermarket.dialog.CloseDialog; // 导入CloseDialog类,可能是关闭对话框
-import com.lingnan.supermarket.dialog.InDialog; // 导入InDialog类,可能是入库对话框
-import com.lingnan.supermarket.dialog.UserDialog; // 导入UserDialog类,可能是用户对话框
-import com.lingnan.supermarket.dialog.UserInfDialog; // 导入UserInfDialog类,可能是用户信息对话框
-import com.lingnan.supermarket.dto.InOrder; // 导入InOrder类,可能是订单数据传输对象
-import com.lingnan.supermarket.dto.Production; // 导入Production类,可能是产品数据传输对象
-import com.lingnan.supermarket.dto.User; // 导入User类,可能是用户数据传输对象
-import com.lingnan.supermarket.utils.DateUtil; // 导入DateUtil类,可能是日期工具类
-import com.lingnan.supermarket.utils.FontUtil; // 导入FontUtil类,可能是字体工具类
-import com.lingnan.supermarket.view.base.BaseView; // 导入BaseView类,可能是视图基类
-
-
-import java.awt.*; // 导入awt包中的所有类
-
-
-// 主视图类,继承自BaseView,并实现多个事件监听接口
-public class MainView extends BaseView implements ActionListener, MouseListener,WindowListener{
-
-
- JMenuBar menuBar; // 声明菜单栏变量
- JMenu settingMenu,helpMenu; // 声明设置菜单和帮助菜单变量
-
- JMenuItem skinMenuItem,configMenuItem; // 声明皮肤菜单项和配置菜单项变量
+package com.lingnan.supermarket.view;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.awt.event.WindowEvent;
+import java.awt.event.WindowListener;
+import java.io.File;
+import java.io.IOException;
+import java.util.Date;
+import java.util.Random;
+import java.util.Vector;
+
+import javax.imageio.ImageIO;
+import javax.swing.ImageIcon;
+import javax.swing.JButton;
+import javax.swing.JLabel;
+import javax.swing.JMenu;
+import javax.swing.JMenuBar;
+import javax.swing.JMenuItem;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JSplitPane;
+import javax.swing.Timer;
+
+import com.lingnan.supermarket.componet.BGPanel;
+import com.lingnan.supermarket.dao.impl.BufferImpl;
+import com.lingnan.supermarket.dao.impl.inOrderServiceImpl;
+import com.lingnan.supermarket.dialog.CloseDialog;
+import com.lingnan.supermarket.dialog.InDialog;
+import com.lingnan.supermarket.dialog.UserDialog;
+import com.lingnan.supermarket.dialog.UserInfDialog;
+import com.lingnan.supermarket.dto.InOrder;
+import com.lingnan.supermarket.dto.Production;
+import com.lingnan.supermarket.dto.User;
+import com.lingnan.supermarket.utils.DateUtil;
+import com.lingnan.supermarket.utils.FontUtil;
+import com.lingnan.supermarket.view.base.BaseView;
+
+import java.awt.*;
-
- JSplitPane containerPanel; // 声明分隔面板变量,用于左右布局
-
- CardLayout rightPanelLayout; // 声明卡片布局管理器变量,用于右侧面板
- JPanel leftPanel,rightPanel; // 声明左侧和右侧面板变量
-
- /*菜单栏组件*/
+public class MainView extends BaseView implements ActionListener, MouseListener,WindowListener{
+
+
+ JMenuBar menuBar;
+ JMenu settingMenu,helpMenu;
+
+ JMenuItem skinMenuItem,configMenuItem;
+
+
+ JSplitPane containerPanel;
+
+ CardLayout rightPanelLayout;
+ JPanel leftPanel,rightPanel;
+
+ /*菜单栏*/
JLabel logoLabel,userMenuLabel1,homeMenuLabel,userMenuLabel,inMenuLabel,
- outMenuLabel,storageMenuLabel,supplierMenuLabel,catalogMenuLabel;
- // 声明菜单栏中各个标签的变量
-
- static JLabel remindMenuLabel;/*声明静态标签变量,用于全局调用刷新*/
-
- JPanel bottomPanel; // 声明底部面板变量
-
- JLabel timeLabel; // 声明时间标签变量
-
- JPanel purposePanel,timePanel; // 声明目的面板和时间面板变量
- JLabel purposeLabel; // 声明目的标签变量
-
-
+ outMenuLabel,storageMenuLabel,supplierMenuLabel,catalogMenuLabel;
+
+ static JLabel remindMenuLabel;/*全局调用刷新*/
+
+ JPanel bottomPanel;
+
+ JLabel timeLabel;
+
+ JPanel purposePanel,timePanel;
+ JLabel purposeLabel;
+
+
JButton saveBtn,unSaveBtn,cancleBtn;/*退出时按钮*/
//
- Timer timer; // 声明定时器变量,用于执行周期性任务
-
- private User user ;/*从登录界面传过来的用户信息,用于当前视图的用户上下文*/
-
- private BufferImpl bufferImpl; // 声明BufferImpl对象,可能是用于缓存处理的实现
-
- private Image bgImage ; // 声明背景图片变量
- private String iconSkin; // 声明图标皮肤路径变量
- private int skin; // 声明皮肤编号变量
-
- private Vector vP=new Vector() ;/*用于进货缓存,存储产品信息*/
-
- private int location; // 声明位置变量,可能用于记录当前视图的状态或位置
-
- private int sSuper=-1;//界面权限,用于标识用户权限级别
-
- private static inOrderServiceImpl inOrderImpl = new inOrderServiceImpl(); // 声明并实例化订单服务实现类
+ Timer timer;
+
+ private User user ;/*从登录界面传过来的用户信息*/
+
+ private BufferImpl bufferImpl;
+
+ private Image bgImage ;
+ private String iconSkin;
+ private int skin;
+
+ private Vector vP=new Vector() ;/*用于进货缓存*/
- private static int unConfirmmark;/*未确认订单的数量*/
+
+ private int location;
- // 构造方法,接收用户信息、皮肤编号和图标皮肤路径
+ private int sSuper=-1;//界面权限
+
+ private static inOrderServiceImpl inOrderImpl = new inOrderServiceImpl();
+ private static int unConfirmmark;/*未确认订单*/
+
public MainView(User user,int skin,String iconSkin) {
-
- super(1300,850,"新民超市管理系统欢迎您",user,skin); // 调用父类构造方法,设置窗口大小、标题、用户信息和皮肤
- timer = new Timer(1000,this); // 创建定时器,每1000毫秒执行一次
- timer.start(); // 启动定时器
- this.user = user; // 保存用户信息到当前视图
- this.sSuper=user.getUsuper();//界面权限,从用户信息中获取权限级别
- System.out.println("userid="+user.getId()); // 打印用户ID
- this.addWindowListener(this); // 为当前窗口添加窗口事件监听器
- this.skin = skin; // 保存皮肤编号
- this.iconSkin = iconSkin; // 保存图标皮肤路径
- ImageIcon icon=new ImageIcon(iconSkin); // 创建ImageIcon对象,加载图标皮肤
- this.setIconImage(icon.getImage()); // 设置窗口图标
- // 获得未进货的信息
+ super(1300,850,"新民超市管理系统欢迎您",user,skin);
+ timer = new Timer(1000,this);
+ timer.start();
+ this.user = user;
+
+ this.sSuper=user.getUsuper();//界面权限
+ System.out.println("userid="+user.getId());
+ this.addWindowListener(this);
+
+ this.skin = skin;
+ this.iconSkin = iconSkin;
+ ImageIcon icon=new ImageIcon(iconSkin); //xxx代表图片存放路径,2.png图片名称及格式
+ this.setIconImage(icon.getImage());
+
+ //获得未进货的信息
Vector vInOrder;
- vInOrder = inOrderImpl.findUnconfirmInOrder(); // 查找未确认的订单
- unConfirmmark=vInOrder.size(); // 设置未确认订单的数量
- initView(user,skin); // 初始化视图
+ vInOrder = inOrderImpl.findUnconfirmInOrder();
+ unConfirmmark=vInOrder.size();
+
+
+ initView(user,skin);
}
- // 另一个构造方法,只接收用户信息
public MainView(User user) {
- super(1300,850,"新民超市管理系统欢迎您"); // 调用父类构造方法,设置窗口大小和标题
-
- timer = new Timer(1000,this); // 创建定时器,每1000毫秒执行一次
-
- timer.start(); // 启动定时器
-
- this.user = user; // 保存用户信息到当前视图
-
- this.sSuper=user.getUsuper();//界面权限,从用户信息中获取权限级别
-
- System.out.println("userid="+user.getId()); // 打印用户ID
+ super(1300,850,"新民超市管理系统欢迎您");
+ timer = new Timer(1000,this);
+ timer.start();
+ this.user = user;
+
+ this.sSuper=user.getUsuper();//界面权限
+ System.out.println("userid="+user.getId());
+ this.addWindowListener(this);
+
- this.addWindowListener(this); // 为当前窗口添加窗口事件监听器
- // 获得未进货的信息
+
+ //获得未进货的信息
Vector vInOrder;
+ vInOrder = inOrderImpl.findUnconfirmInOrder();
+ unConfirmmark=vInOrder.size();
- vInOrder = inOrderImpl.findUnconfirmInOrder(); // 查找未确认的订单
-
- unConfirmmark=vInOrder.size(); // 设置未确认订单的数量
-
- initView(user,skin); // 初始化视图,这里没有为skin赋值,可能会出错
-
+
+ initView(user,skin);
}
-
-
-
-
+
public static void refreshRemind() {
- Vector vInOrder; // 声明未确认订单的向量
- vInOrder = inOrderImpl.findUnconfirmInOrder(); // 查找所有未确认的订单
- unConfirmmark = vInOrder.size(); // 获取未确认订单的数量
- remindMenuLabel.setText("待确认进货:" + unConfirmmark); // 更新菜单标签,显示未确认订单的数量
+ Vector vInOrder;
+ vInOrder = inOrderImpl.findUnconfirmInOrder();
+ unConfirmmark=vInOrder.size();
+ remindMenuLabel.setText("待确认进货:"+unConfirmmark);
}
+
-// 以下是注释掉的代码,没有实现功能
+
+
+
/* public static User getUserInf() {
- return user; // 返回用户信息
-}*/
+ return user;
+ }*/
@Override
- protected void initView(User user, int skin) {
- // 初始化视图的方法,接收用户信息和皮肤编号
-
+ protected void initView(User user,int skin) {
+
+
+
+
/*菜单栏*/
- menuBar = new JMenuBar(); // 创建菜单栏
-
- settingMenu = new JMenu("设置"); // 创建设置菜单
-
- helpMenu = new JMenu("帮助"); // 创建帮助菜单
-
- skinMenuItem = new JMenuItem("随机切换皮肤", new ImageIcon("static\\icon\\skin.png")); // 创建切换皮肤的菜单项
-
- /*for循环被注释掉了,没有实际作用
- for(int i = 3;i<9;i++) {
-
- }*/
- configMenuItem = new JMenuItem("参数设置", new ImageIcon("static\\icon\\setting.png")); // 创建参数设置的菜单项
- skinMenuItem.addActionListener(this); // 为切换皮肤菜单项添加动作监听器
-
- settingMenu.add(configMenuItem); // 将参数设置菜单项添加到设置菜单
- settingMenu.add(skinMenuItem); // 将切换皮肤菜单项添加到设置菜单
- menuBar.add(settingMenu); // 将设置菜单添加到菜单栏
- menuBar.add(helpMenu); // 将帮助菜单添加到菜单栏
+ menuBar = new JMenuBar();
+
+ settingMenu = new JMenu("设置");
+
+ helpMenu = new JMenu("帮助");
+
+ skinMenuItem = new JMenuItem("随机切换皮肤",new ImageIcon("static\\icon\\skin.png"));
- setJMenuBar(menuBar); // 将菜单栏设置到当前窗口
+/* for(int i = 3;i<9;i++) {
+
+ }*/
+ configMenuItem = new JMenuItem("参数设置",new ImageIcon("static\\icon\\setting.png"));
+ skinMenuItem.addActionListener(this);
+
+ settingMenu.add(configMenuItem);
+ settingMenu.add(skinMenuItem);
+ menuBar.add(settingMenu);
+ menuBar.add(helpMenu);
+
+ setJMenuBar(menuBar);
+
/*左边菜单栏设置*/
+
+
try {
- bgImage = ImageIO.read(new File("static\\bg\\bg" + skin + ".jpg")); // 读取背景图片
+ bgImage = ImageIO.read(new File("static\\bg\\bg"+skin+".jpg"));
} catch (IOException e) {
// TODO Auto-generated catch block
- e.printStackTrace(); // 打印异常堆栈信息
-
+ e.printStackTrace();
}
+
+ leftPanel = new BGPanel(bgImage);/*皮肤*/
+ leftPanel.setLayout(null);
- leftPanel = new BGPanel(bgImage); /*皮肤*/ // 创建带有背景的左边面板
- leftPanel.setLayout(null); // 设置左边面板布局为空,即绝对布局
-
+
/*菜单栏:用户登录信息*/
- System.out.println("用户头像地址==" + user.getImg()); // 打印用户头像地址
- JLabel logoLabel = new JLabel(new ImageIcon(user.getImg()), JLabel.LEFT); // 创建用户头像标签
- System.out.println(user.getImg()); // 再次打印用户头像地址
- leftPanel.add(logoLabel); // 将用户头像标签添加到左边面板
- logoLabel.setBounds(25, 30, 150, 150); // 设置用户头像标签的位置和大小
-
+ System.out.println("用户头像地址=="+user.getImg());
+ JLabel logoLabel = new JLabel(new ImageIcon(user.getImg()),JLabel.LEFT);
+ System.out.println(user.getImg());
+ leftPanel.add(logoLabel);
+ logoLabel.setBounds(25, 30,150,150);
+
/*账号名字*/
- String x = UsuperIcon(user.getUsuper()); /*判断权限返回icon地址*/ // 根据用户权限返回相应的图标地址
-
- System.out.println("身份地址:" + x); // 打印身份图标地址
-
- userMenuLabel1 = new JLabel("|" + user.getUsername() + "|" + user.getRname(), new ImageIcon(x), JLabel.LEFT); // 创建用户信息标签
-
- userMenuLabel1.setFont(FontUtil.userFont); // 设置用户信息标签的字体
-
- userMenuLabel1.addMouseListener(this); // 为用户信息标签添加鼠标监听器
-
- userMenuLabel1.setBounds(20, 170, 180, 32); // 设置用户信息标签的位置和大小
-
- userMenuLabel1.setForeground(Color.white); // 设置用户信息标签的前景色为白色
-
- leftPanel.add(userMenuLabel1); /*添加用户选项到菜单栏*/ // 将用户信息标签添加到左边面板
-
-
-
-
+ String x = UsuperIcon(user.getUsuper());/*判断权限返回icon地址*/
+ System.out.println("身份地址:"+x);
+ userMenuLabel1 = new JLabel("|"+user.getUsername()+"|"+user.getRname(),new ImageIcon(x),JLabel.LEFT);
+ userMenuLabel1.setFont(FontUtil.userFont);
+ userMenuLabel1.addMouseListener(this);
+ userMenuLabel1.setBounds(20, 170,180,32);
+ userMenuLabel1.setForeground(Color.white);
+ leftPanel.add(userMenuLabel1);/*添加用户选项到菜单栏*/
+
+
+
/*菜单栏:首页*/
- homeMenuLabel = new JLabel("新民首页", new ImageIcon("static\\icon\\home1.png"), JLabel.LEFT); // 创建一个带有图标的JLabel,用于表示首页菜单
- homeMenuLabel.setFont(FontUtil.menuFont); // 设置菜单标签的字体样式
- homeMenuLabel.addMouseListener(this); // 为菜单标签添加鼠标事件监听器
- homeMenuLabel.setBounds(20, 250, 150, 32); // 设置菜单标签的位置和大小
- homeMenuLabel.setForeground(Color.white); // 设置菜单标签的前景色为白色
- leftPanel.add(homeMenuLabel); // 将首页菜单标签添加到左侧面板
-
+ homeMenuLabel = new JLabel("新民首页",new ImageIcon("static\\icon\\home1.png"),JLabel.LEFT);
+ homeMenuLabel.setFont(FontUtil.menuFont);
+ homeMenuLabel.addMouseListener(this);
+ homeMenuLabel.setBounds(20, 250,150,32);
+ homeMenuLabel.setForeground(Color.white);
+ leftPanel.add(homeMenuLabel);/*添加用户选项到菜单栏*/
+
+
+
/*菜单栏:人员管理*/
-
userMenuLabel = new JLabel("人员管理",new ImageIcon("static\\icon\\user1.png"),JLabel.LEFT);
userMenuLabel.setFont(FontUtil.menuFont);
userMenuLabel.addMouseListener(this);
userMenuLabel.setBounds(20, 300,150,32);
userMenuLabel.setForeground(Color.white);
leftPanel.add(userMenuLabel);/*添加用户选项到菜单栏*/
-
-
+
/*菜单栏:进货系统*/
- inMenuLabel = new JLabel("进货系统", new ImageIcon("static\\icon\\in1.png"), JLabel.LEFT); // 创建一个带有图标的JLabel,用于表示进货系统菜单
- inMenuLabel.setFont(FontUtil.menuFont); // 设置菜单标签的字体样式
- inMenuLabel.addMouseListener(this); // 为菜单标签添加鼠标事件监听器
- inMenuLabel.setBounds(20, 350, 150, 32); // 设置菜单标签的位置和大小
- inMenuLabel.setForeground(Color.white); // 设置菜单标签的前景色为白色
- leftPanel.add(inMenuLabel); // 将进货系统菜单标签添加到左侧面板
-
+ inMenuLabel = new JLabel("进货系统",new ImageIcon("static\\icon\\in1.png") ,JLabel.LEFT);
+ inMenuLabel.setFont(FontUtil.menuFont);
+ inMenuLabel.addMouseListener(this);
+ inMenuLabel.setBounds(20, 350,150,32);
+ inMenuLabel.setForeground(Color.white);
+ leftPanel.add(inMenuLabel);
/*菜单栏:收银系统*/
outMenuLabel = new JLabel("收银系统",new ImageIcon("static\\icon\\out1.png") ,JLabel.LEFT);
@@ -259,258 +246,211 @@ public class MainView extends BaseView implements ActionListener, MouseListener,
outMenuLabel.setBounds(20, 400,150,32);
outMenuLabel.setForeground(Color.white);
leftPanel.add(outMenuLabel);
-
-
+
/*菜单栏:库存*/
- storageMenuLabel = new JLabel("商品库存", new ImageIcon("static\\icon\\storage1.png"), JLabel.LEFT); // 创建一个带有图标的JLabel,用于表示商品库存菜单
- storageMenuLabel.setFont(FontUtil.menuFont); // 设置菜单标签的字体样式
- storageMenuLabel.addMouseListener(this); // 为菜单标签添加鼠标事件监听器
- storageMenuLabel.setBounds(20, 450, 150, 32); // 设置菜单标签的位置和大小
- storageMenuLabel.setForeground(Color.white); // 设置菜单标签的前景色为白色
- leftPanel.add(storageMenuLabel); // 将商品库存菜单标签添加到左侧面板
-
+ storageMenuLabel = new JLabel("商品库存",new ImageIcon("static\\icon\\storage1.png") ,JLabel.LEFT);
+ storageMenuLabel.setFont(FontUtil.menuFont);
+ storageMenuLabel.addMouseListener(this);
+ storageMenuLabel.setBounds(20, 450,150,32);
+ storageMenuLabel.setForeground(Color.white);
+ leftPanel.add(storageMenuLabel);
+
/*菜单栏:供应商*/
- supplierMenuLabel = new JLabel("供应商", new ImageIcon("static\\icon\\supplier1.png"), JLabel.LEFT); // 创建一个带有图标的JLabel,用于表示供应商菜单
- supplierMenuLabel.setFont(FontUtil.menuFont); // 设置菜单标签的字体样式
- supplierMenuLabel.addMouseListener(this); // 为菜单标签添加鼠标事件监听器
- supplierMenuLabel.setBounds(20, 500, 150, 32); // 设置菜单标签的位置和大小
- supplierMenuLabel.setForeground(Color.white); // 设置菜单标签的前景色为白色
- leftPanel.add(supplierMenuLabel); // 将供应商菜单标签添加到左侧面板
-
+ supplierMenuLabel = new JLabel("供应商",new ImageIcon("static\\icon\\supplier1.png") ,JLabel.LEFT);
+ supplierMenuLabel.setFont(FontUtil.menuFont);
+ supplierMenuLabel.addMouseListener(this);
+ supplierMenuLabel.setBounds(20, 500,150,32);
+ supplierMenuLabel.setForeground(Color.white);
+ leftPanel.add(supplierMenuLabel);
+
/*菜单栏:商品目录*/
-
-
-
catalogMenuLabel = new JLabel("商品目录",new ImageIcon("static\\icon\\catalog1.png") ,JLabel.LEFT);
catalogMenuLabel.setFont(FontUtil.menuFont);
catalogMenuLabel.addMouseListener(this);
catalogMenuLabel.setBounds(20,550,150,32);
catalogMenuLabel.setForeground(Color.white);
leftPanel.add(catalogMenuLabel);
-
-
+
/*提醒进货确认模块*/
- remindMenuLabel = new JLabel("待确认进货:"+unConfirmmark, new ImageIcon("static\\icon\\remind1.png"), JLabel.LEFT); // 创建一个带有图标的JLabel,用于显示待确认进货的数量
- remindMenuLabel.setFont(FontUtil.remindFont); // 设置提醒菜单标签的字体样式
- remindMenuLabel.addMouseListener(this); // 为提醒菜单标签添加鼠标事件监听器
- remindMenuLabel.setBounds(0, 650, 200, 32); // 设置提醒菜单标签的位置和大小
- remindMenuLabel.setForeground(Color.white); // 设置提醒菜单标签的前景色为白色
- leftPanel.add(remindMenuLabel); // 将提醒菜单标签添加到左侧面板
-
-
-// 设置右侧面板的布局管理器为卡片布局
-
+ remindMenuLabel = new JLabel("待确认进货:"+unConfirmmark,new ImageIcon("static\\icon\\remind1.png") ,JLabel.LEFT);
+ remindMenuLabel.setFont(FontUtil.remindFont);
+ remindMenuLabel.addMouseListener(this);
+ remindMenuLabel.setBounds(0,650,200,32);
+ remindMenuLabel.setForeground(Color.white);
+ leftPanel.add(remindMenuLabel);
+
+
rightPanelLayout = new CardLayout();
-
-// 0.超市首页展示,创建并实例化首页视图面板
+
+ //0.超市首页展示
JPanel homePanel = new HomeView(this);
-
-// 1.用户管理界面:用户的列表,创建并实例化用户管理视图面板
+
+ //1.用户管理界面:用户的列表
JPanel userPanel = new UserView(this);
-
-// 2.进货系统界面,创建并实例化进货系统视图面板
- JPanel inPanel = new InView(this, user, vP, 1);
-
-// 3.收银系统界面,创建并实例化收银系统视图面板
- JPanel outPanel = new OutView(this, user);
-
-// 4.库存系统界面,创建并实例化库存系统视图面板
+
+ //2.进货系统界面
+ JPanel inPanel = new InView(this,user,vP,1);
+
+ //3收银系统界面
+ JPanel outPanel = new OutView(this,user);
+
+ //4.库存系统界面
JPanel storagePanel = new StorageView(this);
-
-// 5.供应商界面,创建并实例化供应商视图面板
+
+ //5.供应商界面
JPanel supplierPanel = new SupplierView(this);
-
-// 6.商品目录界面,创建并实例化商品目录视图面板
+
+ //6商品目录界面
JPanel ProdCatalogPanel = new ProdCatalogView(this);
-// 7.超市总览界面,创建并实例化超市总览视图面板
+ //7商品目录界面
JPanel superPanel = new SuperView(this);
-
-// 8.进货信息提示界面,创建并实例化进货信息提示视图面板
- JPanel inPanel2 = new InView(this, user, vP, 0);
-
-// 创建右侧面板并设置布局管理器为之前定义的卡片布局
+
+ //8进货信息提示
+ JPanel inPanel2 = new InView(this,user,vP,0);
+
+ /*添加界面并给索引*/
rightPanel = new JPanel(rightPanelLayout);
- rightPanel.add(homePanel, "0"); // 添加首页视图面板并设置其索引为"0"
- rightPanel.add(userPanel, "1"); // 添加用户管理视图面板并设置其索引为"1"
- rightPanel.add(inPanel, "2"); // 添加进货系统视图面板并设置其索引为"2"
- rightPanel.add(outPanel, "3"); // 添加收银系统视图面板并设置其索引为"3"
- rightPanel.add(storagePanel, "4"); // 添加库存系统视图面板并设置其索引为"4"
- rightPanel.add(supplierPanel, "5"); // 添加供应商视图面板并设置其索引为"5"
- rightPanel.add(ProdCatalogPanel, "6"); // 添加商品目录视图面板并设置其索引为"6"
- rightPanel.add(superPanel, "7"); // 添加超市总览视图面板并设置其索引为"7"
- rightPanel.add(inPanel2, "8"); // 添加进货信息提示视图面板并设置其索引为"8"
-
-// 创建一个分割面板,将左侧面板和右侧面板水平分割
- containerPanel = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, leftPanel, rightPanel);
- containerPanel.setDividerLocation(180); // 设置分割线的位置
- containerPanel.setDividerSize(0); // 设置分割线的尺寸为0,即隐藏分割线
-
-// 创建底部面板,默认使用流式布局
- bottomPanel = new JPanel();
- bottomPanel.setBackground(Color.WHITE); // 设置底部面板的背景色为白色
- bottomPanel.setLayout(new BorderLayout()); // 设置底部面板的布局管理器为边界布局
-
-// 创建目的地区面板,用于显示当前位置信息
+ rightPanel.add(homePanel, "0");
+ rightPanel.add(userPanel, "1");
+ rightPanel.add(inPanel, "2");
+ rightPanel.add(outPanel, "3");
+ rightPanel.add(storagePanel, "4");
+ rightPanel.add(supplierPanel, "5");
+ rightPanel.add(ProdCatalogPanel, "6");
+ rightPanel.add(superPanel, "7");
+ rightPanel.add(inPanel2, "8");
+
+
+ containerPanel = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,leftPanel,rightPanel);
+ containerPanel.setDividerLocation(180);
+ containerPanel.setDividerSize(0);
+
+ bottomPanel = new JPanel();//默认的布局是流式布局
+
+ bottomPanel.setBackground(Color.WHITE);
+ bottomPanel.setLayout(new BorderLayout());
+
purposePanel = new JPanel();
- purposePanel.setLayout(new FlowLayout(FlowLayout.LEFT)); // 设置目的地区面板的布局管理器为左对齐的流式布局
- purposePanel.setBackground(Color.WHITE); // 设置目的地区面板的背景色为白色
- purposeLabel = new JLabel("当前位置是:超市首页"); // 创建标签显示当前位置信息
- purposePanel.add(purposeLabel); // 将位置信息标签添加到目的地区面板
-
-
- // 创建一个新的 JPanel 实例用于显示时间
+ purposePanel.setLayout(new FlowLayout(FlowLayout.LEFT));
+ purposePanel.setBackground(Color.WHITE);
+ purposeLabel = new JLabel("当前位置是:超市首页");
+ purposePanel.add(purposeLabel);
+
timePanel=new JPanel();
-// 设置 timePanel 的布局为 FlowLayout,并指定元素靠右对齐
timePanel.setLayout(new FlowLayout(FlowLayout.TRAILING));
-// 设置 timePanel 的背景颜色为白色
timePanel.setBackground(Color.WHITE);
-// 创建一个新的 JLabel 实例,显示当前日期和时间,使用 DateUtil 工具类进行格式化
timeLabel = new JLabel(DateUtil.dateToString(new Date(),null));
-// 将 timeLabel 添加到 timePanel 中
timePanel.add(timeLabel);
-// 将 purposePanel 添加到 bottomPanel 的西边(West)
+
bottomPanel.add(purposePanel,"West");
-// 将 timePanel 添加到 bottomPanel 的东边(East)
bottomPanel.add(timePanel,"East");
-// 获取当前窗口的内容窗格
Container container = getContentPane();
-// 将 containerPanel 添加到内容窗格的中心(Center)
container.add(containerPanel,"Center");
-// 将 bottomPanel 添加到内容窗格的南边(South)
container.add(bottomPanel,"South");
-
}
@Override
- // 定义当触发动作事件时的处理方法
public void actionPerformed(ActionEvent e) {
- // 获取触发事件的源对象
Object source = e.getSource();
- // 更新时间标签以显示当前时间
timeLabel.setText(DateUtil.dateToString(new Date(),null));
- // 检查事件源是否为皮肤菜单项,如果是则进行换肤操作
if(source==skinMenuItem)/*换肤*/{
- // 打印换肤操作信息到控制台
System.out.println("切换皮肤");
- // 创建一个新的随机数生成器实例
Random random=new Random();
- // 生成一个0到9之间的随机数作为皮肤编号
skin=random.nextInt(10);
- // 销毁当前窗口
this.dispose();
- // 创建并显示一个新的主视图窗口,传入用户信息、皮肤编号和图标皮肤
new MainView(user,skin,iconSkin);
-
}
-
+
}
@Override/*左侧菜单栏点击事件*/
- // 定义当鼠标点击事件发生时的处理方法
public void mouseClicked(MouseEvent e) {
- // 获取触发事件的源对象
Object source = e.getSource();
- // 检查事件源是否为首页菜单标签,如果是则显示对应的面板
if(source==homeMenuLabel) {
- rightPanelLayout.show(rightPanel,"0"); // 显示首页面板
- location=0; // 更新当前位置索引为0
- }
- // 检查事件源是否为用户菜单标签,根据权限显示不同面板
- else if(source==userMenuLabel) {
- if(sSuper==0) // 如果权限为0
- rightPanelLayout.show(rightPanel,"1"); // 显示用户面板1
- else{ // 如果权限不为0
- rightPanelLayout.show(rightPanel,"7"); // 显示用户面板7
+ rightPanelLayout.show(rightPanel,"0");
+ location=0;
+ }else if(source==userMenuLabel) {
+ if(sSuper==0)
+ rightPanelLayout.show(rightPanel,"1");
+ else{
+ rightPanelLayout.show(rightPanel,"7");
}
- location=1; // 更新当前位置索引为1
+ location=1;
}
- // 检查事件源是否为入库菜单标签,根据权限显示不同面板
else if(source==inMenuLabel) {
- if(sSuper==2) // 如果权限为2
- rightPanelLayout.show(rightPanel,"7"); // 显示面板7
- else{ // 如果权限不为2
- rightPanelLayout.show(rightPanel,"2"); // 显示入库面板
+ if(sSuper==2)
+ rightPanelLayout.show(rightPanel,"7");
+ else{
+ rightPanelLayout.show(rightPanel,"2");
+
}
- location=2; // 更新当前位置索引为2
+ location=2;
}
- // 检查事件源是否为出库菜单标签,如果是则显示对应的面板
else if(source==outMenuLabel) {
- rightPanelLayout.show(rightPanel,"3"); // 显示出库面板
- location=3; // 更新当前位置索引为3
+ rightPanelLayout.show(rightPanel,"3");
+ location=3;
}
- // 检查事件源是否为库存菜单标签,如果是则显示对应的面板
else if(source==storageMenuLabel) {
- rightPanelLayout.show(rightPanel,"4"); // 显示库存面板
- location=4; // 更新当前位置索引为4
+ rightPanelLayout.show(rightPanel,"4");
+ location=4;
}
- // 检查事件源是否为供应商菜单标签,如果是则显示对应的面板
else if(source==supplierMenuLabel) {
- rightPanelLayout.show(rightPanel,"5"); // 显示供应商面板
- location=5; // 更新当前位置索引为5
- }
- // 检查事件源是否为目录菜单标签,如果是则显示对应的面板
- else if(source==catalogMenuLabel) {
- rightPanelLayout.show(rightPanel,"6"); // 显示目录面板
- location=6; // 更新当前位置索引为6
+ rightPanelLayout.show(rightPanel,"5");
+
+ location=5;
+
}
- // 检查事件源是否为提醒菜单标签,根据权限显示不同面板
- else if(source==remindMenuLabel) {
- if(sSuper==2) // 如果权限为2
- rightPanelLayout.show(rightPanel,"7"); // 显示面板7
- else{ // 如果权限不为2
- rightPanelLayout.show(rightPanel,"8"); // 显示提醒面板
+ else if(source==catalogMenuLabel) {
+ rightPanelLayout.show(rightPanel,"6");
+ location=6;
+
+ }else if(source==remindMenuLabel) {
+ if(sSuper==2)
+ rightPanelLayout.show(rightPanel,"7");
+ else{
+ rightPanelLayout.show(rightPanel,"8");
}
- location=7; // 更新当前位置索引为7
+ location=7;
+ }else if(source==userMenuLabel1){
+
+ UserInfDialog userInfDialog = new UserInfDialog(this,user);
+ userInfDialog.setVisible(true);
+ location=8;
}
- // 检查事件源是否为用户信息菜单标签1,如果是则显示用户信息对话框
- else if(source==userMenuLabel1){
- UserInfDialog userInfDialog = new UserInfDialog(this,user); // 创建用户信息对话框
- userInfDialog.setVisible(true); // 显示用户信息对话框
- location=8; // 更新当前位置索引为8
- }
-
- // 调用refreshRemove方法,可能用于刷新界面或执行其他操作
+
refreshRemove();
}
-
//获取当前位置
- // 定义一个方法用于刷新和移除面板内容
- public void refreshRemove(){
-
- // 从目的面板中移除所有组件
- purposePanel.removeAll();
-
- // 根据当前的位置索引设置不同的目的标签文本
- if(location==0){
- purposeLabel = new JLabel("当前位置是:"+homeMenuLabel.getText()); // 设置当前位置为首页
- }
- else if(location==1){
- purposeLabel = new JLabel("当前位置是:"+userMenuLabel.getText()); // 设置当前位置为用户菜单
- }
- else if(location==2){
- purposeLabel = new JLabel("当前位置是:"+inMenuLabel.getText()); // 设置当前位置为入库菜单
- }
- else if(location==3){
- purposeLabel = new JLabel("当前位置是:"+outMenuLabel.getText()); // 设置当前位置为出库菜单
- }
- else if(location==4){
- purposeLabel = new JLabel("当前位置是:"+storageMenuLabel.getText()); // 设置当前位置为库存菜单
- }
- else if(location==5){
- purposeLabel = new JLabel("当前位置是:"+supplierMenuLabel.getText()); // 设置当前位置为供应商菜单
- }
- else{
- purposeLabel = new JLabel("当前位置是:"+catalogMenuLabel.getText()); // 设置当前位置为目录菜单
+ public void refreshRemove(){
+
+ purposePanel.removeAll();
+ if(location==0){
+ purposeLabel = new JLabel("当前位置是:"+homeMenuLabel.getText());
+
+ }else if(location==1){
+ purposeLabel = new JLabel("当前位置是:"+userMenuLabel.getText());
+
+ }else if(location==2){
+ purposeLabel = new JLabel("当前位置是:"+inMenuLabel.getText());
+
+ }else if(location==3){
+ purposeLabel = new JLabel("当前位置是:"+outMenuLabel.getText());
+
+ }else if(location==4){
+ purposeLabel = new JLabel("当前位置是:"+storageMenuLabel.getText());
+
+ }else if(location==5){
+ purposeLabel = new JLabel("当前位置是:"+supplierMenuLabel.getText());
+
+ }else{
+ purposeLabel = new JLabel("当前位置是:"+catalogMenuLabel.getText());
+ }
+
+ purposePanel.add(purposeLabel);
+
}
- // 将新的目的标签添加到目的面板
- purposePanel.add(purposeLabel);
-
- // 可能需要调用重新绘制界面或更新界面显示的方法,但这里没有显示出来
- }
-
-
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
@@ -524,121 +464,69 @@ public class MainView extends BaseView implements ActionListener, MouseListener,
}
@Override/*鼠标焦点时*/
- // 重写鼠标进入组件事件的处理方法
public void mouseEntered(MouseEvent e) {
- // 获取触发事件的源对象
Object source = e.getSource();
-
- // 如果事件源是首页菜单标签,则改变前景色和图标
if(source==homeMenuLabel) {
- homeMenuLabel.setForeground(new Color(18, 150, 219)); // 设置前景色为蓝色
- homeMenuLabel.setIcon(new ImageIcon("static\\icon\\home2.png")); // 设置鼠标进入时的图标
+ homeMenuLabel.setForeground(new Color(18, 150, 219));
+ homeMenuLabel.setIcon(new ImageIcon("static\\icon\\home2.png"));
}
-
- // 如果事件源是用户菜单标签,则改变前景色和图标
if(source==userMenuLabel) {
-
- userMenuLabel.setForeground(new Color(18, 150, 219)); // 设置前景色为蓝色
- userMenuLabel.setIcon(new ImageIcon("static\\icon\\user2.png")); // 设置鼠标进入时的图标
- }
-
-
- // 如果事件源是入库菜单标签,则改变前景色和图标
- else if(source==inMenuLabel) {
- inMenuLabel.setForeground(new Color(18, 150, 219)); // 设置前景色为蓝色
- inMenuLabel.setIcon(new ImageIcon("static\\icon\\in2.png")); // 设置鼠标进入时的图标
- }
-
- // 如果事件源是出库菜单标签,则改变前景色和图标
- else if(source==outMenuLabel) {
- outMenuLabel.setForeground(new Color(18, 150, 219)); // 设置前景色为蓝色
- outMenuLabel.setIcon(new ImageIcon("static\\icon\\out2.png")); // 设置鼠标进入时的图标
- }
-
- // 如果事件源是库存菜单标签,则改变前景色和图标
- else if(source==storageMenuLabel) {
- storageMenuLabel.setForeground(new Color(18, 150, 219)); // 设置前景色为蓝色
- storageMenuLabel.setIcon(new ImageIcon("static\\icon\\storage2.png")); // 设置鼠标进入时的图标
- }
-
- // 如果事件源是供应商菜单标签,则改变前景色和图标
- else if(source==supplierMenuLabel) {
- supplierMenuLabel.setForeground(new Color(18, 150, 219)); // 设置前景色为蓝色
- supplierMenuLabel.setIcon(new ImageIcon("static\\icon\\supplier2.png")); // 设置鼠标进入时的图标
- }
-
-
- // 如果事件源是目录菜单标签,则改变前景色和图标
- else if(source==catalogMenuLabel) {
- catalogMenuLabel.setForeground(new Color(18, 150, 219)); // 设置前景色为蓝色
- catalogMenuLabel.setIcon(new ImageIcon("static\\icon\\catalog2.png")); // 设置鼠标进入时的图标
- }
-
- // 如果事件源是用户菜单标签1,则改变前景色
-
+ userMenuLabel.setForeground(new Color(18, 150, 219));
+ userMenuLabel.setIcon(new ImageIcon("static\\icon\\user2.png"));
+ }else if(source==inMenuLabel) {
+ inMenuLabel.setForeground(new Color(18, 150, 219));
+ inMenuLabel.setIcon(new ImageIcon("static\\icon\\in2.png"));
+ }else if(source==outMenuLabel) {
+ outMenuLabel.setForeground(new Color(18, 150, 219));
+ outMenuLabel.setIcon(new ImageIcon("static\\icon\\out2.png"));
+ }else if(source==storageMenuLabel) {
+ storageMenuLabel.setForeground(new Color(18, 150, 219));
+ storageMenuLabel.setIcon(new ImageIcon("static\\icon\\storage2.png"));
+ }else if(source==supplierMenuLabel) {
+ supplierMenuLabel.setForeground(new Color(18, 150, 219));
+ supplierMenuLabel.setIcon(new ImageIcon("static\\icon\\supplier2.png"));
+ }else if(source==catalogMenuLabel) {
+ catalogMenuLabel.setForeground(new Color(18, 150, 219));
+ catalogMenuLabel.setIcon(new ImageIcon("static\\icon\\catalog2.png"));
+ }
else if(source==userMenuLabel1) {
- userMenuLabel1.setForeground(new Color(18, 150, 219)); // 设置前景色为蓝色
- // 注意:这里没有设置图标,可能是因为该标签没有对应的鼠标进入图标
- }
- // 方法结束,没有设置图标的变化,只是改变了前景色
+ userMenuLabel1.setForeground(new Color(18, 150, 219));
+
}
-
+}
@Override
- // 重写鼠标离开组件事件的处理方法
public void mouseExited(MouseEvent e) {
- // 获取触发事件的源对象
- Object source = e.getSource();
-
- // 如果事件源是首页菜单标签,则恢复前景色和图标
+ Object source = e.getSource();
if(source==homeMenuLabel) {
- homeMenuLabel.setForeground(Color.white); // 恢复前景色为白色
- homeMenuLabel.setIcon(new ImageIcon("static\\icon\\home1.png")); // 设置鼠标离开时的默认图标
+ homeMenuLabel.setForeground(Color.white);
+ homeMenuLabel.setIcon(new ImageIcon("static\\icon\\home1.png"));
}
-
-
- // 如果事件源是用户菜单标签,则恢复前景色和图标
else if(source==userMenuLabel) {
- userMenuLabel.setForeground(Color.white); // 恢复前景色为白色
- userMenuLabel.setIcon(new ImageIcon("static\\icon\\user1.png")); // 设置鼠标离开时的默认图标
- }
-
- // 如果事件源是入库菜单标签,则恢复前景色和图标
- else if(source==inMenuLabel) {
- inMenuLabel.setForeground(Color.white); // 恢复前景色为白色
- inMenuLabel.setIcon(new ImageIcon("static\\icon\\in1.png")); // 设置鼠标离开时的默认图标
- }
-
- // 如果事件源是出库菜单标签,则恢复前景色和图标
- else if(source==outMenuLabel) {
- outMenuLabel.setForeground(Color.white); // 恢复前景色为白色
- outMenuLabel.setIcon(new ImageIcon("static\\icon\\out1.png")); // 设置鼠标离开时的默认图标
- }
-
- // 如果事件源是库存菜单标签,则恢复前景色和图标
- else if(source==storageMenuLabel) {
- storageMenuLabel.setForeground(Color.white); // 恢复前景色为白色
- storageMenuLabel.setIcon(new ImageIcon("static\\icon\\storage1.png")); // 设置鼠标离开时的默认图标
- }
-
- // 如果事件源是供应商菜单标签,则恢复前景色和图标
- else if(source==supplierMenuLabel) {
- supplierMenuLabel.setForeground(Color.white); // 恢复前景色为白色
- supplierMenuLabel.setIcon(new ImageIcon("static\\icon\\supplier1.png")); // 设置鼠标离开时的默认图标
- }
-
- else if(source==catalogMenuLabel) {
+ userMenuLabel.setForeground(Color.white);
+ userMenuLabel.setIcon(new ImageIcon("static\\icon\\user1.png"));
+ }else if(source==inMenuLabel) {
+ inMenuLabel.setForeground(Color.white);
+ inMenuLabel.setIcon(new ImageIcon("static\\icon\\in1.png"));
+ }else if(source==outMenuLabel) {
+ outMenuLabel.setForeground(Color.white);
+ outMenuLabel.setIcon(new ImageIcon("static\\icon\\out1.png"));
+ }else if(source==storageMenuLabel) {
+ storageMenuLabel.setForeground(Color.white);
+ storageMenuLabel.setIcon(new ImageIcon("static\\icon\\storage1.png"));
+ }else if(source==supplierMenuLabel) {
+ supplierMenuLabel.setForeground(Color.white);
+ supplierMenuLabel.setIcon(new ImageIcon("static\\icon\\supplier1.png"));
+ }else if(source==catalogMenuLabel) {
catalogMenuLabel.setForeground(Color.white);
catalogMenuLabel.setIcon(new ImageIcon("static\\icon\\catalog1.png"));
}
-
else {
- userMenuLabel1.setForeground(Color.white); // 恢复前景色为白色
- // 注意:这里没有设置图标,可能是因为该标签没有对应的鼠标离开图标
- }
- // 方法结束,所有菜单标签的前景色和图标已根据鼠标离开事件进行了相应的恢复
+ userMenuLabel1.setForeground(Color.white);
+
+ }
+
}
-
@Override
@@ -654,33 +542,23 @@ public class MainView extends BaseView implements ActionListener, MouseListener,
}
@Override
- // 重写窗口关闭事件的处理方法
public void windowClosing(WindowEvent e) {
// TODO Auto-generated method stub
- // 获取触发事件的源对象
- Object source = e.getSource();
+ Object source = e.getSource();
+ if(source==this) {/*关闭窗口时检查进货系统和出货系统是否还有记录*/
+ this.vP =InView.getVector();
+ System.out.println("v的size="+vP.size());
+ bufferImpl = new BufferImpl();
+ if(vP.size()!=0||bufferImpl.allOutBuffer().size()!=0) {/*如果购物车还有记录*/
+ CloseDialog closeDialog = new CloseDialog(this,vP);
+ closeDialog.setVisible(true);
+ }else
+ System.exit(0);
+
- // 如果事件源是当前窗口对象,执行以下操作
- if(source==this) {
- // 关闭窗口时检查进货系统和出货系统是否还有记录
- this.vP =InView.getVector(); // 获取进货系统的记录向量
- System.out.println("v的size="+vP.size()); // 打印进货系统记录的数量
- bufferImpl = new BufferImpl(); // 创建缓冲区实现对象
-
- // 如果进货系统的购物车还有记录或者出货系统的缓冲区还有记录
- if(vP.size()!=0||bufferImpl.allOutBuffer().size()!=0) {
- // 如果购物车还有记录,则显示关闭确认对话框
- CloseDialog closeDialog = new CloseDialog(this,vP); // 创建关闭对话框
- closeDialog.setVisible(true); // 显示关闭对话框
- } else {
- // 如果没有记录,则直接退出程序
- System.exit(0); // 安全退出程序
- }
}
- // 方法结束,窗口关闭事件已处理
}
-
@Override
public void windowClosed(WindowEvent e) {
// TODO Auto-generated method stub
diff --git a/Supermarket/src/com/lingnan/supermarket/view/OutView.java b/Supermarket/src/com/lingnan/supermarket/view/OutView.java
index a1979f2..01a2ddb 100644
--- a/Supermarket/src/com/lingnan/supermarket/view/OutView.java
+++ b/Supermarket/src/com/lingnan/supermarket/view/OutView.java
@@ -16,297 +16,323 @@ import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
+import javax.swing.text.html.HTMLDocument.Iterator;
import com.lingnan.supermarket.dao.impl.BufferImpl;
import com.lingnan.supermarket.dialog.ChangeSumDialog;
import com.lingnan.supermarket.dialog.OutDialog;
+import com.lingnan.supermarket.dialog.UserDialog;
import com.lingnan.supermarket.dto.Buffer;
import com.lingnan.supermarket.dto.User;
import com.lingnan.supermarket.table.*;
import com.lingnan.supermarket.utils.FontUtil;
import com.lingnan.supermarket.utils.TimeAndOrder;
-public class OutView extends JPanel implements ActionListener {
-
-
+public class OutView extends JPanel implements ActionListener{
+
+
//上面
private JPanel toolBarPanel;
-
+
private JPanel searchPanel;
- private JLabel nameLabel, locationLabel;
+ private JLabel nameLabel,locationLabel;
private JTextField nameSearchTF;
- private JButton searchBtn, AccountBtn, exitBtn;
-
+ private JButton searchBtn,AccountBtn,exitBtn;
+
private JPanel opePanel;
- private JButton addBtn, updateBtn, deleteBtn, historyBtn, backBtn, detailBtn;
-
+ private JButton addBtn,updateBtn,deleteBtn,historyBtn,backBtn,detailBtn;
+
//中间
private JScrollPane tableScrollPane;
private JTable outTable;
-
+
//下面
- private JPanel bottomPanel, bottomPanelLeft, bottomPanelRight;
- private JLabel countInfoLabel, countInfoLabel2;
-
+ private JPanel bottomPanel,bottomPanelLeft,bottomPanelRight;
+ private JLabel countInfoLabel,countInfoLabel2;
+
private Buffer Buffer;
private BufferImpl BufferImpl;
-
+
private Vector v;
-
-
+
+
private JFrame jFrame;
private User user;
-
+
private OutTableModel outTableModel = new OutTableModel();
-
+
private int mark;/*标记订单表和订单详情表*/
-
- public OutView(JFrame jFrame, User user) {
- this.setLayout(new BorderLayout()); // 设置主布局为BorderLayout
- initView(); // 初始化界面组件
- this.jFrame = jFrame; // 将传入的JFrame赋值给成员变量
- this.user = user; // 将传入的User赋值给成员变量
+
+ public OutView(JFrame jFrame,User user) {
+ this.setLayout(new BorderLayout());
+ initView();
+ this.jFrame = jFrame;
+ this.user = user;
}
-
+
private void initView() {
-
- toolBarPanel = new JPanel(new BorderLayout()); // 创建顶部工具栏面板,设置为BorderLayout布局
-
- searchPanel = new JPanel(new FlowLayout(FlowLayout.CENTER)); // 创建搜索面板,设置为居中对齐的FlowLayout布局
- nameLabel = new JLabel("订单号"); // 创建“订单号”标签
- nameSearchTF = new JTextField(20); // 创建订单号输入框,长度为20列
-
- searchBtn = new JButton(new ImageIcon("static\\icon\\search.png")); // 创建搜索按钮并设置图标
- searchBtn.addActionListener(this); // 为搜索按钮添加点击事件监听
- locationLabel = new JLabel("当前位置>收银系统"); // 创建显示当前位置的标签
- locationLabel.setFont(new FontUtil().userFont); // 设置标签的字体样式
- locationLabel.setForeground(new Color(18, 150, 219)); // 设置标签字体颜色
-
- opePanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); // 创建操作按钮面板,设置为左对齐的FlowLayout布局
- addBtn = new JButton(new ImageIcon("static\\icon\\add.png")); // 创建添加按钮并设置图标
- updateBtn = new JButton(new ImageIcon("static\\icon\\change.png")); // 创建更新按钮并设置图标
- deleteBtn = new JButton(new ImageIcon("static\\icon\\delete.png")); // 创建删除按钮并设置图标
- historyBtn = new JButton(new ImageIcon("static\\icon\\history.png")); // 创建历史记录按钮并设置图标
- backBtn = new JButton(new ImageIcon("static\\icon\\back.png")); // 创建返回按钮并设置图标
- detailBtn = new JButton(new ImageIcon("static\\icon\\detail.png")); // 创建查看详情按钮并设置图标
- backBtn.setVisible(false); // 初始时隐藏返回按钮,记录页面显示
- detailBtn.setVisible(false); // 初始时隐藏查看详情按钮,订单详情页显示
-
- addBtn.addActionListener(this); // 为添加按钮添加点击事件监听
- updateBtn.addActionListener(this); // 为更新按钮添加点击事件监听
- deleteBtn.addActionListener(this); // 为删除按钮添加点击事件监听
- historyBtn.addActionListener(this); // 为历史记录按钮添加点击事件监听
- backBtn.addActionListener(this); // 为返回按钮添加点击事件监听
- detailBtn.addActionListener(this); // 为查看详情按钮添加点击事件监听
-
- // 将各按钮添加到操作面板
- opePanel.add(addBtn);
+
+ toolBarPanel = new JPanel(new BorderLayout());
+
+ searchPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
+ nameLabel = new JLabel("订单号");
+ nameSearchTF = new JTextField(20);
+
+ searchBtn = new JButton(new ImageIcon("static\\icon\\search.png"));
+ searchBtn.addActionListener(this);
+ locationLabel=new JLabel("当前位置>收银系统");
+ locationLabel.setFont(new FontUtil().userFont);
+ locationLabel.setForeground(new Color(18, 150, 219));
+
+ opePanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
+ addBtn =new JButton(new ImageIcon("static\\icon\\add.png"));
+ updateBtn =new JButton(new ImageIcon("static\\icon\\change.png"));
+ deleteBtn =new JButton(new ImageIcon("static\\icon\\delete.png"));
+ historyBtn =new JButton(new ImageIcon("static\\icon\\history.png"));
+ backBtn =new JButton(new ImageIcon("static\\icon\\back.png"));
+ detailBtn = new JButton(new ImageIcon("static\\icon\\detail.png"));
+ backBtn.setVisible(false);/*在记录页面显示出来*/
+ detailBtn.setVisible(false);/*在订单详情页显示出来*/
+
+
+ addBtn.addActionListener(this);
+ updateBtn.addActionListener(this);
+ deleteBtn.addActionListener(this);
+ historyBtn.addActionListener(this);
+ backBtn.addActionListener(this);
+ detailBtn.addActionListener(this);
+
+ opePanel.add(addBtn);
opePanel.add(backBtn);
opePanel.add(detailBtn);
opePanel.add(updateBtn);
opePanel.add(deleteBtn);
opePanel.add(historyBtn);
-
- // 将搜索相关组件添加到搜索面板
+
searchPanel.add(locationLabel);
searchPanel.add(nameLabel);
searchPanel.add(nameSearchTF);
searchPanel.add(searchBtn);
-
- // 将搜索面板和操作面板分别添加到工具栏的两侧
- toolBarPanel.add(searchPanel, "West");
- toolBarPanel.add(opePanel, "East");
-
- // 中间表格区域
- outTableModel = new OutTableModel(); // 创建订单表格数据模型
- outTableModel.allOutBuffer(); // 查询所有购物车数据
- outTable = new JTable(outTableModel); // 创建表格并设置数据模型
- outTable.setFont(FontUtil.tableFont); // 设置表格字体样式
- outTable.setRowHeight(50); // 设置表格行高
- tableScrollPane = new JScrollPane(outTable); // 创建带滚动条的表格
-
- // 底部左侧面板,用于显示统计信息
- bottomPanelLeft = new JPanel(new FlowLayout(FlowLayout.LEFT)); // 设置为左对齐的FlowLayout布局
- countInfoLabel = new JLabel("商品种类:" + outTableModel.getRowCount() + ",总价:" + outTableModel.getAllPrice()); // 显示商品种类和总价
- bottomPanelLeft.add(countInfoLabel); // 将统计信息标签添加到左侧面板
-
- // 底部右侧面板,用于显示操作按钮
- bottomPanelRight = new JPanel(new FlowLayout(FlowLayout.RIGHT)); // 设置为右对齐的FlowLayout布局
- AccountBtn = new JButton(new ImageIcon("static\\icon\\Account.png")); // 创建结账按钮并设置图标
- exitBtn = new JButton(new ImageIcon("static\\icon\\exit.png")); // 创建退出按钮并设置图标
- AccountBtn.addActionListener(this); // 为结账按钮添加点击事件监听
- exitBtn.addActionListener(this); // 为退出按钮添加点击事件监听
- bottomPanelRight.add(AccountBtn); // 将结账按钮添加到底部右侧面板
- bottomPanelRight.add(exitBtn); // 将退出按钮添加到底部右侧面板
-
- // 底部总面板,包含左侧统计信息和右侧操作按钮
+
+
+ toolBarPanel.add(searchPanel,"West");
+ toolBarPanel.add(opePanel,"East");
+
+
+ //中间表格
+ outTableModel = new OutTableModel();
+ outTableModel.allOutBuffer();/*查找所有购物车*/
+ outTable = new JTable(outTableModel);
+ outTable.setFont(FontUtil.tableFont);
+ outTable.setRowHeight(50);
+ tableScrollPane = new JScrollPane(outTable);
+
+ //下面
+ bottomPanelLeft = new JPanel(new FlowLayout(FlowLayout.LEFT));
+ countInfoLabel = new JLabel("商品种类:"+outTableModel.getRowCount()+",总价:"+outTableModel.getAllPrice());
+ bottomPanelLeft.add(countInfoLabel);
+
+ bottomPanelRight = new JPanel(new FlowLayout(FlowLayout.RIGHT));
+ AccountBtn =new JButton(new ImageIcon("static\\icon\\Account.png"));/*结账按钮*/
+ exitBtn =new JButton(new ImageIcon("static\\icon\\exit.png"));/*退出按钮*/
+ AccountBtn.addActionListener(this);
+ exitBtn.addActionListener(this);
+ bottomPanelRight.add(AccountBtn);
+ bottomPanelRight.add(exitBtn);
+
bottomPanel = new JPanel(new BorderLayout());
- bottomPanel.add(bottomPanelRight, "East"); // 将右侧面板添加到底部面板的右侧
- bottomPanel.add(bottomPanelLeft, "West"); // 将左侧面板添加到底部面板的左侧
-
- // 将工具栏、表格和底部面板依次添加到主面板
- this.add(toolBarPanel, "North"); // 将工具栏放在顶部
- this.add(tableScrollPane, "Center"); // 将表格区域放在中间
- this.add(bottomPanel, "South"); // 将底部面板放在底部
-
- setVisible(true); // 设置主面板为可见状态
+ bottomPanel.add(bottomPanelRight,"East");
+ bottomPanel.add(bottomPanelLeft,"West");
+
+
+ this.add(toolBarPanel,"North");
+ this.add(tableScrollPane,"Center");/*将表格放到中间*/
+/* this.add(bottomPanel,"South");*/
+ this.add(bottomPanel,"South");
+
+ setVisible(true);
}
-
- // 按钮组件隐藏和显示设置
+
+
+ //按钮组件隐藏
public void OrderView() {
- backBtn.setVisible(true); // 显示返回按钮
- detailBtn.setVisible(true); // 显示查看详情按钮
- updateBtn.setVisible(false); // 隐藏更新按钮
- deleteBtn.setVisible(true); // 显示删除按钮
- addBtn.setVisible(false); // 隐藏添加按钮
- historyBtn.setVisible(false); // 隐藏历史记录按钮
+ backBtn.setVisible(true);
+ detailBtn.setVisible(true);
+ updateBtn.setVisible(false);
+ deleteBtn.setVisible(true);
+ addBtn.setVisible(false);
+ historyBtn.setVisible(false);
}
-
-
+
+
+
+
+
//通过订单查找
public void resultOfNumber(String oNumber) {
- this.mark = 1; // 设置标记为1,表示当前显示的是订单数据
- OutOrderTM outOrderTM = new OutOrderTM(); // 创建一个OutOrderTM对象,用于存储订单数据
- outOrderTM.resultOfNumber(oNumber); // 根据订单号查询相关的订单数据
- outTable.setModel(outOrderTM); // 设置表格数据模型为查询到的订单数据
- bottomPanelLeft.removeAll(); // 清除底部左侧面板的所有组件
- countInfoLabel = new JLabel("共" + outOrderTM.getRowCount() + "条记录"); // 显示当前记录的数量
- bottomPanelLeft.add(countInfoLabel); // 将记录数量标签添加到左侧面板
- OrderView(); // 调用OrderView方法,更新按钮的显示状态
+ this.mark=1;
+ OutOrderTM outOrderTM = new OutOrderTM();
+ outOrderTM.resultOfNumber(oNumber);
+ outTable.setModel(outOrderTM);
+ bottomPanelLeft.removeAll();
+ countInfoLabel = new JLabel("共"+outOrderTM.getRowCount()+"条记录");
+ bottomPanelLeft.add(countInfoLabel);
+ OrderView();
}
-
+
+
/*刷新*/
public void refreshOutBuffer() {
- OutTableModel outTableModel = new OutTableModel(); // 创建一个新的OutTableModel对象
- outTableModel.allOutBuffer(); // 查询所有购物车数据
- outTable.setModel(outTableModel); // 设置表格数据模型为查询到的所有购物车数据
- bottomPanelLeft.removeAll(); // 清除底部左侧面板的所有组件
- countInfoLabel = new JLabel("商品种类:" + outTableModel.getRowCount() + ",总价:" + outTableModel.getAllPrice()); // 显示商品种类和总价
- bottomPanelLeft.add(countInfoLabel); // 将统计信息标签添加到左侧面板
- backBtn.setVisible(false); // 隐藏返回按钮
- detailBtn.setVisible(false); // 隐藏查看详情按钮
- historyBtn.setVisible(true); // 显示历史记录按钮
- updateBtn.setVisible(true); // 显示更新按钮
- addBtn.setVisible(true); // 显示添加按钮
- deleteBtn.setVisible(true); // 显示删除按钮
+ OutTableModel outTableModel = new OutTableModel();
+ outTableModel.allOutBuffer();
+ outTable.setModel(outTableModel);
+ bottomPanelLeft.removeAll();
+ countInfoLabel = new JLabel("商品种类:"+outTableModel.getRowCount()+",总价:"+outTableModel.getAllPrice());
+ bottomPanelLeft.add(countInfoLabel);
+ backBtn.setVisible(false);
+ detailBtn.setVisible(false);
+ historyBtn.setVisible(true);
+ updateBtn.setVisible(true);
+ addBtn.setVisible(true);
+ deleteBtn.setVisible(true);
}
-
+
/*调出收银出货订单表*/
public void OutOrderRecord() {
- this.mark = 1; // 设置标记为1,表示当前显示的是订单记录数据
- OutOrderTM outOrderTM = new OutOrderTM(); // 创建一个OutOrderTM对象,用于存储订单记录数据
- outOrderTM.allOutOrderRecord(); // 查询所有的出货订单记录
- outTable.setModel(outOrderTM); // 设置表格数据模型为查询到的订单记录
- bottomPanelLeft.removeAll(); // 清除底部左侧面板的所有组件
- countInfoLabel = new JLabel("共" + outOrderTM.getRowCount() + "条记录"); // 显示订单记录的数量
- bottomPanelLeft.add(countInfoLabel); // 将订单记录数量标签添加到左侧面板
- OrderView(); // 调用OrderView方法,更新按钮的显示状态
+ this.mark=1;
+ OutOrderTM outOrderTM = new OutOrderTM();
+ outOrderTM.allOutOrderRecord();
+ outTable.setModel(outOrderTM);
+ bottomPanelLeft.removeAll();
+ countInfoLabel = new JLabel("共"+outOrderTM.getRowCount()+"条记录");
+ bottomPanelLeft.add(countInfoLabel);
+ OrderView();
}
-
+
public void OutRecord(String oNumber) {
- this.mark = 0; // 设置标记为0,表示当前显示的是订单详情数据
- OutRecordTM outRecordTM = new OutRecordTM(oNumber); // 创建一个OutRecordTM对象,根据订单号查询订单详情数据
- outRecordTM.findOutRecordByINumber(); // 查询根据订单号找到的订单详情
- outTable.setModel(outRecordTM); // 设置表格数据模型为查询到的订单详情数据
- bottomPanelLeft.removeAll(); // 清除底部左侧面板的所有组件
- countInfoLabel = new JLabel("订单号@" + oNumber + "共有" + outRecordTM.getRowCount() + "条记录"); // 显示订单号和记录数量
- bottomPanelLeft.add(countInfoLabel); // 将订单号和记录数量标签添加到左侧面板
- backBtn.setVisible(true); // 显示返回按钮
- detailBtn.setVisible(false); // 隐藏查看详情按钮
- updateBtn.setVisible(false); // 隐藏更新按钮
- addBtn.setVisible(false); // 隐藏添加按钮
- historyBtn.setVisible(false); // 隐藏历史记录按钮
- deleteBtn.setVisible(false); // 隐藏删除按钮
+ this.mark=0;
+ OutRecordTM outRecordTM = new OutRecordTM(oNumber);
+ outRecordTM.findOutRecordByINumber();
+ outTable.setModel(outRecordTM);
+ bottomPanelLeft.removeAll();
+ countInfoLabel = new JLabel("订单号@"+oNumber+"共有"+outRecordTM.getRowCount()+"条记录");
+ bottomPanelLeft.add(countInfoLabel);
+ backBtn.setVisible(true);
+ detailBtn.setVisible(false);
+ updateBtn.setVisible(false);
+ addBtn.setVisible(false);
+ historyBtn.setVisible(false);
+ deleteBtn.setVisible(false);
}
+
+
- /*按钮监听事件*/
+ /*按钮监听时间*/
@Override
public void actionPerformed(ActionEvent e) {
- BufferImpl = new BufferImpl(); // 创建BufferImpl对象,用于获取购物车数据
- Object source = e.getSource(); // 获取触发事件的按钮
-
- if (searchBtn == source) { // 如果点击的是搜索按钮
- String number = nameSearchTF.getText(); // 获取订单号
- resultOfNumber(number); // 根据订单号查询订单数据
+ BufferImpl = new BufferImpl();/*获得购物车*/
+ Object source = e.getSource();
+
+ if(searchBtn==source) {
+ String number = nameSearchTF.getText();
+ resultOfNumber(number);
}
-
- if (addBtn == source) { // 如果点击的是添加按钮
- OutDialog outDialog = new OutDialog(jFrame); // 创建OutDialog对话框
- outDialog.setVisible(true); // 显示添加对话框
- refreshOutBuffer(); // 刷新购物车数据
- } else if (updateBtn == source) { // 如果点击的是更新按钮
- int rowIndex = outTable.getSelectedRow(); // 获取选中的表格行索引
- if (rowIndex == -1) { // 如果没有选中行
- JOptionPane.showMessageDialog(this, "请选中一条进行更改数量"); // 提示用户选择记录
- return;
- }
- String id = (String) outTable.getValueAt(rowIndex, 0); // 获取选中行的订单ID
- ChangeSumDialog changesumDialog = new ChangeSumDialog(jFrame, id, "Out"); // 创建修改数量的对话框
- changesumDialog.setVisible(true); // 显示修改对话框
- refreshOutBuffer(); // 刷新购物车数据
- } else if (deleteBtn == source) { // 如果点击的是删除按钮
- int rowIndex = outTable.getSelectedRow(); // 获取选中的表格行索引
- if (rowIndex == -1) { // 如果没有选中行
- JOptionPane.showMessageDialog(this, "请选中一条"); // 提示用户选择记录
- return;
- }
- String id = (String) outTable.getValueAt(rowIndex, 0); // 获取选中行的订单ID
- int select = JOptionPane.showConfirmDialog(this, "是否删除id为" + id + "的记录", "提示", JOptionPane.YES_NO_OPTION); // 提示是否删除
- if (select == JOptionPane.YES_OPTION) { // 如果选择了删除
- if (BufferImpl.DelOutBufferById(id) == true) { // 调用BufferImpl删除购物车数据
- JOptionPane.showMessageDialog(this, "删除成功", "提示", JOptionPane.INFORMATION_MESSAGE); // 显示删除成功提示
- } else {
- JOptionPane.showMessageDialog(this, "删除失败", "提示", JOptionPane.ERROR_MESSAGE); // 显示删除失败提示
- }
- refreshOutBuffer(); // 刷新购物车数据
- }
- } else if (historyBtn == source) { // 如果点击的是历史记录按钮
- OutOrderRecord(); // 调用方法查询历史记录
- } else if (backBtn == source) { // 如果点击的是返回按钮
- System.out.println("outView中的mark=" + mark); // 打印当前mark的值
- if (mark == 1) { // 如果标记为1,表示当前显示的是订单数据
- refreshOutBuffer(); // 刷新购物车数据
- } else if (mark == 0) { // 如果标记为0,表示当前显示的是订单详情数据
- OutOrderRecord(); // 查询历史订单记录
+
+ if(addBtn==source) {
+ OutDialog outDialog = new OutDialog(jFrame);
+ outDialog.setVisible(true);
+ refreshOutBuffer();
+ }
+
+ else if(updateBtn==source) {
+ int rowIndex = outTable.getSelectedRow();
+ if(rowIndex==-1) {
+ JOptionPane.showMessageDialog(this,"请选中一条进行更改数量");
+ return;
+ }
+ String id =(String) outTable.getValueAt(rowIndex,0);
+ ChangeSumDialog changesumDialog = new ChangeSumDialog(jFrame,id,"Out");
+ changesumDialog.setVisible(true);
+ refreshOutBuffer();
+ }
+
+ else if(deleteBtn==source) {
+ int rowIndex = outTable.getSelectedRow();
+ if(rowIndex==-1) {
+ JOptionPane.showMessageDialog(this,"请选中一条");
+ return;
+ }
+ String id =(String) outTable.getValueAt(rowIndex,0);
+ int select = JOptionPane.showConfirmDialog(this,"是否删除id为"+id+"的记录","提示",JOptionPane.YES_NO_OPTION);
+ if(select==JOptionPane.YES_OPTION) {/*选择是*/
+ if(BufferImpl.DelOutBufferById(id)==true) {
+ JOptionPane.showMessageDialog(this,"删除成功","提示",JOptionPane.INFORMATION_MESSAGE);
+ }else {
+ JOptionPane.showMessageDialog(this,"删除失败","提示",JOptionPane.ERROR_MESSAGE);
+ }
+ refreshOutBuffer();
+ }
+
+
+ }else if(historyBtn==source) {/*查看历史全部记录*/
+ OutOrderRecord();
+ }else if(backBtn==source) {/*历史记录中的返回按钮*/
+ System.out.println("outView中的mark="+mark);
+ if(mark==1) {
+ refreshOutBuffer();
+ }else if(mark==0) {
+ OutOrderRecord();
}
- } else if (detailBtn == source) { // 如果点击的是查看订单详情按钮
- int rowIndex = outTable.getSelectedRow(); // 获取选中的表格行索引
- if (rowIndex == -1) { // 如果没有选中行
- JOptionPane.showMessageDialog(this, "请选中一条查看订单详细信息"); // 提示用户选择记录
+
+ }else if(detailBtn==source) {/*查看订单详细*/
+
+ int rowIndex = outTable.getSelectedRow();
+ if(rowIndex==-1) {
+ JOptionPane.showMessageDialog(this,"请选中一条查看订单详细信息");
return;
}
-
- String oNumber = (String) outTable.getValueAt(rowIndex, 0); // 获取选中行的订单号
- System.out.println("详情订单号为=" + oNumber); // 打印订单号
- OutRecord(oNumber); // 显示该订单的详细信息
- } else if (AccountBtn == source) { // 如果点击的是结账按钮
- refreshOutBuffer(); // 刷新购物车数据
- v = BufferImpl.allOutBuffer(); // 获取购物车中的所有商品数据
- if (v.size() == 0) { // 如果购物车为空
- JOptionPane.showMessageDialog(null, "您的购物车为空", "提示", JOptionPane.YES_OPTION); // 提示购物车为空
- } else { // 如果购物车不为空
- int res = JOptionPane.showConfirmDialog(null, "总金额:" + outTableModel.getAllPrice() + "元\r\n是否已经结账", "结账", JOptionPane.YES_NO_OPTION); // 提示结账确认
- if (res == JOptionPane.YES_OPTION) { // 如果选择结账
- String[] s = TimeAndOrder.TimeAndOrder(user.getUsername()); // 获取当前时间和订单号
- BufferImpl.InsertOutOrder(s[0], outTableModel.getAllPrice(), s[1], user.getUsername()); // 向订单表插入记录
- for (int i = 0; i < v.size(); i++) { // 遍历购物车中的所有商品
- Buffer = v.elementAt(i); // 获取每个商品
- BufferImpl.Account(s[0], s[1], Buffer.getId(), Buffer.getSum(), Buffer.getPrice()); // 结账并调用存储过程
+
+ String oNumber =(String) outTable.getValueAt(rowIndex,0);
+ System.out.println("详情订单号为="+oNumber);
+ OutRecord(oNumber);
+ }
+
+
+
+ else if(AccountBtn==source) {/*结账*/
+ refreshOutBuffer();
+ v = BufferImpl.allOutBuffer();
+ if(v.size()==0)/*购物车为空*/{
+ JOptionPane.showMessageDialog(null,"您的购物车为空", "提示", JOptionPane.YES_OPTION);
+ }
+ else {/*购物车不为空*/
+ int res = JOptionPane.showConfirmDialog(null,"总金额:"+outTableModel.getAllPrice()+"元\r\n是否已经结账", "结账", JOptionPane.YES_NO_OPTION);
+ if(res==JOptionPane.YES_OPTION)/*如果已经结账*/{
+
+ String[] s =TimeAndOrder.TimeAndOrder(user.getUsername());/*获得时间和订单号*/
+
+ BufferImpl.InsertOutOrder(s[0],outTableModel.getAllPrice(), s[1], user.getUsername());/*往订单表插入一条记录*/
+ for(int i=0;i combo; // 下拉框,用于选择商品目录
- private String log[]=null; // 商品目录名称数组
- private ArrayListalog=null; // 商品目录名称列表
- private ProdCatalogTM prodCatalogTM; // 商品目录表格模型
- private ProdCatalog pc; // 商品目录数据传输对象
- private prodCatalogImpl pci; // 商品目录数据操作实现类
+ private String catalog = "0";
+ private JComboBox combo;
+ private String log[]=null;
+ private ArrayListalog=null;
+ private ProdCatalogTM prodCatalogTM;
+ private ProdCatalog pc;
+ private prodCatalogImpl pci;
// 中间
- private JScrollPane tableScrollPane; // 表格滚动面板
- private JTable prodCatalogTable; // 商品目录表格
+ private JScrollPane tableScrollPane;
+ private JTable prodCatalogTable;
// 下面
- private JPanel bottomPanel; // 底部面板
- private JLabel countInfoLabel; // 标签,用于显示记录总数
+ private JPanel bottomPanel;
+ private JLabel countInfoLabel;
- private JFrame jFrame; // 窗口框架
+ private JFrame jFrame;
- // 构造方法,接收一个JFrame参数
public ProdCatalogView(JFrame jFrame) {
- this.setLayout(new BorderLayout()); // 设置面板布局为BorderLayout
- initView(); // 初始化视图
- this.jFrame = jFrame; // 保存传入的JFrame实例
+ this.setLayout(new BorderLayout());
+ initView();
+ this.jFrame = jFrame;
}
-
+
private void initView() {
- // 初始化视图方法
-
- toolBarPanel = new JPanel(new BorderLayout()); // 创建工具栏面板并设置布局为BorderLayout
-
- searchPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); // 创建搜索面板并设置布局为左对齐的FlowLayout
- locationLabel = new JLabel("商品目录"); // 创建商品目录标签并设置文本
- locationLabel.setFont(new FontUtil().userFont); // 设置标签字体
- locationLabel.setForeground(new Color(18, 150, 219)); // 设置标签前景色
- logLabel = new JLabel("分类"); // 创建分类标签并设置文本
- nameSearchTF = new JTextField(10); // 创建文本框并设置大小
-
- searchBtn = new JButton("搜索", new ImageIcon("static\\icon\\search.png")); // 创建搜索按钮并设置图标和文本
-
- // 创建操作面板和按钮,并设置图标(注释部分,未使用)
- // opePanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
- // addBtn = new JButton(new ImageIcon("static\\icon\\add.png"));
- // updateBtn = new JButton(new ImageIcon("static\\icon\\update.png"));
- // deleteBtn = new JButton(new ImageIcon("static\\icon\\delete.png"));
-
- // 为按钮添加事件监听(注释部分,未使用)
- // addBtn.addActionListener(this);
- // updateBtn.addActionListener(this);
- // deleteBtn.addActionListener(this);
-
- // 将按钮添加到操作面板(注释部分,未使用)
- // opePanel.add(addBtn);
- // opePanel.add(updateBtn);
- // opePanel.add(deleteBtn);
-
- pci=new prodCatalogImpl(); // 创建商品目录数据操作实现类实例
- this.alog=pci.findNameProdCatalog(); // 查找所有商品目录名称
- this.log=new String[alog.size()]; // 创建字符串数组以存储商品目录名称
- for(int i=0;i(log); // 创建下拉框并设置选项
- combo.addItemListener(new MyItemListener()); // 为下拉框添加事件监听器
+ combo = new JComboBox(log);
+ combo.addItemListener(new MyItemListener());
- searchPanel.add(locationLabel); // 将商品目录标签添加到搜索面板
- searchPanel.add(logLabel); // 将分类标签添加到搜索面板
- searchPanel.add(combo); // 将下拉框添加到搜索面板
+ searchPanel.add(locationLabel);
+ searchPanel.add(logLabel);
+ searchPanel.add(combo);
/*
- * searchPanel.add(nameSearchTF); // 将文本框添加到搜索面板(注释部分,未使用)
- * searchPanel.add(searchBtn); // 将搜索按钮添加到搜索面板(注释部分,未使用)
+ * searchPanel.add(nameSearchTF); searchPanel.add(searchBtn);
*/
- toolBarPanel.add(searchPanel, "West"); // 将搜索面板添加到工具栏面板的西边
- // toolBarPanel.add(opePanel, "East"); // 将操作面板添加到工具栏面板的东边(注释部分,未使用)
+ toolBarPanel.add(searchPanel, "West");
+// toolBarPanel.add(opePanel, "East");
// 中间表格
- prodCatalogTM = new ProdCatalogTM(); // 创建商品目录表格模型
- prodCatalogTM.all(); // 加载所有商品目录数据
- prodCatalogTable = new JTable(prodCatalogTM); // 创建表格并设置模型
- prodCatalogTable.setFont(FontUtil.tableFont); // 设置表格字体
- prodCatalogTable.setRowHeight(50); // 设置表格行高
- tableScrollPane = new JScrollPane(prodCatalogTable); // 创建滚动面板并添加表格
+ prodCatalogTM = new ProdCatalogTM();
+ prodCatalogTM.all();
+ prodCatalogTable = new JTable(prodCatalogTM);
+ prodCatalogTable.setFont(FontUtil.tableFont);
+ prodCatalogTable.setRowHeight(50);
+ tableScrollPane = new JScrollPane(prodCatalogTable);
// 下面
- bottomPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); // 创建底部面板并设置布局为左对齐的FlowLayout
- countInfoLabel = new JLabel("总共" + prodCatalogTable.getRowCount() + "条"); // 创建记录数标签并设置文本
- bottomPanel.add(countInfoLabel); // 将记录数标签添加到底部面板
+ bottomPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
+ countInfoLabel = new JLabel("总共" + prodCatalogTable.getRowCount() + "条");
+ bottomPanel.add(countInfoLabel);
- this.add(toolBarPanel, "North"); // 将工具栏面板添加到面板的北边
- this.add(tableScrollPane, "Center"); /* 将表格放到中间 */ // 将表格滚动面板添加到面板的中间
- this.add(bottomPanel, "South"); // 将底部面板添加到面板的南边
-
- setVisible(true); // 设置面板为可见
+ this.add(toolBarPanel, "North");
+ this.add(tableScrollPane, "Center");/* 将表格放到中间 */
+ this.add(bottomPanel, "South");
+ setVisible(true);
}
-
// @Override
// public void actionPerformed(ActionEvent e) {
// Object source = e.getSource();
-// if (addBtn == source) { // 如果事件源是添加按钮
-// UserDialog userDialog = new UserDialog(jFrame); // 创建用户对话框
-// userDialog.setVisible(true); // 设置用户对话框为可见
-// } else if (updateBtn == source) { // 如果事件源是更新按钮
-// // 更新按钮的事件处理代码(未实现)
-// } else if (deleteBtn == source) { // 如果事件源是删除按钮
-// // 删除按钮的事件处理代码(未实现)
-
+// if (addBtn == source) {
+// UserDialog userDialog = new UserDialog(jFrame);
+// userDialog.setVisible(true);
+// } else if (updateBtn == source) {
+//
+// } else if (deleteBtn == source) {
+//
// }
-
// }
- public class MyItemListener implements ItemListener { // 创建一个内部类实现ItemListener接口
+ public class MyItemListener implements ItemListener {
@Override
- public void itemStateChanged(ItemEvent e) { // 重写itemStateChanged方法
- JComboBox cb = (JComboBox) e.getSource(); // 获取事件源下拉框
- String catalog1 = (String) cb.getSelectedItem(); // 获取选中的商品目录名称
- pci =new prodCatalogImpl(); // 创建商品目录数据操作实现类实例
- for(int i=0;i商品库存"); // 创建位置标签并设置文本
- locationLabel.setFont(new FontUtil().userFont); // 设置标签字体
- locationLabel.setForeground(new Color(18, 150, 219)); // 设置标签前景色
- nameLabel = new JLabel("商品名"); // 创建商品名标签并设置文本
- nameSearchTF = new JTextField(10); // 创建文本框并设置大小
-
-
- searchBtn = new JButton(new ImageIcon("static\\icon\\search.png")); // 创建搜索按钮并设置图标
-
- opePanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); // 创建操作面板并设置布局为右对齐的FlowLayout
- addBtn =new JButton(new ImageIcon("static\\icon\\add.png")); // 创建添加按钮并设置图标
- updateBtn =new JButton(new ImageIcon("static\\icon\\update.png")); // 创建更新按钮并设置图标
- deleteBtn =new JButton(new ImageIcon("static\\icon\\delete.png")); // 创建删除按钮并设置图标
- backBtn =new JButton(new ImageIcon("static\\icon\\back.png")); // 创建返回按钮并设置图标
- historyBtn =new JButton(new ImageIcon("static\\icon\\history.png")); // 创建历史按钮并设置图标
- backBtn.setVisible(false); // 设置返回按钮为不可见
-
- addBtn.addActionListener(this); // 为添加按钮添加事件监听器
- updateBtn.addActionListener(this); // 为更新按钮添加事件监听器
- deleteBtn.addActionListener(this); // 为删除按钮添加事件监听器
- searchBtn.addActionListener(this); // 为搜索按钮添加事件监听器
- backBtn.addActionListener(this); // 为返回按钮添加事件监听器
- historyBtn.addActionListener(this); // 为历史按钮添加事件监听器
-
- opePanel.add(addBtn); // 将添加按钮添加到操作面板
- opePanel.add(updateBtn); // 将更新按钮添加到操作面板
- opePanel.add(deleteBtn); // 将删除按钮添加到操作面板
- opePanel.add(backBtn); // 将返回按钮添加到操作面板
- opePanel.add(historyBtn); // 将历史按钮添加到操作面板
-
- searchPanel.add(locationLabel); // 将位置标签添加到搜索面板
- searchPanel.add(nameLabel); // 将商品名标签添加到搜索面板
- searchPanel.add(nameSearchTF); // 将商品名文本框添加到搜索面板
- searchPanel.add(searchBtn); // 将搜索按钮添加到搜索面板
-
- toolBarPanel.add(searchPanel,"West"); // 将搜索面板添加到工具栏面板的西边
- toolBarPanel.add(opePanel,"East"); // 将操作面板添加到工具栏面板的东边
-
+
+ private void initView() {
+
+ toolBarPanel = new JPanel(new BorderLayout());
+
+ searchPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
+ locationLabel=new JLabel("当前位置>商品库存");
+ locationLabel.setFont(new FontUtil().userFont);
+ locationLabel.setForeground(new Color(18, 150, 219));
+ nameLabel = new JLabel("商品名");
+ nameSearchTF = new JTextField(10);
+
+ searchBtn = new JButton(new ImageIcon("static\\icon\\search.png"));
+
+ opePanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
+ addBtn =new JButton(new ImageIcon("static\\icon\\add.png"));
+ updateBtn =new JButton(new ImageIcon("static\\icon\\update.png"));
+ deleteBtn =new JButton(new ImageIcon("static\\icon\\delete.png"));
+ backBtn =new JButton(new ImageIcon("static\\icon\\back.png"));
+ historyBtn =new JButton(new ImageIcon("static\\icon\\history.png"));
+ backBtn.setVisible(false);
+
+ addBtn.addActionListener(this);
+ updateBtn.addActionListener(this);
+ deleteBtn.addActionListener(this);
+ searchBtn.addActionListener(this);
+ backBtn.addActionListener(this);
+ historyBtn.addActionListener(this);
+
+ opePanel.add(addBtn);
+ opePanel.add(updateBtn);
+ opePanel.add(deleteBtn);
+ opePanel.add(backBtn);
+ opePanel.add(historyBtn);
+
+ searchPanel.add(locationLabel);
+ searchPanel.add(nameLabel);
+ searchPanel.add(nameSearchTF);
+ searchPanel.add(searchBtn);
+
+
+ toolBarPanel.add(searchPanel,"West");
+ toolBarPanel.add(opePanel,"East");
+
+
//中间表格
- storageTableModel = new StorageTableModel(); // 创建表格模型实例
- storageTableModel.all(); // 调用表格模型的方法以加载所有数据
- storageTable = new JTable(storageTableModel); // 创建表格并设置模型
- storageTable.setFont(FontUtil.tableFont); // 设置表格字体
- storageTable.setRowHeight(50); // 设置表格行高
-
- tableScrollPane = new JScrollPane(storageTable); // 创建滚动面板并添加表格
-
+ storageTableModel = new StorageTableModel();
+ storageTableModel.all();
+ storageTable = new JTable(storageTableModel);
+ storageTable.setFont(FontUtil.tableFont);
+ storageTable.setRowHeight(50);
+
+ tableScrollPane = new JScrollPane(storageTable);
+
//下面
- bottomPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); // 创建底部面板并设置布局为左对齐的FlowLayout
- countInfoLabel = new JLabel("总共"+storageTableModel.getRowCount()+"条"); // 创建记录总数标签并设置文本
- bottomPanel.add(countInfoLabel); // 将记录总数标签添加到底部面板
-
- this.add(toolBarPanel,"North"); // 将工具栏面板添加到面板的北边
- this.add(tableScrollPane,"Center"); /*将表格放到中间*/ // 将表格滚动面板添加到面板的中间
- this.add(bottomPanel,"South"); // 将底部面板添加到面板的南边
-
- setVisible(true); // 设置面板为可见
-
+ bottomPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
+ countInfoLabel = new JLabel("总共"+storageTableModel.getRowCount()+"条");
+ bottomPanel.add(countInfoLabel);
+
+
+ this.add(toolBarPanel,"North");
+ this.add(tableScrollPane,"Center");/*将表格放到中间*/
+ this.add(bottomPanel,"South");
+
+ setVisible(true);
}
-
@Override
public void actionPerformed(ActionEvent e) {
- Object source = e.getSource(); // 获取事件源
- if(addBtn==source) { // 如果事件源是添加按钮
+ Object source = e.getSource();
+ if(addBtn==source) {
//添加数据的对话框
- ProductionDialog productionDialog = new ProductionDialog(jFrame); // 创建添加数据的对话框
- productionDialog.setVisible(true); // 设置对话框为可见
- refreshProduction(); // 刷新生产数据
- }else if(updateBtn==source) { // 如果事件源是更新按钮
- refreshProduction(); // 刷新生产数据
- }else if(historyBtn==source) { // 如果事件源是历史按钮
- storageRecord(); // 处理库存记录
- }else if(backBtn==source) { // 如果事件源是返回按钮
- refreshProduction(); // 刷新生产数据
+ ProductionDialog productionDialog = new ProductionDialog(jFrame);
+ productionDialog.setVisible(true);
+ refreshProduction();
+ }else if(updateBtn==source) {
+ refreshProduction();
+ }else if(historyBtn==source) {
+ storageRecord();
+ }else if(backBtn==source) {
+ refreshProduction();
}
-
- else if(deleteBtn==source) { // 如果事件源是删除按钮
+
+ else if(deleteBtn==source) {
//获取选中记录,删除
- int[] rowIndexs = storageTable.getSelectedRows(); // 获取表格中所有选中行的索引
- if(rowIndexs.length==0) { // 如果没有选中任何行
- JOptionPane.showMessageDialog(this,"请至少选中一条"); // 显示提示信息
- return; // 结束方法执行
+ int[] rowIndexs = storageTable.getSelectedRows();
+ if(rowIndexs.length==0) {
+ JOptionPane.showMessageDialog(this,"请至少选中一条");
+ return;
}
-
- int select=JOptionPane.showConfirmDialog(this,"是否删除选中的"+rowIndexs.length+"条记录","提示",JOptionPane.YES_NO_OPTION); // 显示确认删除的对话框
- if(select==JOptionPane.YES_OPTION){ // 如果用户选择是
- for(int i=0;i供应商"); // 创建标签并设置文本为当前位置信息
- locationLabel.setFont(new FontUtil().userFont); // 设置标签的字体
- locationLabel.setForeground(new Color(18, 150, 219)); // 设置标签的前景色(文字颜色)
- nameLabel = new JLabel("公司名称"); // 创建标签并设置文本为公司名称
- nameSearchTF = new JTextField(10); // 创建文本框并设置大小为10个字符宽度
- searchBtn = new JButton(new ImageIcon("static\\icon\\search.png")); // 创建搜索按钮并设置图标
- opePanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); // 创建操作面板并设置布局为右对齐的FlowLayout
- addBtn =new JButton(new ImageIcon("static\\icon\\add.png")); // 创建添加按钮并设置图标
- updateBtn =new JButton(new ImageIcon("static\\icon\\update.png")); // 创建更新按钮
-
- searchBtn = new JButton(new ImageIcon("static\\icon\\search.png")); // 创建搜索按钮并设置图标
-
- opePanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); // 创建操作面板并设置布局为右对齐的FlowLayout
- addBtn =new JButton(new ImageIcon("static\\icon\\add.png")); // 创建添加按钮并设置图标
- updateBtn =new JButton(new ImageIcon("static\\icon\\update.png")); // 创建更新按钮并设置图标
- deleteBtn =new JButton(new ImageIcon("static\\icon\\delete.png")); // 创建删除按钮并设置图标
-
- addBtn.addActionListener(this); // 为添加按钮添加事件监听器
- updateBtn.addActionListener(this); // 为更新按钮添加事件监听器
- deleteBtn.addActionListener(this); // 为删除按钮添加事件监听器
- searchBtn.addActionListener(this); // 为搜索按钮添加事件监听器
-
- opePanel.add(addBtn); // 将添加按钮添加到操作面板
- opePanel.add(updateBtn); // 将更新按钮添加到操作面板
- opePanel.add(deleteBtn); // 将删除按钮添加到操作面板
-
- searchPanel.add(locationLabel); // 将位置标签添加到搜索面板
- searchPanel.add(nameLabel); // 将公司名称标签添加到搜索面板
- searchPanel.add(nameSearchTF); // 将公司名称文本框添加到搜索面板
- searchPanel.add(searchBtn); // 将搜索按钮添加到搜索面板
-
-
- toolBarPanel.add(searchPanel,"West"); // 将搜索面板添加到工具栏面板的西边
- toolBarPanel.add(opePanel,"East"); // 将操作面板添加到工具栏面板的东边
-
-
+
+ private void initView() {
+
+ toolBarPanel = new JPanel(new BorderLayout());
+
+ searchPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
+ locationLabel=new JLabel("当前位置>供应商");
+ locationLabel.setFont(new FontUtil().userFont);
+ locationLabel.setForeground(new Color(18, 150, 219));
+ nameLabel = new JLabel("公司名称");
+ nameSearchTF = new JTextField(10);
+
+ searchBtn = new JButton(new ImageIcon("static\\icon\\search.png"));
+
+ opePanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
+ addBtn =new JButton(new ImageIcon("static\\icon\\add.png"));
+ updateBtn =new JButton(new ImageIcon("static\\icon\\update.png"));
+ deleteBtn =new JButton(new ImageIcon("static\\icon\\delete.png"));
+
+ addBtn.addActionListener(this);
+ updateBtn.addActionListener(this);
+ deleteBtn.addActionListener(this);
+ searchBtn.addActionListener(this);
+
+ opePanel.add(addBtn);
+ opePanel.add(updateBtn);
+ opePanel.add(deleteBtn);
+
+ searchPanel.add(locationLabel);
+ searchPanel.add(nameLabel);
+ searchPanel.add(nameSearchTF);
+ searchPanel.add(searchBtn);
+
+
+ toolBarPanel.add(searchPanel,"West");
+ toolBarPanel.add(opePanel,"East");
+
+
//中间表格
- supplierTableModel = new SupplierTableModel(); // 创建供应商表格模型对象
- supplierTableModel.all(); // 调用表格模型的方法以加载所有数据
- supplierTable = new JTable(supplierTableModel); // 创建表格并设置模型
- supplierTable.setFont(FontUtil.tableFont); // 设置表格字体
- supplierTable.setRowHeight(50); // 设置表格行高
-
- tableScrollPane = new JScrollPane(supplierTable); // 创建带滚动条的容器并添加表格
-
+ SupplierTableModel supplierTableModel = new SupplierTableModel();
+ supplierTableModel.all();
+ supplierTable = new JTable(supplierTableModel);
+ supplierTable.setFont(FontUtil.tableFont);
+ supplierTable.setRowHeight(50);
+
+ tableScrollPane = new JScrollPane(supplierTable);/*滑动条*/
+
//下面
- bottomPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); // 创建底部面板并设置布局为左对齐的FlowLayout
- countInfoLabel = new JLabel("总共"+supplierTableModel.getRowCount()+"条"); // 创建标签并设置显示记录总数的文本
- bottomPanel.add(countInfoLabel); // 将记录总数标签添加到底部面板
-
- this.add(toolBarPanel,"North"); // 将工具栏面板添加到主面板的北边
- this.add(tableScrollPane,"Center"); // 将带滚动条的表格容器添加到主面板的中间
- this.add(bottomPanel,"South"); // 将底部面板添加到主面板的南边
-
- setVisible(true); // 设置主面板可见(通常不需要,因为主面板会在添加到窗口时自动设置为可见)
+ bottomPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
+ countInfoLabel = new JLabel("总共"+supplierTableModel.getRowCount()+"条");
+ bottomPanel.add(countInfoLabel);
+
+
+ this.add(toolBarPanel,"North");
+ this.add(tableScrollPane,"Center");/*将表格放到中间*/
+ this.add(bottomPanel,"South");
+
+ setVisible(true);
}
@Override
- public void actionPerformed(ActionEvent e) { // 实现ActionListener接口的actionPerformed方法
- Object source = e.getSource(); // 获取事件源
- if(addBtn==source) { // 如果事件源是添加按钮
- SupplierInfDialog supplierInfDialog = new SupplierInfDialog(jFrame, null); // 创建供应商信息对话框
- supplierInfDialog.setVisible(true); // 设置对话框可见
- refreshSupplier(); // 刷新供应商信息
- }else if(updateBtn==source) { // 如果事件源是更新按钮
- refreshSupplier(); // 刷新供应商信息
- }else if(deleteBtn==source) { // 如果事件源是删除按钮
+ public void actionPerformed(ActionEvent e) {
+ Object source = e.getSource();
+ if(addBtn==source) {
+ SupplierInfDialog supplierInfDialog = new SupplierInfDialog(jFrame, null);
+ supplierInfDialog.setVisible(true);
+ refreshSupplier();
+ }else if(updateBtn==source) {
+ refreshSupplier();
+ }else if(deleteBtn==source) {
//获取选中记录
- int rowIndex = supplierTable.getSelectedRow(); // 获取表格中选中的行索引
- if(rowIndex==-1) { // 如果没有行被选中
- JOptionPane.showMessageDialog(this,"请选中一条"); // 显示提示信息
- return; // 结束方法执行
+ int rowIndex = supplierTable.getSelectedRow();
+ if(rowIndex==-1) {
+ JOptionPane.showMessageDialog(this,"请选中一条");
+ return;
+ }
+ int id = (Integer)supplierTable.getValueAt(rowIndex,0);
+ int select=JOptionPane.showConfirmDialog(this,"是否删除id="+id,"提示",JOptionPane.YES_NO_OPTION);
+ if(select==JOptionPane.YES_OPTION){
+ if(supplierInfService.deleteSupplierInf(id)==1) {
+ JOptionPane.showMessageDialog(this,"删除成功","提示",JOptionPane.INFORMATION_MESSAGE);
+ refreshSupplier();
+ }else {
+ JOptionPane.showMessageDialog(this,"删除失败","提示",JOptionPane.ERROR_MESSAGE);
}
- int id = (Integer)supplierTable.getValueAt(rowIndex,0); // 获取选中行的ID
- int select=JOptionPane.showConfirmDialog(this,"是否删除id="+id,"提示",JOptionPane.YES_NO_OPTION); // 显示确认删除的对话框并获取用户的选择
- if(select==JOptionPane.YES_OPTION){ // 如果用户在确认对话框中选择“是”
- if(supplierInfService.deleteSupplierInf(id)==1) { // 尝试删除供应商信息,如果成功返回1
- JOptionPane.showMessageDialog(this,"删除成功","提示",JOptionPane.INFORMATION_MESSAGE); // 显示删除成功的消息
- refreshSupplier(); // 刷新供应商信息
- }else {
- JOptionPane.showMessageDialog(this,"删除失败","提示",JOptionPane.ERROR_MESSAGE); // 显示删除失败的消息
- }
}
- }else if(searchBtn==source){ // 如果事件源是搜索按钮
- System.out.println("搜索"); // 打印搜索操作信息到控制台
- refreshFindRname(); // 调用方法刷新搜索结果
+ }else{
+ System.out.println("搜索");
+ refreshFindRname();
}
}
- // 根据名称刷新供应商信息的方法
public void refreshFindRname() {
- String name = nameSearchTF.getText(); // 获取搜索文本框中的文本
- SupplierInf supplierInf = new SupplierInf(); // 创建供应商信息对象
- supplierInf.setName(name); // 设置供应商名称为搜索文本
-
-
- supplierTableModel = new SupplierTableModel(); // 创建新的供应商表格模型
- supplierTableModel.Byname(supplierInf); // 调用表格模型的方法按名称查询供应商信息
-
- supplierTable.setModel(supplierTableModel); // 更新表格模型以显示查询结果
-
- refreshCount(); // 刷新记录总数
+ String name = nameSearchTF.getText();
+ SupplierInf supplierInf =new SupplierInf();
+ supplierInf.setName(name);
+
+
+ supplierTableModel = new SupplierTableModel();
+ supplierTableModel.Byname(supplierInf);
+
+ supplierTable.setModel(supplierTableModel);
+
+ refreshCount();
+
}
- // 刷新供应商信息的方法
public void refreshSupplier() {
- supplierTableModel = new SupplierTableModel(); // 创建新的供应商表格模型
- supplierTableModel.all(); // 加载所有供应商信息
- supplierTable.setModel(supplierTableModel); // 更新表格模型以显示所有供应商信息
-
- refreshCount(); // 刷新记录总数
+ supplierTableModel = new SupplierTableModel();
+ supplierTableModel.all();
+ supplierTable.setModel(supplierTableModel);
+
+ refreshCount();
}
- // 刷新记录总数的方法
public void refreshCount(){
- bottomPanel.removeAll(); // 清除底部面板上的所有组件
- countInfoLabel = new JLabel("总共"+supplierTableModel.getRowCount()+"条"); // 创建新的标签显示记录总数
- bottomPanel.add(countInfoLabel); // 将记录总数标签添加到底部面板
+ bottomPanel.removeAll();
+ countInfoLabel = new JLabel("总共"+supplierTableModel.getRowCount()+"条");
+ bottomPanel.add(countInfoLabel);
}
-
-}
+
+}
\ No newline at end of file
diff --git a/Supermarket/src/com/lingnan/supermarket/view/UserView.java b/Supermarket/src/com/lingnan/supermarket/view/UserView.java
index 6d460d0..d8eec3c 100644
--- a/Supermarket/src/com/lingnan/supermarket/view/UserView.java
+++ b/Supermarket/src/com/lingnan/supermarket/view/UserView.java
@@ -23,163 +23,231 @@ import com.lingnan.supermarket.dto.User;
import com.lingnan.supermarket.table.UserTableModel;
import com.lingnan.supermarket.utils.FontUtil;
-public class UserView extends JPanel implements ActionListener{
-
-
- //上面
+// UserView类继承自JPanel并实现ActionListener接口,用于构建用户管理界面相关的视图,处理用户交互动作
+public class UserView extends JPanel implements ActionListener {
+
+ // 用于存放整个顶部工具栏相关组件的面板
private JPanel toolBarPanel;
-
+
+ // 用于存放搜索相关组件的面板
private JPanel searchPanel;
- private JLabel nameLabel,locationLabel;
+ // 用于显示"姓名"提示文字的标签
+ private JLabel nameLabel, locationLabel;
+ // 用于输入姓名进行搜索的文本框
private JTextField nameSearchTF;
+ // 用于触发搜索操作的按钮
private JButton searchBtn;
-
+
+ // 用于存放操作按钮(添加、更新、删除等)的面板
private JPanel opePanel;
- private JButton addBtn,updateBtn,deleteBtn;
-
- //中间
+ // 用于触发添加用户操作的按钮
+ private JButton addBtn, updateBtn, deleteBtn;
+
+ // 界面中部相关组件声明
+ // 用于存放表格并提供滚动功能的滚动面板,以便在表格内容较多时可以滚动查看
private JScrollPane tableScrollPane;
+ // 用于展示用户数据的表格组件
private JTable userTable;
-
- //删除时选中赋值给id
+
+ // 用于记录删除操作时选中记录的用户id,初始化为0
private int id;
-
- //下面
+
+ // 界面下部相关组件声明
+ // 用于存放记录数相关提示信息的面板
private JPanel bottomPanel;
+ // 用于显示用户记录总数相关提示信息的标签
private JLabel countInfoLabel;
-
+
+ // 对父窗口(JFrame类型)的引用
private JFrame jFrame;
-
-
- private UserTableModel userTableModel ;
-
-
- private UserService userService=new UserServiceImpl();
+
+ // 用户表格数据模型对象,用于管理表格中的数据,与数据库等数据源进行交互获取和更新数据等
+ private UserTableModel userTableModel;
+
+ // 用户服务接口的实现类实例,通过它可以调用与用户相关的数据库操作方法,如增删改查等功能
+ private UserService userService = new UserServiceImpl();
+
+ // 构造函数,接收一个JFrame类型的参数jFrame,用于创建用户管理视图,并初始化界面组件
public UserView(JFrame jFrame) {
+ // 设置该面板(UserView)的布局为BorderLayout,将界面划分为北、南、东、西、中五个区域来放置组件
this.setLayout(new BorderLayout());
+ // 调用初始化视图组件的方法
initView();
+ // 将传入的父窗口引用保存到成员变量jFrame中
this.jFrame = jFrame;
}
-
+
+ // 初始化用户管理视图界面组件的方法
private void initView() {
-
- toolBarPanel = new JPanel(new BorderLayout());
-
- searchPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
- locationLabel=new JLabel("当前位置>人员管理");
+ // 创建一个新的面板toolBarPanel,设置其布局为BorderLayout,用于存放顶部的搜索和操作按钮等组件
+ toolBarPanel = new JPanel(new BorderLayout());
+
+ // 创建一个新的面板searchPanel,设置其布局为FlowLayout,且组件左对齐,用于存放搜索相关的组件
+ searchPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
+ // 创建一个显示当前位置提示信息的标签,这里显示为"当前位置>人员管理"
+ locationLabel = new JLabel("当前位置>人员管理");
+ // 设置标签的字体为通过FontUtil类获取的特定字体(这里假设FontUtil类用于统一管理字体相关设置)
locationLabel.setFont(new FontUtil().userFont);
+ // 设置标签的前景色(文字颜色)为特定的蓝色(RGB值为18, 150, 219)
locationLabel.setForeground(new Color(18, 150, 219));
+ // 创建一个显示"姓名"文字的标签,用于提示用户在旁边的文本框中输入姓名进行搜索
nameLabel = new JLabel("姓名");
+ // 创建一个文本框,用于用户输入要搜索的姓名,设置其可显示的宽度大致为10个字符左右
nameSearchTF = new JTextField(10);
-
+ // 创建一个按钮,使用指定路径下的图标文件作为按钮的图标,用于触发搜索操作
searchBtn = new JButton(new ImageIcon("static\\icon\\search.png"));
-
- /*右边功能模块*/
- opePanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
- addBtn =new JButton(new ImageIcon("static\\icon\\add.png"));
- updateBtn =new JButton(new ImageIcon("static\\icon\\update.png"));
- deleteBtn =new JButton(new ImageIcon("static\\icon\\delete.png"));
-
+
+ // 创建一个新的面板opePanel,设置其布局为FlowLayout,且组件右对齐,用于存放操作按钮(添加、更新、删除)
+ opePanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
+ // 创建一个按钮,使用指定路径下的图标文件("static\\icon\\add.png")作为按钮的图标,用于触发添加用户操作
+ addBtn = new JButton(new ImageIcon("static\\icon\\add.png"));
+ // 创建一个按钮,使用指定路径下的图标文件("static\\icon\\update.png")作为按钮的图标,用于触发更新用户操作
+ updateBtn = new JButton(new ImageIcon("static\\icon\\update.png"));
+ // 创建一个按钮,使用指定路径下的图标文件("static\\icon\\delete.png")作为按钮的图标,用于触发删除用户操作
+ deleteBtn = new JButton(new ImageIcon("static\\icon\\delete.png"));
+
+ // 为添加、更新、删除和搜索按钮添加点击事件监听器,将按钮的点击事件绑定到当前类(实现了ActionListener接口)的actionPerformed方法上,以便处理相应的操作逻辑
addBtn.addActionListener(this);
updateBtn.addActionListener(this);
deleteBtn.addActionListener(this);
searchBtn.addActionListener(this);
-
+
+ // 将添加、更新、删除按钮依次添加到操作按钮面板opePanel中
opePanel.add(addBtn);
opePanel.add(updateBtn);
opePanel.add(deleteBtn);
-
+
+ // 将位置提示标签、姓名标签、姓名搜索文本框和搜索按钮依次添加到搜索面板searchPanel中
searchPanel.add(locationLabel);
searchPanel.add(nameLabel);
searchPanel.add(nameSearchTF);
searchPanel.add(searchBtn);
-
-
- toolBarPanel.add(searchPanel,"West");
- toolBarPanel.add(opePanel,"East");
-
-
- //中间表格
- userTableModel = new UserTableModel();
+
+ // 将搜索面板添加到toolBarPanel的西边(左侧)区域,将操作按钮面板添加到toolBarPanel的东边(右侧)区域
+ toolBarPanel.add(searchPanel, "West");
+ toolBarPanel.add(opePanel, "East");
+
+ // 创建用户表格数据模型对象
+ userTableModel = new UserTableModel();
+ // 调用数据模型的方法获取所有用户数据,用于初始化表格显示内容(这里假设UserTableModel类中的all方法用于从数据库等数据源获取全部用户数据并填充到模型中)
userTableModel.all();
-
+
+ // 创建一个JTable对象,使用前面创建的用户表格数据模型userTableModel来管理表格中的数据展示和交互
userTable = new JTable(userTableModel);
+ // 设置表格的字体为通过FontUtil类获取的适用于表格的特定字体(假设FontUtil类中定义了相关字体常量)
userTable.setFont(FontUtil.tableFont);
+ // 设置表格每行的高度为50像素,调整表格的显示样式
userTable.setRowHeight(50);
+ // 创建一个滚动面板,将用户表格添加到滚动面板中,以便在表格内容较多时可以通过滚动条查看全部内容
tableScrollPane = new JScrollPane(userTable);
-
- //下面
+
+ // 创建一个新的面板bottomPanel,设置其布局为FlowLayout,且组件左对齐,用于存放记录数相关提示信息
bottomPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
- countInfoLabel = new JLabel("总共"+userTableModel.getRowCount()+"条");
+ // 创建一个显示用户记录总数的标签,初始文本为"总共"加上通过用户表格数据模型获取的行数(假设UserTableModel类的getRowCount方法返回当前模型中的数据行数)以及"条"字
+ countInfoLabel = new JLabel("总共" + userTableModel.getRowCount() + "条");
+ // 将记录数标签添加到bottomPanel面板中
bottomPanel.add(countInfoLabel);
-
-
- this.add(toolBarPanel,"North");
- this.add(tableScrollPane,"Center");/*将表格放到中间*/
- this.add(bottomPanel,"South");
-
+
+ // 将顶部工具栏面板添加到当前面板(UserView)的北部(上方)区域
+ this.add(toolBarPanel, "North");
+ // 将包含用户表格的滚动面板添加到当前面板(UserView)的中部区域,使其在界面中间显示
+ this.add(tableScrollPane, "Center");
+ // 将记录数面板添加到当前面板(UserView)的南部(下方)区域
+ this.add(bottomPanel, "South");
+
+ // 设置当前面板(UserView)可见,使其在界面上显示出来
setVisible(true);
}
+ // 处理按钮点击等用户交互动作的方法,实现了ActionListener接口中的方法
@Override
public void actionPerformed(ActionEvent e) {
+ // 获取触发事件的源组件(即被点击的按钮等组件)
Object source = e.getSource();
- if(addBtn==source) {
- //添加数据的对话框
+ if (addBtn == source) {
+ // 如果点击的是添加按钮,执行以下操作:
+
+ // 创建一个用于添加用户信息的对话框
UserDialog userDialog = new UserDialog(jFrame);
+ // 设置该对话框可见,显示在屏幕上,让用户进行添加用户信息的操作
userDialog.setVisible(true);
+ // 调用刷新用户数据的方法,用于在添加操作完成后更新界面上的用户数据显示
refreshUser();
- }else if(updateBtn==source) {
-
+ } else if (updateBtn == source) {
+ // 如果点击的是更新按钮,调用刷新用户数据的方法,用于在更新操作相关逻辑完成后更新界面上的用户数据显示
refreshUser();
- }else if(deleteBtn==source) {
- //获取选中记录
+ } else if (deleteBtn == source) {
+ // 如果点击的是删除按钮,获取用户在表格中选中的行索引,如果没有选中任何行,则返回 -1
int rowIndex = userTable.getSelectedRow();
- if(rowIndex==-1) {
- JOptionPane.showMessageDialog(this,"请选中一条");
+ if (rowIndex == -1) {
+ // 如果没有选中行,弹出提示框提醒用户需要选中一条记录后再进行删除操作
+ JOptionPane.showMessageDialog(this, "请选中一条");
return;
}
- int id = (Integer)userTable.getValueAt(rowIndex,0);
- int select=JOptionPane.showConfirmDialog(this,"是否删除id="+id,"提示",JOptionPane.YES_NO_OPTION);
- if(select==JOptionPane.YES_OPTION){
-
- if(userService.deleteUser(id)==1) {
- JOptionPane.showMessageDialog(this,"删除成功","提示",JOptionPane.INFORMATION_MESSAGE);
-
- }else {
- JOptionPane.showMessageDialog(this,"删除失败","提示",JOptionPane.ERROR_MESSAGE);
+ // 获取选中行的第一列的值,并转换为整数类型,赋值给id变量,用于后续删除操作时确定要删除的用户记录
+ int id = (Integer) userTable.getValueAt(rowIndex, 0);
+ // 弹出确认对话框,询问用户是否确定删除指定id的用户记录,提供"是"和"否"两个选项,返回用户选择的结果
+ int select = JOptionPane.showConfirmDialog(this, "是否删除id=" + id, "提示", JOptionPane.YES_NO_OPTION);
+ if (select == JOptionPane.YES_OPTION) {
+ // 如果用户选择了"是"(确认删除),执行以下操作:
+
+ // 调用用户服务接口的删除用户方法,传入要删除的用户id,尝试从数据库中删除对应的用户记录,并获取返回结果(假设返回1表示删除成功,其他值表示失败)
+ if (userService.deleteUser(id) == 1) {
+ // 如果删除成功,弹出提示框显示"删除成功"的消息,提示框的图标为信息图标
+ JOptionPane.showMessageDialog(this, "删除成功", "提示", JOptionPane.INFORMATION_MESSAGE);
+ } else {
+ // 如果删除失败,弹出提示框显示"删除失败"的消息,提示框的图标为错误图标
+ JOptionPane.showMessageDialog(this, "删除失败", "提示", JOptionPane.ERROR_MESSAGE);
}
}
+ // 无论删除操作是否成功,都调用刷新用户数据的方法,更新界面上的用户数据显示,确保表格等显示内容与数据库中的最新数据一致
refreshUser();
-
- }else{
+ } else {
+ // 如果点击的是搜索按钮(即其他未明确匹配的按钮点击情况,这里目前代码逻辑中只存在搜索按钮可能进入此分支),执行以下操作:
+
System.out.println("搜索");
+ // 调用刷新按姓名搜索结果的方法,根据用户在姓名搜索文本框中输入的内容进行数据刷新和表格显示更新
refreshFindRname();
}
-
}
+
+ // 根据姓名进行搜索并刷新表格显示内容的方法
public void refreshFindRname() {
+ // 获取用户在姓名搜索文本框中输入的姓名内容
String rname = nameSearchTF.getText();
- User user =new User();
+ // 创建一个临时的User对象,用于传递搜索条件
+ User user = new User();
+ // 将获取到的姓名设置到临时User对象中,作为搜索条件
user.setRname(rname);
+ // 创建一个新的用户表格数据模型对象,用于重新获取和设置符合搜索条件的数据
userTableModel = new UserTableModel();
+ // 调用用户表格数据模型的方法,根据传入的包含姓名条件的User对象进行数据查询,获取符合条件的用户数据
userTableModel.Byrname(user);
+ // 将更新后的用户表格数据模型设置给用户表格
userTable.setModel(userTableModel);
- //同时更新下面的记录数
- refreshCount();
+ // 同时调用刷新记录数的方法,更新界面下方显示的用户记录总数提示信息
+ refreshCount();
}
+
+ // 刷新用户数据显示
public void refreshUser() {
+ // 创建一个新的用户表格数据模型对象
userTableModel = new UserTableModel();
+ // 调用数据模型的方法获取所有用户数据,重新填充模型
userTableModel.all();
+ // 将更新后的用户表格数据模型设置给用户表格,使表格显示最新的全部用户数据内容
userTable.setModel(userTableModel);
- //同时更新下面的记录数
+ // 同时调用刷新记录数的方法,更新界面下方显示的用户记录总数提示信息
refreshCount();
-
}
- public void refreshCount(){
+
+ // 刷新界面下方显示的用户记录总数提示信息的方法
+ public void refreshCount() {
+ // 移除bottomPanel面板中之前添加的所有组件,更新显示新的记录数
bottomPanel.removeAll();
- countInfoLabel = new JLabel("总共"+userTableModel.getRowCount()+"条");
+ // 创建一个新的显示用户记录总数的标签,文本内容为"总共"加上通过用户表格数据模型获取的当前行数以及"条"字
+ countInfoLabel = new JLabel("总共" + userTableModel.getRowCount() + "条");
+ // 将新的记录数标签添加到bottomPanel面板中,实现记录数提示信息的更新显示
bottomPanel.add(countInfoLabel);
}
-}
-
+}
\ No newline at end of file