用Java EE技术实现产品售后服务系统

简介: 用Java EE技术实现产品售后服务系统

项目编号:BS-XX-202

一,环境介绍

语言环境:Java:  jdk1.8

数据库:Mysql: mysql5.7

应用服务器:Tomcat:  tomcat8.5.31

开发工具:IDEA或eclipse

二,项目简介

我国信息产业、企业售后服务发展迅速,电商的发展超出了所有人都想象,与此同时也带来了诸多的问题。飞速发展的交易额,带来了大量的GDP增长,然而光鲜的背后是每天无数客服手忙脚乱的为顾客服务。由于顾客对自身生活质量要求越来越高,售后管理业必须随着人们生活水平的提高而改变。伴随着购物规模的不断扩大,售后的各项反馈、投诉,对售后的要求等都将越来越复杂,售后管理系统的自身的管理工作量也将越来越大。人工服务不能做到及时有效的反映,以及做出正确的应对以及保存,迫切需要一个系统来解决这些问题。本项目的出发点力在解决这一困难!

本系统的主要任务是为基于JavaEE技术和SQL Server数据库的售后服务管理系统建立一个企业设计。主要技术要求包括:掌握web开发所需的技术,包括HTML和JSP动态网页编程技术,SQL Server数据库知识,等等。主要实现企业售后服务信息的增删改查,顾客信息的增删改查,顾客留言信息的及时反馈保存,管理员帐号增删、登录等。该系统还可以方便制造商跟踪产品的质量和服务和管理以及购买者对企业的建议提交。

自进入现代社会以来,世界各地越来越密切,文化和经济交流日益频繁,带来了信息的爆炸性增长,近年来随着信息高速公路的快速发展迅速变化,每个人可以访问世界的任何角落,要获取的信息量大幅增长,外部环境的快速变化,完全人为地记录信息变得非常不切实际。如何收集足够的信息,及时快速的处理信息,快速存储和编辑信息,信息技术的发展已经成为现代社会的常见问题。电脑解决了外观上的问题。可以使用大量信息收集,编辑或调查易于使用和快速编辑,计算机和快速处理。同时,电脑硬件的发展也逐渐适应了现代社会信息量的快速增长,信息的快速更新,随时随地改变需求的趋势。可以预见未来信息系统的发展不仅仅是简单的数据处理,而且可以得出工具的结论,可以根据不同的条件从所有可用的信息中筛选,排序,分析,为用户提供一个最终结论,例如现在在实验治疗系统开发中包括开发过程系统简单,数据处理结果小,报表系统进一步发展成为最终决策专家系统的支持系统,甚至在一些领域已成为战略信息系统,可以支持领导层面的竞争战略。这是电脑发展的未来趋势。

目前在国内,售后系统架构主要分为B/S和C/S俩种,B/S是通过浏览器方式来浏览相关信息,进行一系列的相关操作。因为现代社会的信息更新速度快,更新频繁,同时对信息的安全性有很高的要求,所以各公司的内部系统大多采用这种模式,我要做的这个仅仅是为客户投诉,售后服务的,应该公开面向社会,所以,应当采用更稳定的C/S模式。

该系统采用三层结构,这是由客户端和用户通过浏览器完成,并且浏览器的表达逻辑由JSP页负责。

图2-1系统模式图

三,系统展示

1管理登陆

当系统登陆时,首先出现的是一个用户登陆的界面,主要是维护系统的安全性和完整性。如下图所示:

图4-12系统主页面

主要代码如下:

定义一个窗体

          setTitle("售后管理系统登录");

          label.setText("用  户  名:");

          label_1.setText("密      码:");

          login.setText("登录");

   reset.setText("重置");

   panel_1.add(reset);

生成验证码

public String getCheckCode(){

      Random random = new Random();

      String sRand="";

      for (int i=0;i<4;i++){

       String rand=String.valueOf(random.nextInt(10));

       sRand+=rand;

      }

       return sRand;

   }

4.4.2 售后服务分类管理

管理员可以对售后服务进行分类,包括对售后服务类别的添加、删除、修改等操作。界面如下图所示:

图4-13系统管理界面

主要代码如下:

x= new x();

      x.open();

      try{

          int i = x.executeUpdate(sql);

          if(i == 1)

             return Constant.SUCCESS;

          else

             return Constant.SYSTEM_ERROR;

      }catch(Exception e){

          e.printStackTrace();

          return Constant.SYSTEM_ERROR;

      }finally{

          x.close();

      }

