还剩64页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
基于C/S的客户关系管理系统基于C/S的客户关系管理系统开发任务书
一、项目名称基于C/S结构的客户关系管理系统
二、项目来源及依据无锡机床厂原有的b/s结构的客户关系管理简称CRM系统已不能够有满足在新形势对客户更加全面的管理,迫切需要开发新的CRM系统新系统不但要求对客户可进行更加全面地维护,而且用户界面要能够使得公司员工在不需要很多的培训时间即可使用本系统本人参加了其中个别模块的开发
三、开发环境及工具
1.操作系统Windows2000Server
2.开发工具VisualC++
6.
03.数据库SQLServer
四、开发应达到的要求
1.系统的功能该系统完成客户维护,联系人维护,项目维护,合同维护,产品维护等
2.撰写项目开发说明书
3.英文文献的阅读与翻译
五、开始及完成时间200年3月上旬~~200年五月下旬摘要越来越多的企业与管理者已经相信,以客户为中心是未来成功的关键借助客户关系管理系统(CustomerRelationshipManagement简称CRM),企业能更好地了解、服务于客户,改善客户关系,提升管理水平,降低企业经营成本,最终为企业赢得更大的利润CRM因此成为现代营销管理不可缺的管理平台本论文对CRM的现状及特点进行了简单地介绍,并详细地介绍了如何使用VC++
6.0实现一个基本的CRM,其中采用了一些比较有参考价值的技术关键字:客户关系管理VC++
6.0数据库管理系统目录第一章CRM概述--------------------------------------------------------------------------
61.1CRM简介------------------------------------------------------------------------------
61.2CRM现状------------------------------------------------------------------------------
61.
2.1CRM在国外银行的应用---------------------------------------
61.
2.2CRM在国内的应用-----------------------------------------------------------------
71.3CRM特点及优点---------------------------------------------------------------------
71.
3.1CRM与ERP的异同-------------------------------------------
71.
3.2CRM系统的实施目标-----------------------------------------
71.
3.3CRM的优点-------------------------------------------------
81.4现行CRM的改进-------------------------------------------------------------------8第二章需求分析--------------------------------------------------------------------------
92.1开发背景------------------------------------------------------------------------------
92.2需求分析------------------------------------------------------------------------------9第三章系统开发--------------------------------------------------------------------------
123.1开发环境及工具---------------------------------------------------------------------
123.
1.1网络平台的选择-------------------------------------------------------------------
123.
1.2数据库的选择----------------------------------------------------------------------
123.
1.3开发工具的选择-------------------------------------------------------------------
123.
1.4ADO连接数据库-------------------------------------------------------------------
133.2模块划分------------------------------------------------------------------------------
143.3数据结构开发------------------------------------------------------------------------
153.4体系结构的选择---------------------------------------------------------------------21第四章系统设计与开发-----------------------------------------------------------------
244.1客户查询功能模块的开发-------------------------------------------------------
244.2客户资料维护功能模块的开发-------------------------------------------------
274.3客户联系人查询功能模块的开发----------------------------------------------
304.4客户联系人资料维护功能模块的开发----------------------------------------
314.5客户项目跟踪查询功能模块的开发-------------------------------------------
324.6客户项目跟踪资料维护功能模块的开发-------------------------------------
334.7合同查询功能模块的开发-------------------------------------------------------
344.8合同资料维护功能模块的开发-------------------------------------------------
354.9产品查询功能模块的开发-------------------------------------------------------
364.10产品资料维护功能模块的开发-------------------------------------------------
374.11销售人员查询功能模块的开发-------------------------------------------------
384.12销售人员资料维护功能模块的开发-------------------------------------------
394.13竞争对手查询功能模块的开发-------------------------------------------------
404.14竞争对手资料维护功能模块的开发-------------------------------------------
414.15竞争对手产品查询功能模块的开发-------------------------------------------
424.16竞争对手产品资料维护功能模块的开发-------------------------------------
434.17用户服务查询功能模块的开发-------------------------------------------------
444.18用户服务资料维护功能模块的开发-------------------------------------------
454.19工作计划查询功能模块的开发-------------------------------------------------
464.20工作计划资料维护功能模块的开发------------------------------------------47第五章关键技术代码的分析----------------------------------------------------------
485.1SQL查询语句的生成--------------------------------------------------------------
485.2数据更新的实现--------------------------------------------------------------------50小结------------------------------------------------------------------------------------------52结束与致谢---------------------------------------------------------------------------------53参考文献------------------------------------------------------------------------------------54附录类CKHOption的完整代码------------------------------------------------------55翻译------------------------------------------------------------------------------------------59第一章CRM概述
1.1CRM简介 客户关系管理(CustomerRelationshipManagement简称CRM)作为—种新的管理模式、业务营销理念和信息技术前沿产品,是信息技术与业务管理相结合的产物,早已引起银行界管理层的关注,也是我们从事科技工作人员所研究的对象 CRM不是信息技术的产物,但却是伴随着因特网和电子商务的大潮进入中国的,90年代中期,计算机数据库厂家Oracle在中国开始市场教育和普及工作,并迅速得到计算机软件界的认可,电话银行中心就是CRM的一个较早的实例下面根据自己对CRM在银行应用的研究,从业务处理和信息技术方面对CRM的理念、相关技术及其应用前景给予阐述 CRM其内涵是企业利用IT技术和互联网技术实现对客户的整合营销,是以客户为核心的企业营销的技术实现和管理实现CRM的本质实际上是营销管理,是一种对以客户为导向的企业营销管理的系统工程 CRM的根本来源并不是技术的进步,而是营销管理演变的自然结果,在西方的市场竞争中,企业领导者发现传统的由市场部门实现的营销方法越来越无法实现营销的目标而应反映出在营销体系中各种交叉功能的组合,其重点在于赢得客户这样,营销重点从客户需求进一步转移到客户保持上,并且保证企业把适当的时间、资金和管理资源直接集中在这两个关键任务上新的CRM实施范例反映出传统营销到客户管理的变化由此可见所谓的客户关系管理就是:为企业提供全方位的管理视角赋予企业更充分的客户交流能力,最大化客户的收益率
1.2CRM现状
1.
2.1CRM在国外银行的应用 这几年来,在世界范围内,随着对CRM理念认同程度的扩大和行业产品系统的日趋成熟,一些大型银行和新型银行纷纷将CRM在银行领域的应用实施列入工作日程如此关注CRM是金融服务市场开放、竞争的结果,是银行多样化的产品和服务发展的结果,是信息技术突飞猛进的结果,也是银行管理和业务的需要20世纪90年代初,发达国家的商业银行就已经实现了业务处理的规范化、办公事务的自动化和决策支持的智能化,并在发展网上银行方面先行一步以数据仓库技术为基础,以联机分析处理和数据挖掘工具为手段的CRM系统也日趋成熟国外金融界十分重视对CRM的开发实施工作,据IDC调查,1998年全球500家大银行中的前100家,已经有近90家建有CRM在美国建有CRM的银行中,以大型银行为主,美国排名前100位的商业银行已有50多家在客户关系管理中实施了数据仓库和数据挖掘项目,剩余的银行正在准备实施 在公司银行业务方面,FirstAmerican银行按年利息、信用额度和不同的客户种类,将客户细分成750个类型,提供个性化服务,成为全美业务年成长最快的银行 在个人银行业务方面,澳大利亚的国民银行每天会将所收集的客户数据放到数据仓库中并且设定了一些智能分析机制,对客户交易状态进行管理,一旦有客户状态异常的情况发生,数据仓库会自动做出相关统计,并将统计的结果提交给营销部门的人员,由营销人员及时与客户进行接触,找出客户状态异常的原因例如这家银行通过系统发现一位老太太提款很多,是要为女儿买房子,银行就立即与老太太的女儿进行联系,表示愿意为其提供买房的贷款结果是即将老太太原来要从银行提的款项又全部作为存款留在银行;银行又为其女儿贷出了一笔贷款
1.
2.2CRM在国内的应用 CRM系统在国内,特别是金融行业的关注度非常高,但应用较少,属于起步阶段据计算机世界报介绍,鹏华基金管理公司已开始应用CRM系统,因为多数基金管理公司的运营模式仍然是基于内部管理和内部核算的需要,并没有建立“以客户为中心”的现代管理模式随着开放式基金的推出和发展,它特行的可赎回性将客户的重要性提升到了前所未有的高度如果客户对某家基金管理公司感到不甚满意,很可能会迅速转向其他基金管理公司客户的满意度和忠诚度成为基金管理公司生存和发展的重要依据,如何留住老客户、争取新客户已成为当务之急采用CRM系统可以帮助该公司更好地了解客户需求并进行系统化的分析,在此基础上进行“一对一”的个性化服务,提高客户的满意度和忠诚度,帮助基金管理公司更加明了这样一些问题“谁是他们的客户?谁是他们的好客户?他们的客户需要什么?如何提升客户价值并使银行获得更多的利润?” 进入WTO后,中国金融业这一受保护最久最严的行业也开始了它的开放进程在这一过程中外有外资金融机构进入中国市场的压力,内有内部竞争环境所导致的市场格局的变化,相接主导着金融业市场环境的变化在这种迫切需要加强管理、优化产品的形式下,巨通网络科技有限公司开发的银行信贷决策分析系统,采用数据仓库和数据挖掘技术对信贷业务分析的关键问题(客户、机构、产品、行业、项目)进行分析,并运行于交通银行上海分行、江苏省农行创智软件园开发的PowerCRM系统,提供企业级的客户关系管理解决方案,并运行于中行温州分行但这些系统离完整地实现CRM还有很长的路要走而我们能够去关注CRM,就是从我行先期推广的大户管理系统中看到了CRM应用的前景
1.3CRM特点及优点
1.
3.1CRM与ERP的异同ERP是EnterpriseResourcesPlanning的缩写,即企业资源计划这一观念最初是由美国顾能公司(GartnerGroup)在90年代初期提出的按照顾能公司的解释,ERP系统是“一套将财会、分销、制造和其他业务功能合理集成的应用软件系统”一般来讲,ERP系统包括生产计划、物料需求计划、能力需求计划、订单处理、采购管理、销售计划、仓库管理、财务会计及报表等功能可见ERP能够帮助企业创造最好的物流管理,理顺企业内部的流程,为企业的发展打好坚实基础CRM和ERP在基本的功能上是不同的CRM作为一个专门管理企业前台的软件,可以帮助企业增加销售收入、提高企业的市场能力和效率ERP节省的成本是可计量的、有限的,而CRM将直接带来公司收入的增长,且增长不可限量CRM的出现使企业可以全面地观察其外部的客户,确切知道客户的真正需要,并且根据他们的需要开展有针对性的市场营销活动,提供完善的服务,因而CRM是推动企业腾飞的真正动力
1.
3.2CRM系统的实施目标大量实践证明,是否建立CRM系统以及是否实施以客户为中心的营销战略,已经成为企业成功和失败的分水岭CRM能够对动态的客户信息进行管理跟踪,很好地促进企业和客户之间的交流,协调客户服务资源,给客户做出最及时的反应另外随着计算机和通讯的发展,利用一系列如自动来电分配(ACD)、计算机电话集成(CTI)和Internet等先进技术来综合处理信息的新一代智能电话呼叫中心技术已经日趋完善,可极大地发挥计算机和通讯结合的潜能,有效地改善客户服务有了CRM的支持,企业不但拓展了开发新客户的渠道,而且所有的客户关系都将贯穿客户的终生,目标是使每一个新客户都成为企业的永久客户,其中的关键在于如何管理和使用CRM实施于企业的市场营销、销售、服务与技术支持等与客户相关的部门,其实施目标体现在以下几个方面第一,通过提供更快速和周到的服务帮助企业吸引和保持更多的客户CRM不仅是一套管理软件,还是一种全新的营销管理概念利用CRM系统,企业能够从与客户的接触中了解他们的姓名、年龄、家庭状况、工作性质、收入水平、通信地址、个人喜好及购买习惯等信息,并在此基础上进行“一对一”的个性化服务通过搜集、追踪和分析每一个客户的信息,知道他们需要什么,为他们量身定做产品,并把客户想要的产品和服务送到他们手中这就是随着市场不断细分而最终出现的大规模定制的市场营销原则的精髓,即根据不同的客户建立不同的联系,并根据其特点和需求提供不同的服务,从而真正做到“以客户为中心”,赢得客户的“忠诚”第二,通过对业务流程的全面管理降低企业的成本CRM通过对客户信息的管理和挖掘,不仅有助于现有产品的销售,而且提供了对历史信息的回溯,及对未来趋势的预测,能够很好地实现企业与客户之间的互动举例来说,企业能够依据不同客户过去的购买行为,分析他们的不同偏好,预测他们未来的购买意向,据此分别对他们实施不同的营销活动,避免大规模广告的高额投入,从而使企业的营销成本降到最低,而营销的成功率最高第三,通过电话呼叫中心能够提供故障申报、业务受理、用户投诉等服务的完全自动化用户只需拨打一个统一的电话号码即能得到“直通车”式的服务,一改以往拨打多个电话,问题仍得不到解决的局面电话呼叫中心将每一事件从申报、受理、调度、处理的每一个环节完全控制在事先编排好的计算机逻辑中,并通过计算机进行跟踪、控制一方面避免了人为因素,提高了服务质量,另一方面明确了每个相关部门、每个员工的职责,将工作纳入了一个统一的管理轨道电话中心的每一个用户应答电话均通过同程录音方式详细地记录在系统中,做到有据可查,分清责任
1.
3.3CRM的优点CRM对于企业的市场营销活动是至关重要的,有了CRM,可以大规模、全方位收集、分析客户信息,能够为市场营销提供越来越丰富的数据资源;通过CRM的调查、测试结果,能够使企业对新商品、新广告策略、新兴市场等有准确的定位,从而在正确的时间、以正确的价格、向正确的客户销售正确的商品;CRM还帮助企业提高服务水平,提供自动、完善的服务
1.4现行CRM的改进无锡机床厂原先的CRM是基于b/s结构,这就确定了原来的系统在数据处理能力及操作界面的便捷性上存在很大的局限性,新的系统将采用c/s结构必然会在以上两个方面取得进步,并且在系统的维护及可扩充性上取得长足的进步第二章需求分析
2.1开发背景随着社会经济的发展,产品日益丰富,市场格局发生了变化,由卖方市场过渡到买方市场,市场竞争逐步升级,这就推动了营销观念和营销方式的变革商贸企业必须对市场变化迅速做出反应,而市场的变化源于客户行为的变化,所以,企业必须把注意力集中于客户的需求,客户被作为一种宝贵的资源纳入到企业的经营发展中面对诸如哪些商品最受欢迎、原因是什么、目前有多少回头客、都是哪些类型的客户、客户购买商品时最关心什么、商品的售后服务有哪些问题、广告播出后的反响如何等问题,大部分企业还只能凭经验推测,没有确切的数据来证实,这就使企业的市场营销活动缺乏针对性和准确性企业的经营应该逐步从“以产品为中心”的模式向“以客户为中心”的模式转移为了实现这种转移,克服传统市场营销中的弊病,现代市场营销理论的核心已经由原来的4P,即产品(Product)、价格(Price)、渠道(Place)、促销(Promotion),发展演变为4C,即消费者(Customer)、消费者愿意支付的购买成本(Cost)、便利(Convention)、沟通(Communication),实现了真正意义上的以消费者为中心一切从消费者的利益出发,目的就是为了维持顾客的忠诚因为只有长期忠诚的顾客才是企业创造利润的源泉,所以企业关注的焦点应从内部运作转移到客户关系上来一般的客户发展阶段是潜在客户→新客户→满意的客户→留住的客户→老客户据统计,开发一个新客户的成本是留住一个老客户所花费成本的5倍,而20%的重要客户可能带来80%的收益,所以留住老客户比开发新客户更为经济有效过去企业总是将精力集中在寻找新客户上,而忽略了现有的老客户身上蕴涵的巨大商机现在很多企业逐步学会了判断最有价值的客户,尽力想办法奖励这些客户,发现这些客户的需要并满足他们的需要,从而提高客户服务水平,达到留住客户的目的,也就是前面所说的维持顾客的忠诚而实现这一切需要一种能够持续与客户交流的工具,这就是客户关系管理(CRM,CustomerRelationshipManagement)的一个主要功能所在伴随着建立在“客户准则”之上的营销理念应运而生的,不仅为企业提供了一个收集、分析、利用客户信息的系统,更为现代企业提供了一种全新的商业管理战略,它可以帮助企业充分利用其客户关系资源,扩展新的市场和业务渠道,提高客户的满意度和企业的赢利能力,帮助企业在空前激烈的竞争中立足和发展无锡机床厂是一家大型的国有企业,已在机床制造行业发展多年拥有大量的客户,因此如何与这些新老客户保持联系,以了解这些客户新的需求,从而确立自生的发展及研究方向,是公司迫切需要解决的一个问题该公司原有的b/s结构的客户关系管理信息系统由于产品开发时间的久已,已不能够满足在新时期下的客户关系管理,因此开发新版本的客户关系管理信息系统成为该公司信息中心的首要任务,在这样的情况下,本人参与了其中一部分的开发
2.2需求分析CRM大致的功能如下
1、客户管理模块此模块记录客户的详细信息及以往与客户的联络情况,包括客户档案管理、联系人管理、联络记录管理等其中客户档案除包括客户名称、所属行业、地址等基本信息,还能够将客户类型定义为大客户、中客户、小客户,将客户性质分为是否为黑客户、流失客户、风险客户等几类,以便于对客户的管理;联系人管理包括联系人的姓名、地址、联络方式等基本信息,同时还包括联系人注重方式(价格、功能、爱好等);联络记录详细记载了每次与客户联系的时间、方式、情况、结果等,这些信息的记录都是为了对客户进行进一步联络时更加具有针对性,使专门与客户打交道的部门能够随时得到与客户相关的资料,真实和全方位地了解客户CRM系统还能够对所有的客户资料进行分析和处理,使企业既能根据客户的特点提供服务,又能对客户的盈利性进行评估
2、商品管理模块包括有关商品的详细信息,以及销售、库存等情况的查询、分析
3、竞争对手管理模块包括竞争对手档案管理等信息,详细记录竞争对手的优势与不足,用来帮助营销人员在制定营销战略时扬长避短,从而最终在竞争中获胜
4、销售管理模块其开发目标是实现销售的自动化,提高销售的有效性包括的功能有报价管理、订单管理、合同管理、销售机会管理、销售人员管理、指标管理、地域管理、日程表、销售业绩管理等,还包括销售经理对所管辖的销售人员的奖励和佣金计划,以及签单后对付款情况的跟踪等此模块实现从报价、订货一直到付款、给付佣金的全程自动化,同时决策者也能够通过此模块随时了解企业产品的销售情况,预测未来的市场变化,将企业的运营维持在最佳状态CRM软件还可提供基于Internet的自助销售功能,使客户能够通过Internet选择并购买具有个性化配置的产品或服务,真正实现定制的个性化服务
5、市场营销管理模块此模块的开发目标是使市场营销人员能够对市场营销活动有效地加以计划、执行、监视和分析包括的功能有市场营销调查表的开发、生成、管理,以及营销宣传品管理,活动预算管理,回馈信息的录入、分析等此模块提供了一个市场营销自动化解决方案,它能够进行基于Internet的和传统的市场营销活动的策划和执行,生成和管理客户需求,根据客户需求开发和分发宣传品,对有购买意向的客户跟踪、分配和管理等这些功能可帮助企业实施针对性强、效率高的市场营销活动,从而争取和保留更多的目标客户
6、服务管理模块此模块提供客户支持、售后服务的自动化和优化包括的功能有客户服务人员管理,产品的售后跟踪,投诉记录,现场服务的预约、调度和派遣,服务结果跟踪,备件的管理,服务合同管理,服务收费自动核算等,帮助企业提供有竞争力的售后支持和维护服务它允许客户选择电话、Web访问等多种方式与企业联系由于CRM系统畅通的交流渠道,客户不论通过哪种方式与企业联系,都能在最短的时间内得到统
一、完整和准确的服务
7、电子商务管理模块该模块使企业能够将其业务扩展到Internet上,通过Internet销售其产品和服务,以便充分地利用电子商务带来的便利客户通过浏览网页了解感兴趣的产品,提出服务请求、查阅产品常见问题的答案、在线订货并检查供货状况、查看和支付账单等企业能够针对不同客户创建个性化的促销和产品建议,并通过Internet向客户发出这些促销建议例如当一位客户通过企业的网页购买了产品后,销售系统会记录下客户购买和浏览过的产品,当他再次进入企业的网页时,系统识别出他的身份后就会根据其喜好推荐有关产品客户浏览的次数越多,系统对他了解就越多,也就能更好地为他服务显然,这种有针对性的服务对维持客户的忠诚度有极大帮助
8、电话呼叫中心(CallCenter)管理模块电话呼叫中心组件与其他组件集成在一起,不仅为相关业务提供了电话能力,还与这些组件一起形成了一个兼顾电话服务与销售的自动通话网络呼叫中心是集
9、报表生成与决策分析模块CRM搜集、积累了大量与客户服务及产品销售有关的数据,在此基础上能够提供完善的数据挖掘、分析能力,根据历史记录预测未来消费者的购买意向及市场销售的趋势在CRM具体的实施过程中,各模块的功能和业务环节是相辅相成的,共同组成完整的CRM系统CRM系统为企业在改进客户满意度和企业自身赢利、扩展新的市场和商业渠道、缩减销售周期和销售成本方面均提供了全方位和强有力的支持由于时间及分工上的原因,本人开发的系统只有前4部分第三章系统开发
3.1开发环境及工具
3.
1.1网络平台的选择Windows2000Server建立于NT技术之上,是进行Internet商务的最佳操作系统它具有很强的可靠性--使用Windows2000操作系统的PC机、便携式电脑和服务器具有非常高的可用时间它通过简化系统管理降低了操作费用它是最新硬件的最佳操作系统,这些硬件从最小的移动设备到最大的电子商务服务器Windows2000的创新性在于它集成了定义商业Internet信息处理的技术--并将这些技术用于各种规模的商业用途我们可以从Web的角度来考虑其他软件商可能有运行在他们操作系统之上的Web技术,而Windows2000Server拥有集成在操作系统之内的Web技术,这些技术使得Windows2000Server更易于使用,并且具有更高的安全性和功能性其他技术创新包括对最新硬件和设备的良好支持、集成式终端服务、内建虚拟专用网络(VPN)支持等在极大地改善了可靠性和易管理性后,Windows2000Server现在可以轻松地处理几乎所有服务器作业MicrosoftSQLServer2000扩展了MicrosoftSQLServer
7.0版的性能、可靠性、质量和易用性MicrosoftSQLServer2000增加了几种新功能,由此成为大规模联机事务处理OLTP、数据仓库和电子商务应用程序的优秀数据库平台
3.
1.2数据库的选择当今,国内流行的基于客户机/服务器体系结构的数据库管理系统主要有Oracle、Sybase、MSSQLServer、Informix、DB
2、Unify等其中Oracle8i是关系对象型数据库管理系统ObjectRelationalDBMS其余大多是关系型数据库管理系统,都支持SQL语言本系统由于存储在后台“共性数据库”的数据量不是很大,同时鉴于微软对W3C的相关“XML规范”的良好支持系统采用MSSQLServer2000作为数据库服务器其主要优点如下
①同WindowsNT/2000完美集成,允许用户用一个用户名和口令字访问SQLServer和NT/2000;
②支持WindowsNT/2000对称多处理SMP功能,能自动利用添加到服务器的任何附加处理器;
③作为一个WindowsNT/2000的服务运行,允许用户远程控制;
④可把消息写到WindowsNT/2000应用程序日志、安全日志和系统日志,为系统的维护和问题的解决提供了一种手段;
⑤可把本身的性能指标发送给WindowsNT/2000性能监视器,方便用户监视它的性能
3.
1.3开发工具的选择VisualC++作为一个功能非常强大的可视化应用程序开发工具,是计算机界公认的最优秀的应用开发工具之一Microsoft的基本类库MFC使得开发Windows应用程序比以往任何时候都要容易VisualC++作为一种程序开发语言,它同时也是一个集成开发工具,提供了软件代码自动生成和可视化的资源编辑功能VisualC++集程序的代码编辑、编译、连接、调试等于一体,给编程人员提供了一个完整翻遍的开发界面和许多有效的辅助开发工具VisualC++的AppWizard可以位很大一部分的程序提供框架代码,拥护不需要输血程序代码,只需要按几个按钮就可以生成一个完整的可运行的程序VisualC++中非常吸引人之处就是它强大的数据库访问和网络功能,利用VisualC++可以恒翻遍的开发出功能强大的数据库和网络应用程序,不当可以编制访问本地数据库的应用程序,也可以开发出能够访问大型数据库的应用程序.基于VisualC++强大的功能,本系统的开发工具选择了VisualC++
6.
03.
1.4ADO连接数据库ADO是MicrosoftActiveXDataObjects的缩写,是微软开发的只适用于Window操作系统的数据库访问对象,它由一系列COM对象组成,通过OLEDB数据提供者方文数据库中的数据ADO提供了机遇对象且便于使用的接口,它只占用系统很少的资源,但是运行效率却比较高,另外,它还允许用户使用数据库中的各种系统资源,它建立在OLEDB技术的基础上,OLEDB口一对底呈数据库数据进行访问在实际应用中,用户可能使用不同的数据源存储数据,比如使用Oracle、SQLServer、Access等数据库、使用Excel电子表格、使用邮件系统或文件系统等,这些数据源的每种都有自己专用的数据存储格式和存储方法而要使用一个应用程序访问这些不同类型的数据源中的数据,则需要使用一种通用的方法,ADO就是这样一种通用的方法,因此只要是ODBC能过存取的数据源都是ADO可以存取的对象以下十本系统使用ADO连接数据源的一段代码voidCCRMDoc::ConnectServer{//准备connectionstring连接字符串m_source=Driver={SQLServer};Server=yjb;Uid=YANG;Pwd=4310;Database=CRMDB;HRESULThr;try{//创建连接对象的一个实体hr=m_connection.CreateInstance_uuidofConnection;_bstr_tsource=m_source//尝试连接数据库ifSUCCEEDEDhrhr=m_connection-Opensource-1;//在连接数据可成功的条件下创建_recordset对象ifSUCCEEDEDhrhr=m_recordset.CreateInstance_uuidofRecordset;ifSUCCEEDEDhrm_connect=TRUE;elsem_connect=FALSE;}catch_com_errore{//异常处理,简单的将是否连接数据库成功的变量至为FALSEm_connect=FALSE;}}以下就以上一段代码做一点解释这里假设SQLServer服务器的名称为yjb,连接时提供的用户名为yang,其相应的用户密码为4310,连接的数据库的名称CRMDB实际系统开发时,服务器的名称在开发时已经确定,故本系统没有作再不需要重新编译本程序的情况下达到连接不同服务器的功能,因此本系统如果在实际应用中连接的服务器名称不是yjb,程序运行时连接数据库服务器将不会成功,程序提供的大部分功能将不可用,表现为大部分命令为灰色的同样适用于用户名及密码实际应用中如果发生运行程序时提示用户连接数据库失败是错误基本上可以确定发生在这里,只须重新设置新的服务器名称,用户名,密码兵车重新编译本程序即可完成连接服务器的目的如用户欲连接服务器名称为server,用户提供的用户名为user,其相应的密码为password,则此时作如下的工作即可将m_source=Driver={SQLServer};Server=yjb;Uid=YANG;Pwd=4310;Database=CRMDB;替换为m_source=Driver={SQLServer};Server=server;Uid=user;Pwd=password;Database=CRMDB;重新编译程序即可解决此问题
3.2模块划分其中数据维护的子菜单如下〔其它部分略〕:
3.3数据结构开发根据以上分析,我们建立以下数据表格1客户资料表2客户联系人资料表3客户项目跟踪资料表4合同资料表5产品资料表6销售人员资料表7竞争对手资料表8竞争对手主要产品资料表9用户服务资料表
3.4体系结构的选择
3.
4.1Client/ServerC/S模式的特点在网上办公领域,LotusNotes/Domino是一种优秀的基于C/S结构的分布式应用系统的解决方案在这一方案中,客户机/服务器(简称C/S)模式是松散耦合系统它们通过消息传递机制进行对话,一个请求程序(Client)首先通过网络协议(如TCP/IP、NetBEUI和IPX/SPX等)与接收程序(Server)进行连接,由客户端提交请求给服务器服务器进行处理后,将执行结果返回给客户机,形成了胖客户机,瘦服务器结构其主要特点和优点如下1服务器对用户是透明的2分布式的处理与集中的数据操作管理有机地结合在一起3开放式的系统系统的开放性意味着良好的可移植性、互操作性和一致人机界面支持多平台和跨平台,用户以与操作系统、网络协议无关的方式存取数据4交互性强在这种模式下,客户端装有一套完整的应用程序,能够利用出错提示、在线帮助等多种手段向用户提供服务5\降低网络通讯量因为只有两层结构,网络通讯量只包括客户机和服务器之间的通讯量6更安全的存取模式,C/S模式的平台一般采用适合于局域网,安全性比较好的局域网协议,如NetBEUI协议
3.
4.2Browser/ServerB/S模式的特点B/S结构,即Browser/Server浏览器/服务器结构,是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现,形成所谓3-tier结构B/S结构,主要是利用了不断成熟的WWW浏览器技术,结合浏览器的多种Script语言VBScript、JavaScript…和ActiveX技术,用通用浏览器就实现了原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术随着Windows98/Windows2000将浏览器技术植入操作系统内部,这种结构更成为当今应用软件的首选体系结构显然B/S结构应用程序相对于传统的C/S结构应用程序将是巨大的进步
3.
4.3C/S与B/S区别Client/Server是建立在局域网的基础上的.Browser/Server是建立在广域网的基础上的.1硬件环境不同C/S一般建立在专用的网络上小范围里的网络环境局域网之间再通过专门服务器提供连接和数据交换服务.B/S建立在广域网之上的不必是专门的网络硬件环境例与电话上网租用设备.信息自己管理.有比C/S更强的适应范围一般只要有操作系统和浏览器就行2对安全要求不同C/S一般面向相对固定的用户群对信息安全的控制能力很强.一般高度机密的信息系统采用C/S结构适宜.可以通过B/S发布部分可公开信息B/S建立在广域网之上对安全的控制能力相对弱面向是不可知的用户群.3对程序架构不同C/S程序可以更加注重流程可以对权限多层次校验对系统运行速度可以较少考虑B/S对安全以及访问速度的多重的考虑建立在需要更加优化的基础之上.比C/S有更高的要求B/S结构的程序架构是发展的趋势从MS的.Net系列的BizTalk2000Exchange2000等全面支持网络的构件搭建的系统.SUN和IBM推的JavaBean构件技术等使B/S更加成熟4软件重用不同C/S程序不可避免的整体性考虑导致构件的重用性不如在B/S模式下构件的重用性好B/S的多重结构要求构件相对独立的功能,能够相对较好的重用就入买来的餐桌可以再利用而不是做在墙上的石头桌子5系统维护不同系统维护是软件生存周期中较大的一笔开销.C/S程序由于整体性必须整体考察处理出现的问题以及系统升级.升级难.可能是再做一个全新的系统B/S构件组成方面构件个别的更换实现系统的无缝升级.系统维护开销减到最小.用户从网上自己下载安装就可以实现升级.6处理问题不同C/S程序可以处理用户面固定并且在相同区域安全要求高需求与操作系统相关.应该都是相同的系统B/S建立在广域网上面向不同的用户群分散地域这是C/S无法作到的.与操作系统平台关系最小7用户接口不同C/S多是建立的Window平台上表现方法有限对程序员普遍要求较高B/S建立在浏览器上有更加丰富和生动的表现方式与用户交流.并且大部分难度减低减低开发成本.8信息流不同C/S程序一般是典型的中央集权的机械式处理交互性相对低B/S信息流向可变化B-BB-CB-G等信息、流向的变化更象交易中心第四章系统开发与开发首选使用VisualC++
6.0提供的创建工程的向导,创建一名为CRM的基于单文档的应用程序由于本系统主要以查询和编辑为中心,也就是先查询后编辑,查询模块和编辑模块的开发基本相同,故本功能模块开发的说明将以客户查询及客户维护为主,其他模块开发的说明可参考这两个模块后面的模块开发将作简单的介绍
4.1客户查询功能模块的开发该模块的运行效果图该模块的详细开发步骤1使用VC提供的资源管理器向工程添加一对话框资源,取名为ID_DIALOG_KHSEARCH,注意设置该对话框的WS_CHILD属性2使用AppWizard为该对话框添加管理类,类名为CKHSearchView,注意不要使用VC系统提供的默认的基类CDialog,而应该选择CFormView原因:MFC类CDialog只提供了将新建的对话框资源以对话框的形式显示出来,而不能够提供以视的形式显示出来*2中提到的注意点将贯穿本系统开发的始终,后文将不再提此注意点3为该类添加单击“查询“按钮的相应代码,函数名为OnKhSerach该函数的大体代码如下voidCKHSerachView::OnKhSerach{UpdateData;//刷新有关变量值CKHOptionkhoption;//该类负责生成相应的客户查询SQL语句//一下代码填充khoption相关字段的值CStringstr;m_khlxlist.GetLBTextm_khlxlist.GetCurSelstr;khoption.SetKHLXstr;…………CCRMDoc*crmdoc=GetDocument;CListCStringArray*CStringArray*khlist;//尝试从数据库中取得符合条件的客户信息ifcrmdoc-Executekhoption.GetSQLStrkhlist==FALSE{AfxMessageBox查询客户失败;return;}//以下代码完成成功取得满足条件的客户后保存并显示客户的过程………}4为该窗体添加选择客户资料维护命令后的相应代码,其函数名成为OnKhxxzl,该函数的大体代码如下voidCKHSerachView::OnKhxxzl{//判断用户选择了第几个客户intnindex;nindex=m_khlist.GetNextItem-1LVNI_SELECTED;………//准备客户资料编辑窗体的有关信息CCreateContextcontext;context.m_pCurrentDoc=doc;context.m_pCurrentFrame=frame;context.m_pNewDocTemplate=doc-GetDocTemplate;context.m_pNewViewClass=RUNTIME_CLASSCKHView;//以下代码完成三个工作//约定variablekind表示变量variable为kind类型的变量//如m_isaddkhBOOL表示m_isaddkh为BOOL类型的变量//1创建客户资料编辑窗体的实例//2初始化客户资料编辑窗体的有关数据,一时客户资料编辑窗体能够//显示其相应的数据例如,如果用户没有选择客户而直接点击客户资//料维护命令,这里的代码将会把客户资料编辑窗体中标示客户资料编//辑窗体此时是处于添加客户还是编辑客户的变量m_isaddkhBOOL设//置为FALSE,如果用户选择了某个客户,以下代码不但将m_isaddkh//设置为TRUE,还要将客户资料编辑窗体用来保存客户信息的变量//m_kharrayCStringArray初始化//3将客户资料编辑窗体显示出来………}5为该窗体添加选择联系人维护命令后的相应代码,其函数名成为OnLxrxxzl,该函数的大体代码如下voidCKhSerachView::OnLxrxxzl{//首选取得用户选取的客户的序号intnindex;nindex=m_khlist.GetNextItem-1LVNI_SELECTED;//以下代码完成取得相应用户信息的工作………//填充联系人查询窗口创建时需要的信息CCreateContextcontext;context.m_pCurrentDoc=doc;context.m_pCurrentFrame=frame;context.m_pNewDocTemplate=doc-GetDocTemplate;context.m_pNewViewClass=RUNTIME_CLASSCKHLXRSearchView;//创建联系人查询窗口并初始化相关变量最后显示联系人查询窗口…………//一下一行代码完成拷贝客户信息至联系人查询窗口中供用户选择的客户//中去,如果用户没有选择客户,则此时的nindex=1,khlistptrCList//中将保存着数据库中所有的客户信息,如果用户选择了某个客户,//khlistptr将保存着相应客户的信息,khlxrsearchview-m_khlistptr//CList将会在CLxrSerachView::OnInitUpdate用来初始化联系人查//询窗口中可供选择的客户的列表,khlxrsearchview-m_iskhset用来白//标示用户是否准备某个特定客户的联系人CopyListkhlistptrkhlxrsearchview-m_khlistptrTRUE;ifnindex==-1khlxrsearchview-m_iskhset=FALSE;elsekhlxrsearchview-m_iskhset=TRUE;}@其它模块的开发中含有大量的与上述代码功能类似的函数,后文将不再介绍,而是以”参考@”代之6为该窗体添加选择项目维护命令后的相应代码,其函数名成为OnXmxxzl参考@7为该窗体添加选择合同维护命令后的相应代码,其函数名成为OnHtxxzl参考@8为该窗体添加选择用户服务维护命令后的相应代码,其函数名成为OnYhfwxxzl参考@9为该窗体添加用户右击某客户时的代码,以实现可以通过右及客户完成有关该客户所有的可进行的操作其大体代码如下voidCKHSearchView::OnRclickListKhlistNMHDR*pNMHDRLRESULT*pResult{//TODO:Addyourcontrolnotificationhandlercodehere//判断用户是否选择了某个客户以便加载不同的菜单intnindex;nindex=m_khlist.GetNextItem-1LVNI_SELECTED;//以下代码根据用户的选择创建不同的弹出式菜单并显示该菜单………*pResult=0;}10添加相应的代码使某个已存在于该窗体中客户被编辑并保存后能及时的更新并显示出来以避免数据不一致详细地实现过程将在关键代码分析中作介绍至此,客户查询窗体模块的开发已完成
4.2客户资料维护功能模块的开发该模块的运行效果图1使用VC提供的资源管理器向工程添加一对话框资源,取名为ID_DIALOG_KH,注意设置该对话框的WS_CHILD属性2使用AppWizard为该对话框添加管理类,类名为CKHView,同样其基类应该选择CFormView,而不是默认的CDialog3重载该类的虚函数OnInitUpdate,以实现初始化该窗体的目的这里的工作主要根据创建该窗体的代码对其相关变量的初始化完成有关菜单可用及不可用的控制4添加邮区编辑框在失去焦点时的相应代码,其函数名为OnKillfocusEditYq,以完成自动取得客户码的动作*客户编号是如何取得的?首选客户码字符窗的长度为8,前四位为用户输入的客户的邮区,后四位是该客户在邮区也为该邮区客户中的序号,如某客户的邮区为2140,而数据库中已有的邮区也为2140的最后一条记录为21400058,则新客户的编号为21400059,这样做的目的是可以对客户进行分类以便统计函数OnKillfocusEditYq的大体代码如下voidCKHView::OnKillfocusEditYq{//以下一行代码主要是防止该窗体在被关闭时输入焦点仍在邮区编辑框//中时不进行查询新客户编号的过程ifm_isclose==TRUEreturn;UpdateData;//当前如果处于编辑状态并且客户邮区未被修改时也不进行查询客户新//编号的过程,这样做可比避免不必要的客户编号被改变的错误ifm_isaddkh==FALSEm_yq==m_kharrayptr.GetAt12return;……//查询所有客户码为’新邮区%‘的客户,以取得该邮区最后一个客户的//后四位数字exestr.Formatselect*fromTKHTZwhereKHMLIKE%sm_yq+%;//查询数据库并组成新的客户码即填充满8位………}5实现该窗体响应添加客户命令的函数,函数名为OnAdd,其大体代码如下所示voidCKHView::OnAdd{UpdateData;ifIsCSHF==FALSEreturn;//判断新客户的客户信息是否//否合法,不合法将提示用户输入的客户的哪个信息含有错误CStringstr;CStringArrayarray;//保存新客户的有关信息//以下代码完成按次序填充array,某些字段可在添加客户//客户时不需填写如:维护时间,这些字段值将以空代之array.Addm_khm;………//往数据库中添加该纪录CCRMDoc*crmdoc=GetDocument;ifcrmdoc-InsertRowTKHTZarray==FALSE{AfxMessageBox客户注册失败;return;}AfxMessageBox客户注册成功;//添加成功清空有关数据以方便用户输入新的客户资料m_khm.Empty;………}6实现该窗体响应保存客户命令的函数,函数名为OnSave,其大体代码如下所示voidCKHView::OnSave{UpdateData;ifIsCSHF==FALSEreturn;//判断编辑后的客户信息是否合法,//不合法将提示用户编辑后的客户的哪个信息含有错误CStringstr;CStringArrayarray;CUIntArrayposarray;//填充编辑后的客户信息至array…………//向数据库提交编辑客户的操作CCRMDoc*crmdoc=GetDocument;ifcrmdoc-EditRowTKHTZKHMm_kharrayptr.GetAt0posarrayarray==FALSEAfxMessageBox保存失败;else{AfxMessageBox保存成功;//编辑客户成功后将完以下工作//
1.向当前活动窗体发送该客户信息已被编辑并保存的消息,以便其他//窗体更新该客户的信息以保持数据的一致性//
2.将该窗体切换至添加客户的状态//
3.修改菜单的有关信息,也就是将原来‘窗体‘菜单下的’编辑客户窗//体‘更改为’添加客户窗体‘……….}}7实现该窗体响应删除客户命令的函数,函数名为OnDelete,其大体代码如下所示voidCKHView::OnDelete{BOOLautodelete;//根据用户是否设置闪出是否提醒用户确定是否提示用户删除该客户//直接删除该客户ifGetAutoDeleteautodelete==FALSE||autodelete==FALSE……CCRMDoc*crmdoc=GetDocument;CStringkhm=m_kharrayptr.GetAt0;//删除该客户ifcrmdoc-DeleteRowTKHTZKHMkhm==0//以下代码的完成的工作前提:删除客户成功,否则直接退出//1向当前活动窗体发送该客户被删除的消息,//
2.将该窗体切换至添加客户的状态//
3.修改菜单的有关信息,也就是将原来‘窗体‘菜单下的’编辑客户//窗体‘更改为’添加客户窗体‘}8为该窗体添加某客户被删除时的相应代码,以便强迫切换至添加客户的转态,该部分将在关键技术代码分析中作详细地介绍
4.3客户联系人查询功能模块的开发该模块的运行效果图以下就该模块的开发做一个简单的介绍1使用VC的资源管理器制作一名为ID_DIALOG_LXRSEARCH的对话框资源注意设置其WS_CHILD属性2使用AppWizard创建该资源的管理类,类名为CLXRSerachView,其基类为CFormView3为该类添加响应单击查询按钮的函数,函数名称为OnLxrSerach4为该类添加响应客户资料维护命令的函数,函数名称为OnKhxxzl5为该类添加响应联系人资料维护命令的函数,函数名称为OnLxrxxzl6为该类添加添加联系人命令的函数,函数名称为OnAddLxr6为该类添加响应右击某联系人时的函数,以实现可右击某联系人已完成有关联系人可进行的所有操作,方便用户的操作函数为OnRclickListLxrlist7为该类添加响应某客户资料被编辑或删除时的函数,保证数据跟新的一致性,相应函数的函数名称分别为OnKhEditKHEDITPTR和OnKhDeleteCString8为该类添加响应某连系人资料被编辑或删除时的函数,相应函数的函数名称分别为OnLxEditLXEDITPTR和OnLxDeleteLXDELETEPTR以上即为客户联系人查询模块开发的一个简介
4.4客户联系人资料维护功能模块的开发该模块的运行效果图以下就该模块的开发做一个简单的介绍1使用VC的资源管理器制作一名为ID_DIALOG_LXR的对话框资源注意设置其WS_CHILD属性2使用AppWizard创建该资源的管理类,类名为CLXRSView,其基类为CFormView3为该类添加响应添加联系人命令的函数,函数名称为OnAdd4为该类添加响应保存联系人命令的函数,函数名称为OnSave5为该类添加响应删除联系人命令的函数,函数名称为OnDelete7为该类添加响应某客户资料被编辑或删除时的函数,相应函数的函数名称分别为OnKhEditKHEDITPTR和OnKhDeleteCString8为该类添加响应某联系人删除时的函数,函数名为OnLxrDeleteLXRDELETEPTR9为该类添加响应退出当前窗体命令的函数,函数名为OnButtonExit;以上即为客户联系人资料维护模块开发的一个简介
4.5客户项目跟踪查询功能模块的开发该模块的运行效果图以下就该模块的开发做一个简单的介绍1使用VC的资源管理器制作一名为ID_DIALOG_XMSEARCH的对话框资源注意设置其WS_CHILD属性2使用AppWizard创建该资源的管理类,类名为CXMSerachView,其基类为CFormView3为该类添加响应单击查询按钮的函数,函数名称为OnXmSerach4为该类添加响应客户资料维护命令的函数,函数名称为OnKhxxzl5为该类添加响应项目资料维护命令的函数,函数名称为OnXmxxzl6为该类添加响应右击某项目时的函数,以实现可右击某项目已完成有关项目可进行的所有操作,方便用户的操作函数为OnRclickListXmlist7为该类添加响应某客户资料被编辑或删除时的函数,保证数据跟新的一致性,相应函数的函数名称分别为OnKhEditKHEDITPTR和OnKhDeleteCString8为该类添加响应某项目资料被编辑或删除时的函数,相应函数的函数名称分别为OnXmEditXMEDITPTR和OnXmDeleteCString以上即为项目查询模块开发的一个简介
4.6客户项目跟踪资料维护功能模块的开发该模块的运行效果图以下就该模块的开发做一个简单的介绍1使用VC的资源管理器制作一名为ID_DIALOG_XM的对话框资源注意设置其WS_CHILD属性2使用AppWizard创建该资源的管理类,类名为CXMView,其基类为CFormView3为该类添加响应添加项目命令的函数,函数名称为OnAdd4为该类添加响应保存项目命令的函数,函数名称为OnSave5为该类添加响应删除项目命令的函数,函数名称为OnDelete7为该类添加响应某客户资料被编辑或删除时的函数,相应函数的函数名称分别为OnKhEditKHEDITPTR和OnKhDeleteCString8为该类添加响应某项目删除时的函数,函数名为OnXmDeleteCString以上即为客户项目资料维护模块开发的一个简介
4.7合同查询功能模块的开发该模块的运行效果图以下就该模块的开发做一个简单的介绍1使用VC的资源管理器制作一名为ID_DIALOG_XM的对话框资源注意设置其WS_CHILD属性2使用AppWizard创建该资源的管理类,类名为CXMView,其基类为CFormView3为该类添加响应单击查询按钮的函数,函数名称为OnHtSerach4为该类添加响应客户资料维护命令的函数,函数名称为OnKhxxzl5为该类添加响应项目资料维护命令的函数,函数名称为OnXmxxzl6为该类添加响应合同资料维护命令的函数,函数名称为OnHtxxzl6为该类添加响应右击某合同时的函数,以实现可右击某合同以完成有关合同可进行的所有操作,方便用户的操作函数为OnRclickListHtlist7为该类添加响应某客户资料被编辑或删除时的函数,保证数据跟新的一致性,相应函数的函数名称分别为OnKhEditKHEDITPTR和OnKhDeleteCString8为该类添加响应某项目资料被编辑或删除时的函数,相应函数的函数名称分别为OnXmEditXMEDITPTR和OnXmDeleteCString9为该类添加响应某合同资料被编辑或删除时的函数,相应函数的函数名称分别为OnHtEditHTEDITPTR和OnHtDeleteCString以上即为合同查询模块开发的一个简介
4.8合同资料维护功能模块的开发该模块的运行效果图以下就该模块的开发做一个简单的介绍1使用VC的资源管理器制作一名为ID_DIALOG_HT的对话框资源注意设置其WS_CHILD属性2使用AppWizard创建该资源的管理类,类名为CHTView,其基类为CFormView3为该类添加响应添加合同命令的函数,函数名称为OnAdd4为该类添加响应保存合同命令的函数,函数名称为OnSave5为该类添加响应删除合同命令的函数,函数名称为OnDelete7为该类添加响应某客户资料被编辑或删除时的函数,相应函数的函数名称分别为OnKhEditKHEDITPTR和OnKhDeleteCString8为该类添加响应某项目资料被编辑或删除时的函数,相应函数的函数名称分别为OnXmEditXMEDITPTR和OnXmDeleteCString9为该类添加响应某合同删除时的函数,函数为OnHtDeleteCString以上即为合同资料维护模块开发的一个简介
4.9产品查询功能模块的开发该模块的运行效果图以下就该模块的开发做一个简单的介绍1使用VC的资源管理器制作一名为ID_DIALOG_CPSEARCH的对话框资源注意设置其WS_CHILD属性2使用AppWizard创建该资源的管理类,类名为CCPSerachView,其基类为CFormView3为该类添加响应单击查询按钮的函数,函数名称为OnCpSerach4为该类添加响应产品资料维护命令的函数,函数名称为OnCpxxzl5为该类添加响应右击某产品时的函数,以实现可右击某产品以完成有关产品可进行的所有操作,方便用户的操作函数为OnRclickListCplist6为该类添加响应某产品资料被编辑或删除时的函数,相应函数的函数名称分别为OnCpEditCPEDITPTR和OnCpDeleteCString以上即为产品查询模块开发的一个简介
4.10产品资料维护功能模块的开发该模块的运行效果图以下就该模块的开发做一个简单的介绍1使用VC的资源管理器制作一名为ID_DIALOG_CP的对话框资源注意设置其WS_CHILD属性2使用AppWizard创建该资源的管理类,类名为CCPView,其基类为CFormView3为该类添加响应添加产品命令的函数,函数名称为OnAdd4为该类添加响应保存产品命令的函数,函数名称为OnSave5为该类添加响应删除产品命令的函数,函数名称为OnDelete6为该类添加响应某产品删除时的函数,函数为OnCpDeleteCString以上即为产品资料维护模块开发的一个简介
4.11销售人员查询功能模块的开发该模块的运行效果图以下就该模块的开发做一个简单的介绍1使用VC的资源管理器制作一名为ID_DIALOG_XSRYSEARCH的对话框资源注意设置其WS_CHILD属性2使用AppWizard创建该资源的管理类,类名为CXSRYSerachView,其基类为CFormView3为该类添加响应单击查询按钮的函数,函数名称为OnXsrySerach4为该类添加响应销售人员资料维护命令的函数,函数名称为OnXsryxxzl5为该类添加响应右击某销售人员时的函数,以实现可右击某销售人员以完成有关销售人员可进行的所有操作,方便用户的操作函数为OnRclickListCplist6为该类添加响应某销售人员删除时的函数,函数为OnXsryDeleteCString以上即为销售人员查询模块开发的一个简介
4.12销售人员资料维护功能模块的开发该模块的运行效果图以下就该模块的开发做一个简单的介绍1使用VC的资源管理器制作一名为ID_DIALOG_XSRY的对话框资源注意设置其WS_CHILD属性2使用AppWizard创建该资源的管理类,类名为CXSRYView,其基类为CFormView3为该类添加响应添加销售人员命令的函数,函数名称为OnAdd4为该类添加响应保存销售人员命令的函数,函数名称为OnSave5为该类添加响应删除销售人员命令的函数,函数名称为OnDelete6为该类添加响应某销售人员删除时的函数,函数为OnXsryDeleteCString以上即为销售人员资料维护模块开发的一个简介
4.13竞争对手查询功能模块的开发该模块的运行效果图以下就该模块的开发做一个简单的介绍1使用VC的资源管理器制作一名为ID_DIALOG_JZDSSEARCH的对话框资源注意设置其WS_CHILD属性2使用AppWizard创建该资源的管理类,类名为CJZDSSerachView,其基类为CFormView3为该类添加响应单击查询按钮的函数,函数名称为OnJzdsSerach4为该类添加响应竞争对手资料维护命令的函数,函数名称为OnJzdsxxzl5为该类添加响应右击某竞争对手时的函数,以实现可右击某竞争对手以完成有关竞争对手可进行的所有操作,方便用户的操作函数为OnRclickListJzdslist6为该类添加响应某竞争对手删除时的函数,函数为OnJzdsDeleteCString以上即为竞争对手查询模块开发的一个简介
4.14竞争对手资料维护功能模块的开发该模块的运行效果图以下就该模块的开发做一个简单的介绍1使用VC的资源管理器制作一名为ID_DIALOG_JZDS的对话框资源注意设置其WS_CHILD属性2使用AppWizard创建该资源的管理类,类名为CJZDSView,其基类为CFormView3为该类添加响应添加竞争对手命令的函数,函数名称为OnAdd4为该类添加响应保存竞争对手命令的函数,函数名称为OnSave5为该类添加响应删除竞争对手命令的函数,函数名称为OnDelete6为该类添加响应某竞争对手删除时的函数,函数为OnJzdsDeleteCString以上即为竞争对手资料维护模块开发的一个简介
4.15竞争对手产品查询功能模块的开发该模块的运行效果图以下就该模块的开发做一个简单的介绍1使用VC的资源管理器制作一名为ID_DIALOG_JZDSCPSEARCH的对话框资源注意设置其WS_CHILD属性2使用AppWizard创建该资源的管理类,类名为CJZDSCPSerachView,其基类为CFormView3为该类添加响应单击查询按钮的函数,函数名称为OnJzdscpSerach4为该类添加响应对手资料维护命令的函数,函数名称为OnJzdsxxzl5为该类添加响应对手产品资料维护命令的函数,函数名称为OnJzdscpxxzl6为该类添加响应本公司产品资料维护命令的函数,函数名称为OnBgscpxxzl7为该类添加响应右击某竞争对手产品时的函数,以实现可右击某竞争对手产品以完成有关竞争对手产品可进行的所有操作,方便用户的操作函数为OnRclickListJzdscplist8为该类添加响应某竞争对手被编辑或删除时的函数,其函数名分别为OnJzdsEditJZDSEDITPTR和OnJzdsDeleteCString9为该类添加响应某本公司产品被编辑或删除时的函数,其函数名分别为OnBgsCpEditCPEDITPTR和OnBgsCpDeleteCString10为该类添加响应某竞争对手产品删除时的函数,函数名为OnJzdsCpDeleteCString以上即为竞争对手产品查询模块开发的一个简介
4.16竞争对手产品资料维护功能模块的开发该模块的运行效果图以下就该模块的开发做一个简单的介绍1使用VC的资源管理器制作一名为ID_DIALOG_JZDSCP的对话框资源注意设置其WS_CHILD属性2使用AppWizard创建该资源的管理类,类名为CJZDSCPView,其基类为CFormView3为该类添加响应添加竞争对手产品命令的函数,函数名称为OnAdd4为该类添加响应保存竞争对手产品命令的函数,函数名称为OnSave5为该类添加响应删除竞争对手产品命令的函数,函数名称为OnDelete6为该类添加响应某竞争对手产品删除时的函数,函数为OnJzdscpDeleteCString7为该类添加响应某竞争对手被编辑或删除时的函数,其函数名分别为OnJzdsEditJZDSEDITPTR和OnJzdsDeleteCString8为该类添加响应某本公司产品被编辑或删除时的函数,其函数名分别为OnBgsCpEditCPEDITPTR和OnBgsCpDeleteCString以上即为竞争对手资料维护模块开发的一个简介
4.17用户服务查询功能模块的开发该模块的运行效果图以下就该模块的开发做一个简单的介绍1使用VC的资源管理器制作一名为ID_DIALOG_YHFWSEARCH的对话框资源注意设置其WS_CHILD属性2使用AppWizard创建该资源的管理类,类名为CYHFWSerachView,其基类为CFormView3为该类添加响应单击查询按钮的函数,函数名称为OnYhfwSerach4为该类添加响应用户服务资料维护命令的函数,函数名称为OnYhfwxxzl5为该类添加响应产品资料维护命令的函数,函数名称为OnCpxxzl6为该类添加响应客户资料维护命令的函数,函数名称为OnKhxxzl7为该类添加响应右击某用户服务纪录时的函数,以实现可右击某用户服务纪录以完成有关用户服务纪录可进行的所有操作,方便用户的操作函数为OnRclickListYhfwlist8为该类添加响应某客户被编辑或删除时的函数,其函数名分别为OnKhEditKHEDITPTR和OnKhDeleteCString9为该类添加响应某本公司产品被编辑或删除时的函数,其函数名分别为OnBgsCpEditCPEDITPTR和OnBgsCpDeleteCString10为该类添加响应某用户服务记录删除时的函数,函数名为OnYhfwDeleteCString以上即为用户服务记录查询模块开发的一个简介
4.18用户服务资料维护功能模块的开发该模块的运行效果图以下就该模块的开发做一个简单的介绍1使用VC的资源管理器制作一名为ID_DIALOG_YHFW的对话框资源注意设置其WS_CHILD属性2使用AppWizard创建该资源的管理类,类名为CYHFWView,其基类为CFormView3为该类添加响应添加用户服务命令的函数,函数名称为OnAdd4为该类添加响应保存竞用户服务命令的函数,函数名称为OnSave5为该类添加响应删除用户服务命令的函数,函数名称为OnDelete6为该类添加响应某用户服务删除时的函数,函数为OnYhfwDeleteCString7为该类添加响应某客户被编辑或删除时的函数,其函数名分别为OnKhEditKHEDITPTR和OnKhDeleteCString8为该类添加响应某本公司产品被编辑或删除时的函数,其函数名分别为OnBgsCpEditCPEDITPTR和OnBgsCpDeleteCString以上即为用户服务资料维护模块开发的一个简介
4.19工作计划查询功能模块的开发该模块的运行效果图以下就该模块的开发做一个简单的介绍1使用VC的资源管理器制作一名为ID_DIALOG_GZJHSEARCH的对话框资源注意设置其WS_CHILD属性2使用AppWizard创建该资源的管理类,类名为CGZJHSerachView,其基类为CFormView3为该类添加响应单击查询按钮的函数,函数名称为OnGzjhSerach4为该类添加响应工作计划资料维护命令的函数,函数名称为OnGzjhxxzl5为该类添加响应右击某工作计划时的函数,以实现可右击某工作计划以完成有关工作计划可进行的所有操作,方便用户的操作函数为OnRclickListGzjhlist6为该类添加响应某工作计划删除时的函数,函数为OnGzjhDeleteCString以上即为工作计划查询模块开发的一个简介
4.20工作计划资料维护功能模块的开发该模块的运行效果图以下就该模块的开发做一个简单的介绍1使用VC的资源管理器制作一名为ID_DIALOG_GZJH的对话框资源注意设置其WS_CHILD属性2使用AppWizard创建该资源的管理类,类名为CGZJHView,其基类为CFormView3为该类添加响应添加工作计划命令的函数,函数名称为OnAdd4为该类添加响应保存工作计划命令的函数,函数名称为OnSave5为该类添加响应删除工作计划命令的函数,函数名称为OnDelete6为该类添加响应某工作计划删除时的函数,函数为OnGzjhDeleteCString以上即为工作计划资料维护模块开发的一个简介第五章关键技术代码的分析
5.1SQL查询语句的生成本系统主要以查询及资料维护为中心.查询必然牵涉到SQL语句的生成只有生成正确的SQL查询语句才能保证查询满足用户所希望得到的纪录.以下以客户查询为例说明本系统如何解决此问题.客户查询主要依据客户分类行业经济性质企业规模地域客户名称邮区邮编等元素进行查询其中客户名称邮区邮编要考虑到要模糊查询的可能并且地域字段对应了客户表中的国家省份县市三个数据项必然牵涉到将地域分解为国家省份县市的过程而地域字段分解过程中又要考虑到有无国家有无省份有无县市例如:地域可选字段”美国”属于由国家无省份无县市”中国江苏”属于有国家有省份无县市”中国重庆”属于有国家无省份由县市”中国江苏无锡”属于有国家有省份有县市,这些必然会使问题更加复杂化而不利于SQL语句的正确生成.为了较好的解决以上的问题并充分利用面向对象的编程性质特开发如下两个类已完成此任务:1CDYOption2CKHOption以下就介绍这两个类的设计过程,以CDYotpion为例子1类CDYOption的开发过程
1.首选使用VC提供的类创建向导生成一个新类,名为CDYOption注意:将该类的类型设置为GenericClass,并且继承与任何MFC类应为该类不需要具备动态创建,运行期间类型识别,永久保存等性质,该类只是简单的负责生成SQL查询语句
2.考虑到地域字符串的复杂性,在该类中添加如下6个成员变量,其访问方式为private次序:变量名变量类型说明m_havegjBOOL是否含国家m_gjstrCString如果含国家,则m_gjstr即为国家字符串m_havesfBOOL是否含省份m_sfstrCString如果含省份,则m_gjstr即为省份字符串m_havexsBOOL是否含县市m_xsstrCString如果含县市,则m_gjstr即为县市字符串
3.由于以上变量的访问方式为private,故需为该类添加取和设置这些变量的公有成员函数,以下是一个例子inlinevoidCDYOption::SetHaveGjBOOLhavegj=TRUE{m_havegj=gj;}
4.最重要的一步实现其成员函数FormatStr该函数在已设置好相关子段值后取得相应的标准的查询语句,如此时m_havegj=TRUEm_gjstr=”中国”m_havesf=FALSEm_havexs=TRUEm_xsstr=”上海”,调用该函数将返回字符串”GJ=’中国’ANDXS=’上海’”详细代码如下CStringCDYOption::FormatStrconst{CStringstrtemp;//str保存标准查询语句,将作为返回值BOOLneedaddand=FALSE;//该变量用来标志str中是否已含有某些数据//应为如果已含有某些数据则新增关键项是将续接ANDifm_havegj{//在含有国家的情况下简单设置str//并将needaddand设置为TRUEstr.FormatGJ=%sm_gj;needaddand=TRUE;}ifm_havesf{//首选格式化字符串temp.FormatSF=%sm_sf;//根据是否以添加数据决定是否在str后添加ANDifneedaddandstr=str+AND+temp;elsestr=temp;needaddand=TRUE;}ifm_havexs{temp.FormatXS=%sm_xs;ifneedaddandstr=str+AND+temp;elsestr=temp;needaddand=TRUE;}returnstr;}2类CKHOption的开发过程该类的开发基本与CDYotpion相同,此处不再提及已下将简单的介绍系统中如何使用这两个类已达到快捷并正确取得客户查询SQL语句由于客户查询时地域是从组合框中选择的,这就牵涉到用常用地域初始化地域组合框的过程为保证程序的可扩型及健壮性,在系统中添加两全局变量m_dykindCStringArraym_dyoptionkindCListCDYOption*CDYOption*这两个变量的作用是m_dykind用于保存字符串形式的地域,m_dylist用户保存向相对应的CDYoption类型的地域,也就是有一个地域字符串’中国江苏无锡‘就有一个CDYoption类型的地域dyoption_havegj=m_havesf=m_havexs=TRUEm_gjstr=’中国‘m_sfstr=’江苏’m_xsstr=’无锡’,以上两个变量在SUbProcess.cpp中定义,程序在运行时将调用InitGlobalVariable中完成这两个变量的初始化,以下是一小段初始化代码m_dykind.Add美国;dyoption.SetHaveTRUE;dyoption.SetStr美国;m_dyoptionkind.Adddyoption;在客户查询窗口初始化时将用这两个变量初始化客户查询窗口中的有关变量详细代码将在CKHSearchView::OnInitUpdate中可见如何添加新的常用的地域常量在InitGlobaleVariable中添加新的地域量,重新编译程序即可如欲添加一新常用地域’中国江苏南京‘只需在InitGlobaleVariable中添加如下代码m_dykind.Add“中国江苏南京’;dyoption.SetHaveTRUETRUETRUE;dyotpion.SetStr“中国””江苏””南京”;m_dyoptionkind.Adddyoption;重新编译程序即可
5.2数据更新的实现确保数据的及时更新是一件非常重要的工作,否则将会对用户造成工作上的失误例如,用户在客户查询窗体中查询到客户A的有关信息并将其显示在客户查询窗体中,而后用户对客户A进行了一些信息编辑工作,当用户退出客户遍及窗体退回到客户查询窗体中时,客户A的信息应当被更换为新的信息,同样可推广至客户A被删除的情况下简单的说是这样实现的:当客户的有关信息被编辑并保存后,将向当前所有窗体发送该客户信息被修改的消息,各窗体响应该消息,完成数据的更新以下将以此例详细介绍本系统如何实现数据的及时更新
1.定义消息WM_KHEDIT在VC环境下选择”View”-”ResourceSymbols”弹出如下对话框单击New...后在新对话框中输入消息的字符串WM_KHEDIT,并接受默认的该消息的值
2.添加结构体KHEDIT该结构体主要用于当向活动窗体发送该客户被编辑时提供该客户的有关旧信息如客户编号等以及客户新的信息如新的客户编号等,以便接受该消息的窗体判断该客户是否存在于本窗体中该结构体的定义在SubProcess.h中,其具体的格式如下typedefstructKHEDIT{CStringkhm;CStringArraykhnewinfo;}KHEDIT*KHEDITPTR;其中各字段的含义如下khmCString代表被编辑的客户码,这是客户的主属性KhnewinfoCStringArray中保存了该客户新的信息
3.在客户编辑窗体中保存客户新的资料成功后发送消息WM_KHEDIT可以在CKHView的成员函数OnSave中发现如下代码KHEDITkhinfo;khinfo.khm=m_kharrayptr.GetAt0;khinfo.newkhinfo.Appendarray;ptr-SendAllViewMsgWM_KHEDITLPARAMkhinfothis;以上代码即完成了发送WM_KHEDIT消息至活动窗体的操作
4.在客户查询窗体中通过重载WindowProc达到拦截此消息的目的CKHSerachView中重载后的WindowProc如下LRESULTCKHSearchView::WindowProcUINTmessageWPARAMwParamLPARAMlParam{//TODO:Addyourspecializedcodehereand/orcallthebaseclassifmessage==WM_KHEDIT{KHEDITPTReditptr=KHEDITPTRlParam;OnKhEditeditptr;returnTRUE;}………}函数OnKhEditeditptr即实现数据的更新通过以上四个步骤便可完成客户资料的及时更新参考文献
1.侯俊杰著.深入浅出MFC.华中科技大学出版社
20012.Eckel著.C++编程思想.机械工业出版社.
19993.DavidJ.Kruglinski著InsideVisualC++
4.
0.MicrosoftPress
19964.肖明等著.信息系统分析与开发.高等教育出版社
20005.王珊著.数据库系统概论.高等教育出版社1999附录类CKHOption的完整代码#includeDYOption.hclassCKHOption{public:CKHOption;virtual~CKHOption;public:inlineCStringGetKHLXconst{returnm_khlx;}inlineCStringGetHYconst{returnm_hy;}inlineCStringGetJJXZconst{returnm_jjxz;}inlineCStringGetQYGMconst{returnm_qygm;}inlineBOOLGetHAVEDYconst{returnm_havedy;}inlineCDYOptionGetDYOptionconst{returnm_dyoption;}inlineCStringGetKHMCconst{returnm_khmc;}inlineCStringGetYQconst{returnm_yq;}inlineCStringGetYBconst{returnm_yb;}public:inlinevoidSetKHLXconstCStringkhlx{m_khlx=khlx;}inlinevoidSetHYconstCStringhy{m_hy=hy;}inlinevoidSetJJXZconstCStringjjxz{m_jjxz=jjxz;}inlinevoidSetQYGMconstCStringqygm{m_qygm=qygm;}inlinevoidSetHAVEDYBOOLhavedy{m_havedy=havedy;}inlinevoidSetDYOptionconstCDYOptiondyoption{m_dyoption=dyoption;}inlinevoidSetKHMCconstCStringkhmc{m_khmc=khmc;}inlinevoidSetYQconstCStringyq{m_yq=yq;}inlinevoidSetYBconstCStringyb{m_yb=yb;}public:CStringGetSQLStrconst;private:CStringm_khlx;//客户类型CStringm_hy;//行业CStringm_jjxz;//经济性质CStringm_qygm;//企业规模BOOLm_havedy;//是否含地域CDYOptionm_dyoption;//地域CStringm_khmc;//客户名称CStringm_yq;//邮区CStringm_yb;//邮编};CKHOption::CKHOption{}CKHOption::~CKHOption{}CStringCKHOption::GetSQLStrconst{CStringsqlstrstr;BOOLhaveaddwhere=FALSE;//是否已加wheresqlstr=select*fromTKHTZ;//客户类型ifm_khlx!=全部{sqlstr+=where;str.FormatKHFL=%sm_khlx;sqlstr+=str;haveaddwhere=TRUE;}//行业ifm_hy!=全部{ifhaveaddwhere==FALSEsqlstr+=where;elsesqlstr+=AND;str.FormatHY=%sm_hy;sqlstr+=str;haveaddwhere=TRUE;}//经济性质ifm_jjxz!=全部{ifhaveaddwhere==FALSEsqlstr+=where;elsesqlstr+=AND;str.FormatJJXZ=%sm_jjxz;sqlstr+=str;haveaddwhere=TRUE;}//企业规模ifm_qygm!=全部{ifhaveaddwhere==FALSEsqlstr+=where;elsesqlstr+=AND;str.FormatQYGM=%sm_qygm;sqlstr+=str;haveaddwhere=TRUE;}//地域ifm_havedy{ifhaveaddwhere==FALSEsqlstr+=where;elsesqlstr+=AND;str=+m_dyoption.FormatStr;ifstr!={sqlstr+=str;haveaddwhere=TRUE;}}//客户名称ifm_khmc.IsEmpty==FALSE{ifhaveaddwhere==FALSEsqlstr+=where;elsesqlstr+=AND;ifNeedMhcxm_khmcstr.FormatXMCLIKE%sm_khmc;elsestr.FormatXMC=%sm_khmc;sqlstr+=str;haveaddwhere=TRUE;}//邮区ifm_yq.IsEmpty==FALSE{ifhaveaddwhere==FALSEsqlstr+=where;elsesqlstr+=AND;ifNeedMhcxm_yqstr.FormatYQLIKE%sm_yq;elsestr.FormatYQ=%sm_yq;sqlstr+=str;haveaddwhere=TRUE;}//邮编ifm_yb.IsEmpty==FALSE{ifhaveaddwhere==FALSEsqlstr+=where;elsesqlstr+=AND;ifNeedMhcxm_ybstr.FormatYBLIKE%sm_yb;elsestr.FormatYB=%sm_yb;sqlstr+=str;haveaddwhere=TRUE;}returnsqlstr;}翻译英文原文WebArchitecture:DescribingandExchangingDataW3CNote7June1999StatusofthisdocumentThisdocumentisananalysisprovidedbytheauthorsandcarriesnoendorsementbytheConsortium.AswebegintheXMLSchemadesign [XMLSchemahttp://www.w
3.org/1999/04/WebData\lXMLSchema]andexaminetheRDFSchemadesign [RDFSchemahttp://www.w
3.org/1999/04/WebData\lRDFSchema]thisdocumentacknowledgestheinputwehavereceivedonhowtheyfittogetherandhowtheyshouldfittogetherandinvitesfurtherexploration.Pleasesendcommentstowww-talk@w
3.orgmailto:www-talk@w
3.orgarchivehttp://lists.w
3.org/Archives/Public/www-talk/.Thissectionrepresentsthestatusofthisdocumentatthetimethisversionwaspublished.Itwillbecomeoutdatedifandwhenanewversionispublished.Thelateststatushttp://www.w
3.org/1999/.status/04/WebData/statusismaintainedattheW3C.AbstractTheWorldWideWebisauniversalinformationspace.Asamediumforhumanexchangeitisbecomingmaturebutwearejustbeginningtobuildaspacewhereautomatedagentscancontribute--justbeginningtobuildtheSemanticWeb.TheRDFSchemadesign [RDFSchemahttp://www.w
3.org/1999/04/WebData\lRDFSchema]andXMLSchemadesign [XMLSchemahttp://www.w
3.org/1999/04/WebData\lXMLSchema]beganindependentlybutweexploreacommonmodelwheretheyfittogetherasinterlockingpiecesofthesemanticwebtechnology.ContentsIntroductionhttp://www.w
3.org/1999/04/WebData\lIntroductionManypathstowardthesemanticwebhttp://www.w
3.org/1999/04/WebData\lTwoThepathscometogetherhttp://www.w
3.org/1999/04/WebData\lpctRequirementsforageneralmodelfordataontheWebhttp://www.w
3.org/1999/04/WebData\lreqEvolutionandpartialunderstandinghttp://www.w
3.org/1999/04/WebData\lepuTotalvs.partialinformationhttp://www.w
3.org/1999/04/WebData\ltvpiGlobaluniversalityandlocalconstrainthttp://www.w
3.org/1999/04/WebData\lglolocDataModels:TreesGraphsandTableshttp://www.w
3.org/1999/04/WebData\lmodelsRelationalDatahttp://www.w
3.org/1999/04/WebData\lrelationalObjectTypeshttp://www.w
3.org/1999/04/WebData\lobjectLogicsystemshttp://www.w
3.org/1999/04/WebData\llogicConclusionhttp://www.w
3.org/1999/04/WebData\lConclusionReferenceshttp://www.w
3.org/1999/04/WebData\lReferencesIntroductionThearchitectureoftheWorldWideWebprovidesuserswithasimplehypertextinterfacetoavarietyofremoteresourcesfromstaticdocumentspurelyforhumanconsumptiontointeractivedataservices.HTMLhttp://www.w
3.org/MarkUp/thedataformatthatfacilitatedthewidespreaddeploymentoftheWebstartedbyaddingURIhttp://www.w
3.org/Addressing/basedlinkingtowordprocessorstylerichtexttoprovidebasicglobalhypertextfunctionality.TheadditionofformstoHTMLprovidedaminimalbutfunctionaluserinterfacetointeractivedataservices.WhilethisHTMLinfrastructurehasfacilitatedarevolutioninglobalinformationtechnologyitsuffersfromtheinevitablelimitationsofaonesizefitsallsolution:richdocumentstructuresarelostasthecontentissqueezedintotheprimitivestructuresofHTML.SimilarlythecostofsqueezingrichdatastructuresintoandoutofHTMLispaidinefficiencyandintegrity.NowthattheWebhasreachedcriticalmassasamediumforhumancommunicationthenextphaseistobuildtheSemanticWeb.TheSemanticWebisaWebthatincludesdocumentsorportionsofdocumentsdescribingexplicitrelationshipsbetweenthingsandcontainingsemanticinformationintendedforautomatedprocessingbyourmachines.ManypathstowardthesemanticwebXMLhttp://www.w
3.org/XML/beganasaprojecttoaddressHTMLslimitationsonstructureddocumentsbyselectingasimple-to-implementyetextensiblesubsetofSGMLforuseontheWeb.Ithasemergedastheinfrastructureforstructureddatainterchangeaswell.MeanwhileinourefforttoaddresstheimpactoftheWebonsocietytheW3CmembershipcametogethertodevelopthePlatformforInternetContentSelectionPICShttp://www.w
3.org/PICS/whichprovidesuserswiththeabilitytoselectcontentbasedonlabelsprovidedbyinformationprovidersorothersources.AcriticalcomponentofPICSistheratingsystemdescriptionasortofschema;everyPICSlabelpointstoadescriptionintheWebofthefieldsinthelabel.PICSwasdesignedasafirststeptowardgeneralizedlabelsthatwouldallowanypartyintheWebtomakeclaimsaboutthequalitiesofresources:endorsementstermsandconditionsforuseandsoon.TheMetadataActivityhttp://www.w
3.org/Metadata/Activityaddressesthenecessaryworktocompletethepicture:structuredlabelsrulesintegrationwithdigitalsignatures.ThePICSlabeldesignwasgeneralizedtoamodelofinformationasdirectedlabeledgraphsDLGs.ThiswasknownastheRDFhttp://www.w
3.org/RDF/modelandaserializationwasdefinedinXMLsyntax.PICSratingsystemswereincorporatedasspecialcasesinthedesignofRDFSchemas.XMLdocumentshaveamechanismforself-descriptionaswell:theDTD.AstheuseofXMLbecamemorediverseandintensethelimitationsoftheagedDTDdesignbecameacuteespeciallyintheareaofdatatypingmodularityandreuse;soonW3CbeganworkintheXMLActivityhttp://www.w
3.org/XML/ActivityonanewgenerationofschemasforXML.ThepathscometogetherTheinitialexpectationwasthatRDFwouldbesimplylayeredontopofXMLwithminimalinteraction.ButthentheRDFdesignstartedtoincludeanamespacefacilityforconnectingXMLelementnamestowebaddresseswhichwascloselyrelatedtoalong-standingdesigndiscussioninXMLandSGMLbeforethat.SimilarlytheRDFrequirementsfordatatypeslikeintegeranddateweresharedwithmanyotherXMLbasedformats.Overtimetheinteractionsgrew.TheDocumentObjectModelDOMhttp://www.w
3.org/DOM/whichstartedasanefforttoharmonizeHTMLscriptingfacilitiesinbrowsersexpandedinscopetoincludeXMLandbecomeafoundationalApplicationProgrammingInterfaceAPIinmanyWebsoftwareplatformsandstructureddatarepositories.SoftwarebuiltontheseplatformsseesRDFnotasXMLstreamsbutasDOMobjects.TheemergenceofthetransformationcomponentofExtensibleStyleLanguageXSLhttp://www.w
3.org/Style/XSL/asausefulcomponentinitsownrightshedsnewlightonmanyofthesyntacticdesignissuesinRDF.ThebenefitofsyntaxthatiseasytomanipulatewithDOMandXSLwerenotevidentintheearlyRDFdesignstage.AttheQueryLanguageWorkshop [QL98http://www.w
3.org/1999/04/WebData\lQL98]anumberofapplicationswerebeingdesignedusingXMLtoencodeDLGdataanditwasclearthatthesyntaxusedbytheRDFcommunitytodothiswasnotasdirectasthatassumedbysomeothers.ThemappingofXMLelementsdirectlytographedgesratherthannodeswasaclosermorenaturalmappingtosome.ThedirectmappingmeantthatstatementsaboutRDFsarcsandXMLselementshadimplicationsoneachotherbythisstrongeranalogy.ThissuggestedaneedtodefinepreciselywhatthatmappingwassodeterminingthearchitecturalconnectionbetweenfutureworkontheSemanticWebandotherapplicationsofXMLschemas.FirstwereviewsomeoftherequirementsfortheSemanticWeb.Secondlywereviewthedatamodelsofmanysystemswhosedataisunderstrongpressuretobeaccessibledirectlyinsemanticform.Foreachwetrytodelineatethemappingwhereitisevidentbutoutlinetheareaswherespecificationworkisrequired.RequirementsforageneralmodelfordataontheWebEvolutionandpartialunderstandingTraditionallybothdocumentsanddatabaseshavebeenstronglytyped;thatistheproducerandconsumerhaveprioragreementonthestructureoftheinformationunits.Butthisbyitselfisnotsufficientforthelong-termhealthoftheSemanticWeb.TheSemanticWebmustpermitdistributedcommunitiestoworkindependentlytoincreasetheWebofunderstandingaddingnewinformationwithoutinsistingthattheoldbemodified.ThisapproachallowsthecommunitiestoresolveambiguitiesandclarifyinconsistenciesovertimewhiletakingmaximumadvantageofthewealthofbackgroundsandabilitiesreachablethroughtheWeb.ThereforetheSemanticWebmustbebasedonafacilitythatcanexpandashumanunderstandingexpands.Thisfacilitymustbeabletocaptureinformationthatlinksindependentrepresentationsofoverlappingareasofknowledge.TheXML
1.0specification [XML98http://www.w
3.org/1999/04/WebData\lXML98]takesalargesteptowardenablingtheinterchangeofinformationevenwithapartythatisabletorecognizeonlyaportionofadocument.XMLspecifiesthesyntacticconstraintcalledwell-formedness.Well-formednessisafundamentaltoolforallowingdocumentstoincludeextendedinformationwhileremainingprocessablebyolderdown-levelapplications.Oldengineeringhabits[1http://www.w
3.org/1999/04/WebData\lFN1]suggestthatforeverydocumenttheremustexistsomewhereinasingleplaceacompleteenumerationofeverymarkupfeaturepresentinthatdocument.WhilethisnotionofXMLvalidityisappropriateformanyapplicationcontextsitistoostrongaconstrainttoplaceontheSemanticWeb.MixingofvocabulariesisacriticalfeaturefortheWeb [BC98http://www.w
3.org/1999/04/WebData\lBC98].Oftheevolutionaryrequirementsonprotocols [HTTPNG98http://www.w
3.org/1999/04/WebData\lHTTPNG98]thefirsttwoofthreealsoapplytodataformats:TherequirementtoextensibilityisthatextendedapplicationsdonotrequireagreementacrossthewholeInternet;ratheritsuffices:thatconformingpeerssupportingaparticularprotocolextensionorfeaturecanemployitwithnoprioragreement;thatitispossibleforonepartyhavingacapabilityforanewprotocoltorequirethattheotherpartyeitherunderstandandabidebythenewprotocoloraborttheoperation;andthatnegotiationofcapabilitiesispossible.IncrementaldecentralizeddevelopmentofSemanticWebapplicationsrequiresdocumentstobeabletocontainanadhocmixtureoffeaturesfrommultipleapplicationdomains.Thecombinatoricissuesmakeitimpracticaltopredefinedocumenttypesthatencompassallthepossiblevocabularysets.InsteadtheXMLNamespacefacility [XMLNS99http://www.w
3.org/1999/04/WebData\lXMLNS99]allowsthisvocabularymix-in.TheResourceDescriptionFrameworkModelandSyntaxRecommendation [RDF99http://www.w
3.org/1999/04/WebData\lRDF99]leveragestheXMLNamespacefacilitythroughout.WhendesignworkonRDFbegantheonlyXMLschemafacilityavailablewastheDTDwhichlackssupportfordecentralizedevolution.SincethenXMLSchemawork [XMLSchemahttp://www.w
3.org/1999/04/WebData\lXMLSchema]proposeswaystocomposestronglytypeddocumentsusingXMLNamespaces.ConclusionsandFutureWorkWehaveshowntheimportanceofacommonarchitecturefortree-structureddocumentsanddirectedlabeledgraphs.WehavealsoshednewlightonsomeofthedesigndecisionsintheXMLsyntaxusedbyRDF.WehavediscussedthewaycontemporarydatamodelsrelationalobjectknowledgerepresentationrelatetoaunifiedSemanticWebArchitecture.Welookforwardtoelaboratingtheseconnectionsinfuturework.中文翻译Web体系结构:数据描述与交换W3C纪录71999年六月本文概况本文是来自于作者的一片分析性的文章,并没有取得协会的认可当我们开始研究XMLSchema开发[XMLSchemahttp://www.w
3.org/1999/04/WebData\lXMLSchema]和RDFSchema开发[RDFSchemahttp://www.w
3.org/1999/04/WebData\lRDFSchema]的时候,这篇文章解答了关于两者之间如何结合和为什么要结合等问题,并进行了深入地探讨请将评论发送到www-talk@w
3.orgmailto:www-talk@w
3.org档案http://lists.w
3.org/Archives/Public/www-talk/.这一部分描述了文章出版时的状况,当有新的译文出版,就会变得过时关于最新形势http://www.w
3.org/1999/.status/04/WebData/status请关注W3C摘要万维网是一个遍及全球的信息空间作为人类的一种交流媒介,它已经变得很成熟,但是在建立一个让自动化能真正发挥作用的领域上,我们只是刚刚起步——刚开始建造语义WebRDFSchema开发[RDFSchemahttp://www.w
3.org/1999/04/WebData\lRDFSchema]和XMLSchema开发[XMLSchemahttp://www.w
3.org/1999/04/WebData\lXMLSchema]是完全独立的,但是我们探究了一种公共模型,使两者结合起来作为语义WEB技术的连锁的块目录介绍http://www.w
3.org/1999/04/WebData\lIntroduction实现语义WEB的多种方式http://www.w
3.org/1999/04/WebData\lTwo各种方式的综合http://www.w
3.org/1999/04/WebData\lpct构成WEB上数据一般模型的必要条件http://www.w
3.org/1999/04/WebData\lreq进展以及对局部的认识http://www.w
3.org/1999/04/WebData\lepu完整信息与不完整信息http://www.w
3.org/1999/04/WebData\ltvpi普遍性与局部性http://www.w
3.org/1999/04/WebData\lgloloc数据模块:树图形和http://www.w
3.org/1999/04/WebData\lmodels表关系数据库对象模型逻辑系统小结参考文献介绍万维网的体系结构给用户提供了通向各种远程资源的一种简单的超文本接口,从完全为了人们消费用的静态页面到交互式的数据服务HTMLhttp://www.w
3.org/MarkUp/,一种加快了WEB普及的数据格式,使用了在可被字处理机处理的非正式文本中增加基于URIhttp://www.w
3.org/Addressing/的链接的方法来提供基本的全球性的超链接功能窗体的加入为HTML提供了最小的但是实用的交互式数据服务的用户接口当HTML的基础结构极大地推动全球性的信息技术革命的同时,它自身也受到使用“同一”解决方法所带来的不可避免的局限性的制约当把内容强行添加到原始结构的HTML中时,非正式文档结构将会丢失类似的,将非正式的数据结构强行添加到HTML文档是以牺牲效率和完整性为代价的现在WEB作为人们沟通的媒体,已经发展到了极其重要的阶段,下阶段就是要建立“语义WEB”语义WEB是包括文档或一部分文档并拥有事物间外在关系描述的一种WEB,它还拥有可以被计算机自动处理的语义信息实现语义WEB的多种方式XMLhttp://www.w
3.org/XML/作为一种方案是针对HTML在处理结构化文档时的局限性而发展出来的,它选用了一些执行简单并且可扩展的通用标记语言标准SGML的子集,专用于WEB它随着结构化数据交换的基础结构显现出来同时,当我们致力于WEB对社会的影响时,W3C的成员们已经携手开发因特网内容选择平台PICShttp://www.w
3.org/PICS/了,它可以让用户基于信息提供者或其他资源提供的标签来对内容进行选择PICS的一个重要组成部分就是系统分级描述,一种摘要;WEB中的每个PICS标签都指向对标签中内容的描述PICS是针对综合性标签所使用的首项标准,使WEB上的任何人都可对资源的属性进行描述背书,项,使用环境等元数据的活性http://www.w
3.org/Metadata/Activity指明了所要完成的所有工作构造标签,规则,与数字签名结合PICS标签开发被综合为一种定向标注图表DLGs的信息模型这既是众所周知的RDFhttp://www.w
3.org/RDF/模型,一系列规则都被定义在XML语法规则中PICS的优先级系统被作为特殊事件整合在RDFSchema的开发过程中XML文档同样拥有自我描述机制DTD随着XML的使用更加普遍,更加多样化,DTD的局限性也日趋明显,特别是在数据输入,模块性和重复利用方面;不久W3C便开始研究XMLActivityhttp://www.w
3.org/XML/Activity作为下一代的XML计划各种方式的综合最初的设想是RDF可以放置在XML的上层,两者间互不影响,只有很少的交互作用但是在RDF的开发中为了将XML元素名称与WEB地址相连接,引入了“名字空间”概念,这涉及到了在XML中存在已久的开发上的争论(还包括之前的SGML)相同的,RDF对数据类型的要求,象整形和日期型,与其他基于XML的格式是相同的随着时间的过去,两者的交互作用逐渐增强起初为了协调浏览器中HTML脚本而产生的文档对象模型DOMhttp://www.w
3.org/DOM/,也加入了XML并成为许多WEB软件平台和结构化数据库的一种基本的应用程序接口API在这种平台上开发的软件,将RDF作为DOM对象处理而不是XML流作为一种实用的组成部分同时也依仗本身的名气,可扩展类型语言XSLhttp://www.w
3.org/Style/XSL/的转换成分的出现使许多关于RDF开发的期刊变得更加热销这种语法的突出优点可以与DOM和XSL结合使用,在以前的RDF开发中没出现过在疑问语言工作室[QL98http://www.w
3.org/1999/04/WebData\lQL98]许多应用软件中的DLG数据都是用XML编码的,很明显使用RDF语法来编码的话就不是那么直接XML的元素直接映射到图表边缘(而不是节点),是一种更加接近,更加自然的映射直接映射更加说明了RDF的弧与XML的元素之间存在牵连这需要定义映射的含义,来决定在语义WEB上要做的工作与XMLschema中应用程序间结构上的联系首先,我们回顾一下语义WEB的必要条件然后,我们回顾一下许多系统的数据模型,这些数据模型都可以被强制直接转化为语义形式在明显的地方我们都试着描述什么是映射,在那些需要特殊说明的地方我们只描述一下概况构成WEB上数据的一般模型的必要条件进展以及对局部的认识传统上,文档和数据库都被强制定义了类型;也就是说,生产者与消费者先前就对信息单元的架构达成共识这对语义WEB的长期兴旺并不足够语义WEB要求分布式的团体独立的工作来增加WEB的兼容性,再不改变旧数据的情况下添加新信息这种方法可以解决团体间的不定性并且可在最大限度利用WEB资源的同时解决存在的矛盾因此语义WEB必须基于一种可以描述为人理解的工具这种工具必须能获取连接到相互独立的、代表着知识的重叠部分的信息XML
1.0规则[XML98http://www.w
3.org/1999/04/WebData\lXML98]在实现信息的交换方面迈进了一大步,甚至可以在只识别部分文档的情况下XML详细说明了依据造句法的一种约束,叫做完全结构完全结构是使文档在被“下一级”应用程序修改前包含扩展信息的一种基本的工具旧的开发习惯[1http://www.w
3.org/1999/04/WebData\lFN1]要求在每个文当中都单独列出载文当中出现过的所有的标记特征这种XML有效性的概念适合于许多应用程序,但它由于约束性太强并不适合用于语义WEB词汇的混合是WEB的一项重要特征[BC98http://www.w
3.org/1999/04/WebData\lBC98]作为协议发展的要求[HTTPNG98http://www.w
3.org/1999/04/WebData\lHTTPNG98],以下三点中的前两点也适用数据格式可扩展性的要求是扩展应用程序不需要整个INTERNET的协议;只需要满足使都支持一种独特的协议扩展或特征的双方都可以在不需要预先协定的情况下使用它;拥有新协议的一方可以要求另一方或者理解并遵守新协议,或者取消操作;可以进行有关实际性能的会话结论与远景我们已经解释了普遍体系结构对树状文档和标定图的重要性我们也说明了被RDF所使用的XML语法中的开发方案我们已经讨论了涉及统一语义WEB的当代数据模型(关系、目标、认识表现)我们将在以后做更加详细的阐述主控模块帮助信息数据库维护系统管理客户维护数据库维护联系人维护项目维护合同维护产品维护销售人员维护PAGE5。