zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

基于Java( Spring+SpringMVC+JDBC)+MySQL实现(Web)家电售后服务系统【100010064】

2023-09-11 14:17:50 时间

一、家电售后服务系统

1.1 背景

随着生活质量的提高,现在各家各户都在使用家电,但是在家电被购买之后,免不了会出现一些问题,需要厂家提供一些技术支持等,家电售后服务就成了厂家和用户之间一个重要的交流平台,而家电售后服务系统是厂家为了提供给各户客户售后服务的平台,旨在为客户提供更好,更优异的售后服务,确保客户能够买的放心,用的安心。本系统便是基于此背景进行开发

1.2 现状及必要性

事实上,良好的家电售后服务,不仅是满足消费需求保护消费者权益的一-道重要防线,而且也是家电企业承担社会责任的一种表现,并且随着家用电器行业发展到一-定阶段,特别是家电企业处在从产品、价格、促销等手段的竞争向品牌竞争的转型时期,售后服务则承担起更多的职能,成为企业塑造品牌、实施市场差异化竞争,构建品牌增值内涵的重要职能。所以构建完善科学化的售后服务刻不容缓。国内企业:永乐电器公司在其快速的国内市场发展中,其售后服务问题综合国内外各大家电品牌最具代表性,相应的厂商售后服务建设是否完备直接影响其发展。

在社会主义市场经济繁荣发展的今天,买方市场逐渐形成。消费者成为市场主体中尤为重要的主题之一。 家电产品随着老百姓消费能力的提高逐渐成为大众消费品,获取后续的良好地售后服务成为消费者最迫切的诉求。所以家电售后服务的建设有利于维护消费者的消费权益。

1.3 研究内容

本文在互联网发展快速、便捷的节奏下对已成型的售后服务发展方向及应用状况基础上的分析,重点对家电售后的系统需求、业务流程、系统结构、数据库模型进行分析和设计。

此系统运用了 B/S 架构设计、MVC 三层架构、JavaWeb 技术、HTML5+CSS3 页面布局控制技术等,实现了客户咨询模块、客户投诉模块模块、客户报修模块、仓库进出货物模块、工人派遣模块、报修信息记录模块的实现与设计。此系统完成后,客户的报修、咨询、投诉、仓库库存、工人的维修进度、维修的记录几乎全部实现了可视化、可控性、及时获取和实时监控的信息化管理。将会大幅度地提高管理的效率、便捷与安全等,节约了生产运输成本同时也可以根据市场信息更好的安排生产运输以及更加贴心的售后服务。

1.4 课题意义和目的

现今社会,家电已经成为了人们日常生活中不可或缺的一部分,一个好的家电生产厂家应该在用户购买使用家电后给用户一个好的售后服务,让客服买的安心,用得放心,因此开发了该家电售后服务系统。

家电售后服务系统是为本店客人提供售后服务的平台,旨在为客户提供更好,更优异的售后服务,确保客户能够买的放心,用的安心,主要包括以下功能:

  • 客户投诉。客户是要进行投诉的话,我们应该记录好客户所反映的所有信息。
  • 客户报修。客户进行报修的话,我们要记录客户的详细信息,并安排工人上门进行维修。
  • 客户咨询。客户如果咨询问题,我们要详细回答克服的问题并做好记录。
  • 仓库管理。我们要对仓库的货物进行进出货管理,如果仓库某件物品储备量不足的话,要及时进行补货。

1.5 相关技术

该系统文档描述中所用到的相关技术及其术语说明如表 1-1 所示:

术语说明
用例图指由参与者(Actor)、(Use Case)以及它们之间的关系构成的,用于描述系统功能的静态视图。
时序图描述对象之间发送消息的时间顺序显示多个对象之间的动态协作,是一种 UML 交互图.。
类图显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系等。类图不显示暂时性信息。
J2EEJ2EE 是一套全然不同于传统应用开发的技术架构,包含许多组件,主要可简化和规范应用系统的部署与开发,进而提高可移植性、安全性与再利用价值。
SSM 框架SSM 是 Spring+SpringMVC+JDBC 的一个集成框架,是目前是继 SSH 之后流行的一种 Web 应用程序开源框架。
AJAX 技术即“Asynchronous JavaScript and XML”(异步 JavaScript 和 XML),是一种异步局部刷新技术
MySQLMySQL 是一个关系型数据库管理系统。
JDBCJDBC(Java Data Base Connectivity,java 数据库连接)是一种用于执行 SQL 语句的 Java API,可以为多种关系数据库提供统一访问,它由一组用 Java 语言编写的类和接口组成。
JSPJSP 技术使用 Java 编程语言编写类 XML 的 tags 和 Scriptlets,来封装产生动态网页的处理逻辑。网页还能通过 tags 和 Scriptlets 访问存在于服务端的资源的应用逻辑。JSP 将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于 Web 的应用程序的开发变得迅速和容易。
SpringSpring 是一个开源框架,Spring 使用基本的 JavaBean 来完成以前只可能由 EJB 完成的事情。然而,Spring 的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何 Java 应用都可以从 Spring 中受益。简单来说,Spring 是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
SringMVCSpring MVC 属于 SpringFrameWork 的后续产品,Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。
ASHX是对家电售后系统的需求简写
ASH是对家电售后系统的简写
ASH-UC-*是对家电售后系统的用例规约 ID 缩写

二、需求分析

家电售后服务系统是一个综合型服务系统。它包含三个较大的子模块,即:服务、仓库管理和信息记录。本章节将详细讲述家电售后服务系统的需求分析,采用面向对象的分析方法,使用 UML 建立系统用例模型,创建系统功能模型。

2.1 总体需求