4.4.3 售后服务信息管理

系统分为管理员和普通用户,管理员权限较高,可对售后服务信息进行管理,包括增、删、修等操作。下图为相关界面:

增加

public int addEmp(String name,String sex,String bir,String departs,String zhiwu,String tel,String address,String remark){

      String sql="insert into emp(name,sex,bir,departs,zhiwu,tel,address,remark,addtime) " +

          "values('"+name+"','"+sex+"','"+bir+"','"+departs+"','"+zhiwu+"','"+tel+"','"+address+"','"+remark+"','"+date+"') ";

      DBO dbo = new DBO();

      dbo.open();

      try{

          int i = dbo.executeUpdate(sql);

          if(i == 1)

             return Constant.SUCCESS;

          else

             return Constant.SYSTEM_ERROR;

      }catch(Exception e){

          e.printStackTrace();

          return Constant.SYSTEM_ERROR;

      }finally{

          dbo.close();

      }

}

修改

public int upEmp(String id,String name,String sex,String bir,String departs,String zhiwu,String tel,String address,String remark){

      String sql="update emp set name='"+name+"',sex='"+sex+"',bir='"+bir+"',departs='"+departs+"',zhiwu='"+zhiwu+"',"+"tel='"+tel+"',address='"+address+"',remark='"+remark+"'  where id='"+id+"' ";

      DBO dbo = new DBO();

      dbo.open();

      try{

          int i = dbo.executeUpdate(sql);

          if(i == 1)

             return Constant.SUCCESS;

          else

             return Constant.SYSTEM_ERROR;

      }catch(Exception e){

          e.printStackTrace();

          return Constant.SYSTEM_ERROR;

      }finally{

          dbo.close();

      }

  }  

图4-14售后服务信息管理

4.4.4 投诉信息管理

管理员还可以对客户留言的投诉信息进行回复或者删除操作,相关界面如下:

删除留言

   public int delGuestBook(int id[]){

      DBO dbo=new DBO();

      dbo.open();

      try{

          for(int i = 0;i<id.length;i++){

 dbo.executeUpdate("delete from  guestbook  where  id = '"+id[i]+"'");  

   dbo.executeUpdate("delete from  replay  where  mid = '"+id[i]+"'");

          }

          return Constant.SUCCESS;

      }catch(Exception e){

          e.printStackTrace();

          return Constant.SYSTEM_ERROR;

      }finally{

          dbo.close();

      }

   }

回复留言

   public int reGuestBook(int mid ,String replay,String replayer){

      String sql = "insert into replay (mid,replay,replayer,replaytime)" +

   " values ('"+mid+"','"+replay+"','"+replayer+"','"+date+"') ";

   String sql2 = "update guestbook set replay='1' where id='"+mid+"' ";

      DBO dbo = new DBO();

      dbo.open();

      try{

          int i = dbo.executeUpdate(sql);

          int j = dbo.executeUpdate(sql2);

          if(i == j && i== 1)

             return Constant.SUCCESS;

          else

             return Constant.SYSTEM_ERROR;

      }catch(Exception e){

          e.printStackTrace();

          return Constant.SYSTEM_ERROR;

      }finally{

          dbo.close();

      }

   }

图4-15 投诉信息管理

4.4.5 产品回访管理

可以对回访信息进行添加修改或删除,界面如下图所示:

图4-16 产品回访管理

四,核心代码展示

