- 0 前言
- 1 项目介绍
- 2 系统功能模块
- 2.1 基础资料
- 2.2 系统管理
- 2.3 采购管理
- 2.4 销售管理
- 2.5 库存管理
- 2.6 财务管理
- 3 技术栈
- 4 数据库搭建
- 5 部分关键代码
- 6 系统实现效果
- 7 最后-毕设帮助
Hi,同学们好呀,被评为全网最细的丹成学长ヾ(•ω•`)o,今天带大家复盘一个学长帮往届同学做的一个毕业作品
基于java web的进存销管理系统
需要毕设帮助的同学,看过来~ 毕设帮助,开题指导,技术解答 7468760411 项目介绍
进销存系统是什么?
进销存系统是为了对企业生产经营中进货、出货、批发销售、付款等全程进行(从接获订单合同开 始,进入物料采购、入库、领用到产品完工入库、交货、回收货款、支付原材料款等)跟踪(每一步都 提供详尽准确的数据)、管理(有效辅助企业解决业务管理、分销管理、存货管理、营销计划的执行和 监控、统计信息的收集等方面的业务问题)而设计的整套方案。
2 系统功能模块 2.1 基础资料往来单位资料 货品资料 员工信息 仓库资料 计量单位 账户信息 公司信息 用户可以快速、直观地 查询所需要的数据资料。
2.2 系统管理*** 作员管理 系统设置 数据初始化 系统管理是整个系统的门户,在系统的安全性上起到了不可估 量的作用。各种信息要求尽量全面详细,使管理变得更轻松更有效。
2.3 采购管理新增采购订单 采购订单查询 新增采购单 采购单查询 采购退货 采购明细表 货品采购汇总表 供应商采购汇总表 采购订单完成情况 采购覆盖企业采购的各个环节。企业通过虚拟的在线货品目 录,迅速而实时的访问货品信息;通过价格和品质的比较,选定产品供应商。
2.4 销售管理新增销售订单 销售订单查询 新增销售单 销售单查询 销售退货 销售明细表 货品销售汇总表 客户销售汇总表 销售订单完成情况 销售覆盖企业销售的各个环节。通过销售订单录入与变更,跟 踪管理商品销售情况;根据货品报价和销售数量自动开出销售发票,根据发货单产生结算凭证和 收货单。
2.5 库存管理新增入库单 新增出库单 仓库调拨 库存盘点 期末提供了货品盘点、货品调价以及业务审核等 期末业务处理功能,业务期末结算为财务期末结算做了必要的铺垫作用。
2.6 财务管理付款单 收款单 其他收入 其他支出 账户查询 应付账款表-单据 应付账款表-往来单位 应收账款 表-单据 应收账款表-往来单位
3 技术栈 4 数据库搭建
登陆流程
@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 坐标用户登录成功,用户信息页面展示获取 ${(Session.SPRING_SECURITY_CONTEXT.authentication.principal.username)!'lzj'} org.springframework.boot spring-boot-starter-security
使用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"; }
添加图片验证码
@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; } } com.github.penggle kaptcha2.3.2
控制器输出验证码
@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 系统实现效果
毕设帮助,开题指导,技术解答 746876041
文章版权说明:
该文章由丹成学长全网第一时间发布,CSDN: mathor-sinor,上述系统为丹成学长开发完成,违版必究,如有项目开发需求请联系 丹成学长.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)