- 1.35 MB
- 2022-05-14 15:45:02 发布
- 1、本文档共5页,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
- 文档侵权举报电话:19940600175。
客户管理毕业设计论文目录目录……………………………………………………………………………1第一章引言……………………………………………………………………………21.1客户关系管理的起步及目前发展状况…………………………………………21.2基本目标与基本内容………………………………………………………………31.3本课题的来源与意义………………………………………………………………5第二章需求分析………………………………………………………………………62.1问题提出和用户定义………………………………………………………………62.2系统功能分析………………………………………………………………………72.3系统业务流程分析…………………………………………………………………72.4系统数据分析………………………………………………………………………82.5可行性分析……………………………………………………………………………92.6系统软件需求………………………………………………………………………9第三章系统设计…………………………………………………………………………113.1总体设计……………………………………………………………………………113.2设计目标……………………………………………………………………………123.3开发工具及平台选择……………………………………………………12第四章数据库设计………………………………………………………………………144.1数据库平台的选择…………………………………………………………………144.2数据库概念模型的设计……………………………………………………………144.3数据模型的实现……………………………………………………………………18第五章系统模块的详细设计…………………………………………………………265.1客户管理模块设计……………………………………………………………………265.2服务管理………………………………………………………………………………465.3报表管理………………………………………………………………………………49第六章系统测试…………………………………………………………………………616.1操作测试………………………………………………………………………………616.2数据库的安全性………………………………………………………………………65第七章设计结果与讨论…………………………………………………………………667.1运行结果………………………………………………………………………………667.2设计不足之处…………………………………………………………………………6668
致谢………………………………………………………………………………………67参考文献………………………………………………………………………………………68第一章引言1.1客户关系管理CRM的起步及目前发展状况客户关系管理CRM(Customer Relationship Management)最早由美国Gartner Group提出,自1997年开始,经过几年的发展,全球的CRM市场一直处于爆炸性的快速增长之中。1999年全球的CRM市场收益约为76亿美元。据市场分析专家预测,2000年全球CRM市场收益将超过120亿美元,2004年将达到670亿美元。年增长率将一直保持在50%以上。目前,我国的CRM市场也已开始启动。像以往的ERP、电子商务等新理念一样,CRM在国内的发展经历了从概念传入到市场启动这样一个过程,而这些新理念对推动我国信息化建设将发挥积极的作用。首先,我们来看看什么是客户关系管理CRM?从经营理论来看:CRM(customerrelationshipmanagement)是在企业文化和业务文化结合的同时,形成的以客户为中心的经营理论。“一切都是客户。”在这个竞争激烈的社会里,谁拥有了客户,谁就掌握了市场。实时了解客户的变化,从中分析出真正有价值的客户,使客户能真正意义上的与企业融为一体,能时时刻刻了解到企业的存在,对一个企业决策者来说有着十分重要的意义;使客户感觉到企业的存在,提高客户的忠诚度,企业随时的了解到客户的变化,为客户提供更有保证的服务,提供更优秀的,有针对性的服务成为如何保留客户的重要的方法。同样,CRM在发掘出潜在的客户,找回已失去的客户等方面也有着重要的意义。从信息发展的角度来看:在这个基于INTERNET技术的世界里,电子商务的经营模式正在改变人们的生活方式和企业的经营方式。CRM是信息经济与企业经济结合的产物,它作为一种软件系统,被广泛的实施于企业的市场营销(MARKETING),销售(SELLING),服务与支持(SERVICEANDSUPPORT),等与客户密切相关的办公领域,我们把这种办公领域称为企业的前端办公领域(FRONTOFFICE)。其次,CRM的基础是:它是一种以“客户关系一对一理论”为基础,旨在改善企业与客户之间关系的新型管理机制。 “客户关系一对一理论”认为,每个客户的需求是不同的,只有尽可能地满足每个客户的特殊需求,企业才能提高竞争力。每个客户对企业的价值也是不同的,通过满足每个客户的特殊需求,特别是满足重要客户的特殊需求,企业可与每个客户建立起长期稳定的客户关系,客户同企业之间的每一次交易都使得这种关系更加稳固,从而使企业在同客户的长期交往中获得更多的利润。68
CRM系统的宗旨是:为了满足每个客户的特殊需求,同每个客户建立联系,通过同客户的联系来了解客户的不同需求,并在此基础上进行“一对一”个性化服务。从地域来看,目前CRM商机最大的是北美市场,其次是西欧市场,其中西欧市场正以全球最快的速度飞速发展。在东南亚地区,CRM市场目前比较小,尚处于炒作概念而不是做产品的时期。这主要是因为CRM概念由美国提出,拥有此类产品的厂商主要是Siebel、Oracle、Vantive、Onyx等欧美国家的软件公司,在其他地区产品的推行存在产品本地化等问题。但就其市场前景来看,发展潜力非常巨大。 从行业结构角度来看,大多数CRM方案供应商并没有把其产品局限在单一的行业市场,其客户遍布于众多的行业:如制造业、保险业、金融业以及高技术行业。全球流行的CRM产品主要包括:Baan公司的BaanFrontoffice98.4、 Onyx软件公司的OnyxCustomer4.0和Siebel系统公司的Siebel99等。这些产品都以Windows、Unix等为主流平台,并集成了Microsoft Office应用。IBM、Oracle、Lotus等公司目前纷纷在加大力度发展其CRM产品。 CRM带给我们的不仅仅是一个软件产品,更重要的是一种先进的管理方法和管理思想。如果你是一个企业,利用CRM系统,企业能搜集,跟踪和分析每一个客户的信息,从而知道什么样的客户,在什么时候,需要什么样的服务,真正实现OTO。优秀的CRM系统能够成功的提高用户的忠诚度,改进信息的提交方式,加快信息的提交速度,简化客户的服务过程,同时在提高企业服务人员和管理人员的工作效率方面也会取得明显的效果。作为一个消费者来说,CRM会带给您什么呢?您可以享受到真正的个性化的服务,得到上帝般的享受,如果您发现企业时时刻刻在关注着您,在您最需要的时候为您提供所需要的服务和业务,就象朋友一样的照顾您。您还有什么理由拒绝这个企业呢?通过我们的介绍,相信您一定已经对CRM产生了浓厚的兴趣,确实,CRM对我们有着如此巨大的吸引力,所以在近几年的时间里取得了飞速的发展。在90年代初期,为了满足市场的需要,许多的公司已经开始开发SFA(销售队伍自动化系统),那时,开发的目的只是为了提高销售的效率,随着时间的前进,以客户为目的的管理理念开始萌芽,企业开始着力于开发CSS(客户服务系统)。到了1996年,一些公司开始尝试把SFA与CSS两个系统结合起来,并加上市场营销,现场服务,在这个基础上再结合了CTI(计算机电话集成技术)形成了集销售和服务与一体的呼叫中心(CALLCENTER),这样就形成了今天的CRM系统。在国内,由于受到企业文化和企业规模的影响,CRM的发展状况一直不太理想,在早期的发展之后,特别在2003年遭遇了一个寒冬,但我们相信随着企业的发展,CRM一定会取得更快的发展1.2 基本目标与基本内容68
CRM的基本目标应有三个,一是研究用户、确定市场,二是解决如何提供优质服务吸引和开发客户,三是通过客户研究确定企业的管理机制和管理内容。CRM不仅是一个企业经营概念,同时也是管理技术。那么,CRM的基本内容应包括如下的基本管理技术:1)客户为中心的企业管理技术。即以客户为企业行为指南的管理技术。在这种管理技术中,企业管理的需要以客户需要为基础,而不是以企业自身的某些要求为基础。这是一种把企业与客户一体化的管理思想付诸实施的管理技术。2)智能化的客户数据库。要实行客户为中心的企业管理技术,必须有现代化的技术,原因就是现代企业所处的是信息时代。客户为中心的企业管理的中枢,智能化的数据库是所有其它技术的基础。从某种意义上说,智能化的数据库是企业发展的基本能源。3)信息和知识的分析技术。客户为中心的管理思想的实现,是建立在现代信息技术之上的,没有现代信息技术,就无法有效地实现客户为中心的管理技术。为了实现这种管理技术,企业必须对智能化的客户数据库进行有效地开发和利用,这种开发的基本与核心技术就是信息和知识的分析处理技术。只有经过分析和处理的信息,才是企业需要的知识。使用CRM概念和技术,企业能快速搜集、追踪和分析每一个客户的信息,进而了解整个市场走势,并确切地知道谁是客户、谁是客户的客户、什么是客户的需要、客户需要什么样的产品和服务、如何才能满足客户的要求,以及满足客户要求的一些重要限制因素。CRM还能观察和分析客户行为对企业收益的影响,使企业与客户的关系及企业盈利都得到最优化。CRM在具备如上的企业管理技术的同时,还应具备如下的基本指标:客户关系指标一个好的CRM技术和应用系统,应当能提供基本的客户关系指标,客户关系指标是客户与企业双方的信誉、能力、发展估计等方面的综合评估。客户产品关系指标CRM技术和应用系统,应当能根据所掌握的客户、企业以及产品的信息资源,对客户产品关系做出综合评价,这个评价结果就是客户产品关系指标。在进行客户产品关系综合评价时,不能简单地对客户及其直接产品的关系等进行评价,还必须包括客户对产品需求的原因和能力等方面的客观评价。客户企业关系指标企业本身的需求,这实际上也就反映了企业的发展前景,同时也从主要的方面反映了企业与客户之间的融合程度。企业与客户融合的越好,企业的发展前景也就越广阔。客户关联指标68
企业在进行商务活动和企业管理时,一个十分重要的基础,就是通过客户需求和客户需求的目的所反映出来的企业发展前景。客户关联指标就是为了提取有关企业发展前景信息而对CRM技术和系统提出的要求。1.3本课题的来源与意义CRMS(customerrelationsmanagementsystem)就是客户关系管理系统,由客户管理模块、库存管理模块、服务管理模块、报表管理模块、email管理模块、用户管理模块组成,其中最关键的是客户管理模块,它能很快知道客户中的情况,使我们在短时间内,对客户信息、客户联系人信息、合同信息情况一清二楚。信息时代的今天,各企业商家所关心的不再局限于自身的产品质量、生产设备、员工的素质,更多的是关心自己的销售群体(客户群),关心他们的想法、需求、购卖目的。众所周知,顾客就是我们的上帝,我们只有满足了上帝的需求,上帝才能给我们带来一切。一个企业要生存、要发展,就是要不断的满足客户的需求,无论我们做出什么样的决策,最终都是为了这个的目。每个领域都有自身生存法则,但无论这个法则如何变化,为客户服务的宗旨是不会变的。作为企业,我们只有不断地挖掘新客户,维护好和老客户的关系,占领市场客户群体的绝大多数份额,才能在整个领域取得一席之地。海尔总裁张瑞敏指出:“客户资源决定企业核心竞争力”,上个世纪80年代是物品短缺的时代,而现在,信息时代是客户短缺的时代。企业发展所需的各种资源(包括人力、物力、生产力)都是可以创造的,但每个领域中的客户资源确是有限的,所以通过创新(产品的创新、企业管理的创新、服务的创新)来抢占有限的客户资源、维护好企业和客户之间的关系、了解客户的需求动向,成为企业生存发展面临的重大问题。68
第二章需求分析2.1问题提出和用户定义2.1.1问题提出(1)来自销售人员的问题:从市场部提供的客户线索中很难找到真正的顾客,我常在这些线索上花费大量时间。我是不是该自己来找线索?出差在外,要是能看到公司电脑里的客户、产品信息就好了。(2)来自营销人员的问题:去年在营销上开销了2000万。我怎样才能知道这2000万的回报率?在展览会上,我们一共收集了4700张名片,怎么利用它们才好?展览会上,我向1000多人发放了公司资料,这些人对我们的产品看法怎样?其中有多少人已经与销售人员接触了?我应该和那些真正的潜在购买者多多接触,但我怎么能知道谁是真正的潜在购买者?我怎么才能知道其他部门的同事和客户的联系情况,以防止重复地给客户发放相同的资料?有越来越多的人访问过我们的站点了。但我怎么才能知道这些人是谁?我们的产品系列很多,他们究竟想买什么?(3)来自服务人员的问题:其实很多客户提出的电脑故障都是自己的误操作引起的,很多情况下都可以自己解决,但回答这种类型的客户电话占去了工程师的很多时间,工作枯燥而无聊;怎么其它部门的同事都认为我们的售后服务部门只是花钱而挣不来钱?(4)来自顾客的问题:我从企业的两个销售人员那里得到了同一产品的不同报价,哪个才是可靠的?我以前买的东西现在出了问题。这些问题还没有解决,怎么又来上门推销?一个月前,我通过企业的网站发了一封EMAIL,要求销售人员和我联系一下。怎么到现在还是没人理我?我报名参加企业网站上登出的一场研讨会,但一直没有收到确认信息。研讨会这几天就要开了,我是去还是不去?为什么我的维修请求提出一个月了,还是没有等到上门服务?(5)来自经理人员的问题:有个客户半小时以后就要来谈最后的签单事宜,但一直跟单的人最近辞职了,而我作为销售经理,对与这个客户联系的来龙去脉还一无所知,真急人;68
有三个销售员都和这家客户联系过,我作为销售经理,怎么知道他们都给客户承诺过什么;现在手上有个大单子。我作为销售经理,该派哪个销售员我才放心呢?这次的产品维修技术要求很高,我是一个新经理,该派哪一个维修人员呢?2.1.2用户定义通过对上面问题的研究,我们对用户的要求做出了如下定义:一,怎么了解谁是最有价值的客户,如何发掘出最有潜力的客户二,提高销售人员的销售效率,减低公司的成本三,怎么给客户提供最有效的服务,通过服务提高客户的满意度,而不是片面的追求客户的信誉度,只有让人满意的服务才能得到最具信誉的客户。只要客户的满意度稍微下降点,客户的忠诚度就会急剧下降。四,给客户一个最合理的建议,是给客户创造机遇,而不是给客户带来麻烦五,如何提高企业的竞争力,让客户充分的信任企业,成为企业这个整体的一部分。只有让客户成为企业的一部分,才能让客户为自己的企业负责。由于CRM是一个以客户为中心的管理系统,所以在整个系统的实施过程中将“以客户为中心”作为开发的目的。2.2系统功能分析通过对各类人员的问题提出和用户要求调查研究,系统应满足有以下功能要求:q由于操作人员的计算机知识普遍较差,要求有良好的人机界面。q方便的数据选择查询,支持模糊查询功能。q管理客户的详细信息:包括客户的基本信息、联系人信息、和客户签写的合同信息。q记录产品出库、入库的详细信息。q为更多的了解客户的需求,设计了服务模块,用以记录客户的反馈信息,并对反馈信息进行管理。q和客户联系人之间通过邮件(e-mail)进行联系,对联系人邮件地址进行管理。q提供信息数据导出Excel报表的功能,提供报表的打印功能。q对用户信息进行管理,并为用户设置管理权限。q数据计算自动完成,尽量减少人工干预。q修改当前管理员密码的功能。q系统退出。68
2.3系统业务流程分析根据系统功能分析,得到系统业务流程结构图如下:客户管理 email管理 报表管理 用户登陆客户关系管理系统 服务管理 用户管理 库存管理图1业务流程结构图2.4系统数据分析根据业务流程分析,得到系统数据分析图如下:客户管理\客户信息数据\合同信息数据email管理\发件人信息数据报表管理用户登陆客户关系管理系统服务管理\反馈信息数据用户管理\用户管理信息数据68
库存管理\库存记录数据图2系统数据分析图2.5可行性分析q经济性通过计算机网络对客户信息进行管理,使企业对自身拥有的客户有了一个更为深该的了解。不仅能全面的统计客户的购买数量,及时的了解客户的动态信息,还可以根据计算机记录的数据信息,不断的调整企业的生产发展动向。q技术性系统中设置了email管理模块,此模块大大的方便了企业和客户联系人之间的沟通。设置导入Excel功能、Web打印功能,方便用户报表打印。2.6系统软件需求本系统使用ASP服务器端脚本编写环境来实现,ASP是ActiveServerPage的缩写,意为“活动服务器网页”。ASP是微软公司开发的代替CGI脚本程序的一种应用,它可以与数据库和其它程序进行交互,是一种简单、方便的编程工具。ASP的网页文件的格式是.asp,现在常用于各种动态网站中。ASP是一种服务器端脚本编写环境,可以用来创建和运行动态网页或web应用程序。ASP网页可以包含HTML标记、普通文本、脚本命令以及COM组件等。利用ASP可以向网页中添加交互式内容(如在线表单),也可以创建使用HTML网页作为用户界面的web应用程序。ASP有一个最重要的功能,就是它可以让你非常轻松地连接数据库。通常都是和一个Access或者一个SQL数据库相连。一旦学习了ASP和Access数据库连接的核心技术方法,当你开始使用SQLserver的时候,你就会发现,两者所需要的关键技术是基本相同的。同时,ASP带有VisualBasic等的脚本引擎,这样就可以立即开始编辑脚本。与HTML相比,ASP网页具有以下特点:(1)利用ASP可以实现突破静态网页的一些功能限制,实现动态网页技术;(2)ASP文件是包含在HTML代码所组成的文件中的,易于修改和测试;(3)服务器上的ASP解释程序会在服务器端制定ASP程序,并将结果以HTML格式传送到客户端浏览器上,因此使用各种浏览器都可以正常浏览ASP所产生的网页;(4)ASP提供了一些内置对象,使用这些对象可以使服务器端脚本功能更强。例如可以从web浏览器中获取用户通过HTML表单提交的信息,并在脚本中对这些信息进行处理,然后向web浏览器发送信息;68
(5)ASP可以使用服务器端ActiveX组建来执行各种各样的任务,例如存取数据库、发现那个Email或访问文件系统等;(6)由于服务器是将ASP程序执行的结果以HTML格式传回客户端浏览器,因此使用者不会看到ASP所编写的原始程序代码,可放置ASP程序代码被窃取。数据库是Microsoft公司的SQLServer2000,所以采用SQLServer2000作为后台数据库。并且,系统应尽量采用企业现有软硬件环境,及先进的管理系统开发方案,从而达到充分利用企业现有资源,提高系统开发水平和应用效果的目的;系统应符合企业信息管理的规定,满足对企业信息管理需要,并达到操作过程中的直观、方便、实用、安全等要求;系统采用模块化程序设计方法,既便于系统功能的各种组合和修改,又便于未参与开发的技术维护人员补充、维护;系统应具备数据库维护功能,及时根据用户需求进行数据的添加、删除、修改、等操作。SQLServer2000是Microsoft公司最新开发的大型关系数据库管理系统,具有非常强大的关系数据库创建、开发、设计及管理功能。提起数据库,大家都会想到Access、FoxPro、Delphi这些常用数据库开发应用程序。但是社会日益膨胀的信息量对数据库的构造提出了更新、更高的要求,数据库已步入网络应用领域。Web数据的发布与收集,分布式数据库管理及联机处理支持,都要求数据库开发管理系统具有相应的新增功能,正是在这种背景下,SQLServer应运而生。SQLServer2000彻底脱离了Sybase,它将数据库连接到Internet,并通过Web浏览器显示数据操作,具有客户机/服务器结构,并与Microsoft公司的其他产品及第三方产品具有良好的兼容性,能方便地实现无缝操作。此外,SQLServer2000还提供了对分布式事物处理的支持,能为大型数据库项目提供优秀的企业级解决方案。68
第三章系统设计3.1总体设计3.1.1项目规划客户关系管理系统是一个典型的数据库开发应用程序,由客户管理模块、库存管理模块、服务管理模块、报表管理模块、email管理模块、用户管理模块组成,规划系统功能模块如下:q客户管理模块该模块主要功能是对客户信息、客户联系人信息、合同信息进行添加、删除、查询等操作。q库存管理模块该模块的主要功能是管理入库、出库信息、产品信息进行管理,其中包括对库存信息、产品信息进行添加、删除、查询等操作。q服务管理模块该模块主要功能是对客户反馈信息进行添加、删除、查询等操作。q报表管理模块该模块主要通过查询条件,对各种信息进行查询,并将得到的结果导出Excel表、进行打印报表等操作(其中信息包括:客户信息、联系人信息、反馈客户信息、库存信息)。qemail管理模块该模块主要管理客户联系人email地址信息,对企业客户之间的email文件进行管理,向客户发送邮件。q用户管理该模块主要管理用户信息的添加、删除等操作,并设置用户的使用权限。3.1.2系统功能结构图68
图3数据表树型结构图3.2设计目标本系统是针对中小型企业通过网络实现对客户的管理而设计的,主要实现如下目标:q对客户信息(客户基本信息、联系人信息、合同信息)进行全面管理。q及时查看库存信息,并通过网站对入库、出库信息进行管理。q强大的客户信息、联系人信息报表导出、打印功能q及时了解客户的反馈信息,并对其进行管理。q实现各种信息的选择查询、模糊查询功能等。q实现了和客户通过网络在线沟通的功能,并对客户联系人的email地址进行管理。q管理员可以添加操作员信息、设置操作员的权限。q对用户输入的数据,系统进行严格的数据检验,尽可能排除人为的错误。q要求系统的数据保密性强,通过为每个用户设置使用权限来实现。q系统运行稳定、安全可靠。q键盘操作,快速响应。3.3开发工具及平台选择3.3.1开发工具在选择开发工具时,首先需要决定使用的操作系统。为了能够采用ASP程序的最新技术,本系统在开发时选用Windows2000Server作为操作系统。在Windows2000Server中自带有IIS5.0,这是微软公司为建立Web站点而发布的最新Web68
服务器软件,在该软件中带有对ASP的直接支持。SQLServer2000是微软公司发布的最新SQLServer数据库产品,对Web应用提供了许多最新的支持。为了更好地完成Web站点的页面设计工作,应该选择使用一些页面设计软件。本系统采用微软FrontPage软件,可以通过可视化界面来进行页面设计。因此,本系统是在Windows2000Server操作系统上,由IISWeb服务器和SQLServer2000数据库建立Web站点,通过ASP技术开发动态页面的技术。3.3.2平台选择硬件平台:qCPU:P41。8GHz;q内存:256MB以上。软件平台:q操作系统:Windowsxp/Windows2000/Windows2003;q数据库:SQLServer2000;q浏览器:IE5.0,推荐使用IE6.0;qWeb服务器:IIS5.0;q分辨率:最佳效果1024*768。第四章数据库设计68
4.1数据库平台的选择本系统数据库采用SQLServer2000数据库,系统数据库命名为db_System。SQLServer2000是Microsoft公司最新开发的大型关系数据库管理系统,具有非常强大的关系数据库创建、开发、设计及管理功能。它彻底脱离了Sybase,将数据库连接到Internet,并通过Web浏览器显示数据操作,具有客户机/服务器结构,并与Microsoft公司的其他产品及第三方产品具有良好的兼容性,能方便地实现无缝操作。此外,SQLServer2000还提供了对分布式事物处理的支持,能为大型数据库项目提供优秀的企业级解决方案。4.2数据库概念模型的设计概念设计基础是完成需求分析后提供的需求说明书,用概念数据模型表示数据及其相互间的关系,这种数据模型是与DBMS无关的、面向现实世界的、易如理解的数据模型,其独立于计算机的数据模型,独立于计算机的软硬件系统,与用户进行交流十分方便。概念性数据模型关心的是如何完整、正确地反映客观实际情况,不关心在数据库中如何实现。这种数据模式能真实地反应用户要求的实际情况,是一种容易被人们理解的直观的数据库结构模式。同时也是一种相对稳定统一的数据模式,一般情况下很少变动。概念性数据在用户和设计者之间建立了桥梁。是设计数据库结构的基础。概念设计中自顶向下的实体分析方法,即常用的实体联系模型(简称E-R模型),对具体数据进行抽象加工,将实体集合抽象成实体类型。用实体间联系反映现实世界事物间的内在联系。E-R模型是建立概念性数据模型的有力工具。根据系统功能设计的要求以及功能模块的划分,对于模块数据库,可以设计以下数据项和数据结构:l发件人信息:包括自动编号、发件人姓名、发件人邮箱密码、发件人email、企业邮局地址。l客户信息:包括自动编号、公司名称、公司详细地址、公司电话、公司传真、公司email、邮政编码、公司网址、企业性质、公司、所在城市、结款信用、所属国家/地区、结款方式、最高订单、年度订单、需求周期、创建时间、修改时间、创建人。l反馈信息:包括自动编号、反馈标题、反馈日期、反馈客户、反馈内容、是否完成、处理结果、创建时间、创建人。l库存记录表:包括自动编号、产品编号、产品数量、库存类型、库存说明、创建人、创建时间。l68
合同信息:包括自动编号、客户、合同编号、签定日期、签定日期、执行人、签单人、备注、创建时间、修改时间、创建人。l发件人信息:包括自动编号、用户名、密码、管理客户权限、管理联系人、管理合同权限、管理库存权限、服务管理权限、抄表管理权限、发件人管理权限、管理权限、管理用户权限、超级用户权限。l发件人信息:包括自动编号、产品编号、产品名称、单位、供应商、产品简介、操作用户、操作时间、修改时间。l发件人信息:包括自动编号、联系人姓名、所属客户、爱好、传真、电话、手机、电子邮件、所属部门、职位、生日、性别、合作态度、备注、操作时间、修改时间、操作员。通过对内容和过程的分析,本系统应设计的实体和属性如下:EmailProductNumberEmailPwdSmtpEmailProductNameEmailNameProductUnitidProductProviderProductContentSetNameSetName发件人信息表RemarkSetTimeLinkmanMienEditTimeLinkmanNameLinkmanSexLinkmanClientLinkmanBirthLinkmanDutyLinkmanLikeLinkmanDeptLinkmanFaxLinkmanEmailLinkmanTelLinkmanHanderClientFax68
ClientEmailClientNumberClientTelClientPageClientAddressClientHabitudeClientNameidClientSizeSetNameClientCity客户信息表ClientCreditEditTimeClientCountrySetTimeClientPayClientCycClientListClientYearFeedbackClientFeedbackDateFeedbackContentFeedbackTitleid反馈信息表FeedbackFulfillFeedbackResultSetNameSetTimeStockpileProductNumber68
StockpileTypeStockpileProductNameid库存记录表SetTimeStockpileContentSetNamePactMoneyPactDatePactNumberPactExecutorPactClientPactSignatory合同信息表idPactRemarkSetTimeSetNameEditTimePactLinkmanClientuserpwdusernameStockpileidFeedback发件人信息表FormschaojiAddresserusersEmail图4数据表E-R模型结构图4.3数据模型的实现68
根据数据库的需求分析,建立如下8个数据表。(1)tb_Addresser(发件人信息表)发件人信息表主要用于保存发件人信息。该数据表的结构如表1所示。表1表tb_Addresser的结构字段名数据类型长度主键否描述idint4否自动编号EmailNamevarchar50否发件人姓名EmailPwdvarchar50否发件人邮箱密码Emailvarchar50否发件人emailSmtpEmailvarchar50否企业邮局地址(2)tb_Client(客户信息)客户信息表主要用于保存客户信息信息。该数据表的结构如表2所示。表2表tb_Client的结构字段名数据类型长度主键否描述IDint4是自动编号ClientNamevarchar100否公司名称ClientAddressvarchar100否公司详细地址ClientTelvarchar20否公司电话ClientFaxvarchar20否公司传真ClientEmailvarchar50否公司emailClientNumbervarchar10否邮政编码ClientPagevarchar50否公司网址ClientHabitudevarchar50否企业性质ClientSizevarchar10否公司68
ClientCityvarchar50否所在城市ClientCreditvarchar50否结款信用ClientCountryvarchar50否所属国家/地区ClientPayvarchar50否结款方式ClientListvarchar50否最高订单ClientYearvarchar10否年度订单ClientCycvarchar10否需求周期SetTimevarchar20否创建时间EditTimevarchar20否修改时间SetNamechar10否创建人(3)tb_Feedback(反馈信息表)反馈信息表主要用于保存客户的反馈信息。该数据表的结构如表3所示。68
表3表tb_Feedback的结构字段名数据类型长度主键否描述idint4是自动编号FeedbackTitlevarchar50否反馈标题FeedbackDatevarchar50否反馈日期FeedbackClientvarchar50否反馈客户FeedbackContentvarchar2000否反馈内容FeedbackFulfillvarchar50否是否完成FeedbackResultvarchar2000否处理结果SetTimevarchar20否创建时间SetNamevarchar50否创建人(4)tb_Stockpile(库存记录表)库存记录表主要用于保存库存记录信息。该数据表的结构如表4所示。表4表tb_Stockpile的结构字段名数据类型长度主键否描述idint4是自动编号StockpileProductNamevarchar50否产品编号StockpileProductNumberint4否产品数量StockpileTypevarchar50否库存类型StockpileContentvarchar50否库存说明SetNamevarchar50否创建人SetTimevarchar20否创建时间68
(5)tb_Pact(合同信息表)合同信息表主要用于保存合同详细信息。该数据表的结构如表5所示。表5表tb_Pact的结构字段名数据类型长度主键否描述idint4是自动编号PactClientvarchar50否客户idPactNumbervarchar50否合同编号PactDatevarchar50否签定日期PactMoneyvarchar50否签定日期PactExecutorvarchar100否执行人PactSignatoryvarchar50否签单人PactRemarkvarchar2000否备注SetTimevarchar20否创建时间EditTimevarchar20否修改时间SetNamevarchar50否创建人68
(6)tb_User(发件人信息表)发件人信息表主要用于保存用户的信息。该数据表的结构如表6所示。表6表tb_User结构字段名数据类型长度主键否描述idint4否自动编号usernamevarchar50否用户名userpwdvarchar50否密码Clientvarchar50否管理客户权限Linkmanvarchar50否管理联系人权限Pactvarchar50否管理合同权限Stockpilevarchar50否管理库存权限Feedbackvarchar50否服务管理权限Formsvarchar50否报表管理权限Addresservarchar50否发件人管理权限Emailvarchar50否email管理权限usersvarchar50否管理用户权限chaojivarchar50否超级用户权限68
(7)tb_Addresser(发件人信息表)发件人信息表主要用于保存发件人信息。该数据表的结构如表7所示。表7表tb_Product结构字段名数据类型长度主键否描述idint4是自动编号ProductNumbervarchar50否产品编号ProductNamevarchar50否产品名称ProductUnitvarchar50否单位ProductProvidervarchar50否供应商ProductContentvarchar2000否产品简介SetNamevarchar50否操作用户SetTimevarchar20否操作时间EditTimevarchar20否修改时间68
(8)tb_Addresser(发件人信息表)发件人信息表主要用于保存发件人信息。该数据表的结构如表8所示。表8表tb_linkman结构字段名数据类型长度主键否描述idint4是自动编号LinkmanNamevarchar50否联系人姓名LinkmanClientvarchar100否所属客户LinkmanLikevarchar50否爱好LinkmanFaxvarchar20否传真LinkmanTelvarchar20否电话LinkmanHandervarchar20否手机LinkmanEmailvarchar50否电子邮件LinkmanDeptvarchar50否所属部门LinkmanDutyvarchar50否职位LinkmanBirthvarchar20否生日LinkmanSexvarchar2否性别68
LinkmanMienvarchar4否合作态度Remarkvarchar2000否备注SetTimevarchar20否操作时间EditTimevarchar20否修改时间SetNamevarchar50否操作员68
第五章系统模块的详细设计5.1客户管理模块设计客户管理模块的主要功能是对客户信息进行管理,主要包括客户信息管理、联系人信息管理和合同信息管理3个部分。5.1.1客户信息管理设计客户信息管理设计主要包括对客户信息进行显示/查询、添加、修改和删除4个部分的功能。用户可以通过功能导航进入客户信息管理页面,页面设计效果如图3所示。图6客户信息管理页面的设计效果在客户信息管理页面中,用户可以在查询区域输入查询条件,并选择查询方式,查找相关的客户信息;也可以单击客户信息,在展示区会显示此客户的详细信息,也可对客户信息进行修改;在选中每条信息前面的复选框,单击【删除】按钮,选中的客户信息将被删除。1.客户信息显示/查询用户可以在客户信息管理页面中的查询部分,输入一定的查询条件进行客户信息的查询。当用户在查询部分输入条件后,并单击【查询】按钮,用户添加的查询条件将被提交给本页,本页将根据用户提交的表单信息对数据库进行检索,并将结果集通过操作区输出到浏览器中。客户信息查询页面涉及的HTML表单元素如表1所示。68
表1客户信息查询页面涉及的HTML表单元素名称类型含义重要属性form1Form表单method="post"action=""posthidden判断表单是否提交value="true"tiaoselect查询类型selected<%endif%>>模糊查询selected<%endif%>>精确查询selselect关键字类别selected<%endif%>>客户名称……selected<%endif%>>企业性质searchtext关键字">Submitsubmit查询按钮class="input"value=" 查 询 "在表单提交之后,在本页将数据进行处理。程序代码如下:<%ifrequest("post")<>""thenifrequest("tiao")="模糊查询"then‘条件输入为模糊查询时获得相应的记录集setrs=server.CreateObject("adodb.recordset")sql="select*fromtb_Clientwhere"&request("sel")&"like"%"&request("search")&"%"orderbyiddesc"rs.opensql,conn,1,1else‘条件输入为精确查询时获得相应的记录集setrs=server.CreateObject("adodb.recordset")68
sql="select*fromtb_Clientwhere"&request("sel")&"=""&request("search")&""orderbyiddesc"rs.opensql,conn,1,1endifelse‘默认状态下获得相应的记录集setrs=server.CreateObject("adodb.recordset")sql="select*fromtb_Clientorderbyiddesc"rs.opensql,conn,1,1endif"实现分页ifnotrs.eofthentol=rs.recordcount"总记录数rs.pagesize=15"获取每页显示的记录数maxpage=rs.pagecountrequestpage=clng(request("p"))"获取当前页ifrequestpage=""orrequestpage=0then"当接收页码的值为空或者0时使其等于1requestpage=1endififrequestpage>maxpagethen"在接收页码的值大于最大页码时,使其等于最大页码requestpage=maxpageendififrequestpage<>1then"向上或向下移动相应的记录rs.move(requestpage-1)*rs.pagesizeendiffori=1tors.pagesizeandnotrs.eof"利用循环输出数据ifimod2=1thenbg="#FFFFFF"elsebg="#efefef"endif%>style="cursor:hand"68
onClick="window.parent.frames("bo").window.location="KeHu_ed.asp?id=<%=rs("id")%>""onMouseOver="HLItem(this)"onMouseOut="Re(this)"><%=rs("ClientName")%><%=rs("ClientCountry")%> <%=rs("ClientCity")%> <%=rs("ClientTel")%> <%=rs("ClientEmail")%> <%rs.movenextifrs.eofthenexitfor’如果记录集为空那么跳出循环nextelseresponse.Write("没有客户信息,请添加")endif%>当鼠标在某条记录上悬停时,其记录所在行的背景颜色会发生改变,此功能用到的js代码如下:functionHLItem(obj)//鼠标经过{obj.oldClassName=obj.className;obj.className="List";}functionRe(obj)//鼠标移开{obj.className=obj.oldClassName}其调用的代码如下:style="cursor:hand"onClick="window.parent.frames("bo").window.location="KeHu_ed.asp?id=<%=rs("id")%>""onMouseOver="HLItem(this)"68
onMouseOut="Re(this)">客户信息显示/查询页面的运行结果如图4所示:图7客户信息查询页面的运行结果2.客户信息添加客户信息添加的主要功能是用于用户添加客户信息。其客户信息添加页面涉及的HTML表单元素如表2所示。表2客户信息添加页面涉及的HTML表单元素名称类型含义重要属性form1Form表单method="post"action=""posthidden判断表单是否提交value="true"ClientNametext公司名称class="in"size="30"ClientAddresstext公司地址class="in"size="30"ClientCitytext所在城市class="in"size="30"ClientFaxtext公司传真class="in"size="30"ClientPagetext公司网址class="in"size="30"ClientYeartext年度订单class="in"size="30"ClientTeltext公司电话class="in"size="30"ClientCountrytext国家地区class="in"size="30"ClientEmailtextE-mailclass="in"size="30"ClientNumbertext邮政编码class="in"size="30"ClientListtext最高订单class="in"size="30"ClientCyctext需求周期class="in"size="30"ClientSizeselect公司规模大中小ClientHabitudeselect企业性质外企国企民营私营68
ClientPayselect结款方式现金支票汇票ClientCreditselect结款信用Submitselect添加按钮class="input"value=" 添 加 "onClick="returnchecks()"在查询页面中单击【添加】按钮,在展示区中会显示添加页面,其设计效果如图5所示。图8客户信息添加页面设计效果当单击添加页面中的【添加】按钮时,调用js编写的自定义函数(checks()),通过函数验证填写的数据是否正确,该函数的代码如下:functionchecks(){if(form1.ClientName.value==""){alert("公司名称不能为空");returnfalse;}……//中间过程不详细介绍,因为实现方法类似elseif(form1.ClientCyc.value==""){alert("需求周期不能为空");returnfalse;}68
}表单提交之后,添加的数据将被提交到本页进行处理,本页数据处理的程序代码如下:<%ifrequest("post")<>""thensetrs=server.CreateObject("adodb.recordset")sql="select*fromtb_Client"rs.opensql,conn,1,3rs.addnewrs("ClientName")=request("ClientName")‘添加公司名称rs("ClientAddress")=request("ClientAddress")‘公司地址rs("ClientTel")=request("ClientTel")‘公司电话rs("ClientFax")=request("ClientFax")‘公司传真rs("ClientNumber")=request("ClientNumber")‘邮政编码rs("ClientPage")=request("ClientPage")‘公司网址rs("ClientEmail")=request("ClientEmail")‘公司emailrs("ClientCountry")=request("ClientCountry")‘所属国家/地区rs("ClientHabitude")=request("ClientHabitude")‘公司性质rs("ClientSize")=request("ClientSize")‘公司规模rs("ClientCity")=request("ClientCity")‘所属城市rs("ClientPay")=request("ClientPay")‘结款方式rs("ClientCredit")=request("ClientCredit")‘结款信用rs("ClientList")=request("ClientList")‘最高订单‘rs("ClientYear")=request("ClientYear")‘年度订单rs("ClientCyc")=request("ClientCyc")‘需求周期rs("SetTime")=now()‘创建时间rs("EditTime")=now()‘修改时间rs("SetName")=session("admin_name")‘创建人rs.updaters.closeconn.closeresponse.Write("alert("客户信息添加成功")")‘弹出成功对话框68
endif%>3.客户信息修改在显示客户详细信息页面,用户可以浏览、修改其客户的详细信息。进行客户详细信息浏览和修改的页面设计效果如图6所示:图9客户信息修改页面设计效果在客户信息修改页面,用户可以浏览客户详细的信息,也可以修改客户的信息(当用户有修改的权限时,那么用户可以进行修改,至于用户权限的实现,将在后面的章节中进行讲解)。其客户信息修改页面涉及的HTML表单元素如表3所示。表3客户信息信息修改页面涉及的HTML表单元素名称类型含义重要属性form1Form表单method="post"action=""posthidden判断表单是否提交value="true"ClientNametext公司名称value="<%=rsx("ClientName")%>"readonly=”true”class="in"size="30"ClientAddresstext公司地址value="<%=rsx("ClientAddress")%>"readonly=”true”class="in"size="30"ClientCitytext所在城市value="<%=rsx("ClientCity")%>"readonly=”true”class="in"size="30"ClientFaxtext公司传真value="<%=rsx("ClientFax")%>"readonly=”true”class="in"size="30"ClientPagetext公司网址value="<%=rsx("ClientPage")%>"readonly=”true”class="in"size="30"ClientYeartext年度订单value="<%=rsx("ClientYear")%>"readonly=”true”class="in"size="30"ClientTeltext公司电话value="<%=rsx("ClientTel")%>"readonly=”true”class="in"size="30"ClientCountrytext国家地区value="<%=rsx("ClientCountry")%>"68
readonly=”true”class="in"size="30"ClientEmailtextE-mailvalue="<%=rsx("ClientEmail")%>"readonly=”true”class="in"size="30"ClientNumbertext邮政编码value="<%=rsx("ClientNumber")%>"readonly=”true”class="in"size="30"ClientListtext最高订单value="<%=rsx("ClientList")%>"readonly=”true”class="in"size="30"ClientCyctext需求周期value="<%=rsx("ClientCyc")%>"readonly=”true”class="in"size="30"ClientSizeselect公司规模selected<%endif%>>大selected<%endif%>>中selected<%endif%>>小ClientHabitudeselect企业性质selected<%endif%>>外企selected<%endif%>>国企selected<%endif%>>民营selected<%endif%>>私营ClientPayselect结款方式selected<%endif%>>现金selected<%endif%>>支票selected<%endif%>>汇票ClientCreditselect结款信用selected<%endif%>>好selected<%endif%>>中selected<%endif%>>差Submitselect添加按钮class="input"value=" 修改 "onClick="returnchecks()"当用户单击【修改】按钮后,修改的数据将被提交到本页进行处理。数据处理的代码如下:<%ifrequest("post")<>""and(rsr("Client")="可写"orrsr("chaoji")="是")thensetrs=server.CreateObject("adodb.recordset")sql="select*fromtb_Clientwhereid="&request("id")rs.opensql,conn,1,3rs("ClientName")=request("ClientName")‘添加公司名称rs("ClientAddress")=request("ClientAddress")‘公司地址rs("ClientTel")=request("ClientTel")‘公司电话rs("ClientFax")=request("ClientFax")‘公司传真rs("ClientNumber")=request("ClientNumber")‘邮政编码rs("ClientPage")=request("ClientPage")‘公司网址rs("ClientEmail")=request("ClientEmail")‘公司emailrs("ClientCountry")=request("ClientCountry")‘所属国家/地区rs("ClientHabitude")=request("ClientHabitude")‘公司性质rs("ClientSize")=request("ClientSize")‘公司规模rs("ClientCity")=request("ClientCity")‘所属城市rs("ClientPay")=request("ClientPay")‘结款方式rs("ClientCredit")=request("ClientCredit")‘结款信用rs("ClientList")=request("ClientList")‘最高订单‘rs("ClientYear")=request("ClientYear")‘年度订单rs("ClientCyc")=request("ClientCyc")‘需求周期rs("EditTime")=now()‘修改时间rs("SetName")=session("admin_name")‘创建人rs.updaters.closeresponse.Write("alert("客户信息修改成功")")‘弹出成功对话框endif%>4.客户信息删除在客户信息管理页面,用户可以点选任意一条客户信息前面的复选框,然后单击页面下方的【删除】按钮,被选择的客户信息将被删除。客户信息删除主要是根据传递的参数(本例中的参数为客户信息的id),将数据库中对应id的客户信息和其他和客户相关的信息全部删除,程序代码如下:<%callclient"验证是否有删除客户信息的权限ifrequest("del")<>""thenkid=Split(Request("del"),",")‘分解字符串成数组fori=0toubound(kid)sqld="deletefromtb_Clientwhereid="&clng(kid(i))"删除客户信息conn.execute(sqld)sqll="deletefromtb_LinkmanwhereLinkmanClient="&clng(kid(i))"删除客户的联系人信息conn.execute(sqll)sqlp="deletefromtb_PactwherePactClient="&clng(kid(i))"删除客户的合同信息conn.execute(sqlp)sqlp="deletefromtb_FeedbackwhereFeedbackClient="&clng(kid(i))"删除客户反馈信息conn.execute(sqlp)sqlp="deletefromtb_ProductwhereProductProvider="&clng(kid(i))"删除客户的产品信息conn.execute(sqlp)nextifrequest("p")=""then"返回用户操作页response.Redirect("KeHu_KeHu.asp")elseresponse.Redirect("KeHu_KeHu.asp?p="&request("p"))endifelse68
response.Write("alert("请选择要删除的信息");location="javascript:history.go(-1)"")endif%>5.1.2联系人信息管理设计联系人信息管理的主要功能包括显示/查询、添加、修改和删除联系人信息4个部分。用户可以通过功能导航进入联系人信息管理页面,页面设计效果如图7所示。图10联系人信息管理页面设计效果1.联系人信息显示/查询用户可以在联系人信息管理页面中的查询部分,输入一定的查询条件进行联系人信息的查询。用户在查询部分输入条件后,单击【查询】按钮,用户添加的查询条件将被提交给本页,本页则将根据用户提交的表单信息对数据库进行检索,并将结果集通过操作区输出到浏览器中。联系人信息查询页面涉及的HTML表单元素如表4所示。表4联系人信息查询页面涉及的HTML表单元素名称类型含义重要属性form1Form表单method="post"action=""posthidden判断表单是否提交value="true"tiaoselect查询类型selected<%endif%>>模糊查询selected<%endif%>>精确查询68
selselect关键字类别selected<%endif%>>姓名……selected<%endif%>>传真searchtext关键字">Submitsubmit查询按钮class="input"value=" 查 询 "查询代码如下:<%ifrequest("post")<>""thenifrequest("tiao")="模糊查询"then’联系人模糊查询setrs=server.CreateObject("adodb.recordset")sql="select*fromtb_Linkmanwhere"&request("sel")&"like"%"&request("search")&"%"orderbyiddesc"rs.opensql,conn,1,1else‘联系人精确查询setrs=server.CreateObject("adodb.recordset")sql="select*fromtb_Linkmanwhere"&request("sel")&"=""&request("search")&""orderbyiddesc"rs.opensql,conn,1,1endifelse’默认状态下显示联系人列表setrs=server.CreateObject("adodb.recordset")sql="select*fromtb_Linkmanorderbyiddesc"rs.opensql,conn,1,1endif%>分页代码请参考4.1节中介绍的客户信息显示/查询中的相关代码。也可在查看客户的详细信息中,单击“联系人信息”,就会产生此客户的联系人列表,传参代码如下:68
&dd=dd">联系人信息2.联系人信息添加联系人信息添加的主要功能是添加客户的联系人信息。其联系人信息添加页面涉及的HTML表单元素如表5所示。表5联系人信息添加页面涉及的HTML表单元素名称类型含义重要属性form1Form表单method="post"action=""posthidden判断表单是否提交value="true"LinkmanNametext姓名class="in"size="30"LinkmanLiketext爱好class="in"size="30"LinkmanFaxtext传真class="in"size="30"LinkmanHandertext手机class="in"size="30"LinkmanDepttext部门class="in"size="30"LinkmanBirthtext出生日期class="in"size="30"LinkmanTeltext电话class="in"size="30"LinkmanDutytext职务class="in"size="30"LinkmanEmailtextE-mailclass="in"size="30"LinkmanClienttext所属客户class="in"size="30"LinkmanSexselect性别男女LinkmanMienselect合作态度好中差Remarkselect备注cols="88"rows="2"class="table"Submitselect添加按钮class="input"value=" 添 加 "onClick="returnchecks()"在查询页面中单击【添加】按钮,在展示区中会显示添加页面。在添写表单选择所属客户时,所属客户是在数据库中直接读取出来的。其代码如下:<%setrsc=server.CreateObject("adodb.recordset")sqlc="select*fromtb_Clientorderbyiddesc"rsc.opensqlc,conn,1,1ifnotrsc.eofthen68
%><%fori=1torsc.recordcountandnotrsc.eof%>"><%=rsc("ClientName")%><%rsc.movenextnext%><%elseresponse.Write("没有客户信息,请添加")endif%>添加联系人页面的运行结果如图8所示。图11添加联系人的页面运行结果也可在客户的详细信息中单击【新建】按钮,在此添加用户不用选择所属客户,直接就会生成所属客户,主要是根据传递的参数(本例中的参数为客户信息的id),传参代码如下:">新建其显示代码如下:<%setrsc=server.CreateObject("adodb.recordset")sqlc="select*fromtb_Clientwhereid="&request("id")&"orderbyiddesc"rsc.opensqlc,conn,1,168
response.Write(rsc("ClientName"))%>3.联系人信息修改联系人信息修改的主要功能是用户修改联系人信息,方便用户和客户之间的联系和沟通。其联系人信息修改页面涉及的HTML表单元素如表3所示。表6联系人信息修改页面涉及的HTML表单元素名称类型含义重要属性form1Form表单method="post"action=""posthidden判断表单是否提交value="true"LinkmanNametext姓名value="<%=rsx("LinkmanName")%>"readonly=”true”class="in"size="30"LinkmanLiketext爱好value="<%=rsx("LinkmanLike")%>"readonly=”true”class="in"size="30"LinkmanFaxtext传真value="<%=rsx("LinkmanFax")%>"readonly=”true”class="in"size="30"LinkmanHandertext手机value="<%=rsx("LinkmanHander")%>"readonly=”true”class="in"size="30"LinkmanDepttext部门value="<%=rsx("LinkmanDept")%>"readonly=”true”class="in"size="30"LinkmanBirthtext出生日期value="<%=rsx("LinkmanBirth")%>"readonly=”true”class="in"size="30"LinkmanTeltext电话value="<%=rsx("LinkmanTel")%>"readonly=”true”class="in"size="30"LinkmanDutytext职务value="<%=rsx("LinkmanDuty")%>"readonly=”true”class="in"size="30"LinkmanEmailtextE-mailvalue="<%=rsx("LinkmanEmail")%>"readonly=”true”class="in"size="30"LinkmanClienttext所属客户value="<%=rsc("id")%>"<%ifrsc("id")=clng(rsx("LinkmanClient"))readonly=”true”class="in"size="30"LinkmanSexselect性别selected<%endif%>>男selected<%endif%>>女LinkmanMienselect合作态度selected<%endif%>>好68
selected<%endif%>>中selected<%endif%>>差Remarkselect备注cols="88"rows="2"class="table"Submitselect添加按钮class="input"value=" 修改 "onClick="returnchecks()"在显示联系人详细信息页面,用户可以更改其联系人的信息。联系人信息修改页面运行结果如图9所示。图12联系人信息修改页面运行结果其程序代码如下:<%setrsr=server.CreateObject("adodb.recordset")sqlr="select*fromtb_Userwhereusername=""&session("admin_name")&"""rsr.opensqlr,conn,1,1ifrequest("post")<>""and(rsr("Linkman")="可写"orrsr("chaoji")="是")thensetrs=server.CreateObject("adodb.recordset")sql="select*fromtb_Linkmanwhereid="&request("id")rs.opensql,conn,1,3......response.Write("alert("联系人信息修改成功")")endifsetrsx=server.CreateObject("adodb.recordset")sqlx="select*fromtb_Linkmanwhereid="&request("id")rsx.opensqlx,conn,1,168
%>4.联系人信息删除联系人信息删除的主要功能是删除联系人的信息。,其程序代码如下:<%kid=Split(Request("del"),",")‘分解字符串成数组response.Write("正在删除...")fori=0toubound(kid)sqld="deletefromtb_Linkmanwhereid="&clng(kid(i))‘删除指定的记录conn.execute(sqld)next%>5.1.3合同信息管理合同信息管理设计主要包括显示/查询、添加、修改和删除合同信息4个部分。用户可以通过功能导航进入合同信息管理页面,页面设计效果如图10所示。图13合同信息管理页面的运行结果1.合同信息显示/查询用户可以在合同信息管理页面中的查询部分,输入一定的查询条件,进行合同信息的查询。用户在查询部分输入查询条件后,单击【查询】按钮,用户所添加的查询条件将被提交给本页,本页将根据用户提交的表单信息对数据库进行检索,并将结果集通过操作区输出到浏览器中。合同信息查询程序代码如下:<%ifrequest("post")<>""thenifrequest("tiao")="模糊查询"then‘模糊查询合同信息setrs=server.CreateObject("adodb.recordset")68
sql="select*fromtb_Pactwhere"&request("sel")&"like"%"&request("search")&"%"orderbyiddesc"rs.opensql,conn,1,1else’精确查询合同信息setrs=server.CreateObject("adodb.recordset")sql="select*fromtb_Pactwhere"&request("sel")&"=""&request("search")&""orderbyiddesc"rs.opensql,conn,1,1endifelse’默认状态下显示的合同信息setrs=server.CreateObject("adodb.recordset")sql="select*fromtb_Pactorderbyiddesc"rs.opensql,conn,1,1endif%>合同信息显示/查询页面运行结果如图11所示。图14合同信息显示/查询页面运行结果也可在查看客户的详细信息中,单击“合同信息”,就会产生此客户的合同列表,传参代码如下:&dd=dd">合同信息2.合同信息添加合同信息添加的主要功能是用户添加客户的合同信息。在查询页面中单击【添加】按钮,在展示区中会显示添加页面,其运行结果如图17(上)所示;也可在客户的详细信息页面单击“新建”,在展示区中会显示添加页面,然后进行合同信息添加。合同信息添加页面的运行结果如图12(下)所示。68
图15合同信息添加页面运行结果3.合同信息修改合同信息修改的主要功能是用户修改合同信息。在显示合同详细信息页面,用户可以更改其合同的信息。合同信息修改页面运行结果如图13所示。图16合同信息修改页面运行结果4.合同信息的删除合同信息删除的主要功能是删除合同信息,其代码如下:<%kid=Split(Request("del"),",")response.Write("正在删除...")fori=0toubound(kid)68
sqld="deletefromtb_Pactwhereid="&clng(kid(i))conn.execute(sqld)next%>5.2服务管理服务管理设计的主要功能包括反馈信息的显示/查询、添加、修改和删除4个部分。用户可以通过功能导航进入服务管理页面,页面设计效果如图20所示。图17服务管理页面的设计效果5.2.1反馈信息添加反馈信息添加的主要功能是用户添加客户的反馈信息。在查询页面中单击【添加】按钮,在展示区中会显示添加页面。反馈信息添加页面的设计效果如图21所示。图18反馈信息添加页面的设计效果反馈信息添加页面涉及的HTML表单元素如表3所示。表3反馈信息信息添加页面涉及的HTML表单元素名称类型含义重要属性form1Form表单method="post"action=""68
posthidden判断表单是否提交value="true"FeedbackTitletext反馈主题class="in"size="30"FeedbackFulfillradio是否完成value="未完成"value="已完成"yearselect年"><%=i%>monthselect月"><%=i%>dayselect日"><%=i%>FeedbackClientselect相关客户"><%=rsc("ClientName")%>FeedbackContenttextarea详细内容cols="88"rows="4"class="table"FeedbackResulttextarea处理结果cols="88"rows="4"class="table"Submitselect添加按钮class="input"value=" 添 加 "onClick="returnchecks()"表单提交之后,添加的数据将被提交到本页进行处理。数据处理的程序代码如下:<%callfeedbackifrequest("post")<>""thensetrs=server.CreateObject("adodb.recordset")sql="select*fromtb_Feedback"rs.opensql,conn,1,3rs.addnew"主要用于添加客户反馈信息的数据rs("FeedbackTitle")=request("FeedbackTitle")rs("FeedbackDate")=request("year")&"-"&request("month")&"-"&request("day")rs("FeedbackClient")=request("FeedbackClient")rs("FeedbackContent")=request("FeedbackContent")rs("FeedbackResult")=request("FeedbackResult")rs("FeedbackFulfill")=request("FeedbackFulfill")rs("SetTime")=now()68
rs("SetName")=session("admin_name")rs.updaters.closeresponse.Write("alert("反馈信息添加成功")")endif%>5.2.2反馈信息修改因为反馈信息是客户的反馈意见所以不得随意修改,用户只可以修改“处理结果”和“服务完成”两项信息。当服务完成选项,选中“已完成”时,那么任何信息都不可以修改,也就是说只有在服务“未完成”的情况下才能修改“处理结果”。反馈信息页面设计效果如图22所示。图19反馈信息页面设计效果反馈信息修改页面涉及的HTML表单元素如表4所示。表4反馈信息信息修改页面涉及的HTML表单元素名称类型含义重要属性form1Form表单method="post"action=""posthidden判断表单是否提交value="true"FeedbackTitletext反馈主题value="<%=rsx("FeedbackTitle")%>"size="30"readonly="true"class="in"FeedbackFulfillradio是否完成value="未完成"<%ifrsx("FeedbackFulfill")="未完成"then%>checked<%endif%>68
value="已完成"<%ifrsx("FeedbackFulfill")="已完成"then%>checked<%endif%>FeedbackDatetext年value="<%=rsx("FeedbackDate")%>"size="30"readonly="true"class="in"FeedbackClientselect相关客户value="<%=rsc("ClientName")%>"size="30"readonly="true"class="in"FeedbackContenttextarea详细内容cols="88"rows="4"class="table"readonly=trueFeedbackResulttextarea处理结果cols="88"rows="4"class="table"<%ifrsx("FeedbackFulfill")="已完成"then%>readonly=true<%else%>onfocus=this.select();onmouseover=this.focus();<%endif%>Submitselect添加按钮class="input"value=" 修改 "onClick="returnchecks()"在反馈信息修改页面,当用户单击【修改】按钮后,修改数据将被提交到本页进行处理,数据处理程序的代码如下:<%ifrequest("post")<>""thensetrs=server.CreateObject("adodb.recordset")sql="select*fromtb_Feedbackwhereid="&request("id")rs.opensql,conn,1,3rs("FeedbackFulfill")=request("FeedbackFulfill")rs("FeedbackResult")=request("FeedbackResult")rs.updaters.closeresponse.Write("alert("反馈信息修改成功");location="Feedback_ed.asp?id="&request("id")&"")endif%>5.3报表管理报表管理的主要功能是打印各种类型的报表,包括客户报表打印、联系人报表打印、反馈报表打印和库存报表打印4个部分。报表管理页面设计效果如图23所示。68
图20报表管理页面设计效果5.3.1客户报表模块客户报表模块的主要功能包括客户报表查询、导入Excel和用web打印3个部分。1.客户报表查询客户报表查询页面涉及的HTML表单元素如表5所示。表5客户报表查询页面涉及的HTML表单元素名称类型含义重要属性form1Form表单method="post"action=""eeeetHidden判断表单如何处理ClientCountrySelect国家/地区"><%=rsg("ClientCountry")%>ClientCitySelect城市"><%=rsc("ClientCity")%>SetNameSelect创建者"><%=rss("SetName")%>公司名称……公司地址68
Submitsubmit导入Execulclass="input"value="导入Excul"onClick="form1.eeeet.value="excul""Submitsubmit直接打印class="input"value="打印报表"onClick="form1.eeeet.value="print_c""用户可以在报表管理页面中的客户报表查询部分,输入查询条件,进行客户信息的查询。2.导入Excel当用户在查询部分输入条件,并单击【导入Excel】按钮后,用户添加的查询条件将被提交给数据处理页,处理页用selectcase判断隐藏域的值,进而确定怎样处理。数据处理页对查询条件经过处理,产生相应的SQL查询语句,其代码如下:<%sql="idisnotnull"ifrequest("ClientCountry")<>"全部"then"国家/地区不为全部时sql=sql&"andClientCountry=""&request("ClientCountry")&"""endififrequest("ClientCity")<>"全部"then"城市不为全部时sql=sql&"andClientCity=""&request("ClientCity")&"""endififrequest("SetName")<>"全部"then"客户名称不为全部时sql=sql&"andSetName=""&request("SetName")&"""endififtrim(request("search"))<>""then"当关键字不为空时sql=sql&"and"&request("searchtype")&"like"%"&request("search")&"%""endifsql="selectClientName,ClientCountry,ClientCity,ClientTel,ClientFax,ClientEmailfromtb_Clientwhere"&sqlresponse.Redirect("Table_print_Cd.asp?sql="&sql&"&tt=excul")"把参数传给下载页面%>当数据处理页处理完毕之后,会自动转向下载页,在下载页中单击左键,直接用web打开Excel,右键单击“下载”选择“目标另存为...”把Excel保存在相应的路径下。处理Excel的页面代码如下:<%68
ifrequest("tt")="excul"then"当为客户报表查询时产生相应字段a=array("公司名称","所在国家/地区","所在城市","公司电话","公司传真","E-mail")elseifrequest("tt")="excul_l"then"当为联系人报表查询时产生相应字段a=array("姓名","客户名称","部门","职务","电话","手机","E-mail")elseifrequest("tt")="excul_k"then"当为反馈客户报表查询时产生相应字段a=array("客户名称","反馈日期","是否解决","反馈主题","反馈内容","处理结果")elseifrequest("tt")="excul_kc"then"当为库存报表查询时产生相应字段a=array("客户编号","客户名称","产品数量","单位","库存类型")endif%><%response.ContentType="application/vnd.ms-excel"%><%setrs=conn.execute(request("sql"))%><%fori=0tors.fields.count-1%><%=a(i)%><%next%> <%dowhilenotrs.eof%><%fori=0tors.fields.count-1%><%=rs(i)%><%next%> <%rs.movenextloop68
rs.close%>报表下载页面的运行结果如图24所示。图21报表下载页面的运行结果3.用web打印用户在查询部分输入查询条件后,单击【打印报表】按钮,用户添加的查询条件将被提交给数据处理页,处理页用selectcase判断隐藏域的值,进而确定怎样处理。数据处理页对查询条件经过处理,产生相应的SQL查询语句。程序代码如下:<%sql="idisnotnull"ifrequest("ClientCountry")<>"全部"then"国家/地区不为全部时sql=sql&"andClientCountry=""&request("ClientCountry")&"""endififrequest("ClientCity")<>"全部"then"城市不为全部时sql=sql&"andClientCity=""&request("ClientCity")&"""endififrequest("SetName")<>"全部"then"客户名称不为全部时sql=sql&"andSetName=""&request("SetName")&"""endififtrim(request("search"))<>""then"当关键字不为空时sql=sql&"and"&request("searchtype")&"like"%"&request("search")&"%""endifsql="select*fromtb_Clientwhere"&sqlresponse.Redirect("Table_print_p.asp?sql="&sql)"把参数传给打印页面%>68
当数据处理页处理完毕之后,会自动转向打印页,打印页是一个框架集,包含三个页面。框架页代码如下:<%sql=request("sql")ifsql=""thensql=session("sql")endifsession("sql")=sqlshow=request("show")ifshow=""thenshow=15endifp=request("p")ifp=""orp=0thenp=1endif%>&show=<%=show%>&p=<%=p%>"name="topFrame"frameborder="no"scrolling="NO"noresize>&show=<%=show%>&p=<%=p%>"name="mainFrame"frameborder="no"> 控制页面代码如下:<%sql=request("sql")"获取sql语句ifsql=""thensql=session("sql")endifsession("sql")=sqlshow=request("show")68
setrs=server.CreateObject("adodb.recordset")sql=sqlrs.opensql,conn,1,1ifnotrs.eofthentol=rs.recordcountrs.pagesize=showmaxpage=rs.pagecountrequestpage=clng(request("p"))elsemaxpage=0tol=0show=0endif%><%fori=1to200%>"<%ifi=int(show)then%>selected<%endif%>>每页显示<%=i%>条记录<%next%><%fori=1tomaxpage%>&show=<%=show%>&sql=<%=request("sql")%>">第<%=i%>页<%next%>68
总页数:<%=maxpage%>总条数:<%=tol%>打印打印预览页面代码如下:<%sql=request("sql")ifrequest("sql")=""thensql=session("sql")endifsession("sql")=sqlshow=request("show")setrs=server.CreateObject("adodb.recordset")sql=session("sql")rs.opensql,conn,1,1%><%ifnotrs.eofthentol=rs.recordcountrs.pagesize=showmaxpage=rs.pagecountrequestpage=clng(request("p"))ifrequestpage=""orrequestpage=0thenrequestpage=1endififrequestpage>maxpagethenrequestpage=maxpageendififrequestpage<>1thenrs.move(requestpage-1)*rs.pagesize68
endiffori=1tors.pagesizeandnotrs.eof%><%=rs("ClientName")%><%=rs("ClientCountry")%> <%=rs("ClientCity")%> <%=rs("ClientTel")%> <%=rs("ClientFax")%> <%=rs("ClientEmail")%> <%rs.movenextifrs.eofthenexitfornextelseresponse.Write("没有找到相关信息")endif%>客户报表打印页面运行结果如图25所示。图22客户报表打印页面的运行结果5.3.2联系人报表模块1.联系报表查询联系人报表查询页面涉及的HTML表单元素如表6所示。68
表6联系人报表查询页面涉及的HTML表单元素名称类型含义重要属性form1Form表单method="post"action=""eeeethidden判断表单如何处理LinkmanDeptselect国家/地区"><%=rsg("ClientCountry")%>LinkmanDutyselect城市"><%=rsc("ClientCity")%>select2select创建者"><%=rss("SetName")%>"全部"thensql=sql&"anddbo.tb_Linkman.LinkmanDept=""&request("LinkmanDept")&"""endififrequest("LinkmanDuty")<>"全部"thensql=sql&"anddbo.tb_Linkman.LinkmanDuty=""&request("LinkmanDuty")&"""endififrequest("select2")<>"全部"thensql=sql&"anddbo.tb_Linkman.SetName=""&request("SetName")&"""endifsql="SELECTdbo.tb_Linkman.LinkmanName,dbo.tb_Client.ClientName,dbo.tb_Linkman.LinkmanDept,dbo.tb_Linkman.LinkmanDuty,dbo.tb_Linkman.LinkmanTel,dbo.tb_Linkman.LinkmanHander,68
dbo.tb_Linkman.LinkmanEmailFROMdbo.tb_ClientINNERJOINdbo.tb_LinkmanONdbo.tb_Client.ID=dbo.tb_Linkman.LinkmanClientwhere"&sqlresponse.Redirect("Table_print_kh.asp?sql="&sql)%>由于查询和导入的实现方法和客户报表的实现方法相似,在此不再详细介绍,请读者参考7.1节中介绍的导入Excel的程序代码。3.用web打印用户在查询部分输入查询条件后,单击【打印报表】按钮,用户所添加的查询条件将被提交给数据处理页,处理页用selectcase判断隐藏域的值,进而确定怎样处理。传值程序代码如下:<%sql="dbo.tb_Linkman.idisnotnull"ifrequest("LinkmanDept")<>"全部"thensql=sql&"anddbo.tb_Linkman.LinkmanDept=""&request("LinkmanDept")&"""endififrequest("LinkmanDuty")<>"全部"thensql=sql&"anddbo.tb_Linkman.LinkmanDuty=""&request("LinkmanDuty")&"""endififrequest("select2")<>"全部"thensql=sql&"anddbo.tb_Linkman.SetName=""&request("SetName")&"""endifsql="SELECTdbo.tb_Linkman.LinkmanName,dbo.tb_Client.ClientName,dbo.tb_Linkman.LinkmanDept,dbo.tb_Linkman.LinkmanDuty,dbo.tb_Linkman.LinkmanTel,dbo.tb_Linkman.LinkmanHander,dbo.tb_Linkman.LinkmanEmailFROMdbo.tb_ClientINNERJOINdbo.tb_LinkmanONdbo.tb_Client.ID=dbo.tb_Linkman.LinkmanClientwhere"&sqlresponse.Redirect("Table_print_Cd.asp?sql="&sql&"&tt=excul_l")%>由于联系人查询和导入实现的方法和客户报表的实现的方法相似,在此不再详细介绍,请读者参考5.3.1节中介绍的用web打印的程序程序代码。联系人报表页面运行结果如图26所示。68
图23联系人报表页面的运行结果由于客户报表查询、联系人报表查询、反馈客户查询和库存报表查询实现的方法比较类似,在这里不再详细介绍,请参考5.3.1节和5.3.2节的相关内容。第六章系统测试68
6.1操作测试在实现各个功能模块后,将系统连接编译生成系统的可执行文件并运行,对系统进行总体测试。现在我们就可以利用IIS+IE进行ASP的调试,其操作测试步骤如下:(1)建立信息服务:开始->控制面板->管理工具->internet信息服务->网站->默认网站->新建虚拟目录->别名(×××)->输入目录路径文件。(2)运行浏览器:IE5.0,推荐使用IE6.0。打开IE,在地址栏里输入:http://XXX(你的计算机名或是127.0.0.1或是localhost)/XXXXX(你的虚拟目录名,也就是你在设置虚拟目录时命的名,如果放在X:Inetpubwwwroot下的话就不要虚拟目录了)/wwww(文件名,如果是default.asp/default.html/index.htm/index.asp这样的文件名也可以省略不填)。进入用户界面,输入用户名和密码,即可运行工程,测试工程是否正确运行。如果你的ASP文件有错误的话,IE就会报错。图24用户界面(3)进入客户关系管理系统主界面,选择客户信息管理,采取模糊查询客户名称其结果如下图。68
图25客户关系管理系统主界面(4)进入选择客户信息管理,采取模糊查询客户名称,点击添加后,其结果如下图。图26客户信息添加界面(5)进入选择客户信息管理,采取模糊查询,字段为国家地区,关键字选中国,点击后,其结果如下图。68
图27客户信息按字段、关键字模糊查询结果(6)进入选择客户信息管理,采取精确查询,字段为执行人,如关键字选李木,点击后,其结果如下图。图28客户信息按字段、关键字精确查询结果68
(7)选择进入报表管理,选择国家/地区、城市、创建者、公司名称,点击导入Excel,再点击打印,如下图。图29报表管理打印界面(8)选择进入用户管理,点击添加用户、删除、刷新,就可以完成添加、删除、刷新用户工作,如下图。图30用户管理界面68
6.2数据库的安全性SQLServer系统默认用户sa为系统用户,权限最高。当然在本系统我们也可以重新设定用户和密码,同时将其权限也可做相应的设定,这样的设定可以防止本系统的用户入侵到其它系统的数据库中。该系统中用db_system数据库,具体如图31图31db_system数据库安全性设定68
第七章设计结果与讨论7.1运行结果本系统——客户关系管理系统实现企业商家对自己的销售群体(客户群)管理所用,关心他们的想法、需求、购买目的。通过创新(产品的创新、企业管理的创新、服务的创新)来抢占有限的客户资源、维护好企业和客户之间的关系、了解客户的需求动向,不断的满足客户的需求。通过计算机网络对客户信息进行管理,使企业对自身拥有的客户有了一个更为深该的了解。不仅能全面的统计客户的购买数量,及时的了解客户的动态信息,还可以根据计算机记录的数据信息,不断的调整企业的生产发展动向,使企业商家对自己的销售群体(客户群)管理更加规范化和秩序化并且具有信息更新速度快等优点,这样使得本系统更加完善。7.2设计不足之处由于本人能力和精力有限,加上对客户关系管理工作没有实际性的操作和缺乏深入的了解,所以在客户关系管理系统软件的设计中,在某些具体的功能上没有得到很好完善。另外,由于时间上的限制,在对软件的美术设计上也没有更好的设计。68
致谢在本系统的开发过程中,从需求分析到系统的设计,从脚本的制作到程序的调试,从系统的优化到论文的编写,都非常感谢计算机系领导、老师和同学的帮助,才使本系统得以顺利完成。同时,感谢我的指导老师——老师,帮助我解决了设计中的技术上和其他方面的问题,给我提出了宝贵意见和建议。在此还向对本课题有过帮助的老师和同学表示真诚的感谢。68
参考文献1.ASP数据库开发实例解析机械工业出版社李严、于亚芳、王国辉2004年12月2.ASP工程应用与项目实践机械工业出版社王国辉、牛强、李南南2005年4月3.ASP信息系统开发实例精选机械工业出版社王国辉、牛强、李南南等2005年7月4.SQLServer数据库开发实例解析机械工业出版社宋昆、李严等2006年1月5.用FrontPage2002开发动态网站人民邮电出版社杨威编著2001年7月6.SQLServer与ASPWeb数据库编程技术北京大学出版社闫华文编著2005年8月68