当前位置: 首页 > article >正文

学校快递站点管理|基于springboot学校快递站点管理设计与实现(源码+数据库+文档)

学校快递站点管理系统目录

目录

基于springboot学校快递站点管理设计与实现

一、前言

二、系统功能设计

三、系统实现 

前台功能模块

后台功能角模块

 四、数据库设计

1、实体ER图

2、具体的表设计如下所示:

 五、核心代码 

六、论文参考

七、最新计算机毕设选题推荐

八、源码获取:


博主介绍:✌️大厂码农|毕设布道师,阿里云开发社区乘风者计划专家博主,CSDN平台Java领域优质创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。✌️

主要项目:小程序、SpringBoot、SSM、Vue、Html、Jsp、Nodejs等设计与开发。

🍅文末获取源码联系🍅

基于springboot学校快递站点管理设计与实现

一、前言

降低快递站的运营人员成本,实现了快递业务的标准化,防止了快递业务的随意管理,管理员:用户管理、校园资讯管理,校园交流论坛管理,快递信息管理、评价管理、寄快递管理、申请接单管理、取快递管理等功能。快递公司信息管理、快递柜管理 工作人员:快递信息、寄快递管理、评价管理、申请接单,学校快递站点管理人员和学生需要对学校快递站点相关的一些信息进行管理的需求,设计了学校快递站点管理系统的框架,给出了学校快递站点管理系统的总体设计,并对学校快递站点管理系统的架构及关键模块的实现过程进行了详细论述。采用JAVA的springboot框架和MySQL数据库技术,基于B/S模式实现了一个完整系统的设计,为大使用者提供了良好的学校快递站点管理的系统。

关键词:学校快递站点管理;JAVA;springboot;MySQL

 

二、系统功能设计

系统的整体架构确定以后,再来看学校快递站点管理系统的主要功能模块图。整体的功能模块包括管理员+快递公司+快递员+学生四个模块,实现了对快递站点相关信息的查询管理,系统功能模块如图所示。

三、系统实现 

学校快递站点管理系统的详细设计与实现主要是根据前面的学校快递站点管理系统的需求分析和学校快递站点管理系统的总体设计来设计页面并实现业务逻辑。主要从学校快递站点管理系统界面实现、业务逻辑实现这两部分进行介绍。

前台功能模块

1、前台首页界面

当进入学校快递站点管理系统的时候,首先映入眼帘的是系统的导航栏、轮播图以及公告信息,在左上角能够看到导航栏,其主界面展示如下图4.1所示。

图4.1 首页界面图

注册界面

不是学校快递站点管理系统中用户的是可以在线进行注册的,当用户点击右上角“注册”按钮的时候,当填写上自己的账号+密码+确认密码+昵称+邮箱+手机号后等信息再点击“注册”按钮后将会先验证输入的有没有空数据,再次验证密码和确认密码是否是一样的,最后验证输入的账户名和数据库表中已经注册的账户名是否重复,只有都验证没问题后即可学生注册成功。其用学生注册界面展示如下图4.2所示。

图4.2 学生注册界面图

校园资讯界面

当访客点击学校快递站点管理系统中导航栏上的“校园资讯”后将会进入到该“校园资讯”列表的界面,然后选择想要看的校园资讯,点击进入到详细界面,校园资讯界面如下图4.4 所示。

图4.4校园资讯界面图

交流论坛界面

当学生登录到系统中以后,点击“交流论坛”这一菜单,会显示所有的交流标题,可以查看交流详情进行评论,也可以发布交流内容,同时支持输入关键词对交流论坛信息进行搜索。界面如下图4.5所示。

图4.5交流论坛界面图

我的账户界面

当学生点击右上角“我的”这个按钮,会出现子菜单,点击“我的账户”可以对个人的资料以及登录系统的密码进行设置,我的账户界面如下图4.6所示。

图4.6我的账户界面图

后台功能角模块

学校快递站点管理系统的管理员人员包括了管理员、快递公司、快递员以及学生四部分,其中管理员拥有最高的权限,可以对用户信息、系统信息以及学校快递站点信息进行管控。

快递信息界面

