超市 Pos 收银管理系统

一、前言

网络的广泛应用给生活带来了十分的便利。所以把超市 POS 收银管理与现在网络相结合,利用java技术建设超市 POS 收银管理系统,实现超市 POS 收银管理的信息化。则对于进一步提高超市 POS 收银管理发展,丰富超市 POS 收银管理经验能起到不少的促进作用。
超市 POS 收银管理系统能够通过互联网得到广泛的、全面的宣传,让尽可能多的用户了解和熟知超市 POS 收银管理系统的便捷高效,不仅为群众提供了服务,而且也推广了自己,让更多的群众了解自己。对于超市 POS 收银管理而言,若拥有自己的系统,通过系统得到更好的管理,同时提升了形象。
本系统设计的现状和趋势,从需求、结构、数据库等方面的设计到系统的实现,分别为管理员和员工的实现。论文的内容从系统的设计、描述、实现、分析、测试方面来表明开发的过程。本系统根据现实情况来选择一种可行的开发方案,借助java编程语言和MySQL数据库等实现系统的全部功能,接下来对系统进行测试,测试系统是否有漏洞和测试用户权限来完善系统,最终系统完成达到相关标准。

二、开发环境

开发语言:Java
框架:ssm
技术:JSP
JDK版本:JDK1.8
服务器:tomcat7
数据库:mysql 5.7(一定要5.7版本)
数据库工具:Navicat11
开发软件:eclipse/myeclipse/idea
Maven包:Maven3.3.9
浏览器:谷歌浏览器

后台路径地址:localhost:8080/项目名称/jsp/login.jsp
前台路径地址:localhost:8080/项目名称/front/index.jsp (无前台不需要输入)

管理员账号:abo
管理员密码:abo
2.1 Java介绍
Java语言作为现在主流编程语言之一,就是因为它有很多自己的特点和优势。
Java语言具有以下几个特点:
(1)跨平台性
平时所说的一次编译,到处执行,指的就是这个跨平台性。Java的源代码编译后会生成字节码文件,这些文件可以被Java虚拟机执行,得到想要的结果。在设备上安装对应的虚拟机,Java的字节码文件就可以运行。
(2)面向对象
Java是一个面向对象的编程语言。面向对象是指把属性和方法进行封装,通过创建的对象调用里面的方法,实现一些功能。
(3)多线程
Java是支持多线程的,它允许在一个程序中同时开启多个线程,同时处理多个任务,这样可以提高它的效率。
Java语言对于开发工具要求不高,有专业的编程工具Eclipse会更顺利编程,但是,没有专业的编程软件,用记事本也能进行编辑。
2.2 Jsp技术
JSP技术本身是一种脚本语言,JSP全称java server page(java服务页),JSP在使用时不能直接被客户端浏览器直接运行,它只能被服务器运行解析,其本质上JSP是一个Servlet,但看上去更像一个HTML,相比较JSP更适合编写服务器端运行界面。它与HTML的最大区别,就是JSP在客户端浏览器中查看源码是看不到的。简单地说,JSP就是在HTML的基础上加了JAVA代码。JSP还拥有九大内置对象,可以更好地对网页进行开发。
JSP的运行方式有很多种,基础原理为当项目启动时,Tomcat接收到JSP界面请求并将JSP转换为一个JAVA类(Serlvet类),将相应的对象和属性创建成功后,将界面中HTML标签通过out对象进行输出响应,将Servlet的java类进行编译,生成.class文件,在由jvm进行运行,产生的的结果响应给客户端浏览器。相对于以往的html开发,JSP的功能很全面,因为可以使用所有的JAVA类,方法很简便。
2.3 MySql数据库
MySql数据库具有轻便、稳定等特点,在系统的工程中对相关的数据操作,很好的保障数据的稳定,极大程度上减低了系统开发的时间。
MySql数据库支持多线程工作,能充分利用系统的资源,更具有效率且数据库连接也有对于的不同模式接口;MySql存储小、运行稳定并且对使用的要求不高。
利用MySql建立系统数据库,利于对系统的数据处理早期的整合,可以更好的发展后数据的扩展实际操作[3]。
Mysql数据库的特点如下:
(1)Mysql是相比于Oracle更轻量、更简洁便于使用,在服务部署方面相对复杂度低,更利于毕设系统的开发。
(2)支持多种操作系统包括AIX、FreeBSD、HP-UX、Linux和Mac OS、Novell‘s Netware、OpenBSD系统、OS/2卷、Solaris、Windows等。
(3)查询速度快。算法优化了查询语句,可靠地提高了搜索速度。
(4)Mysql可以使用Sql语言进行调用,学习成本较低。
(5)Mysql可支持互联网站数据共享也支持数据安全设置,防止数据泄露。
(6)高度非过程化。在访问数据库时,没有必要一步一步向计算机发送指令去完成任务,只需要用MySQL语句描述并且命令就可以了,数据库会自动完成全部工作。
2.4 B/S架构
Browser/Server简称(B/S),即:浏览器/服务器架构模式;属于WEB发展后的所出现的一种网络构造,而WEB又是主要的浏览器应用商品软件。B/S架构模式不仅将系统的重新开发、维修及利用等简单化,更将其重点放到了服务器上。它使客户端得到了统一,在服务器上汇集了系统功能的最核心部分。
B/S架构模式,在服务器接收到浏览器发出请求后将进行对应的回应。Internet上文本、图片、动画等信息主要由Web服务器产生,而用户主要是通过浏览器访问这些信息。在Web上下载程序时遇到某些和数据库相关的指令,可以将这些指令转接到数据库服务器来进行解释和执行。B/S架构工作流程图如2-1所示:
图2-1 B/S架构工作流程图
2.5 SSM框架
当今流行的“SSM组合框架”是Spring + SpringMVC + MyBatis的缩写,受到很多的追捧,“组合SSM框架”是强强联手、各司其职、协调互补的团队精神。web项目的框架,通常更简单的数据源。Spring属于一个轻量级的反转控制框架(IoC),但它也是一个面向表面的容器(AOP)。SpringMVC常常用于控制器的分类工作模式,与模型对象分开,程序对象的作用与自动取款机进行处理。这种解耦治疗使整个系统的个性化变得更加容易。MyBatis是一个良好的可持续性框架,支持普通SQL查询,同时允许对存储过程的高级映射进行数据的优化处理。大型Java Web应用程序的由于开发成本太高,开发后难以维护和开发过程中一些难以解决的问题,而采用“SSM组合框架”,它允许建立业务层次结构,并为这个问题提供良好的解决方案。

