数据库大作业基于Mybatis + Swing的办公室耗材管理系统源码+数据库

办公室耗材管理系统


✨界面展示


主界面

在这里插入图片描述


登录界面

在这里插入图片描述

在这里插入图片描述


选择功能模块

在这里插入图片描述


审核

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


员工管理

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


耗材管理

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


✨项目配置

/**
 * @author Flat-White
 */

开发环境

  • MySQL5.7

  • jdk1.8

  • Mybatis

  • JFormDesigner(GUI)


maven依赖

    <dependencies>
    <!--        mysql驱动-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.49</version>
    </dependency>
    <!--        mybatis-->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.7</version>
    </dependency>
    <!--        junit-->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>3.8.2</version>
        <scope>test</scope>
    </dependency>
    <!--        commons-lang3-->
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.12.0</version>
    </dependency>
</dependencies>

mybatis-config

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <properties resource="db.properties"/>
    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
    <typeAliases>
        <package name="com.ocms.pojo"/>
    </typeAliases>
    <environments default="development">
    <environment id="development">
        <transactionManager type="JDBC"/>
        <dataSource type="POOLED">
            <property name="driver" value="${driver}"/>
            <property name="url" value="${url}"/>
            <property name="username" value="${username}"/>
            <property name="password" value="${password}"/>
        </dataSource>
    </environment>
    </environments>
    <mappers>
        <package name="com.ocms.dao"/>
    </mappers>
</configuration>

✨Admin端功能概述


登陆


审核

  • 同意申请
  • 拒绝申请

查看申请情况

  • 查询所有申请情况
  • 查询未处理申请
  • 查询某员工领用情况

员工管理

  • 查询所有员工信息
  • 修改员工信息
  • 新增员工
  • 删除员工

耗材管理

  • 查询所有耗材信息
  • 修改耗材信息
  • 新增耗材
  • 删除耗材

✨接口总览


Admin interface

package com.ocms.dao;

import com.ocms.pojo.Admin;
import com.ocms.pojo.Apply;
import com.ocms.pojo.Consume;
import com.ocms.pojo.Staff;

import java.util.List;
import java.util.Map;

/**
 * @author Flat-White
 */
public interface AdminMapper {

    /**
     * 管理员登陆
     * @param map adminAccount adminPasswd
     * @return Admin Object
     */
    Admin adminLogin(Map<String, Object> map);

    /**
     * 管理员获取apply中相应的staId
     * @param map staId
     * @return staId
     */
    int adminGetStaIdByApplyId(Map<String, Object> map);

    /**
     * 管理员同意申请
     * @param map applyId adminId applyNote
     * @return update success->1 / fail -> 0
     */
    int adminAgreeApply(Map<String, Object> map);

    /**
     * 管理员拒绝申请
     * @param map applyId adminId applyNote
     * @return update success->1 / fail -> 0
     */
    int adminRejectApply(Map<String, Object> map);

    /**
     * 管理员加密密码
     * @return encrypt success->1 / fail -> 0
     */
    int adminEncryptPasswd();

    /**
     * 查询所有申请情况
     * @return Apply list
     */
    List<Apply> adminListApply();

    /**
     * 管理员查询已处理申请
     * @return Apply List
     */
    List<Apply> adminGetTreatApply();

    /**
     * 管理员查询未处理申请
     * @return Apply List
     */
    List<Apply> adminGetUnTreatApply();

    /**
     * 查询某员工申请情况
     * @param map staName
     * @return Apply Object
     */
    List<Apply> adminGetApplyByStaName(Map<String, Object> map);

    /**
     * 查询所有员工信息
     * @return Staff list
     */
    List<Staff> adminListStaff();

    /**
     * 修改员工信息
     * @param map staId staName staDept staTele
     * @return update success->1 / fail -> 0
     */
    int adminUpdateStaff(Map<String, Object> map);

    /**
     * 增加员工
     * @param map staName staDept staTele
     * @return add success->1 / fail -> 0
     */
    int adminInsertStaff(Map<String, Object> map);