快速公司点击“快递信息”会显示出所有的快递信息,支持输入快递单号或者是快递公司对快递信息进行查询,如果想要添加新的快递,点击“添加”按钮,快递单号是自动生成的,然后输入快递公司、快递数量、学生姓名、学生账号、学生电话、快递员。快递员电话、配送时间、公司账号,点击“提交按钮”就可以添加了,同样如果快递信息有错误,可以点击“编辑”对快速信息进行更新,也可以选择某一条快速信息,点击“删除”进行删除。界面如下图4.7所示。

图4.7快递信息界面图

快递配送界面

快递员点击“快速信息”后面的“快递配送”按钮,然后根据提示选择柜号、输入存放时间、取件码,点击“提交”进行快递配送后,就会在快递配送中显示自己提交的快递配送信息。界面如下图4.9所示。

图4.9快递配送界面图

快递取件界面

学生点击“快递配送”后面的“快递取件”按钮,然后根据提示填写好取件备注,点击“提交”进行快递取件后,就会在快递取件中显示自己提交的快递取件信息。界面展示如下图4.10所示。

图4.10快递取件界面图

快递评价界面

学生点击“快递取件”后面的“快递评价”按钮,然后根据提示填写好评价时间、评价详情,点击“提交”进行快递评价后,就会在快递评价中显示自己提交的快递评价信息,界面如下图4.11所示。

图4.11 快递评价界面图

寄快递界面

学生点击“寄快递”会显示出自己曾经提交的所有的寄快递信息,支持输入寄件人或者是寄件电话对快递进行查询,如果想要进行寄快递操作,点击“添加”按钮,输入寄件人、寄件人电话、物品类型、我怕种类、寄件地址,点击“提交”按钮就可以添加了,同样如果快递信息有错误,可以点击“编辑”对快递信息进行更新,也可以选择某一条快递信息,点击“删除”进行删除。界面如下图4.12所示。

图4.12 寄快递界面图

 四、数据库设计

1、实体ER图

学校快递站点管理系统采用的是MYSQL的数据库进行存储的,数据库里面储存了很多的表信息,在此罗列出来一些主要的数据库E-R模型图。

图3.2 寄快递信息E-R关系图

图3.3 快递取件信息E-R关系图

图3.4 快递物流信息E-R关系图

2、具体的表设计如下所示:

数据库系统一旦选定之后,需要根据程序要求在数据库中建立数据库文件,并在已经完成创建的数据库文件里面,为程序运行中产生的数据建立对应的数据表格,数据表结构设计就是对创建的数据表格进行字段设计,字段长度设计,字段类型设计等,当数据表格合理设计完成之后,才能正常存储相关程序运行产生的数据信息。

表3.1 寄快递信息use_express_delivery表

序号

数据库字段

字段类型

字段长度

存储内容

备注

1

use_express_delivery_id

int

11

主键

主键

2

sender

varchar

64

寄件人

可空

3

sender_telephone

varchar

64

寄件人电话

可空

4

`item_type

varchar

64

物品类型

可空

5

article_weight

int

11

物品重量

可空

6

mailing_address

varchar

64

寄件地址

可空

7

recommend

int

11

智能推荐

可空

8

create_time

datetime

创建时间

可空

9

update_time

timestamp

更新时间

可空

(2)表express_pick_up实体用来存快递取件信息中的快递单号、快递公司、快递数量、学生姓名、学生电话、快递员、快递员电话等;

表3.2 快递取件信息express_pick_up表

序号

数据库字段

字段类型

字段长度

存储内容

备注

1

express_pick_up_id

int

11

主键

主键

2

`courier_number`

varchar

64

快递单号

可空

3

`courier_services_company

varchar

64

快递公司

可空

4

express_quantity`

varchar

64

快递数量

可空

5

`student_name

varchar

64

学生姓名

可空

6

student_telephone

varchar

64

学生电话

可空

7

courier

varchar

64

快递员

可空

8

courier_telephone

varchar

64

快递员电话

可空

9

pick_up_time

varchar

64

取件时间

可空

10

