基于java+ssm+jsp的小工程预算系统

本文介绍了小工程预算系统的开发背景和目的,该系统利用Java语言,结合MySQL数据库和SSM框架,实现了用户管理、装修材料管理、订单信息管理等功能。系统旨在提升信息处理效率,提供系统化、规范化的信息管理,包括工程订单和材料分类管理等,适用于小工程预算的信息处理需求。
摘要由CSDN通过智能技术生成

项目介绍

在如今社会上,关于信息上面的处理,没有任何一个企业或者个人会忽视,如何让信息急速传递,并且归档储存查询,采用之前的纸张记录模式已经不符合当前使用要求了。所以,对小工程预算信息管理的提升,也为了对小工程预算信息进行更好的维护,小工程预算系统的出现就变得水到渠成不可缺少。通过对小工程预算系统的开发,不仅仅可以学以致用,让学到的知识变成成果出现,也强化了知识记忆,扩大了知识储备,是提升自我的一种很好的方法。通过具体的开发,对整个软件开发的过程熟练掌握,不论是前期的设计,还是后续的编码测试,都有了很深刻的认知。

小工程预算系统通过MySQL数据库与idea工具进行开发,小工程预算系统能够实现用户管理,装修材料管理,订单信息管理,工程信息管理,工程订单管理,材料分类管理等功能。

通过小工程预算系统对相关信息的处理,让信息处理变的更加的系统,更加的规范,这是一个必然的结果。已经处理好的信息,不管是用来查找,还是分析,在效率上都会成倍的提高,让计算机变得更加符合生产需要,变成人们不可缺少的一种信息处理工具,实现了绿色办公,节省社会资源,为环境保护也做了力所能及的贡献。

4.2功能结构设计
本系统主要是基于数据的增加,修改,删除等操作,使用者能够通过提前设定的登录功能进入指定的操作区,这里对使用者设计的功能进行结构展示。
管理员功能结构图的绘制结果见图4-1。管理员登录进入本系统操作的功能包括增删改查装修材料,工程信息,材料分类信息,管理材料订单以及工程订单,管理用户。
在这里插入图片描述

用户功能结构图的绘制结果见图4-2。用户登录进入本系统操作的功能包括购买装修材料,支付装修材料订单,对工程下单,审核管理员对工程订单提供的报价信息,支付工程订单。
在这里插入图片描述

开发环境

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

系统实现

5.1管理员功能实现
5.1.1 装修材料管理
管理员进入如图5-1所示的装修材料管理界面之后,管理员点击信息显示栏中最右侧的修改,查看评论,删除按钮可依次完成装修材料信息的修改,查看用户对装修材料的评论,删除等操作。装修材料信息包括材料名称,价格,数量等信息。
在这里插入图片描述

图5-1 装修材料管理界面

5.1.2 订单信息管理
管理员进入如图5-2所示的订单信息管理界面之后,管理员点击信息显示栏中最右侧的修改,删除按钮可依次完成订单信息的修改,删除等操作,订单信息是用户购买装修材料产生的信息,其中包括材料名称,下单时间,价格,地址,是否支付等信息。
在这里插入图片描述

图5-2 订单信息管理界面

5.1.3 工程信息管理
管理员进入如图5-3所示的工程信息管理界面之后,管理员点击信息显示栏中最右侧的修改,查看评论,删除按钮可依次完成工程信息的修改,查看用户对工程信息提交的评论,删除等操作,工程信息包括工程名称,图片,工程面积,装修建材等信息。
在这里插入图片描述

图5-3 工程信息管理界面

5.1.4 工程订单管理
管理员进入如图5-4所示的工程订单管理界面之后,管理员点击信息显示栏中最右侧的查看,修改,删除按钮可依次完成工程订单信息的查看,修改,删除等操作。工程订单是用户对工程下单之后产生的信息,需要用户提交面积信息,然后由管理员对工程进行报价,最后用户审核管理员的报价。
在这里插入图片描述