家电售后服务系统的用户分为四类:经理、服务员、仓库管理员、信息管理员。家电售后服务系统有维修工人和自己的仓库,有自己的财物结算,主要任务包括客户的投诉处理、客户的咨询处理、客户的报修处理、仓库物品进出记录、维修进度查询和维修结果记录。

  • 经理
    • 经理为该系统的总管理员,可使用所有其他角色的工作模块。
  • 服务员
    • 客户咨询:对客户咨询的问题进行回答并作详细记录。
    • 客户投诉:对客户的投诉的问题进行详细记录。
    • 客户报修:记录客户的保修详细信息,并派遣工人前往维修。
  • 仓库管理员
    • 仓库管理:对仓库的货物进行管理和记录,并对库存不足的货物及时进行补货。
    • 仓库入库:对仓库的入库物品进行记录。
    • 仓库出库:对仓库的出库物品进行记录。
  • 信息管理员
    • 对维修的接股票和维修记录进行记录并按照维修结果对工人发放奖金。

2.2 功能需求

对于家电售后服务系统的功能需求用例描述如图 2-1 所示:

图 2-1 系统用例

2.2.1 系统角色

经理的功能有所有其他角色的相关功能。如图 2-2 所示:

图 2-2 经理功能

服务员的功能有:客户咨询信息录入、客户投诉信息录入、客户报修信息录入、维修工人派遣。如图 2-2 所示:

图 2-3 服务员功能

仓库管理员的功能有:仓库库存记录、仓库物品出库、仓库物品入库。如图 2-3 所示:

图 2-4 仓库管理员功能

信息管理员的功能有:维修结果记录、查询。如图 2-5 所示:

图 2-5 信息管理员功能

2.2.2 需求描述

登录

关联角色:经理、服务员、仓库管理员、信息管理员

需求编号:ASHX-001

需求描述:系统数据库中存在的用户,无论什么角色,如系经理、服务员、仓库管理员、信息管理员,都可以登录进入该系统。

备注说明:该系统数据库中必须存在用户的登录账号和密码,才可进行登录操作。

客户咨询

关联角色:服务员

需求编号:ASHX-002

需求描述:服务员登陆后,针对客户咨询的问题进行详细的解答并录入系统。

备注说明:登录后,才可进行相关的操作。

客户投诉

关联角色:服务员

需求编号:ASHX-003

需求描述:服务员登录后,将客户投诉的问题录入系统。

备注说明:登录后,才可进行相关的操作。

客户报修

关联角色:服务员

需求编号:ASHX-004

需求描述:服务员登录后,将客户报修的信息和联系方式进行记录。

备注说明:登录后,才可进行相关的操作。

工人派遣

关联角色:服务员

需求编号:ASHX-005

需求描述:管理员登录后,可以查看已经报修的客户信息列表,并派遣工人前往维修。

备注说明:登录后,才可进行相关的操作。

仓库库存

关联角色:仓库管理员

需求编号:ASHX-006

需求描述:仓库管理员登录后,可以查看仓库内的库存物品信息。

备注说明:登录后,才可进行相关的操作。

库存录入

关联角色:仓库管理员

需求编号:ASHX-007

需求描述:仓库管理员登录后,可以针对仓库内库存不足的货物进行补货,也可以对维修工人借走的维修工具和配件进行归还,同时针对维修工人带回的废旧配件进行记录。

备注说明:登录后,才可进行相关的操作。

库存出库

关联角色:仓库管理员

需求编号:ASHX-008

需求描述:仓库管理员登录后,针对维修工人借走的维修工具和配件进行详细记录。

备注说明:登录后,才可进行相关的操作。

维修记录

关联角色:信息管理员

需求编号:ASHX-009

需求描述:信息管理员登录后,可以针对维修工人带回的维修记录表进行记录,并对维修工人进行奖金发放。

备注说明:登录后,才可进行相关的操作。

2.3 非功能需求

2.3.1 性能要求

系统支持多用户并发操作。

系统处理操作响应时间不超过 10 秒。

2.3.2 可扩展性

系统当前使用的人数不多且功能简单,对于后期使用人数的增多以及功能的修改和增删,都能够做出相应的扩展。

2.3.3 可用性

保证正常情况下系统可用,可允许系统每月停机一段时间,来进行相关的系统维护。维护时间可安排在恰当的非工作时间进行。

2.3.4 安全性

操作跟踪

针对系统运行出现的异常,跟踪调查出现异常的情况,有针对性的解决问题。

系统日志,便于查看系统的运行情况。

操作日志, 提供用户在系统中增加、修改系统数据信息时日志记录,用于跟踪用户的相关操作。

访问控制

页面不可以直接访问,防止他人对页面进行篡改。页面访问通过连接动作驱动有效防止用户通过地址栏输入地址而对信息非法访问作了权限检查相关操作。

2.3.5 易用性

系统简单、易用,具有清晰的导航功能,使用户能快速找到自己想要执行的操作页面。同时,也能保证用户通阅读用户手册,可以使用此系统。

2.3.6 开发环境

软件约束

家电售后服务系统采用 IntelliJ IDEA 和 MySQL 为工具进行开发。

开发及运行的软件环境为:win10;

开发系统平台:IntelliJ IDEA + Tomcat8.0 + JDK1.8;

浏览器:Internet Explorer 8.0 或者以上版本、Googole、Firefox 等;

数据库:MySQL;
开发框架:SSM 框架,jQuery,Easyui。

硬件约束

操作系统:32/64 位的 Windows 7/8 及以上系统

2.4 用例规约描述

本章节主要根据《软件需求规格说明书》,来进行的用例建模,并对用例模型进行具体描述。用例规约是面向对象分析和设计的重要步骤。

2.4.1 用例目的

用例是从外部角度描述用户和系统之间相互作用的行为,表达系统应该做什么。本文档通过用例规约,来进一步描述该系统需求,它是系统设计的基础,也是测试用例编写的重要依据。

2.4.2 用例描述

用户登录

用户登录系统后台的用例规约如表 2-1 所示:

表 2-1 用户登录用例规约

