用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智能应用

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

相关文章
|
12月前
|
监控 Cloud Native Java
Quarkus 云原生Java框架技术详解与实践指南
本文档全面介绍 Quarkus 框架的核心概念、架构特性和实践应用。作为新一代的云原生 Java 框架,Quarkus 旨在为 OpenJDK HotSpot 和 GraalVM 量身定制,显著提升 Java 在容器化环境中的运行效率。本文将深入探讨其响应式编程模型、原生编译能力、扩展机制以及与微服务架构的深度集成,帮助开发者构建高效、轻量的云原生应用。
1104 44
|
12月前
|
安全 Java API
Java Web 在线商城项目最新技术实操指南帮助开发者高效完成商城项目开发
本项目基于Spring Boot 3.2与Vue 3构建现代化在线商城,涵盖技术选型、核心功能实现、安全控制与容器化部署,助开发者掌握最新Java Web全栈开发实践。
895 1
|
安全 Java 编译器
new出来的对象,不一定在堆上?聊聊Java虚拟机的优化技术:逃逸分析
逃逸分析是一种静态程序分析技术,用于判断对象的可见性与生命周期。它帮助即时编译器优化内存使用、降低同步开销。根据对象是否逃逸出方法或线程,分析结果分为未逃逸、方法逃逸和线程逃逸三种。基于分析结果,编译器可进行同步锁消除、标量替换和栈上分配等优化,从而提升程序性能。尽管逃逸分析计算复杂度较高,但其在热点代码中的应用为Java虚拟机带来了显著的优化效果。
389 4
|
Java API Maven
2025 Java 零基础到实战最新技术实操全攻略与学习指南
本教程涵盖Java从零基础到实战的全流程,基于2025年最新技术栈,包括JDK 21、IntelliJ IDEA 2025.1、Spring Boot 3.x、Maven 4及Docker容器化部署,帮助开发者快速掌握现代Java开发技能。
1902 1
|
12月前
|
JavaScript Java 大数据
基于JavaWeb的销售管理系统设计系统
本系统基于Java、MySQL、Spring Boot与Vue.js技术,构建高效、可扩展的销售管理平台,实现客户、订单、数据可视化等全流程自动化管理,提升企业运营效率与决策能力。
|
11月前
|
移动开发 监控 小程序
java家政平台源码,家政上门清洁系统源码,数据多端互通,可直接搭建使用
一款基于Java+SpringBoot+Vue+UniApp开发的家政上门系统,支持小程序、APP、H5、公众号多端互通。涵盖用户端、技工端与管理后台,支持多城市、服务分类、在线预约、微信支付、抢单派单、技能认证、钱包提现等功能,源码开源,可直接部署使用。
802 24
|
11月前
|
设计模式 消息中间件 传感器
Java 设计模式之观察者模式:构建松耦合的事件响应系统
观察者模式是Java中常用的行为型设计模式,用于构建松耦合的事件响应系统。当一个对象状态改变时,所有依赖它的观察者将自动收到通知并更新。该模式通过抽象耦合实现发布-订阅机制,广泛应用于GUI事件处理、消息通知、数据监控等场景,具有良好的可扩展性和维护性。
731 8
|
11月前
|
安全 前端开发 Java
使用Java编写UDP协议的简易群聊系统
通过这个基础框架,你可以进一步增加更多的功能,例如用户认证、消息格式化、更复杂的客户端界面等,来丰富你的群聊系统。
354 11
|
11月前
|
机器学习/深度学习 人工智能 自然语言处理
Java与生成式AI:构建内容生成与创意辅助系统
生成式AI正在重塑内容创作、软件开发和创意设计的方式。本文深入探讨如何在Java生态中构建支持文本、图像、代码等多种生成任务的创意辅助系统。我们将完整展示集成大型生成模型(如GPT、Stable Diffusion)、处理生成任务队列、优化生成结果以及构建企业级生成式AI应用的全流程,为Java开发者提供构建下一代创意辅助系统的完整技术方案。
485 10
|
11月前
|
人工智能 监控 Java
Java与AI智能体:构建自主决策与工具调用的智能系统
随着AI智能体技术的快速发展,构建能够自主理解任务、制定计划并执行复杂操作的智能系统已成为新的技术前沿。本文深入探讨如何在Java生态中构建具备工具调用、记忆管理和自主决策能力的AI智能体系统。我们将完整展示从智能体架构设计、工具生态系统、记忆机制到多智能体协作的全流程,为Java开发者提供构建下一代自主智能系统的完整技术方案。
1177 4