目 录
摘要 1
Abstract 1
1 引言 5
2.1 系统需求分析 7
2.2 可行性分析 8
2.3 本系统采用的关键技术 9
3 系统概要设计 12
4 系统详细设计 14
4.1 后台数据库设计 14
4.2 系统E-R图 18
4.3.2 数据增加流程 19
4.3.3 数据修改流程 19
4.3.4 数据删除流程 20
4.4 系统模块设计 20
4.4.1管理登陆 20
4.4.2 售后服务分类管理 21
4.4.3 售后服务信息管理 22
4.4.4 投诉信息管理 23
4.4.5 产品回访管理 25
5 系统调试与测试 26
结论 30
参考文献 32
致谢 32
3 系统概要设计
根据系统的功能需求分析,将本系统划分为以下几大模块:
图3-1系统分析总模块图
3.1 系统管理模块
该模块主要用于对系统进行管理,包括系统权限的设置,系统管理员的增加删除,密码的修改,用户的管理等。
系统权限是系统操作的先决条件。设计系统必须对使用系统的人作出分类,不同的人能够使用的权限是不同的,管理员权限不能随意授予,只能交给公司高层使用。普通用户使用的是普通权限。他们只能对自己的信息进行修改查询,不能对其他人进行查询修改,否则信息泄露,公司会变成一团糟。
3.2 服务信息管理模块
该模块主要是对消费者的信息进行管理维护,对客户信息进行数据建档,包括售后服务信息的添加、删除和修改。客户在购买之后,可以对客户信息进行登记录入系统,然后对客户进行跟踪服务,客户可对服务进行点评,提出建议,公司可不定时对客户发放问卷,进行满意度调查。
3.3 产品安装信息管理
这个模块主要负责对产品安装信息进行登记,删除等。保证服务到位,对客户负责。客户能够查询到自己所购买产品的安装信息,进度等。
3.4 产品维修信息管理
对产品维护信息(包括维护时间、维护内容、维护量等)增加、删除修改等进行登记,一方面便于管理,另一方面可以对产品性能进行监控,知道产品的寿命,以及产品容易出现的问题。
3.5 产品退货信息管理
主要包括产品退货信息的增加、删除和修改(包括退货日期、变更原因等);
3.6 用户回复信息管理
这包括用户回复记录的添加、删除和修改,便于了解用户的需求。
3.7 投诉信息管理
它主要包括前台的产品投诉信息、管理员查看、回复等。
4 系统详细设计
4.1 后台数据库设计
[【5】Hernandez, M.J… 范明. 数据库设计凡人入门--关系型数据库设计指南(第二版)[M]. 北京: 电子工业出版社. 2005][【6】何玉洁 等 译. 数据库设计教程(第二版)[M]. 北京: 机械工业出版社. 2005.1
]在数据库被推出的十多年来,数据库管理系统得到了迅猛的发展,从以前简单的应用程序发展成为了拥有自己专属的语言,专门的理论,专业的研究人员的系统软件。通过数据库管理系统,将数据库中的数据变得结构清晰,关系明确,冗余度低,拥有较高的程序独立性,容易增减,条理清楚,易于被相关的系统或者程序调用,因此,不论是大型的系统软件还是小型的应用软件都建立在数据库的基础之上,大大降低了数据保存的难度,使得计算技术得以广泛的推广。在近几年来逐渐流行的大数据分析,也是建立在数据库的基础上,对海量的数据进行相关的分析。随着计算机软件的广泛推广,对于数据库的性能要求越来越高,反过来也促进了数据库技术的发展。通过不同的设计方式设计出来的数据库,在各个方面的优劣也不相同。比如:在大型数据处理系统中,不仅对数据库的稳定性有极高的要求,性能方面也不能差的太多,这就需要使稳定性和高性能达到一个平衡;然而在微型计算机系统中,数据规模不大,需要的是能够及时的响应用户的相关操作,因此对性能就有极高的要求。随着对数据库的研究越来越正式化,科学化,投入不断地增加,已经使得现在的数据库系统从以前的单纯处理加工数据为中心转变为围绕共享的数据库为中心,这种数据库的改变,本文转载自http://www.biyezuopin.vip/onews.asp?id=11176更加的方便了数据的集中管理,有效的挖掘出数据中蕴含的更加丰富的信息,有利于应用程序对数据的调用,也方便了程序本身的开发和维护,通过对相同的数据整合,不仅节省了数据库空间,更使得数据本身之间的联系更加明确清晰。
<%@ page language="java" import="java.util.*" contentType="text/html;charset=gb2312"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<jsp:useBean id="yzm" scope="page" class="com.util.CheckCode"/>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>基于J2EE技术的售后服务管理系统</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.2900.3268" name=GENERATOR>
<STYLE type=text/css>TD {
FONT-SIZE: 12px; VERTICAL-ALIGN: top; COLOR: #333333
}
</STYLE>
</HEAD>
<%
String message = (String)request.getAttribute("message");
if(message == null){
message = "";
}
if (!message.trim().equals("")){
out.println("");
}
request.removeAttribute("message");
String code=yzm.getCheckCode();
%>
<BODY leftMargin=0 topMargin=0 marginwidth="0" marginheight="0">
<TABLE align=center background="images/jd.jpg" cellSpacing=0 cellPadding=0 width="1024" height=768 border=0>
<TBODY>
<TR>
<TD height=600 align="center"><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR>
<h1><font color="yellow"> </font></h1>
<br>
<TABLE class=tableborder cellSpacing=0 cellPadding=0 width=287
align=right border=0>
<TBODY>
<TR>
<TD colSpan=3
height=164> </TD></TR>
<TR>
<TD style="FONT-SIZE: 1px; LINE-HEIGHT: 1px" width=3
></TD>
<TD style="BORDER-TOP: #666666 1px double" vAlign=top
background=images/index_hz03.gif height=162><BR><BR><!--
--> <form action="<%=basePath %>Admin.shtml" name=form1 method=post onSubmit="return checkform(form1)" autocomplete="off">
<TABLE id=adminlogin cellSpacing=0 cellPadding=0 width="100%"
align=center border=0>
<TBODY>
<TR>
<TD class=td align=right width="33%">帐 号:</TD>
<TD class=td width="67%"><INPUT
style="BORDER-RIGHT: #0d5c95 1px solid; BORDER-TOP: #0d5c95 1px solid; BACKGROUND: #fff; BORDER-LEFT: #0d5c95 1px solid; WIDTH: 140px; BORDER-BOTTOM: #0d5c95 1px solid; HEIGHT: 21px"
name=username> </TD></TR>
<TR>
<TD class=td align=right width="33%">密 码:<input type=hidden name=method value="one" /></TD>
<TD class=td width="67%"><INPUT
style="BORDER-RIGHT: #0d5c95 1px solid; BORDER-TOP: #0d5c95 1px solid; BACKGROUND: #fff; BORDER-LEFT: #0d5c95 1px solid; WIDTH: 140px; BORDER-BOTTOM: #0d5c95 1px solid; HEIGHT: 21px"
type=password size=21 name=password> </TD></TR><!---->
<TR>
<TD class=td vAlign=center align=right width="33%">验 证 码:</TD>
<TD width="67%" ><INPUT
style="BORDER-RIGHT: #0d5c95 1px solid; BORDER-TOP: #0d5c95 1px solid; BACKGROUND: #fff; BORDER-LEFT: #0d5c95 1px solid; WIDTH: 70px; BORDER-BOTTOM: #0d5c95 1px solid; HEIGHT: 21px"
size=8 name=yzm> <%=code %></TD></TR><!---->
<TR>
<TD class=td width="33%"> </TD>
<TD class=td width="67%"><INPUT type=image height=33 width=83
src="images/index_hz04.gif" name=Submit>
</TD></TR></TBODY></TABLE></FORM><!----></TD>
<TD style="FONT-SIZE: 1px; LINE-HEIGHT: 1px" width=3
></TD></TR>
<TR>
<TD colSpan=3
height=127>
</TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></BODY></HTML>
<script language=Javascript>
form1.username.focus()
function checkform(form)
{
var flag=true;
if(form("username").value==""){alert("请输入用户名!");form("username").focus();return false};
if(form("password").value==""){alert("请输入口令!");form("password").focus();return false};
if(form("yzm").value==""){alert("请输入验证码!");form("yzm").focus();return false};
if(isNaN(form("yzm").value)){alert("请正确输入验证码!");form("yzm").focus();return false};
if(form("yzm").value!=<%=code%>){alert("验证码错误!");form("yzm").focus();return false};
return flag;
}
</script>