三、系统功能效果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、核心代码

package com.interceptor;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
import com.alibaba.fastjson.JSONObject;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;

import com.annotation.IgnoreAuth;
import com.entity.EIException;
import com.entity.TokenEntity;
import com.service.TokenService;
import com.utils.R;

/**
 * 权限(Token)验证
 */
@Component
public class AuthorizationInterceptor implements HandlerInterceptor {

    public static final String LOGIN_TOKEN_KEY = "Token";

    @Autowired
    private TokenService tokenService;
    
	@Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

        //支持跨域请求
		response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Credentials", "true");
        response.setHeader("Access-Control-Allow-Headers", "x-requested-with,request-source,Token, Origin,imgType, Content-Type, cache-control,postman-token,Cookie, Accept,authorization");
        response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));

        IgnoreAuth annotation;
        if (handler instanceof HandlerMethod) {
            annotation = ((HandlerMethod) handler).getMethodAnnotation(IgnoreAuth.class);
        } else {
            return true;
        }

        //从header中获取token
        String token = request.getHeader(LOGIN_TOKEN_KEY);
        
        /**
         * 不需要验证权限的方法直接放过
         */
        if(annotation!=null) {
        	return true;
        }
        
        TokenEntity tokenEntity = null;
        if(StringUtils.isNotBlank(token)) {
        	tokenEntity = tokenService.getTokenEntity(token);
        }
        
        if(tokenEntity != null) {
        	request.getSession().setAttribute("userId", tokenEntity.getUserid());
        	request.getSession().setAttribute("role", tokenEntity.getRole());
        	request.getSession().setAttribute("tableName", tokenEntity.getTablename());
        	request.getSession().setAttribute("username", tokenEntity.getUsername());
        	return true;
        }
        
		PrintWriter writer = null;
		response.setCharacterEncoding("UTF-8");
		response.setContentType("application/json; charset=utf-8");
		try {
		    writer = response.getWriter();
		    writer.print(JSONObject.toJSONString(R.error(401, "请先登录")));
		} finally {
		    if(writer != null){
		        writer.close();
		    }
		}
//				throw new EIException("请先登录", 401);
		return false;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

写JAVA代码的人

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

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

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

打赏作者

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

抵扣说明:

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

余额充值