用例名称用户登录
用例 IDASH-UC-001
用例说明用户登录系统
执行者经理、服务员、仓库管理员、信息管理员
前置条件
主成功场景用户访问系统;系统显示登录页面;用户输入用户名和密码,选择登录身份,然后单击“登录”按钮;系统验证用户名和密码、身份及用户的状态 ;系统显示登录成功后的个人资料页面
扩展 1(4a)用户名和密码为空、身份未选;(4a1) 系统弹出提示框“用户名或密码错误”,显示当前的登录页。;(4a2) 返回主成功场景步骤(3)
扩展 2(4b) 用户名或密码或身份填写错误或用户被禁用;(4b1) 系统弹出提示框“用户名或密码错误”,显示当前的登录页;(4b2) 返回主成功场景步骤(3)
后置条件:登录成功,可以进行权限范围内的其他操作。
备注说明:只有系统数据库中存在的用户才可按身份登录该系统。

客户咨询

服务员、经理登录系统后台进行客户咨询处理操作的用例规约如表 2-2 所示:

表 2-2 客户咨询处理用例规约

用例名称客户咨询处理
用例 IDASH-UC-002
用例说明服务员操作系统管理模块的客户信息模块—客户咨询
执行者服务员、经理
前置条件登录成功
主成功场景服务员或经理进入系统后台主页;选择后台主页左侧的菜单导航栏的“报修、咨询及投诉”,展开其子菜单,点击“客户咨询”,进入客户咨询处理界面;输入相关的信息,点击“提交信息”,即可完成客户咨询信息保存并录入数据库中;保存后会转到客户咨询记录界面,显示所有的已咨询问题
扩展(3a)填写信息格式不对或者为空 ;(3a1) 系统无法提交信息更新数据库的信息咨询表,并返回错误信息;(3a2) 返回主成功场景步骤(4)
后置条件:客户信息咨询处理成功,可以进行权限范围内的其他操作。
备注说明:只有输入的信息格式正确,操作才可顺利进行

客户投诉

经理或管理员登录系统后台进行客户投诉处理操作的用例规约如表 2-3 所示:

表 2-3 客户投诉处理用例规约

用例名称客户投诉处理
用例 IDASH-UC-003
用例说明服务员操作系统管理模块的客户信息模块—客户咨询
执行者服务员、经理
前置条件登录成功
主成功场景服务员或经理进入系统后台主页;选择后台主页左侧的菜单导航栏的“报修、咨询及投诉”,展开其子菜单,点击“客户投诉”,进入客户投诉处理界面;输入相关的信息,点击“提交信息”,即可完成客户投诉信息保存并录入数据库中;保存后会转到客户投诉记录界面,显示所有的已投诉问题
扩展(3a)填写信息格式不对或者为空 ;(3a1) 系统无法提交信息更新数据库的信息投诉表,并返回错误信息;(3a2) 返回主成功场景步骤(4)
后置条件:客户投诉处理成功,可以进行权限范围内的其他操作。
备注说明:只有输入的信息格式正确,操作才可顺利进行

客户报修

服务员或经理登录系统后台进行客户报修处理操作的用例规约如表 2-4 所示:

表 2-4 客户报修处理用例规约

用例名称客户报修处理
用例 IDASH-UC-004
用例说明服务员操作系统管理模块的客户信息模块—客户咨询
执行者服务员、经理
前置条件登录成功
主成功场景服务员或经理进入系统后台主页;选择后台主页左侧的菜单导航栏的“报修、咨询及投诉”,展开其子菜单,点击“客户报修”,进入客户报修处理界面;输入相关的信息,点击“提交信息”,即可完成客户报修信息保存并录入数据库中;保存后会转到客户报修记录界面,显示所有的已报修问题;点击相应报修记录的“查看”按钮,即可转到详细报修记录;可为状态为未修好和未维修的报修记录再次派遣工人
扩展(3a)填写信息格式不对或者为空 ;(3a1) 系统无法提交信息更新数据库的信息报修表,并返回错误信息;(3a2) 返回主成功场景步骤(4);(6a)填写信息格式不对或者为空 ;(6a1) 系统无法提交信息更新数据库的工人派遣表和保修处理记录表,并返回错误信息;(6a2) 返回主成功场景步骤(4)
后置条件:客户报修处理成功成功,可以进行权限范围内的其他操作。
备注说明:只有输入的信息格式正确,操作才可顺利进行

仓库库存

仓库管理员或经理登录系统后台进行仓库库存查询操作的用例规约如表 2-5 所示:

表 2-5 仓库库存查询用例规约

用例名称仓库库存查询
用例 IDASH-UC-005
用例说明仓库管理员操作系统管理模块的仓库管理—仓库内物品信息
执行者经理、仓库管理员
前置条件登录成功
主成功场景经理或仓库管理员进入系统后台主页;选择后台主页左侧的菜单导航栏的“仓库管理”,展开其子菜单,点击“仓库内物品信息”,进入仓库库存查询界面;在此界面先死仓库内物品的所有信息
扩展
后置条件:仓库库存查询成功,可以进行权限范围内的其他操作。
备注说明:

物品入库

经理或仓库管理员登录系统后台进行对物品的入库操作用例规约如表 2-6 所示:

表 2-6 物品的入库操作用例规约

用例名称物品入库
用例 IDASH-UC-006
用例说明仓库管理员操作系统管理模块的仓库管理—物品入库
执行者经理、仓库管理员
前置条件登录成功
主成功场景经理或仓库管理员进入系统后台主页;选择后台主页左侧的菜单导航栏的“仓库管理”,展开其子菜单,点击“物品入库”,进入仓库入库界面;输入相应的入库物品信息,系统将信息更新到数据库中的库存表里;返回到仓库内物品信息页中显示
扩展(3a) 输入的信息格式不符合;(3a1) 系统无法提交信息更新数据库的库存表。;(3a2) 返回主成功场景步骤(4)
后置条件:相关操作成功,可以进行权限范围内的其他操作。
备注说明:进行物品入库操作时,输入的信息格式要正确

物品出库