`student

varchar

64

学生

可空

11

notes_on_taking_parts

varchar

64

取件备注

可空

12

recommend

int

11

智能推荐

可空

13

create_time

datetime

创建时间

可空

14

update_time

timestamp

更新时间

可空

(3)表express_logistics实体用来存放快递物流信息中的就进入、快递单号、快递公司、发货地、目的地、公司账号等;

表3.3快递物流信息express_logistics表

序号

数据库字段

字段类型

字段长度

存储内容

备注

1

express_logistics_id

int

11

主键

主键

2

sender

varchar

64

寄件人

可空

3

courier_number

varchar

64

快递单号

可空

4

courier_services_company`

varchar

64

快递公司

可空

5

place_of_shipment

varchar

64

发货地

可空

6

destination

varchar

64

目的地

可空

7

company_account_number

int

11

公司账号

可空

8

logistics_information

longtext

物流信息

可空

9

recommend

int

11

智能推荐

可空

10

create_time

datetime

创建时间

可空

11

update_time

timestamp

更新时间

可空

 

 五、核心代码 

package com.project.demo.service;

import com.project.demo.entity.ExpressCabinet;
import com.project.demo.service.base.BaseService;
import org.springframework.stereotype.Service;

/**
 * 快递柜:(ExpressCabinet)表服务接口
 *
 */
@Service
public class ExpressCabinetService extends BaseService<ExpressCabinet> {

}


package com.project.demo.service;

import com.project.demo.entity.ExpressCharges;
import com.project.demo.service.base.BaseService;
import org.springframework.stereotype.Service;

/**
 * 快递收取费用:(ExpressCharges)表服务接口
 *
 */
@Service
public class ExpressChargesService extends BaseService<ExpressCharges> {

}


package com.project.demo.service.base;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.project.demo.constant.FindConfig;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import javax.servlet.http.HttpServletRequest;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.ParameterizedType;
import java.net.URLDecoder;
import java.security.MessageDigest;
import java.util.*;

/**
 */
@Slf4j
public class BaseService <E>{

    @Autowired
    @PersistenceContext
    private EntityManager entityManager;

    Class<E> eClass = (Class<E>)((ParameterizedType)getClass().getGenericSuperclass()).getActualTypeArguments()[0];

    private final String table = humpToLine(eClass.getSimpleName());

    public Query runEntitySql(String sql){
        return entityManager.createNativeQuery(sql, eClass);
    }

    public Query runCountSql(String sql){
        return entityManager.createNativeQuery(sql);
    }

    public void insert(Map<String,Object> body){
        StringBuffer sql = new StringBuffer("INSERT INTO ");
        sql.append("`").append(table).append("`").append(" (");
        for (Map.Entry<String,Object> entry:body.entrySet()){
            sql.append("`"+humpToLine(entry.getKey())+"`").append(",");
        }
        sql.deleteCharAt(sql.length()-1);
        sql.append(") VALUES (");
        for (Map.Entry<String,Object> entry:body.entrySet()){
            Object value = entry.getValue();
            if (value instanceof String){
                sql.append("'").append(entry.getValue()).append("'").append(",");
            }else {
                sql.append(entry.getValue()).append(",");
            }
        }
        sql.deleteCharAt(sql.length() - 1);
        sql.append(")");
        log.info("[{}] - 插入操作:{}",table,sql);
        Query query = runCountSql(sql.toString());
        query.executeUpdate();
    }

    @Transactional
    public void update(Map<String,String> query,Map<String,String> config,Map<String,Object> body){
        StringBuffer sql = new StringBuffer("UPDATE ").append("`").append(table).append("`").append(" SET ");
        for (Map.Entry<String,Object> entry:body.entrySet()){
            Object value = entry.getValue();
            if (value instanceof String){
                sql.append("`"+humpToLine(entry.getKey())+"`").append("=").append("'").append(value).append("'").append(",");
            }else {
                sql.append("`"+humpToLine(entry.getKey())+"`").append("=").append(value).append(",");
            }

        }
        sql.deleteCharAt(sql.length()-1);
        sql.append(toWhereSql(query,"0".equals(config.get(FindConfig.LIKE))));
//        sql.append(";");
        log.info("[{}] - 更新操作:{}",table,sql);
        Query query1 = runCountSql(sql.toString());
        query1.executeUpdate();
    }

