基于java+ssm+jsp的长安材料批发市场管理系统

项目介绍

科学技术的不断发展,计算机的应用日渐成熟,其强大的功能给人们留下深刻的印象,它已经应用到了人类社会的各个层次的领域,发挥着重要的不可替换的作用。信息管理作为计算机应用的一部分,使用计算机进行管理,具有非常明显的优点。例如:方便快捷、高效率、低成本、存储量大、寿命长,这些优点能够极大地改变了传统的管理方式。

长安材料批发市场管理系统基于当前较为流行的B/S(浏览器/服务器)结构,采用JSP技术、SSM框架、MYSQL数据库,设计并实现了一个功能较为完善的航空售票的软件,通过本系统,管理员可进行管理员账号管理、新闻公告管理、投诉建议管理、网站链接管理、航班管理以及机票订单管理等,同时用户可进行网站首页、系统公告、查看机票、订购机票、网站留言用户注册、后台管理等。本系统经过测试,运行效果稳定,操作方便、快捷,是一个功能全面、实用性好、安全性高,并具有良好的可扩展性、可维护性长安材料批发市场管理系统软件。

论文首先阐述了长安材料批发市场管理系统软件的开发,并对该系统进行了较详细的需求分析,探讨了长安材料批发市场管理系统的功能需求、业务流程、系统结构和数据库设计等方面的问题。

在这里插入图片描述

开发环境

编程语言:Java
数据库 :Mysql
系统架构:B/S
后端框架:SSM
编译工具:idea或者eclipse,jdk1.8,maven
支持定做:java/php/python/android/小程序/vue/爬虫/c#/asp.net

系统实现

5.1用户信息管理
如图5.1显示的就是商户信息管理页面,此页面提供给管理员的功能有:商户信息的查询管理,可以删除商户信息、修改商户信息、新增商户信息,
还进行了对商户名称的模糊查询的条件
在这里插入图片描述

图5.1 商户信息管理页面

5.2 商铺信息管理
如图5.2显示的就是商铺信息管理页面,此页面提供给管理员的功能有:查看已发布的商铺信息数据,修改商铺信息,商铺信息作废,即可删除。

在这里插入图片描述

图5.2 商铺信息管理页面

5.3商铺类型管理
如图5.3显示的就是商铺类型管理页面,此页面提供给管理员的功能有:根据商铺类型进行条件查询,还可以对商铺类型进行新增、修改、查询操作等等。

在这里插入图片描述

图5.3 商铺类型管理页面

5.1材料信息管理
如图5.4显示的就是材料信息管理页面,此页面提供给管理员的功能有:根据材料信息进行新增、修改、查询操作等等。

在这里插入图片描述

图5.4 材料信息管理页面

核心代码

package com.controller;


import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import com.alibaba.fastjson.JSONObject;
import java.util.*;
import org.springframework.beans.BeanUtils;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import com.service.TokenService;
import com.utils.StringUtil;
import java.lang.reflect.InvocationTargetException;

import com.service.DictionaryService;
import org.apache.commons.lang3.StringUtils;
import com.annotation.IgnoreAuth;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.entity.*;
import com.entity.view.*;
import com.service.*;
import com.utils.PageUtils;
import com.utils.R;
import com.alibaba.fastjson.*;

/**
 * 商户账单
 * 后端接口
 * @author
 * @email
*/
@RestController
@Controller
@RequestMapping("/bill")
public class BillController {
    private static final Logger logger = LoggerFactory.getLogger(BillController.class);

    @Autowired
    private BillService billService;


    @Autowired
    private TokenService tokenService;
    @Autowired
    private DictionaryService dictionaryService;

    //级联表service
    @Autowired
    private ShanghuService shanghuService;

    @Autowired
    private YuangongService yuangongService;


