• 2.01 MB
  • 2022-04-22 13:34:25 发布

企业客户关系管理系统的设计与实现毕业论文.doc

  • 34页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'企业客户关系管理系统的设计与实现毕业论文目录1前言21.1背景21.2开发目的21.3开发意义21.4开发语言及工具简介21.5论文的结构32系统分析与设计42.1系统概述42.2系统的总体结构42.3系统功能模块52.4系统需求设计52.5数据库设计83系统详细分析与设计123.1客户管理123.2产品管理153.3系统开发规范及说明154系统部分核心代码164.1产品管理模块合同订单与付款记录164.2数据字典标签225系统发布及使用说明245.1系统发布245.2客户管理265.3产品管理296总结317致谢32参考文献3233 1前言1.1背景21世纪是信息化时代,随着人才的竞争和生产力的提升,市场的竞争力日益加剧,客户成为了公司最宝贵的财富,保存与公司有关的客户的相关信息,以及开发新客户都是相当重要的。但是中小型企业在这方面比较落后,还停留在人工收集报表,制定计划的阶段,要建立友好的客户关系,并不是口头上的,而是要以实际行动来体现的,企业从“以产品为中心”转向“以客户为中心”,提高客户的满意度,建立友好的客户管理关系,这些都已成为当今客户关系的研究热点。企业信息一体化为公司提供客户的信息,管理那些与公司有往来的客户的信息愈来愈重要,同时还要时刻注意到竞争对手的营销策略,在此基础上对公司产品进行管理并制定出相合理的营销战略,并跟踪营销路线,及时提供准确信息,并对于客户的要求做出响应,及时改善与客户的关系,提高公司的竞争力。1.2开发目的利用客户关系管理系统,可以及时了解客户的相关详细信息,还可以及时更新公告,浏览更改公告信息,还能安排每天日程为公司内部员工提供方便。在客户管理方面可以及时的了解,更新与客户的联系记录有多少的销售机会以及这些新挖掘的客户有可能成为我们的潜在客户。针对某个客户我们还能产生报价单。这些报价单对于我们的合同订单有何帮助,对于新客户我们可以先付完订金再发货,对于熟悉的客户也可以发货玩再统一付款,付款根据情况也可以跟踪分期付款。对于一个合同条款我们要可以查询到这个客户订购了哪些产品几个多少数量多少总价格又是多少。对于付款的信息我们可以提取出来。作为一个销售的业绩图,也能因此来振奋员工的士气,对于这些业绩图做出相应的奖励。对于营销计划也是相当重要的,一个客户处于何种阶段有多少的销售机会,这次销售有多少的销售金额,又有多少的成功率这些都是很直观的,针对销售漏斗的数据才能相应的做出营销策略。总之一个好的客户关系管理系是可以为公司带来好的效益,这也是我们开发的主要目的。1.3开发意义客户关系管理系统是一中管理思想和理念,也是一个系统,当然必须借助先进的技术来实现,随着市场的竞争力的加剧,企业开始把了解客户需求,发展客户关系作为营销的出发点,在这种形式下,开发一个有助于企业,帮助企业分析市场信息,辅助企业针对的作出相应的营销战略,提高企业的市场竞争力是此次开发的意义。1.4开发语言及工具简介1.4.1开发语言Java[1]Java是一个广泛使用的网络编程语言,它是一种新的计算概念。首先作为一种程序设计语言,它简单、面向对象、不依赖于机器的结构、具有可移植性、鲁棒性和安全性,并且提供了并发的机制,具有很高的性能。Java还提供了丰富的类库,使程序设计者可以很方便地建立自己的系统1.4.2开发工具MyEclipse[2]Eclipse是一个基于Java的、开源的和可扩展的集成开发环境。就eclipse本身而言,它只是一个框架和一组服务,它有它的强大之处,可以通过安装不同的插件来建立不同的开发环境以满足不同的开发需求。另外Eclipse是一个open-open的项目,任何人都可以免费下载它的源代码,然后根据自己的需要并在此基础之上开发自己的功能插件。MyEclipse是一个Eclipse支持下的J2EE开发插件,功能十分强大,具备完美的编码、调试、测试和发布功能并完整支持Struts、spring和Hibemate等框架技术。MyEclipse插件基本上涵盖了众多Eclipse33 插件的功能,它能满足我们的各种应用需求,基本上是安装了它就无须其它插件。甚至可以这样理解,MyEclipse就是一个比较完备的、功能十分强大的开发环境。在MyEclipse可以安装SVN,对于团队协作,可以及时同步代码。1.4.3系统开发服务Tomcat的WEB服务器[3]系统开发所用的服务器是Tomcat。Tomcat服务器。Web服务器是在网络中为实现信息发布、资料查询、数据处理等诸多应用搭建基本平台的服务器。TomcatServer是根据Servlet和JSP规范进行执行的,是一个免费的开放源代码的Web应用服务器,它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的改进和完善中,是一个十分有用的网络应用开发服务平台。1.4.4数据环境简介随着企业信息化建设步伐的不断加剧,全国乃至全球性市场竞争也日益加剧,越来越多企业也有了自己的数据库系统,希望能对数据进行具体而又有针对性的分析。目前市场上的数据库种类繁多,基于Oracle数据库是业界比较成熟的数据库之一,而且它的安全性比较高,企鹅提供了免费使用版本,为我的客户关系管理系统的实验性开发带啦了很多方便,因此最后决定采用Oracle数据库解决方案。Oracle可以创建属于自己的用户,专门用来开发客户关系管理系统。1.4.5B/S三层结构[4]B/S(Browsen/Server)结构即浏览器和服务器结构,随着Internet技术的兴起和强大,它是继承C/S结构的一种改进结构。其主要是利用不断成熟的WWW浏览器技术,结合浏览器的多种脚本语言,用通用浏览器实现了原来需要复杂的专用软件才能实现的强大功能。在这种结构下,大部分的主要业务逻辑在服务器端实现,少量在前段实现,二用户工作界面是通过网页浏览器来实现,形成了所谓的三层结构。图1-1B/S三层结构1.4.6Servelt:控制层Servlet最重要的用途之一就是实现三层结构的Web数据库模式,即客户浏览器、Web服务器和数据库服务器三层结构,这也是当前Intemet/Intranet最流行的应用模式之一。它可以交互式地浏览和修改数据,生成动态Web内容。1.5论文的结构论文主要阐述系统设计开发背景、相关技术简介、系统详细设计、源代码摘要详解、有效性测试及实用性分析与验证与总结。论文共分为六章,各章内容安排如下:第一章主要介绍了客户关系管理简介。第二章通过查询相关资料,进行系统设计需求分析第三章对于客户关系管理系统的客户管理模块以及产品管理模块进行详细的分析,第四章系统部分核心代码第五章系统使用说明、讨论及反思第六章章结束语33 2系统分析与设计2.1系统概述客户关系管理系统不外乎就是体现企业有商业往来的客户的详细信息,联系记录,竞争对手的相关资料追踪竞争对手销售及营销战略、客户人数、优势及劣势等等,以及企业产品的管理、营销战役、及其合同追踪,并及时体现反应客户问题,及时解决客户的问题提高信誉也提高市场竞争力。对于企业还能及时跟踪有一定销售机会的客户群,有多少的销售机会转成真正的客户,从销售可能性评估中,可以获得一些信息,因此策划营销战略,进而能获得创造更多的合同订单提高企业的业绩。对于合同订单,除了能了解到此合同订单里相应的产品列表以及相应的产品的数量价格以及总价外,还能了解合同里面。2.1.1技术可行性分析系统采用了框架是:jsp+servlet+ibatis。JSP是页面表示层[5],Servelt:控制层,JavaBean:业务逻辑层[6]。Ibatis:数据持久层。Oracle:数据库。JSP有以此编写到处运行的强势,且提供了许多内置对象来让对象获取用户提交信息或对客户请求的相应。Ibatis[7]SQL映射是一种很有吸引力的关系数据库访问途径,它以声明性的方式定义SQL语句,并且允许基于数据集的访问。从简单的值到JavaBean它都可以映射。iBATIS最重要的优点就是它不生成任何代码。因此,开发人员没有数据语言需要学习。也不需要转换到数据库的SQL代码,具体的SQL语言是需要开发人员去实现的然后映射到相应的配置文件,将SQL所需的字段返回到结果字段映射到指定的实体类中。iBATIS为系统的开发和设计提供了更大的自由空间。2.1.2经济可行性分析:企业内部管理以及客户关系有多个方面的原因,一个好的客户关系管理系统可以对客户的数据进行挖掘和进行分析,根据销售的可能性评估客观的对客户的价值进行评估,并以此为依据来策划新的销售战略,增强企业的市场竞争力。2.1.3操作可行性分析:本系统简单易学,简单培训下就可以熟练操作。2.2系统的总体结构33 图2-1总体模块图2.3系统功能模块2.3.1工作台模块首页:显示首页信息2.3.2任务管理模块包括公告和日程的管理2.3.3用户管理模块用户权限的管理,控制访问权限2.3.4客户管理模块客户信息的管理,包括客户、联系人、联系记录和竞争对手的信息2.3.5销售管理模块记录销售情况并进行数据统计和分析2.3.6产品管理模块对客户业务的跟踪2.3.7知识管理模块解决一些常见的业务问题2.4系统需求设计33 图2-2客户管理、产品管理用例图说明:联系人、客户通过市场活动产生联系记录,客户通过联系人对企业下订单,企业负责人发货给客户。客户对此合同进行付款产生付款记录。企业负责人跟踪此付款记录,全部的付款记录形成一个销售的业绩图。2.4.1客户管理联系人:利用联系人来记录和企业有商业往来的客户的信息,可以追踪到联系人的相关信息姓名,手机,职位等客户:与联系人相往来的客户,可追踪到该客户的行业,来源,以及客户的企业类型,销售的级别人员规模等等。联系记录:主要记录联系人和客户之间的商业往来。客户有何销售机会以便企业对该客户进一步分析。新增功能:主要添加新的联系人资料、客户资料以及记录详细的联系信息。修改功能:对客户信息、联系人信息、联系记录进行修改删除功能:删除选定的客户、联系人、联系记录信息。查询功能:根据指定的查询条件模糊查询相关客户、联系人的信息表2-1客户信息操作名称客户信息功能描述对客户信息列出一个详细的清单输入客户编号,客户的名称,联系人,客户类型,客户来源,行业,客户级别人员规模,处于销售的哪个阶段,手机,电话。客户开户银行,客户付款方式,传真,邮件。负责人,国家,省份,城市,区域,地址,邮编,备注操作序列添加、修改、删除输出客户信息列表约束及说明客户编号,客户的名称,联系人,客户类型,客户来源,行业,客户级别人员规模,处于销售的哪个阶段,手机,电话。负责人。自动生成这个客户资料是谁创建的,以及创建时间。客户编号为主键,联系人与联系人类表相对应修改的同时也会自动生成修改用户以及修改时间表2-2客户信息查询33 名称客户信息功能描述对特定条件客户信息列出一个详细的清单输入客户名称、联系人、企业类型、客户来源操作序列查询输出符合条件的客户信息列表约束及说明无表2-3联系人信息操作名称联系人信息功能描述对联系人列出一个详细的清单输入记录编号、主题、客户、联系人、销售机会、类型、联系日期、主要内容、类型、负责人备注操作序列添加、修改、删除输出联系人信息列表约束及说明联系人编号为主键不能修改,创建时自动生成创建用户创建时间,修改时自动生成修改用户,修改时间。联系人编号、姓名、客户、职位、部门、手机、邮件非空。表2-4联系人信息查询名称联系人信息查询功能描述对特定条件联系人信息列出一个详细的清单输入联系人名称、职位、手机操作序列查询输出符合条件的联系人信息约束及说明无表2-5联系记录信息操作名称联系记录功能描述对联系记录列出一个详细的清单输入记录编号、主题、客户、联系人、销售机会、类型、联系日期、主要内容、类型、负责人备注操作序列添加、修改、删除输出联系记录信息列表约束及说明记录编号为主键。记录编号、主题、客户、联系人、销售机会、类型、联系日期、主要内容、类型非空。2.4.2产品管理产品:利用产品模块可以查看、修改新增关于产品各方面的信息合同订单:通过联系人客户向企业下订单,企业跟踪订单的情况,并根据需要发货,待发货完,可以对客户进行催款,即产生付款记录。合同订单的总价格为同一个合同订单里面所有订单产品的总价格取整。33 付款记录:对于常有往来的客户可以直接发货,等发货完进行付款跟踪。对于新客户可以先付订金,再进行付款跟踪,付订金只能付一次。而且付款记录只能从合同订单那里进行付款跟踪。新增功能:主要添加新的产品信息资料、合同订单信息,付款信息。修改功能:对客户信息、联系人信息、联系记录进行修改删除功能:删除选定的产品、合同信息查询功能:根据指定的查询条件模糊查询产品、合同的信息表2-6产品信息相关操作名称产品信息功能描述对产品信息列出一个详细的清单输入客户编号,客户的名称,联系人,客户类型,客户来源,行业,客户级别名称、规格、厂商、类别、负责人、库存、是否启用、备注操作序列添加、修改、删除输出产品信息列表约束及说明库存为数值型,名称不为空,产品名称不为空,规格、厂商不为空。产品编号自动生成。表2-7产品信息查询名称产品信息查询功能描述对特定产品信息列出一个详细的清单输入产品名称、厂商或产品类型,根据条件进行差选操作序列查询输出符合条件的产品列表。约束及说明无表2-8合同订单、产品订单信息相关操作名称合同订单、产品订单信息功能描述对合同订单、产品订单信息列出一个详细的清单输入合同订单:客户、联系人、货币类型、产品发送状态、订金、订单类型、经手人、联系人、负责人、附件、备注产品订单:产品、数量、价格、备注操作序列添加、修改、删除输出符合条件的产品列表。约束及说明合同订单编号为主键,一个合同订单有多个产品订单,合同订单的主键为产品订单的外键。在添加合同订单的同时添加多个产品订单。客户必选,订金必填写、联系人必选、产品的价格必选、产品数量必填。一旦产品发送状态为已发送。该合同不再被修改表2-9合同订单、产品订单查询33 名称合同订单、产品订单信息查询功能描述对特定条件合同订单、产品订单信息列出一个详细的清单输入客户、创建时间操作序列查询输出符合条件的产品订单信息约束及说明无2-10付款记录相关操作名称付款记录信息功能描述同一个合同的付款跟踪输入负责人、备注、付款金额,付款时间,操作说明操作序列添加、删除输出同个合同的付款记录约束及说明客户为合同订单付款的客户。付款的货币类型也和合同订单,一样,总金额为合同订单的产品总价格。自动填入。不需填写。订金不能超过总价格。或者说不能高于余额。2.5数据库设计2.5.1客户管理模块表设计2-3客户管理模块关系模型图表2-11联系人(CONTACT)字段名数据类型长度约束性描述CONT_IDVARCHAR220主键联系人编号CONT_NAMEVARCHAR220非空姓名33 CONT_CUSTOMERVARCHAR220非空客户CONT_SEXVARCHAR25非空性别CONT_AGENUMBER5年龄CONT_BIRTHDAYDATE生日CONT_JOBVARCHAR220非空职位CONT_DEPTVARCHAR220非空部门CONT_MOBILEVARCHAR220非空手机CONT_PHONEVARCHAR220电话CONT_FAXVARCHAR250传真CONT_EMAILVARCHAR250非空邮件CONT_WEBSITESVARCHAR2100网站CONT_PINCIPALVARCHAR220负责人CONT_COUNTRYVARCHAR220国家字段名数据类型长度约束性描述CONT_PROVINCEVARCHAR220省份CONT_CITYVARCHAR220城市CONT_AREAVARCHAR220区域CONT_ADDRESSVARCHAR250地址CONT_POSTCODEVARCHAR220邮编CONT_CREUSERVARCHAR220创建用户CONT_CRETIMEDATE创建时间CONT_UPDUSERVARCHAR220修改用户CONT_UPDTIMEDATE修改时间CONT_NOTEVARCHAR2100备注表2-12联系记录(RECORD_CONTACT)字段名数据类型长度约束描述RECO_IDVARCHAR220主键记录编号RECO_TITLEVARCHAR230非空主题RECO_CUSTEMERVARCHAR220非空客户RECO_CONTACTVARCHAR220非空联系人RECO_SALOPPORTVARCHAR220非空销售机会RECO_TYPEVARCHAR220非空类型RECO_DATEDATE非空联系日期RECO_CONTENTVARCHAR2100非空内容RECO_PRINCIPALVARCHAR220负责人RECO_NOTEVARCHAR2100备注表2-13客户(CUSTOMER)字段名数据类型长度约束性描述CUS_IDVARCHAR220主键客户编号CONT_IDVARCHAR220联系人编号CUS_NAMEVARCHAR220非空名称CUS_TYPEVARCHAR220非空类型CUS_ORIGINVARCHAR220非空来源33 CUS_INDUSTRYVARCHAR220非空行业CUS_BANKVARCHAR220开户银行CUS_ACCOUNTVARCHAR220账号CUS_PAYMENTVARCHAR220付款方式CUS_LEVELVARCHAR220非空级别CUS_SCALEVARCHAR220非空人员规模CUS_STAGEVARCHAR220非空阶段CUS_MOBILEVARCHAR220非空手机CUS_PHONEVARCHAR220电话CUS_FAXVARCHAR250传真CUS_EMAILVARCHAR250邮件CUS_PINCIPALVARCHAR220负责人CUS_COUNTRYVARCHAR220国家CUS_PROVINCEVARCHAR220省份CUS_CITYVARCHAR220城市CUS_AREAVARCHAR220区域CUS_ADDRESSVARCHAR250地址CUS_POSTCODEVARCHAR220邮编CUS_CREUSERVARCHAR220创建用户CUS_CRETIMEDATE创建时间CUS_UPDUSERVARCHAR220修改用户CUS_UPDTIMEDATE修改时间CUS_NOTEVARCHAR2100备注2.5.2产品管理模块设计2-4产品管理模块关系模型图表2-14产品(PRODUTES)字段名数据类型长度约束性描述PRO_IDVARCHAR220主键产品编号PRO_NAMEVARCHAR220非空名称PRO_STANDARDVARCHAR220非空规格PRO_FIRMVARCHAR220非空厂商33 PRO_UNITSVARCHAR220非空单位PRO_TYPEVARCHAR220非空类别PRO_ENABLEDVARCHAR25非空是否启用PRO_PRINCIPALVARCHAR220非空负责人PRO_STOCKNUMBER20非空库存PRO_NOTEVARCHAR2100备注表2-15合同订单(CONTRACT_ORDER)字段名数据类型长度约束性描述CO_IDVARCHAR220主键订单编号CUS_IDVARCHAR220外键客户编号CO_MONEYVARCHAR220非空货币CO_PINCIPALVARCHAR220负责人CO_LINKMANVARCHAR220非空联系人CO_ACCESSORYVARCHAR220附件CO_PAYMENTMOENY非空订金CO_SUMMONEY总价CO_HANDLERVARCHAR220经手人CO_TYPEVARCHAR220非空订单类型CO_NOTEVARCHAR2100备注CO_CREUSERVARCHAR220创建用户CO_CRETIMEDATE创建时间CO_UPDUSERVARCHAR220修改用户CO_UPDTIMEDATE修改时间表2-16产品订单表(PRODUCT_ODER)字段名数据类型长度约束性描述CO_IDVARCHAR220订单编号PRO_IDVARCHAR220产品编号PO_IDVARCHAR220产品订单编号PO_PRICENUMBER(20,2)单价PO_AMOUNTNUMBER20数量PO_SUMPRICENUMBER(30,2)总价表2-17收款纪录表(PAY_RECORD)字段名数据类型长度约束性描述PR_IDVARCHAR220主键收款纪录编号PR_DATEDATE非空单据日期PR_CUSTOMERVARCHAR220非空客户PR_MONEYVARCHAR220非空货币类型PR_STATEVARCHAR220非空状态PR_PINCIPALVARCHAR220负责人33 PR_OPEVARCHAR220操作PR_RECEIVENUMBER(20,2)非空订金PR_SUMNUMBER(20,2)非空总价CO_idVARCHAR220合同编号如图2-3、图2-4的客户关系模块模型图以及产品关系模型图的概念模型,导出数据库的物理模型,并选择Oracle9i的SQL代码。导入数据库。3系统详细分析与设计3.1客户管理3.1.1联系人1.添加联系人信息时序图3-1联系人添加时序图说明:管理员或其他有权限的用户到联系人的列表页面,点击增加,传递相应的连接信息到监听器,监听器根据相应的跳转条件跳到增加页面,用户根据要求填写数据或选择数据,最后点击保存,页面对填写的数据进行验证,都符合条件后将表单信息提交到控制器进行判断并调用相对应得增加方法,并将数据添加到数据库,添加成功后反馈信息到界面,并提醒使用此系统的人。如果取消增加可以返回到列表页面或从菜单链接到相应的模块。2.查询联系人信息时序图33 3-2联系人查询时序图说明:管理员或其他有权限的用户到联系人页面查询需要的联系人的信息。填写联系人名称、手机或职位点击查询进行模糊查询,控制器接收传来的信息,并对此进行相应的方法调用,到数据库查询相应条件的联系人信息,将数据反馈给控制器,并跳转到联系人列表页面显示信息。3.修改联系人信息时序图3-3联系人信息修改时序图说明:对于修改联系人信息,先选择相应的条目,进入通过控制器到数据库提取信息后显示在修改页面,根据需要修改信息,提交进行修改,数据库对数据进行修改,修改成功后跳转到联系人类表页面。如果取消修改,可以返回到列表页面4.详细联系人信息33 点击详细联系人信息可以跳转到details.jsp将此联系人的全部信息包括创建时间创建者,修改时间修改用户。只可查看,不能修改,点击返回能返回到列表页面。3.1.2客户1.添加客户信息说明:添加客户的时序图和联系人类似,只是在页面提交的时候有不同的页面验证,还有添加一个新的客户是在有相应联系人的情况下,因此也要选择相应的联系人信息。2.查询客户信息说明:查询客户信息,可以对客户信息进行模糊查询,如果填入的信息多。可以对多个信息进行AND的查询,并条件查询。查询出相应的信息。如果输入都为空的话没有限制条件输出的为全部的列表信息。3.修改客户信息时序图说明:对于客户的信息修改也是有相应的限制条件,我们可以根据数据结构模型的来进行限制。4.查看客户的详细信息说明:由于客户的信息比较多,我们不能全部显示在列表页面,对此我们有一个现实详细的页面跳转,可以查询到此客户的创建者以及客户的修改者及创建时间修改时间。3.1.3联系记录1.添加联系记录信息说明:管理员或其他有权限的用户到联系记录的列表页面,点击增加,传递相应的连接信息到监听器,监听器根据相应的跳转条件跳到增加页面,用户根据要求填写数据或选择数据,最后点击保存,页面对填写的数据进行验证,都符合条件后将表单信息提交到控制器进行判断并调用相对应得增加方法,并将数据添加到数据库,添加成功后反馈信息到界面,并提醒使用此系统的人2.修改联系记录信息说明:根据需要要对联系记录进行修改,这样需要一个修改页面,在页面获得待修改的联系记录的编号,再通过控制器获得该编号的联系记录的详细信息。反馈回页面,使用此系统的人对此进行相应的修改并提交数据给控制台进行相应的方法调用。页面3.2产品管理合同订单与付款流程图:3-4合同订单与付款记录流程图33 3.3系统开发规范及说明1.系统目录及说明如下:3-5系统目录说明2.jsp页面有英语单词组成并全部用小写字母3.每个模块必需有一个模块名称:如客户信息管理名为(customer),模块编写模范说明:Action目录:3-6action目录Proj实体目录:3-7实体目录系统业务逻辑处理类Service目录:33 3-8service目录4系统部分核心代码4.1产品管理模块合同订单与付款记录Xml配置文件,添加合同的sql语句,insertintocontract_order(CO_ID,CUS_ID,CO_MONEY,CO_PINCIPAL,CO_LINKMAN,CO_ACCESSORY,CO_NOTE,CO_PAYMENT,CO_SUM,CO_HANDLER,CO_TYPE,CO_STATE,CO_CREUSER,CO_CRETIME)Values(#coID#,#cusID#,#coMoney#,#coPinCipal#,#coLinkman#,#coAccessory#,#coNote#,#coPayment#,#coSum#,#cohandler#,#coType#,#coState#,#coCreUser#,#coCreTime#)处理页面action方法33 /***合同订单action*@authorchenqiuhong**/publicclassContractOrderActionextendsAction{ListPOlist;//存放合同订单的所订产品信息StringErrMsg=null;//错误信息/***预添加跳转到相应的add页面*/publicvoidpreAdd(ServletContextapplication,HttpServletRequestrequest,HttpServletResponseresponse,ActionConfigconfig){this.forward(request,response,config,"add");}/***添加(除了添加合同还要把与合同一对多关系的产品订单添加到数据库)*/publicvoidadd(ServletContextapplication,HttpServletRequestrequest,HttpServletResponseresponse,ActionConfigconfig)throwsParseException,ServletException{ContractOrderServicecontractOrderService=newContractOrderService(application);ContractOrdercontractOrder=null;SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-ddhh:mm:dd");Datenow=newDate();DateFormatt=DateFormat.getDateInstance();DateFormatd=DateFormat.getTimeInstance();StringcoID=t.format(now)+"-"+d.format(now);//客户编号try{contractOrder=doUpload(application,request,response,config);}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}catch(ServletExceptione){//TODOAuto-generatedcatchblockrequest.setAttribute("message",ErrMsg);//上传文件出错提示};33 if(contractOrder==null){request.setAttribute("message",ErrMsg);//上传文件出错提示this.forward(request,response,config,"preAdd");}else{contractOrder.setCoID(coID);HttpSessionsession=request.getSession();StringcoCreUser=(String)session.getAttribute("name");//创建用户contractOrder.setCoCreUser(coCreUser);DatecoCreTime=newDate();//创建时间contractOrder.setCoCretime(coCreTime);if(contractOrder.getCoAccessory()==null){contractOrder.setCoAccessory("null");}contractOrderService.insertContractOrder(contractOrder);//*********************处理产品订单批量添加*****************************//ProductOrderServiceproductorderservice=newProductOrderService(application);for(inti=0;iGlobal.MAXFILESIZE){ERR=true;ErrMsg="上传文件失败!文件大小超出了限定的范围(最大"+Global.MAXFILESIZE/1024+"K)";returnnull;}if(ERR==false){Stringpath=request.getRealPath("\uploadfile\document\");//保存文件Filefile=newFile(path);if(!file.exists())file.mkdirs();UUIDuuid=UUID.randomUUID();StringnewFileName=path+"\"+uuid+"."+FileType;//可自动生成文件名以防止同名覆盖33 coAccessory=uuid+"."+FileType;//文件地址contractOrder.setCoAccessory(coAccessory);try{myFile.saveAs(newFileName);}catch(SmartUploadExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();returnnull;}}}//***************************处理合同订单**********************************//SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd");StringcusID=mySmartUpload.getRequest().getParameter("cusID");//客户contractOrder.setCusID(cusID);StringcoMoney=mySmartUpload.getRequest().getParameter("coMoney");contractOrder.setCoMoney(coMoney);//货币类型StringcoPinCipal=mySmartUpload.getRequest().getParameter("coPinCipal");contractOrder.setCoPinCipal(coPinCipal);//负责人coPinCipalStringcoLinkman=mySmartUpload.getRequest().getParameter("coLinkman");contractOrder.setCoLinkman(coLinkman);//联系人StringcoNote=mySmartUpload.getRequest().getParameter("coNote");//备注contractOrder.setCoNote(coNote);doublecoPayment=Double.parseDouble(mySmartUpload.getRequest().getParameter("coPayment"));//订金contractOrder.setCoPayment(coPayment);Stringcohandler=mySmartUpload.getRequest().getParameter("cohandler");contractOrder.setCohandler(cohandler);//经手人StringcoType=mySmartUpload.getRequest().getParameter("coType");//订单类型contractOrder.setCoType(coType);StringcoState=mySmartUpload.getRequest().getParameter("coState");//产品发送状态contractOrder.setCoState(coState);//************************************************************************//33 //*************************处理产品订单**********************************//doublecoSum=0;mySmartUpload.initialize(config.getServletConfig(),request,response);Stringhid=mySmartUpload.getRequest().getParameter("hid");//增加产品总数intqsum=Integer.parseInt(hid);POlist=newLinkedList();for(inti=0;i<=qsum;i++){ProductOrderproductOrder=newProductOrder();StringproductName="product"+i;Stringproduct=mySmartUpload.getRequest().getParameter(productName);//产品if(product!=null&&!product.equals("null")&&!product.equals("")){productOrder.setProid(product);StringnumberName="number"+i;intnumber=Integer.parseInt(mySmartUpload.getRequest().getParameter(numberName));productOrder.setPoamount(number);//数量StringpriceName="price"+i;floatprice=Float.parseFloat(mySmartUpload.getRequest().getParameter(priceName));//价格productOrder.setPoprice(price);StringnoteName="note"+i;Stringnote=mySmartUpload.getRequest().getParameter(noteName);productOrder.setPonote(note);floatsumprice=number*price;productOrder.setSumprice(sumprice);coSum+=sumprice;POlist.add(productOrder);}}intsum=(int)coSum;coSum=sum;//价格取整contractOrder.setCoSum(coSum);//************************************************************************//returncontractOrder;}4.2数据字典标签我们把固定不变一些信息存储在数据字典中,比如销售阶段,性别等等。制定成数据字典标签,它们直接生成下拉框。Dictionary标签继承TagSupport重写doStarTag方法。33 publicintdoStartTag()throwsJspException{//TODOAuto-generatedmethodstubif(type==null||type.equals("")){thrownewJspException("type不能为空");}StringBuffersb=newStringBuffer();if(name!=null||!name.equals(""))//将下拉框的name属性是否为空sb.append("");//不为空加入属性elseif(id!=null||!id.equals(""))//如果name为空判断id是否为空sb.append("");elsesb.append("");}catch(SQLExceptione){//TODOAuto-generatedcatchblockthrownewJspException("读取信息失败");}try{this.pageContext.getOut().print(sb.toString());}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}returnthis.SKIP_BODY;}}publicvoidrelease(){//TODOAuto-generatedmethodstubsuper.release();type=null;name=null;id=null;}其中name表示下拉框的名称,id是下拉框的id号,type表示同一个类型的归为通一个下拉选择框,value=a,表示a被选中。数据字典配置应注意,value字段是非必修字段required应该设置为fale且支持变量:http://www.zte.com/testtag33 valuefalsetrue<%@tagliburi="http://www.zte.com/testtag"prefix="TestTag"%>结果:如图4-1.图4-1数据字典标签结果5系统发布及使用说明5.1系统发布所需软件JDK6.0、Oracle数据库、apache-tomcat-6.0,图5-1系统配置解压apache-tomcat-6.0并修改端口号8010将要发布的程序拷贝到tomcatwebappROOT下用户打开IE输入服务器的输入地址http://IP址址:8080/crmzte/即可访问本系统。当然之前还要使用Oracle数据库连接,需修改SqlMapConfig.xml中的配置,IP地址修改成自己的IP地址。33 将数据库名改成本机Oracle数据库名,并创建用户crm/crm将表导入。登录图5-2系统登录界面也可注册用户:图5-3注册界面33 图5-4首页图5-5首页5.2客户管理图5-6客户管理菜单33 5.2.1客户操作手册图5-7客户信息列表页面客户页面跳转及其操作:图5-8客户信息列表查询:填写客户名称或选择客户来源或行业点击查询,如果客户来源和行业都是请选择,则查询将结果为客户名称所在的模糊查询结果,如果客户来源有选中其他的如:电话来访,行业也有选择,那么查询结果是三者的交集。点击查询在该页面显示查询结果。详细:可以查询客户的全部详细信息。修改:则可以修改当前客户的信息。添加信息:则是添加新的用户信息。修改和添加有增加验证,请根据提示填写信息。填写完点击保存也有相应的提示图5-9表单验证点击删除可以删除当前的信息,并跳转到列表页面。33 图5-10客户信息页面跳转说明5.2.2联系人操作手册详见客户操作手册5.2.3联系记录操作手册详见客户操作手册33 5.3产品管理图5-11产品管理菜单5.3.1产品操作手册详见客户操作手册。5.3.2合同订单操作手册图5-12合同订单页面跳转说明33 点击添加合同:添加合同可以添加过个产品订单,+表示增加,-表示减少,但是要选择复选框。图5-13合同订单表单验证根据提示进行填写修改.,如果在合同订单类表中点击【付订金】图5-14付订金点击【编辑】,修改产品发送状态。产品发送后不允许修改合同且付款状态变成付款。图5-15修改产品发送状态后产品发送后可以继续付款。33 图5-16同一个合同里面的付款记录点击继续付款:根据具体情况决定付款金额。图5-17继续付款页面付款完成后不能继续付款,但可以查看。图5-18付款完成时同一合同的付款记录6总结处理页面action类的时候我们会发现添加和修改功能传入参数都差不多,只是增加的时候需要创建编号,修改时不能修改编号,如果放在两个方法中写会造成代码的重复因此我们应该写一个公共的方法来解决这个问题,处理所有的参数传递问题,再调用,把编号问题独立出来处理。对于页面的样式处理应该写同一得样式而不应该全部的样式多写在页面这样也造成代码的累赘。而且页面也不会很直观。这是需要改进的本次设计也让我更加了解java的编程思想以及总体架构思想,也熟悉了ibatis框架以及web开发的相关技术,用此技术实现可客户和联系人之间的交互以及合同和付款间的关系。同时也增加了自己的编程能力。33 7致谢在此次的毕业设计中,首先感谢陈志德老师的指导,从确定毕业设计论文开始陈老师都很认真负责,在毕业设计的每个阶期间陈老师都给了我很多关心和鼓励,从外出实习到查阅资料,设计草案的确定和修改,中期检查,后期详细设计等整个过程中都给予了我悉心的指导。陈老师希望我们能在毕业设计中真正学到知识,也因此在毕业设计期间我取得了很大的进步,信心也提高了,在此谨向陈老师致以诚挚的谢意和敬意。参考文献[1]耿祥义.Java基础教程[M].北京:清华大学出版社.2005[2]曹大有,王瑜.基于MyEclipse的Hibernate持久层框架的开发过程[J].计算机系统应用,2007,(12),101[3]陆云.用JSP调用Lucene包来实现全文检索——利用基于Tomcat的Web服务器[J].电脑学习,2007,(3),29[4]张伟.CS与BS混合软件体系结构及其在数字化教学系统中的应用[M].电脑知识与技术,2007,(18)[5]周慧.jsp应用开发详解[M].电子工业出版社,2007.[6]李萍.大数据量在JSP页面中传递方法的探讨[J].福建电脑,2009,(1),35[7]夏听.iBATIS2.0开发指南.iBATISDeveloper"sGuide.20033 CustomerRelationshipManagementSystemDesignandImplementation--customerandproductManagementCHENQiu-hong105022005052Advisor:CHENZhi-deMajorinComputerScienceandTechnologyCollegeofMathematicsandComputerScience【Abstract】Basedontheincreasinglycompetitivesociety,thecustomeristhemostimportantresources,customerrelationshipmanagementisbecomingmoreandmoreimportant,Smallandmedium-sizedenterprisesisrelativelybackwardinthisregard,oneimportantreasonisthelackofasuitabletomeetthebusinessneedsofthecustomerrelationshipmanagementsystem,inthiscaseinordertoachieveatargetedsmallbusinesses,inlinewiththedatabaseofchoiceandtheoveralldesignidea,tohelpthecompanyachievearecordofcustomerinformation,contactinformation,aswellasproductinformationandStatisticsofthecustomerrelationshipmanagementsystemisworthyofourthinkof.【Keywords】Oracle、ibatis、MyEclipse、servlet、JSP33'