    /**
     * 删除员工
     * @param map staId
     * @return del success->1 / fail -> 0
     */
    int adminDeleteStaff(Map<String, Object> map);

    /**
     * 查询所有耗材信息
     * @return Consume list
     */
    List<Consume> adminListConsume();

    /**
     * 修改耗材数量
     * @param map conId conName conNum conFactory
     * @return update success->1 / fail -> 0
     */
    int adminUpdateConsume(Map<String, Object> map);

    /**
     * 新增耗材
     * @param map conName conNum conFactory
     * @return add success->1 / fail -> 0
     */
    int adminInsertConsume(Map<String, Object> map);

    /**
     * 删除耗材
     * @param map conId
     * @return del success->1 / fail -> 0
     */
    int adminDeleteConsume(Map<String, Object> map);
}

Staff interface

package com.ocms.dao;

import com.ocms.pojo.Apply;
import com.ocms.pojo.Staff;

import java.util.List;
import java.util.Map;

/**
 * @author Flat-White
 */
public interface StaffMapper {
    /**
     * 查询所有员工信息
     * @return Staff list
     */
    List<Staff> staffListStaff();

    /**
     * 查询某个员工信息
     * @param map staName
     * @return Staff Object
     */
    Staff staffGetStaffByStaName(Map<String, Object> map);

    /**
     * 提交申请
     * @param map staId conTime applyName applyNum
     * @return apply success->1 / fail -> 0
     */
    int staffSubmitApply(Map<String, Object> map);

    /**
     * 查询审核情况
     * @param map staId
     * @return Apply list
     */
    List<Apply> staffQueryApply(Map<String, Object> map);
}

✨建库SQL