    public Map<String,Object> selectToPage(Map<String,String> query,Map<String,String> config){
        Query select = select(query, config);
        Map<String,Object> map = new HashMap<>();
        map.put("list",select.getResultList());
        map.put("count",count(query,config).getSingleResult());
        return map;
    }

    public Map<String,Object> selectToList(Map<String,String> query,Map<String,String> config){
        Query select = selectGroupCount(query, config);
        Map<String,Object> map = new HashMap<>();
        map.put("list",select.getResultList());
        return map;
    }

    public Map<String,Object> selectBarGroup(Map<String,String> query,Map<String,String> config){
        Query select = barGroup(query, config);
        Map<String,Object> map = new HashMap<>();
        map.put("list",select.getResultList());
        return map;
    }

    public Query barGroup(Map<String,String> query,Map<String,String> config){
        StringBuffer sql = new StringBuffer(" SELECT ");
        if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){
            sql.append(config.get(FindConfig.GROUP_BY));
            if (config.get(FindConfig.FIELD) != null && !"".equals(config.get(FindConfig.FIELD))){
                String[] fieldList = config.get(FindConfig.FIELD).split(",");
                for (int i=0;i<fieldList.length;i++)
                    sql.append(" ,SUM(").append(fieldList[i]).append(")");
            }
            sql.append(" FROM ").append("`").append(table).append("`");
            sql.append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));
            sql.append(" ").append("GROUP BY ").append(config.get(FindConfig.GROUP_BY));
        }else {
            sql.append(" SUM(").append(config.get(FindConfig.GROUP_BY)).append(") FROM ").append("`").append(table).append("`");
            sql.append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));
        }
        log.info("[{}] - 查询操作,sql: {}",table,sql);
        return runCountSql(sql.toString());
    }

    public Query selectGroupCount(Map<String,String> query,Map<String,String> config){
        StringBuffer sql = new StringBuffer("select COUNT(*) AS count_value, ");
        sql.append(config.get(FindConfig.GROUP_BY)).append(" ");
        sql.append("from ").append("`").append(table).append("` ");
        sql.append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));
        if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){
            sql.append("group by ").append(config.get(FindConfig.GROUP_BY)).append(" ");
        }
        log.info("[{}] - 查询操作,sql: {}",table,sql);
        return runCountSql(sql.toString());
    }

    public Query select(Map<String,String> query,Map<String,String> config){
        StringBuffer sql = new StringBuffer("select ");
        sql.append(config.get(FindConfig.FIELD) == null || "".equals(config.get(FindConfig.FIELD)) ? "*" : config.get(FindConfig.FIELD)).append(" ");
        sql.append("from ").append("`").append(table).append("`").append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));
        if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){
            sql.append("group by ").append(config.get(FindConfig.GROUP_BY)).append(" ");
        }
        if (config.get(FindConfig.ORDER_BY) != null && !"".equals(config.get(FindConfig.ORDER_BY))){
            sql.append("order by ").append(config.get(FindConfig.ORDER_BY)).append(" ");
        }
        if (config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE))){
            int page = config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE)) ? Integer.parseInt(config.get(FindConfig.PAGE)) : 1;
            int limit = config.get(FindConfig.SIZE) != null && !"".equals(config.get(FindConfig.SIZE)) ? Integer.parseInt(config.get(FindConfig.SIZE)) : 10;
            sql.append(" limit ").append( (page-1)*limit ).append(" , ").append(limit);
        }
        log.info("[{}] - 查询操作,sql: {}",table,sql);
        return runEntitySql(sql.toString());
    }

    @Transactional
    public void delete(Map<String,String> query,Map<String,String> config){
        StringBuffer sql = new StringBuffer("DELETE FROM ").append("`").append(table).append("`").append(" ");
        sql.append(toWhereSql(query, "0".equals(config.get(FindConfig.GROUP_BY))));
        log.info("[{}] - 删除操作:{}",table,sql);
        Query query1 = runCountSql(sql.toString());
        query1.executeUpdate();
    }

    public Query count(Map<String,String> query,Map<String,String> config){
        StringBuffer sql = new StringBuffer("SELECT ");
//        log.info("拼接统计函数前");
        if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){
            sql.append(config.get(FindConfig.GROUP_BY)).append(" ,COUNT(").append(config.get(FindConfig.GROUP_BY)).append(") FROM ").append("`").append(table).append("`");
            sql.append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));
