基于java的CRM客户关系管理系统(六)

43 篇文章 0 订阅
43 篇文章 0 订阅

目录

 5.3 表现层设计 

5.3.1 模型层(M)

5.3.2 视图层(V)

5.3.3 控制层(C)

 5.4 系统主要功能模块的实现

 5.4.1 登录功能的实现 

5.4.2 客户管理的实现

 5.5 本章小结 

 参考文献


前面内容请移步

基于java的CRM客户关系管理系统(五)

资源+毕业设计+毕业论文+源代码请移步

CRM客户关系管理系统+毕业论文+毕业设计+源代码

 5.3 表现层设计 

        表现层是面对面和用户交互的,最外表的一层,接受用户数据,提交给模型进行处理,然后模型把结果回馈给用户。贯穿这个层次的是Struts framework。

5.3.1 模型层(M)

        模型层是用来处理数据。在模型层里面没有对数据进行业务规格要求上的处理,只是控制流程和业务数据的检查,模型层的支撑代码就是使用业务逻辑层的各个实现类来规则数据。

        重要的代码如下所示:

@Scope("prototype")

@Controller("crmCustomerAction")

public void setCrmCustomerBiz(CrmCustomerBiz crmCustomerBiz) {

this.crmCustomerBiz = crmCustomerBiz;

}

public String execute(){

Scopes.getRequestMap().put("bywhere", crmCustomerBiz.findAllByWhere(bwvobj));

return SUCCESS;

}

public String add(){

CrmCustomer newcust = crmCustomerBiz.addCustomer(customer);

contact.setCrmCustomer(newcust);

crmContactBiz.add(contact);

return "add";

}

这个类是处理客户信息的增加的时候的情况。承袭了Struts框架里的ActionSupport这个类,而且依照java的要求重写了execute()函数,该方法就是处理业务流程。在系统实现过程中,还需要spring框架的注解信息可以applicationContext.xml文件里面进行写入。

<aop:config proxy-target-class="true">

<aop:pointcut expression="execution(* com.crm.biz.*.*(..))" id="pc"/>

<aop:advisor advice-ref="adv" pointcut-ref="pc"/>

</aop:config>

5.3.2 视图层(V)

        通过Struts的标签和jsp等进行实现的。这个界面直接面对用户,更直接影响用户对该系统的第一感觉,所以说这一层设计和重要。如模型层的代码,如果客户信息添加成功了就会回crm_cus_list.jsp上。

5.3.3 控制层(C)

        控制层是是连接视图和模型的关键,两个分离的模块因为控制层而整合在一起,使代码更容易维护。用户请求经过控制层的处理,然后把请求提交给对应的模型层处理。

<action name="crm_cust" class="com.crm.action.CrmCustomerAction">

<result>crm_cus_list.jsp</result>

<result name="toupdate">crm_cus_update.jsp</result>

<result name="add" type="redirectAction">crm_cust</result>

<result name="update" type="redirectAction">crm_cust</result>

<result name="delete" type="redirectAction">crm_cust</result>

<result name="trash">/pages_sys/trash_cus_list.jsp</result>

</action>

 5.4 系统主要功能模块的实现

 5.4.1 登录功能的实现 

        登录功能所需的界面如图

图5.6 系统登录界面

前端JSP代码如下:

<form class="form-vertical login-form" action="hr_emp!login" method="post" >

<h3 class="form-title" style="text-align: center;">CRM管理系统登录</h3>

<div class="alert alert-error hide">

<button class="close" data-dismiss="alert"></button>

<span>请输入您的用户名和密码.</span>

</div>

<div class="control-group">

<!--ie8, ie9 does not support html5 placeholder, so we just show field title for that-->

<label class="control-label visible-ie8 visible-ie9">用户名</label>

<div class="controls">

<div class="input-icon left">

<i class="icon-user"></i>

<input class="m-wrap placeholder-no-fix" type="text" placeholder="用户名" name="name"/>

</div>

</div>

</div>

<div class="control-group">

<label class="control-label visible-ie8 visible-ie9">密码</label>

<div class="controls">

<div class="input-icon left">

<i class="icon-lock"></i>

<input class="m-wrap placeholder-no-fix" type="password" placeholder="密码" name="pwd"/>

</div>

</div>

</div>

<div class="control-group">

<label class="control-label visible-ie8 visible-ie9">验证码</label>