经理或仓库管理员登录系统后台进行仓库内物品出库操作用例规约如表 2-7 所示:

表 2-7 仓库内物品出库操作用例规约

用例名称仓库内物品出库操作
用例 IDASH-UC-007
用例说明仓库管理员操作系统管理模块的仓库管理—物品出库
执行者经理、仓库管理员
前置条件登录成功
主成功场景经理或仓库管理员进入系统后台主页;选择后台主页左侧的菜单导航栏的“仓库管理”,展开其子菜单,点击“物品出库”,进入仓库出库界面;输入相应的出库物品信息,系统将信息更新到数据库中的库存表里;返回到仓库内物品信息页中显示
扩展(3a) 输入的信息格式不符合;(3a1) 系统无法提交信息更新数据库的库存表。;(3a2) 返回主成功场景步骤(4)
后置条件:相关操作成功,可以进行权限范围内的其他操作。
备注说明:进行物品出库操作时,输入的信息格式要正确

录入维修记录

经理或信息管理员登录系统后台进行维修记录录入操作用例规约如表 2-8 所示:

表 2-8 维修记录录入操作用例规约

用例名称维修记录录入
用例 IDASH-UC-008
用例说明经理、信息管理员操作系统管理模块的维修记录—录入维修记录
执行者经理、信息管理员
前置条件登录成功
主成功场景经理或信息管理员进入系统后台主页;选择后台主页左侧的菜单导航栏的“维修记录”,展开其子菜单,点击“录入维修记录”,进入待录入维修记录列表界面;选择要录入的维修记录,点击查看,进入详细维修记录录入界面;按格式输入相应的信息,点击确认即可完成信息的录入;返回到已录入维修记录列表
扩展(4a) 输入的信息格式不符合;(4a1) 系统无法提交信息更新数据库的库存表。;(4a2) 返回主成功场景步骤(4)
后置条件:相关操作成功,可以进行权限范围内的其他操作。
备注说明:进行维修记录录入操作时,输入的信息格式要正确

维修记录查看

经理或者信息管理员登录系统后台进行维修记录查看操作用例规约如表 2-9 所示:

表 2-9 维修记录查看操作用例规约

用例名称维修记录查看
用例 IDASH-UC-009
用例说明经理、信息管理员操作操作系统管理模块的维修记录–维修完成记录表
执行者经理、信息管理员
前置条件登录成功
主成功场景经理或信息管理员进入系统后台主页;选择后台主页左侧的菜单导航栏的“维修记录”,展开其子菜单,点击“维修完成记录表”,进入已完成维修记录列表界面;选择要查看的维修记录,点击查看,进入详细维修记录查看入界面;点击确认返回已完成维修记录列表。
扩展
后置条件:已完成维修记录查看成功,可以进行权限范围内的其他操作。
备注说明:

三、系统分析

家电售后服务平台实现对用户咨询、投诉和保修的处理,主要分为维修记录管理、仓库管理、客户需求处理三个层次结构。系统的总体结构图如下所示:

图 3-1 系统总体结构

3.1 静态模型

3.1.1 实体类

  • 有属性
  • 有操作
  • 与其他类有关联

类描述了一组对象的公共属性和行为,类为对象规定了它们的属性和所能提供的操作。下面是该系统中经理权限内各个类之间的关联模型图。这些类包括:服务员、信息管理员、仓库管理员、维修工人、客户的咨询、投诉、保修信息、维修记录表、仓库库存表、物品的入库和出库等。如图 3-1 所示:

图 3-2 分析实体类

3.1.2 边界类

系统的用户通过边界类与系统打交道,用户向边界类发起访问,边界类把用户的申请提交给控制类,控制类最终访问实体类。一般在进行设计时可能一个用例对应一个边界类,也可能是一个用户对应一个边界类,有时一个边界类可能还要调用另一个边界类才能完成用例。系统主要的边界类如下表所示,边界类的命名以具体的英文描述,系统的边界类说明如表 3-1 所示:

表 3-1 系统边界类说明表

边界类名称说明
login.jsp后台登录边界类
main.jsp后台登录成功主页面边界类
complaint.jsp投诉信息边界类
complaintcheck.jsp投诉处理边界类
complaintlist.jsp投诉信息列表边界类
consult.jsp咨询信息边界类
consultlist.jsp咨询信息列表边界类
fixLogCheck.jsp已完成维修信息查看边界类
fixLoged.jsp已完成维修信息列表边界类
fixLoging.jsp未完成维修信息列表边界类
index.jsp系统主页边界类
left.jsp用户模块显示边界类
inside.jsp物品入库边界类
outside.jsp物品出库边界类
repair.jsp报修信息边界类
repaircheck.jsp报修信息查看边界类
repairlist.jsp报修信息列表边界类
return.jsp物品归还边界类
storage.jsp库存查看边界类
updateFixLog.jsp维修记录完善边界类
workerlist.jsp工人列表边界类

3.1.3 控制类

边界类通过控制类访问实体类,这是三层架构设计体系结构,本系统一个实体类基本有一个控制类做管理。系统主要的控制类如表 3-2 所示:

表 3-2 系统控制类说明表

控制类名称说明
LoginServlet用户登录控制类
ComplaintServlet投诉信息控制类
ConsultServlet咨询信息控制类
FixLogServlet维修记录控制类
RepairServlet报修信息控制类
StorageServlet库存信息控制类

3.2 时序图的分析

时序图主要描述了不同对象之间发送消息的时间顺序显示多个对象之间的动态协作。本系统基本上对每个用例建立了一个时序图,建立时序图是为了进一步描述用例。

本项目的体系结构采用三层架构规范。其中:

  • 表示层,用于与用户进行交互并显示结果,在时序图中由边界类来实现这一层。
  • 控制层,主要完成三项任务,一是调用实体类,二是业务逻辑验证,三是决定将合适的视图组件返回给用户。
  • 模型层,主要由实体类组成,包括一些基本的逻辑。