package com.action;
/**
 * 
 * 留言本
 */
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.bean.GuestBookBean;
import com.bean.SystemBean;
import com.util.Constant;
import com.util.Filter;
public class GuestBookServlet extends HttpServlet {
  /**
   * Constructor of the object.
   */
  public GuestBookServlet() {
    super();
  }
  /**
   * Destruction of the servlet. <br>
   */
  public void destroy() {
    super.destroy(); // Just puts "destroy" string in log
    // Put your code here
  }
  /**
   * The doGet method of the servlet. <br>
   *
   * This method is called when a form has its tag value method equals to get.
   * 
   * @param request the request send by the client to the server
   * @param response the response send by the server to the client
   * @throws ServletException if an error occurred
   * @throws IOException if an error occurred
   */
  public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
      doPost(request,response);
  }
  /**
   * The doPost method of the servlet. <br>
   *
   * This method is called when a form has its tag value method equals to post.
   * 
   * @param request the request send by the client to the server
   * @param response the response send by the server to the client
   * @throws ServletException if an error occurred
   * @throws IOException if an error occurred
   */
  public void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
    request.setCharacterEncoding(Constant.CHARACTERENCODING);
    response.setContentType(Constant.CONTENTTYPE);
    //nikename, pic, email, qq, weburl, blogurl, expressions, content
    String sysdir = new SystemBean().getDir();
    HttpSession session = request.getSession();
    String method = request.getParameter("method").trim();
      GuestBookBean guestBookBean = new GuestBookBean();
      if(method.equals("add")){//发表留言
        String member=(String)session.getAttribute("member");
        String nikename = Filter.escapeHTMLTags(request.getParameter("nikename").trim());
        String face ="images/nobody.gif";
        String email = Filter.escapeHTMLTags(request.getParameter("email").trim());
        String qq = Filter.escapeHTMLTags(request.getParameter("qq").trim());
        String weburl = Filter.escapeHTMLTags(request.getParameter("weburl").trim());
        String blogurl = Filter.escapeHTMLTags(request.getParameter("blogurl").trim());
        String expressions = "images/face/"+Filter.escapeHTMLTags(request.getParameter("face").trim())+".gif";
        String content = Filter.escapeHTMLTags(request.getParameter("content").trim());
        String ip = request.getRemoteAddr();
        int guestbook=1;
        int flag = guestBookBean.addGuestBook(nikename, face, email, qq, weburl, blogurl, expressions, content, ip,guestbook);
        if(flag == 1){
            request.setAttribute("message", "谢谢您的留言,请等候管理员回复!");
            request.getRequestDispatcher("guestbook.jsp").forward(request, response);
        }
        else{
          request.setAttribute("message", "系统维护中,请稍后再试!");
          request.getRequestDispatcher("guestbook.jsp").forward(request, response);
        }
      }
      else if(method.equals("delguestbook")){//删除留言
        try{
          String username2 = (String)session.getAttribute("user");
          if(username2 == null){
            request.getRequestDispatcher("error.jsp").forward(request, response);
          }
          else{
            String check[] = request.getParameterValues("checkit");
            if(check == null){
              request.setAttribute("message", "请选择要删除的记录!");
              request.getRequestDispatcher(sysdir+"/guestbook/index.jsp").forward(request, response);
            }
            else{
              int id[]= new int[check.length];
              for(int i = 0;i<check.length;i++){
                int s = Integer.parseInt(check[i]);       
                id[i] = s;
              }
              int flag = guestBookBean.delGuestBook(id);
              if(flag == Constant.SUCCESS){
                request.getRequestDispatcher(sysdir+"/guestbook/index.jsp").forward(request, response);
              }
              else{
                request.setAttribute("message", "系统维护中,请稍后再试!");
                request.getRequestDispatcher(sysdir+"/guestbook/index.jsp").forward(request, response);
              }
            }
          }
        }catch(Exception e){
          request.getRequestDispatcher("error.jsp").forward(request, response);
        }
      }
      else if(method.equals("replay")){//回复留言
        try{
          String username2 = (String)session.getAttribute("user");
          if(username2 == null){
            request.getRequestDispatcher("error.jsp").forward(request, response);
          }
          else{
            String messageid = Filter.escapeHTMLTags(request.getParameter("id").trim());
            String replay = Filter.escapeHTMLTags(request.getParameter("replay").trim());
            int flag = guestBookBean.reGuestBook(Integer.parseInt(messageid), replay, username2);
            if(flag == Constant.SUCCESS){
              request.setAttribute("message", "回复成功!");
              request.getRequestDispatcher(sysdir+"/guestbook/index.jsp").forward(request, response);
            }
            else{
              request.setAttribute("message", "系统维护中,请稍后再试!");
              request.getRequestDispatcher(sysdir+"/guestbook/index.jsp").forward(request, response);
            }
          }
        }catch(Exception e){
          request.getRequestDispatcher("error.jsp").forward(request, response);
        }
      }
      else if(method.equals("upreplay")){
        try{
          String username2 = (String)session.getAttribute("user");
          if(username2 == null){
            request.getRequestDispatcher("error.jsp").forward(request, response);
          }
          else{
            String messageid = Filter.escapeHTMLTags(request.getParameter("id").trim());
            String replay = Filter.escapeHTMLTags(request.getParameter("replay").trim());
            int flag = guestBookBean.upReplay(Integer.parseInt(messageid), replay);
            if(flag == Constant.SUCCESS){
              request.setAttribute("message", "修改成功!");
              request.getRequestDispatcher(sysdir+"/guestbook/index.jsp").forward(request, response);
            }
            else{
              request.setAttribute("message", "系统维护中,请稍后再试!");
              request.getRequestDispatcher(sysdir+"/guestbook/index.jsp").forward(request, response);
            }
          }
        }catch(Exception e){
          request.getRequestDispatcher("error.jsp").forward(request, response);
        }
      }
      else{
        request.getRequestDispatcher("error.jsp").forward(request, response);
      }
  }
  /**
   * Initialization of the servlet. <br>
   *
   * @throws ServletException if an error occure
   */
  public void init() throws ServletException {
    // Put your code here
  }
}