<div class="controls">

<div class="input-icon left">

<i class="icon-tag"></i>

<input class="m-wrap placeholder-no-fix" type="text" placeholder="验证码" name="inpcode" style="width:100px;"/>

<iframe src="<%=basePath%>hr_emp!ajaxValidateCode" id="iframecode" style="height:34px; width:85px; margin: 0px;" frameborder="0" scrolling="no" ></iframe>

<div style="float: right;" >

<a href="#" id="showcode"  class="btn blue" style="width: 28px; height: 20px;"><i class="icon-refresh" style="margin:2px 8px;"></i></a>

</div>

</div>

</div>

</div>

<div class="form-actions">

<button type="submit" class="btn blue pull-right">

登录 <i class="m-icon-swapright m-icon-white"></i>

</button>

</div>

        用户输入的账号,密码,验证码通过文本框的post方式提交给hr_struts(hr_rmp!login)下action类。

<action name="hr_emp" class="com.crm.action.HrEmployeeAction">

Hr_emp对应的action实现类为HrEmployAction。

HrEmployAction中的login方法如下:

public String login() {

if (inpcode.equalsIgnoreCase(ValidateCode.code)) {

// 登录

HrEmployee employee = hrEmployeeBiz.login(name, pwd);

if (employee != null) {

if (employee.getCanlogin() == 1) {

Scopes.getSessionMap().put("emp", employee);

List<SysMenuVobj> menuVobjs = sysMenuBiz.findShowMenusByRole(employee.getSysRole());

Scopes.getSessionMap().put("menus", menuVobjs);

sysLoginBiz.add(new SysLogin());

return "login";

} else {

Scopes.getRequestMap().put("err", "您没有权限登录,请联系管理员");

// 您没有权限登录

return "loginerr";

}

} else {

Scopes.getRequestMap().put("err", "您输入账号或密码错误");

// 账户密码错误

return "loginerr";

}

} else {

Scopes.getRequestMap().put("err", "您输入验证码错误");

// 验证码错误

return "loginerr";

}

        在Action中,调用了业务逻辑层的biz类进行实例化,在HrEmployeeBiz中有

public HrEmployee login(String name, String pwd) {

return hrEmployeeDao.login(name,pwd);

}

        调用了dao层的HrEmployeeDao类中的login方法进行取数据库中的数据,

public HrEmployee login(String name, String pwd) {

return (HrEmployee) this.getSession().createCriteria(HrEmployee.class).add(Restrictions.eq("uid", name))

.add(Restrictions.eq("pwd", pwd)).uniqueResult();

}

        从数据库里取出的数据和Jsp传过来的数据进行比较,再把结果返回给action层,最后返回到JSP上显示。需要的效果图如下图所示

图5.7 用户名密码为必填

图5-8 账号和密码错误

图5.9 登录成功

登录管理的时序图

图5.10 登录时序图

5.4.2 客户管理的实现

客户管理时序图如下

图5.11客户管理时序图

前台JSP:

<div class="portlet-body form">

<form action="crm_cust!add" method="post" class="form-horizontal" id="submit_form">

<div class="form-wizard">

<div class="navbar steps">

<div class="navbar-inner">

<ul class="row-fluid">

<li class="span3">

<a href="#tab1" data-toggle="tab" class="step active">

<span class="number">1</span>

<span class="desc"><i class="icon-ok"></i>公司信息</span>   

</a>

</li>

<li class="span3">

<a href="#tab2" data-toggle="tab" class="step">

<span class="number">2</span>

<span class="desc"><i class="icon-ok"></i> 主联系人</span>   

</a>

</li>

<li class="span3">

<a href="#tab3" data-toggle="tab" class="step">

<span class="number">3</span>

<span class="desc"><i class="icon-ok"></i> 其他</span>   

</a>

</li>

<li class="span3">

<a href="#tab4" data-toggle="tab" class="step">

<span class="number">4</span>

<span class="desc"><i class="icon-ok"></i> 确认完成</span>   

</a>

</li>

</ul>

</div>

</div>

用户经过填入相关的客户信息,通过post方法,把表单提交到crm_cust上,

<action name="crm_cust" class="com.crm.action.CrmCustomerAction">

<result name="add" type="redirectAction">crm_cust</result>

找到crmcustomerAction的add方法

public String add(){

CrmCustomer newcust = crmCustomerBiz.addCustomer(customer);

contact.setCrmCustomer(newcust);

crmContactBiz.add(contact);

return "add";

}

调用crmcustomerBiz类和crmcustomerDao的add方法

public CrmCustomer addCustomer(CrmCustomer customer) {

customer.setIsdelete(1);

//customer.setHrEmployeeByCreateId((HrEmployee) Scopes.getSessionMap().get("emp"));

customer.setCreateDate(new Date());

// contact.setHrEmployee((HrEmployee)Scopes.getSessionMap().get("emp"));

try {

crmCustomerDao.save(customer);

return customer;

} catch (Exception e) {

e.printStackTrace();

return null;

}

直接调用crmcustomerDao的save方法(这个方法在hibernate里定义),这样客户的数据就保持好了,删除,更新,查询的流程都是这样的,就不一一的列举了。效果图如下

图5.12 客户信息增加界面

 5.5 本章小结 

        这一章对系统的详细设计做了一个介绍,结合代码和ssh进行整合对登录和客户信息添加模块模块做了详细的介绍。

 参考文献

[1] 陈广宇.管理信息系统[M].北京:清华大学出版社,2010:95-100

[2] 张墨华,张永强.Java程序设计[M].北京:清华大学出版社, 2010:123-124

[3] 软件工程  中央广播电视大学出版社[M]  2001年

[4] 崔群法,王咏梅,李有军。ECLIPSE从入门到精通[M]。北京:电子工业出版社。2008.

[5] 符光宝,邵定宏, 李兰友,基于Struts框架的档案管理系统应用研究[J],计算机工程与设

    计,2008.29(13)  

[6] 萨师煊,王珊.数据库系统概论[M].北京:高等教育出版社,2005.  

[7] 李建刚,秦兴桥,郑雨贝。JSP网络编程技术与实践[M]。北京:清华大学出版社。2008.  

[8] J2EE编程基础与实例  机械工业出版社[M]  2002年9月

[9] Jason Hunter,William Crawford.Java Servlet编程。北京:国防工业出版社[D]。2002.

[10] Karl Avedal,Danny Ayers,Timothy Briggs.jsp编程指南[M]。北京:电子工业出版社。

     2001.

[11] Subrahmanyam Allamaraju,Cedric Buest,John Davies.J2EE编程指南[M]。北京:电子

     工业出版社。2002.

[12] 肖丹.知识型档案管理系统建设及其关键技术研究[D],中山大学硕士学位论文,2010.

[13] 张蕾.基于.NET的档案管理系统的开发与研究[D],天津大学硕士学位论文,2007.  

[14] 《C语言程序设计》谭浩强著[M],清华大学出版社

[15] 陈尚松 基于J2EE的客户关系管理系统的设计与实现[D]

[16] 余波 基于web的客户关系管理系统的设计和实现[D]

[17] 杨帅 基于SSH的CRM系统的研究和设计[D]

[18] 任霄龙 基于SSH的客户关系管理的设计和实现[D]

[19] 郝倩 邮政储蓄银行CRM系统的设计和实现[D]

[20] 李骏 客户生命周期价值在CRM中的运用[J]

[21] 张国方 CRM客户关系管理的应用和理论研究综述[J]

[22] 杨涛,周志波,凌力.基于 Struts 和 Hibernate 的 J2EE 快速开发框架的设计与实现

     [J].计算机工程.2006.5.32~36

[23] 杨路明,杨竹青,曹丽娟.客户关系管理与企业获取客户的方法.商业研究,2006,

     21:45-50

[24] 徐友明.如何从客户关系管理入手提升企业核心竞争力.经济论坛,2005, 11:6-8

[25] 段俊勇.基于三层C/S结构的ERP系统的研制:[硕士学位论文].山东青岛:青岛科技大

     学,2005年

[26] 孙卫琴等.精通Stmts:基于MVC的Java Web设计与幵发.北京:电子工业出版社,2005

[27] 孙卫琴.精通Hibernate:Java对象持久化技术详解.北京:电子工业出版社

[28] 孟劼.精通Spring-Java轻量级架构开发实践.北京:人民邮电出版社,2007

[29] 张桂元.Eclipse开发入门与项目实践.北京:人民邮电出版社,2005

[30] 蔡高巍.JSF的研究及其应用.信息科技,2008,(3):23-24

  • 22
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值