登录时序图

用户在登录边界类中输入登录验证信息:用户名、密码、用户类型,通过用户控制类调用用户登录实体类完成用例,最终验证成功时进入系统主界面。用户登录时序图如图 3-1 所示:

  • 图 3-1 用户登录时序图

客户咨询时序图

服务员在咨询信息边界类中输入:问题、客户姓名、联系电话、回答,通过咨询信息控制类调用信息咨询实体类完成用例,最终返回到系统界面。客户咨询处理时序图如图 3-2 所示:

  • 图 3-2 客户咨询时序图

客户投诉时序图

服务员在投诉信息边界类中输入:产品名、投诉原因、客户姓名、联系电话、客户地址,通过投诉信息控制类调用信息投诉实体类完成用例,最终返回到系统界面。客户投诉处理时序图如图 3-3 所示:

  • 图 3-3 客户投诉时序图

客户报修时序图

服务员在报修信息边界类中输入:产品名、报修原因、客户姓名、联系电话、客户地址,通过报修信息控制类调用报修信息实体类完成用例,返回到保修信息边界类,通过个人列表边界类为报修记录选择相应工人,调用工人列表实体类完成用例,返回的报修信息边界类。客户保修处理时序图如图 3-4 所示:

  • 图 3-4 客户报修时序图

仓库库存查看时序图

仓库管理员登录系统后台后进入仓库库存边界类,通过库存信息控制类调用库存查看实体类完成用例,完成操作。仓库库存查看时序图如图 3-5 所示:

  • 图 3-5 仓库库存查看时序图

物品入库时序图

仓库管理员登录系统后台后进入物品入库边界类,选择物品入库类型,通过库存信息控制类调用物品入库实体类完成用例,最终操作成功。物品入库时序图如图 3-6 所示:

  • 图 3-6 物品入库时序图

物品出库时序图

仓库管理员登录系统后台后进入物品出库边界类,选择并填入相应信息,通过库存信息控制类调用物品出库实体类完成用例,最终操作成功。物品出库时序图如图 3-7 所示:

图 3-7 物品出库时序图

录入维修记录时序图

信息管理员登录系统后台后进入录入维修记录边界类,选择相应的待录入记录并输入相应信息,通过维修记录控制类调用维修记录录入实体类完成用例,最终完成操作。录入维修记录时序图如图 3-8 所示:

图 3-8 录入维修记录时序图

维修完成记录查看时序图

信息管理员登录系统后台后进入维修完成记录列表边界类,选择对应记录点击查看即可查看列表详细信息,通过维修记录控制类调用维修完成记录查看实体类完成用例,最终完成操作。维修完成记录查看时序图如图 3-9 所示:

图 3-9 维修完成记录查看时序图

四、系统设计

4.1 架构设计

本系统采用基于 Web 服务的 B/S 结构(即浏览器和服务器结构)的架构。在 B/S 结构下,用户操作界面是通过 Web 页面来展示实现,极少部分的事务逻辑需要在前端(Browser)实现,但是主要事务逻辑操作在服务器端实现,形成所谓三层 Three-tier 结构。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本。B/S 架构管理软件更方便、速度快、效果优。

系统使用基于 MVC 模式的三层架构,分为 View 表示层、Controller 控制层、JavaBean 数据访问层以及数据库,如图 4-1 所示:

图 4-1 MVC 模式的三层架构图

4.2 类设计

用户信息 User 类

用户信息类包含属性用户 id、用户名、密码、姓名,用户类的方法有登录,设计用户类图如图 4-2 所示:

报修/投诉 Complaint 类

报修/投诉类包含属性报修/投诉 id、产品名称、报修/投诉原因、客户姓名、客户电话、客户地址、状态、类型,报修/投诉类的方法有增加、删除、修改和查询等,设计报修/权限类图如图 4-2 所示:

咨询 Consult 类

咨询类包含属性咨询 id、咨询问题、问题回答、客户姓名、客户电话,咨询类的方法有增加和查询等,设计咨询类图如图 4-2 所示:

客户 Customer 类

客户类包含属性客户 id、客户姓名、客户电话、客户地址、产品名,客户类的方法有增加,设计客户类图如图 4-2 所示:

图 4-2 User 类、Complaint 类、Consult 类、Customer 类的各自设计类图

维修记录 Fixlog 类

维修类包含属性维修记录 id、维修工人名、维修工人工号、使用工具名、使用工具数量、产品配件名、产品配件数量、借走工具时间、归还工具时间、维修状态、维修费用、产品名、维修原因、维修时间、应得奖金、破旧配件名、破旧配件数量、客户名、客户电话、客户地址,维修类的方法有增加、修改和查询等,设计维修记录类图如图 4-3 所示:

物品入库 Putin 类

物品入库类包含属性物品入库 id、物品名称、物品价格、物品用途、入库时间、物品状态、物品类型、入库数量,物品入库类的方法有增加、查询,设计物品入库类图如图 4-3 所示:

仓库库存 Stock 类

仓库库存类包含属性 id、物品名称、物品数量、物品类型,仓库库存类的方法有增加、修改和查询等,仓库库存类图如图 4-3 所示:

图 4-3 FixLog 类、Putin 类、Stock 类的各自设计类图

4.3 数据库表设计

4.3.1 概念模型

客户咨询

图 4-4 客户咨询 E-R 图

客户投诉

图 4-5 客户投诉 E-R 图

客户报修

图 4-6 客户报修 E-R 图

库存查看

图 4-7 库存查看 E-R 图

物品入库

图 4-8 物品入库 E-R 图

物品出库

图 4-9 物品出库 E-R 图

录入维修记录

图 4-10 录入维修记录 E-R 图

查询维修记录

图 4-11 查询维修记录 E-R 图

4.3.2 物理模型

用户信息表

用户表包括经理表(superadmin)、服务员表(waiter)、仓库管理员表(admin)、信息管理员表(infoadmin)、客户表(customer)、工人表(worker)用于存放用户的基本信息,如表 4-1、4-2、4-3、4-4、4-5、4-6 所示:

表 4-1 经理表(superadmin)

字段名字段类型字段描述及说明
idint 自增经理用户 id (经理表的主键,不为空)
usernamevarchar工号 (不为空)
passwardvarchar登录密码(不为空)
namevarchar真实姓名(不为空)

表 4-2 服务员表(waiter)

字段名字段类型字段描述及说明
idint 自增服务员 id (服务员表的主键,不为空)
usernamevarchar工号 (不为空)
passwardvarchar登录密码(不为空)
namevarchar真实姓名(不为空)

表 4-3 仓库管理员表(admin)

字段名字段类型字段描述及说明
idint 自增仓库管理员 id (仓库管理员表的主键,不为空)
usernamevarchar工号 (不为空)
passwardvarchar登录密码(不为空)
namevarchar真实姓名(不为空)

表 4-4 信息管理员表(infoadmin)

字段名字段类型字段描述及说明
idint 自增信息管理员 id (信息管理员表的主键,不为空)
usernamevarchar工号 (不为空)
passwardvarchar登录密码(不为空)
namevarchar真实姓名(不为空)

表 4-5 客户表(customer)

字段名字段类型字段描述及说明
idint 自增客户 id (客户表的主键,不为空)
productnamevarchar产品名 (不为空)
phonevarchar电话号码(不为空)
namevarchar真实姓名(不为空)
addressvarchar住址(不为空)

表 4-6 工人表(worker)

字段名字段类型字段描述及说明
idint 自增工人 id (工人表的主键,不为空)
usernamevarchar工号 (不为空)
stateint状态
namevarchar真实姓名(不为空)

投诉/报修表

投诉/报修表(complaint)用于存放投诉/报修信息信息,如表 4-7 所示:

表 4-7 投诉/报修表(complaint)

字段名字段类型字段描述及说明
idint 自增投诉/报修 id (投诉/报修表的主键,不为空)
productnamevarchar产品名称(不为空)
reasonvarchar报修/投诉原因(不为空)
customernamevarchar客户名称(不为空)
phonevarchar客户电话(不为空)
addressvarchar客户地址(不为空)
stateint处理状态 0=未维修,1=修好,2=未修好,3=维修中
typeint类型 0=保修表,1=投诉表

咨询表

咨询表(consult)用于存放系统用户的角色信息,如表 4-8 所示:

表 4-8 咨询表(consult)

字段名字段类型字段描述及说明
idint 自增咨询 id (咨询表的主键,不为空)
questionvarchar问题描述(不为空)
answervarchar回答(不为空)
customernamevarchar客户名称(不为空)
phonevarchar客户电话(不为空)

维修记录表

维修记录表(fixlog)用于存放系统自持车辆和挂靠车辆的基本信,如表 4-9 所示:

表 4-9 维修记录表(fixlog)

字段名字段类型字段描述及说明
idint 自增维修记录 id (维修记录表的主键,不为空)
workernamevarchar维修工人姓名(不为空)
usernamevarchar维修工人工号(不为空)
toolnamevarchar工具名称(不为空)
toolcountint工具数量(总部名或者车主名不为空)
partsnamevarchar产品配件名称 (不为空)
partscountint产品配件数量(不为空)
borrowtimedatetime借出时间
returntimedatetime归还时间
stateint维修状态(不为空)0=修理失败,1=修理成功,2=处理中
costint维修费用(不为空) 0=在保修期内
productnamevarchar产品名称(不为空)
reasonvarchar维修原因(不为空)
timedatetime维修耗时 (不为空)
bonusint工人奖金 (不为空)
oldpartsvarchar废旧配件名称(不为空)
opcountint废旧配件数量 (不为空)
customernamevarchar客户姓名(不为空)
customerphonevarchar客户电话(不为空)
customeraddressvarchar客户地址(不为空)

物品入库信息表

物品入库信息表(putin)用于存放挂靠车辆所属车主的基本信息,如表 4-10 所示:

表 4-10 物品入库信息表(putin)

字段名字段类型字段描述及说明
idint 自增物品入库信息 id (物品入库信息表的主键,不为空)
namevarchar物品名称(不为空)
priceint物品价格(不为空)
usefulvarchar物品用途(不为空)
timedatetime入库时间 (不为空)
stateint物品状态(不为空)0=正常,1=不正常
countint物品数量(不为空)
typeint物品类型(不为空)0=工具,1=配件

仓库库存表

仓库库存表(stock)用于存放车辆的维护和保养的基本信息,如表 4-11 所示:

表 4-11 仓库库存表(stock)

字段名字段类型字段描述及说明
idint 自增仓库库存 id(仓库库存表的主键,不为空)
typeint物品类型(不为空)0=工具,1=产品配件,2=坏的产品配件,3=坏的工具
namevarchar物品名称(不为空)
countint物品数量(不为空)

五、系统实现与测试

​ 后台功能模块的实现具体采用 SSM(Spring SpringMVC Mybatis)框架,利用 Java 开发语言,界面的实现主要采用 jQuery Easyui 框架布局和基本的 HTML+CSS+DIV+JS 页面编写技术。其中整个系统中的难点和突破点是不同角色的登录功能实现和信息记录计数分页功能,前者采用了数据库表来管理系统的所有功能菜单,在登录的模块中加入区分角色的菜单匹配功能,即可实现动态的根据用户不同角色的登录显示不同的功能模块;后者主要是封装成一个 PageBean 类,在对每个模块列表查询的模块中加入分页处理的功能,即可实现列表数目的统计及相应的分页功能。

5.1 通用模块

5.1.1 工具类

字符串操作类

