- 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 坐标
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";
}
添加图片验证码
@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 kaptcha 2.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,上述系统为丹成学长开发完成,违版必究,如有项目开发需求请联系 丹成学长.