    /**
    * 后端列表
    */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){
        logger.debug("page方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
        String role = String.valueOf(request.getSession().getAttribute("role"));
        if(StringUtil.isEmpty(role))
            return R.error(511,"权限为空");
        else if("商户".equals(role))
            params.put("shanghuId",request.getSession().getAttribute("userId"));
        else if("员工".equals(role))
            params.put("yuangongId",request.getSession().getAttribute("userId"));
        if(params.get("orderBy")==null || params.get("orderBy")==""){
            params.put("orderBy","id");
        }
        PageUtils page = billService.queryPage(params);

        //字典表数据转换
        List<BillView> list =(List<BillView>)page.getList();
        for(BillView c:list){
            //修改对应字典表字段
            dictionaryService.dictionaryConvert(c);
        }
        return R.ok().put("data", page);
    }

    /**
    * 后端详情
    */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
        BillEntity bill = billService.selectById(id);
        if(bill !=null){
            //entity转view
            BillView view = new BillView();
            BeanUtils.copyProperties( bill , view );//把实体数据重构到view中

                //级联表
                ShanghuEntity shanghu = shanghuService.selectById(bill.getShanghuId());
                if(shanghu != null){
                    BeanUtils.copyProperties( shanghu , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段
                    view.setShanghuId(shanghu.getId());
                }
            //修改对应字典表字段
            dictionaryService.dictionaryConvert(view);
            return R.ok().put("data", view);
        }else {
            return R.error(511,"查不到数据");
        }

    }

    /**
    * 后端保存
    */
    @RequestMapping("/save")
    public R save(@RequestBody BillEntity bill, HttpServletRequest request){
        logger.debug("save方法:,,Controller:{},,bill:{}",this.getClass().getName(),bill.toString());

        String role = String.valueOf(request.getSession().getAttribute("role"));
        if(StringUtil.isEmpty(role))
            return R.error(511,"权限为空");
        else if("商户".equals(role))
            bill.setShanghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));
        Wrapper<BillEntity> queryWrapper = new EntityWrapper<BillEntity>()
            .eq("bill_name", bill.getBillName())
            .eq("bill_types", bill.getBillTypes())
            .eq("shanghu_id", bill.getShanghuId())
            ;

        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        BillEntity billEntity = billService.selectOne(queryWrapper);
        if(billEntity==null){
            bill.setInsertTime(new Date());
            billService.insert(bill);
            return R.ok();
        }else {
            return R.error(511,"表中有相同数据");
        }
    }

    /**
    * 后端修改
    */
    @RequestMapping("/update")
    public R update(@RequestBody BillEntity bill, HttpServletRequest request){
        logger.debug("update方法:,,Controller:{},,bill:{}",this.getClass().getName(),bill.toString());

        String role = String.valueOf(request.getSession().getAttribute("role"));
        if(StringUtil.isEmpty(role))
            return R.error(511,"权限为空");
        else if("商户".equals(role))
            bill.setShanghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));
        //根据字段查询是否有相同数据
        Wrapper<BillEntity> queryWrapper = new EntityWrapper<BillEntity>()
            .notIn("id",bill.getId())
            .andNew()
            .eq("bill_name", bill.getBillName())
            .eq("bill_types", bill.getBillTypes())
            .eq("shanghu_id", bill.getShanghuId())
            ;

        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        BillEntity billEntity = billService.selectOne(queryWrapper);
        if(billEntity==null){
            //  String role = String.valueOf(request.getSession().getAttribute("role"));
            //  if("".equals(role)){
            //      bill.set
            //  }
            billService.updateById(bill);//根据id更新
            return R.ok();
        }else {
            return R.error(511,"表中有相同数据");
        }
    }



    /**
    * 删除
    */
    @RequestMapping("/delete")
    public R delete(@RequestBody Integer[] ids){
        logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());
        billService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }






}

论文参考

在这里插入图片描述

目 录

第一章 绪论 1
1.1课题研究背景意义 1
1.2设计目标 1
1.3 设计原则 2
第二章 系统开发环境 3
2.1 JSP技术 3
2.2 B/S结构 3
2.3 JAVA简介 4
2.4 MYSQL数据库 5
2.4.1MySQL数据库简介 5
2.4.2 MySQL特点特性 5
2.4.3 MySQL数据库应用环境 6
2.5 SSM框架介绍 6
2.5.1 SSM框架作用 6
2.5.2 SSM框架原理 6
第三章 系统的需求分析 7
3.1可行性分析 7
3.1.1 技术可行性 7
3.1.2经济可行性 7
3.1.3操作可行性 7
3.2系统设计原则 8
3.3流程分析 8
3.3.1 系统开发流程 8
3.3.2 系统登录流程 9
3.4系统设计规则与运行环境 10
3.5 系统用例图 11
3.5.1管理员用例图 11
3.5.2用户用例图 11
3.5.3登录用例 11
第四章 系统的概要设计 13
4.1 系统结构设计 13
4.2 系统架构设计 13
4.2.1总体架构设计 13
4.2.2系统网络拓扑结构图 14
4.3系统数据库设计 15
4.3.1 数据库设计原则 15
4.3.2数据库概念设计 15
4.3.3数据库实体(E-R图) 15
4.3.4 数据库表 17
第五章 系统的实现 20
5.1系统主界面的实现 20
5.1.1用户注册主界面 20
5.1.2会员资料修改界面 21
5.1.3新闻公告界面 22
5.1.4我的购票界面 22
5.2管理员登录界面 23
5.3管理员界面 23
5.3.1航班管理界面 23
5.3.2用户管理界面 24
5.3.3新闻管理界面 24
第六章 系统测试 26
6.1测试方法 26
6.2功能测试 26
6.3性能测试 27
6.4可用性测试 27
6.5测试结论 27
6.6系统改进目标 28
结 论 29
谢 辞 30
参考文献 31

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

qq_3306428634

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

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

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

打赏作者

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

抵扣说明:

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

余额充值