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