//            sql.append(" ").append("GROUP BY ").append(config.get(FindConfig.GROUP_BY));
        }else {
            sql.append("COUNT(*) FROM ").append("`").append(table).append("`");
            sql.append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));
        }
        log.info("[{}] - 统计操作,sql: {}",table,sql);
        return runCountSql(sql.toString());
    }

    public Query sum(Map<String,String> query,Map<String,String> config){
        StringBuffer sql = new StringBuffer(" SELECT ");
        if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){
            sql.append(config.get(FindConfig.GROUP_BY)).append(" ,SUM(").append(config.get(FindConfig.FIELD)).append(") FROM ").append("`").append(table).append("`");
            sql.append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));
            sql.append(" ").append("GROUP BY ").append(config.get(FindConfig.GROUP_BY));
        }else {
            sql.append(" SUM(").append(config.get(FindConfig.FIELD)).append(") FROM ").append("`").append(table).append("`");
            sql.append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));
        }
        log.info("[{}] - 查询操作,sql: {}",table,sql);
        return runCountSql(sql.toString());
    }

    public Query avg(Map<String,String> query,Map<String,String> config){
        StringBuffer sql = new StringBuffer(" SELECT ");
        if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){
            sql.append(config.get(FindConfig.GROUP_BY)).append(" ,AVG(").append(config.get(FindConfig.FIELD)).append(") FROM ").append("`").append(table).append("`");
            sql.append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));
            sql.append(" ").append("GROUP BY ").append(config.get(FindConfig.GROUP_BY));
        }else {
            sql.append(" AVG(").append(config.get(FindConfig.FIELD)).append(") FROM ").append("`").append(table).append("`");
            sql.append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));
        }
        log.info("[{}] - 查询操作,sql: {}",table,sql);
        return runCountSql(sql.toString());
    }

    public String toWhereSql(Map<String,String> query, Boolean like) {
        if (query.size() > 0) {
            try {
                StringBuilder sql = new StringBuilder(" WHERE ");
                for (Map.Entry<String, String> entry : query.entrySet()) {
                    if (entry.getKey().contains(FindConfig.MIN_)) {
                        String min = humpToLine(entry.getKey()).replace("_min", "");
                        sql.append("`"+min+"`").append(" >= '").append(URLDecoder.decode(entry.getValue(), "UTF-8")).append("' and ");
                        continue;
                    }
                    if (entry.getKey().contains(FindConfig.MAX_)) {
                        String max = humpToLine(entry.getKey()).replace("_max", "");
                        sql.append("`"+max+"`").append(" <= '").append(URLDecoder.decode(entry.getValue(), "UTF-8")).append("' and ");
                        continue;
                    }
                    if (like == true) {
                        sql.append("`"+humpToLine(entry.getKey())+"`").append(" LIKE '%").append(URLDecoder.decode(entry.getValue(), "UTF-8")).append("%'").append(" and ");
                    } else {
                        sql.append("`"+humpToLine(entry.getKey())+"`").append(" = '").append(URLDecoder.decode(entry.getValue(), "UTF-8")).append("'").append(" and ");
                    }
                }
                sql.delete(sql.length() - 4, sql.length());
                sql.append(" ");
                return sql.toString();
            } catch (UnsupportedEncodingException e) {
                log.info("拼接sql 失败:{}", e.getMessage());
            }
        }
        return "";
    }

    public Map<String,Object> readBody(BufferedReader reader){
        BufferedReader br = null;
        StringBuilder sb = new StringBuilder("");
        try{
            br = reader;
            String str;
            while ((str = br.readLine()) != null){
                sb.append(str);
            }
            br.close();
            String json = sb.toString();
            return JSONObject.parseObject(json, Map.class);
        }catch (IOException e){
            e.printStackTrace();
        }finally{
            if (null != br){
                try{
                    br.close();
                }catch (IOException e){
                    e.printStackTrace();
                }
            }
        }
        return null;
    }

    public Map<String,String> readQuery(HttpServletRequest request){
        String queryString = request.getQueryString();
        if (queryString != null && !"".equals(queryString)) {
            String[] querys = queryString.split("&");
            Map<String, String> map = new HashMap<>();
            for (String query : querys) {
                String[] q = query.split("=");
                map.put(q[0], q[1]);
            }
            map.remove(FindConfig.PAGE);
            map.remove(FindConfig.SIZE);
            map.remove(FindConfig.LIKE);
            map.remove(FindConfig.ORDER_BY);
            map.remove(FindConfig.FIELD);
            map.remove(FindConfig.GROUP_BY);
            map.remove(FindConfig.MAX_);
            map.remove(FindConfig.MIN_);
            return map;
        }else {
            return new HashMap<>();
        }
    }

    public Map<String,String> readConfig(HttpServletRequest request){
        Map<String,String> map = new HashMap<>();
        map.put(FindConfig.PAGE,request.getParameter(FindConfig.PAGE));
        map.put(FindConfig.SIZE,request.getParameter(FindConfig.SIZE));
        map.put(FindConfig.LIKE,request.getParameter(FindConfig.LIKE));
        map.put(FindConfig.ORDER_BY,request.getParameter(FindConfig.ORDER_BY));
        map.put(FindConfig.FIELD,request.getParameter(FindConfig.FIELD));
        map.put(FindConfig.GROUP_BY,request.getParameter(FindConfig.GROUP_BY));
        map.put(FindConfig.MAX_,request.getParameter(FindConfig.MAX_));
        map.put(FindConfig.MIN_,request.getParameter(FindConfig.MIN_));
        return map;
    }

    public void importDb(MultipartFile file) throws IOException {
        if (file.isEmpty()) {
            return;
        }
        List<Map<String,String>> body = new ArrayList<>();
        String fileName = file.getOriginalFilename();
        if (fileName == null){
            return;
        }
        String suffix = fileName.substring(fileName.lastIndexOf(".")+1);
        InputStream ins = file.getInputStream();
        Workbook wb = null;
        if(suffix.equals("xlsx")){
            wb = new XSSFWorkbook(ins);
        }else{
            wb = new HSSFWorkbook(ins);
        }
        Sheet sheet = wb.getSheetAt(0);
        if(null != sheet){
            for(int line = 0; line <= sheet.getLastRowNum();line++){
                Row row = sheet.getRow(line);
                if(null == row){
                    continue;
                }
                Iterator<Cell> cellIterator = row.cellIterator();
                StringBuffer sql = new StringBuffer("INSERT INTO ").append(table).append(" VALUES (null,");
                while (cellIterator.hasNext()){
                    sql.append(cellIterator.next().getStringCellValue()).append(",");
                }
                sql.deleteCharAt(sql.length());
                sql.append(")");
                runCountSql(sql.toString());
            }
        }
    }

    public HSSFWorkbook exportDb(Map<String,String> query,Map<String,String> config){
        Query select = select(query, config);
        List<Map<String,String>> resultList = select.getResultList();
        HSSFWorkbook workbook = new HSSFWorkbook();
        HSSFSheet sheet = workbook.createSheet(table);
        HSSFCellStyle headerStyle = workbook.createCellStyle();
        headerStyle.setFillForegroundColor(IndexedColors.YELLOW.index);
        headerStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
        for (int i = 0; i < resultList.size(); i++) {
            HSSFRow row = sheet.createRow(i);
            Map<String,String> map = resultList.get(i);
            int j = 0;
            for (Map.Entry<String,String> entry:map.entrySet()){
                row.createCell(j).setCellValue(new HSSFRichTextString(entry.getValue()));
            }
        }
        return workbook;
    }

    @Transactional
    public void save(E e){
        String s = JSONObject.toJSONString(e);
        Map map = JSONObject.parseObject(s, Map.class);
        insert(map);
    }

    public E findOne(Map<String, String> map){
        try {
            Query select = select(map, new HashMap<>());
            return (E) select.getSingleResult();
        }catch (Exception e){
            return null;
        }
    }


    public String encryption(String plainText) {
        String re_md5 = new String();
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            md.update(plainText.getBytes());
            byte b[] = md.digest();

            int i;

            StringBuffer buf = new StringBuffer("");
            for (int offset = 0; offset < b.length; offset++) {
                i = b[offset];
                if (i < 0)
                    i += 256;
                if (i < 16)
                    buf.append("0");
                buf.append(Integer.toHexString(i));
            }

            re_md5 = buf.toString();

        } catch (Exception e) {
            e.printStackTrace();
        }
        return re_md5;
    }


    public static String humpToLine(String str) {
        if (str == null) {
            return null;
        }
        // 将驼峰字符串转换成数组
        char[] charArray = str.toCharArray();
        StringBuilder buffer = new StringBuilder();
        //处理字符串
        for (int i = 0, l = charArray.length; i < l; i++) {
            if (charArray[i] >= 65 && charArray[i] <= 90) {
                buffer.append("_").append(charArray[i] += 32);
            } else {
                buffer.append(charArray[i]);
            }
        }
        String s = buffer.toString();
        if (s.startsWith("_")){
            return s.substring(1);
        }else {
            return s;
        }
    }


    public JSONObject covertObject(JSONObject object) {
        if (object == null) {
            return null;
        }
        JSONObject newObject = new JSONObject();
        Set<String> set = object.keySet();
        for (String key : set) {
            Object value = object.get(key);
            if (value instanceof JSONArray) {
                //数组
                value = covertArray(object.getJSONArray(key));
            } else if (value instanceof JSONObject) {
                //对象
                value = covertObject(object.getJSONObject(key));
            }
            //这个方法自己写的改成下划线
            key = humpToLine(key);
            newObject.put(key, value);
        }
        return newObject;
    }

    public JSONArray covertArray(JSONArray array) {
        if (array == null) {
            return null;
        }
        JSONArray newArray = new JSONArray();
        for (int i = 0; i < array.size(); i++) {
            Object value = array.get(i);
            if (value instanceof JSONArray) {
                //数组
                value = covertArray(array.getJSONArray(i));
            } else if (value instanceof JSONObject) {
                //对象
                value = covertObject(array.getJSONObject(i));
            }
            newArray.add(value);
        }
        return newArray;
    }


}