/*
 Navicat Premium Data Transfer

 Source Server         : dbms
 Source Server Type    : MySQL
 Source Server Version : 50731
 Source Host           : localhost:3306
 Source Schema         : ocms

 Target Server Type    : MySQL
 Target Server Version : 50731
 File Encoding         : 65001

 Date: 19/05/2021 00:43:07
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for admin
-- ----------------------------
DROP TABLE IF EXISTS `admin`;
CREATE TABLE `admin` (
  `admin_id` int(11) NOT NULL AUTO_INCREMENT,
  `admin_account` varchar(30) NOT NULL,
  `admin_passwd` char(50) NOT NULL,
  PRIMARY KEY (`admin_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;

-- ----------------------------
-- Records of admin
-- ----------------------------
BEGIN;
INSERT INTO `admin` VALUES (1, 'root', '63a9f0ea7bb98050796b649e85481845');
INSERT INTO `admin` VALUES (2, 'admin', '21232f297a57a5a743894a0e4a801fc3');
INSERT INTO `admin` VALUES (3, 'kali', 'd6ca3fd0c3a3b462ff2b83436dda495e');
INSERT INTO `admin` VALUES (4, 'ubuntu', '1d41c853af58d3a7ae54990ce29417d8');
COMMIT;

-- ----------------------------
-- Table structure for apply
-- ----------------------------
DROP TABLE IF EXISTS `apply`;
CREATE TABLE `apply` (
  `apply_id` int(11) NOT NULL AUTO_INCREMENT,
  `sta_id` int(11) NOT NULL,
  `admin_id` int(11) DEFAULT NULL,
  `con_id` int(11) NOT NULL,
  `apply_time` datetime NOT NULL,
  `con_time` datetime NOT NULL,
  `apply_num` int(11) NOT NULL,
  `apply_name` varchar(20) NOT NULL,
  `apply_is_check` int(11) NOT NULL,
  `apply_result` int(11) DEFAULT NULL,
  `apply_note` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`apply_id`) USING BTREE,
  KEY `FK_Apply` (`con_id`) USING BTREE,
  KEY `FK_Apply2` (`sta_id`) USING BTREE,
  KEY `FK_Apply3` (`admin_id`) USING BTREE,
  CONSTRAINT `FK_Apply` FOREIGN KEY (`con_id`) REFERENCES `consume` (`con_id`),
  CONSTRAINT `FK_Apply2` FOREIGN KEY (`sta_id`) REFERENCES `staff` (`sta_id`),
  CONSTRAINT `FK_Apply3` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;

-- ----------------------------
-- Records of apply
-- ----------------------------
BEGIN;
INSERT INTO `apply` VALUES (1, 1, NULL, 3, '2021-04-28 10:10:35', '2021-04-28 10:10:41', 10, '墨盒', 0, NULL, NULL);
INSERT INTO `apply` VALUES (2, 2, NULL, 5, '2021-04-28 10:12:15', '2021-04-28 10:12:21', 10, '复印纸', 0, NULL, NULL);
INSERT INTO `apply` VALUES (3, 1, NULL, 7, '2021-05-19 00:42:06', '2021-05-19 00:42:05', 20, '传真热敏纸', 0, NULL, NULL);
COMMIT;

-- ----------------------------
-- Table structure for consume
-- ----------------------------
DROP TABLE IF EXISTS `consume`;
CREATE TABLE `consume` (
  `con_id` int(11) NOT NULL AUTO_INCREMENT,
  `con_name` varchar(20) NOT NULL,
  `con_num` int(11) NOT NULL,
  `con_factory` varchar(50) NOT NULL,
  `con_indate` datetime NOT NULL,
  `con_is_replenish` int(11) NOT NULL,
  PRIMARY KEY (`con_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;

-- ----------------------------
-- Records of consume
-- ----------------------------
BEGIN;
INSERT INTO `consume` VALUES (1, '硒鼓', 50, '知名硒鼓生产厂', '2021-04-27 22:40:12', 0);
INSERT INTO `consume` VALUES (2, '粉仓', 50, '知名粉仓生产厂', '2021-04-27 22:40:59', 0);
INSERT INTO `consume` VALUES (3, '墨盒', 50, '知名墨盒生产厂', '2021-04-27 22:41:30', 0);
INSERT INTO `consume` VALUES (4, '碳带', 50, '知名碳带生产厂', '2021-04-27 22:42:21', 0);
INSERT INTO `consume` VALUES (5, '复印纸', 50, '知名复印纸生产厂', '2021-04-27 22:43:00', 0);
INSERT INTO `consume` VALUES (6, '彩喷纸', 50, '知名彩喷纸生产厂', '2021-04-27 22:43:28', 0);
INSERT INTO `consume` VALUES (7, '传真热敏纸', 50, '知名传真热敏纸生产厂', '2021-04-27 22:43:52', 0);
INSERT INTO `consume` VALUES (8, '高光相纸', 50, '知名高光相纸生产厂', '2021-04-27 22:44:28', 0);
INSERT INTO `consume` VALUES (9, '绘图纸', 50, '知名绘图纸生产厂', '2021-04-27 22:44:56', 0);
INSERT INTO `consume` VALUES (10, '硫酸纸', 50, '知名硫酸纸生产厂', '2021-04-27 22:45:21', 0);
COMMIT;

-- ----------------------------
-- Table structure for staff
-- ----------------------------
DROP TABLE IF EXISTS `staff`;
CREATE TABLE `staff` (
  `sta_id` int(11) NOT NULL AUTO_INCREMENT,
  `sta_name` varchar(20) NOT NULL,
  `sta_dept` varchar(20) NOT NULL,
  `sta_tele` char(20) NOT NULL,
  PRIMARY KEY (`sta_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;

-- ----------------------------
-- Records of staff
-- ----------------------------
BEGIN;
INSERT INTO `staff` VALUES (1, '仓库管理员', '仓库', '000000');
INSERT INTO `staff` VALUES (2, '总裁', '行政部', '666666');
INSERT INTO `staff` VALUES (3, '董事长', '行政部', '666666');
INSERT INTO `staff` VALUES (4, 'CEO', '行政部', '666666');
INSERT INTO `staff` VALUES (5, '摸鱼产品一号职工', '产品部', '111');
INSERT INTO `staff` VALUES (6, '划水产品二号职工', '产品部', '111');
INSERT INTO `staff` VALUES (7, '摸鱼设计一号职工', '设计部', '222');
INSERT INTO `staff` VALUES (8, '划水设计二号职工', '设计部', '666');
INSERT INTO `staff` VALUES (9, '摸鱼技术一号职工', '技术部', '222');
INSERT INTO `staff` VALUES (10, '划水技术二号职工', '技术部', '333');
INSERT INTO `staff` VALUES (11, '不摸鱼技术三号', '技术部', '444');
INSERT INTO `staff` VALUES (12, '不划水技术四号职工', '技术部', '444');
INSERT INTO `staff` VALUES (13, '摸鱼市场一号职工', '市场部', '444');
INSERT INTO `staff` VALUES (14, '划水市场二号职工', '市场部', '444');
INSERT INTO `staff` VALUES (15, '绝不摸鱼财务一号职工', '财务部', '555');
INSERT INTO `staff` VALUES (16, '必不划水财务二号职工', '财务部', '555');
INSERT INTO `staff` VALUES (17, '整天摸鱼人力一号职工', '人力部', '777');
INSERT INTO `staff` VALUES (18, '想要放假人力二号职工', '人力部', '777');
INSERT INTO `staff` VALUES (19, '快被解雇人力三号职工', '人力部', '888');
COMMIT;

-- ----------------------------
-- Triggers structure for table consume
-- ----------------------------
DROP TRIGGER IF EXISTS `before_insert_auto_check_replenish`;
delimiter ;;
CREATE TRIGGER `before_insert_auto_check_replenish` BEFORE INSERT ON `consume` FOR EACH ROW BEGIN
   IF
      ( new.con_num < 10 ) THEN
         SET new.con_is_replenish = 1;
      
   END IF;
   
   END
;;
delimiter ;

-- ----------------------------
-- Triggers structure for table consume
-- ----------------------------
DROP TRIGGER IF EXISTS `after_insert_auto_apply_replenish`;
delimiter ;;
CREATE TRIGGER `after_insert_auto_apply_replenish` AFTER INSERT ON `consume` FOR EACH ROW BEGIN
   IF(new.con_is_replenish = 1) THEN
   INSERT INTO apply
   (sta_id, con_id, apply_time, con_time, apply_num, apply_name, apply_is_check)
   SELECT 1, new.con_id, NOW(), NOW(), 50, new.con_name, 0 
   FROM staff, apply
   WHERE staff.sta_id = apply.sta_id
   LIMIT 1;
   END IF;
   
   END
;;
delimiter ;

-- ----------------------------
-- Triggers structure for table consume
-- ----------------------------
DROP TRIGGER IF EXISTS `before_update_auto_check_replenish`;
delimiter ;;
CREATE TRIGGER `before_update_auto_check_replenish` BEFORE UPDATE ON `consume` FOR EACH ROW BEGIN
   IF
      ( new.con_num < 10 ) THEN
         SET new.con_is_replenish = 1;
      
   END IF;
   
   END
;;
delimiter ;

-- ----------------------------
-- Triggers structure for table consume
-- ----------------------------
DROP TRIGGER IF EXISTS `after_update_auto_apply_replenish`;
delimiter ;;
CREATE TRIGGER `after_update_auto_apply_replenish` AFTER UPDATE ON `consume` FOR EACH ROW BEGIN
   IF(new.con_is_replenish = 1) THEN
   INSERT INTO apply
   (sta_id, con_id, apply_time, con_time, apply_num, apply_name, apply_is_check)
   SELECT 1, new.con_id, NOW(), NOW(), 50, new.con_name, 0 
   FROM staff, apply
   WHERE staff.sta_id = apply.sta_id
   LIMIT 1;
   END IF;
   
   END
;;
delimiter ;

SET FOREIGN_KEY_CHECKS = 1;

完整代码下载地址:办公室耗材管理系统源码+数据库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员柳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值