目 录
第一章 绪论 1
1.1 研究背景和意义 1
1.2 国内外研究 3
1.3 论文结构 3
1.4 本章小结 4
第二章 相关技术介绍 5
2.1后台介绍 5
2.2前端介绍 10
2.3开发工具 11
2.4本章小结 11
第三章 系统分析 12
3.1 可行性分析 12
3.2 需求分析 13
3.3 本章小结 18
第四章 数据库设计 19
4.1 系统和数据的关系 19
4.2 数据库结构设计 19
4.3 数据库逻辑结构设计 22
4.4 本章小结 28
第五章 系统的详细设计和实现 29
5.1 持久层设计 29
5.2 逻辑业务层设计 39
5.3 表现层设计 40
5.4 系统主要功能模块的实现 41
5.5 本章小结 48
第六章 系统测试 49
6.1 系统测试综述 49
6.2 测试用例 49
6.3 本章小结 51
第七章 总结和展望未来 52
7.1 结论 52
7.2 展望未来 52
2.3开发工具
软硬件环境需求
浏览器采用IE,360,GooGle。
系统JVM为JDK1.6或更高版本。
系统数据库使用MySql配合图形化界面HeidiSql
系统的集成幵发环境MyEclipse2012。
Web容器Tomcat7.0
系统的技术架构:Struts2.0+Spring4.0+Hibernate3.0
2.4本章小结
本章对完成论文的理论基础及需要的关键技术进行了论述,系统决定使用的是的B/S 平台开发然后,分别介绍了 SSH等框架和JSP前端技术。最后说明了完成该系统的软硬件要求。
第三章 系统分析
3.1可行性分析
3.1.1技术可行性
首先CRM客户关系管理系统的技术核心是SSH框架的使用和典型三层架构的层次模型的开发思想。简单的说说三层的明确职能和任务:表现层与客户打交道;中间层spring+Hibernate框架的配合使用负责数据访问和接收表现层的功能请求,最主要的技术就是能够将应用程序的java类与数据库的表结构对应设计的ORM映射能力。数据层就是实体对象的构建设计,是最基础的层次。然后数据的流向是从web层,service服务层,action动作层,dao数据访问层,db数据库,再把结果逐级往上提交。
采用流行的SSH框架提高了开发效率,增加了系统的内聚性,降低了耦合性,方便以后程序的扩张。
3.1.2经济可行性
对于销售型的中小企业来说,以有限的资源和较少的成本,去吸引和留住更多的客户。CRM 是解决这一问题的有效手段,但不同于大型企业,中小企业没有足够的时间和资金来构建功能完善、成熟高效的 CRM 系统。
相对于大型 CRM 系统来说,本系统是一个功能精简的、具有实验性质的,以满足企业日常客户关系管理的基础业务为目标的小型 CRM 系统,按照软件工程的开发思想,开发的周期包括需求分析,数据库分析设计,功能模块的实现测试和系统部署,系统维护,开发周期可以以月计算,人力成本、硬件成本和开发成本等费用,总计成本可以以万计算。无论是时间成本,还是投入资金,对企业都没有造成巨大的负担。与此相反,当系统成功部署运行后,不管是对公司企业还是对客户来说,工作的时间和速度都相应的在改变,提高了服务的质量意味着企业的效益在增加。
综上所述,设计和实现CRM客户关系管理系统在经济上是完全可以接受的。
3.1.3操作可行性
就企业而言,很大程度上企业员工未使用过客户关系管理系统,但得益于企业近些年的信息化建设,几乎所有员工都能够运用办公自动化系统进行日常工作,这使得员工快速掌握客户关系管理系统的操作成为可能。此外,依照客户关系管理系统的体系构造和业务性能,制定一份功能完善而且易于理解的“帮助文档”是极其必要的,它有利于用户快速掌握系统的使用;同时,在界面实现阶段,开发人员应在业务功能的操作界面上设置相应的操作提示,便于用户理解系统功能,本文转载自http://www.biyezuopin.vip/onews.asp?id=11162使得用户能够准确地运用系统开展工作。
由此可以初步可见。客户关系管理系统的开发在操作上是可能的。
3.2需求分析
3.2.1系统总体需求
下图是客户关系管理系统的三个功能区,可分为客户管理,产品管理,系统管理等模块。
图3.1 系统总用例图
上述的用例图是对CRM系统的总体功能需求进行描述,而这些实例中又包括其他的子用例。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE html>
<!--[if IE 8]> <html lang="en" class="ie8"> <![endif]-->
<!--[if IE 9]> <html lang="en" class="ie9"> <![endif]-->
<!--[if !IE]><!-->
<html lang="cn">
<!--<![endif]-->
<!-- BEGIN HEAD -->
<head>
<meta charset="utf-8" />
<title>index.jsp</title>
<meta content="width=device-width, initial-scale=1.0" name="viewport" />
<meta content="" name="description" />
<meta content="" name="author" />
<jsp:include page="media/ui_css.jsp"></jsp:include>
<link rel="shortcut icon" href="media/image/favicon.ico" />
<script type="text/javascript">
function showtime() {
var today, hour, second, minute, year, month, date;
var strDate;
today = new Date();
var n_day = today.getDay();
switch (n_day) {
case 0:
strDate = "星期日";
break;
case 1:
strDate = "星期一";
break;
case 2:
strDate = "星期二";
break;
case 3:
strDate = "星期三";
break;
case 4:
strDate = "星期四";
break;
case 5:
strDate = "星期五";
break;
case 6:
strDate = "星期六";
break;
case 7:
strDate = "星期日";
break;
}
year = today.getFullYear();
month = today.getMonth() + 1;
date = today.getDate();
hour = today.getHours();
minute = today.getMinutes();
second = today.getSeconds();
if (month < 10)
month = "0" + month;
if (date < 10)
date = "0" + date;
if (hour < 10)
hour = "0" + hour;
if (minute < 10)
minute = "0" + minute;
if (second < 10)
second = "0" + second;
document.getElementById('time').innerHTML = year + " 年 " + month
+ " 月 " + date + " 日 " + strDate + " " + hour + ":" + minute
+ ":" + second; //显示时间
setTimeout("showtime();", 1000); //设定函数自动执行时间为 1000 ms(1 s)
}
</script>
</head>
<!-- END HEAD -->
<!-- BEGIN BODY -->
<body class="page-header-fixed">
<jsp:include page="main_pages/top.jsp"></jsp:include>
<!-- BEGIN 容器 -->
<div class="page-container row-fluid">
<jsp:include page="main_pages/left.jsp"></jsp:include>
<!-- BEGIN 开始页面 -->
<div class="page-content">
<!-- ---------------------------------------------- -->
<!-- BEGIN 页面容器-->
<div class="container-fluid">
<!-- BEGIN 页面标题-->
<div class="row-fluid">
<div class="span12">
<!-- BEGIN 风格定制 -->
<jsp:include page="/main_pages/styleset.jsp"></jsp:include>
<!-- END 风格定制 -->
<!-- BEGIN 网页的标题和面包屑-->
<h3 class="page-title">
我的桌面 <small>我的办公信息导航页</small>
</h3>
<ul class="breadcrumb">
<li>
<i class="icon-home"></i>
<a href="#">我的桌面</a>
<i class="icon-angle-right"></i>
</li>
</ul>
<!-- END 网页的标题和面包屑-->
</div>
</div>
<!-- END 页面标题-->
<!-- BEGIN 网页内容-->
<div class="tiles">
<div class="tile double-down bg-blue">
<div class="tile-body"><i class="icon-bell"></i></div>
<div class="tile-object">
<div class="name">我的便签</div>
<div class="number">6</div>
</div>
</div>
<div class="tile bg-green">
<div class="tile-body"><i class="icon-calendar"></i></div>
<div class="tile-object">
<div class="name">我的日程</div>
<div class="number">12</div>
</div>
</div>
<div class="tile double bg-blue">
<div class="corner"></div>
<div class="check"></div>
<div class="tile-body">
<h4>support@metronic.com</h4>
<p>Re: Project Update!</p>
<p>24 may 2017 12.30PM the project plan update meeting...</p>
</div>
<div class="tile-object">
<div class="name"> <i class="icon-envelope"></i> </div>
<div class="number"> 14 </div>
</div>
</div>
<div class="tile bg-red">
<div class="corner"></div>
<div class="tile-body">
<i class="icon-user"></i>
</div>
<div class="tile-object">
<div class="name">我的联系人</div>
<div class="number">452</div>
</div>
</div>
<div class="tile double bg-purple">
<div class="corner"></div>
<div class="tile-body">
<i class="icon-folder-close"></i>
</div>
<div class="tile-object">
<div class="name">我的合同</div>
<div class="number">43</div>
</div>
</div>
<div class="tile bg-yellow">
<div class="tile-body"><i class="icon-user-md"></i></div>
<div class="tile-object">
<div class="name">我的客户</div>
<div class="number">121</div>
</div>
</div>
<div class="tile image">
<div class="tile-body">
<img src="media/image/image2.jpg" alt="">
</div>
<div class="tile-object">
<div class="name">我的跟进</div>
<div class="number">12</div>
</div>
</div>
<div class="tile bg-green">
<div class="tile-body">
<i class="icon-comments-alt"></i>
</div>
<div class="tile-object">
<div class="name">我签名的发票</div>
<div class="number">12
</div>
</div>
</div>
<div class="tile double bg-grey">
<div class="tile-body">
<img src="media/image/photo2.jpg" alt="" class="pull-right" style="height:114px;width: 258px;">
</div>
<div class="tile-object">
<div class="name">
<i class="icon-twitter"></i>
</div>
<div class="number"><span id="time"></span></div>
</div>
</div>
<div class="tile bg-blue">
<div class="tile-body">
<i class="icon-edit"></i>
</div>
<div class="tile-object">
<div class="name">我的订单</div>
<div class="number">12</div>
</div>
</div>
<div class="tile bg-green">
<div class="tile-body">
<i class="icon-bar-chart"></i>
</div>
<div class="tile-object">
<div class="name">我的收款</div>
<div class="number">3</div>
</div>
</div>
<div class="tile bg-purple" url="pages_public/public_new.jsp">
<div class="tile-body">
<i class="icon-briefcase"></i>
</div>
<div class="tile-object">
<div class="name">公司新闻</div>
<div class="number">11</div>
</div>
</div>
<div class="tile image double">
<div class="tile-body">
<img src="media/image/image4.jpg" alt="">
</div>
<div class="tile-object">
<div class="name">公司聊天室</div>
<div class="number">222</div>
</div>
</div>
<div class="tile bg-purple">
<div class="tile-body"><i class="icon-plane"></i></div>
<div class="tile-object">
<div class="name">公司公告</div>
<div class="number">34</div>
</div>
</div>
<div class="tile bg-yellow">
<div class="corner"></div>
<div class="check"></div>
<div class="tile-body">
<i class="icon-cogs"></i>
</div>
<div class="tile-object">
<div class="name">我的设置</div>
</div>
</div>
<div class="tile bg-red">
<div class="corner"></div>
<div class="check"></div>
<div class="tile-body">
<i class="icon-lock"></i>
</div>
<div class="tile-object">
<div class="name">锁屏</div>
</div>
</div>
</div>
<br>
<!-- END 网页内容-->
</div>
<!-- END 页面容器-->
<!-- --------------------------------------------------------- -->
</div>
<!-- END 页面 -->
</div>
<!-- END 容器 -->
<jsp:include page="main_pages/foot.jsp"></jsp:include>
<jsp:include page="media/ui_js.jsp"></jsp:include>
<script src="media/js/app.js"></script>
<script>
jQuery(document).ready(function() {
App.init();
showtime();
$('.tile').click(function(){
var url=$(this).attr('url');
location.href=url;
});
});
</script>
<!-- END JAVASCRIPTS -->
</body>
<!-- END BODY -->
</html>