六、论文参考

七、最新计算机毕设选题推荐

最新计算机软件毕业设计选题大全-CSDN博客

八、源码获取:

 大家点赞、收藏、关注、评论啦 、👇🏻获取联系方式在文章末尾👇🏻


http://www.kler.cn/a/320232.html

相关文章:

  • 时序数据库TDEngine
  • JavaScript 高级—求数组的最大值与最小值
  • Docker入门之Windows安装Docker初体验
  • 问:Spring MVC DispatcherServlet流程步骤梳理
  • ARM CCA机密计算安全模型之简介
  • css3新特性(二十六课)
  • 屠龙之人终成恶龙
  • 页面禁用鼠标右键属于反爬虫措施吗 ?
  • 《飞机大战游戏》实训项目(Java GUI实现)(设计模式)(简易)
  • L2 Loss介绍及梯度计算说明
  • 2、.Net 前端框架:Blazor - .Net宣传系列文章
  • OJ在线评测系统 后端开发数据库初始化工作 开发库表 建立数据库索引 Mybatis映射初始化接口开发
  • 自动驾驶系列—盲点检测(BSD)功能:智能驾驶安全的关键保障
  • 14年数据结构
  • oracle direct path read处理过程
  • 接口调用工具-HttpClient,HttpUtil,RestTemplate
  • Spring Security - 用户授权
  • 1数据结构与算法-前言
  • OpenCV图像文件读写(3)统计多页图像文件中的页面数量函数imcount()的使用
  • 机器学习中的元强化学习
  • Fusion Access
  • 聚焦Llama新场景和AR眼镜,扎克伯格用AI赋能元宇宙,Meta Connect 2024开发者大会直播约起...
  • linux创建固定大小的文件夹用于测试
  • 编译器和解释器
  • 面试真题 | 小红书-C++引擎架构
  • 如何使用ssm实现线上旅游体验系统+vue