图5-4 工程订单管理界面

5.1.5 材料分类管理
管理员进入如图5-5所示的材料分类管理界面之后,管理员点击信息显示栏中最右侧的修改,删除按钮可依次完成材料分类信息的修改,删除等操作。
在这里插入图片描述

图5-5 材料分类管理界面

5.2 用户功能实现
5.2.1 装修材料
用户进入如图5-6所示的装修材料界面之后,用户点击购买按钮则可以购买装修材料,用户在装修材料界面下方的评论区域可以参与对装修材料的评论。
在这里插入图片描述

图5-6 装修材料界面

5.2.2 工程信息
用户进入如图5-7所示的工程信息界面之后,用户点击下单按钮可以对工程进行下单,下单时需要提交面积信息才可以提交工程订单。
在这里插入图片描述

图5-7 工程信息界面

5.2.3 工程下单
用户进入如图5-8所示的工程下单界面之后,用户需要登记面积信息,报价信息是管理员登记的内容,用户不可以填写,最后提交工程订单。
在这里插入图片描述

图5-8 工程下单界面

5.2.4 订单信息管理
用户进入如图5-9所示的订单信息管理界面之后,用户购买装修材料之后,需要到后台的订单信息管理界面支付订单。
在这里插入图片描述

图5-9 订单信息管理界面

5.2.5 工程订单管理
用户进入如图5-10所示的工程订单管理界面之后,用户对工程下单,管理员就对用户的工程订单进行报价,用户就需要审核管理员的报价,合适的话,用户就可以支付工程订单。
在这里插入图片描述

图5-10 工程订单管理界面

核心代码

package com.controller;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;

import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;

import com.entity.GongchengdingdanEntity;
import com.entity.view.GongchengdingdanView;

import com.service.GongchengdingdanService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;
import java.io.IOException;

/**
 * 工程订单
 * 后端接口
 * @author 
 * @email 
 * @date 
 */