五,相关作品展示

基于Java开发、Python开发、PHP开发、C#开发等相关语言开发的实战项目

基于Nodejs、Vue等前端技术开发的前端实战项目

基于微信小程序和安卓APP应用开发的相关作品

基于51单片机等嵌入式物联网开发应用

基于各类算法实现的AI智能应用

基于大数据实现的各类数据管理和推荐系统

相关文章
|
8天前
|
存储 数据可视化 Java
【Java】Java swing 民宿管理系统 GUI(源码+可视化界面)【独一无二】
【Java】Java swing 民宿管理系统 GUI(源码+可视化界面)【独一无二】
|
1天前
|
SQL Java 关系型数据库
实时数仓 Hologres产品使用合集之如何安装和使用Java SDK
实时数仓Hologres是阿里云推出的一款高性能、实时分析的数据库服务,专为大数据分析和复杂查询场景设计。使用Hologres,企业能够打破传统数据仓库的延迟瓶颈,实现数据到决策的无缝衔接,加速业务创新和响应速度。以下是Hologres产品的一些典型使用场景合集。
|
22天前
|
存储 算法 Java
Java ZGC 深度剖析及其在构建低延迟流系统中的实践心得
AutoMQ 基于 ZGC 进行了一系列调优,以获得更低的延迟。在本文中,我们将详细介绍 ZGC 的工作原理,以及如何通过调整和优化 ZGC 的配置来实现更低的延迟,从而提高 Java 应用程序的性能和响应能力。
36 2
Java ZGC 深度剖析及其在构建低延迟流系统中的实践心得
|
11天前
|
前端开发 Java 测试技术
综合案例【商品管理系统-Java基础版】(附完整源码)
综合案例【商品管理系统-Java基础版】(附完整源码)
47 9
|
5天前
|
Java
Java BasePooledObjectFactory 对象池化技术
Java BasePooledObjectFactory 对象池化技术
9 1
|
6天前
|
安全 Java
Java模拟生产者-消费者问题。生产者不断的往仓库中存放产品,消费者从仓库中消费产品。其中生产者和消费者都可以有若干个。在这里,生产者是一个线程,消费者是一个线程。仓库容量有限,只有库满时生产者不能存
该博客文章通过Java代码示例演示了生产者-消费者问题,其中生产者在仓库未满时生产产品,消费者在仓库有产品时消费产品,通过同步机制确保多线程环境下的线程安全和有效通信。
|
15天前
|
安全 Java
Java RMI技术详解与案例分析
在实际的银行系统中,当然还需要考虑安全性、事务性、持久性以及错误处理等多方面的因素,RMI的网络通信也需要在安全的网络环境下进行,以防止数据泄露或被篡改。你在应用中是怎么使用 RMI 的,欢迎关注威哥爱编程,一起交流一下哈。
132 4
|
25天前
|
运维 关系型数据库 Java
PolarDB产品使用问题之使用List或Range分区表时,Java代码是否需要进行改动
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
24天前
|
关系型数据库 Java 分布式数据库
PolarDB产品使用问题之部署到服务器上的Java应用(以jar包形式运行)无法连接,如何解决
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
5天前
|
存储 设计模式 安全
Java GenericObjectPool 对象池化技术--SpringBoot sftp 连接池工具类
Java GenericObjectPool 对象池化技术--SpringBoot sftp 连接池工具类
5 0