if(username==null || username.equals("")) {
    HttpSession session = request.getSession();
    session.setAttribute("username", "");
    session.setAttribute("unerror", "用户名不得为空");
    session.setAttribute("pwderror", "");
    request.getRequestDispatcher("/login.jsp").forward(request, response);
}
if(password==null || password.equals("")) {
    HttpSession session = request.getSession();
    if (username==null || username.equals("")) {
        session.setAttribute("username", "");
        session.setAttribute("unerror", "用户名不得为空");
        session.setAttribute("pwderror", "");
    } else {
        session.setAttribute("username", username);
        session.setAttribute("unerror", "");
        session.setAttribute("pwderror", "密码不得为空");
    }
}

页面请求类

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("text/html;charset=utf-8");
    request.setCharacterEncoding("utf-8");
    String action = request.getParameter("action");
    System.out.println(action);
    if(action.equals("login")) {
        try {
            Login(request,response);
        }
        catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println(action+"已执行");
    }
}

5.1.2 数据源配置

数据源配置

InputStream in =JDBCUtils.class
                .getClassLoader().getResourceAsStream("DBDriverConfig.properties");
Properties prop =new Properties();
try {

    driver ="com.mysql.jdbc.Driver";
    url =
        "jdbc:mysql://localhost:3306/dbmanager?useUnicode=true&characterEncoding=utf8";
    name ="root";
    password ="123";
    Class.forName(driver);
} catch (Exception e) {
    throw new ExceptionInInitializerError(e);
}

Servlet 相关配置(利用注释)

@WebServlet(name = "LoginServlet",urlPatterns = "/loginServlet")
@WebServlet(name = "ComplaintServlet",urlPatterns = "/ComplaintServlet")
@WebServlet(name = "ConsultServlet",urlPatterns = "/ConsultServlet")
@WebServlet(name = "FixLogServlet", urlPatterns = "/FixLogServlet")
@WebServlet(name = "RepairServlet",urlPatterns = "/RepairServlet")
@WebServlet(name = "StorageServlet",urlPatterns = "/StorageServlet")

事务调用配置

<!-- 配置事务调用 -->
if(action.equals("login")) {
    try {
        Login(request,response);
    } catch (Exception e) {
        e.printStackTrace();
    }
    System.out.println(action+"已执行");
}

5.2 功能模块

5.2.1 后台登录界面

系统后台运行之后,进入的就是一个后台登录的界面,在这个页面中你需要输入用户名和密码,并选择登录的类型(或是身份),同时要保证数据库中该用户存在且状态是“启用”的,才可进入对应的后台界面中。如图 5-1 所示:

图 5-1 后台登录界面

5.2.2 后台主页

以不同身份登录后,进入系统后台主页显示的模块不同,这是用 EasyUi 实现的框架。用户可以操作界面左侧导航菜单的相应管理模块。如:报修、咨询及投诉、维修记录、仓库管理。如图 5-2 所示:

图 5-2 后台主页面(经理身份登入)

5.2.3 报修、咨询及投诉

当用户以经理身份或服务员身份登入系统时才会显示该模块,该模块共包括客户报修、客户咨询、客户投诉、报修记录、咨询记录、投诉记录六个子模块,每个子模块对应相应的功能和对数据库的查询,添加,修改等操作。如图 5-3 所示:

图 5-3 后台系统管理—报修记录页面

5.2.4 维修记录

当用户以经理或信息管理员身份登入系统时会显示维修记录模块,该模块共包括录入维修记录、查看已完成维修记录列表两个子模块,每个子模块对应相应的功能和对数据库的查询,添加,修改等操作。如图 5-4 所示:

图 5-4 后台系统管理—查看已完成维修记录页面

5.2.5 仓库管理

当用户以经理或仓库管理员身份登入系统时会显示仓库管理模块,该模块共包括仓库内物品信息 、物品入库、物品出库三个子模块,每个子模块对应相应的功能和对数据库的查询,添加,修改等操作。如图 5-5 所示:

图 5-5 后台系统管理—物品入库页面

5.3 系统运行及测试

测试贯穿于系统的整个开发过程,这里仅列出主要的界面测试用例。

5.3.1 登录测试用例

下图的是登录界面的测试用例,测试登录界面能够正确响应鼠标的单击事件。如表 5-1 所示:

表 5-1 登录模块测试用例

项目名称家电售后服务系统设计与实现—系统管理
测试 IDASH-TEST-001
测试说明登录界面各组件均能正确响应鼠标键盘单击事件,登录成功后能正确进入系统后台主界面
测试模块登录模块
测试目的验证:登录界面各组件均能正确响应鼠标键盘单击事件,进入后台
初始条件运行系统,显示登录界面
步骤鼠标单击登录界面中用户名框,在框内输入已存在、正确的用户名。;鼠标单击登录界面中密码框,输入和用户名对应的正确密码。;鼠标点击登录界面中的用户类型下拉框,选择“经理”;鼠标键盘单击“登录”按钮
期望输出:登录操作成功,进入后台管理的主页面
实际输出:正确输出,无误
测试状态成功通过测试
测试人:黄光辉
测试时间2020 年 06 月 11 日
备注其他窗口界面中各组件对鼠标键盘相应测试参照本测试用例

5.3.2 客户报修测试用例

表 5-2 是客户报修功能测试用例。测试客户报修界面能正确响应事件。如表 5-2 所示:

表 5-2 客户报修模块测试用例

项目名称家电售后服务系统设计与实现—系统管理
测试 IDASH-TEST-002
测试说明客户报修界面各组件均能正确响应鼠标单击事件,填写信息后可以正确提交数据库中。
测试模块客户报修模块
测试目的验证:客户报修界面各组件均能正确响应时间,完成客户报修功能
初始条件运行系统,显示添加用户界面
步骤鼠标单击用户界面中产品名、保修原因、客户姓名、联系电话、客户地址,在输入信息,系统提示相应的提示信息,输入值符合规范要求。;鼠标键盘单击“提交信息”按钮
期望输出:系统提示添加成功的提示信息
实际输出:正确输出,无误
测试状态成功通过测试
测试人:贾志远
测试时间2020 年 06 月 11 日
备注其他模块中的类似功能界面中各组件对鼠标键盘相应测试参照本测试用例

