0


Java swing+Mysql商品销售管理系统

前言

临近期末做了一个商品销售管理系统,分享下,全部源码在码云,需要自取,博客只分享部分代码(太多了)。

数据库的建立

我们使用Navicat Premium 15连接mysql,建立如下九张表。

得到如下视图(看上去似乎有点乱了)

因为register是一个注册表,所以不参与视图里的连接。

各种表的情况如上所示,当然你也可以用sql语句写。

这个是我导出来的sql语句,由于我也没试过,所以不保证对错,如果错了只能老老实实自己差数据了。

  1. /*
  2. Navicat Premium Data Transfer
  3. Source Server : 123
  4. Source Server Type : MySQL
  5. Source Server Version : 80027
  6. Source Host : localhost:3306
  7. Source Schema : user
  8. Target Server Type : MySQL
  9. Target Server Version : 80027
  10. File Encoding : 65001
  11. Date: 27/12/2021 21:08:30
  12. */
  13. SET NAMES utf8mb4;
  14. SET FOREIGN_KEY_CHECKS = 0;
  15. -- ----------------------------
  16. -- Table structure for comminfo
  17. -- ----------------------------
  18. DROP TABLE IF EXISTS `comminfo`;
  19. CREATE TABLE `comminfo` (
  20. `itemNo` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '商品编号',
  21. `itemName` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '商品名称',
  22. `brand` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '品牌',
  23. `model` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '型号',
  24. `salePrice` int NOT NULL COMMENT '售价',
  25. PRIMARY KEY (`itemNo`) USING BTREE,
  26. INDEX `pk10`(`salePrice`) USING BTREE,
  27. CONSTRAINT `comminfo_pk` FOREIGN KEY (`itemNo`) REFERENCES `inventory` (`itemNo`) ON DELETE RESTRICT ON UPDATE CASCADE
  28. ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
  29. -- ----------------------------
  30. -- Records of comminfo
  31. -- ----------------------------
  32. INSERT INTO `comminfo` VALUES ('i001', '大航海时代', '海贼王', '其他', 10000);
  33. INSERT INTO `comminfo` VALUES ('i002', '红发四皇', '海贼王', '其他', 5000);
  34. INSERT INTO `comminfo` VALUES ('i003', '白胡子之死', '海贼王', '其他', 1000);
  35. INSERT INTO `comminfo` VALUES ('i004', '路飞出海', '海贼王', '其他', 500);
  36. INSERT INTO `comminfo` VALUES ('i005', '艾斯之死', '海贼王', '其他', 1000);
  37. INSERT INTO `comminfo` VALUES ('i006', '克洛克达尔', '海贼王', '其他', 3000);
  38. INSERT INTO `comminfo` VALUES ('i007', '汉库克逃脱', '海贼王', '其他', 2000);
  39. INSERT INTO `comminfo` VALUES ('i008', '海绵宝宝的小窝', '其他', '其他', 10000);
  40. INSERT INTO `comminfo` VALUES ('i009', '海星', '食品', 'min', 1000);
  41. -- ----------------------------
  42. -- Table structure for employee
  43. -- ----------------------------
  44. DROP TABLE IF EXISTS `employee`;
  45. CREATE TABLE `employee` (
  46. `employeeNo` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '员工号',
  47. `employeeName` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '员工姓名',
  48. `sex` char(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '性别',
  49. `basePay` int NOT NULL COMMENT '基本工资',
  50. `post` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '职务',
  51. `password` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '密码',
  52. PRIMARY KEY (`employeeNo`) USING BTREE,
  53. INDEX `员工编号`(`employeeNo`) USING BTREE
  54. ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
  55. -- ----------------------------
  56. -- Records of employee
  57. -- ----------------------------
  58. INSERT INTO `employee` VALUES ('e001', '香克斯', '男', 4000, '四皇', '123456');
  59. INSERT INTO `employee` VALUES ('e002', '路飞', '男', 500, '新星', '000111');
  60. INSERT INTO `employee` VALUES ('e003', '索隆', '男', 500, '新星', '000222');
  61. INSERT INTO `employee` VALUES ('e004', '娜美', '女', 500, '新星', '000333');
  62. INSERT INTO `employee` VALUES ('e005', '山治', '男', 500, '新星', '000444');
  63. INSERT INTO `employee` VALUES ('e006', '乌索普', '男', 500, '新星', '000555');
  64. INSERT INTO `employee` VALUES ('e007', '罗杰', '男', 10000, '海贼王', '666666');
  65. INSERT INTO `employee` VALUES ('e008', '爱德华', '男', 4000, '四皇', '888888');
  66. INSERT INTO `employee` VALUES ('e009', '艾斯', '男', 600, '新星', '111111');
  67. INSERT INTO `employee` VALUES ('e010', '克洛克达尔', '男', 800, '七武海', '222222');
  68. INSERT INTO `employee` VALUES ('e011', '汉库克', '女', 800, '七武海', '333333');
  69. -- ----------------------------
  70. -- Table structure for employeeifom
  71. -- ----------------------------
  72. DROP TABLE IF EXISTS `employeeifom`;
  73. CREATE TABLE `employeeifom` (
  74. `employeeNo` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '员工号',
  75. `employeeName` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '员工姓名',
  76. `ispartyMember` varchar(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '是否党员',
  77. `Resume` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '简介',
  78. `photo` blob NULL COMMENT '照片',
  79. PRIMARY KEY (`employeeNo`) USING BTREE,
  80. CONSTRAINT `pk6` FOREIGN KEY (`employeeNo`) REFERENCES `employee` (`employeeNo`) ON DELETE RESTRICT ON UPDATE CASCADE
  81. ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
  82. -- ----------------------------
  83. -- Records of employeeifom
  84. -- ----------------------------
  85. INSERT INTO `employeeifom` VALUES ('e001', '香克斯', '否', '红发香克斯四皇之一', NULL);
  86. INSERT INTO `employeeifom` VALUES ('e002', '路飞', '否', '草帽小子', NULL);
  87. INSERT INTO `employeeifom` VALUES ('e003', '索隆', '否', '绿毛,努力,自律', NULL);
  88. INSERT INTO `employeeifom` VALUES ('e004', '娜美', '是', '航海士', NULL);
  89. INSERT INTO `employeeifom` VALUES ('e005', '山治', '否', '厨师', NULL);
  90. INSERT INTO `employeeifom` VALUES ('e006', '乌索普', '否', '绝境乌索普', NULL);
  91. -- ----------------------------
  92. -- Table structure for inventory
  93. -- ----------------------------
  94. DROP TABLE IF EXISTS `inventory`;
  95. CREATE TABLE `inventory` (
  96. `itemNo` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '商品编号',
  97. `purchaseDate` datetime NOT NULL COMMENT '进货日期',
  98. `buyingPrice` int NOT NULL COMMENT '进货价',
  99. `itemQuantity` int NOT NULL COMMENT '进货数量',
  100. `supplierNo` char(6) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '供应商编号',
  101. PRIMARY KEY (`itemNo`) USING BTREE,
  102. INDEX `supplierNo`(`supplierNo`) USING BTREE,
  103. INDEX `itemNo`(`itemNo`) USING BTREE,
  104. CONSTRAINT `inventory_pk` FOREIGN KEY (`supplierNo`) REFERENCES `supplier` (`supplierNo`) ON DELETE RESTRICT ON UPDATE CASCADE
  105. ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
  106. -- ----------------------------
  107. -- Records of inventory
  108. -- ----------------------------
  109. INSERT INTO `inventory` VALUES ('i001', '1497-02-24 00:00:00', 10000, 1, 's004');
  110. INSERT INTO `inventory` VALUES ('i002', '1517-01-01 00:00:00', 4000, 1, 's001');
  111. INSERT INTO `inventory` VALUES ('i003', '1520-03-24 00:00:00', 4000, 1, 's002');
  112. INSERT INTO `inventory` VALUES ('i004', '1520-01-01 00:00:00', 1000, 5, 's003');
  113. INSERT INTO `inventory` VALUES ('i005', '1520-08-10 00:00:00', 2000, 1, 's007');
  114. INSERT INTO `inventory` VALUES ('i006', '1515-01-13 00:00:00', 1000, 1, 's005');
  115. INSERT INTO `inventory` VALUES ('i007', '1506-01-18 00:00:00', 3000, 1, 's006');
  116. INSERT INTO `inventory` VALUES ('i008', '2021-09-09 00:00:00', 1000, 10, 's008');
  117. INSERT INTO `inventory` VALUES ('i009', '2021-09-09 00:00:00', 500, 100, 's009');
  118. INSERT INTO `inventory` VALUES ('i010', '1520-03-24 00:00:00', 500, 1010, 's010');
  119. -- ----------------------------
  120. -- Table structure for register
  121. -- ----------------------------
  122. DROP TABLE IF EXISTS `register`;
  123. CREATE TABLE `register` (
  124. `id` char(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  125. `password` char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  126. PRIMARY KEY (`id`) USING BTREE
  127. ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
  128. -- ----------------------------
  129. -- Records of register
  130. -- ----------------------------
  131. INSERT INTO `register` VALUES ('012', '123');
  132. INSERT INTO `register` VALUES ('0123', '0123');
  133. INSERT INTO `register` VALUES ('123', '123');
  134. INSERT INTO `register` VALUES ('123456', '123');
  135. -- ----------------------------
  136. -- Table structure for returnit
  137. -- ----------------------------
  138. DROP TABLE IF EXISTS `returnit`;
  139. CREATE TABLE `returnit` (
  140. `price` int NOT NULL COMMENT '价格',
  141. `returnNo` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '退货号',
  142. `transactionNo` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '销售号',
  143. `itemNo` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '商品编号',
  144. `supplierNo` char(6) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '供应商编号',
  145. `reason` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '退货原因',
  146. PRIMARY KEY (`returnNo`) USING BTREE,
  147. INDEX `supplierNo`(`supplierNo`) USING BTREE,
  148. INDEX `transactionNo`(`transactionNo`) USING BTREE,
  149. INDEX `itemNo`(`itemNo`) USING BTREE,
  150. INDEX `price`(`price`) USING BTREE,
  151. CONSTRAINT `returnit_pk1` FOREIGN KEY (`itemNo`) REFERENCES `inventory` (`itemNo`) ON DELETE RESTRICT ON UPDATE CASCADE,
  152. CONSTRAINT `returnit_pk2` FOREIGN KEY (`transactionNo`) REFERENCES `salefact` (`transactionNo`) ON DELETE RESTRICT ON UPDATE CASCADE
  153. ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
  154. -- ----------------------------
  155. -- Records of returnit
  156. -- ----------------------------
  157. -- ----------------------------
  158. -- Table structure for salefact
  159. -- ----------------------------
  160. DROP TABLE IF EXISTS `salefact`;
  161. CREATE TABLE `salefact` (
  162. `transactionNo` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '销售号',
  163. `itemNo` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '商品编号',
  164. `saleQuantity` int NOT NULL COMMENT '销售数量',
  165. `saleSumPrice` int NOT NULL COMMENT '销售总金额',
  166. `saleDate` datetime NOT NULL COMMENT '销售日期',
  167. `employeeNo` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '员工号',
  168. PRIMARY KEY (`transactionNo`) USING BTREE,
  169. INDEX `商品编号`(`itemNo`) USING BTREE,
  170. INDEX `员工编号`(`employeeNo`) USING BTREE,
  171. CONSTRAINT `salefact_pk1` FOREIGN KEY (`itemNo`) REFERENCES `inventory` (`itemNo`) ON DELETE RESTRICT ON UPDATE CASCADE,
  172. CONSTRAINT `salefact_pk2` FOREIGN KEY (`employeeNo`) REFERENCES `employee` (`employeeNo`) ON DELETE RESTRICT ON UPDATE CASCADE
  173. ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
  174. -- ----------------------------
  175. -- Records of salefact
  176. -- ----------------------------
  177. INSERT INTO `salefact` VALUES ('t001', 'i001', 1, 20000, '1497-12-31 00:00:00', 'e007');
  178. INSERT INTO `salefact` VALUES ('t002', 'i002', 1, 10000, '1520-02-21 00:00:00', 'e001');
  179. INSERT INTO `salefact` VALUES ('t003', 'i003', 1, 12000, '1521-03-24 00:00:00', 'e008');
  180. INSERT INTO `salefact` VALUES ('t004', 'i004', 5, 1000, '1521-08-21 00:00:00', 'e002');
  181. INSERT INTO `salefact` VALUES ('t005', 'i005', 1, 1000, '1521-05-21 00:00:00', 'e009');
  182. INSERT INTO `salefact` VALUES ('t006', 'i006', 1, 2000, '1520-02-01 00:00:00', 'e010');
  183. INSERT INTO `salefact` VALUES ('t007', 'i007', 1, 6000, '1521-03-05 00:00:00', 'e011');
  184. -- ----------------------------
  185. -- Table structure for stock
  186. -- ----------------------------
  187. DROP TABLE IF EXISTS `stock`;
  188. CREATE TABLE `stock` (
  189. `buyingPrice` int NOT NULL COMMENT '进货价',
  190. `entryNo` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '进货号',
  191. `itemNo` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '商品编号',
  192. `quantity` int NOT NULL COMMENT '数量',
  193. PRIMARY KEY (`entryNo`) USING BTREE,
  194. INDEX `stock_pk`(`itemNo`) USING BTREE,
  195. CONSTRAINT `stock_pk` FOREIGN KEY (`itemNo`) REFERENCES `inventory` (`itemNo`) ON DELETE RESTRICT ON UPDATE CASCADE
  196. ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
  197. -- ----------------------------
  198. -- Records of stock
  199. -- ----------------------------
  200. INSERT INTO `stock` VALUES (10000, 'e001', 'i001', 1);
  201. INSERT INTO `stock` VALUES (4000, 'e002', 'i002', 1);
  202. INSERT INTO `stock` VALUES (4000, 'e003', 'i003', 1);
  203. INSERT INTO `stock` VALUES (1000, 'e004', 'i004', 5);
  204. INSERT INTO `stock` VALUES (2000, 'e005', 'i005', 1);
  205. INSERT INTO `stock` VALUES (1000, 'e006', 'i006', 1);
  206. INSERT INTO `stock` VALUES (3000, 'e007', 'i007', 1);
  207. INSERT INTO `stock` VALUES (1000, 'e008', 'i008', 10);
  208. INSERT INTO `stock` VALUES (500, 'e009', 'i009', 100);
  209. INSERT INTO `stock` VALUES (500, 'e010', 'i010', 10);
  210. -- ----------------------------
  211. -- Table structure for supplier
  212. -- ----------------------------
  213. DROP TABLE IF EXISTS `supplier`;
  214. CREATE TABLE `supplier` (
  215. `supplierName` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '供应商名称',
  216. `supplierNo` char(6) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '供应商编号',
  217. `address` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '供应商地址',
  218. `teleNumber` char(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '联系电话',
  219. PRIMARY KEY (`supplierNo`) USING BTREE
  220. ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
  221. -- ----------------------------
  222. -- Records of supplier
  223. -- ----------------------------
  224. INSERT INTO `supplier` VALUES ('红发海贼团', 's001', '雷德>佛斯号', '13245672386');
  225. INSERT INTO `supplier` VALUES ('白胡子海贼团', 's002', '莫比迪克号', '19046575123');
  226. INSERT INTO `supplier` VALUES ('草帽海贼团', 's003', '黄金梅利号', '12300230989');
  227. INSERT INTO `supplier` VALUES ('罗杰海贼团', 's004', '奥尔>杰克森号', '11109998888');
  228. INSERT INTO `supplier` VALUES ('巴洛克工作社', 's005', '下大雨', '10010020003');
  229. INSERT INTO `supplier` VALUES ('九蛇海贼团', 's006', '九蛇岛', '10020030004');
  230. INSERT INTO `supplier` VALUES ('黑桃海贼团', 's007', '没提到', '12340056007');
  231. INSERT INTO `supplier` VALUES ('海绵宝宝', 's008', '菠萝屋', '12345678910');
  232. INSERT INTO `supplier` VALUES ('派大星的石头屋', 's009', '深海石头屋', '10010010201');
  233. INSERT INTO `supplier` VALUES ('广西药业', 's010', '广西柳州', '11100001011');
  234. SET FOREIGN_KEY_CHECKS = 1;

Java系统

entity包

实体集包,你有多少张表就需要在底下建多少个类

里面写各种属性、方法,只要不是int型,其余全定义为string型。

data包

连接数据库更新的包,里面写入各种sql语句,同样有多少个表需要更新就要写多少个类

里面写入各种更新的语句及成员 。

一个employeeDao类

  1. package data;
  2. import entity.Employee;
  3. import java.sql.ResultSet;
  4. import java.sql.SQLException;
  5. import java.util.ArrayList;
  6. import java.util.List;
  7. public class EmployeeDao {
  8. /** 成员方法1:通过员工编号,获取一个员工对象 */
  9. public static Employee getEmployeeByEmployeeNo(String employeeNo) {
  10. Employee employee = null;
  11. if (employeeNo != null) {
  12. // 构造按照员工编号查询员工的sql查询语句
  13. String sql = "select * from employee where employeeNo='" + employeeNo + "'";
  14. ResultSet rs = BaseDao1.executeQuery(sql);// 执行查询语句,并返回结果集
  15. // 处理查询结果
  16. try {
  17. if (rs.next()) {
  18. // 创建员工对象,保存员工信息
  19. employee = new Employee();
  20. employee.setEmployeeNo(rs.getString("employeeNo"));
  21. employee.setEmployeeName(rs.getString("employeeName"));
  22. employee.setSex(rs.getString("sex"));
  23. employee.setBasePay(rs.getInt("basePay"));
  24. employee.setPost(rs.getString("post"));
  25. employee.setPassword(rs.getString("password"));
  26. }
  27. } catch (SQLException e) {
  28. e.printStackTrace();
  29. }
  30. }
  31. return employee;// 返回员工对象
  32. }
  33. /** 成员方法2:通过sql查询语句,获取员工对象列表 */
  34. public static List<Employee> selectEmployeeList(String sql) {
  35. List<Employee> list = new ArrayList<Employee>();// 创建列表
  36. if (sql != null) {
  37. Employee employee = null;
  38. ResultSet rs = BaseDao1.executeQuery(sql);// 执行查询语句,并返回结果集
  39. try {
  40. while (rs.next()) {
  41. // 创建员工对象,保存员工信息
  42. employee = new Employee();
  43. employee.setEmployeeNo(rs.getString("employeeNo"));
  44. employee.setEmployeeName(rs.getString("employeeName"));
  45. employee.setSex(rs.getString("sex"));
  46. employee.setBasePay(rs.getInt("basePay"));
  47. employee.setPost(rs.getString("post"));
  48. employee.setPassword(rs.getString("password"));
  49. list.add(employee);
  50. }
  51. } catch (Exception e) {
  52. e.printStackTrace();
  53. }
  54. }
  55. return list;// 返回员工列表
  56. }
  57. /** 成员方法3:获取所有员工对象列表 */
  58. public static List<Employee> selectEmployeeList() {
  59. // 构造查询所有员工的sql查询语句
  60. String sql = "select * from employee";
  61. return selectEmployeeList(sql);// 返回员工列表
  62. }
  63. /** 成员方法4:按照字符属性查询条件,获取员工对象列表,重载方法 */
  64. public static List<Employee> selectEmployeeList(String field, String value) {
  65. // 构造默认的sql查询语句
  66. String sql = "select * from employee";
  67. if ((value != null & value.length() > 0) && field != null) {
  68. // 构造按照字符属性查询员工的sql查询语句,采用模糊查询
  69. sql = "select * from employee where " + field + " like '%" + value + "%'";
  70. }
  71. return selectEmployeeList(sql);// 返回员工列表
  72. }
  73. /** 成员方法5:按照整型查询条件,获取员工对象列表,重载方法 */
  74. public static List<Employee> selectEmployeeList(String field, int value) {
  75. // 构造默认的sql查询语句
  76. String sql = "select * from employee";
  77. if (field != null && value != 0) {
  78. // 构造按照整型属性查询员工的sql查询语句,采用区间查询
  79. sql = "select * from employee where " + field + "=" +value;
  80. }
  81. return selectEmployeeList(sql);// 返回员工列表
  82. }
  83. /** 成员方法6:添加新员工 */
  84. public static int insertEmployee(Employee Employee) {
  85. if (Employee != null) {
  86. // 获取员工信息
  87. String EmployeeNo = Employee.getEmployeeNo();
  88. String EmployeeName = Employee.getEmployeeName();
  89. String sex = Employee.getSex();
  90. String post = Employee.getPost();
  91. String password = Employee.getPassword();
  92. int basePay = Employee.getBasePay();
  93. // 构造添加员工的sql更新语句
  94. String sql = "insert into employee values('" + EmployeeNo + "','" + EmployeeName + "','" + sex + "'," +basePay+
  95. ", '"+ post + "','"+ password + "' )";
  96. return BaseDao1.executeUpdate(sql);// 执行更新语句
  97. } else {
  98. return -1;
  99. }
  100. }
  101. /** 成员方法7:修改指定员工信息 */
  102. public static int upDateEmployee(Employee Employee) {
  103. if (Employee != null) {
  104. // 获取员工信息
  105. String EmployeeNo = Employee.getEmployeeNo();
  106. String EmployeeName = Employee.getEmployeeName();
  107. String sex = Employee.getSex();
  108. String post = Employee.getPost();
  109. String password = Employee.getPassword();
  110. int basePay = Employee.getBasePay();
  111. // 构造修改员工的sql更新语句
  112. String sql = "update employee set employeeName='" + EmployeeName + "',sex='" + sex + "', post='" + post
  113. +"',password ='"+password + "',basePay=" + basePay + " where employeeNo='" + EmployeeNo + "'";
  114. return BaseDao1.executeUpdate(sql);// 执行更新语句
  115. } else {
  116. return -1;
  117. }
  118. }
  119. /** 成员方法8:删除指定员工信息 */
  120. public static int deleteEmployee(String EmployeeNo) {
  121. // 构造删除员工的sql更新语句
  122. String sql = "delete from employee where employeeNo='" + EmployeeNo + "'";
  123. return BaseDao1.executeUpdate(sql);// 执行更新语句
  124. }
  125. /** 成员方法9:清空所有员工信息 */
  126. public static void emptyEmployee() {
  127. // 构造清空员工的sql更新语句
  128. String sql = "delete from employee";
  129. BaseDao1.executeUpdate(sql);// 执行更新语句
  130. }
  131. }

Login包

里面写入java swing登录窗口的方法和连接数据库的方法

**一个handleLogin类 **

  1. package Login;
  2. import windows.MainFrame;
  3. import java.sql.*;
  4. import javax.swing.JOptionPane;
  5. public class HandleLogin {
  6. Connection con;//与特定数据库的连接(会话)。
  7. PreparedStatement preSql;//PreparedStatement是一个接口,preSql是一个接口引用,接口不能new对象,所以借用下方prepareStatement方法
  8. ResultSet rs;//表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。
  9. public HandleLogin(){
  10. con = GetDBConnection.connectDB("user","root","123456");//链接数据库
  11. }
  12. public Login queryVerify(Login loginModel) {
  13. String id = loginModel.getID();
  14. String pw = loginModel.getPassword();
  15. String sqlStr ="select id,password from register where "+
  16. "id = ? and password = ?";
  17. try {
  18. preSql = con.prepareStatement(sqlStr);//创建一个 PreparedStatement对象,用于将参数化的SQL语句发送到数据库
  19. preSql.setString(1,id);//将指定的参数设置为给定的Java String值。1代表sql语句中第一个?号,后面的参数代表给?赋的值
  20. preSql.setString(2,pw);//同上
  21. rs = preSql.executeQuery();
  22. if(rs.next()==true) {//最初,光标位于第一行之前,next方法将光标移动到下一行,并且由于在ResultSet对象中没有更多行时返回false
  23. loginModel.setLoginSuccess(true);//第一行有数据代表该ID和密码都存在,因此登录成功,并将loginSuccess设为true
  24. JOptionPane.showMessageDialog(null,"登录成功",//弹出一个标准对话框,提示用户获取值或通知他们某些东西。
  25. "恭喜",JOptionPane.WARNING_MESSAGE);
  26. MainFrame mainFrame = new MainFrame();
  27. }
  28. else {
  29. loginModel.setLoginSuccess(false);//第一行不存在代表ID或密码错误,并将loginSuccess设为false
  30. JOptionPane.showMessageDialog(null,"登录失败",//弹出一个标准对话框,提示用户获取值或通知他们某些东西。
  31. "登录失败,重新登录",JOptionPane.WARNING_MESSAGE);
  32. }
  33. con.close();
  34. }
  35. catch(SQLException e) {}
  36. return loginModel;
  37. }
  38. }

这个包建完后已经可以实现登录和注册了

windows包

这个包最复杂了,包含了查询和更新调用sql语句的方法,query是查询,upkeep是更新

** 一个employeeQuery类**

  1. package windows;
  2. import data.EmployeeDao;
  3. import entity.Employee;
  4. import java.awt.BorderLayout;
  5. import java.awt.GridBagConstraints;
  6. import java.awt.GridBagLayout;
  7. import java.awt.Insets;
  8. import java.awt.event.ActionEvent;
  9. import java.awt.event.ActionListener;
  10. import java.awt.event.ItemEvent;
  11. import java.awt.event.ItemListener;
  12. import java.awt.event.KeyAdapter;
  13. import java.util.List;
  14. import java.awt.event.KeyEvent;
  15. import javax.swing.JButton;
  16. import javax.swing.JComboBox;
  17. import javax.swing.JLabel;
  18. import javax.swing.JPanel;
  19. import javax.swing.JScrollPane;
  20. import javax.swing.JTable;
  21. import javax.swing.JTextField;
  22. import javax.swing.table.DefaultTableModel;
  23. public class EmployeeQuery extends PublicJFrame{
  24. /** 成员变量: */
  25. JLabel lb_query;// 声明查询标签
  26. JTextField tf_query;// 声明查询条件文本框
  27. JComboBox<String> cb_query;// 声明查询栏目组合框
  28. JButton bt_query;// 声明查询按钮
  29. private JTable table;// 声明表格
  30. // 调用方法,获取所有员工列表,并保存
  31. private List<Employee> list = EmployeeDao.selectEmployeeList();
  32. // 创建员工表栏目名称字符串
  33. private String[] tb_heads = { "员工编号 ", "员工名称 ", "性别", "职务", "基本工资" };
  34. // 员工表栏目名称对应的表字段
  35. private String[] fields = { "EmployeeNo", "EmployeeName", "sex", "post","basePay" };
  36. // 创建员工表格模型
  37. private DefaultTableModel model = new DefaultTableModel(
  38. new Object[][] {}, tb_heads);
  39. private String field = "EmployeeNo";// 设置默认的当前的查询字段
  40. String valueStr = " ";// 设置字符串类型查询字段的初始值
  41. int valueInt = 0;// 设置整型类型查询字段的初始值
  42. double valueDouble = 0.0;// 设置实型数据查询字段的初始值
  43. /** 构造方法:初始化界面 */
  44. EmployeeQuery() {
  45. this.setTitle("--员工查询-- ");
  46. this.setSize(1200, 500);
  47. JPanel queryPanel = createQueryPanel();
  48. this.add(queryPanel, BorderLayout.NORTH);
  49. JPanel tablePanel = createTablePanel();
  50. this.add(tablePanel, BorderLayout.CENTER);
  51. this.setLocationRelativeTo(null);
  52. this.setVisible(true);
  53. }
  54. /** 成员方法1:创建查询面板的方法 */
  55. private JPanel createQueryPanel() {
  56. JPanel queryPanel = new JPanel();
  57. queryPanel.setOpaque(false);//允许底层像素出现
  58. queryPanel.setLayout(new GridBagLayout());
  59. ((GridBagLayout) queryPanel
  60. .getLayout()).columnWidths = new int[] { 0, 100, 200,
  61. 120, 80, 80, 0 };
  62. ((GridBagLayout) queryPanel
  63. .getLayout()).columnWeights = new double[] { 0.5, 0.0,
  64. 0.0, 0.0, 0.0, 0.0, 0.5 };
  65. lb_query = new JLabel("请输入员工编号");
  66. queryPanel.add(lb_query,
  67. new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0,
  68. GridBagConstraints.EAST,
  69. GridBagConstraints.BOTH,
  70. new Insets(10, 10, 10, 10), 0, 0));
  71. tf_query = new JTextField();
  72. tf_query.requestFocus();
  73. // 为查询条件文本框,添加回车键事件监听器
  74. tf_query.addKeyListener(new KeyAdapter() {
  75. @Override
  76. public void keyTyped(KeyEvent arg0) {
  77. if (arg0.getKeyChar() == '\n') {
  78. // 调用“查询”按钮事件响应方法
  79. bn_query_actionPerformed();
  80. }
  81. }
  82. });
  83. queryPanel.add(tf_query,
  84. new GridBagConstraints(2, 0, 1, 1, 0.0, 0.0,
  85. GridBagConstraints.CENTER,
  86. GridBagConstraints.BOTH,
  87. new Insets(10, 0, 10, 10), 0, 0));
  88. cb_query = new JComboBox<String>(tb_heads);
  89. // 为查询栏目组合框,添加条目事件监听器
  90. cb_query.addItemListener(new ItemListener() {
  91. @Override
  92. public void itemStateChanged(ItemEvent arg0) {
  93. // 调用“查询栏目”组合框栏目状态被改变事件响应方法
  94. cb_query_itemStateChanged(arg0);
  95. }
  96. });
  97. queryPanel.add(cb_query,
  98. new GridBagConstraints(3, 0, 1, 1, 0.0, 0.0,
  99. GridBagConstraints.CENTER,
  100. GridBagConstraints.BOTH,
  101. new Insets(10, 0, 10, 10), 0, 0));
  102. bt_query = new JButton("查询 ");
  103. // 为“查询”按钮,添加单击事件监听器
  104. bt_query.addActionListener(new ActionListener() {
  105. @Override
  106. public void actionPerformed(ActionEvent arg0) {
  107. // 调用“查询”按钮事件响应方法
  108. bn_query_actionPerformed();
  109. }
  110. });
  111. queryPanel.add(bt_query,
  112. new GridBagConstraints(4, 0, 1, 1, 0.0, 0.0,
  113. GridBagConstraints.CENTER,
  114. GridBagConstraints.BOTH,
  115. new Insets(10, 0, 10, 10), 0, 0));
  116. JButton bn_close = new JButton("关闭");
  117. // 为“关闭”按钮,添加单击事件监听器
  118. bn_close.addActionListener(new ActionListener() {
  119. @Override
  120. public void actionPerformed(ActionEvent arg0) {
  121. dispose();// 关闭界面
  122. }
  123. });
  124. queryPanel.add(bn_close,
  125. new GridBagConstraints(5, 0, 1, 1, 0.0, 0.0,
  126. GridBagConstraints.CENTER,
  127. GridBagConstraints.BOTH,
  128. new Insets(10, 0, 10, 10), 0, 0));
  129. return queryPanel;// 返回“查询面板”
  130. }
  131. /** 成员方法2:创建表格面板的方法 */
  132. private JPanel createTablePanel() {
  133. // 创建表格面板,采用边界布局
  134. JPanel tablePanel = new JPanel(new BorderLayout(5, 5));
  135. JScrollPane scrollPane = new JScrollPane();// 创建滚动面板
  136. tablePanel.add(scrollPane);// 将表格面板添加到滚动面板上
  137. table = new JTable(model);// 创建表格,并采用指定的表格模型
  138. addRowToModel(list);
  139. scrollPane.setViewportView(table);
  140. return tablePanel;
  141. }
  142. /** 成员方法3:向表格模型,添加员工列表 */
  143. private void addRowToModel(List<Employee> list) {
  144. model.setRowCount(0);// 清除表格模型中的数据
  145. for (int i = 0; i < list.size(); i++) {
  146. Employee Employee = list.get(i);
  147. model.addRow(new Object[] { Employee.getEmployeeNo(),
  148. Employee.getEmployeeName(),
  149. Employee.getSex(),
  150. Employee.getPost(),
  151. Employee.getBasePay()});
  152. }
  153. }
  154. /** 成员方法4:查询栏目组合框状态被改变的事件响应方法 */
  155. private void cb_query_itemStateChanged(ItemEvent arg0) {
  156. if (arg0.getStateChange() == ItemEvent.SELECTED) {
  157. // 根据选择改变标签显示内容
  158. lb_query.setText("请输入" + (String) arg0.getItem() + ":");
  159. tf_query.setText("");
  160. // 获取组合框中选定的栏目名称
  161. for (int i = 0; i < tb_heads.length; i++) {
  162. if (arg0.getItem().equals(tb_heads[i])) {
  163. field = fields[i];// 保存对应的字段,作为当前被选定的字段
  164. }
  165. }
  166. list = EmployeeDao.selectEmployeeList();// 调用方法,获取所有商品列表
  167. addRowToModel(list);// 调用方法:将商品列表,添加到表格模型中
  168. tf_query.requestFocus();// 设置查询条件文本框,获得焦点
  169. }
  170. }
  171. /** 成员方法5:“修改”按钮单击事件响应方法 */
  172. private void bt_modify_actionPerformed() {
  173. switch (field) {
  174. case "EmployeeNo":
  175. case "EmployeeName":
  176. case "sex":
  177. case "post":
  178. // 获取字符串类型的查询条件
  179. valueStr = tf_query.getText();
  180. // 调用按照(字段名、字符串字段值)查询员工列表的方法,查询员工信息
  181. list = EmployeeDao.selectEmployeeList(field, valueStr);
  182. break;
  183. case "basePay":
  184. // 获取整型类型的查询条件
  185. if (tf_query.getText().equals("")) {
  186. tf_query.setText("0");
  187. }
  188. valueInt = new Integer(tf_query.getText()).intValue();
  189. // 调用按照(字段名、整型字段值)查询员工列表的方法,查询员工信息
  190. list = EmployeeDao.selectEmployeeList(field, valueInt);
  191. break;
  192. }
  193. addRowToModel(list);// 将查询获取的员工列表,添加到表格模型中
  194. }
  195. /**
  196. * 成员方法6“查询”按钮单击事件响应方法
  197. */
  198. private void bn_query_actionPerformed() {
  199. switch (field) {
  200. case "EmployeeNo":
  201. case "EmployeeName":
  202. case "sex":
  203. case "post":
  204. case "password":
  205. // 获取字符串类型的查询条件
  206. valueStr = tf_query.getText();
  207. // 调用按照(字段名、字符串字段值)查询员工列表的方法,查询员工信息
  208. list = EmployeeDao.selectEmployeeList(field, valueStr);
  209. break;
  210. case "basePay":
  211. // 获取整型类型的查询条件
  212. if (tf_query.getText().equals("")) {
  213. tf_query.setText("0");
  214. }
  215. valueInt = new Integer(tf_query.getText()).intValue();
  216. // 调用按照(字段名、整型字段值)查询员工列表的方法,查询员工信息
  217. list = EmployeeDao.selectEmployeeList(field, valueInt);
  218. break;
  219. }
  220. addRowToModel(list);// 将查询获取的员工列表,添加到表格模型中
  221. }
  222. /** 测试方法: */
  223. public static void main(String[] args) {
  224. new EmployeeQuery();
  225. }
  226. }

测试下

一个employeeUpkeep类

  1. package windows;
  2. import java.awt.BorderLayout;
  3. import java.awt.Color;
  4. import java.awt.Font;
  5. import java.awt.GridBagConstraints;
  6. import java.awt.GridBagLayout;
  7. import java.awt.Insets;
  8. import java.awt.event.ActionEvent;
  9. import java.awt.event.ActionListener;
  10. import java.awt.event.FocusAdapter;
  11. import java.awt.event.FocusEvent;
  12. import java.awt.event.MouseAdapter;
  13. import java.awt.event.MouseEvent;
  14. import java.util.List;
  15. import javax.swing.JButton;
  16. import javax.swing.JComboBox;
  17. import javax.swing.JLabel;
  18. import javax.swing.JOptionPane;
  19. import javax.swing.JPanel;
  20. import javax.swing.JScrollPane;
  21. import javax.swing.JSplitPane;
  22. import javax.swing.JTable;
  23. import javax.swing.JTextField;
  24. import javax.swing.border.EmptyBorder;
  25. import javax.swing.border.EtchedBorder;
  26. import javax.swing.border.TitledBorder;
  27. import javax.swing.table.DefaultTableModel;
  28. import CommoditySales.Constant;
  29. import data.EmployeeDao;
  30. import entity.Employee;
  31. public class EmployeeUpKeep extends PublicJFrame {
  32. /** 成员变量 */
  33. private JTextField tf_id;// 声明员工编号文本框
  34. private JTextField tf_name;// 声明员工名文本框
  35. private JComboBox<String> cb_type;// 声明员工类型组合框
  36. private JTextField tf_basePay;// 声明基本工资文本框
  37. private JTextField tf_post;// 声明职务文本框
  38. private JTextField tf_password;// 声明密码文本框
  39. // 声明添加、修改、取消、关闭、删除、清空按钮
  40. private JButton jb_insert, jb_update, jb_cancel, jb_close,
  41. jb_delete, jb_empty;
  42. private JTable table;// 声明表格
  43. // 创建员工表格模型
  44. private DefaultTableModel model = new DefaultTableModel(
  45. new Object[][] {}, new String[] { "员工编号", "员工姓名", "性别", "职务","基本工资","密码"});
  46. private List<Employee> list = EmployeeDao.selectEmployeeList();// 创建所有员工列表,并保存员工对象
  47. /** 构造方法:用于初始化界面 */
  48. EmployeeUpKeep() {
  49. // 界面设置
  50. this.setTitle("--员工信息维护--");
  51. setBounds(220, 100, 1300, 650);
  52. this.setResizable(false);
  53. this.setLocationRelativeTo(null);
  54. // 创建一个对话面板,其上放置一个外部分割面板,并将它设置为框架的内容面板
  55. JPanel dialogPane = new JPanel();
  56. dialogPane.setBorder(new EmptyBorder(5, 5, 5, 5));
  57. dialogPane.setBackground(new Color(198, 236, 253));
  58. dialogPane.setLayout(new BorderLayout());
  59. setContentPane(dialogPane);
  60. // 创建一个外部分割面板,水平左右放置组件。其中,左测放置一个内部分割面板,右测放置一个表格面板
  61. JSplitPane outerPane = new JSplitPane();// 创建外部分割面板
  62. outerPane.setOpaque(false);// 设置外部分割面板透明
  63. outerPane.setResizeWeight(0.1);// 设置外部分割面板宽度分配权限
  64. outerPane.setOrientation(JSplitPane.HORIZONTAL_SPLIT);//设置外部分割面板水平分配
  65. outerPane.setOneTouchExpandable(true);//设置外部分割面板可以有一个触发扩展
  66. dialogPane.add(outerPane, BorderLayout.CENTER);
  67. // 创建一个内部分割面板,垂直上下放置组件。其中,上方放置一个数据面板,下方放置一个按钮面板
  68. JSplitPane innerPane = new JSplitPane();// 创建内部分割面板
  69. innerPane.setOpaque(false);
  70. // 为一个内部分割面板设置边框说明
  71. innerPane.setBorder(new TitledBorder(
  72. new EtchedBorder(EtchedBorder.LOWERED, null, null),
  73. "员工信息维护", TitledBorder.LEADING, TitledBorder.TOP,
  74. new Font("微软雅黑", Font.PLAIN, 14),
  75. new Color(59, 59, 59)));
  76. innerPane.setResizeWeight(0.8);
  77. innerPane.setOrientation(JSplitPane.VERTICAL_SPLIT);//设置内部分割面板为垂直分配
  78. outerPane.setLeftComponent(innerPane);// 将内部分割面板设置在外部分割面板的左侧
  79. JPanel dataPanel = createDataPanel();// 调用创建数据面板方法,创建数据面板
  80. innerPane.setLeftComponent(dataPanel);// 将数据面板,设置在内部分割面板的左侧
  81. JPanel buttonPanel = createButtonPanel();// 调用创建按钮面板方法,创建按钮面板
  82. innerPane.setRightComponent(buttonPanel);// 将按钮面板设置在内部分割面板的下方
  83. JPanel tablePanel = createTablePanel();// 调用创建表格面板方法,创建表格面板
  84. outerPane.setRightComponent(tablePanel);// 将表格面板,设置在外部分割面板的右侧
  85. }
  86. /** 成员方法1:用于创建“数据面板"的方法 */
  87. private JPanel createDataPanel() {
  88. JPanel dataPanel = new JPanel(null);
  89. dataPanel.setBorder(new EmptyBorder(5, 5, 5, 10));
  90. dataPanel.setOpaque(false);
  91. JLabel jl_id = new JLabel("员工编号:");
  92. jl_id.setBounds(50, 20, 100, 25);
  93. dataPanel.add(jl_id);
  94. tf_id = new JTextField();
  95. tf_id.setBounds(140, 20, 170, 25);
  96. tf_id.setToolTipText("必须输入员工编号");
  97. tf_id.addFocusListener(new FocusAdapter() {
  98. @Override
  99. public void focusLost(FocusEvent e) {
  100. tf_id_focusLost();// 调用员工编号文本框加失去焦点事件响应方法
  101. }
  102. });
  103. dataPanel.add(tf_id);
  104. JLabel jl_name = new JLabel("员工姓名:");
  105. jl_name.setBounds(50, 60, 100, 25);
  106. dataPanel.add(jl_name);
  107. tf_name = new JTextField(10);
  108. tf_name.setBounds(140, 60, 170, 25);
  109. tf_name.setToolTipText("必须输入员工姓名");
  110. dataPanel.add(tf_name);
  111. tf_name.addFocusListener(new FocusAdapter() {//为员工名文本框添加失去焦点监听器
  112. @Override
  113. public void focusLost(FocusEvent e) {
  114. tf_name_focusLost();// 调用员工名文本框加失去焦点事件响应方法
  115. }
  116. });
  117. JLabel jl_type = new JLabel("性别:");
  118. jl_type.setBounds(50, 100, 150, 25);
  119. dataPanel.add(jl_type);
  120. cb_type = new JComboBox<String>(Constant.SEX);
  121. cb_type.setBounds(140, 100, 170, 25);
  122. dataPanel.add(cb_type);
  123. JLabel jl_author = new JLabel("基本工资:");
  124. jl_author.setBounds(50, 140, 150, 25);
  125. dataPanel.add(jl_author);
  126. tf_basePay = new JTextField(10);
  127. tf_basePay.setBounds(140, 140, 170, 25);
  128. dataPanel.add(tf_basePay);
  129. JLabel jl_translator = new JLabel("职务:");
  130. jl_translator.setBounds(50, 180, 150, 25);
  131. dataPanel.add(jl_translator);
  132. tf_post = new JTextField(10);
  133. tf_post.setBounds(140, 180, 170, 25);
  134. dataPanel.add(tf_post);
  135. JLabel jl_publisher = new JLabel("密码:");
  136. jl_publisher.setBounds(50, 220, 150, 25);
  137. dataPanel.add(jl_publisher);
  138. tf_password = new JTextField(10);
  139. tf_password.setBounds(140, 220, 170, 25);
  140. dataPanel.add(tf_password);
  141. return dataPanel;
  142. }
  143. /** 成员方法2:用于创建"按钮面板"的方法 */
  144. private JPanel createButtonPanel() {
  145. JPanel buttonPanel = new JPanel(new GridBagLayout());//创建按钮面板,用网格包布局
  146. buttonPanel.setOpaque(false);
  147. ((GridBagLayout) buttonPanel
  148. .getLayout()).columnWidths = new int[] { 0, 60, 60,
  149. 60, 60, 60, 0 };// 设置网格包布局各列宽度
  150. ((GridBagLayout) buttonPanel
  151. .getLayout()).columnWeights = new double[] { 0.5, 0.0,
  152. 0.0, 0.0, 0.0, 0.0, 0.5 };// 设置网格包布局各列的宽度权限
  153. jb_insert = new JButton("添加");
  154. jb_insert.addActionListener(new ActionListener() {//为添加按钮添加单击事件监听器
  155. @Override
  156. public void actionPerformed(ActionEvent e) {
  157. sb_insert_actionPerformed();// 调用添加按钮事件响应方法,添加员工
  158. }
  159. });
  160. buttonPanel.add(jb_insert,
  161. new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0,
  162. GridBagConstraints.CENTER,
  163. GridBagConstraints.BOTH,
  164. new Insets(0, 0, 0, 5), 0, 0));
  165. jb_update = new JButton("修改");
  166. jb_update.addActionListener(new ActionListener() {//为修改按钮添加单击事件监听器
  167. @Override
  168. public void actionPerformed(ActionEvent e) {
  169. jb_update_actionPerformed();// 调用修改按钮事件响应方法,修改员工信息
  170. }
  171. });
  172. buttonPanel.add(jb_update,
  173. new GridBagConstraints(2, 0, 1, 1, 0.0, 0.0,
  174. GridBagConstraints.CENTER,
  175. GridBagConstraints.BOTH,
  176. new Insets(0, 0, 0, 5), 0, 0));
  177. jb_delete = new JButton("删除");
  178. jb_delete.addActionListener(new ActionListener() {// 为删除按钮添加单击事件监听器
  179. @Override
  180. public void actionPerformed(ActionEvent e) {
  181. jb_delete_actionPerformed();// 调用删除按钮事件响应方法,删除员工对象
  182. }
  183. });
  184. buttonPanel.add(jb_delete,
  185. new GridBagConstraints(3, 0, 1, 1, 0.0, 0.0,
  186. GridBagConstraints.CENTER,
  187. GridBagConstraints.BOTH,
  188. new Insets(0, 0, 0, 5), 0, 0));
  189. jb_cancel = new JButton("取消");
  190. jb_cancel.addActionListener(new ActionListener() {//为取消按钮添加单击事件监听器
  191. @Override
  192. public void actionPerformed(ActionEvent e) {
  193. del_content();// 调用删除内容方法,清除数据面板中的数据
  194. }
  195. });
  196. buttonPanel.add(jb_cancel,
  197. new GridBagConstraints(4, 0, 1, 1, 0.0, 0.0,
  198. GridBagConstraints.CENTER,
  199. GridBagConstraints.BOTH,
  200. new Insets(0, 0, 0, 5), 0, 0));
  201. jb_close = new JButton("关闭");
  202. jb_close.addActionListener(new ActionListener() {//为关闭按钮添加单击事件监听器
  203. @Override
  204. public void actionPerformed(ActionEvent e) {
  205. dispose();// 关闭员工维护界面
  206. }
  207. });
  208. buttonPanel.add(jb_close,
  209. new GridBagConstraints(5, 0, 1, 1, 0.0, 0.0,
  210. GridBagConstraints.CENTER,
  211. GridBagConstraints.BOTH,
  212. new Insets(0, 0, 0, 5), 0, 0));
  213. jb_empty = new JButton("清空所有员工");
  214. jb_empty.addActionListener(new ActionListener() {//为清空按钮添加单击事件监听器
  215. @Override
  216. public void actionPerformed(ActionEvent e) {
  217. jb_empty_actionPerformed();// 调用清空按钮事件响应方法,清空所有员工
  218. }
  219. });
  220. buttonPanel.add(jb_empty,
  221. new GridBagConstraints(2, 1, 3, 1, 0.0, 0.0,
  222. GridBagConstraints.CENTER,
  223. GridBagConstraints.BOTH,
  224. new Insets(25, 0, 0, 0), 0, 0));
  225. return buttonPanel;
  226. }
  227. /** 成员方法3:用于创建表格面板的方法 */
  228. private JPanel createTablePanel() {
  229. // 创建表格面板,采用边界布局
  230. JPanel tablePanel = new JPanel(new BorderLayout(5, 5));
  231. JScrollPane scrollPane = new JScrollPane();// 创建滚动面板
  232. tablePanel.add(scrollPane);// 将表格面板添加到滚动面板上
  233. table = new JTable(model);// 创建表格,并采用指定的表格模型
  234. for (int i = 0; i < list.size(); i++) {
  235. Employee Employee = list.get(i);
  236. model.addRow(new Object[] { Employee.getEmployeeNo(),
  237. Employee.getEmployeeName(),
  238. Employee.getSex(),
  239. Employee.getPost(),
  240. Employee.getBasePay(),
  241. Employee.getPassword()
  242. });
  243. }
  244. table.addMouseListener(new MouseAdapter() {// 为表格添加鼠标事件监听器
  245. @Override
  246. public void mouseClicked(MouseEvent e) {
  247. // 调用表格鼠标单击事件响应方法,向左侧数据面板显示选中员工
  248. table_mouseClicked();
  249. }
  250. });
  251. scrollPane.setViewportView(table);
  252. return tablePanel;
  253. }
  254. /** 成员方法4:用于清除数据面板中的数据 */
  255. public void del_content() {
  256. tf_id.setText("");
  257. tf_name.setText("");
  258. cb_type.setSelectedIndex(0);
  259. tf_basePay.setText("");
  260. tf_post.setText("");
  261. tf_password.setText("");
  262. tf_id.setEditable(true);
  263. }
  264. /** 成员方法5:员工编号文本框失去焦点事件响应具体方法 */
  265. public void tf_id_focusLost() {
  266. // 通过员工编号,获取员工对象
  267. Employee Employee = EmployeeDao.getEmployeeByEmployeeNo(tf_id.getText().trim());
  268. if (Employee != null) {// 判断员工对象是否存在,若存在,清除数据,重新输入员工编号
  269. JOptionPane.showMessageDialog(null,
  270. "员工编号已经存在,请重新输入员工编号!");
  271. del_content(); // 清除数据面板中的数据
  272. }
  273. }
  274. /** 成员方法6:员工名文本框失去焦点事件响应具体方法 */
  275. public void tf_name_focusLost() {
  276. Employee Employee = EmployeeDao.getEmployeeByEmployeeNo(tf_name.getText().trim());
  277. if (Employee != null) {
  278. JOptionPane.showMessageDialog(null, "员工名已经存在,请重新输入员工名!");
  279. tf_name.setText("");
  280. }
  281. }
  282. /** 成员方法7:用于更新表格数据 */
  283. public void refresh() {
  284. model.setRowCount(0);// 清除表格模型中的数据
  285. list = EmployeeDao.selectEmployeeList();// 获取员工对象列表
  286. for (int i = 0; i < list.size(); i++) {// 重新项表格模型中添加数据
  287. Employee Employee = list.get(i);
  288. model.addRow(new Object[] { Employee.getEmployeeNo(),
  289. Employee.getEmployeeName(),
  290. Employee.getSex(),
  291. Employee.getPost(),
  292. Employee.getBasePay(),
  293. Employee.getPassword()
  294. });
  295. }
  296. del_content();// 清除数据面板中的数据
  297. }
  298. /** 成员方法8:表格鼠标单击事件响应方法 */
  299. public void table_mouseClicked() {
  300. // 获取选中员工的信息
  301. Employee Employee_old = list.get(table.getSelectedRow());
  302. // 在数据面板中设置对应的员工数据
  303. tf_id.setText(Employee_old.getEmployeeNo());
  304. tf_name.setText(Employee_old.getEmployeeName());
  305. cb_type.setSelectedItem(Employee_old.getSex());
  306. tf_basePay.setText(String.valueOf(Employee_old.getBasePay()));
  307. tf_password.setText(Employee_old.getPassword());
  308. tf_post.setText(Employee_old.getPost());
  309. tf_id.setEditable(false);// 设置读者员工文本框不可编辑
  310. }
  311. /** 成员方法9:添加新员工方法 */
  312. public void sb_insert_actionPerformed() {
  313. Employee Employee = new Employee();// 创建一个员工对象
  314. // 设置员工对象的属性值
  315. Employee.setEmployeeNo(tf_id.getText().trim());
  316. Employee.setEmployeeName(tf_name.getText().trim());
  317. Employee.setSex(cb_type.getSelectedItem().toString());
  318. Employee.setBasePay(new Integer(tf_basePay.getText().trim()));
  319. Employee.setPassword(tf_password.getText().trim());
  320. Employee.setPost(tf_post.getText().trim());
  321. // 判断员工名或员工编号不允许为空?若空,则给出提示,并返回
  322. if (tf_name.getText().trim().equals("")
  323. || tf_id.getText().trim().equals("")) {
  324. JOptionPane.showMessageDialog(null, "员工信息不能为空!");
  325. return;
  326. } else {// 若不空,则执行添加员工对象操作
  327. int i = EmployeeDao.insertEmployee(Employee);// 执行添加操作
  328. if (i == 1) {// 判断添加操作是否成功?若成功,则向表格模型添加这条数据
  329. model.addRow(new Object[] { Employee.getEmployeeNo(),
  330. Employee.getEmployeeName(),
  331. Employee.getSex(),
  332. Employee.getPost(),
  333. Employee.getBasePay(),
  334. Employee.getPassword()
  335. });
  336. refresh();
  337. }
  338. del_content();
  339. }
  340. }
  341. /** 成员方法10:修改员工信息按钮事件响应方法 */
  342. public void jb_update_actionPerformed() {
  343. Employee Employee = new Employee();// 创建一个员工对象
  344. Employee.setEmployeeNo(tf_id.getText().trim());
  345. Employee.setEmployeeName(tf_name.getText().trim());
  346. Employee.setSex(cb_type.getSelectedItem().toString());
  347. Employee.setBasePay(new Integer(tf_basePay.getText().trim()));
  348. Employee.setPassword(tf_password.getText().trim());
  349. Employee.setPost(tf_post.getText().trim());
  350. if (tf_name.getText().trim().equals("")
  351. || tf_id.getText().trim().equals("")) {
  352. JOptionPane.showMessageDialog(null, "员工信息不能为空!");
  353. return;
  354. } else {// 若不空,则执行添加员工对象操作
  355. int i = EmployeeDao.upDateEmployee(Employee);
  356. if (i == 1) {
  357. JOptionPane.showMessageDialog(null, "员工信息修改成功!");
  358. }
  359. refresh();// 更新表格内容
  360. del_content();
  361. }
  362. }
  363. /** 成员方法11:删除员工 信息 */
  364. public void jb_delete_actionPerformed() {
  365. String id = tf_id.getText().trim(); // 获取用户编号
  366. // 调用确认对话框,询问是否删除员工?
  367. int m = JOptionPane.showConfirmDialog(null, "你确认要删除这条员工信息吗?",
  368. "删除员工信息", JOptionPane.YES_NO_OPTION);
  369. if (m == JOptionPane.YES_OPTION) {// 如果确定,则执行删除操作
  370. if (EmployeeDao.deleteEmployee(id) == 1) {// 执行用户删除操作
  371. refresh();// 更新表格内容
  372. JOptionPane.showMessageDialog(null, "员工信息删除成功!");
  373. }
  374. del_content();// 清除数据面板内容
  375. }
  376. }
  377. /** 成员方法12:删除所有员工信息 */
  378. public void jb_empty_actionPerformed() {
  379. int m = JOptionPane.showConfirmDialog(null, "你确认要删除所有员工信息吗?",
  380. "清空员工信息", JOptionPane.YES_NO_OPTION);
  381. if (m == JOptionPane.YES_OPTION) {
  382. int n = JOptionPane.showConfirmDialog(null,
  383. "真的确认清空所有员工数据吗?", "清空员工信息再次确认",
  384. JOptionPane.YES_NO_OPTION);
  385. if (n == JOptionPane.YES_OPTION) {
  386. EmployeeDao.emptyEmployee();
  387. refresh();// 更新表格内容
  388. del_content();// 清除数据面板内容
  389. }
  390. }
  391. }
  392. // 测试方法:用于员工维护的测试
  393. public static void main(String[] args) {
  394. new EmployeeUpKeep();
  395. }
  396. }

测试

最后一个删除所有员工就不试了哈,好难重新插回去的。。

主系统类

一个mainfram类

  1. package windows;
  2. import java.awt.*;
  3. import java.awt.event.*;
  4. import javax.swing.*;
  5. import javax.swing.border.BevelBorder;
  6. import Login.LoginView;
  7. import data.BaseDao1;
  8. public class MainFrame extends PublicJFrame {
  9. /** 成员变量 */
  10. private JMenuItem mi_inventory_upkeep;// 声明库存维护菜单项
  11. private JMenuItem mi_stock_upkeep;// 声明进货维护菜单项
  12. private JMenuItem mi_supplier_upkeep;// 声明员工维护菜单项
  13. private JMenuItem mi_item_upkeep;// 声明商品维护菜单项
  14. private JMenuItem mi_employee_upkeep;//声明员工维护菜单
  15. private JMenuItem mi_item_query;// 声明商品查询菜单项
  16. private JMenuItem mi_employee_query;// 声明员工查询菜单项
  17. private JMenuItem mi_inventory_query;// 声明库存查询菜单项
  18. private JMenuItem mi_sale_query;// 声明销售查询菜单项
  19. private JMenuItem mi_stock_query;// 声明进货查询菜单项
  20. private JMenuItem mi_supplier_query;// 声明供货商查询菜单项
  21. private JMenuItem mi_exit;// 声明退出系统菜单项
  22. private JButton bt_employee_upkeep;// 声明读者维护按钮
  23. private JButton bt_book_upkeep;// 声明商品维护按钮
  24. private JButton bt_reader_query;// 声明读者查询按钮
  25. private JButton bt_book_query;// 声明商品查询按钮
  26. private JButton bt_exit;// 声明退出系统按钮
  27. /** 构造方法:系统主界面初始化方法 */
  28. public MainFrame() {
  29. //第1步:系统主界面设置
  30. this.setTitle("商品销售管理系统");// 设置主界面标题
  31. this.setBounds(520,0,1000,1050);
  32. //this.setExtendedState(Frame.MAXIMIZED_BOTH);// 设置主界面窗口最大化
  33. this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  34. JPanel contentPane = new JPanel(){//设置背景图片
  35. @Override
  36. public void paint(Graphics g){
  37. ImageIcon icon = new ImageIcon("images/5.png");
  38. Image image = icon.getImage();
  39. g.drawImage(image,0,0,null);
  40. }
  41. };
  42. this.add(contentPane);
  43. this.setVisible(true);
  44. //第2步:创建、设置菜单栏。先调用创建系统菜单栏方法,创建系统菜单栏,再在主界面设置菜单栏
  45. this.setJMenuBar(createMenuBar());
  46. //第3步: 创建、设置工具栏。先调用创建系统工具栏方法,创建系统工具栏,再将工具栏添加到界面的上方
  47. this.add(createToolBar(),BorderLayout.NORTH);
  48. this.setVisible(true);
  49. this.setPurView(LoginView.a);
  50. }
  51. /** 成员方法1:创建系统菜单栏方法 */
  52. private JMenuBar createMenuBar() {
  53. // 第1步:创建菜单栏对象
  54. JMenuBar menuBar = new JMenuBar();
  55. //第2步:创建菜单。如基础维护菜单,又包含用户维护、读者维护、商品维护菜单项
  56. JMenu menu_upkeep = new JMenu("基础维护"); // 创建"基础维护"菜单
  57. //第3步:创建菜单项,并为菜单项设置单击事件监听器
  58. mi_supplier_upkeep = new JMenuItem("供应商信息维护"); // 创建“用户维护”菜单项
  59. mi_supplier_upkeep.addActionListener(new ActionListener() {//添加单击事件监听器
  60. @Override
  61. public void actionPerformed(ActionEvent e) {
  62. supplier_upkeep_actionPerformed();// 调用“供应商信息维护”响应方法
  63. }
  64. });
  65. //第4步:将菜单项添加到菜单上
  66. menu_upkeep.add(mi_supplier_upkeep);// 将“供应商信息维护”菜单项添加到“基础维护”菜单
  67. mi_item_upkeep = new JMenuItem("商品信息维护"); // 创建"商品维护"菜单项
  68. mi_item_upkeep.addActionListener(new ActionListener() {
  69. @Override
  70. public void actionPerformed(ActionEvent e) {
  71. item_upkeep_actionPerformed();// 调用"商品维护"响应方法
  72. }
  73. });
  74. menu_upkeep.add(mi_item_upkeep);
  75. mi_stock_upkeep = new JMenuItem("进货信息维护"); // 创建"商品维护"菜单项
  76. mi_stock_upkeep.addActionListener(new ActionListener() {
  77. @Override
  78. public void actionPerformed(ActionEvent e) {
  79. stock_upkeep_actionPerformed();// 调用"商品维护"响应方法
  80. }
  81. });
  82. menu_upkeep.add(mi_stock_upkeep);
  83. mi_inventory_upkeep = new JMenuItem("库存信息维护"); // 创建"商品维护"菜单项
  84. mi_inventory_upkeep.addActionListener(new ActionListener() {
  85. @Override
  86. public void actionPerformed(ActionEvent e) {
  87. inventory_upkeep_actionPerformed();// 调用"商品维护"响应方法
  88. }
  89. });
  90. menu_upkeep.add(mi_inventory_upkeep);
  91. mi_employee_upkeep = new JMenuItem("员工信息维护"); // 创建"商品维护"菜单项
  92. mi_employee_upkeep.addActionListener(new ActionListener() {
  93. @Override
  94. public void actionPerformed(ActionEvent e) {
  95. employee_upkeep_actionPerformed();// 调用"商品维护"响应方法
  96. }
  97. });
  98. menu_upkeep.add(mi_employee_upkeep);
  99. //第5步:将菜单添加到菜单栏上
  100. menuBar.add(menu_upkeep);// 将"基础维护"菜单添加到系统菜单栏
  101. JMenu menu_query = new JMenu("查询统计"); // 创建"查询统计"菜单
  102. mi_item_query = new JMenuItem("商品查询"); // 创建"商品查询"菜单项
  103. mi_item_query.addActionListener(new ActionListener() {
  104. @Override
  105. public void actionPerformed(ActionEvent e) {
  106. item_query_actionPerformed();// 调用"商品查询"响应方法
  107. }
  108. });
  109. menu_query.add(mi_item_query);
  110. mi_employee_query = new JMenuItem("员工查询"); // 创建"读者查询"菜单项
  111. mi_employee_query.addActionListener(new ActionListener() {
  112. @Override
  113. public void actionPerformed(ActionEvent e) {
  114. employee_query_actionPerformed();// 调用"读者查询"响应方法
  115. }
  116. });
  117. menu_query.add(mi_employee_query);
  118. mi_inventory_query = new JMenuItem("库存查询"); // 创建"读者查询"菜单项
  119. mi_inventory_query.addActionListener(new ActionListener() {
  120. @Override
  121. public void actionPerformed(ActionEvent e) {
  122. inventory_query_actionPerformed();// 调用"读者查询"响应方法
  123. }
  124. });
  125. menu_query.add(mi_inventory_query);
  126. mi_sale_query = new JMenuItem("销售查询"); // 创建"销售查询"菜单项
  127. mi_sale_query.addActionListener(new ActionListener() {
  128. @Override
  129. public void actionPerformed(ActionEvent e) {
  130. sale_query_actionPerformed();// 调用"读者查询"响应方法
  131. }
  132. });
  133. menu_query.add(mi_sale_query);
  134. mi_stock_query = new JMenuItem("进货查询"); // 创建"进货查询"菜单项
  135. mi_stock_query.addActionListener(new ActionListener() {
  136. @Override
  137. public void actionPerformed(ActionEvent e) {
  138. stock_query_actionPerformed();// 调用"读者查询"响应方法
  139. }
  140. });
  141. menu_query.add(mi_stock_query);
  142. mi_supplier_query = new JMenuItem("供货商查询"); // 创建"供货商查询"菜单项
  143. mi_supplier_query.addActionListener(new ActionListener() {
  144. @Override
  145. public void actionPerformed(ActionEvent e) {
  146. supplier_query_actionPerformed();// 调用"读者查询"响应方法
  147. }
  148. });
  149. menu_query.add(mi_supplier_query);
  150. menuBar.add(menu_query);//查询菜单栏
  151. JMenu menu_management = new JMenu("系统管理");// 创建"系统管理"菜单
  152. mi_exit = new JMenuItem("退出系统"); // 创建"退出系统"菜单项
  153. mi_exit.addActionListener(new ActionListener() {
  154. @Override
  155. public void actionPerformed(ActionEvent e) {
  156. exit_actionPerformed();// 调用"退出系统"响应方法
  157. }
  158. });
  159. menu_management.add(mi_exit);
  160. menuBar.add(menu_management);
  161. //第6步:返回菜单栏。
  162. return menuBar;
  163. }
  164. /** 成员方法2: 创建工具栏方法 */
  165. private JToolBar createToolBar() {
  166. //第1步:创建、设置工具栏
  167. JToolBar toolBar = new JToolBar("商品管理系统工具栏");// 创建工具栏对象
  168. toolBar.setFloatable(false); // 设置工具栏不可浮动
  169. // 设置工具栏边框导角方式
  170. toolBar.setBorder(new BevelBorder(BevelBorder.LOWERED));
  171. //第2步: 创建、设置工具栏上的快捷按钮
  172. bt_employee_upkeep = new JButton("员工维护");// 创建"读者维护"按钮
  173. // 创建"读者维护"图标
  174. ImageIcon icon_reader_upkeep = new ImageIcon("images/reader_upkeep.png");
  175. bt_employee_upkeep.setIcon(icon_reader_upkeep);// 为"读者维护"按钮设置图标
  176. bt_employee_upkeep.setToolTipText("员工维护");// 为"读者维护"按钮设置提示
  177. // 将"读者维护"按钮注册单击事件监听器
  178. bt_employee_upkeep.addActionListener(new ActionListener() {
  179. @Override
  180. public void actionPerformed(ActionEvent e) {
  181. employee_upkeep_actionPerformed();// 调用"读者维护’响应方法
  182. }
  183. });
  184. //第3步:将按钮添加到工具栏上
  185. toolBar.add(bt_employee_upkeep);// 将“读者维护”按钮添加到工具栏
  186. bt_book_upkeep = new JButton("商品信息维护");
  187. ImageIcon icon_book_upkeep = new ImageIcon("images/book_upkeep.png");
  188. bt_book_upkeep.setIcon(icon_book_upkeep);
  189. toolBar.add(bt_book_upkeep);
  190. bt_book_upkeep.addActionListener(new ActionListener() {
  191. @Override
  192. public void actionPerformed(ActionEvent e) {
  193. item_upkeep_actionPerformed();// 调用“商品维护”响应方法
  194. }
  195. });
  196. bt_reader_query = new JButton("员工查询");
  197. ImageIcon icon_reader_query = new ImageIcon("images/reader_query.png");
  198. bt_reader_query.setIcon(icon_reader_query);
  199. toolBar.add(bt_reader_query);
  200. bt_reader_query.addActionListener(new ActionListener() {
  201. @Override
  202. public void actionPerformed(ActionEvent e) {
  203. employee_query_actionPerformed();// 调用“读者查询”响应方法
  204. }
  205. });
  206. bt_book_query = new JButton("商品查询");
  207. ImageIcon icon_book_query = new ImageIcon("images/book_query.png");
  208. bt_book_query.setIcon(icon_book_query);
  209. toolBar.add(bt_book_query);
  210. bt_book_query.addActionListener(new ActionListener() {
  211. @Override
  212. public void actionPerformed(ActionEvent e) {
  213. item_query_actionPerformed();// 调用“商品查询”响应方法
  214. }
  215. });
  216. bt_exit = new JButton("退出系统");
  217. ImageIcon icon_exit = new ImageIcon("images/exit.png");
  218. bt_exit.setIcon(icon_exit);
  219. toolBar.add(bt_exit);
  220. bt_exit.addActionListener(new ActionListener() {
  221. @Override
  222. public void actionPerformed(ActionEvent e) {
  223. exit_actionPerformed();// 调用“退出系统"响应方法
  224. }
  225. });
  226. //第4步:返回工具栏
  227. return toolBar;
  228. }
  229. /** 成员方法3:设置系统功能使用权限的方法 */
  230. void setPurView(String purView) {
  231. switch (purView) {
  232. case "0"://用户权限为0,为操作员
  233. mi_supplier_upkeep.setEnabled(false);//设置“用户维护”菜单项不可用
  234. mi_item_upkeep.setEnabled(false);//设置“用户维护”菜单项不可用
  235. mi_stock_upkeep.setEnabled(false);//设置“用户维护”菜单项不可用
  236. mi_inventory_upkeep.setEnabled(false);//设置“用户维护”菜单项不可用
  237. mi_item_query.setEnabled(false);// 声明商品查询菜单项
  238. mi_employee_query.setEnabled(false);// 声明员工查询菜单项
  239. mi_inventory_query.setEnabled(false);// 声明库存查询菜单项
  240. mi_sale_query.setEnabled(false);// 声明销售查询菜单项
  241. mi_stock_query.setEnabled(false);// 声明进货查询菜单项
  242. mi_supplier_query.setEnabled(false);// 声明供货商查询菜单项
  243. bt_book_upkeep.setEnabled(false);
  244. bt_employee_upkeep.setEnabled(false);
  245. mi_employee_upkeep.setEnabled(false);
  246. break;
  247. case "1"://用户权限为1,为管理员
  248. break;
  249. default://用户权限为其他,为一般访客
  250. bt_reader_query.setEnabled(false);
  251. mi_supplier_upkeep.setEnabled(false);//设置“用户维护”菜单项不可用
  252. mi_item_upkeep.setEnabled(false);//设置“用户维护”菜单项不可用
  253. mi_stock_upkeep.setEnabled(false);//设置“用户维护”菜单项不可用
  254. mi_inventory_upkeep.setEnabled(false);//设置“用户维护”菜单项不可用
  255. mi_item_query.setEnabled(false);// 声明商品查询菜单项
  256. mi_employee_query.setEnabled(false);// 声明员工查询菜单项
  257. mi_inventory_query.setEnabled(false);// 声明库存查询菜单项
  258. mi_sale_query.setEnabled(false);// 声明销售查询菜单项
  259. mi_stock_query.setEnabled(false);// 声明进货查询菜单项
  260. mi_supplier_query.setEnabled(false);// 声明供货商查询菜单项
  261. bt_book_upkeep.setEnabled(false);
  262. bt_employee_upkeep.setEnabled(false);
  263. mi_employee_upkeep.setEnabled(false);
  264. }
  265. }
  266. /** 成员方法4:供应商信息维护响应方法 */
  267. private void supplier_upkeep_actionPerformed() {
  268. new SupplierUpKeep();// 创建“供应商信息维护”界面
  269. }
  270. /** 成员方法5:进货信息响应方法 */
  271. private void stock_upkeep_actionPerformed() {
  272. new StockUpKeep();// 创建“进货信息维护”界面
  273. }
  274. /** 成员方法6:库存信息响应方法 */
  275. private void inventory_upkeep_actionPerformed() {
  276. new InventoryUpKeep();// 创建“进货信息维护”界面
  277. }
  278. /** 成员方法7:员工信息响应方法 */
  279. private void employee_upkeep_actionPerformed() {
  280. new EmployeeUpKeep();// 创建“进货信息维护”界面
  281. }
  282. /** 成员方法8:商品维护响应方法 */
  283. private void item_upkeep_actionPerformed() {
  284. new ItemUpKeep();// 创建“商品维护”界面
  285. }
  286. /** 成员方法9:商品查询响应方法 */
  287. private void item_query_actionPerformed() {
  288. new ItemQuery();// 创建“商品查询”界面
  289. }
  290. /** 成员方法10:员工查询响应方法 */
  291. private void employee_query_actionPerformed() {
  292. new EmployeeQuery();// 创建“员工查询”界面
  293. }
  294. /** 成员方法11:库存查询响应方法 */
  295. private void inventory_query_actionPerformed() {
  296. new InventoryQuery();// 创建“员工查询”界面
  297. }
  298. /** 成员方法12:销售查询响应方法 */
  299. private void sale_query_actionPerformed() {
  300. new SaleQuery();// 创建“员工查询”界面
  301. }
  302. /** 成员方法13:进货查询响应方法 */
  303. private void stock_query_actionPerformed() {
  304. new StockQuery();// 创建“员工查询”界面
  305. }
  306. /** 成员方法14:供货商查询响应方法 */
  307. private void supplier_query_actionPerformed() {
  308. new SupplierQuery();// 创建“员工查询”界面
  309. }
  310. /** 成员方法15:退出系统响应方法 */
  311. private void exit_actionPerformed() {
  312. BaseDao1.close();// 关闭与数据库的连接
  313. System.exit(0);// 退出系统
  314. }
  315. // 测试方法:用于主界面的测试
  316. public static void main(String args[]) {
  317. new MainFrame();// 创建系统主界面匿名对象
  318. }
  319. }

**测试 **

因为赶时间做出来的,许多窗口不是很好看,图片很单一,以后有时间再美化下,或者感兴趣的你们也可以试着美化下。

有任何问题可以问我哦。

标签: java mysql 开发语言

本文转载自: https://blog.csdn.net/qq_59689127/article/details/122180381
版权归原作者 海绵宝宝养的的小窝 所有, 如有侵权,请联系我们删除。

“Java swing+Mysql商品销售管理系统”的评论:

还没有评论