栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

毕业设计 : 基于java web的进存销管理系统 - spring mvc SSM

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

毕业设计 : 基于java web的进存销管理系统 - spring mvc SSM

文章目录
  • 0 前言
  • 1 项目介绍
  • 2 系统功能模块
    • 2.1 基础资料
    • 2.2 系统管理
    • 2.3 采购管理
    • 2.4 销售管理
    • 2.5 库存管理
    • 2.6 财务管理
  • 3 技术栈
  • 4 数据库搭建
  • 5 部分关键代码
  • 6 系统实现效果
  • 7 最后-毕设帮助

0 前言

Hi,同学们好呀,被评为全网最细的丹成学长ヾ(•ω•`)o,今天带大家复盘一个学长帮往届同学做的一个毕业作品

基于java web的进存销管理系统

需要毕设帮助的同学,看过来~
毕设帮助,开题指导,技术解答
746876041
1 项目介绍

进销存系统是什么?

进销存系统是为了对企业生产经营中进货、出货、批发销售、付款等全程进行(从接获订单合同开 始,进入物料采购、入库、领用到产品完工入库、交货、回收货款、支付原材料款等)跟踪(每一步都 提供详尽准确的数据)、管理(有效辅助企业解决业务管理、分销管理、存货管理、营销计划的执行和 监控、统计信息的收集等方面的业务问题)而设计的整套方案。

2 系统功能模块

2.1 基础资料

往来单位资料 货品资料 员工信息 仓库资料 计量单位 账户信息 公司信息 用户可以快速、直观地 查询所需要的数据资料。

2.2 系统管理

操作员管理 系统设置 数据初始化 系统管理是整个系统的门户,在系统的安全性上起到了不可估 量的作用。各种信息要求尽量全面详细,使管理变得更轻松更有效。

2.3 采购管理

新增采购订单 采购订单查询 新增采购单 采购单查询 采购退货 采购明细表 货品采购汇总表 供应商采购汇总表 采购订单完成情况 采购覆盖企业采购的各个环节。企业通过虚拟的在线货品目 录,迅速而实时的访问货品信息;通过价格和品质的比较,选定产品供应商。

2.4 销售管理

新增销售订单 销售订单查询 新增销售单 销售单查询 销售退货 销售明细表 货品销售汇总表 客户销售汇总表 销售订单完成情况 销售覆盖企业销售的各个环节。通过销售订单录入与变更,跟 踪管理商品销售情况;根据货品报价和销售数量自动开出销售发票,根据发货单产生结算凭证和 收货单。

2.5 库存管理

新增入库单 新增出库单 仓库调拨 库存盘点 期末提供了货品盘点、货品调价以及业务审核等 期末业务处理功能,业务期末结算为财务期末结算做了必要的铺垫作用。

2.6 财务管理

付款单 收款单 其他收入 其他支出 账户查询 应付账款表-单据 应付账款表-往来单位 应收账款 表-单据 应收账款表-往来单位

3 技术栈

4 数据库搭建


5 部分关键代码

登陆流程

@Bean 
public UserDetailsService userDetailsService(){ 
  return new UserDetailsService() { 
     @Override 
     public UserDetails loadUserByUsername(String username) throws 
UsernameNotFoundException { 
        // 根据用户名查询用户记录   
        User userDetails = (User) userService.findUserByUserName(username); 
        return userDetails; 
    } 
  }; 

使用生效SpringSecurity 登录配置

 
@Override 
public void configure(WebSecurity web) throws Exception { 
   web.ignoring().antMatchers( 
       "/images 
@Bean 
public PasswordEncoder encoder(){ 
return new BCryptPasswordEncoder(); 
} 
 
@Override 
protected void configure(AuthenticationManagerBuilder auth) throws Exception 
{ 
auth.userDetailsService(userDetailsService()).passwordEncoder(encoder()); 
}

jxc-admin pom.xml 引入Spring Security 坐标
 
 
   org.springframework.boot 
   spring-boot-starter-security 
 
用户登录成功,用户信息页面展示获取 
${(Session.SPRING_SECURITY_CONTEXT.authentication.principal.username)!'lzj'}

使用SpringSecurity 对密码进行加密

@RequestMapping("setting") 
public String setting(Principal principal, Model model){ 
   String userName  = principal.getName(); 
   User user = userService.findUserByUserName(userName); 
   model.addAttribute("user",user); 
   return "user/setting"; 
}

添加图片验证码

 
   com.github.penggle 
   kaptcha 
   2.3.2 
 
@Configuration 
@PropertySource(value = {"classpath:kaptcha.properties"}) 
public class CaptchaConfig { 
   @Value("${kaptcha.border}") 
   private String border; 
   @Value("${kaptcha.border.color}") 
   private String borderColor; 
   @Value("${kaptcha.textproducer.font.color}") 
   private String fontColor; 
   @Value("${kaptcha.image.width}") 
   private String imageWidth; 
   @Value("${kaptcha.image.height}") 
   private String imageHeight; 
   @Value("${kaptcha.session.key}") 
   private String sessionKey; 
   @Value("${kaptcha.textproducer.char.length}") 
   private String charLength; 
   @Value("${kaptcha.textproducer.font.names}") 
   private String fontNames; 
   @Value("${kaptcha.textproducer.font.size}") 
   private String fontSize; 
    
   @Bean(name = "captchaProducer") 
   public DefaultKaptcha getKaptchaBean(){ 
       DefaultKaptcha defaultKaptcha = new DefaultKaptcha(); 
       //加载验证码配置 
       Properties properties = new Properties(); 
       properties.setProperty("kaptcha.border", border;
 properties.setProperty("kaptcha.border.color", borderColor
); 
       properties.setProperty("kaptcha.textproducer.font.color", fontColor); 
       properties.setProperty("kaptcha.image.width", imageWidth); 
       properties.setProperty("kaptcha.image.height", imageHeight); 
       properties.setProperty("kaptcha.session.key", sessionKey); 
       properties.setProperty("kaptcha.textproducer.char.length", charLength); 
       properties.setProperty("kaptcha.textproducer.font.names", fontNames); 
       properties.setProperty("kaptcha.textproducer.font.size",fontSize); 
       defaultKaptcha.setConfig(new Config(properties)); 
       return defaultKaptcha; 
  } 
}

控制器输出验证码

@RequestMapping(value="/image",method = RequestMethod.GET) 
public void kaptcha(HttpSession session, HttpServletResponse response) throws 
IOException { 
   response.setDateHeader("Expires", 0); 
   response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate"); 
   response.addHeader("Cache-Control", "post-check=0, pre-check=0"); 
   response.setHeader("Pragma", "no-cache"); 
   response.setContentType("image/jpeg"); 
   //验证码文字 
   String capText = captchaProducer.createText(); 
   //将验证码存到session 
   session.setAttribute("captcha_key", 
           new CaptchaImageModel(capText,2 * 60)); 
   //将图片返回给前端 
   try(ServletOutputStream out = response.getOutputStream()){ 
       BufferedImage bufferedImage = captchaProducer.createImage(capText);  // 
生成验证码图片 
       ImageIO.write(bufferedImage,"jpg",out); 
       out.flush(); 
  } 

校验登录验证码

@Component 
public class CaptchaCodeFilter extends OncePerRequestFilter { 
   private static ObjectMapper objectMapper = new ObjectMapper(); 
   @Override 
   protected void doFilterInternal(HttpServletRequest request, 
                                   HttpServletResponse response, 
                                   FilterChain filterChain) 
           throws ServletException, IOException { 
       // 只有在登录请求时才有验证码校验 
       if(StringUtils.equals("/login",request.getRequestURI()) 
               && StringUtils.equalsIgnoreCase(request.getMethod(),"post")){
 try{ 
               //验证谜底与用户输入是否匹配 
               this.validate(new ServletWebRequest(request)); 
          }catch(AuthenticationException e){ 
               response.setContentType("application/json;charset=UTF-8"); 
               response.getWriter().write(objectMapper.writevalueAsString( 
                       RespBean.error("验证码错误"))); 
               //catch异常后,之后的过滤器就不再执行了 
               return; 
          } 
      } 
       filterChain.doFilter(request,response); 
  } 
    
   private void validate(ServletWebRequest request) throws 
ServletRequestBindingException { 
       HttpSession session = request.getRequest().getSession(); 
       String codeInRequest = ServletRequestUtils.getStringParameter( 
               request.getRequest(),"captchaCode"); 
       if(StringUtils.isEmpty(codeInRequest)){ 
           throw new SessionAuthenticationException("验证码不能为空"); 
      } 
       // 获取session中的验证码 
       CaptchaImageModel codeInSession = (CaptchaImageModel) 
                       session.getAttribute("captcha_key"); 
       if(Objects.isNull(codeInSession)) { 
           throw new SessionAuthenticationException("验证码不存在"); 
      } 
       // 校验服务器session池中的验证码是否过期 
       if(codeInSession.isExpired()) { 
           session.removeAttribute("captcha_key"); 
           throw new SessionAuthenticationException("验证码已经过期"); 
      } 
       // 请求验证码校验 
       if(!StringUtils.equals(codeInSession.getCode(), codeInRequest)) { 
           throw new SessionAuthenticationException("验证码不匹配"); 
      } 
}
6 系统实现效果




7 最后-毕设帮助
毕设帮助,开题指导,技术解答
746876041

文章版权说明:

该文章由丹成学长全网第一时间发布,CSDN: mathor-sinor,上述系统为丹成学长开发完成,违版必究,如有项目开发需求请联系 丹成学长.

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/691375.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号