5.3.3 工人派出维修测试用例

表 5-3 是工人派出维修功能测试用例。测试工人派出维修界面能正确响应事件。如表 5-3 所示:

表 5-3 工人派出维修模块测试用例

项目名称家电售后服务系统设计与实现—系统管理
测试 IDASH-TEST-003
测试说明工人派出维修界面各组件均能正确响应鼠标单击事件,填写信息后可以正确提交数据库中。
测试模块工人派出维修模块
测试目的验证:工人派出维修界面各组件均能正确响应时间,完成工人派出功能
初始条件运行系统,在报修记录中选择一条状态为“未修好”或者“未维修”的维修记录,点击查看,进入工人派遣界面
步骤鼠标单击工人派遣界面中的空闲工人下拉框,选择一位空闲工人。;鼠标键盘单击“确定”按钮
期望输出:数据库中该工人状态位工作状态,并生成相关的维修记录表
实际输出:正确输出,无误
测试状态成功通过测试
测试人:高明杰
测试时间2020 年 06 月 11 日
备注其他模块中的类似功能界面中各组件对鼠标键盘相应测试参照本测试用例

5.3.4 物品入库测试用例

表 5-4 是物品入库功能测试用例。测试查询物品入库界面能正确响应事件。如表 5-4 所示:

表 5-4 物品入库模块测试用例

项目名称家电售后服务系统设计与实现—系统管理
测试 IDASH-TEST-004
测试说明物品界面各组件均能正确响应鼠标单击事件,输入相应物品信息条件后可以正确存入数据库。
测试模块物品入库模块
测试目的验证:物品入库界面各组件均能正确响应时间,完成物品入库功能
初始条件运行系统,进入物品入库主界面
步骤鼠标单击物品入库界面中相应输入框,输入对应的信息 ;鼠标键盘单击“入库”按钮;在工人归还子页面选择一条未归还的物品信息,点击查看进入物品归还页面,输入相应信息点击“确认”按钮
期望输出:数据库内信息随页面信息发生改变
实际输出:正确输出,无误
测试状态成功通过测试
测试人:汪宜龙
测试时间2020 年 06 月 11 日
备注其他模块中的类似功能模块测试参照本测试用例

5.3.5 录入维修记录测试用例

表 5-5 是录入维修记录功能测试用例。测试录入维修记录界面能正确响应事件。如表 5-5 所示:

表 5-5 录入维修记录模块测试用例

项目名称家电售后服务系统设计与实现—系统管理
测试 IDASH-TEST-005
测试说明选择一条未录入的维修记录进行信息录入,并保证数据库内数据更新准确。
测试模块录入维修记录模块
测试目的验证:录入维修记录界面各组件均能正确响应时间,完成录入维修记录功能
初始条件运行系统,进入录入维修记录页面。
步骤选择一条未录入的维修记录,点击查看进入维修记录录入页面。;按提示输入相应的信息,点击提示框的”确定”按钮。
期望输出:系统将对应信息提交并在数据库中完成正确修改
实际输出:正确输出,无误
测试状态成功通过测试
测试人:黄光辉
测试时间2020 年 06 月 11 日
备注其他模块中的类似功能模块中各组件对鼠标键盘相应测试参照本测试用例

六、实训总结

​ 通过家电售后服务系统的开发,使我们更加了解项目的开发流程,首先是功能需求、需求分析,深入的了解了实体类、边界类、控制类的作用,然后就是一些从来没接触过的图表的使用,例如用例图、时序图、概念模型 E-R 图等等图表,以前几乎从来没有用过,这次的接触让我们能够更好的理解了这些图图表的绘制方法和使用流程,然后是通过功能设计、概要设计、详细设计、数据库设计等多个项目设计准备工作,较深的理解对软件测试的方法、手段,同时熟悉了一个 javaweb 项目开发的流程,这使得我们以后参与到具体的项目时,可以更好地去做好对项目的设计与开发。

​ 通过本次系统的设计开发,不断的进行调试,使系统运行相当良好。但由于时间有限,及个人经验和能力的原因,所以在功能方面还有很多需要完善和添加的地方,在以后的学习中还需要更细更认真的去学习与实践,需要更加深入得了解该技术,能够很好的理解并运用它,开发更好的系统。

​ 总结起来本次毕业设计系统开发主要有以下几个方面的宝贵经验和深刻体会:一是:综合查阅资料是一项重要的学习能力。本次毕业设计中遇到不少的难题,通过网络资源、咨询专业人员等各种途径解决问题,提高了个人应变能力。在互联网迅速普及的今天,大量的信息资源都是公开的,有效利用这些网络资源成为工作学习的重要方法。二是:软件开发是一种逻辑分析思维要求很高的设计开发工作,在设计开发一个项目前一定要将需求分析完成。一个软件的开发总是要对软件所用到的行业做好相应的需求分析,并且在使用过程中不断地完善其中的功能,去满足人们日益增长的要求。三是:经过毕业设计系统开发的锻炼,团队合作精神日趋更为重要,这对将来的工作和发展都产生不错的影响。这次软件工程实训课程是一次重要的经历,不仅是对大学三年来的学习的理论基础的实践锻炼,而且应用了我们学习到的知识,发挥在专业方面的综合素质,也磨砺了为人处事的正确态度。

​ 汲取经验的同时要明确今后的努力方向,解决存在的问题。本次软件工程实训也有不少的不足,主要表现为:一是拓展在 Java 语言方面的知识面,规范代码的书写风格。这一点其实十分重要,因为编写的程序代码是需要所有能写程序的人读懂的;二是加强对数据库的学习,掌握其中的核心关键技术。三是不断提高编程能力,包括扩大编程语言、开发工具等。

♻️ 资源

在这里插入图片描述

大小: 11.0MB
➡️ 资源下载:https://download.csdn.net/download/s1t16/87249050