@RestController
@RequestMapping("/gongchengdingdan")
public class GongchengdingdanController {
    @Autowired
    private GongchengdingdanService gongchengdingdanService;



    


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,GongchengdingdanEntity gongchengdingdan, 
		HttpServletRequest request){

		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("yonghu")) {
			gongchengdingdan.setYonghuming((String)request.getSession().getAttribute("username"));
		}
        EntityWrapper<GongchengdingdanEntity> ew = new EntityWrapper<GongchengdingdanEntity>();
    	PageUtils page = gongchengdingdanService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, gongchengdingdan), params), params));
		request.setAttribute("data", page);
        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
	@IgnoreAuth
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,GongchengdingdanEntity gongchengdingdan, 
		HttpServletRequest request){
        EntityWrapper<GongchengdingdanEntity> ew = new EntityWrapper<GongchengdingdanEntity>();
    	PageUtils page = gongchengdingdanService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, gongchengdingdan), params), params));
		request.setAttribute("data", page);
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/lists")
    public R list( GongchengdingdanEntity gongchengdingdan){
       	EntityWrapper<GongchengdingdanEntity> ew = new EntityWrapper<GongchengdingdanEntity>();
      	ew.allEq(MPUtil.allEQMapPre( gongchengdingdan, "gongchengdingdan")); 
        return R.ok().put("data", gongchengdingdanService.selectListView(ew));
    }

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(GongchengdingdanEntity gongchengdingdan){
        EntityWrapper< GongchengdingdanEntity> ew = new EntityWrapper< GongchengdingdanEntity>();
 		ew.allEq(MPUtil.allEQMapPre( gongchengdingdan, "gongchengdingdan")); 
		GongchengdingdanView gongchengdingdanView =  gongchengdingdanService.selectView(ew);
		return R.ok("查询工程订单成功").put("data", gongchengdingdanView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        GongchengdingdanEntity gongchengdingdan = gongchengdingdanService.selectById(id);
        return R.ok().put("data", gongchengdingdan);
    }

    /**
     * 前端详情
     */
	@IgnoreAuth
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        GongchengdingdanEntity gongchengdingdan = gongchengdingdanService.selectById(id);
        return R.ok().put("data", gongchengdingdan);
    }
    



    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody GongchengdingdanEntity gongchengdingdan, HttpServletRequest request){
    	gongchengdingdan.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(gongchengdingdan);

        gongchengdingdanService.insert(gongchengdingdan);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody GongchengdingdanEntity gongchengdingdan, HttpServletRequest request){
    	gongchengdingdan.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(gongchengdingdan);

        gongchengdingdanService.insert(gongchengdingdan);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    @Transactional
    public R update(@RequestBody GongchengdingdanEntity gongchengdingdan, HttpServletRequest request){
        //ValidatorUtils.validateEntity(gongchengdingdan);
        gongchengdingdanService.updateById(gongchengdingdan);//全部更新
        return R.ok();
    }
    

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        gongchengdingdanService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
    
    /**
     * 提醒接口
     */
	@RequestMapping("/remind/{columnName}/{type}")
	public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, 
						 @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
		map.put("column", columnName);
		map.put("type", type);
		
		if(type.equals("2")) {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			Calendar c = Calendar.getInstance();
			Date remindStartDate = null;
			Date remindEndDate = null;
			if(map.get("remindstart")!=null) {
				Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
				c.setTime(new Date()); 
				c.add(Calendar.DAY_OF_MONTH,remindStart);
				remindStartDate = c.getTime();
				map.put("remindstart", sdf.format(remindStartDate));
			}
			if(map.get("remindend")!=null) {
				Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
				c.setTime(new Date());
				c.add(Calendar.DAY_OF_MONTH,remindEnd);
				remindEndDate = c.getTime();
				map.put("remindend", sdf.format(remindEndDate));
			}
		}
		
		Wrapper<GongchengdingdanEntity> wrapper = new EntityWrapper<GongchengdingdanEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}

		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("yonghu")) {
			wrapper.eq("yonghuming", (String)request.getSession().getAttribute("username"));
		}

		int count = gongchengdingdanService.selectCount(wrapper);
		return R.ok().put("count", count);
	}
	
	





}

论文参考

在这里插入图片描述

目 录
第一章 绪论 1
1.1 选题背景 1
1.2 选题意义 1
1.3 研究内容 2
第二章 开发环境 3
2.1 Java语言 3
2.2 MYSQL数据库 3
2.3 Eclipse开发工具 4
2.4 SSM框架 4
第三章 系统分析 5
3.1可行性分析 5
3.1.1技术可行性 5
3.1.2操作可行性 5
3.1.3经济可行性 5
3.2系统流程分析 6
3.3系统性能分析 9
3.3.1系统安全性 9
3.3.2数据完整性 10
3.3.3系统可扩展性 10
3.4系统功能分析 10
第四章 系统设计 13
4.1 系统设计目标 13
4.2功能结构设计 14
4.3数据库设计 15
4.3.1 数据库概念设计 15
4.3.2 数据库物理设计 18
第五章 系统实现 23
5.1管理员功能实现 23
5.1.1 装修材料管理 23
5.1.2 订单信息管理 23
5.1.3 工程信息管理 24
5.1.4 工程订单管理 24
5.1.5 材料分类管理 25
5.2 用户功能实现 26
5.2.1 装修材料 26
5.2.2 工程信息 26
5.2.3 工程下单 27
5.2.4 订单信息管理 27
5.2.5 工程订单管理 28
第六章 系统测试 29
6.1系统测试的特点 29
6.2 系统功能测试 29
6.2.1 用户登录测试 29
6.2.2 工程查询功能测试 30
6.3 系统测试结果 30
结 论 31
致 谢 33
参考文献 34

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

qq_3306428634

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

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

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

打赏作者

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

抵扣说明:

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

余额充值