• 2.24 MB
  • 2022-04-29 14:10:05 发布

航空安保企业客户关系管理系统的设计与实现硕士论文.doc

  • 72页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'北京航空航天大学硕士学位论文中图分类号:TP3论文编号:10006GS0721XXX硕士学位论文航空安保企业客户关系管理系统的设计与实现I 北京航空航天大学硕士学位论文学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。作者签名:日期:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权    大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。涉密论文按学校规定处理。作者签名:日期:年月日导师签名:日期:年月日I 北京航空航天大学硕士学位论文关于学位论文的独创性声明本人郑重声明:所呈交的论文是本人在指导教师指导下独立进行研究工作所取得的成果,论文中有关资料和数据是实事求是的。尽我所知,除文中已经加以标注和致谢外,本论文不包含其他人已经发表或撰写的研究成果,也不包含本人或他人为获得北京航空航天大学或其它教育机构的学位或学历证书而使用过的材料。与我一同工作的同志对研究所做的任何贡献均已在论文中做出了明确的说明。若有不实之处,本人愿意承担相关法律责任。学位论文作者签名:      日期:年月日学位论文使用授权书本人完全同意北京航空航天大学有权使用本学位论文(包括但不限于其印刷版和电子版),使用方式包括但不限于:保留学位论文,按规定向国家有关部门(机构)送交学位论文,以学术交流为目的赠送和交换学位论文,允许学位论文被查阅、借阅和复印,将学位论文的全部或部分内容编入有关数据库进行检索,采用影印、缩印或其他复制手段保存学位论文。保密学位论文在解密后的使用授权同上。学位论文作者签名:日期:年月日指导教师签名:日期:年月日I 北京航空航天大学硕士学位论文I北京航空航天大学硕士学位论文摘要本论文所设计的CRM客户关系管理系统,不仅能实现为驻场单位提供各类航空安保服务,确保首都机场实现安全运营,协助机场管理当局提升服务品质,而且能为中外航空企业提供优质的地面保障服务。建立对客户关系,维护更加详实全面的客户动态以及获取客户对公司服务的评价等。同时,鉴于首都机场的特殊政治意义,对客户的安全指标评级也至关重要。本系统能根据客户操作,监察非敏感信息,对客户安全性进行把控。摘要写的太少了,一般写一页的三分之二关键词:客户关系管理系统,航空安保,安全运营,安全把控I 北京航空航天大学硕士学位论文AbstractTheCRM(CustomerRelationshipManagement)Systemdescrpitedinthearticle,cannotonlyprovidevarioustypesofaviationsecurityservicesforlocalunits,assistairportmanagementauthoritiestoimproveservicequality,butalsoprovidehighqualityon-groundsupportservicesforChineseandforeignenterprises.Establishcustomerrelationships,maintenancemoredetailedtrendsandevaluationsofcustomersandsoon.Atthesametime,inviewofthespecialpoliticalsignificanceofCapatialAirport,thesafetyindicatorsratingofcustomersisalsoveryimportant.Accordingtothecustomers’operations,thesystemcanobservenon-sensitiveinformation,makethesecurityundercontrol.…………………Keywords:CRM,CustomerRelationshipManagement,aviationsecurityservices,safteyoperations,securitycontrolI 北京航空航天大学硕士学位论文目录摘要I目录I表目录I图目录I第一章绪论11.1课题来源和意义11.2国内外研究现状分析11.3课题目标21.4本论文组织结构31.5本章小结4第二章系统关键技术52.1ASP.NET技术平台和C#开发语言52.2ASP.NETMVC62.2.1ASP.NETMVC的优点62.3EntityFramework72.3.1EntityFramework特性72.3.2EntityFramework优点72.4jQuery介绍82.5Microsoftsqlserver介绍82.6MetroUICSS介绍92.7响应式布局92.8本章总结10第三章系统需求分析和整体架构设计123.1系统管理123.2客户管理143.3物品管理15I 北京航空航天大学硕士学位论文3.4财务管理163.5客服信息管理173.6系统整体架构设计183.6.1系统功能模块设计183.6.2系统整体设计203.6.3系统软/硬件部署方案203.6.4系统架构设计223.7本章总结24第四章系统设计与实现254.1asp.netmvc系统实现254.2初始化开发框架264.3代码实现294.3.1登录页面的实现294.3.2系统管理模块实现324.3.3客户管理模块实现354.3.4物品管理模块实现374.3.5配置管理模块实现384.3.6财务管理模块实现414.3.7客服管理模块实现414.3.8系统后台统计实现414.3.8系统异常处理功能实现434.4本章小结44第五章系统测试455.1测试目标455.2测试原则455.3测试方法465.4测试流程475.5测试用例设计485.1.1测试用例485.6测试结果分析485.7本章小结48I 北京航空航天大学硕士学位论文第六章结论506.1总结506.2个人收获506.3未来展望50参考文献52致谢53I 北京航空航天大学硕士学位论文表目录表1用户登录测试用例表48表2用户修改密码测试用例表48表3账号管理界面极限值测试用例49表4用户登录测试结果表49表5用户修改密码测试结果表50表6账号管理界面极限值测试结果表50I 北京航空航天大学硕士学位论文图目录图1MetroUICSS截图9图2客户关系管理系统响应式布局截图10图3系统管理模块用例图13图4客户管理模块用例图14图5物品管理模块用例图15图6财务管理模块用例图16图7客服信息管理模块用例图17图8系统功能结构图20图9系统模块区域设计截图26图10CRMSystem项目依赖性截图27图11用户登录界面实现截图30图12管理员默认视图截图32图13普通员工默认视图截图32图14用户管理界面分页35图15审核客户信息界面实现截图37图16客户物品详细信息实现截图38图17配置管理模块用户详细信息实现效果截图40图18数据库统计信息截图42图19异常处理页面截图44图20 系统测试流程模型48I 北京航空航天大学硕士学位论文第一章绪论1.1课题来源和意义为了高效率、高质量的为驻场单位提供各类航空安保服务,以确保首都机场实现安全运营,协助机场管理当局提升服务品质,为中外航空企业提供优质的地面保障服务,公司高度重视对客户关系的建立和维护,希望通过CRM客户关系管理系统,更加详实全面的了解客户的动态,获取客户对公司服务的评价,同时,作为一家安全保障型企业,特别是首都机场的特殊政治意义,对客户的安全指标评级也至关重要,希望通过日常监察所获取的客户信息,对客户安全性进行把控,因此构建整套CRM系统的需求非常迫切,促成了本课题的启动和研究。1.2国内外研究现状分析随着21世纪信息化热潮到来,全球电子商务不断向“市场化、国际化、信息化”的方向发展。全世界各地公司纷纷在客户信息的管控和客户关系的管理上投入巨资,它们期望办公信息化能够成为企业更有效的维持和争取客户,从而赢得商业竞争。CRM客户关系管理系统是一种新型的管理系统,基于资金关系、物流关系、信息关系等在线处理,完成整个系统管理。对外使用WEB网站模式,用户直接通过互联网访问数据,查询相关内容;对内管理员和系统用户和可以直接登录站点,管理相关数据,实现自动化办公,提高工作效率。同时也可以在线直接对客户的意见、建议进行反馈,及时处理。Asp.net被证明是一个很成熟的平台。在开发网站类应用时,能做到比较大的规模,同时支持高并发和高可扩展性。本系统基于asp.net平台,同时使用MVC架构。MVC模式在.net平台的架构清晰,代码执行效率高。于本系统有很高的研究意义。本CRM系统同时使用entityframework作为数据库框架。Entityframework能方便的完成数据库到实体的映射,同时对asp.netMVC框架支持度较高。当系统需要增加新功能或者需要改进时,只需要更改很少代码,即可完成修改。大大提高了系统的可维护性和可扩展性。3 北京航空航天大学硕士学位论文1.3课题目标本论文的主要目标是:以公司信息技术为载体,实现一个高灵活性、高维护性、高扩展性的客户关系管理系统。能维护相关客户资料,实现安检管理,财务管理以及课后服务反馈等功能。包含关系管理系统大部分模块,同时能按需增加新功能。本论文主要内容有:1.系统需求分析通过对公司实际走访,分析调查,形成初期需求说明。同时观察公司实际工作流程,实现系统流程图。针对公司实际业务需求,分析原始数据以及所需文档,形成最终需求文档。2.系统解决方案根据前期调研结果和需求文档,结合公司实际工作中的处理流程,以及老员工在工作中所积累的工作经验,确定本系统的最终解决方案。主要包括,系统功能模块划分,用户角色划分,整体架构设计,界面设计等。并做成相应开发计划。参照需求文档,形成数据模型。参照业务流程,形成系统用例图。深入挖掘现有的管理系统的优缺点,按照实用性、稳定性、扩展性的原则,对系统进行整体架构设计。准确划分系统模块,处理好细节功能。3.系统总体设计以MVC模式为基本,即:数据模型(Model)+视图(View)+控制器(Controller)。按照各个模块的功能需求,添加相应处理逻辑。使用asp.netMVC4框架进行开发。每个模块都使用单独的模型和流程图。提高并行开发进度。用户角色处理部分使用asp.netMVC自带的过滤器(Filter),提高现有代码使用率。数据库层使用entityframework框架,降低耦合性。代码统一使用VisualStudio开发。4.系统模块设计1)客户信息模块客户信息管理模块主体功能有:查看客户基本信息、增加新客户、修改更新指定客户信息等。同时需要进行权限认证。只有公司员工级别以上的用户才能管理客户信息。2)安检管理模块3 北京航空航天大学硕士学位论文安检管理模块主体功能有:设置安检标识、确定通过安检、物品复检、物品移交等。同时需要权限认证。只有主管级别以上的用户才能通过物品复检。1)财务管理模块财务管理模块主体功能有:查看财务信息、增加新账单、查询修改账单状态、账单结算等。需要用户权限认证。只有主管级别以上的用户才能结算账单。2)客服管理模块客服管理模块主题功能有:满意度查询、进度处理、设置满意度等。只有客户级别的用户能添加客服满意度,设置满意度。员工只能进行进度处理。1.项目测试流程项目开发阶段,开发人员使用单元测试进行代码测试。一方面保证功能模块能正常开发,同时也能保证代码质量。开发阶段,需尽量提高单元测试覆盖率。功能性测试阶段,需要测试人员对项目各个模块,各个功能,各个流程进行详细测试,做到全面覆盖。发现问题,直接提交给开发人员。安全性测试阶段,则需要从系统登录的安全性、系统权限控制的安全性、系统资源的安全性进行完整的测试。性能测试阶段,主要进行网络负载测试和系统压力测试。最终完成系统整体测试流程。1.4本论文组织结构本论文基本结构如下:第一章:绪论部分。主要介绍课题的来源、研究背景、国内外研究现状以及论文的目标与主要内容。第二章:介绍系统采用的关键技术。详解讲解asp.net框架,MVC模式,entityframework框架等。并简要说明在本系统中的应用。第三章:系统的需求分析。概况一下系统总体功能需求,通过模块用例图,对各个功能模块进行详解讲解。第四章:系统的整体设计与实现。按照视图、控制器、模型详细讲解MVC设计模式在系统中的应用。通过对功能模块的分析,给出了业务具体实现流程,示例代码等。第五章:系统测试。靠开发人员和测试人员进行单元测试、功能测试、安全测试和压力测试。修复bug,完成系统功能性需求。第六章:课题总结。对本系统的设计和研究过程进行了全面的概括和总结,阐述开发过程中遇到的问题,并对未来系统的应用和拓展进行展望。3 北京航空航天大学硕士学位论文1.5本章小结本章主要分析项目的背景和意义,以及项目背景和项目价值,并详细指出选用本项目作为论文研究的重要意义。阐述、规范论文的整体内容结构。3 北京航空航天大学硕士学位论文第二章系统关键技术2.1ASP.NET技术平台和C#开发语言ASP(Active Server Pages活动服务器页面)是一种功能强大的运用于服务器端的脚本编程环境,但是只能用VBScript或者JavaScript这样的非模块语言来编程,而且大量的HTML代码和VBScript、JavaScript代码混合在一起,使得程序员需要修改程序的时候比较困难。 而ASP.NET技术是Microsoft公司推出的动态Web开发技术。ASP.NET不同于ASP和JSP,它是建立在.NET Framework之上,提供了更易于编写而且结构清晰的代码,它使用VB.NET和C#等模块化语言编写程序,提高了代码的再利用性和共享性。ASP.NET在结构上几乎完全是基于组件和模块化的,Web应用程序的开发人员使用这个开发技术可以实现更加模块化的、功能更强大的应用程序。ASP.NET技术在效率、可重用性及代码量上较ASP和JSP都有明显的优势。 使用ASP.NET技术,开发人员不需要理解HTTP、SOAP或其它任何网络服务规范。开发人员用ASP.NET生成一个扩展名为.asmx的文件,并把此文件配制为网络应用程序的一部分,就建立起了一个网络服务。 asmx文件包含对在其它地方定义的受控类的引用,或者包含这个类的定义。这个类是由ASP.NET提供的WebService类所派生。公有的类方法在标记上WebMethod属性后,就会成为网络服务方法,把HTTP请求发送到asmx文件中的URL后,这些方法就会被调用。不必手工为你的网络服务建立一个契约。当被调用者请求时,ASP.NET检查类的元数据,以自动生成SCL文件。客户可通过SOAP,HTTP GET 和HTTP POST提交请求。对方法和参数进行编码的约定是:对HTTP GET,将被编码为查询字符串;对HTTP POST,将被编码为表单数据。HTTP GET 和HTTP POST 的机制不如SOAP有力,但是它们使得客户在访问网络服务时不必支持SOAP。  ASP.NET 网络服务模型假定了一个无状态服务结构。无状态结构通常比有状态结构更具可扩展性。每次收到一个服务请求后,就生成一个新对象,请求被转化为一个方法调用,当该方法调用返回时对象被销毁。如果这些服务需要跨请求维护状态,那么它们将使用ASP.NET状态管理服务。基于ASP.NET的网络服务在网络应用程序模型中运行,因此它们得到了该模型的所有安全、配制和其它优点。 3 北京航空航天大学硕士学位论文 ASP.NET 网络服务还提供了一个为在SCL文件中描述的网络服务生成分类的受控代理工具。代理生成器把SCL文件中描述的消息映射成受控类中的方法。代理对应用程序代码隐藏了所有的网络和引导设备,因此使用网络服务看起来就像使用其它受控代码一样。代理将优先使用SOAP链接网络服务,但是它同样支持HTTP GET和 HTTP POST机制。因此HTTP GET和 HTTP POST同样也能被使用。 网络服务为在Internet上绑定应用程序提供了一个利用现存体系架构和应用程序的简单的、灵活的、基于许多标准的模型。网络应用程序很容易与当地开发的服务或已存在的服务集成在一起,而不用考虑开发平台、开发语言或使用的对象模型,以用于实现任何组成的服务或应用程序。 Microsoft .NET框架在现有开发人员技巧之上,提供了一个应用程序模板和关键技术,用于简化安全、可靠、可扩展、高可用性的网络服务的建立、部署和不断的发展。2.2ASP.NETMVCASP.NETMVCFramework是微软在ASP.NET中所添加的一组类别库,这组类库可以使用Model-View-Controller的设计模式来开发ASP.NET的应用程序。1)Model:包括数据、验证规则、数据访问和业务逻辑等应用程序信息;2)View:封装了应用程序的表示层,是呈现给使用者看的信息;3)Controller:包括控制流逻辑,控制信息流和应用程序的执行。接受来自用户的指令与数据,并将Model与View做整合的控制器,当服务器接到对ASP.NETMVC应用程序的要求时,服务器(IIS)会先使用UrlRoutingModule(ASP.NETRouting的HTTP模块),由它来解析是否有包含ASP.NETMVC应用程序的URL,若有,则会产生一个MvcRouteHandler对象,这个对象会装载执行的必要信息,并且调用包含在URL中的Controller的Execute方法来执行工作。2.2.1ASP.NETMVC的优点1)分离任务(输入逻辑,业务逻辑和显示逻辑),易于测试和默认支持测试驱动开发(TDD)。所有MVC用到的组件都是基于接口并且可以在进行测试时进行Mock,你在不运行ASP.NET进程的情况下进行测试,使得测试更加快速和简捷。3 北京航空航天大学硕士学位论文1)可扩展的简便的框架。MVC框架被设计用来更轻松的移植和定制功能。你可以自定义视图引擎、UrlRouting规则及重载Action方法等。MVC也支持DependencyInjection(DI,依赖注入)andInversionofControl(IoC,控制反转)的良好支持。2)强大的UrlRouting机制让你更方便的建立容易理解和可搜索的Url,为SEO提供更好的支持。Url可以不包含任何文件扩展名,并且可以重写Url使其对搜索引擎更加友好。3)可以使用ASP.NET现有的页面标记、用户控件、模板页。你可以使用嵌套模板页,嵌入表达式<%=%>,声明服务器控件、模板,数据绑定、定位等等。4)对现有的asp.net程序的支持,mvc让你可以使用如窗体认证和Windows认证、url认证、组管理和规则、输出、数据缓存、session、profile、healthmonitoring、配置管理系统、providerarchitecture特性。2.3EntityFrameworkADO.NETEntityFramework是微软以ADO.NET为基础所发展出来的对象关系映射(ObjectReletionshipMapping)解决方案。2.3.1EntityFramework特性EntityFramework利用了抽象化数据结构的方式,将每个数据库对象都转换成应用程序对象(entity),而数据字段都转换为属性(property),关系则转换为结合属性(association),让数据库的E/R模型完全的转成对象模型,如此让程序设计师能用最熟悉的编程语言来调用访问。而在抽象化的结构之下,则是高度集成与对应结构的概念层、对应层和储存层,以及支持EntityFramework的数据提供者(provider),让数据访问的工作得以顺利与完整的进行。1)概念层:负责向上的对象与属性显露与访问;2)对应层:将上方的概念层和底下的储存层的数据结构对应在一起;3)储存层:依不同数据库与数据结构,而显露出实体的数据结构体,和Provider一起,负责实际对数据库的访问和SQL的产生。2.3.2EntityFramework优点EntityFramework有以下优点:3 北京航空航天大学硕士学位论文1)应用程序可以通过更加以应用程序为中心的概念模型(包括具有继承性、复杂成员和关系的类型)来工作;2)应用程序不再对特定的数据引擎或存储架构具有硬编码依赖性;3)可以在不更改应用程序代码的情况下更改概念模型与特定于存储的架构之间的映射;4)开发人员可以使用可映射到各种存储架构(可能在不同的数据库管理系统中实现)的一致的应用程序对象模型;5)多个概念模型可以映射到同一个存储架构;6)语言集成查询(LINQ)支持可为针对概念模型的查询提供编译时语法验证。2.4jQuery介绍JQuery是一个轻量级的javascript库,它兼容CSS3,还兼容主流浏览器。jQuery使用户能更方便地处理HTMLdocuments、events、实现动画效果,并且方便地为网站提供AJAX交互。同时jQuery的文档说明很全,还有许多成熟的插件可供选择。能够使开发人员的html页面保持javascript代码和html内容分离。jQuery包含以下特点:1)动态特效;2)AJAX;3)通过插件来扩展;4)4.方便的工具-例如浏览器版本判断;5)渐进增强;6)链式调用;7)多浏览器支持,支持InternetExplorer、Opera9.0+、Firefox2+、Safari2.0+、Chrome1.0+(在2.0.0中取消了对InternetExplorer6,7,8的支持)。2.5Microsoftsqlserver介绍MicrosoftSQLServer是一个全面的数据库平台,使用集成的商业智能(BI)工具提供了企业级的数据管理。MicrosoftSQLServer数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使您可以构建和管理用于业务的高可用和高性能的数据应用程序。3 北京航空航天大学硕士学位论文MicrosoftSQLServer数据引擎是该企业数据管理解决方案的核心。此外MicrosoftSQLServer结合了分析、报表、集成和通知功能。使企业可以构建和部署经济有效的BI解决方案,帮助的团队通过记分卡、Dashboard、Webservices和移动设备将数据应用推向业务的各个领域。同时entityframework能完美支持sqlserver查询。也是sqlserver的一大亮点。2.6MetroUICSS介绍MetroUICSS是一组用于创建MetroUI风格的CSS样式模板。它是一套自成体系的解决方案。也可以和其他框架一起使用。MetroUICSS本身是一个开源框架,可以独立使用。图1MetroUICSS截图MetroUI是一种界面展示技术,强调的是信息本身,而不是冗余的界面元素。显示于下一个界面的部分元素的功能上的作用主要是提示用户“这儿有更多的想信息”。同时在视觉效果方面,这有助于形成一种身临其境的感觉。最新的Metro风格界面,设计风格优雅,可以令用户获取一个美观、快捷流畅的Metro风格界面和大量的展示信息。2.7响应式布局3 北京航空航天大学硕士学位论文一个网站,能够兼容多个终端,而不是为每个终端做一个特定的版本。这个概念是为解决移动互联网浏览器而诞生的。响应式布局可以为不同终端的用户提供更加舒适的界面和更好的用户体验,而且随着目前大屏幕移动设备的普及,用“大势所趋”来形容也不为过。随着越来越多的设计师采用这个技术,我们不仅看到很多创新,还看到了一些成形的模式。图2客户关系管理系统响应式布局截图响应式布局的优点:1)面对不同的分辨率设备,灵活性强;2)能够快捷解决多个设备显示适应问题。响应式布局的缺点:1)兼容各种设备工作量大,效率低下;2)代码累赘,会出现隐藏无用的元素,加载时间长;其实这是一种折中性质的设计解决方案,多方面因素影响而达不到最佳效果。一定程度上改变了网站原有的布局结构,会出现用户混淆的情况。2.8本章总结本章系统的介绍了开发过程中,所需要用到的相关技术,主要介绍了.Net技术及架构、MVC模式和asp.netMVC框架。MVC设计模式是一种被广泛应用的设计模式,采用将模型、视图和控制器相互分离的思想,它的优点是可以为一个模型在运行时同时建立和使用多个视图,具有良好的模型可移植性以及视图与控制器的可接插性。MVC3 北京航空航天大学硕士学位论文框架的优点和体系结构模型符合该系统的设计要求。同时详细介绍了entityframework数据库ORM框架和jQuery前端开发框架。响应式布局可以兼容各种分辨率的终端,为用户提供更加舒适的界面和更好的用户体验。3 北京航空航天大学硕士学位论文第三章系统需求分析和整体架构设计本论文完整实现了CRM系统。主要包含客户管理、安检管理、物品管理、报表管理、系统管理等模块。根据客户需求,本系统完成以下功能:1)良好的人机交互界面以及良好Web版式设计;2)管理客户的详细信息,包括客户的基本信息、所在公司的联系人信息、合作者信息等;3)记录安检物品出入库详细信息;4)记录客户的反馈信息,对客服信息进行管理;5)设置用户权限,管理用户信息;6)报表功能;本系统主要模块有:系统管理模块、客户管理模块、物品管理模块、财务管理模块、客服信息管理模块。下面详细描述系统每个功能模块用例图。3.1系统管理系统管理部分主要包括用户管理、权限管理、系统设置。系统的用户分为注册用户、普通员工、系统管理员等。用户注册登录系统之后,系统管理员赋予其相应的权限,提升为注册用户或者普通员工,然后才能进行相关操作。注册用户可以使用系统的部分功能。比如,提交安检物品,提交客服反馈信息等。普通员工可以对客户信息进行添加、修改等操作;可以添加修改财务信息。系统管理员可以修改其他用户的权限,以及进行系统级别的设置。系统管理部分用例图如图所示:3 北京航空航天大学硕士学位论文用户管理权限管理系统设置添加新用户修改用户信息删除用户添加权限修改权限删除权限删除权限管理员图3系统管理模块用例图1)用户管理管理员对新注册的用户进行权限控制。比如,普通注册用户、企业内部员工、部门领导等。同时允许管理员添加新的用户,修改指定用户的详细信息,删除指定用户等。2)权限管理管理员可以管理指定用户的权限。将注册用户提升为企业内部员工、部门领导、系统管理员等。修改指定用户的权限,使其不再具有以前的权限。不同等级的用户拥有不同的权限。对系统的功能使用程度也不同。3)系统设置管理员可以进行系统级别的设置。包括:是否允许新用户注册;网站站点名称;用户头像管理;3 北京航空航天大学硕士学位论文3.2客户管理客户信息管理模块实现了客户信息的相关操作。企业员工可以录入公司客户详细联系信息,对客户信息进行维护、修改、审核等。并通过关键字进行相应查询。客户管理部分用例图如图所示:员工维护客户信息添加客户信息查询客户信息修改客户信息审核客户信息图4客户管理模块用例图1)添加客户信息员工将客户的基本信息录入系统中。基本信息主要有:客户名称、地址、联系电话、企业联系人的姓名、身份证号码、电子邮件等。2)审核客户信息员工在系统中录入客户档案信息后,经过部门经理审批,即可正式录入系统。如果不能审批,部门经理可以注明拒绝理由,并退回给员工。员工经过修改后可以重新提交,然后重新审核。3)修改客户信息由于客户的联系方式随时在变动,所以允许手动修改客户信息。修改之后,由部门经理进行审核。审核通过之后,录入系统。4)查询客户信息3 北京航空航天大学硕士学位论文通过使用不同的关键字和搜索条件,对当前系统中的客户进行搜索。可以按照客户姓名、客户联系方式、电子邮件等条件进行过滤。不同的员工都可以在系统进行客户信息查询,然后进行之后的系统操作步骤。3.3物品管理机场作为一个重要交通枢纽,其安检工作必不可少。通过使用数字化系统,能有效提高安全检查的质量和效率。物品管理模块实现物品安检相关功能。用户可以设计安检标志语,完成物品安检、物品复检、物品移交等系统流程。物品管理模块用例图如图所示:安检人员设置安检标识物品安检物品移交安检通过安检复审图5物品管理模块用例图1)设置安检标识安检人员可以通过本系统设计安检标识,安检标语等。后期系统可以与其他平台整合,将安检标语通过大屏幕显示到机场各个通知部分。2)物品安检安检人员对机场的旅客进行安全检查。然后把通过安检的物品录入系统,自动生成对应的报表。如果因为某些特殊原因不能通过安检的,需要由安检人员对旅客的物品进行重新拆包复检,然后把安检结果录入系统。3)物品移交3 北京航空航天大学硕士学位论文不同的安检物品通过检查之后,移交各个管理部门。由该部门员工进行物品审核,录入系统。3.4财务管理财务管理模块实现企业内部账务相关管理功能。包括:流动资产管理、固定资产管理、报销管理、账务管理。财务人员通过系统对企业内部资源进行分配,按照所在部门进行编号,移交所有权。同时可以添加新的账务信息,交与部门领导审批。财务管理模块用例图如图所示:财务人员流动资产管理固定资产管理报销管理财务管理添加新账务查询账务信息图6财务管理模块用例图1)固定资产管理财务人员将公司当前拥有的固定资产进行编号,然后分配给各个部门。部门拥有该资产的使用权。同时,部门领导需要对资产进行维护。如果出现损坏,丢失等问题,需要由部门领导进行上报,然后申请分配新的资源。同时财务人员需要将当前资源进行重新录入,分配。2)流动资产管理3 北京航空航天大学硕士学位论文财务人员对小额流动资产进行登记。然后分配给各个部门。部门员工需要通过申请,才能获得流动资产的使用权。使用之后需要归还的,需要移交财务部门,由财务人员进行管理。1)财务管理员工在财务管理模块中,提出财务申请,由部门经理批准审核之后,财务人员进行财务下发,员工即可使用这笔财务。财务人员同时将财务管理信息录入系统,供管理使用。同时提供财务查询功能,能通过员工工号、姓名等关键信息,查询账务。2)报销管理员工可以通过系统申请报销财务。交由部门经理审批。经理审核批准之后,由财务人员进行报销录入。员工可以通过系统上传所需凭证,作为日后记录使用。3.5客服信息管理客服人员通过客服信息管理模块对客户的反馈信息进行管理。记录客户提交的问题,同时对客户的留言内容进行答复。客户可以进行客服信息查询,处理进度查询,对员工的处理过程进行评分,客服信息管理用例图如图所示:客服人员记录客服信息查询客服信息满意度查询处理进度查询处理过程评分图7客服信息管理模块用例图1)记录客服信息3 北京航空航天大学硕士学位论文客户通过系统提交客户问题。客服人员收到提交的问题后,记录客户的反馈信息,然后进行相关处理。1)查询客服信息客户和客服人员可以对反馈的信息进行查询。包括处理进度查询,相关内容查询等。如果客服人员处理完成,客户还可以对处理过程和结果进行评分。2)满意度查询客户对处理结果进行评分之后,系统会统计相关数据,进行满意度汇总。用户可以查看客服人员的满意度,然后查看该员工的公开信息,或者给员工留言,提交问题等。3.6系统整体架构设计本着简化开发过程,降低模块之间耦合度的原则,本系统在设计过程中,尽量将各个模块功能分散开,同时细化具体功能。根据CRM系统的实际需求,为实现项目整体目标,将系统划分为前端表示层、系统控制层、数据处理层。1)前端表示层系统的WEB前端使用微软的METRO风格类库,提高系统整体辨识度。也使得系统整体显得高端大气。同时系统能兼容主流浏览器,让不同的用户都有一致的用户体验。2)系统控制层系统控制层主要负责对用户提交的请求进行验证,处理,然后把信息提交数据库。最后把处理之后的数据和网页视图呈现给用户。系统控制层是整个系统的核心部分,是业务逻辑的具体实现层。涵盖系统的所有功能模块。同时负责对用户进行权限控制、安全控制。3)数据处理层数据处理层为整个系统提供基础数据处理平台。主要对控制层提交的数据进行验证,然后录入数据库。数据处理层需要同时满足高并发性、高稳定性、易维护性等需求。3.6.1系统功能模块设计系统功能模块遵循了软件工程的面向对象设计模式,模块的划分准则具体体现为:1)高内聚3 北京航空航天大学硕士学位论文每个模块独立完成某个功能。模块内部逻辑严谨,关联紧密严谨。1)低耦合模块间的业务联系性和数据依赖性要尽可能小。模块分界清晰。2)易扩展模块功能设计应尽可能灵活。易于在此基础上进行扩展,以适应不断发展变化的业务模式和工作流程。3)易维护模块间应相互独立,易于采取分阶段开发、分阶段实施的增量式软件开发模式。提高并行开发效率,加快系统开发周期,使系统尽早投入使用,获得效益回报。3 北京航空航天大学硕士学位论文3.6.2系统整体设计系统设置客户管理安检管理财务管理客服管理用户管理权限管理系统管理维护客户信息查询客户信息物品安检物品移交流动资产管理固定资产管理财务管理客服信息满意度查询客户关系管理系统图8系统功能结构图系统整体分为:系统管理模块、客户管理模块、安检管理模块、财务管理模块、客服管理模块。3.6.3系统软/硬件部署方案本系统采用B/S(浏览器/服务器)模式。整个系统设置灵活,扩展方便。3 北京航空航天大学硕士学位论文系统支持分布式部署,并且根据实际情况可灵活调配。如根据实际运行的用户数、数据量、访问频率等因素,可以将各层软件部署在同一台物理主机之上,也可以部署在不同的物理主机之上,即相应的物理主机既可以是集中式、也可以是分布式的。提供了分布式应用软件在采用分布式处理时,可以不局限于某一个系统平台。作为可分布部署的应用系统,将Web应用服务器和数据库服务器部署在同一台物理主机上,这种方式对主服务器的处理能力和稳定性要求较高,建议采用同系列中的高端产品。另外,也可以采用两台主机,分别部署Web应用服务和数据库服务,这样既可以保证性能和稳定性,也可以降低系统运营风险。本项目采用第二种方案来部署系统。根据信息系统的设计需求,确定信息系统物理设备方案。考虑到用户在系统环境方面投资及系统所需承载的压力条件等因素,所设计的物理设备方案在能够充分满足信息系统功能需求的前提下,还应满足系统的效率、可靠性、安全性和适应性等性能要求,并具有较高的性价比。根据前面的需求分析,本系统所需的物理设备组成如下:1)计算机系统计算机系统有多种形式,考虑到本系统的计算机主要用于前台操作,选用微型服务器。2)相关I/O设备除了计算机系统所配置的I/O设备之外,本系统还需要配置专用的I/O设备,包括打印机。3)服务器由于部署应用服务及数据存储备份的需要,本系统还需要配备1:1热备服务器系统共计2套。4)电源及其它设备为了提高系统的可靠性,使系统不至于在工作期间因停电而停机,系统还需配备不间断电源一台;同时还需要网络设备及布线,如路由器及交换机等设备。同时,信息系统开发和运行也需要集成软件环境,设计和选择高效、实用、方便、功能齐全的软件平台,对信息系统的开发具有十分重要的意义。在结合实际开发的需要并充分考虑各种软件平台的性能及适用范围和对软件平台的使用能力,本系统的软件平台选择如下:1)操作系统3 北京航空航天大学硕士学位论文操作系统是计算机系统中最重要的系统软件。目前,服务器采用Windows2003Server操作系统。终端可选用的桌面操作系统有Windows98/2000/XP/2003server/Vista等,建议使用WindowsXP以上系统。1)支撑软件支撑软件是协助人们开发和维护软件的工具和环境软件,包括编辑程序,数据库系统,集成开发环境等,本系统的支撑软件如下:1)数据库管理系统(DBMS):为了对数据库实施集中管理,同时并发的处理多个客户机发来的数据处理要求,选用SQLServer数据库管理系统;2)客户端开发软件:在大量的客户端开发软件中,考虑到开发软件的继承性,以及当前各种软件的特性,我们选用目前流行的以安全、稳健、高效、友好等特点,并且结合了C、C++和JAVA等诸多语言特点的C#语言。3)中间协议和软件:出于系统开发的需要,为了能让数据库调用基于SQL的服务,选用SQLServer中自带的驱动程序作为数据库中间件。3.6.4系统架构设计本系统采用三层结构的分布式应用为主,即:用户交互层、业务逻辑层、数据存储层。在每层结构中都有相应的组件,同时系统还提供一些通用组件来提供一些通用服务。1)用户交互层:实现用户与系统的交互,相当于一个接口的功能,定义一些方法。2)业务逻辑层:处理所有业务逻辑,对界面传入的数据进行处理。主要工作包括:定义、初始化全局变量;传输数据的公共方法;从输入数据中得到所有对象;根据前面的输入数据,进行BL逻辑处理;准备输出到后台的数据等。3)数据存储层:该层是对业务逻辑层的扩展,实现对数据库的操作。主要工作包括:定义、初始化全局变量;传输数据的公共方法;根据不同操作要求调用不同的函数访问数据库;保存、删除、修改函数等。3 北京航空航天大学硕士学位论文 综合以上分析,可将系统具体划分为多个模块。具体模块及交互设计如下:1)实体类模块:一组实体类的集合,负责整个系统中数据的封装及传递。2)数据访问层模块:一组类的集合,完成数据访问层的具体功能,实现数据访问层接口。3)业务逻辑层模块:一组类的集合,完成业务逻辑层的具体功能,实现业务逻辑层接口。4)交互层模块:程序及可视元素的集合,负责完成表示层的具体功能。5)辅助类模块:完成全局辅助性功能。6)数据访问层接口:一组接口的集合,表示数据访问层的接口。7)业务逻辑层接口:一组接口的集合,表示业务逻辑层的接口。8)管理接口:一组接口的集合,表示对上层系统开放的接口。9)第三方接口:一组接口的集合,表示对第三方系统开放的接口。同时本系统是一个典型的三层结构应用,每个层次相对独立。系统在用户界面层实现MVC模式。1)UI层中相应的包含Model、View、Control对象,以及与UI层业务逻辑有关的BusinessLogic对象。2)BL层的主要对业务逻辑进行封装。该层对象封装BL层对UI的远程接口,接口的设计应当是面向用例的,即一个用例对应一个远程调用。需要说明的是,该层对象是为了实现服务端的分布,并利用Web服务器提供的负载平衡、分布式事务等服务,因此事务应当在该层中建立。3)DB层主要包含实体对象。实体对象作为DB层对象,实体的使用需要按需求进行仔细考虑。主要针对实体容器内存负荷,生命周期管理消耗(持久化等)考虑实体的负面影响,从缓存和数据同步考虑实体的正面影响。3 北京航空航天大学硕士学位论文按照分层设计的思想,系统在业务实现上遵循以下处理逻辑:由前台发出请求,通过显示层进行数据临时存取,并通过事件处理机制调用服务端应用,在服务端的业务逻辑层对数据和操作进行处理,实时调用数据层的封装组件组织数据,最终将结果经过业务逻辑层逐层返回到显示层和前台。3.7本章总结本章详细讲解了CRM系统需求,和整体功能逻辑。然后分别介绍了系统管理模块、客户信息管理模块、安检管理模块、财务管理模块、客服信息管理模块的具体功能。结合功能用例图讲解详细操作流程。讲解了系统整体架构设计以及具体代码实现过程。按照高内聚低耦合的特点,进行整体设计开发。同时详解介绍了本系统所需的软件环境硬件环境。3 北京航空航天大学硕士学位论文第四章系统设计与实现本系统使用visualstudio2012作为开发工具,提供git作版本控制。系统使用asp.netmvc作为开发框架,数据库使用entityframework作为ORM框架。4.1asp.netmvc系统实现在asp.netmvc中,区域(area)是一个特有的功能,可以把功能模块设计为一个独立的区域。如果不使用区域(area)的话,那么必须将所有的控制层和视图层的文件都放在各自的目录中。显然,不能在不同的功能模块中对控制器有相同的命名,只能将控制器创建不同的名称,和不同的action。按照asp.netmvc的规定,区域可以对文件目录结构和类的命名规则进行命名。每个功能模块都复制独立的mvc目录结构,都会有自己独立的控制层(controller)、视图层(view)和实体层(model)的目录。在CRMSystem中,把各个功能模块都划分为独立的area,互不干扰。同时也为了后期能够添加新模块,新功能,修改代码逻辑提供了方便。根据CRMSystem需求分析,将代码分块。如图所示,Areas文件夹下,CustomerManager区域指代客户管理模块,Finance区域指代财务管理模块,Manager区域指代系统管理模块,Safety区域指代安检管理模块,Service区域指代客服管理模块。默认Controllers文件夹下的AccountController负责用户登录、修改密码、修改账号信息、修改配置文件等功能。HomeController负责加载主体页面、加载侧边栏(sidebar)、加载导航栏(navbar)、加载页脚(footer)等。同时根据当前登录的用户权限,渲染不同的页面结果。3 北京航空航天大学硕士学位论文图9系统模块区域设计截图4.2初始化开发框架1)打开visualstudio,创建一个空的asp.netMVC项目;2)打开“工具”,“程序包管理器”,搜索并添加以下依赖项目:EntityfyFramework5Microsoft.Practices.ServiceLocationMicrosoft.Practices.UnityMicrosoft.Practices.Unity.ConfigurationNewtonsoft.JsonSystem.EnterpriseServicesSystem.Web.MvcSystem.Web.OptimizationSystem.Web.Razor在项目根目录下查看package文件夹,可以看到项目的依赖项:3 北京航空航天大学硕士学位论文图10CRMSystem项目依赖性截图1)打开Global.asax.cs源文件,添加对unitycontainer的初始化://读取web.config配置文件:ExeConfigurationFileMapfileMap=newExeConfigurationFileMap();fileMap.ExeConfigFilename=Server.MapPath("~/web.config");//打开Unitycontainer配置节:Configurationconfig=ConfigurationManager.OpenMappedExeConfiguration(fileMap,ConfigurationUserLevel.None);ConfigurationSectionsection=config.GetSection(UnityConfigurationSection.SectionName);IUnityContainercontainer=newUnityContainer();container.LoadConfiguration((UnityConfigurationSection)section);3 北京航空航天大学硕士学位论文//根据web.config内容,设置container:ServiceLocator.SetLocatorProvider(()=>newUnityServiceLocator(container));1)修改web.config,添加unitycontainer配置节:同时添加接口和实现类的对应关系:……2)在asp.netmvc中,可以使用bundle捆绑多个css文件和javascript文件,以提高网络加载速度和页面解析速度。Bundle提供了一些运行性能方面的优化,可以将文件合并并压缩代码优化成一个最理想的文件,然后输出到客户端,从而提高网络下载速度和页面的运行速度。在项目根目录下创建Content文件夹,Scripts文件夹,同时把MetroUICSS所有文件复制到此目录。打开App_Start文件夹下BundleConfig.cs源文件,添加对JQuery框架和MetroUICSS的原始引用:bundles.Add(newScriptBundle("~/bundles/jquery").Include(3 北京航空航天大学硕士学位论文"~/Scripts/jquery-1.9.0.js","~/Scripts/jquery.form.js"));bundles.Add(newScriptBundle("~/bundles/javascript").Include("~/Content/javascript/*.js"));bundles.Add(newStyleBundle("~/Content/css").Include("~/Content/css/modern.css","~/Content/css/modern-responsive.css"));打开_Layout.cshtml源文件,添加对JQuery框架和MetroUICSS的引用:@Styles.Render("~/Content/css")@Scripts.Render("~/bundles/jquery")@Scripts.Render("~/bundles/javascript")4.3代码实现4.3.1登录页面的实现登录页面是用户首次打开网站时,第一次看到的界面。所以设计必须美观,简洁。同时必须给出精简有力的错误提示。比如,用户名或密码不正确时,应该使用醒目的颜色和显眼的位置提示用户。如果用户已经登录过系统,那么可以选择记住密码,免去以后再次输入用户名密码的情形。3 北京航空航天大学硕士学位论文图11用户登录界面实现截图用户登录之后,如果选择了“保持登录状态”,那么系统会根据用户名生成一条cookie,记住当前登录的用户名,免去下次重复登录。publicActionResultLogon(LogOnModelmodel,stringreturnUrl){//调用数据层service,验证用户名和密码:varaccount=CoreService.AccountService.ValidateUser(model.UserName,model.Password);if(account==null){//验证失败,通知view添加错误消息:ModelState.AddModelError("","");//将用户数据返回,避免重复多次输入,造成用户的困扰:returnView(model);}//使用asp.netForm验证方式,记录当前登录的用户:3 北京航空航天大学硕士学位论文FormsAuthentication.SetAuthCookie(account.UserName,model.RememberMe);//如果用户设置过独立的用户配置,读取当前配置,并记录到cookie中,供以后使用:Response.Cookies[Utils.COOKIE_SETTINGS].Values[Utils.COOKIE_SETTINGS_COUNTPERPAGE]=account.Settings==null?CoreService.SystemService.SystemSettings().CountPerPage.ToString():account.Settings.CountPerPage.ToString();//跳转到登录之前的页面:if(Url.IsLocalUrl(returnUrl)){returnRedirect(returnUrl);}//跳转到首页:returnRedirectToAction("Index","Home");}然后根据当前用户的权限,跳转到指定的页面。比如,系统管理员的权限最高,可以加载所有模块的管理功能:3 北京航空航天大学硕士学位论文图12管理员默认视图截图而一般员工只能参与财务管理和客服信息管理,无法查看系统级别的权限和设置:图13普通员工默认视图截图4.3.2系统管理模块实现系统管理模块主要功能有:系统设置、用户管理、权限管理、部门管理。1)系统设置:管理员可以进行系统设置。包括修改站点标题、是否允许新用户注册、分页时默认分页大小等。如果需要其他详细配置,可以直接修改SystemController逻辑和对应的view。同时,由于系统配置在运行期间,很少产生变化,但是读取系统配置的操作次数很多。所以在数据连接层使用单例+缓存(singleton/cache)模式,提高程序执行效率://添加静态字段:privatestaticSystemSettingscache;publicSystemSettingsSystemSettings(){//延时初始化:if(cache==null)cache=Database.SystemSettings.First();3 北京航空航天大学硕士学位论文returncache;}1)用户管理:系统管理员可以对已经注册的账号进行管理。包括查看所有账号,修改信息,添加新账号等。由于后期系统用户可能会增添很多,所以在界面和数据库设计上,需要对结果进行分页处理。按照系统配置或者用户独立配置对查询结果分页,减少数据库压力和客户端处理压力。Controller层分页处理:protectedvoidParsePageAndCount(refintpage,refintcount){//将分页功能作为基类方法,供继承类使用;//分页的数字不能小于1:page=page<=0?1:page;varcookie=Request.Cookies[Utils.COOKIE_SETTINGS];//从cookie里获取用户配置的分页大小:if(cookie!=null){intcookievalue=0;int.TryParse(cookie.Values[Utils.COOKIE_SETTINGS_COUNTPERPAGE],outcookievalue);count=cookievalue==0?count:cookievalue;}else{//从数据库和系统配置里读取默认分页大小:varaccount=CoreService.AccountService.AccountDetail(User.Identity.Name);count=account.Settings==null?CoreService.SystemService.SystemSettings().CountPerPage:account.Settings.CountPerPage;}3 北京航空航天大学硕士学位论文}Database层分页处理:protectedPagingModelParsePageAndCount(intpage,intcount,intsum){//使用model进行数据封装:varpaging=newPagingModel{Count=sum,//数据总数CountPerPage=count//默认分页大小};//根据总数和分页大小计算总页数:paging.TotalPage=paging.Count%count==0?paging.Count/count:paging.Count/count+1;//极端条件处理:if(paging.TotalPage!=0)paging.CurrentPage=page>paging.TotalPage?paging.TotalPage:page;if(paging.CurrentPage==0)//当前页数不能为零:paging.CurrentPage=1;returnpaging;}用户列表的最终实现效果截图:3 北京航空航天大学硕士学位论文图14用户管理界面分页实现效果截图4.3.3客户管理模块实现客户管理模块对应CustomerManager区域。主要包括维护客户信息、添加新客户信息、审核客户信息等。在修改信息页面,为了提升用户体验,也为了减少数据加载过程,使用ajax的方式来提交表单。需要在页面中,添加对jquery.ajaxform.js的引用。页面ajaxForm的javascript实现:$(document).ready(function(){//定义ajaxForm方法,指定dataType为json:$("form").ajaxForm({dataType:"json",beforeSubmit:beforesubmit,success:success});functionbeforesubmit(){//提交表单之前,清空验证错误时的提示信息:$(".field-validation-valid").text("");}functionsuccess(data){if(data.state=="success"){3 北京航空航天大学硕士学位论文//表单提交成功时,提示相应的消息:alert(data.message);//根据data跳转到指定的页面:window.location.href=data.url;}elseif(data.state=="failed"){//表单提交失败时,根据错误信息,更新页面,提示用户:$.each(data.errors,function(k,v){$(".field-validation-valid[data-valmsg-for=""+k+""]").text(v);});}}});Controller中,ajax实现:protectedActionResultAjaxJsonResult(stringstate,stringmessage,stringaction,stringcontroller,objectvalues=null){//state指示请求是否处理成功,为success或者failed;//message为提示用户的提示消息;//url为当用户点击确定按钮之后,进行的跳转链接returnJson(new{state=state,message=message,url=Url.Action(action,controller,values)});}protectedActionResultAjaxFailedResult(stringstate,IDictionaryerrors){//state指示请求是否处理成功,为failed;//errors包含了用户提交的表单中,所有的错误信息,客户端浏览器根据错误信息,提示用户进行相应的修改:returnJson(new{state=state,errors=errors});}审核客户信息界面最终ajax实现截图:3 北京航空航天大学硕士学位论文图15审核客户信息界面实现截图4.3.4物品管理模块实现物品管理模块对应Safety区域。主要功能包括:设置安检标识,物品安检,物品复审,物品移交等。公司员工对客户的物品进行登记,安检。根据物品的ID和客户的ID、用户名产生对应关系。物品只能从属一个客户,而一个客户可以拥有多个物品。在数据模型上,是多对一的关系://物品类:publicclassItem{//Id作为entityframework唯一标识:publicintId{get;set;}//物品名称:publicstringName{get;set;}//物品数量:publicintSum{get;set;}3 北京航空航天大学硕士学位论文//所属客户。在entityframework中,通过使用类名产生关联关系;//同时使用virtual关键字延时数据加载;publicvirtualCustomerCustomer{get;set;}//是否通过安检:publicboolIsVerified{get;set;}//物品登记日期:publicDateTime?RegisterTime{get;set;}//物品详细描述信息:publicstringDescription{get;set;}}客户物品管理模块物品详细信息界面最终实现截图如图所示,点击所属客户,即可查看客户的详细资料:图16客户物品详细信息实现截图4.3.5配置管理模块实现配置管理模块主要功能包括:修改账号相关信息,修改密码,上传用户头像,修改备注信息,和修改默认分页大小等。对应公共的AccountController。系统管理员可以开启或关闭用户头像的功能。用户选择一张图片作为用户头像上传,后台将此图片保存到avatar文件夹下,然后在数据库中生成一条对应的记录。当显示用户详细信息时,取出此记录,然后根据IIS虚拟路径,找到对应的图片文件。3 北京航空航天大学硕士学位论文编辑账号信息的实体模型:publicclassEditAccountModel{publicintId{get;set;}publicstringUserName{get;set;}publicboolIsActived{get;set;}//因为头像是一个图片文件,所以需要使用HttpPostedFileBase封装publicHttpPostedFileBaseAvatar{get;set;}publicstringComment{get;set;}}保存用户上传的头像文件:protectedstringSaveAvatar(HttpPostedFileBaseavatar,stringusername){//HttpPostedFileBase封装了用户上传的文件;//获取IIS下,站点的实际文件夹路径:stringfolder=Path.Combine(Server.MapPath(Utils.AVATAR_FOLDERNAME),username);if(!Directory.Exists(folder)){//如果不存在avatar文件夹,需要手动创建:Directory.CreateDirectory(folder);}stringfilename=avatar.FileName;if(filename.LastIndexOf("\")>-1){//chrome浏览器上传的文件只包含文件名,而IE浏览器包含了文件的详细路径,需要分别处理:filename=filename.Substring(filename.LastIndexOf("\")+1);}//将文件保存到服务端的实际文件夹下:stringfilepath=Path.Combine(folder,filename);avatar.SaveAs(filepath);//返回文件名,作为数据库记录3 北京航空航天大学硕士学位论文returnfilename;}获取用户头像:protectedstringGetAvatar(Accountaccount){if(!string.IsNullOrEmpty(account.Avatar)){//如果用户没有设置头像,则使用默认的头像(default.png):stringfilepath=Path.Combine(folder,account.Avatar);if(System.IO.File.Exists(filepath)){returnPath.Combine(Utils.AVATAR_FOLDERNAME,account.UserName,account.Avatar);}}//如果用户设置过头像,则获取头像文件所在的真实文件夹路径:returnPath.Combine(Utils.AVATAR_FOLDERNAME,Utils.AVATAR_DEFAULT);}配置管理模块用户详细信息最终实现效果截图:图17配置管理模块用户详细信息实现效果截图3 北京航空航天大学硕士学位论文4.3.6财务管理模块实现4.3.7客服管理模块实现4.3.8系统后台统计实现作为一个完整的管理系统,统计功能是必不可少的。本系统中,实现的统计功能为:记录登录用户的用户名,所在的IP地址,以及进行请求时的控制器名(controllername)和动作名(actionname),将请求时的数据序列化为json格式,保存到数据库中。在日后的检查和维护工作中,如果发生错误,就可以根据统计信息,进行信息回溯,找到出现问题的处理代码,将数据还原回来。同时改正错误的代码,修复问题。Asp.netmvc框架中,通过自定义特性(attribute),可以实现统计功能。继承默认的ActionFilterAttribute类,并重写相对应的OnActionExecuting方法,就可以对controller和action进行拦截,然后执行相应的统计处理。伪代码如下://重写OnActionExecuting方法,在action执行前就进行拦截,统计处理:publicoverridevoidOnActionExecuting(ActionExecutingContextfilterContext){//调用基类默认实现:base.OnActionExecuting(filterContext);//创建新的线程来执行统计功能。可以避免阻塞当前处理的客户请求:Tasktask=newTask(()=>SaveAudit(filterContext));task.Start();}//保存统计数据:privatevoidSaveAudit(ActionExecutingContextfilterContext){//Audit为数据实体模型:Auditaudit=newAudit{//当前请求的时间:Time=DateTime.Now,//登录用户的IP地址:IP=filterContext.HttpContext.Request.UserHostAddress,3 北京航空航天大学硕士学位论文//登录用户的用户名:UserName=((Controller)filterContext.Controller).User.Identity.Name,//登录用户执行的操作请求,直接序列化为json格式:Option=System.Web.Helpers.Json.Encode(New{//获取控制器:@Controller=filterContext.ActionDescriptor.ControllerDescriptor.ControllerName,//获取action:@Action=filterContext.ActionDescriptor.ActionName,//获取参数数据:@Params=filterContext.ActionParameters,}),};//执行数据处理,保存到数据库中:CoreService.AuditService.AddAudit(audit);}下图是本系统中,数据库保存的统计信息截图:图18数据库统计信息截图3 北京航空航天大学硕士学位论文4.3.8系统异常处理功能实现一个设计良好的系统,应该是能有很强的异常处理能力的。当遭遇用户错误的请求时,必须执行相应的异常处理,来拦截未知的危险,以免造成系统崩溃,其带来的损失可能是非常巨大的。本CRM系统中,简单实现了controller层的异常处理。通过对HandleErrorAttribute重写,实现异常处理。以下是实现异常处理的伪代码:publicoverridevoidOnException(ExceptionContextfilterContext){//如果已经处理过异常,则直接返回,不再处理:if(filterContext.ExceptionHandled)return;//获取出错的controller:varcontrollername=filterContext.RouteData.Values["controller"]asstring;//获取出错的action:varactionname=filterContext.RouteData.Values["action"]asstring;//创建数据模型,封装异常信息:varmodel=newHandleErrorInfo(filterContext.Exception,controllername,actionname);//出错时,跳转到homecontroller的error页面:varcontroller=newHomeController();controller.ViewData.Model=model;varrouteData=newRouteData();routeData.Values["controller"]="Home";routeData.Values["action"]="Error";//清空缓存:HttpContext.Current.ClearError();HttpContext.Current.Response.Clear();//执行页面跳转:((IController)controller).Execute(newRequestContext(3 北京航空航天大学硕士学位论文newHttpContextWrapper(HttpContext.Current),routeData));}异常处理的页面截图:图19异常处理页面截图4.4本章小结本章着重介绍了系统架构实现、框架设计,模块具体功能实现部分以及程序伪代码,最终实现的效果截图等。介绍asp.netmvc中,区域的使用,和javascript中,ajaxform的使用。以及在开发本CRM系统中,使用的缓存机制、分页的实现原理。3 北京航空航天大学硕士学位论文第五章系统测试测试章节写的内容过少,测试有许多种方法和过程,应尽量写的多一点,多忽悠系统测试,是将已经确认的软件、计算机硬件、外设、网络等其他元素结合在一起,进行信息系统的各种组装测试和确认测试。系统测试是针对整个产品系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出与需求规格不符或与之矛盾的地方,从而提出更加完善的方案。系统测试发现问题之后要经过调试找出错误原因和位置,然后进行改正。应覆盖系统所有模块。为了使系统质量得到有力的保证,对本系统采用了系统的测试。本章通过对软件测试研究,结合本系统的实际情况,确定测试技术及方案。通过测试执行,并对测试结果分析。本系统主要是对功能和性能进行了测试。5.1测试目标系统测试针对整个产品的全面测试,既包含各模块的验证性测试(验证前两个阶段测试的正确性)和功能性(产品提交个用户的功能)测试,又包括对整个产品的健壮性、安全性及各种性能参数的测试;在系统测试阶段完成测试用例的设计及执行。用例的侧重点在于系统主要功能流程的实现是否符合需求规格说明书的要求。任何系统不管是针对开发方还是用户方都希望能在较短的时间内达到用户的需求,这同时也是软件测试的目标,即在最短的时间内发现系统中隐藏的问题,从而达到用户的需求。所以本系统的软件测试目标为在规定的时间内,完成所有系统测试,并达到用户的要求。5.2测试原则软件测试,从不同的角度出发会派生出两种不同的测试原则。从用户的角度出发,就是希望通过软件测试能充分暴露软件中存在的问题和缺陷;从开发者的角度出发,就是希望测试能表明软件产品不存在缺陷,已经正确地实现了用户的需求。所有系统进行测试时都须有一定的标准与原则,测试原则是为测试者提供依据,起到约束的作用,有利于促进软件的测试。在测试时所采取的主要原则如下:所有的测试都应追溯到用户需求。软件测试的目标在于揭示缺陷。从用户角度来看,最严重的缺陷是那些导致程序无法满足需求的缺陷。3 北京航空航天大学硕士学位论文1)应由独立的第三方来构造测试。第三方测试最大的特点在于它的专业性、独立性、客观性和公正性。2)在测试工作真正开始前的较长时间内就进行测试计划。测试计划可以在需求模型一完成就开始,详细的测试用例定义可以在设计模型被确定后立即开始。因此,所有测试应该在编写任何代码前就进行计划和设计。3)2/8原则:测试发现的缺陷中80%很可能起源于20%的模块中。当某个功能出问题,根据其对用户的影响程度和风险大小确定测试的优先级。优先级高的测试,优先得到执行,一般来讲,针对用户最常用的20%功能(优先级高)的测试会得到完全执行,而低优先级的测试(另外用户不经常用的80%功能)就不是必要的,如果时间或经费不够,就暂时不做或少做。4)完全测试是不可能的,测试需要终止。测试无法显示软件潜在的缺陷。在测试中不可能运行路径的每一种组合。然而,充分覆盖程序逻辑,并确保程序设计中使用的所有条件是有可能的。5)充分注意测试中的群集现象。测试后程序残存的缺陷数目与该程序中已发现的缺陷数目或检错率成正比。应该对缺陷群集的程序段进行重点测试。6)尽量避免测试的随意性。测试计划应包括:所测软件的功能,输入和输出,测试内容,各项测试的进度安排,资源要求,测试资料,测试工具,测试用例的选择,测试的控制方法和过程,系统的配置方式,跟踪规则,调试规则,以及回归测试的规定等以及评价标准。7)程序修改后要回归测试。8)应长期保留测试用例,直至系统废弃。根据以上的测试标准,本系统的测试在项目早期成立了专门的测试组来完成测试。在需求分析审核确定后设计了测试计划,并审核通过。整个测试不管是人员还是环境及资源上与开发独立进行,确保了测试的有效性和可靠性。5.3测试方法本系统主要使用的测试方法为功能测试、集成测试、性能测试。具体方法如下:1)功能测试主要使用方法为等价类划分、边界值分析法、缺陷推测法、因果图、判定表等。2)集成测试3 北京航空航天大学硕士学位论文为软件模块之间的接口测试,验证软件模块是否与其他应用的软件模块,是否能正确的数据传递。软件模块是否利用平台的基础支撑功能,如系统登录、表单审核、日志记录、基础数据和人员信息等。1)性能测试使用方法为在各种极限情况下对产品进行测试,以检查产品的长期稳定性。例如,使用压力测试工具对WEB服务器进行压力测试。本项测试可以帮助找到一些大型的问题,如死机、崩损、内存泄漏等。系统中主要的性能测试点为:1)最大负载测试:随着虚拟用户的增加,服务器在规定时间内所能处理的总点击数;2)并发测试:随着虚拟用户的增加,服务器在规定时间内所能处理的每秒请求数;3)负载测试:随着虚拟用户的变化,应用性能的变化;4)稳定性测试:随着虚拟用户的增加,出现缺陷的数量。5.4测试流程软件测试的整个流程分为准备阶段、执行阶段、总结阶段。准备阶段包括测试立项、测试小组成立、测试计划设计、测试用例设计、测试数据准备、测试环境搭建。执行测试阶段包括测试用例执行,对系统进行详细测试,在此阶段进行单元测试、集成测试、系统测试、回归测试及验收测试。测试总结阶段主要是对整个测试过程进行总结及分析,从而提出对下一版本的修改建议及完善方案。测试执行流程模型如图7所示:3 北京航空航天大学硕士学位论文图20 系统测试流程模型软件测试进入执行测试阶段后,主要以问题为核心进行。测试人员测出问题,提交给开发人员,开发人员再对其问题进行修改,最后测试人员进行复测,以此为循环直到此系统测试完成为止。本系统在开发过程中采用的是瀑布迭代方式,测试过程也采用了迭代的方式。整个测试过程与开发过程相对应,经历功能测试、集成测试、系统测试及回归测试。5.5测试用例设计系统主要的测试范围包括系统管理模块、客户管理模块、财务管理模块、物品安检管理模块、客服管理模块、系统管理模块、配置管理模块的功能测试,系统的性能测试、集成测试及极限条件测试。本论文中主要针对对系统功能和极限条件做测试。5.5.1测试用例根据需求文档中,功能性需求定义,设计测试用例。以确保全面覆盖系统功能,切实满足系统需求。在实际测试过程中,和开发人员一起进行测试评审,记录测试结果和缺陷报告。表1用户登录测试用例表用例名称:用户登录测试用例验证条件:1.用户名只能包含大小写字母,最短为4个字符;2.密码不能包含特殊字符,最短为4个字符;3.用户名、密码区分大小写测试步骤:使用系统已经注册的账号登录系统,如:用户名admin,密码admin预期结果:所有没有按照验证条件的测试结果都不正确。提示用户登录失败。表2用户修改密码测试用例表用例名称:用户修改密码测试用例验证条件:1.旧密码必须验证成功;2.新密码不能为空,最短长度为4个字符;3.重复密码必须和新密码完全相同;测试步骤:3 北京航空航天大学硕士学位论文登录系统之后,在配置信息,修改密码界面,输入账号的密码,并输入新的密码,输入重复新密码,然后点击“提交”按钮预期结果:1.如果旧密码没有验证成功,则提示“密码不正确”;2.如果新密码输入为空,则提示“新密码不能为空”;3.如果两次输入的密码不一致,则提示“密码不一致”;表3账号管理界面极限值测试用例用例名称:账号管理界面极限值测试用例验证条件:1.输入的页码数(page)不能小于1;2.每页的项目数(count)不能小于0;3.输入的总页数不能大于系统分页的总页数;测试步骤:1.在用户管理界面,在浏览器地址栏根据url输入page=值&count=值预期结果:1.当页码数小于等于0时,应跳转为最小值1;2.当项目数小于0时,使用系统默认分页值;3.当页码数大于系统分页的总数时,应该跳转为系统分页的最大值。5.5.2测试结果分析针对每个测试用例,都会生成对应的的测试报告,来记录测试的时间和是否发现问题和缺陷等,便于开发人员进行问题重现,以缩短修复的时间。开发人员更新代码,修复问题,或者添加其他备注信息等,以及测试人员验证修复成果的后期测试结果,都会记录在测试报告中,以便进行统计分析。表4用户登录测试结果表测试用例:用户登录测试用例测试人员:李岱测试时间:2013年10月6日21:32:41测试状态:完成测试步骤:1.使用系统已经注册的用户登录;2.使用系统尚未注册的用户登录;3 北京航空航天大学硕士学位论文1.使用不正确的密码登录;测试结果:1.用户正常登录;2.提示该用户尚未注册;3.提示用户,账号密码不正确;表5用户修改密码测试结果表测试用例:用户修改密码测试用例测试人员:李岱测试时间:2013年10月6日21:32:46测试状态:完成测试步骤:1.使用正确的旧密码,格式正确的新密码,重复密码提交验证;2.使用不正确的旧密码提交验证;3.使用正确的旧密码,格式不正确的新密码提交验证;4.使用正确的旧密码,不一致的重复密码提交验证;测试结果:1.新密码能正确提交,并使用新密码正确登录;2.收到“密码不正确”的提示;3.收到“新密码格式不正确”的提示;4.收到“两次重复的密码不一致”的提示;表6账号管理界面极限值测试结果表测试用例:账号管理界面极限值测试用例测试人员:李岱测试时间:2013年10月6日21:38:58测试状态:完成测试步骤:1.在浏览器地址栏输入格式良好的page和count参数;2.输入的page值和count值为负数,和0;3.输入的page值大于系统分页的总页数;测试结果:1.系统能正确处理请求,并显示准确的分页结果;2.当输入的page和count值小于等于3 北京航空航天大学硕士学位论文0时,自动把page的值修改为1;把count的值修改为系统默认分页值。然后处理客户端请求;1.当page值大于系统分页总页数时,自动将page值修改为系统分页的总页数。然后正确处理客户端请求;通过对以上测试用例和测试报告的分析,本CRM系统中的严重功能性缺陷已经基本修复完成,剩下的问题基本不会对系统功能、稳定性造成影响。系统基本能满足需求设计。后期系统进行功能扩展时,需要持续进行测试,和问题修复。5.7本章小结本章描述了项目的测试流程,在功能测试中通过设计测试用例对系统所有可测的功能和操作分支达到了全面覆盖;在安全性测试中从系统登录访问的安全性、系统权限控制的安全性、系统内资源的安全性设计测试用例,对系统的安全性进行测试;在性能测试中选用评估网络系统的负载测试和压力测试,得出系统在不同场景下的性能参数,证明本项目已经达到了初始设定的目标。3 北京航空航天大学硕士学位论文第六章结论6.1总结在本项目的研发过程中,主要实现了航空CRM管理系统。重点对客户信息进行模型抽象,实现业务关联。通过对企业实际业务需求分析,运用流程化,模块化和软件开发相关理论对本CRM系统进行实现和后期优化。根据系统现实需求,设计本系统的主要功能模块和性能需求,进而提出系统的关键技术方案及总体设计方案,并对系统各模块的主要功能的流程及数据结构进行设计。最后对系统进行内部测试,分析测试结果,优化程序代码。本系统基本达到了企业初期指定的目标,即以服务对象为中心,通过CRM系统建设优化核心服务流程,提高工作效率,数字化程度和服务质量,通过成本控制和优质的服务提高企业竞争力。6.2个人收获通过项目实际开发,本人对软件设计思想及软件开发过程有了更为全面的理解,对软件系统的整体设计有了更灵活的应用,对相关的软件开发技术有了更为深入的掌握;对面向对象的开发思想有了更深刻的理解。同时,在项目管理过程中也养成了良好的团队协作习惯,能够与项目组成员充分、深入沟通,从而确保项目按期、按照预定的目标得以完成。6.3未来展望本系统的设计和实现基本实现了预期目标,但是仍然有很多待优化和完善的地方:1)系统的功能过于简陋。本系统的实际功能过于简陋,很多模块只是完成了基础实现。需要按照企业具体工作流程,进一步增加系统功能。2)系统的稳定性有待测试。本系统在开发测试阶段,没有发生大量并发导致的性能和稳定性问题。这是由于开发阶段和测试阶段,用户数量不多,所需系统资源有限。但是不能保证系统在部署之后,同时有大量用户进行系统访问导致网站流量激增而宕机。所以后期需要对系统的稳定性和并发性进行后续测试以及系统优化。3)系统的安全性有待提高。当前系统的实现中,并没有对一些重要数据3 北京航空航天大学硕士学位论文进行加密处理,这为整个系统的带来了潜在安全威胁。后期需要对敏感数据进行加密处理,同时为系统整体增加安全验证机制。1)数据备份和导入导出问题。本系统在部署之后,各个数据部分相互独立,由于没有一个比较全面的数据同步解决方案,只能进行手动备份。同时由于各个模块没有相应的接口,导入导出数据不便。后期需要对现有系统增添数据处理功能,使得系统能对旧数据进行处理,同时能自动备份现有数据,提升系统容灾性。2)系统性能瓶颈。本系统使用asp.netmvc作为服务器平台。后期需要增添一些代理服务器和分布式服务器来减少对独立服务器的访问压力。对经常访问的内容加入缓存机制,能有效提升系统整体效率。目前,系统已经进入测试流程,仍在进一步完善。3 北京航空航天大学硕士学位论文参考文献[1]李志刚,黄艳,基于Internet的客户关系管理系统eCRM分析与设计,中国管理信息化,2007[2]萨师煊,王珊,数据库系统概论,高等教育出版社,2005[3]李萍,汽车零部件行业客户关系管理系统的发展与探讨,柴油机,2007[4]郝玉龙,JavaEE编程技术,清华大学出版社,2008[5]徐小平,基于B/S结构的客户关系管理系统的设计与实现,微机发展,2003[6]张作祥,客户管理实务,北京,清华大学出版社,2006[7]傅冬绵,陈细浓,小区物业管理系统的设计与实现,华侨大学学报(自然科学版),2007,02期[8]卓思廉,客户管理,北京邮电学院出版社,2007[9]毛剑瑛,社区数字化工程,中国电力出版社,2007[10]乔忠,瞿振元,金逸民,中国小城镇现代服务业发展研究,中国经济出版社,2005[11]昌中作,徐悦,戴钢,基于SaaS模式公共服务平台多用户数据结构的研究,计算机系统应用,2008,02期[12]赵韩,邰丽君,董玉德,基于Web的中小企业客户关系管理系统规划与实现,机械科学与技术,2007[13]邹劲松,客户管理信息系统,北京,机械工业出版社,2009[14]黎文导,客户关系管理系统的设计,科技创新导报,2008[15]梁瑾,王咸伟,陈虹,客户关系管理系统的设计与实现,电脑与信息技术,2008[16]张承江,彭加亮,闫朝升,客户关系管理系统的研究,信息技术,2007[17]葛淑杰,时颖,客户关系管理系统中数据仓库的设计与实现,黑龙江科技学院学报,2003[18]皮慧娟,保险公司客户关系管理系统的设计与实现,齐齐哈尔大学学报,2009[19]RūtaUrbanskiene,DaivaZostautienė,VirginijaChreptaviciene,TheModelofCreationofCustomerRelationshipManagement(CRM)System,2008[20]MatthewMacDonald,MarioSzpuszta,ProASP.NET2.0inC#,USApress,2005[21]ThomasR.Peltier,InformationSecurityRiskAnalysis,RothsteinAssociates,2001[22]TaeHyupRoh,CheolKyungAhnandIngooHan,Thepriorityfactormodelforcustomerrelationshipmanagementsystem,success,2005[23]MadeleineZelin,JonathanOcko,RobertGardella,ContractandPropertyinEarlyModernChina,StanfordUniversityPress,2004[24]KeithA.Richards,EliJones,Customerrelationshipmanagement:Findingvaluedrivers,IndustrialMarketingManagement,2008[25]GunderloyMike,Jorden,JosephL,Tschanz,DavidW,MasteringMicrosoftSQLServer2005,JohnWiley&SonsInc,20063 北京航空航天大学硕士学位论文致谢感谢敬爱的导师在我的研究生学业中,对我的悉心教导和大力帮助,给予我在学术研究方向、项目实践中的指导。同时在我的论文开题、项目实施和论文撰写过程中,他多次给予富有启发性和建设性的意见。在这一段时间的学习和研究过程中,我遇到过很多开发方面的问题,是我的老师和同学们,给了我很多专业技术上的指导,和解决了调研需求中遇到的问题。在为期一年多的课题研究实施中,我学到了对我而言完全陌生的客户关系管理流程及相关业务知识。了解了这一领域广阔的前景,同时学会了使用C#作为开发语言的asp.net技术平台,掌握了软件开发过程中的部署规范,真正将理论知识实际运用到软件开发中。我获得了很多专业方面的知识和经验。感谢一直以来给我帮助的老师、同学、朋友,分享了很多开发和生活中的经验和乐趣。3'